SET
SAVE
= L0.1
L #IN1
NEGR
L #IN2
TAK
<=
JC M001
不知道SET ,SAVE, L0.1, TAK为什么这么用,经常看到这样用,但不理解什么意思!只看明白IN1<=IN2则跳转!开始的前面句子不知道有什么用!望大侠们能具体讲解下!不胜感激!
问题补充:
SET
SAVE
= L0.1
这句的意思是不是局部堆栈L0.1强制为1保存到BR位!我感觉这句好像没什么用啊,直接用下面比较那句好了!!求解!!
最佳答案
1、SET命令:使用 RLO 置位(SET)指令,可以将 RLO 的信号状态置为“1”。
2、SAVE命令:使用 SAVE 指令,可以将 RLO 存入 BR 位。
3、TAK :累加器 1 与累加器 2 进行互换
4、有关 RLO 的信号状态:
逻辑运算结果:状态字的第1位为RLO 位(RLO= “逻辑运算结果”),在二进制逻辑运算中用作暂时存储位。比如,一串逻辑指令中的某个指令检查触点的信号状态,并根据布尔逻辑运算规则将检查的结果(状态位)与RLO位进行逻辑门运算,然后逻辑运算结果又存在RLO位中。
5、有关程序:为了将"DB_F_SHOW"变量清零,事先将RLO 的信号状态置为“1”。
SET // RLO 的信号状态置为“1”。
R "DB_F_SHOW" //如果 RLO = 1,则将"DB_F_SHOW"变量清零。
7、NEGR 将浮点数(32 位,IEEE FP)取反;结果保存到累加器 1 中。
lz的问题补充:
是STL指令的监控通过CPU内部寄存器中的状态字实现,BR位于该状态字的第八位,而RLO位于第一位。
BR的作用及含义如下:
BR是二进制结果位,解释字逻辑的结果。另一方面,在编写函数或函数块时,如果没有将RLO位存储到BR中,使用LAD调用时,不能激活函数输出“ENO ”(不导通状态),例如程序如下图:
| |——————— |
| | FC1 |
|————|EN ENO |————————
| | |
| |————————|
如果没将RLO位存入到BR中,当调用用户编写的函数FC1时,函数执行,但ENO没有输出,能流没导通。在函数的结尾,简单使用SAVE指令可以显示ENO的状态。
状态字中的BR信号可以在程序中使用指令进行操作,如调用SET、CLR指令直接对RLO位进行操作。状态字是调试STL程序不可缺少的工具。
这样,你就能明白,你所列出的程序为什么要这样写了。
程序开头
SET // 强行将RLO置位为"1”
SAVE // 将RLO位存储到BR
= L 0.1 // L0.1为局部临时变量,在这里没有特别意义,通过该指令使当前RLO位不影响下一语句。
程序本体。。。
程序结尾
CLR // 强行将RLO复位为"0"
A L 0.1 // 与L0.1进行与操作,RLO结果仍为"0"
SAVE // 将BR位复位清0
也就是说有了这程序开头和结尾,该程序中LAD调用任何用户函数FC或FB时,保证能流导通。
提问者对于答案的评价:
谢谢`
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc244676.html