OPN "ANALOGEY RESULT" 对应的是DB4
OPN DI2
L P#DBX0.0
LAR1
L P#DIX0.0
LAR2
L 34
LF1:T MD 0
L DBD[AR1,P#0.0]
L DID[AR2,P#0.0]
>R
S DIX[AR2,P#4.0]
= DIX[AR2,P#4.1]
+AR1 P#6.0
+AR2 P#6.0
L MD 0
LOOP LF1
因为对STL不是太懂,请各位帮忙解释一下,谢谢了。
最佳答案
OPN "ANALOGEY RESULT" 对应的是DB4 //打开DB4
OPN DI2 //打开DB2
L P#DBX0.0
LAR1 //将DBX0.0的地址下装到地址寄存器1里
L P#DIX0.0
LAR2 //将DBX0.0的地址下装到地址寄存器2里
L 34
LF1:T MD 0 //loop循环的次数 34次
L DBD[AR1,P#0.0]
L DID[AR2,P#0.0]
>R //比较DB4和DB2里双字的数据
S DIX[AR2,P#4.0] //置位DB2里的位
= DIX[AR2,P#4.1] //赋值DB2里的位
+AR1 P#6.0 //地址寄存器1自加6个字节
+AR2 P#6.0 //地址寄存器2自加6个字节
L MD 0 //下载MD0
LOOP LF1
这段程序不难理解,主要是要明白DI开头的数据对应OPN DI**的数据块,还有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.0 DB2.DBX4.1就为1,循环完成接下来的33个数据比较,如DB4.DBD6大于DB2.DBD6就置位DB2.DBX10.0 DB2.DBX10.1就为1,这样连续下去,
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc175938.html