1、“OB1循环超时”故障现象
S7 300/400 PLC在CPU的硬件配置中,设置了OB1块的“扫描循环监控时间”,默认为150ms,如下图:
当OB1执行超过设定的“扫描循环监控时间”时,CPU将报“循环超时”故障,在CPU诊断缓冲器中,可查看故障信息,如下图:
2、“OB1循环超时”故障产生的原因
在OB1中编制或者OB1调用的程序中存在“合法不合理”的情况时,将导致OB1执行时间超过监控时间,从而导致“超时报警”。可能有以下等情况:
(1)、跳转指令(JMP)
如下程序所示,没有为跳转指令设置一定的“跳出”条件或设置的不合理,程序将反复执行NT3和NT4程序段,造成循环超时。
(2)、循环指令(LOOP)
如下程序所示,LOOP循环执行的条件设置的不合理,将导致一直执行NT5程序段,造成循环超时。
(3)、其他程序情况(???)
3、“OB1循环超时”故障产生后,CPU的反应
(1)、用户程序没有调用OB80,循环超时后,CPU将立即停机。
如下图所示,用户程序中,没有调用OB80。
如下图所示,09:19:04 CPU启动,09:19:10 CPU报“循环超时”故障(由于是使用PLCSIM进行CPU仿真运行,所以默认设置“循环扫描监控时间”为6s),同时09:19:10 CPU停机。
(2)、用户程序调用了OB80,但OB80中没有编程,则CPU将在2倍的“扫描循环监控时间”后停机。
如下图所示,用户程序中,调用了OB80,但OB80中没有编程。
如下图所示,09:47:34 CPU启动,09:47:40 CPU报“循环超时”故障(由于是使用PLCSIM进行CPU仿真运行,所以默认设置“循环扫描监控时间”为6s),09:47:46 CPU停机。
(3)、用户程序调用了OB80,且在OB80中调用了SFC43,则CPU将只报“循环超时”故障,但不停机。
如下图所示,用户程序中,调用了OB80,且调用了SFC43。
如下图所示,09:59:29 CPU启动,09:59:35 CPU报“循环超时”故障(由于是使用PLCSIM进行CPU仿真运行,所以默认设置“循环扫描监控时间”为6s),此后每间隔6s都会报“循环超时”,但CPU不会停机。
4、“OB1循环超时”故障处理注意事项
在用户程序中调用OB80,并且调用SFC43确实能够避免CPU由于循环超时停机,但是并不能找到造成循环超时的原因所在;
对于程序响应有较高要求的应用,循环超时可能会造成一定的后果,这时应该尽量避免使用OB80;
上述为经验总结,有问题请提出,谢谢!