2. 工业自动化基础
在工业AI与PLC联动体系中,PLC(可编程逻辑控制器)是连接物理产线与数字算法的核心执行层。理解PLC的工作原理、扫描周期、I/O模块以及编程语言,是构建边缘识别到产线控制闭环的前提。本章将从硬件执行机制与软件编程范式两个维度,系统拆解PLC的基础知识体系,为后续AI模型输出与PLC指令交互打下扎实基础。
PLC工作原理:循环扫描与事件驱动
PLC本质上是一台专为工业环境设计的工业计算机,其核心运行机制是循环扫描。与普通PC的CPU按需处理不同,PLC按照固定的顺序周而复始地执行三个阶段:输入采样、程序执行和输出刷新。这种设计保证了控制逻辑的确定性和实时性,使得同一段程序在任何时刻扫描,其输入状态都是某一瞬间的“快照”,避免了信号竞争问题。
在输入采样阶段,PLC读取所有输入模块的物理信号(如传感器通断、模拟量电压),并将其存入输入映像寄存器。程序执行阶段,CPU从第一条指令开始逐条执行用户程序,期间只访问输入映像寄存器和内部存储器,不直接读取物理输入。输出刷新阶段,CPU将输出映像寄存器的状态一次性传送给输出模块,驱动外部执行器。整个过程构成一个扫描周期,典型耗时在1毫秒到100毫秒之间,取决于程序长度和CPU性能。
I/O模块:物理世界与数字逻辑的桥梁
I/O模块是PLC与现场设备交互的物理接口,分为数字量(开关量)和模拟量两大类。数字量输入模块(DI)接收来自按钮、限位开关、光电传感器等的通断信号,通常采用24V DC或220V AC电平,内部经过光电隔离和滤波处理。数字量输出模块(DO)驱动继电器、接触器、指示灯等负载,常见类型有晶体管输出(响应快,适合高频动作)和继电器输出(带载能力强,适合大电流)。
模拟量输入模块(AI)将4-20mA电流、0-10V电压或热电偶信号转换为12位或16位数字值,分辨率决定了检测精度。模拟量输出模块(AO)则将数字值转换为连续电信号,用于控制变频器、比例阀等设备。选择I/O模块时需关注通道数、隔离方式、响应时间、接线方式和防护等级。在AI视觉联动场景中,相机触发信号通常接入DI,而控制气缸动作的电磁阀则接DO,模拟量模块常用于读取温度或压力反馈。
| 模块类型 | 信号形式 | 典型设备 | 响应时间 | AI联动场景 |
|---|---|---|---|---|
| DI 数字量输入 | 24V DC / 干接点 | 光电传感器、急停按钮 | 1~10ms | 视觉检测完成信号触发 |
| DO 数字量输出 | 晶体管 / 继电器 | 电磁阀、报警灯 | 0.5~10ms | 不合格品剔除气缸控制 |
| AI 模拟量输入 | 4-20mA / 0-10V | 压力变送器、温度传感器 | 10~100ms | 工艺参数实时监控 |
| AO 模拟量输出 | 4-20mA / 0-10V | 变频器、比例阀 | 10~50ms | AI调节产线速度 |
梯形图与结构化文本:两种主流编程范式
梯形图(Ladder Diagram, LD)是最经典的PLC编程语言,其设计灵感来源于继电器控制电路图。它由左右母线、触点(常开/常闭)、线圈和功能块组成,从左到右表示信号流,从上到下表示执行顺序。梯形图的优势在于直观性强,电气工程师无需编程基础即可上手,且便于现场排查故障。例如,一个简单的电机启停控制,用梯形图只需三个元素:启动按钮(常开触点)、停止按钮(常闭触点)和电机线圈。
结构化文本(Structured Text, ST)是一种高级编程语言,语法类似Pascal或C语言,支持变量声明、IF/ELSE条件判断、FOR循环、CASE选择等结构。ST在处理复杂数学运算、数据转换、算法实现方面远优于梯形图,特别适合与AI系统对接。例如,将视觉检测输出的缺陷坐标转换为机器人抓取偏移量,用ST编写只需几行赋值和条件语句。在IEC 61131-3标准中,ST被定义为五种标准编程语言之一,现代PLC几乎都支持LD与ST混合编程。
// 结构化文本示例:根据视觉检测结果控制剔除气缸
IF vision_defect_count > 0 THEN
reject_cylinder := TRUE; // 激活剔除气缸
defect_total := defect_total + vision_defect_count;
// 等待气缸动作完成
WAIT 200ms;
reject_cylinder := FALSE;
ELSE
reject_cylinder := FALSE;
END_IF;
扫描周期对AI联动的影响与优化策略
扫描周期是PLC性能的核心指标,直接影响AI控制闭环的响应速度。一个完整的扫描周期包括系统管理、I/O刷新、程序执行和通信服务等部分。当PLC程序较长或包含大量浮点运算时,扫描周期会显著增加。在AI视觉检测场景中,若相机检测耗时50ms,PLC扫描周期为20ms,则从检测完成到执行机构动作的理论延迟为20-40ms(取决于检测信号在扫描周期中的相位),实际还需加上输出模块的物理响应时间。
优化扫描周期的方法包括:将实时性要求高的逻辑放在程序前部;使用中断程序处理紧急事件(如急停);避免在程序中使用循环次数过多的FOR语句;将不频繁更新的通信任务放到后台任务中。对于高速视觉检测(如每分钟检测600个产品),建议PLC扫描周期控制在10ms以内,必要时选用支持多任务并行处理的PLC或采用硬件中断触发方式。
案例拆解:视觉引导的包装线剔除控制
某食品包装产线需要检测包装封口缺陷,检测速度120个/分钟,即每个产品检测周期500ms。原方案采用人工目检,漏检率约3%。现引入AI视觉检测系统,需要与PLC联动实现自动剔除。系统约束:产线空间有限,剔除气缸距离检测工位仅300mm,传送带速度0.5m/s,即从检测到剔除位置的时间窗口为600ms。PLC选用西门子S7-1200,扫描周期约8ms,DI/DO响应时间约2ms。
初始方案中,视觉系统通过以太网将检测结果发送给PLC,但网络通信延迟不稳定(10-50ms),且PLC需要轮询通信状态,导致整体响应时间波动大。改进方案改为:视觉系统检测完成后,通过硬接线DO输出一个10ms脉冲信号给PLC的DI中断输入,同时通过以太网传输缺陷类型和位置数据。PLC收到中断后立即执行剔除逻辑,将缺陷产品标记到移位寄存器中,当产品到达剔除位时触发气缸。
实际操作中,移位寄存器长度设置为10个工位(对应500ms传送时间),每个工位存储该位置是否有缺陷。当产品到达剔除位时,PLC读取对应寄存器值,若为缺陷则输出DO信号驱动气缸动作。经过实测,从视觉检测完成到气缸动作的端到端延迟稳定在15-25ms,远小于600ms的时间窗口。实施后漏检率降至0.2%,误剔率0.5%。项目复盘发现,关键成功因素在于:硬接线中断保证了实时性,移位寄存器避免了复杂的位置跟踪算法,而AI检测结果通过以太网传输仅用于数据统计和趋势分析,不参与实时控制。
该案例的代价是增加了一路DI中断模块和相应的接线成本,但换来了控制确定性的显著提升。复盘经验表明,在AI与PLC联动设计中,应遵循“实时控制走硬接线,非实时数据走网络”的原则,避免将通信延迟引入控制回路。
常见误区与总结复盘
- 误区一:认为PLC扫描周期越短越好。实际上,过短的扫描周期可能增加系统负担,且对于大多数工业场景(如传送带控制、温度调节),10-50ms的周期完全足够。盲目追求高速可能导致成本上升和系统不稳定。
- 误区二:忽视I/O模块的响应时间。PLC扫描周期只是延迟的一部分,输入滤波时间、输出模块的机械动作时间(如继电器吸合5-10ms)同样不可忽略。计算总延迟时需将所有环节相加。
- 误区三:用梯形图实现复杂算法。梯形图适合逻辑控制,但进行浮点运算、数组处理时效率极低且难以调试。应使用ST或SCL语言封装算法块,通过功能块接口与梯形图交互。
- 误区四:忽略PLC程序的上电初始化和故障恢复。在AI联动系统中,PLC断电重启后必须确保输出处于安全状态,防止执行机构突然动作造成安全事故。