找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
小程序查看
手机扫码追踪该问题
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
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时,保证能流导通。
程序结尾:
CLR //将RLO复位为0
A L 0.1 //与L0.1进行“与”运算
SAVE //将RLO保存到状态字的BR位
其整体作用就是将RLO和BR复位为0,即使该段程序运行结束。
RLO与BR分别是CPU状态寄存器的第1位和第8位,在使用语句表编程中运用非常重要并且使用频率非常高。
RLO(逻辑运算结果)位用来存储执行位逻辑指令或比较指令的结果。RLO的状态为1,表示有能流流到该运算点处;为0则表示无能流流到该点。可以用RLO触发跳转指令。
而BR即二进制结果位,对应于方框指令的ENO,如果指令被正确执行,BR位为1,ENO端有能流流出。如果执行出现错误,BR位为0,ENO端没有能流流出。在用户用语句表编写FB和FC程序中,必须对BR位进行管理。当FB或FC执行无错误时,RLO为1,并存入BR中存入0.可以用SAVE指令将RLO存入BR。
1.关于S7-300/400 CPU中的状态字寄存器可参见:
http://www.jdzj.com/PLC/article/2010-6-29/18155-1.htm
2.关于L局部变量可参考:
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=78555&cid=1029
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!