请各位高手帮下忙,我是新手对下面这段程序搞不太明白,请解释下。

OPN   "数据库"
      L     #TrayNO
      BTD                               //托盘号由BCD码转换为双整数
      +     -1                          //减去基值0001
      L     30                          //数据库每个数据条目占据30字节空间
      *D    
      SLD   3
      L     P#0.0
      +D    
      T     #POINT
      L     30
M000: T     #COUNT
      L     0
      T     DBB [#POINT]
      L     #POINT
      L     P#1.0
      +D    
      T     #POINT
      L     #COUNT
      LOOP  M000
我想问 为什么要左移3位移位后数值会不会发生改变?还有将BCD码或者INT数据变成双整数,数值会不会发生改变?

最佳答案

1、 为什么要左移3位移位后数值会不会发生改变?
左移3位移位后数值肯定会发生改变!
这个问题要问的是为什么要左移3位移位?
为了形成下述地址形式才3位移位。
双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。
例如:
 通过L L#+10 ,我们知道存放在MD104中的值应该是:  
  MD104:0000 0000 0000 0000 0000 0000 0000 1010 
  当作为双字指针时,就应该按照3-18bit指定byte,0-2bit指定bit来确定最终指令要操作的地址,因此:  
  0000 0000 0000 0000 0000 0000 0000 1010 = 1.2  
在你的程序中,如果#POINT如原为0000 0000 0000 0000 0000 0000 0000 0001,左移3位移位后0000 0000 0000 0000 0000 0000 0000 1000 = 1.0,则;
T     DBB [#POINT] ,即等价为T     DBB1。
2、BCD或INT转成双整形,数值是不会改变的:
如按INT转成双整形读取,肯定有改变。最简单的道理就是INT转成双整形将原数据的最高为作为符号(±)位了!
3、为什么要左移3位移位,看看下述通过指针寻址就明白了:
见《关于S7-300和S7-400指针寻址的说明与例程(更新版)》下载:
http://www.ad.siemens.com.cn/download/SearchResult.aspx?searchText=F0215
详见《step7编程之地址概念详解》连接:
http://www.plc365.com/jishu/57.html

提问者对于答案的评价:
终于明白了,谢谢您的答复!

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc251954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月5日
下一篇 2018年12月5日

相关推荐

  • STEP7 lad程序打印

    客户要打印程序,这个只能一个块一个块打开然后打印吗?能不能全部一起打印?DOCPRO那个软件是干嘛的? 最佳答案 安装个虚拟打印机( pdfFactory 软件…

    自动化系统综合 2017年10月31日
  • SITOP电源能并在一起吗

    我远距离控制电磁阀,24V的阀,能不能把两个输出24V的SITOP电源并在一起,两个电源分别是20A和40A的。传输距离100米左右,我怕容量不够,还有电压衰减了很多,到阀跟前大概…

    自动化系统综合 2018年12月5日
  • RS485与电脑通信

    我现场有很多台智能仪表与设备支持RS485,现在要求把他们所测量的参数全部显示到电脑里,该怎么做啊?电脑上位机是不是要用VB/VC开发?电脑跟仪表的通讯怎么做?1.如果这些仪表支持…

    自动化系统综合 2020年10月31日
  • 关于一些指令的应用

    请问关于“Set ” “ CLR”这类指令怎么理解啊,SET置位的对象是谁啊?有段程序这么写的SETR  DB6.DBX4.0&n…

    自动化系统综合 2020年10月31日
  • PWM控制电机转速

    用PLC输出PWM直接控制单相交流/直流电机转速的方案是否可行?    如果可行,请问电机的速度值如何计算?(就是PWM的占空比与电机的实际…

    自动化系统综合 2020年11月1日
  • 西门子winac系列plc循环周期是多少

    winac系列的软plcrtx,插槽式plc,嵌入式控制这几种的程序循环周期是可以设定的还是不固定的呢,一般在多少毫秒啊。希望要精确的回答,硬件配置都相当高的情况下。 最佳答案 W…

    自动化系统综合 2020年11月1日
  • 谁给详细解析下,每一句的意思

     L    MB    36 L    …

    自动化系统综合 2020年11月1日
  • CPU的连接资源

    今天看到一句话“将使用S7-300CPU的一个连接资源”,我想问的是一个连接资源是什么意思? 最佳答案 300CPU的PG+OP+S7总数是有限制的。最大连接数量在CPU属性Com…

    自动化系统综合 2019年6月11日
  • 我的USB串口电脑如何连接S7-200

    我的USB串口电脑如何连接S7-200  CPU224我的笔记本电脑在安装软件时看不到 PC-PPI 的相关设置,在设置PG/PC接口里也没…

    自动化系统综合 2020年11月1日
  • td17

    文本显示器 最佳答案 TD文本显示器什么问题?请把问题补充完整提交 提问者对于答案的评价:需要td17 怎么和S7-300 PLC组态,用什么软件编制显示文本(…

    自动化系统综合 2017年11月25日