3. PLC扫描周期与CNC实时控制的时序关系
在CNC与PLC联动的系统中,PLC并不是“随时”响应输入和刷新输出的。它按固定节拍循环执行:读输入、执行程序、写输出、处理通信与系统任务,这个循环称为扫描周期。CNC侧则不同,插补、位置环、主轴控制往往运行在1ms甚至更短的实时任务中。两者节拍不一致,就产生了本节要讨论的核心问题:扫描机制、中断、实时任务、抖动来源,以及它们如何影响联动逻辑的正确性。
一、PLC扫描机制:输入映像与输出映像
典型PLC的一个扫描周期包含几个阶段:
- 输入采样:把所有物理输入点状态一次性读入“输入映像区”。
- 程序执行:按用户程序顺序逐条运算,读写的是映像区,而不是直接读写物理点。
- 输出刷新:把“输出映像区”的结果一次性写到物理输出模块。
- 系统任务:通信、诊断、中断检查等。
关键点在于:在一个扫描周期内,输入映像不会中途改变。假设扫描周期为8ms,某个CNC“到位”信号在第2ms到来,PLC要到下一个周期的输入采样阶段才能看到它,最坏情况下延迟接近一个完整扫描周期。这就是扫描机制带来的固有延迟。
因此,对于“CNC到位→PLC夹紧→CNC允许进给”这类联动,如果全部放在普通循环程序中,响应时间由扫描周期决定。若扫描周期为10ms,则联动延迟可能在10~20ms之间波动,对高速加工或安全相关动作可能不可接受。
二、中断与实时任务:打破扫描节拍
为弥补扫描延迟,PLC提供中断机制。常见类型包括:
- 硬件中断:由特定输入点跳变触发,立即暂停主程序,执行中断程序。
- 定时中断:按固定时间间隔触发,例如每1ms执行一次。
- 通信中断:接收到CNC报文时触发。
中断程序执行时间应尽量短,通常只做置位、锁存、发标志等动作,把复杂逻辑留给主程序。若中断程序过长,会拉长扫描周期,反而加剧抖动。
CNC侧则通常采用实时任务调度:插补周期、位置环周期、PLC联动任务按优先级运行。高优先级任务可抢占低优先级任务。CNC与PLC之间通过总线或I/O信号交换数据,交换本身也有周期和延迟。
三、抖动来源:为什么响应时间不固定
“抖动”指同一动作的响应时间每次不完全相同。主要来源包括:
- 扫描周期波动:程序分支、通信负载、诊断任务导致周期忽长忽短。
- 中断嵌套与屏蔽:高优先级中断打断低优先级中断,或中断被短暂屏蔽。
- CNC任务调度:插补任务繁忙时,联动任务被推迟。
- 通信延迟:报文排队、总线仲裁、重传。
- 输入滤波:为抗干扰设置的滤波时间,会额外增加延迟。
抖动比平均延迟更危险。若联动逻辑依赖“固定延迟”,抖动会导致时序错位,例如夹紧尚未完成就允许进给,或松开信号提前到达。
四、对联动逻辑的影响与处理原则
联动逻辑设计应遵循以下原则:
- 安全相关动作走硬件或中断,不依赖普通扫描。
- 用握手信号代替固定延时:CNC发“请求”,PLC回“完成”,而不是“等50ms”。
- 状态机加超时监控:每个等待状态设置超时,超时报警而非死等。
- 关键信号双通道或回读:输出后回读输入确认。
- 评估最坏情况响应时间,而不是平均值。
下面用一张时序关系图说明扫描周期、中断、CNC实时任务与抖动对联动信号的影响。
五、工程示例:夹紧联动的最坏响应时间估算
假设某系统参数如下(示例假设值):PLC扫描周期标称8ms,最大12ms;CNC到位信号经硬件中断触发,中断响应时间0.5ms;中断程序置位夹紧输出,输出模块响应1ms;CNC侧联动任务周期2ms,通信延迟最大3ms。
则从“CNC到位”到“CNC收到允许进给”的最坏响应时间约为:
扫描延迟(最坏) 12ms
+ 中断响应 0.5ms
+ 输出模块响应 1ms
+ 通信延迟 3ms
+ CNC任务周期 2ms
= 最坏约 18.5ms
若工艺要求该联动必须在15ms内完成,则当前方案不满足,需要缩短扫描周期、提高中断优先级、减少通信环节,或改用硬件互锁。这个估算过程比“感觉很快”更有工程意义。
六、状态机中的时序处理建议
在状态机中,等待类状态应设置超时转移。例如“等待夹紧完成”状态,若在设定时间内未收到完成信号,应转入报警状态,而不是无限等待。超时时间应大于最坏响应时间并留有余量,例如最坏18.5ms时,超时设为50ms。
同时,握手信号应使用边沿或锁存方式,避免因扫描周期错过窄脉冲。若CNC发出的完成信号只保持一个CNC任务周期(如2ms),而PLC扫描周期为12ms,则可能漏采。此时应使用中断锁存或要求信号保持到被应答。
综上,PLC扫描周期与CNC实时任务的时序关系,本质是两个不同节拍系统之间的同步问题。理解扫描机制、善用中断、识别抖动来源、按最坏情况估算响应时间,并在状态机中设置超时与握手,才能让联动逻辑既快又稳。