S7-300 STL使用问题_1

如图1是现场PLC程序,请各位帮忙看看我理解的对不对
OPN   "xxx_RBT"           //打开DB "xxx_RBT" 
L     #RobNo                   //装载 #RobNo
L     1                               //装载 1
-I                                      //#RobNo - 1
L     P#100.0                    //装载 100
*D                                     //(#RobNo - 1)* 100
LAR1                                //
L     DBW [AR1,P#10.0]   //装载 DBW [(#RobNo - 1)* 100,P#10.0]

最佳答案

基本正确。也可能是表述的不够准确
OPN   "xxx_RBT"            //打开DB "xxx_RBT" 
L     #RobNo                   //装载 #RobNo
L     1                              //装载 1
-I                                     //#RobNo - 1
L     P#100.0                   //装载指针 P#100.0               其实是800,并就是你上面的 100
*D                                   //(#RobNo - 1)* P#100.0   其实是乘以800,
                                       即为每一个 RobNo 占用 100 个字节的存储空间,每个字节8个位, 
                                       那它含有 800 个位,这就是在计算每一个RobNo的100个字节的数据在数据块xxx_RBT存储的偏移地址
LAR1                              //将上面计算出的RobNo存储在DB块中的起始地址存到地址寄存器 AR1
L     DBW [AR1,P#10.0]   //装载RobNo数据中的第6个字
以 xxx_RBT DB1,即数据块是 DB1,RobNo 为2 为例:
最后寻址的是 DB2.DBW110 这个字
参考资料
http://www.ad.siemens.com.cn/productportal/Prods/published/Prog/Prog_2.4/Prog_2.4.html

提问者对于答案的评价:

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

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午9:54
下一篇 2020年10月30日 下午9:54

相关推荐