因为在线程序时,博途会根据画面中的程序多少进行重新编译,生成可视的变量和状态用于显示,这必然会导致CPU的代码增多,造成CPU循环周期的增加,此外在线会导致CPU产生相应的通信负载,同样会导致CPU循环周期时间延长。
当超过了CPU循环周期的上限值,导致触发OB80,如果没有调用OB80,CPU会停机。即使调用OB80,如果连续超时两次,或者循环周期一次性超过2倍最大的循环周期,那么CPU仍会停机。
![CPU循环周期 CPU循环周期](/upload/202407/26/202407261529129159.png)
解决这样问题的方法有两个,一个是限制通信负载Communication load,例如从50%降到20%,这样的结果是限制通信的上限,保证CPU的循环周期变化较小,不会超过循环周期上限,但是这种情况不仅会导致程序中的通信任务变慢,也会使上传和在线监视程序的速度变慢,因为开放的通信负载减小了。
![限制通信负载Communication load 限制通信负载Communication load](/upload/202407/26/202407261531080891.png)
第二个方法是调整循环周期上限,即修改CPU属性中设置最大的循环周期,例如2000ms,从而保证CPU的循环周期不会超过周期上限,但是这种方式需要注意在线多个程序画面时,CPU循环周期变化过大,可能会影响现场的工艺控制。
![调整循环周期上限 调整循环周期上限](/upload/202407/26/202407261532473175.png)
同样上传程序也有可能因为程序过大,导致通信过大而CPU停机。
最后需要强调的是无论是哪种方式,只要CPU提示警告信息,这说明随后的操作可能造成CPU的停机,这时需要谨慎处理以免停机给生产造成损失。
作者:赵欣