一、CPU占有率定义
0%-89%:PLC运行稳定。逻辑执行、总线同步、IO刷新、数据同步、数据保存都有时间保证。90%-100%:PLC运行稳定性降低。主要影响:
● EtherCAT运行稳定性难以保证,可能出现EtherCAT从站掉线、同步丢失● 严重的可能使PLC处于“假死”状态,不能扫描登录PLC● 掉电存储数据不能保存● CANopen、CANlink、Modbus/ModbusTCP存在数据刷新、断线风险● 在线修改或者下载PLC程序可能变慢,并且有可能失败● 监视的PLC变量值,存在刷新缓慢或者无法刷新的风险
二、分析步骤
1. 查看PLC CPU占有率
登录PLC,通过后台状态条能查看CPU占有率;如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/09b995dc0cae3506447f53173fb24d30.png)
2. 查看任务执行时间,并计算执行时间在任务中占比
登录PLC后,打开【任务配置】-【监视】界面,查看任务的平均循环时间,如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/736548a50fbda0691765b60fc8472358.png)
上图中,EtherCAT任务和MainTask任务循环周期都是4ms,而MainTask任务占比约3575/4000约等于89%,也就是说,MainTask占有过多的执行逻辑。
3. 优化任务中程序
优化程序首先找到执行时间过长的程序,然后再找到程序中执行比较久的代码段。
找到占用过多CPU时间的程序,一般通过删减任务下的程序来判断。如果删除任务下的程序后,任务执行时间明显减少,表示此程序可能需要优化。
找到程序后,需要找到此执行比较久的代码,也是通过删除程序中的代码来判断。
三、常见优化方式
● 增大任务扫描周期任务扫描周期增加后,任务中程序执行次数减少,相应的占用CPU时间会减少。● 批量数据处理代码优化一般程序是循环执行的,对于批量数据的处理,可以考虑多个周期处理。例如初始化代码、对时效性要求不是很高的逻辑,都可以多周期执行。● 增加IF条件程序中功能块和函数,如果不增加条件,每个周期都会一直执行的。实际情况下,可能需要某个条件才需要执行,可以增加IF条件,满足条件才执行。在ST中可以考虑增加IF条件,在LD中,把运算块变为EnEno类型。● 更换更高性能PLC