引言
在工控现场摸爬滚打,最怕的不是大故障,而是PLC信号的假动作。 PLC指示灯亮得明明白白;你说它动作了吧,程序里偏偏就是读不到。
最近就有位电工兄弟遇到了一个奇怪的故障:设备上的气缸伸出到位,磁性开关的指示灯亮了,PLC面板上对应的输入指示灯也亮了,但在线监控程序,那个I/O点却是“0”。
他抓狂地发问:“灯都亮了,还能是假信号不成?”
答案可能出乎你的意料:是的,灯亮了,确实可能是假象。 今天我们就来扒一扒,这“亮堂堂”的信号背后,到底藏着什么猫腻。
一、迷惑现象大赏:你以为的“到位”不是到位
先复盘一下现场情况:
1,气缸动作:电磁阀得电,气缸顺利伸出。
2,磁性开关灯亮:气缸活塞上的磁环到位,磁性开关感应到,指示灯亮起。
3,PLC输入灯亮:信号似乎传到了PLC的输入端,输入模块上的LED灯亮起。
4,程序监控崩溃:打开PLC编程软件,监控对应的输入点(如I0.0),状态显示为“0”(OFF)。逻辑链条到这里断了。为什么物理点亮了,程度里面却没反应?
二、揭开真相:“灯亮”为什么不等于“有信号”?
PLC的输入电路远比你想象的复杂。LED指示灯亮,只代表有电流流过了某个节点,但CPU要读到“1”,需要满足更苛刻的条件。以下是四大常见元凶:
嫌疑一:张冠李戴的“地址映射错误”(最容易被忽略)
这是新手和老手都会犯的低级错误。你盯着PLC面板上某个灯亮,理所当然地认为它在程序里就是那个地址。
举例说明: 比如你用的是分布式IO站(如ET200SP或远程模块)。硬件上,你把磁性开关接在了第2个模块的第1个通道(看起来灯亮了)。但在博途的硬件组态里,这个点的实际地址可能是I4.0,而你程序里监控的却是I0.0。你看的灯和监控的点,根本不是同一个!
嫌疑二:信号太“短命”,被PLC滤波器掐断了
现在的PLC为了抗干扰,输入端都设有硬件滤波器(默认可能是3ms~10ms不等)。如果信号持续时间短于滤波时间,PLC会认为这是干扰,直接过滤掉。
举例说明: 气缸动作到位时,由于机械撞击或气压不稳,活塞可能在端点发生了极轻微的“弹跳”。磁性开关瞬间感应到,灯闪了一下(人眼看有视觉残留,以为一直亮)。但这个信号可能只存在了1ms,PLC的滤波器大手一挥:“这点干扰,拒收!”程序自然读不到。
假象揭秘: 指示灯的响应速度和视觉残留效应,骗过了你的眼睛。
嫌疑三:“半残”的虚电压(最阴险)
LED灯是很老实的,只要有几毫安的电流、几伏特的电压,它就能亮。但PLC内部的光耦元件是有门槛的,通常需要达到15V以上才能触发逻辑“1”。
举例说明: 两线制的磁性开关很容易漏电流。或者你的公共端(COM)接线松动、甚至接错了NPN/PNP类型。导致信号线上的电压只有10V。此时,PLC输入端的LED灯因为10V电压微微亮起(尤其是在昏暗的电柜里,看着还挺亮),但光耦根本没导通,CPU认为输入是“0”。
假象揭秘: 灯亮了,但电压没及格。
嫌疑四:硬件光耦击穿或总线通讯丢包
如果排除了以上三点,那可能是硬件本身的锅了。
举例说明: 之前有次雷击或静电干扰,导致PLC输入模块内部LED之后的那个光耦器件半损坏,或者后面的滤波电容短路。LED灯亮了,但信号传不到背板总线。
总线故障: 如果是远程IO,现场模块的灯亮了,但Profinet/Modbus通讯恰好在这个瞬间有轻微丢包或抖动,主站CPU也读不到这个瞬间的状态。
三、破局三板斧:如何逼出“假信号”?
遇到这种灯亮没信号的玄学问题,别急着怀疑人生,按以下步骤逐一击破:
第一斧:万用表量电压,揭开“半残”伪装别看灯,看表!用万用表测量PLC输入端子和COM端之间的电压。 如果是24V系统,信号到位时电压应该接近24V。如果只有几伏或十几伏,绝对是接线问题、开关漏电流或公共端接错。用三线制开关替换两线制开关,往往能药到病除。
第二斧:软件里查地址,别信眼睛不要凭记忆猜地址。打开硬件组态图,找到那个亮灯的物理通道,看它对应的绝对地址是多少。然后再去程序里监控那个真实的地址。 第三斧:调节输入滤波时间,抓“短命鬼”如果电压是实打实的24V,地址也没错。去PLC的硬件组态里,找到该输入通道的属性,把输入滤波时间调到最小(比如0.1ms或取消滤波)。如果调小后程序能读到了,说明确实是气缸动作抖动导致信号过短。解决办法是:在程序里加一个几十毫秒的延时接通定时器(TON),把短信号“拉长”再使用。 结语
在工控世界里,“眼见”不一定“为实”。指示灯亮,只代表物理回路通了;程序读到,才代表逻辑闭环了。
下次再遇到“灯亮了但程序没反应”的玄学事件,先把万用表掏出来,查查组态地址,看看滤波时间。这三板斧下去,再狡猾的“假信号”也得现出原形!