很多工控工程师只停留在 “PLC 从上到下跑程序” 的表层认知,但在高速联锁、脉冲控制、模拟量采集项目里,时序异常、信号丢包、误动作问题,根源大多来自对循环扫描机制理解不足。
PLC 区别于单片机的核心特征就是周期性循环扫描,一次完整扫描周期分为 3 个核心阶段:输入采样阶段 → 程序执行阶段 → 输出刷新阶段。
输入采样阶段PLC 会一次性读取全部数字量输入端子状态,存入输入映像寄存器。扫描周期内,物理输入端子的信号变化不会更新映像区。
坑点:如果输入信号脉冲宽度小于扫描周期,信号会直接丢失。高速脉冲信号不能用普通 DI 采集,必须使用硬件中断或高速计数器。
程序执行阶段CPU 按从上至下、从左到右顺序读取程序,运算时读取的不是真实 IO 端子,而是映像寄存器里的数据。运算结果写入输出映像寄存器,不会直接驱动物理输出点。 同一周期内,前面逻辑改变的映像值,后面程序可以立刻读取;但本次周期内物理输入不会刷新。这也是重复输出线圈会出现逻辑错乱的根本原因。
输出刷新阶段扫描到程序末尾时,PLC 一次性把输出映像寄存器全部状态批量写入物理输出端子,驱动继电器 / 晶体管输出。
重点:输出不是程序运算完立刻动作,要等到本轮扫描结束统一刷新。
扫描周期 = 固定系统开销 + 用户程序执行时间 + 通讯开销 程序量越大、Modbus/Profinet 通讯任务越多,扫描周期越长。 在安全联锁项目,需要监控扫描周期,设置看门狗超时报警;如果程序执行时间超过看门狗设定值,PLC 会触发停机。
普通 DI 信号:适合慢变化开关量,不适合窄脉冲;
高速信号:采用硬件中断,中断任务独立于主循环扫描,实时性不受主程序周期影响;
模拟量:模拟量模块采样有独立周期,和主 PLC 扫描周期不同步,做闭环控制时需要考虑采样延时;
冗余 PLC 系统:双机热备会额外增加同步数据交互时间,扫描周期波动会变大。
上一篇:没有了!