帮忙代码分析!初学求助

L     #count
      SLD   3
      T     #Byte_adr
      OPN   "RCV_DB"
      L     DBW [#Byte_adr]
      L     #CR
      ==I

上述代码中count为int型,Byte_adr为DWORD型,CR为WORD型。那位能帮我分析下啊,刚学习编程,数据类型有点错乱啊!先谢了!

最佳答案

1、首先弄清存储器间接寻址中的双字指针的格式:
其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。
AR:0000 0000 0000 0BBB BBBB BBBB BBBB B*
这样规定,就意味着AR的取值只能是:0.0 ——65535.7
例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。
2、下述程序中取#count内容后,根据上述格式,双字左移3位后形成了,其0-2bit为0,指定bit位为0,而形成了3-18bit指定byte字节。
L     #count
SLD   3//取#count内容形成了指定byte字节的指针
T     #Byte_adr//存入#Byte_adr中
3、继续程序解释:
OPN   "RCV_DB"//打开以"RCV_DB"表示的数据块号的DB
L     DBW [#Byte_adr]//取以#Byte_adr表示地址的字节内容
L     #CR//上述字节中的内容是否为#CR(回车)
==I//上述两者是否相等
4、建议系统看看下述文档,再遇到此类问题就全明白了:
见《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
详见《step7编程之地址概念详解》连接:
http://www.plc365.com/jishu/57.html

提问者对于答案的评价:
还不是很理解,正在学习中!多谢了!

专家置评

已阅,最佳答案正确。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午11:28
下一篇 2018年12月1日

相关推荐