RT,想咨询下老师BR位在FC中有什么作用呢?谢谢。

看了下别人写的程序,
程序开头
    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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日 下午4:46
下一篇 2018年12月2日 下午4:47

相关推荐