3、PLC扫描周期详解:扫描周期组成、典型时间参数、影响扫描周期的因素

在工业AI实时性设计中,PLC(可编程逻辑控制器)是产线控制的核心执行单元。AI推理结果最终要转化为对执行机构的动作指令,必须经由PLC的扫描周期进行调度。理解PLC扫描周期的内部结构、时间参数和影响因素,是设计低延迟工业AI系统的前提。本节将系统拆解扫描周期的组成,给出典型时间参数范围,并分析影响扫描周期的关键因素,帮助你在实际项目中准确估算端到端延迟。

PLC扫描周期组成与延迟链路 ① 输入采样 读取物理输入 写入输入映像区 典型:0.1~2ms ② 程序执行 逐条执行用户程序 AI推理结果读取 典型:0.5~10ms ③ 输出刷新 输出映像区→物理输出 驱动执行机构 典型:0.1~1ms ④ 通信与系统 以太网/IPC通信 诊断、自检 典型:0.2~5ms 扫描周期 T_scan = T_in + T_exec + T_out + T_comm AI推理与PLC动作窗口的延迟链路 传感器采集 AI推理(边缘) 通信传输 PLC输入采样 程序执行 输出动作 典型时间参数(中小型PLC) • 扫描周期:1~20ms(常规) / 0.5~5ms(高速) • 输入滤波:0.1~10ms(可配置) • 输出延迟:0.1~1ms • 通信抖动:±0.5~2ms

3.1 扫描周期的四阶段组成

PLC采用循环扫描的工作方式,一个完整的扫描周期由四个顺序执行的阶段构成。理解每个阶段的时间开销和功能边界,是进行延迟预算的基础。

  • 输入采样阶段(I/O刷新):PLC读取所有数字量输入模块和模拟量输入模块的物理信号,将其状态存入输入映像寄存器。此阶段的特点是批量读取,即无论程序是否使用某个输入点,都会被刷新。输入滤波时间(如RC滤波、数字滤波)也在此阶段消耗。
  • 程序执行阶段:CPU从第一条指令开始,逐条执行用户程序(梯形图、ST、FBD等),直到END指令。程序中的触点/线圈读写的是输入/输出映像区,而非直接操作物理I/O。此阶段是扫描周期中耗时最不确定的部分,取决于程序长度、指令类型和分支复杂度。
  • 输出刷新阶段:CPU将输出映像区的状态一次性传送到输出模块,驱动物理执行器(继电器、晶体管、晶闸管等)。输出模块的电气响应时间(如继电器线圈吸合时间)也计入此阶段。
  • 通信与系统服务阶段:处理通信任务(以太网、PROFINET、Modbus TCP等)、执行系统诊断、自检、固件维护等。此阶段的时间随通信负载和诊断事件波动。
在工业AI系统中,AI推理结果通常通过以太网写入PLC的特定数据区(如DB块或保持寄存器)。该数据写入操作发生在通信与系统服务阶段,而程序执行阶段读取的是上一周期写入的数据。因此,AI结果从到达PLC到被程序使用,存在至少一个扫描周期的延迟。

3.2 典型时间参数与量级参考

不同档次的PLC,其扫描周期差异显著。下表给出了常见PLC类型的典型时间参数,供延迟估算时参考。

PLC类型扫描周期范围输入采样时间程序执行时间(1K指令)输出刷新时间通信抖动
微型PLC(如LOGO!)5~20ms0.5~2ms0.3~1ms0.2~0.5ms±1~3ms
中小型PLC(如S7-1200)1~10ms0.1~0.5ms0.05~0.2ms0.1~0.3ms±0.5~1ms
大型PLC(如S7-1500)0.5~5ms0.05~0.2ms0.02~0.1ms0.05~0.2ms±0.2~0.5ms
运动控制器(如SIMOTION)0.25~2ms0.02~0.1ms0.01~0.05ms0.02~0.1ms±0.1~0.3ms

需要注意的是,上述数据为典型值,实际项目中应通过PLC的在线诊断功能(如S7-1500的"循环时间"监控)获取实测值。扫描周期的最大值比平均值更重要,因为AI系统的实时性设计必须保证在最坏情况下仍满足动作窗口要求。

3.3 影响扫描周期的关键因素

扫描周期并非固定不变,以下因素会显著影响其长度和稳定性,在工业AI项目设计时必须逐一评估。

  1. 程序复杂度与指令类型:浮点运算、PID运算、字符串处理等指令比位逻辑指令耗时高10~100倍。AI推理结果的处理若涉及大量浮点转换或数组操作,会明显拉长程序执行时间。
  2. I/O点数与模块类型:模拟量模块的采样转换时间(如4~20mA信号需0.1~1ms稳定)比数字量模块长。分布式I/O(通过PROFINET等总线连接)还会增加通信延迟。
  3. 通信负载:PLC与HMI、SCADA、AI服务器之间的以太网通信会占用系统服务时间。当通信数据量增大或报文频率提高时,扫描周期会相应延长。
  4. 中断与事件触发:硬件中断(如高速计数器、输入边沿中断)会暂停当前扫描,执行中断服务程序后再返回。频繁的中断会导致扫描周期抖动。
  5. 系统诊断与固件功能:启用在线监控、Trace功能、诊断缓冲区记录等会额外消耗CPU时间。
在工业AI项目中,切忌在PLC程序中编写阻塞式等待(如等待AI结果标志位的死循环),这会直接导致看门狗超时和CPU停机。应采用非阻塞轮询或事件驱动方式读取AI结果。

3.4 案例拆解:AI质检系统的扫描周期优化

某汽车零部件产线部署了基于机器视觉的AI质检系统,要求将缺陷信号在50ms内传送至PLC并触发剔除气缸动作。初始方案中,AI推理服务器通过Modbus TCP将结果写入PLC的保持寄存器,PLC程序每周期读取该寄存器。

初始现象与数据:PLC为S7-1200,实测扫描周期平均4.2ms,最大6.8ms。AI推理平均耗时28ms,通信传输约3ms。端到端延迟实测为:传感器触发→AI推理完成→PLC读取→输出动作,总计约65ms,超出50ms要求。

分析判断过程:通过PLC在线监控发现,程序执行阶段耗时2.1ms,其中包含对AI结果寄存器的字符串解析(将ASCII码转换为浮点数)耗时0.8ms。通信阶段耗时1.5ms,原因是AI服务器每50ms发送一次结果,但PLC的通信处理被安排在扫描周期的末尾,导致数据到达后需等待下一个周期才能被程序读取。

优化操作步骤:

  1. 将AI结果的数据格式从ASCII字符串改为16位整数(缺陷类型编码),省去字符串解析,程序执行时间降至1.3ms。
  2. 在PLC中启用循环中断OB30(周期5ms),在中断中直接读取AI结果寄存器并置位输出标志,避免等待主扫描周期。
  3. 将AI服务器的通信周期从50ms缩短至20ms,并采用PROFINET IRT(等时同步实时通信)替代Modbus TCP,通信抖动从±1.2ms降至±0.3ms。

结果对比:优化后,端到端延迟实测为:传感器触发→AI推理完成(28ms)→通信传输(2ms)→PLC中断读取(<1ms)→输出动作(1ms),总计约32ms,满足50ms要求。扫描周期虽因中断增加而略有波动(最大7.2ms),但关键路径延迟大幅缩短。

风险与代价:循环中断的使用增加了程序复杂度,需注意中断服务程序不能执行耗时操作(如通信请求)。同时,PROFINET IRT需要PLC和交换机硬件支持,项目成本略有上升。

复盘经验:工业AI延迟优化不能只看AI推理速度,必须将PLC扫描周期结构纳入整体设计。优先采用中断机制处理高实时性信号,将AI结果数据格式设计为PLC易于解析的简单类型,并选用支持实时通信的工业协议。

3.5 常见误区与设计要点

经验提醒:在PLC程序中,使用RD_SINFO(读取系统信息)或GET_CYCLIC_INFO(S7-1500)指令可以实时获取当前扫描周期值,建议在调试阶段将其记录到数据日志中,用于验证延迟预算。
  • 误区一:认为扫描周期是固定值。实际上,扫描周期随程序分支、通信负载和中断事件动态变化。设计时必须以最大扫描周期为基准。
  • 误区二:忽略输入滤波时间。PLC输入模块的滤波设置(如0.1ms、0.5ms、1ms)会直接增加信号采集延迟。对于高速AI触发信号,应设置为最小滤波或使用中断输入。
  • 误区三:将AI结果写入普通数据区。如果AI结果写入掉电保持区(如DB的保持属性),会触发额外的EEPROM写入操作,增加通信阶段耗时。应使用非保持数据区。
  • 误区四:在程序执行阶段频繁读写通信数据。每次调用通信指令(如TCON、TSEND)都会消耗数百微秒。应集中在一个周期内完成数据交换。

总结而言,PLC扫描周期是工业AI实时性设计的核心约束之一。通过理解其四阶段组成、掌握典型时间参数、识别影响因素,并采用中断、数据格式优化和实时通信等手段,可以有效压缩端到端延迟,确保AI系统在严苛的工业环境中稳定运行。