s7300语句表程序未能看懂,望大侠踢脚!!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午11:28
下一篇 2018年12月1日 下午11:29

相关推荐