4. 数字量输入输出编程

数字量输入/输出(DI/DO)是工业控制器最基础也最常用的 I/O 类型。在 WAGO 控制器(如 PFC200、750 系列)中,DI 模块负责把现场开关、按钮、限位、接近开关等二值信号采集进来,DO 模块则把控制器的逻辑结果以 24V DC 电平输出到继电器、指示灯、电磁阀等执行器。本节围绕四个关键环节展开:模块配置、信号滤波、强制输出和点动调试。

一、DI/DO 模块配置

WAGO 750 系列 I/O 模块通过内部 K-Bus 与控制器通信,每个模块在物理上按插接顺序排列,控制器在启动时自动识别模块类型并分配过程映像地址。以常见的 750-430(8 通道 DI,24V DC)和 750-530(8 通道 DO,24V DC)为例,配置的核心是确认模块在机架中的位置、通道数量以及过程映像中的字节偏移。

在 CODESYS 或 WAGO I/O PRO 中,模块配置通常表现为设备树:控制器节点下挂 K-Bus 扩展模块,每个模块展开后显示其输入/输出通道。配置时需要关注三点:

  • 模块顺序与地址映射:过程映像地址按模块插接顺序自动递增。例如第一个 750-430 占用输入字节 0,第二个 750-430 占用输入字节 1;DO 模块同理占用输出字节。若中间插入模拟量模块,数字量模块的字节偏移会相应后移。
  • 通道极性:DI 模块通常为漏型/源型兼容,需根据现场传感器类型(PNP/NPN)确认公共端接线。DO 模块为高边输出,输出高电平为 24V DC。
  • 诊断与状态:部分模块支持通道级诊断,可在配置中启用短路、过载检测,并将诊断状态映射到输入过程映像的额外字节。

配置完成后,建议在变量表中为每个通道建立符号名,例如 DI_StartBtn AT %IX0.0 : BOOL;、DO_Valve AT %QX0.0 : BOOL;,这样后续编程可读性大幅提升。

二、信号滤波

现场按钮、机械触点、长线缆容易引入抖动和干扰,导致 DI 信号在毫秒级内多次跳变。WAGO 数字量输入模块通常内置硬件滤波,滤波时间常数可通过模块参数设置,常见档位为 0.2ms、1ms、3ms、10ms、20ms。滤波时间越长,抗干扰能力越强,但响应延迟也越大。

选择滤波时间的原则是:滤波时间应大于抖动持续时间,但小于工艺允许的最小信号宽度。例如机械按钮抖动约 5~10ms,可选用 10ms 或 20ms 滤波;而高速计数或编码器信号则需选用 0.2ms 或关闭滤波。

除了硬件滤波,软件端也可做二次确认。例如在 PLC 程序中用定时器对输入信号做 20ms 延时确认:

// 软件滤波示例:输入信号需稳定 20ms 才被确认
TON_1(IN := DI_StartBtn, PT := T#20ms);
IF TON_1.Q THEN
    StartBtn_Filtered := TRUE;
ELSE
    StartBtn_Filtered := FALSE;
END_IF;

硬件滤波与软件滤波可叠加使用,但总延迟为两者之和,需在响应时间预算中一并考虑。

三、强制输出

强制输出(Force)是调试和排障的重要手段,它允许工程师在不修改程序逻辑的情况下,直接把某个 DO 通道置为 ON 或 OFF。WAGO 控制器在 CODESYS 中支持两种强制方式:

  • 强制值(Force Value):将变量强制为指定值,程序无法覆盖,直到取消强制。
  • 写入值(Write Value):一次性写入,程序下一扫描周期可覆盖。

强制输出常用于:确认执行器接线是否正确、检查电磁阀是否动作、验证输出模块通道是否损坏。操作时需注意:强制期间程序逻辑对同一通道的写操作会被忽略,因此强制结束后必须及时取消,否则可能造成设备误动作。建议在强制前先确认现场安全,必要时断开执行器负载或切换到手动模式。

强制输出会绕过程序逻辑直接驱动现场设备,操作前必须确认设备处于安全状态,并通知相关人员。调试完成后应立即取消所有强制。

四、点动调试

点动(Jog)调试是验证 DO 通道与执行器对应关系的最直接方法。典型做法是:在 HMI 或调试界面上为每个 DO 通道设置一个点动按钮,按下时输出 ON,松开时输出 OFF。这样工程师可以逐个确认“哪个输出对应哪个电磁阀/指示灯”。

点动调试的推荐流程:

  1. 确认控制器处于停止或手动模式,现场设备处于安全状态。
  2. 在变量表中找到目标 DO 变量,或通过 HMI 点动按钮触发。
  3. 观察执行器动作,同时用万用表测量输出端子对 0V 的电压,正常应为 24V DC。
  4. 记录通道与执行器的对应关系,形成 I/O 清单。
  5. 全部通道确认后,取消点动,恢复自动模式。

点动调试中常见问题包括:输出指示灯亮但执行器不动作(负载接线或电源问题)、多个输出同时动作(地址映射错误)、输出无法关闭(强制未取消或程序双线圈)。排查时应先看模块 LED,再测端子电压,最后查程序逻辑。

DI/DO 信号链与调试路径 现场输入设备 按钮 / 限位 / 接近开关 PNP / NPN 传感器 24V DC 电平信号 DI 模块 750-430 8 通道 · 24V DC 硬件滤波 0.2~20ms 过程映像 %IX0.0~0.7 WAGO 控制器 CODESYS 程序 软件滤波 / 逻辑运算 强制 / 点动控制 DO 模块 750-530 8 通道 %QX0.0~0.7 执行器 继电器/电磁阀 指示灯 调试与验证路径 ① 模块配置 确认地址映射 建立符号变量 ② 信号滤波 硬件 10~20ms 软件 TON 确认 ③ 强制输出 Force ON/OFF 验证通道对应 ④ 点动调试 逐通道确认 记录 I/O 清单 判断:执行器动作与通道一致? 是 → 记录清单;否 → 查接线/地址/强制状态 关键参数 滤波时间 0.2 / 1 / 3 / 10 / 20ms 输出电平 24V DC / 0.5A 过程映像 %IX / %QX 字节 强制状态 调试后必须取消

五、综合示例:一个按钮控制一个电磁阀

假设现场有一个启动按钮接在 750-430 的通道 0(%IX0.0),一个电磁阀接在 750-530 的通道 0(%QX0.0)。要求按下按钮电磁阀得电,松开按钮电磁阀失电,且按钮信号需 20ms 滤波。

// 变量声明
VAR
    DI_StartBtn AT %IX0.0 : BOOL;   // 启动按钮
    DO_Valve    AT %QX0.0 : BOOL;   // 电磁阀
    TON_Filter  : TON;              // 软件滤波定时器
    Btn_OK      : BOOL;             // 滤波后信号
END_VAR

// 软件滤波
TON_Filter(IN := DI_StartBtn, PT := T#20ms);
Btn_OK := TON_Filter.Q;

// 输出控制
DO_Valve := Btn_OK;

调试时,先在 CODESYS 中监控 DI_StartBtn 和 Btn_OK,按下按钮观察两者是否在 20ms 后同步为 TRUE;再监控 DO_Valve,确认输出通道 %QX0.0 的 LED 点亮;最后用万用表测量 DO 模块通道 0 端子对 0V 电压,应为 24V DC。若 LED 亮但电磁阀不动作,检查电磁阀供电和接线;若 Btn_OK 不变化,检查 DI 模块滤波参数是否设置过大或按钮接线是否正确。

建议在调试阶段建立一份 I/O 清单,记录每个通道的符号名、地址、现场设备、正常状态和备注。这份清单在后续排障和程序维护中价值极高。

掌握 DI/DO 模块配置、信号滤波、强制输出和点动调试这四项技能后,数字量编程的绝大部分现场问题都可以被快速定位和解决。关键在于:配置阶段确保地址映射正确,滤波阶段平衡抗扰与响应,强制和点动阶段始终把安全放在第一位。