某些场合会对PLC的扫描周期有严格要求,这时如果你发现扫描周期不满足应用需求,有两种方式可以解决,
- 提升硬件规格,换性能更强的CPU,这也意味着要付更多的money,增加成本。
- 优化程序,让程序变的高效灵活。
本着降本增效的原则,本文介绍后者。但如果你说”没事,咱不差钱”,那么很好,你可以选择略过本篇。
言归正传,如下列出几种优化程序,缩短扫描周期的方法,供参考
1. 给不需要实时执行的程序做轮询扫描
如下图:
2. 特定程序,安排在FisrstScan或程序更新时执行一次。
有些程序只需要在特定时候才需要用到,比如开机时初始化,就可以用firstScan执行扫描。
程序更新时执行这个比较特殊,用的比较少,方法是通过对比程序的校验和,来检测程序段是否发生过更改,有兴趣的可以自行研究下。
3. 优化for循环。
有些人写模板程序时,由于考虑到可能的最多设备数量,喜欢把for循环上限拉的很大,实际基本上用不到这么多,CPU每次都执行了一些无效的扫描,对运算资源造成浪费。
可以将循环索引上限动态化,如下图:
4. 跟某个特定HMI画面相关的程序,可以限定在切换到这个画面才执行。
比如有些读取IO状态放在HMI显示的程序,不需要实时扫描,只有等你想在HMI查看IO信息的时候安排执行就好了。
5. 次要或者辅助功能可在HMI上留接口,选择是否启用功能。
这一点比较极端,因为有人会说了,你都不确定要不要这个功能,为啥要写进去呢?
其实很好解释,是为了控制程序版本。好比汽车的高低配,程序同样也有高低配。
如果不同配置的程序都做一份,版本维护将会是个难题。这时候你就可以通过外置接口,决定是否开启某些功能。
6. 降低通讯负载
系统默认的通讯负载是50%,此值为也为最大值。如果现场通讯实际通讯负荷没那么高,实时性不是太严格,可以酌情降低改负荷。
如果你有不同意见,或者其他优化扫描周期的方法,欢迎交流!