RT,想咨询下老师BR位在FC中有什么作用呢?
刘玉蓉
发布于2014-08-15 17:30
110
0
标签:
看了下别人写的程序,
程序开头
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时,保证能流导通。