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