解答:
如果输入是在标准程序和安全程序中都进行了扫描,那么你可能看到故障安全输入信号在标准程序中跳变的情况。
发生跳变是因为不仅仅在OB1的开始更新输入的过程映象表,而且当F-CALL (安全程序)被调用时也会更新过程映象表。因而输入值是在安全程序被调用之前被采集还是调用之后进行采集,将得到不同的结果。n
举例:
- 自动防故障装置的输入是在标准程序的OB1中进行查询的。安全程序是在OB35中调用的。故障安全输入模块已被钝化。n
- 步骤: n
- 当调用OB1时,读到的输入值为“1”。n
- 这时OB35中断OB1。F-CALL (安全程序)被调用。F I/O的过程映象表得以更新。由于输入模块被钝化,输入值为“0”被读入安全程序中。n
- 当OB35完全处理完成后,OB1才完成——读入的输入值仍旧是“0”。输入的过程映象表已经在F-CALL的调用时进行了更新,并且继续在OB1中被使用。n
- 下一次通过OB1调用标准程序时,该位再次以“1”值被读入。
- 根据OB35中断OB1的不同时刻,输入可能有不同的状态。
补救措施:
为了避免该情况的发生,可以将标准程序中用到的输入传送到一个标志位,举个例子,在F程序中或者随后直接在标准程序中访问这个标志位。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc338536.html