选型时常见的问题:A 厂说扫描周期 1 ms,B 厂说 0.5 ms,C 厂说指令执行时间 1 ns/条,到底怎么比?本帖用问答形式整理一个尽量公平的测量方法。

问 1:厂家给的数据为什么没法直接比?
答:口径不同。有的只算“程序执行时间”,有的包含 I/O 刷新,有的包含通信处理。另外基于周期中断的任务(固定 1 ms 中断)和自由运行的主循环是两种模式,前者的关键指标是抖动和是否超时,后者才谈“扫描时间”。

问 2:最能反映实际性能的指标是什么?
答:“输入到输出的响应时间”(I/O response time)。它包含输入滤波、输入刷新、程序执行、输出刷新、输出模块延迟,最接近现场关心的结果。

问 3:怎么测?
答:常用的硬件回环法:
1. 用信号发生器给一个数字输入方波(频率远低于预期响应速度);
2. 程序里最简单的逻辑:输出 = 输入;
3. 示波器同时测输入和输出的边沿,统计至少几千次的延迟分布,记录最小、平均、最大值;
4. 把输入滤波时间设成最小值(并记录下来),所有平台使用同类型的输入输出模块(同为本地 I/O 或同为远程 I/O)。

问 4:怎么加入“真实负载”?
答:写一段标准化的基准程序,比如 N 个电机功能块实例 + 一定数量的浮点运算 + 若干字符串处理,在各平台实现同样的逻辑后再测,同时打开与 HMI 的通信。只测空程序,比较的只是固件开销。

问 5:最大值为什么比平均值更重要?
答:控制和联锁关心的是最坏情况。比如包装机 2 ms 控制周期,平均 1.2 ms 但偶尔 3 ms,就会出现偶发的定位偏差。周期任务要看“周期超时”诊断计数是否为 0。

问 6:远程 I/O 怎么算?
答:总线周期也要计入。PROFINET、EtherNet/IP、EtherCAT 的 I/O 刷新周期和 PLC 任务是否同步,对最坏响应时间影响很大;如果不同步,最坏情况近似要加上一个总线周期和一个任务周期。

欢迎补充你们在选型测试里用过的基准程序和测量结果(可以隐去品牌)。