保持对技术的好奇心,拓宽知识的边界,提高认识的分辨率
适用范围:
程序开发过程中,发现CPU利用率太高,希望优化PLC代码,找出到底是哪些PLC代码浪费了时间,能否优化,这是编程人员需要考虑的问题。TwinCATPLC的TcUtinity.lib中提供了功能块GETCPUCOUNTER,可以在同一个PLC周期内多次调用,实时获取CPU时间。同一周期内两次获取的时间之差值,就是两次FB调用之间的代码执行时间。利用这个功能,不仅可以优化代码,还可以对多种PLC指令的执行时间,对相对代码在不同CPU上的执行时间做相对准确的数字对比。对于TcpIp通讯、ADS通讯、Login、Display Flowcontrol等操作的影响CPU执行的程序,都可以做定量的分析。
测试出的3个现象:
指令执行时间的分析
MEMCPY耗时为普通赋值语句的3倍。
赋值、取反再赋值、判断的运算时间相当,都是PLC基本指令时间。
I7虚拟机执行速度大约是CX1020的4倍
整数加减运算是赋值语句的2-2.5倍
整数乘除运行是赋值语句的1.5-2倍
*其它运算:打开文件、读文件、写文件这种可能会耗时的语句,用户可以自己测试,方法见附件。
Display Flow Control对CPU执行时间的影响
当前高亮显示的代码行,会增加CPU执行时间。不高亮显示的代码行不受影响。
从SystemTaskInfoArr看出,把高亮显示代码行的窗体最小化后,LastExecTime恢复正常。
影响的程度:LAN连接的影响最大,本地虚拟机影响小10倍,虽然用ping指令响应都<1ms.
只有Display Flow Control才会影响代码执行,并且影响的程度与PLC周期无关
Login的影响指令执行时间的分析
PLC Control对程序的Login,不会影响代码执行。只有DisplayFlow Control才会。
与不带IO映射且直接Login到801查看结果相比,PLC执行时间没有区别。
*CPU利用率可能有区别,因为消耗的是IO处理的时间,不是CPU运算的时间。
附件包括示例程序及其测试过程的记录和含截图详细说明。
本公众号附加文件总的总链接是:
https://pan.baidu.com/s/1miXeCe0
本文附件的路径为:
/个人公众号附加文档/PLC代码执行时间分析
适用范围:
测试出3个现象:
分析工具:
测试记录
1. 指令执行时间的分析
2. Display Flow Control对CPU执行时间的影响
3. Login的影响指令执行时间的分析
(******************************)

喜欢本文?识别二维码,可关注公众号
-技术区




