2. 灌装机PLC数字量输入抖动导致计数错误诊断

问题定位:从“计数偏大”反推抖动来源

灌装机出口的瓶计数通常由一只光电(或接近)开关给出脉冲,PLC 数字量输入模块采集上升沿后由计数器累加。当输入信号在阈值附近抖动时,一次真实过瓶会被 PLC 识别成多个上升沿,表现为产量统计偏大,而机械计数或人工抽检数量正常。排查的关键不是先改程序,而是先确认“抖动是否真实存在于输入端子”,再决定用滤波还是逻辑修正。

本例的现场条件设定为:计数传感器为 PNP 型光电开关,接 PLC 数字量输入通道 DI0.3,模块输入滤波时间当前为默认 6.4 ms,计数器在 OB1 中每个扫描周期检测上升沿并累加。故障现象为每班统计比实际多 3%~8%,且抖动在输送带高速段更明显。

瓶计数信号链与抖动传播路径 光电开关 PNP / 24V DI0.3 端子 现场接线点 输入滤波 当前 6.4 ms 可调 0.1~20 ms 上升沿检测 OB1 每周期 P_TRIG / 边沿位 瓶计数器 产量统计 偏大 3%~8% 端子处实测波形(在线趋势记录) 1 0 真实过瓶 阈值附近抖动 1 次过瓶 → 3 个上升沿 滤波后 判读要点 • 抖动宽度 < 滤波时间 → 可被滤除 • 抖动宽度 > 滤波时间 → 仍会产生假边沿 • 滤波过大 → 高速过瓶漏计,需与节拍匹配 • 先确认端子波形,再改参数,避免掩盖接线问题 诊断与处置分支 端子波形有抖动 → 查屏蔽/接地/供电 抖动窄于滤波窗 → 提高滤波时间 抖动宽于滤波窗 → 加去抖逻辑/延时确认 计数逻辑修正 → 最小脉宽 + 单次触发

在线趋势记录:先拿到端子处的真实波形

不要直接在程序里加计数修正,否则会把接线或干扰问题掩盖掉。正确顺序是:在 PLC 编程软件中打开在线监视/趋势记录功能,把 DI0.3 的输入状态(或对应过程映像位)加入趋势,采样周期设为 1~2 ms,连续记录 30 s 以上,覆盖输送带高速段。观察三件事:

  1. 一次真实过瓶对应几个上升沿;
  2. 抖动脉冲的典型宽度(用趋势光标测量高电平持续时间);
  3. 抖动是否与变频器启停、电机接触器动作时刻相关。

本例设定实测结果为:单次过瓶在趋势上出现 2~4 个上升沿,抖动高电平宽度约 1.5~3 ms,且集中在输送带变频器加速段。该宽度小于当前 6.4 ms 滤波时间,说明滤波参数本应能滤除,但计数仍偏大,提示滤波可能未生效或计数逻辑在滤波前取边沿。此时需核对模块滤波参数是否真正下载到硬件组态,以及程序中边沿检测使用的是过程映像位还是直接 I/O 访问。

若趋势记录显示抖动宽度大于滤波时间,单纯加大滤波会带来高速过瓶漏计风险。此时应优先处理干扰源(屏蔽层单端接地、传感器供电与变频器动力线分开走线),再配合逻辑去抖。

滤波参数调整与计数逻辑修正

确认硬件组态中的输入滤波时间已正确下载后,将 DI0.3 的滤波时间由 6.4 ms 调整为 10 ms(需小于最短真实过瓶脉宽,本例真实脉宽约 25 ms,余量充足)。同时在程序中把“裸边沿计数”改为“最小脉宽确认 + 单次触发”逻辑,避免滤波后残余窄脉冲仍被计数。以下为 OB1 中的计数逻辑示例(梯形图对应的结构化文本表达,变量名按本例定义):

// 变量定义(本例)
// "DI_Bottle"     : Bool;  // DI0.3 过程映像位
// "TonDebounce"   : TON;   // 去抖定时器,PT = 8 ms
// "EdgeMem"       : Bool;  // 边沿记忆位
// "BottleCount"   : DInt;  // 瓶计数
// "PulseValid"    : Bool;  // 有效脉冲标志

// 1) 最小脉宽确认:信号持续为 1 达 8 ms 才认为有效
"TonDebounce"(IN := "DI_Bottle", PT := T#8ms);
"PulseValid" := "TonDebounce".Q;

// 2) 仅在有效脉冲的上升沿计数一次
IF "PulseValid" AND NOT "EdgeMem" THEN
    "BottleCount" := "BottleCount" + 1;
END_IF;
"EdgeMem" := "PulseValid";

// 3) 信号回落后复位去抖定时器输入条件(TON 自动复位)
// 说明:TonDebounce 的 IN 直接取 DI_Bottle,回落后 Q 自动为 0

该逻辑的要点是:去抖定时器要求输入连续为 1 达到 8 ms 才输出有效脉冲,抖动产生的 1.5~3 ms 窄脉冲无法通过;有效脉冲再经边沿记忆只计一次,避免同一过瓶被重复累加。8 ms 的取值需小于最短真实过瓶脉宽(本例约 25 ms),否则会漏计。

验证与通过条件

调整后重新下载硬件组态与程序,按以下方式验证:

  • 趋势复核:再次记录 DI0.3 与 PulseValid,确认抖动段 PulseValid 保持为 0,真实过瓶段 PulseValid 出现单个脉冲;
  • 计数比对:连续运行 30 min,用机械计数器或人工抽检数量与 BottleCount 增量比对,偏差应 ≤ 1 瓶/30 min;
  • 高速段验证:在输送带最高速工况下重复上述比对,确认无漏计(计数不小于实际数量);
  • 干扰复现:启停变频器 3 次,观察计数是否出现异常跳变,验证干扰源处理效果。

若验证后仍有偏差,回到趋势记录区分是“残余抖动未被滤除”还是“真实脉宽过窄被误滤”,前者继续处理干扰与屏蔽,后者需下调滤波时间或改用更高响应频率的传感器,而不是继续加大滤波。

现场经验:计数偏大优先怀疑输入抖动与重复边沿,计数偏小优先怀疑滤波过大或传感器响应不足。两类问题的处置方向相反,先用趋势记录定性,再动参数。