PLC 下载成功了,设备还是不工作?
- 2026-10-12 09:31:38

PLC 下载成功了,设备还是不动作?程序、接线、联锁到底先查谁
上个月一个做输送线的客户,深夜十一点给我打电话。程序改完下载进去,编程软件提示”下载完成”,他点了运行,设备一动不动。
他在电话里说:程序我检查了三遍,逻辑绝对没问题,是不是这块 PLC 有毛病。
我问了他一句:面板上 RUN 灯亮着吗?
电话那头沉默了几秒,他说,好像是灭的。
这一晚上的折腾,本来五分钟就能结束。
下载成功,只说明代码传进去了
很多人把”下载成功”理解成”程序开始跑了”,这是两回事。
编程软件弹出的那个提示,只负责告诉你:代码从电脑传到 PLC 里了,传输过程没出错。至于 PLC 现在是不是在执行这段代码,它管不着。
所以任何一台”下载完了不动”的设备,第一件事不是看程序,是看 PLC 面板。
RUN 灯不亮的原因,现场常见的就三种:
模式开关停在 STOP。 有的 PLC 是硬拨杆,有的是软件里切,改完程序忘了切回 RUN,这个最多见。
程序里有致命错误,CPU 自己停机了。 比如地址越界、除数为零、定时器编号重复。这种情况 ERR 灯会亮,用编程软件连上去读诊断缓冲区,一般能直接看到停机原因和出错的那一行。
上电就报警,压根没进入运行状态。 电池没电、存储卡有问题、扩展模块没识别到,都会卡在这一步。
RUN 灯不亮,你在程序里看半天监控,看到的全是上一次运行留下的残值。等于白忙。

图 1|下载成功 ≠ 程序在跑
先把这条链看明白
确认 PLC 确实在跑之后,再往下查。
一个动作要真的做出来,中间要过五道关,任何一关断了,前面做得再对,设备也不动:
第一关,程序条件。 启动条件、互锁条件、模式条件,有一个没满足,线圈根本不会置位。
第二关,输出置位。 线圈置位了,但可能被后面的程序又改回去了。
第三关,输出端子带电。 程序里 Y0 是 ON,不代表 Y0 端子和 COM 之间真的通了。
第四关,联锁回路导通。 端子有电,但线圈回路里串着的急停、热继、安全门,任何一个断开,电都到不了线圈。
第五关,执行元件动作。 线圈有电了,还得线圈本身没烧、铁芯没卡住。

图 2|从程序到动作的五道关
新手最常见的毛病,是拿到问题就从第一关开始一路往后查,查到第三关的时候人已经乱了。
从中间切一刀,一次砍掉一半
正确的做法是二分。
第一刀切在程序和电气之间,办法很简单:用编程软件强制置位输出点,绕过所有程序逻辑,直接让 Y0 输出。
然后看设备动不动。
动了。 说明第三关到第五关全是通的,电气侧没问题。回头查程序:条件没满足、线圈被后面的语句覆盖、手动和自动抢同一个输出、步序卡在上一步没往下走。
不动。 程序可以先放一边——它就算写得再对,指令也传不到设备上。接着往外查:输出端子有没有电压、公共端接没接、联锁断在哪一处、线圈和铁芯本身有没有问题。
一刀下去,排查范围直接少一半。
强制之前有件事必须先想清楚:这一动会不会撞到机械。 气缸可能正停在半路,转盘可能正卡在工位之间。切手动模式、把速度压到最低、人站在急停边上再动手。真撞了,比原来那个故障贵得多。

图 3|强制输出,把问题切成两半
不动:往外查,先量一个地方
万用表打到电压档,直接量接触器线圈的两个接线柱,A1 和 A2。
三十秒,问题又分成两半:
线圈两端有额定电压,接触器还不吸合。 问题在元件本身。断电,用电阻档量线圈:无穷大是断了,接近 0 是短路了。都正常的话,看线圈侧面印的电压等级对不对——AC220V 和 AC380V 的接触器外观几乎一样,就靠那一行小字区分,现场换备件拿错很常见。再用手按一下动触头,发涩、卡住、弹不回来,就是铁芯锈了或者进了铁屑。
线圈两端没有电压。 问题在回路上,跟接触器没关系,往回查。这一路是大头,七成的问题在这里。
第一个要看的是公共端
PLC 的输出是分组的,每组有自己的公共端,标 COM0、COM1,有的品牌写 1L、2L。
PLC 的输出点本身不供电,它只是一个开关。 内部把 COM 和 Y 接通,电流才能走出去。公共端没接,Y0 在程序里再怎么 ON,端子上也不会有电。
常见错法有三种:忘了接;接错了组(Y0 是第一组的,线却接到 COM1 上);多组共用一个电源,但组和组之间的 COM 没短接。
然后是输出类型和负载对不对
继电器输出(型号常带 R),内部是机械触点,交流直流都能带,AC220V 的接触器线圈可以直接接。缺点是慢、有寿命、发不了高速脉冲。
晶体管输出(型号常带 T),内部是半导体,只能带直流,一般就是 24V。快、能发脉冲控伺服。
拿晶体管输出去接 AC220V 的接触器线圈,轻则不动作,重则把输出点打穿。正确做法是中间加一个 DC24V 的中间继电器过渡。
说句实在的,就算是继电器输出,我也建议带接触器的时候加一级中继。中继几块钱一个,坏了随手换;PLC 输出点烧了,要么换模块,要么改程序挪点位,麻烦得多。
联锁:图上画得清清楚楚,现场根本看不见
这是最容易卡住人的地方,尤其是接手别人做的设备。
接触器线圈回路里,除了 PLC 的输出点,现场往往还串着一堆东西:急停按钮的常闭、热继电器的 96-95、安全门开关、断路器辅助触点、变频器或伺服的报警输出、反向接触器的机械互锁常闭。
这些在电气图上标得明明白白,但现场的线槽一盖,你根本看不出来线圈回路里还串了五样东西。任何一个断开,线圈就没电。

图 4|联锁串在线圈回路里
找断点的办法很笨,但最可靠:从电源端开始,一个节点一个节点往后量电压,量到哪一点电压消失了,问题就在那一点和上一点之间。
热继电器跳闸尤其隐蔽。它的复位按钮很小,跳了以后外观几乎看不出来,得凑近了看,或者直接按一下复位试试。开头那个客户后来还真就栽在这上面——不过那是第二天的事了。
还有一个容易被当成”程序问题”的现象:接触器”哒”一下吸合,松手马上掉。 看起来像是 PLC 输出只给了一瞬间,实际上多半是自锁用的辅助常开触点接触不良,没锁住。这种先查触点,别去改程序里的脉冲逻辑。
动了:回头查程序,重点看这三样
如果强制输出设备能动,那就回来查程序。按这个顺序看,效率最高。
一、输入条件到底满没满足
把启动那一行的所有触点都调出来看监控。哪个是灭的,问题就在哪。
如果监控显示某个输入点没信号,但传感器上的指示灯是亮的,那多半是接线侧的事——传感器类型和 PLC 输入公共端没对上。
NPN(漏型)传感器导通时把信号线拉到 0V,PLC 的 S/S 端要接 24V+;PNP(源型)导通时给出 24V,S/S 端要接 0V。接反了,最典型的两个现象就是:输入灯亮着程序里读不到,或者一个动作两个输入点一起有信号。
先看传感器外壳上标的是 NPN 还是 PNP,再去对 S/S 端怎么接。

图 5|NPN 和 PNP,公共端怎么接
还有一种情况是输入点确实收到了信号,但太短了。PLC 有输入滤波时间,默认一般 10ms 左右,比这更短的脉冲会被直接滤掉。高速信号要么改滤波参数,要么走高速输入点。
二、同一个输出被写了两次
同一个 Y0,程序里出现两次。手动段写了一次,自动段又写了一次。
PLC 从上往下扫描,最后那一次的结果说了算。 前面写 ON,后面写 OFF,实际输出就是 OFF。但你盯着前面那段看监控,会觉得”明明是 ON 啊”。
用编程软件的交叉引用功能搜一下这个 Y 被用了几次,几秒钟的事。西门子博途、三菱 GX Works、汇川 AutoShop 都有,位置不太一样但都能找到。
程序越大越容易出这个,尤其是几个人接手改过的。
根治的办法是改结构:所有输出只在一个地方写。 手动逻辑算一组中间继电器,自动逻辑算另一组,最后统一在输出段里按当前模式选一组送到 Y 上。整个程序里 Y0 只出现一次,这类问题就不会再有。
三、步序卡在上一步没往下走
带流程的设备,程序不动往往不是”没启动”,而是”停在第三步等一个永远不会来的信号”。
所以流程类程序一定要有一个记录当前步号的寄存器,比如 D100。设备不动的时候先看 D100 是几,再去看那一步的转移条件差什么。
没有步号的程序,出了问题只能一行一行翻,这就是为什么老工程师接手别人的程序,第一眼就找有没有步号。
另外几个容易漏的:报警标志位没复位,程序里加了”无报警”才允许运行的条件;原点未确认,定位类程序通常要求回过原点才让自动运行;上一次急停留下的软标志还挂着。这些在 HMI 上都不一定显示得出来。
完整的排查顺序
现场照这个走,基本不会绕远路:

图 6|现场排查顺序
1.先看 PLC 是不是真的在 RUN,RUN 灯、ERR 灯都看一眼
2.量接触器线圈两端电压,分成两条路
3.没电压:沿回路逐点量,重点查急停、热继、安全门、互锁
4.有电压:断电量线圈电阻,看线圈电压等级,手按铁芯试卡滞
5.想快速定位是程序还是电气,强制输出试一下
6.电气都通,回头查程序:输入条件、双线圈、步序卡住
7.以上全正常,才断开外部线量 PLC 输出点本身
一句话:先怀疑回路,再怀疑接触器,最后才怀疑 PLC。
顺序反过来,时间全花在拆线、换模块、改程序上,最后发现是一个常闭触点没复位。这种事我见得太多了。

领取资料
刚入行的朋友,这一类问题会反复碰到。我把常用的 PLC 学习资料整理成了一个包:入门教程、梯形图基础、输入输出接线、常用指令速查表,还有几个能直接上手练的小项目程序。
关注公众号,后台留言:【鼎时】
我把资料发给你。

你在现场碰到最多的,是输出侧不动作,还是输入侧读不到信号?评论区说说,集中的问题我单独写一篇。
下一篇准备讲:PLC 脉冲已经发出去了,伺服为什么一动不动。
#鼎时 #EtherCAT #机器人 #人形机器人 #伺服驱动 #运动控制 #工业自动化 #伺服电机 #PLC #Modbus #RS485