2. 工业自动化基础

在工业AI与PLC联动体系中,PLC(可编程逻辑控制器)是连接物理产线与数字算法的核心执行层。理解PLC的工作原理、扫描周期、I/O模块以及编程语言,是构建边缘识别到产线控制闭环的前提。本章将从硬件执行机制与软件编程范式两个维度,系统拆解PLC的基础知识体系,为后续AI模型输出与PLC指令交互打下扎实基础。

PLC 核心机制与编程语言关系图 输入模块 (I) 传感器/开关/编码器 输出模块 (Q) 执行器/电机/电磁阀 CPU 中央处理单元 扫描周期:读输入→执行程序→写输出 梯形图 (LD) / 结构化文本 (ST) 循环扫描,周期通常 1~100ms 信号采集 控制指令 梯形图 (Ladder Diagram) • 图形化继电器逻辑,直观易排查 • 适合开关量、联锁、顺序控制 • 左母线→触点→线圈→右母线 • 扫描时按网络顺序逐行执行 结构化文本 (Structured Text) • 高级语言风格,支持复杂运算 • IF/ELSE、FOR、CASE 等语句 • 适合模拟量处理、PID、数据处理 • 与AI算法对接时更灵活 I/O刷新与程序执行分离,保证控制一致性

PLC工作原理:循环扫描与事件驱动

PLC本质上是一台专为工业环境设计的工业计算机,其核心运行机制是循环扫描。与普通PC的CPU按需处理不同,PLC按照固定的顺序周而复始地执行三个阶段:输入采样、程序执行和输出刷新。这种设计保证了控制逻辑的确定性和实时性,使得同一段程序在任何时刻扫描,其输入状态都是某一瞬间的“快照”,避免了信号竞争问题。

在输入采样阶段,PLC读取所有输入模块的物理信号(如传感器通断、模拟量电压),并将其存入输入映像寄存器。程序执行阶段,CPU从第一条指令开始逐条执行用户程序,期间只访问输入映像寄存器和内部存储器,不直接读取物理输入。输出刷新阶段,CPU将输出映像寄存器的状态一次性传送给输出模块,驱动外部执行器。整个过程构成一个扫描周期,典型耗时在1毫秒到100毫秒之间,取决于程序长度和CPU性能。

关键理解:PLC的“同时性”是伪同时。在一个扫描周期内,所有输入在开始时被锁定,所有输出在结束时统一更新。这种机制避免了程序执行过程中因输入变化导致的逻辑混乱,但也意味着PLC对输入变化的响应存在一个扫描周期的固有延迟。对于AI联动场景,若视觉检测结果需要快速停机,必须考虑此延迟并设置安全余量。

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~50msAI调节产线速度

梯形图与结构化文本:两种主流编程范式

梯形图(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数据交互的复杂逻辑,使用结构化文本。实际项目中常采用混合编程:主框架用梯形图保证可读性,算法模块用ST封装。

扫描周期对AI联动的影响与优化策略

扫描周期是PLC性能的核心指标,直接影响AI控制闭环的响应速度。一个完整的扫描周期包括系统管理、I/O刷新、程序执行和通信服务等部分。当PLC程序较长或包含大量浮点运算时,扫描周期会显著增加。在AI视觉检测场景中,若相机检测耗时50ms,PLC扫描周期为20ms,则从检测完成到执行机构动作的理论延迟为20-40ms(取决于检测信号在扫描周期中的相位),实际还需加上输出模块的物理响应时间。

优化扫描周期的方法包括:将实时性要求高的逻辑放在程序前部;使用中断程序处理紧急事件(如急停);避免在程序中使用循环次数过多的FOR语句;将不频繁更新的通信任务放到后台任务中。对于高速视觉检测(如每分钟检测600个产品),建议PLC扫描周期控制在10ms以内,必要时选用支持多任务并行处理的PLC或采用硬件中断触发方式。

风险提示:切勿为了追求扫描速度而牺牲程序可读性。在AI联动项目中,建议在PLC程序中增加扫描周期监控功能,当周期超过设定阈值时触发报警,防止因程序劣化导致控制延迟增大。同时,所有AI决策指令应经过超时判断和合理性校验,避免异常数据导致执行机构误动作。

案例拆解:视觉引导的包装线剔除控制

某食品包装产线需要检测包装封口缺陷,检测速度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断电重启后必须确保输出处于安全状态,防止执行机构突然动作造成安全事故。