对于初学来说,容易 在ENO的使用上出错误,由于不清楚ENO来龙去脉,经常认为只要调用FC是无条件的,那么ENO也是永远导通的,实则不然.
下图所示: 进行模拟量转换,并无条件地将MD10的数值,传送至MD14.
图中可以看出,当FC105的输入端PIW256在正常范围内的时候,MOVE指令被执行(ENO=EN),当PIW256超出了上限之后,MOVE指令不再被执行(ENO不能由EN控制).此故障还是比较隐蔽的,因为大部分情况下,输入可能都处于正常范围.
分析:
在STEP7的LAD编程手册中有对EN/ENO机制的详细描述,这里不再熬述.仅列出主要部分内容:
ENO的值取决于公式: ENO =EN与非(error)
如果程序调用没有错误(error = 0) ,则ENO =EN
如果程序调用有错误 (ERROR =1) , 则ENO = 0
EN/ENO机制用于:
数学运算指令
传输及转换指令
一危机循环移位指令
块调用
EN/ENO机制不能用于:
比较指令
计数器
定时器
如果用户要创建自己在FBD或LAD中调用的块,那么必须确保退出块时,置位BR位。这并不是一个自动处理过程。不能使用BR作为存储位,因为EN/ENO机制不断重写BR位。作为替代,可使用一个临时变量(例如# error)来保存发生的所有错误,并用0初始化此变量。在块内部程序中,如果用户某处程序行为错误状态,则可以将此变量置1。并且在块结尾编写以下程序段:
确保在任何情况下都处理本段操作,这表示禁止在块内使用BEC,并禁止跳过本程序段。
责任编辑人:CC
全部0条评论
快来发表一下你的评论吧 !