西门子工业支持中心,以专业共创价值!
西门子工业支持中心,以专业共创价值!
悬赏:2西币 | 解决时间:2022-09-15 15:08
产品版区:
SIMATIC S7-1500系列
plcsiemense
plcsiemense - 学长  第2级
下面这段寻址程序怎样理解,请每一行详细解释备注一下,谢谢
#DFG_DB为输入接口 ‘291’,下面是程序。
L P#10.0
LAR1
L #DFG_DB
T #DB
OPN DB [ #DB]
L #Msg_ObjNo
L 20
*I
T #Temp1
T DBW [ AR1 , P#0.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#2.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#4.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#6.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#8.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#10.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#12.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#14.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#16.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#18.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#20.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#22.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#24.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#26.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#28.0 ]
L #Temp1
L 1
+I
T #Temp1
T DBW [ AR1 , P#30.0 ]
第二段
L #Msg_NowStatus
L 1
-I
L P#2.0
*I
LAR1
L #Temp0
T DBW [ AR1 , P#42.0 ]
L 0
LAR1
L #C_Amount
T DBW [ AR1 , P#8.0 ]
小程序查看
最佳答案
第二段
L #Msg_NowStatus
L 1
-I
L P#2.0
*I
LAR1 // 将#Msg_NowStatus对应偏移指针装入AR1
// 即#Msg_NowStatus=1对应P#0.0,2对应P#2.0,3对应P#4.0
L #Temp0 // 根据Msg_NowStatus值将#Temp0存DB291.DBW42开始某字中
T DBW [ AR1 , P#42.0 ]
L 0
LAR1 // AR1地址寄存器指向P#0.0
L #C_Amount
T DBW [ AR1 , P#8.0 ] // 将#C_Amount存入DB291.DBW8
回答者:
手机用户20220315147193
回答时间:2022-09-15 10:47
提问者对于答案的评价:
谢谢
L P#10.0
LAR1 //将p#10.0下载到地址寄存器1里
L #DFG_DB
T #DB //#DB =#DFG_DB DB块号,假如为2
OPN DB [ #DB] // 打开#DB对应的DB块,假如为2
L #Msg_ObjNo
L 20
*I
T #Temp1 //#Temp1=#Msg_ObjNo*20
T DBW [ AR1 , P#0.0 ] //假如 #DB 为2,DB2.DBW10=#Temp1
L #Temp1
L 1
+I
T #Temp1 //#Temp1=#Temp1+1
T DBW [ AR1 , P#2.0 ] //假如 #DB 为2,DB2.DBW12=#Temp1 这里要注意P#2.0 便宜量
之后的程序就是DB的数据,没隔两个字节,#Temp1+1
L #Msg_NowStatus
L 1
-I //ACUU1=#Msg_NowStatus-1
L P#2.0
*I //ACUU1=(#Msg_NowStatus-1)*16
LAR1 //将累加器1即ACCU1的值下装到地址寄存器1里
L #Temp0
T DBW [ AR1 , P#42.0 ] //间接选址,地址寄存器1对应的值DBW [ AR1 , P#42.0 ] =#Temp0
L 0
LAR1 //地址寄存器1的值为0
L #C_Amount
T DBW [ AR1 , P#8.0 ] //地址寄存器1对应的DBW偏移8个字节后DBW[ AR1 , P#8.0 ]=#C_Amount
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!