4. 产线设备状态与信号抽象
在复杂产线的顺控程序里,PLC 真正“看见”的并不是气缸、电机或阀门本身,而是一组经过抽象后的输入/输出信号。信号抽象做得好,程序结构清晰、联锁可靠、排障迅速;抽象做得差,就会出现“同一个动作有多个来源”“状态判断互相矛盾”“手动与自动切换时输出抖动”等问题。本节围绕传感器、执行器、气缸、电机、阀门五类对象,说明如何定义信号、如何建立状态模型,并用一个可直接套用的建模表把抽象结果固化下来。
一、信号抽象的基本约定
在 iQ-F 系列 PLC 中,输入继电器 X、输出继电器 Y、内部继电器 M、定时器 T、计数器 C、数据寄存器 D 是最常用的软元件。做信号抽象时,先约定三条规则,全文与图示保持一致:
- 命名规则:输入用“X+功能缩写”,如 X0 为启动按钮、X10 为气缸 A 伸出到位;输出用“Y+对象+动作”,如 Y0 为气缸 A 伸出电磁阀、Y10 为电机 M1 运行接触器。
- 逻辑约定:传感器“检测到”定义为 ON(1),执行器“得电动作”定义为 ON(1);若现场为常闭或低电平有效,在程序入口统一取反,不把反逻辑带入状态模型。
- 状态分层:物理信号(X/Y)→ 对象状态(M)→ 工位状态(M)→ 产线状态(M),逐层抽象,避免跨层直接引用。
二、五类对象的信号定义
传感器:按检测对象分为位置、物料、安全三类。位置传感器(磁性开关、接近开关)用于判断气缸、滑台是否到位,通常每个动作配两个检测点(伸出到位、缩回到位);物料传感器(光电、光纤)用于判断工件有无;安全传感器(安全门、光栅)直接参与联锁,应单独占用输入点并做冗余判断。示例:气缸 A 伸出到位 X10、缩回到位 X11,工件检测 X12。
执行器:泛指电磁阀、接触器、指示灯等最终执行元件。执行器信号是“命令”,不是“结果”,因此必须与传感器反馈配对使用。示例:Y0 驱动气缸 A 伸出电磁阀,Y1 驱动缩回电磁阀;Y10 驱动电机 M1 运行。
气缸:典型双作用气缸有两个电磁阀输出和两个到位反馈,状态可建模为“缩回、伸出中、伸出、缩回中、异常”五种。判断依据是输出命令与到位信号的组合:命令伸出且伸出到位 ON 为“伸出”;命令伸出但两个到位都 OFF 超过设定时间 T 为“异常”。
电机:以“运行命令 + 运行反馈 + 故障反馈”三信号建模。运行命令 Y10,运行反馈 X20(接触器辅助触点或变频器运行输出),故障反馈 X21(热继电器或变频器故障)。状态分为“停止、启动中、运行、故障”。启动中若超过 3 s 未收到运行反馈,判为启动失败。
阀门:以气动/电动阀为例,通常有开阀输出、关阀输出、开到位、关到位四个信号。与气缸类似,但阀门动作时间更长,超时阈值应单独设定,例如开阀超时 5 s、关阀超时 5 s。
三、状态建模方法
状态建模的核心是把“信号组合”映射为“对象状态”,再用状态参与联锁和顺控。推荐用“状态字 + 超时定时器”的方式实现:每个对象分配一个 D 寄存器存放状态码,用比较指令判断当前状态,用定时器监控动作是否超时。以气缸 A 为例,状态码定义如下:0=缩回,1=伸出中,2=伸出,3=缩回中,4=异常。程序逻辑为:当 Y0 ON 且 X10 ON 时写 2;当 Y0 ON 且 X10 OFF 且 T0 未到时写 1;T0 到时仍无到位则写 4 并置位报警 M100。
这种建模方式的好处是:联锁条件可以直接写“气缸 A 状态=2”,而不必再拼 X10、X11、Y0 的组合,程序可读性和可维护性显著提升。同时,异常状态集中管理,便于 HMI 显示和故障追溯。
四、建模表与实现要点
把上述抽象结果整理成一张建模表,可直接作为编程和调试的依据。下表以气缸 A、电机 M1、阀门 V1 为例,参数为教学示例,实际项目应按现场元件手册和工艺节拍调整。
| 对象 | 输出信号 | 反馈信号 | 状态码 | 超时阈值 | 异常处理 |
|---|---|---|---|---|---|
| 气缸 A | Y0 伸出 / Y1 缩回 | X10 伸出到位 / X11 缩回到位 | D100:0缩回 1伸出中 2伸出 3缩回中 4异常 | T0=2.0 s | 置 D100=4,M100 报警 |
| 电机 M1 | Y10 运行 | X20 运行反馈 / X21 故障 | D110:0停止 1启动中 2运行 3故障 | T1=3.0 s | 置 D110=3,M101 报警 |
| 阀门 V1 | Y2 开阀 / Y3 关阀 | X13 开到位 / X14 关到位 | D120:0关 1开中 2开 3关中 4异常 | T2=5.0 s | 置 D120=4,M102 报警 |
实现时注意三点:第一,超时定时器的启动条件应绑定“命令已发出且反馈未到”,而不是单纯用命令信号;第二,异常状态一旦置位,应保持到人工复位,避免故障被自动清除后继续运行;第三,HMI 上显示状态码而非原始 X/Y,操作员看到“气缸 A 异常”比看到“X10=0”更容易定位问题。