OPN"ANALOGEYRESULT"对应的是DB4
OPNDI2
LP#DBX0.0
LAR1
LP#DIX0.0
LAR2
L34
LF1:TMD0
LDBD[AR1,P#0.0]
LDID[AR2,P#0.0]
>R
SDIX[AR2,P#4.0]
=DIX[AR2,P#4.1]
+AR1P#6.0
+AR2P#6.0
LMD0
LOOPLF1
因为对STL不是太懂,请各位帮忙解释一下,谢谢了。
最佳答案
OPN"ANALOGEYRESULT"对应的是DB4//打开DB4
OPNDI2//打开DB2
LP#DBX0.0
LAR1//将DBX0.0的地址下装到地址寄存器1里
LP#DIX0.0
LAR2//将DBX0.0的地址下装到地址寄存器2里
L34
LF1:TMD0//loop循环的次数34次
LDBD[AR1,P#0.0]
LDID[AR2,P#0.0]
>R//比较DB4和DB2里双字的数据
SDIX[AR2,P#4.0]//置位DB2里的位
=DIX[AR2,P#4.1]//赋值DB2里的位
+AR1P#6.0//地址寄存器1自加6个字节
+AR2P#6.0//地址寄存器2自加6个字节
LMD0//下载MD0
LOOPLF1
这段程序不难理解,主要是要明白DI开头的数据对应OPNDI**的数据块,还有loop循环指令,+AR1和+AR2的作用,要进行连续数据的比较,数据的地址要进行累加,可参考文档:
htTPs://suppoRT.industry.siemens.com/cs/document/79632832/S7-300和S7-400寻址?dti=0&lc=zh-CN
提问者对于答案的评价:
那写这段语句表的作用是什么呢?
最佳答案作者回复:
比较DB2和DB4里的数据然后置位和赋值DB2里的数据,比如DB4.DBD0大于DB2.DBD0就置位DB2.DBX4.0DB2.DBX4.1就为1,循环完成接下来的33个数据比较,如DB4.DBD6大于DB2.DBD6就置位DB2.DBX10.0DB2.DBX10.1就为1,这样连续下去,