看了下别人写的程序,
程序开头
SET
SAVE
= L 0.1
程序本体。。。
程序结尾
CLR
A L 0.1
SAVE
就是没闹懂程序的开头和结尾有什么作用(BR位和L0.1做什么用了,L0.1程序本体中没有用到)。希望老师能指导下,严重感谢。
问题补充:
谢谢各位老师的回答
看了老师的回答我的理解是通过管理BR位能起到程序级联的作用。当块后面还有级联块时,必须要对BR位进行管理,这样才能对后面的级联快起到有效的调用,换句话说当我只调用一个块时是不需要对BR进行管理的。是这样吗?谢谢
抱歉分数只能给一个的
最佳答案
LZ所问的问题与程序的例子是很贴切的,理解了BR位在FC中有什么作用,就会明白这段程序为何要这样写。
是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时,保证能流导通。
提问者对于答案的评价:
谢谢,还有能帮忙讲解下这句话吗“BR是二进制结果位,解释字逻辑的结果。”
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc249342.html