在下面这段程序中,是一个面积的算法,只是在程序中我不懂前面两个A(的含义 ,以及每段后面的set save clr三个词在语句中的作用,希望大神可以给这段程序做个注释,有劳各位大神了。
_006: NOP 0
A(
A(
A L 0.0
JNB _007
L #Data_A2
ITD
T #Data_A3
SET
SAVE
CLR
_007: A BR
)
JNB _00a
L #Data_A3
DTR
T #Data_A4
SET
SAVE
CLR
_00a: A BR
)
JNB _00b
L #Data_A1
L #Data_A4
*R
T #Data_A5
_00b: NOP 0
A(
A L 0.0
JNB _00f
L #Data_A5
TRUNC
T #Data_A6
AN OV
SAVE
CLR
_00f: A BR
)
JNB _012
L #Data_A6
OPN DB ["MW 210"]
T DBW 48
_012: NOP 0
最佳答案
1、楼主的程序是从梯形图转换为STL的,楼主将程序转换为梯形图,就看明白了。
2、不懂前面两个A(的含义?
这是嵌套的“逻辑与”操作,遇到这种结构,就找好配对的”(“和”)“。例如下面的程序:
A( //-------1
A( //-------2
A( //-------3
程序A
) //------3
A( //------4
程序B
) //-------4
) //-------2
) //-------1
=逻辑结果
3、set save clr三个词在语句中的作用?
由梯形图转换而来的,系统自动给加上的。
首先弄清BR位:状态字的第8位称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字逻辑是否正确。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。
、因为上面的那段代码是由梯形图转换而来的。出现了“SET、SAVE及CLR”。就此而论,SET与SAVE两指令。SET即将状态字RLO置位;SAVE将RLO保存到状态字的BR位。此时表示功能被正确执行,即BR位为1.
、CLR / 将状态字RLO复位,以免影响下面的指令。
A BR / 此时BR位为1,RLO=0
)
JNB _00a/ 若BR=1且RLO=0,则跳转到_00a。
、在一个NetWork中串联执行多个指令或并联执行多个指令时,该如何处理?
、 一般不要顾及用SAVE指令保存RLO。在下面的情况可用:
在一个逻辑块中需检另一查逻辑块的BR位。
例如:在用户编写的FB/FC程序中,应该对BR位进行管理,功能块正确执行后,使BR位为1,否则使其为0。使用SAVE指令将RLO存入BR中,从而达到管理BR位目的。
提问者对于答案的评价:
嗯 大概明白了set save clr的作用,如果前面程序正确执行 则set置位rlo save将rlo结果保存至br位 clr又清零 以至于到下一个程序执行时a br可以检测到上个程序执行情况。但是a(这些需要再琢磨琢磨,可惜不知道大神扣扣 我扣扣893356795 大神赏脸的话可以加一下
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc225205.html