实战案例二:流水线计数错误——高频LED灯光频闪干扰对射式传感器

大家好,我是老张。今天聊一个我当年在食品包装线上踩过的坑。

那是一条饮料灌装线,每分钟跑120瓶。客户反映计数总是多出来几个,有时候一天下来能差上百瓶。生产主管急得直跳脚,说这库存对不上,月底没法盘账。

我到现场一看,用的是对射式光电传感器,型号是欧姆龙的E3Z-T61。发射器和接收器隔着传送带对好光,瓶子过去就遮光,输出一个脉冲。按理说挺成熟的方案,怎么会多计数呢?

问题现象:计数比实际多,而且不稳定

我让产线先跑了一百个瓶子,手动数一遍。结果传感器报了103个。多出来的3个,不是每次都出现,有时候多2个,有时候多5个。你想想看,这要是跑一天,误差就大了。

我习惯先看波形。用示波器夹住传感器输出端,让产线空跑——就是传送带转着,但没有瓶子通过。结果你猜怎么着?示波器上居然有脉冲信号!

嗯,问题就出在这儿。没有瓶子遮挡,传感器不应该有输出。那这些脉冲是哪来的?

核心结论:干扰源是车间顶棚的LED照明灯。这些灯用的是PWM调光,频率在1kHz到2kHz之间。对射式传感器的接收器误把灯光闪烁当成了光束被遮挡。

干扰机理:为什么LED灯能骗过传感器?

说白了,对射式传感器的工作原理很简单:发射器一直发光,接收器一直收光。一旦有物体挡住光线,接收器收不到光,就输出一个信号。

但LED灯的PWM调光,会让灯光以人眼看不见的频率快速闪烁。当这个闪烁频率落在传感器响应带宽内时,接收器会误以为光线被周期性遮挡了。

我举个例子。假设LED灯以1kHz的频率闪烁,也就是每1毫秒亮灭一次。如果传感器的响应时间小于1毫秒,它就能捕捉到这种变化。每次灯灭的时候,接收器就以为有东西挡住了,于是输出一个脉冲。

我的经验:遇到这种问题,别急着换传感器。先拿手机摄像头对着LED灯看——如果屏幕上有明暗条纹滚动,说明这灯确实在频闪。这是最快速的现场诊断方法。

解决方案:三种思路,我推荐第二种

当时我给了客户三个方案,各有优劣。我直接说结论:

方案 做法 优点 缺点
方案一:换传感器 改用调制光型对射传感器 彻底解决频闪干扰 成本高,需要更换发射器和接收器
方案二:加延时滤波 在PLC程序里做软件滤波 零成本,不改硬件 可能影响高速计数精度
方案三:改照明 换成无频闪的LED灯或直流供电灯 从源头消除干扰 涉及车间改造,工期长

我个人习惯优先考虑软件方案,因为不用动硬件,客户也容易接受。但这里有个前提——你的PLC扫描周期要够快。

实战代码:西门子S7-1200的软件滤波

我当时用的是西门子S7-1200,写了一段简单的延时滤波逻辑。核心思路是:只有信号持续稳定超过5毫秒,才认为是有效计数。

// 伪代码逻辑,适用于大多数PLC
// 输入:Sensor_In (传感器原始信号)
// 输出:Count_Pulse (有效计数脉冲)

// 定义变量
VAR
    Filter_Time : TIME := T#5MS;  // 滤波时间5毫秒
    Pulse_Timer : TON;            // 接通延时定时器
    Last_State  : BOOL := FALSE;  // 上一次的传感器状态
    Count_Pulse : BOOL := FALSE;  // 输出脉冲
END_VAR

// 主逻辑
IF Sensor_In = TRUE AND Last_State = FALSE THEN
    // 检测到上升沿,启动定时器
    Pulse_Timer(IN := TRUE, PT := Filter_Time);
END_IF

IF Pulse_Timer.Q = TRUE THEN
    // 定时器计时完成,且传感器仍为ON状态
    Count_Pulse := TRUE;
    // 这里可以触发计数器加1
END_IF

// 更新状态
Last_State := Sensor_In;

// 复位条件
IF Sensor_In = FALSE THEN
    Pulse_Timer(IN := FALSE);
    Count_Pulse := FALSE;
END_IF

注意:滤波时间不能设得太长。如果瓶子通过传感器的遮挡时间只有10毫秒,你设个8毫秒的滤波,那就把正常信号也滤掉了。我一般取遮挡时间的30%~50%作为滤波时间。

验证结果:计数准确了

加上滤波之后,我又跑了一百个瓶子测试。这次计数是100,一个不多一个不少。连续跑了三个班次,误差率降到了零。

客户问我为什么之前没想到是LED灯的问题。我说,其实很多干扰问题,根源都在我们习以为常的环境里。LED灯省电又亮堂,谁会想到它还能干扰传感器呢?

避坑指南:我曾经在一个项目里,被日光灯的频闪坑过两次。后来我养成了一个习惯——凡是新装的产线,第一件事就是拿示波器看传感器输出波形,确认没有干扰脉冲再投产。这个习惯帮我省了不少售后麻烦。

知识体系:高频LED频闪干扰的核心逻辑

下面这张图,是我自己总结的干扰排查思路。你照着这个流程走,基本不会漏掉问题。

高频LED频闪干扰排查流程图 步骤1:现象确认 计数偏多,空跑有脉冲 步骤2:示波器检测 观察输出波形 步骤3:判断干扰源 LED灯频闪? 步骤4:手机摄像头验证频闪 步骤5:选择解决方案 方案A:换调制光传感器 方案B:软件延时滤波 方案C:更换无频闪灯具

这张图的核心逻辑就一句话:先确认现象,再定位干扰源,最后选方案。别一上来就换传感器,那是最贵的办法。

写在最后

这个案例其实挺典型的。高频LED灯的频闪干扰,在食品、饮料、制药这些行业特别常见。因为车间照明越来越普及LED,而很多老式光电传感器并没有针对PWM调光做优化。

我个人的建议是:新项目选型时,优先考虑带调制光功能的传感器。它们发射的是特定频率的调制光,接收器也只认这个频率,对环境光干扰有天然的免疫力。虽然贵一点,但省心。

好了,这个案例就聊到这儿。下次你遇到计数不准的问题,记得先看看头顶的灯。

专注资料整理