刚接触STL 有些地方还是看不懂,希望大家帮我分析分析。
SET
R #RET_VAL
L P##IN0
LAR1
L W [AR1,P#2.0]
T #TEMP2
L W [AR1,P#4.0]
T #TEMP3
OPN DB [#TEMP3]
L D [AR1,P#6.0]
LAR1
L #TEMP2
M001: T #TEMP1
L B [AR1,P#0.0]
L 0
<>I
S #RET_VAL
+AR1 P#1.0
L #TEMP1
LOOP M001
SET
SAVE
图片说明:
最佳答案
SET
R #RET_VAL //程序的头部先复位#RET_VAL
L P##IN0
LAR1 //读取指针,猜测应该INO是一个ANY指针,可是调用的时候又是数据的感觉?还是看看FC485里有关IN0的定义吧。
L W [AR1,P#2.0]
T #TEMP2 //读取到的数据是多少个字节
L W [AR1,P#4.0]
T #TEMP3 //读取到的是DB号
OPN DB [#TEMP3]
L D [AR1,P#6.0] //这个是对应的指针中的32位指针地址
LAR1
L #TEMP2 //字节的变量
M001: T #TEMP1 //循环指令用的
L B [AR1,P#0.0]
L 0
<>I //比较指令
S #RET_VAL
+AR1 P#1.0 //地址寄存器1自加一个字节
L #TEMP1
LOOP M001 //循环到M001,直到执行完ANY里的字节数为止。
SET
SAVE
这段程序的大概意思就是判断制定的这段DB数据里没有为0的数,不为就置位#RET_VAL
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc131577.html