☰
PLC调试实战:三年90条电气自动化经验,避开编程与干扰坑
2026/10/12 2:50:13 网站建设 项目流程

干PLC这行,头三年能遇到的事,比后面十年加起来都多。这是我入行第四个年头回头看,最真切的感受。从第一天看图纸手都是抖的,到后来能一个人扛整套设备调试,中间踩过的坑,十个手指头数不过来。这个系列文章,就是我给自己这三年复盘出来的90条实战经验,按“图纸选型、程序编写、通信干扰、调试验收、工作方法”这几个板块,每天更新十条左右,今天先把第一梯队整理出来。

我尽量不写教科书里有的东西,只写现场真正用得上的。每条经验都包括场景、怎么处理、为什么这么处理,偶尔还会提一嘴当时交的“学费”。对刚入行的电气工程师、PLC调试工程师、售后工程师来说,这些内容应该能让你少走不少弯路。

1. 图纸、I/O分配与选型:少走弯路的第一关

1.1 先把图纸读明白再动手

很多新人接到项目第一件事就是打开编程软件,这是大忌。我见过太多人程序写了一半才发现输入点不够用、输出点类型不对、传感器NPN和PNP混装,最后只能改硬件,工期全砸在手里。正确顺序应该是先把电气图纸吃透,至少搞清楚三件事:每个输入点接的是什么类型的信号,每个输出点驱动的是什么负载,以及柜内电源分配是否合理。

读图的时候有个习惯很推荐:先看电源走向,再看主回路,最后看控制回路。电源走向决定你上电时从哪一端开始排查,控制回路决定你程序里I/O点位的物理含义。拿到图纸后,我会用荧光笔把每个远程I/O站的供电端子、每个中继的线圈和触点全部标出来,这样到了现场查线能省一半时间。记住一点,图纸上的线号和实际柜内端子号必须一一对应,如果发现不对,宁可先停下来核实,也不要凭感觉往下干。图纸错了,程序再对也动不起来。

1.2 I/O点预留,永远比理论算的多

这是我这三年最大的心得之一。做I/O分配表的时候,新人都喜欢精打细算,192个点正好用完,一个不剩。结果是设备还没验收,甲方就提出来要加两个检测开关、加一个报警灯,你只能现场加远程I/O模块或者改柜内接线,狼狈得很。我现在的习惯是,I/O预留量统一做到15%左右,输入输出都留备用点,同时在图纸上明确标注“备用点接线需通过端子排中间过渡”。

备用点也不是随便留的,最好分散在各个功能区域,不要全部集中在模块末尾。比如一条产线分三个工位,每个工位的输入点都预留两到三个备用通道,这样将来哪个工位加信号就在哪附近接线,线槽不会绕一大圈。还要注意,备用通道在PLC里要预先配好地址但不写入逻辑,等需要的时候直接勾选使用就行。另外,硬件模块的地址拨码或组态分配,一定要做成一张对照表贴在柜门上,方便现场所有人查地址,而不是只有你自己知道。

1.3 输出类型选错,够你折腾半条命

很多小功率设备看着用继电器输出没什么问题,但你如果驱动的是高频动作的电磁阀,或者伺服使能信号,就等着被继电器触点寿命教做人。我统计过现场故障,继电器输出触点烧蚀的案例里有相当一部分是高频动作导致的,触点电压电流没超,但频率上去以后电弧磨损非常快。

选型的基本原则可以这么记:低频开关量、交直流负载都有的,用继电器输出,通用性强;高频动作、小功率直流负载,用晶体管输出;大电流负载则不要在PLC上直接接,务必走中间继电器或接触器放大。晶体管输出分源型和漏型,买模块之前先确认PLC是PNP还是NPN接法,这个搞反了会让整柜传感器全部没法用。我吃过一次亏,设备发到现场才发现输出模块是漏型,而客户现有的指示灯全是源型接法,最后现场加了转换继电器才算解决,多花了两天人工。

1.4 传感器类型统一,会给你少找一堆麻烦

NPN和PNP之争,几乎每个项目群里都有人问。核心逻辑很简单:日系设备喜欢NPN(低电平有效),欧系设备普遍是PNP(高电平有效),而国产设备两种都可能出现。如果你在一个柜子里混装两种类型,图纸和接线都容易乱,而且PLC模块的输入公共端得做不同接法,稍不注意就是烧输入点。

我的建议是,新项目一律统一成PNP,原因无非是断线检测更友好:PNP接法下信号线断线或没信号时,输入点检测到的是低电平,程序里可以通过“该动作时却没有高电平”判断出断线故障;NPN反之,断线和高电平有时候不好区分。此外,采购传感器时最好连品牌型号一起统一,不同品牌的接近开关虽然都是PNP,但检测距离、电压降、响应频率有差异,同一条产线上混用会导致调试时参数不一致,后面够你慢慢调。

2. 程序结构与编程规范:让代码能“读得懂、改得动”

2.1 不管什么PLC,先搭好程序框架再写逻辑

接过好几台别人写的设备程序,最深的感觉是:代码能不能跑是一回事,别人能不能看懂、能不能改,是另一回事。很多人上来就拖指令,写一步想一步,最后程序几百个网络块堆在一起,逻辑跳来跳去,连自己三天后回看都费劲。正常流程是先分层再写码。

对于大中型PLC,我习惯把程序分成“硬件映射层、逻辑控制层、输出映射层”。硬件映射层只负责把物理输入点映射到内部变量,逻辑控制层全部用内部变量做运算,输出映射层再把结果映射到物理输出点。这样的好处是万一某一天甲方把某个传感器从I0.0挪到I2.5,你只需要改映射层,几百行逻辑代码一行都不用动。有人觉得这样多此一举,等你真碰上产线改造就明白有多爽了。

2.2 变量命名带着前缀走,禁止拍脑袋

变量命名这件事,我吐槽过很多次。见过有人给电机启动按钮起名M1,给运行指示灯起名L1,给报警起名ALM1,三个变量放一起根本不知道谁是谁。后来甲方换个人来维护,光靠猜,猜错一个就是设备误动作。命名规范真的得从入行就养成习惯,可以按“位置_功能_类型”的规则来,比如Line1_Conveyor_Run_CMD表示“1号线传送带运行命令”,Line1_Conveyor_Run_Feedback表示“1号线传送带回讯”。

数据类型后缀也建议带上,布尔变量用_CMD、_FBK、_PB(按钮),数值变量用_AI(模拟量输入)、_AO(模拟量输出)、_SP(设定值)、_PV(当前值),这样看程序时一眼就能分辨变量的角色,不用每次都跳转到定义。别嫌麻烦,程序量一大,这种命名规范能救你无数次。

2.3 手动自动切换,别踩“双线圈”的坑

这是新手写PLC最容易犯的错误。同一个输出点,在手动画面上置位了一次,又在自动程序里置位了一次,两个地方都写了线圈输出,这就叫双线圈。PLC扫描是自上而下刷新的,后执行的线圈会覆盖先执行的,结果就是手动状态下的动作可能被自动逻辑瞬间推翻,设备乱动还找不到原因。

我现在写程序,一律用“模式+条件”的集中输出方式。全程序里每个物理输出点只在同一个网络块中输出一次,前面的逻辑层只控制内部软继电器或软变量,汇总到输出层统一处理。手动和自动只是影响内部变量的置位条件,而不会各自去驱动同一个物理输出。这样不仅避免双线圈,而且排查故障时只需要盯住输出层那一个网络块,看变量状态,比满程序搜线圈效率高得多。

2.4 模拟量处理要有“断线保护”意识

模拟量信号不像开关量那样要么通要么断,4-20mA的线断了,PLC读到的数值可能是0mA,也可能是某个漂移值,如果程序里直接用这个值做运算,设备会做出很多匪夷所思的动作。比如一个液位变送器断线,显示0,程序判断液位低,自动打开了补水阀,然后水漫金山。

处理方式不难,但必须养成习惯:量程转换后立即做范围判断。正常4-20mA对应27648(西门子PLC通常)或0-27648,那么小于某个阈值,比如1mA对应的数值,就可以认为信号异常,程序里置一个断线报警位,并且让相关的自动逻辑锁定在安全状态,不更新输出。这样至少不会因为断线引发误动作。另外,模拟量滤波不要一味求稳,滤波时间常数太大,反应会迟钝到让人怀疑程序卡死,我的经验是位置控制类信号滤波系数给小些,温度、液位这类过程量可以适当加大。

2.5 状态机比一堆M点堆逻辑清晰得多

小型设备还好,用M继电器散着写也能凑合,设备一复杂,步进逻辑分叉多的时候,M点方案会写到怀疑人生。我后来全面转向状态机写法:用一个整数变量表示当前步号,步进之间靠转移条件跳转,程序结构一下子变得像流程图一样清晰。

状态机的核心是“每个周期只执行当前步的逻辑,条件满足就切换步号”。写的时候注意:步进切换最好集中在一个区域,不要在几十个网络里东改一个西改一个;步号变化时先做一个短暂的延时或条件确认,防止信号抖动引起跳步;回原点和急停复位这类动作也要用状态机来管理,不然很容易出现“回原点走到一半被人按了停止,然后不知道跑到哪里去了”的局面。状态机的可读性和可维护性,用过的人基本回不去了。

3. 模拟量、通信与抗干扰:现场80%的疑难杂症都在这

3.1 变送器出来先看信号,再谈程序

模拟量不准,很多新人上来就调程序里的偏置、增益,折腾半天还是飘。实际上模拟量链路每一环都可能引入误差,变送器、电缆、PLC模块、地电位差,四者一个不干净,程序怎么调都白费。我现在的排查顺序是:先看变送器供电是否正常,再看信号端电压/电流是否和现场表计一致,然后短接AI模块输入看程序读数是否到满量程,最后才动程序参数。

短接AI端子测满量程这招特别好用。把信号线拆掉,用一根短接线直接短接模块的电流输入正负端,如果程序里读到了20mA对应的满量程值,说明模块这一路是好的,问题出在外围。反之读数不对,可能模块坏了或者通道配置错了。这个方法能快速切割问题范围,不用整条链路挨个猜。

3.2 通信程序别写“死等”,超时是必需品

用PLC和变频器、仪表、机器人做Modbus或Profinet通信的时候,新人是真敢写“等到天荒地老”。比如发一个写命令,然后程序一直等从站回同一个命令码,一旦从站掉线,PLC整个周期就卡在通信轮询里,其他逻辑全部停摆。

通信这一块,正确做法是“先搭个收发框架,再在框架里做超时和重试”。每发送一个请求,记录时间戳,规定时间内没收到响应就置一个通信超时标志,然后把该从站的通信状态置为离线,跳过它继续轮询下一个站,隔几个周期再重试恢复。这样做的话,即使某个变频器彻底断电,PLC的其他控制逻辑也能正常运行,只是画面上报个离线。另外通信数据和实际控制最好做区分:通信数据只放到对应的映像区,控制逻辑用映像区的数据做运算,轮询更新失败时映像区保持上一次的旧值,同时在画面上显示数据刷新时间,这样谁看了都知道数据新不新鲜。

3.3 屏蔽层单端接地,模拟量不再乱跳

模拟量信号在工业现场被干扰,常见表现是数值在小数点后两位乱跳,或者跟随附近大电机的启停变化。很多人第一反应是换屏蔽线,但屏蔽线本身接法不对,换了也白换。屏蔽层接地的原则是:信号侧单端接地,也就是只在PLC柜这一端把屏蔽层接到接地排,传感器那一端屏蔽层悬空。

这么做的原因是避免形成地环路。如果两端都接地,而两端的地电位不完全一致,屏蔽层里就会流过地环流,反而把干扰耦合进信号线。单端接地让屏蔽层变成一根“天线”,把空间耦合来的干扰导入大地泄放掉,不形成回路。实际操作中,剥屏蔽层时要注意不能有细铜丝搭到信号线芯上,最好用屏蔽压接环或冷压端子固定。另外模拟量电缆永远不要和动力电缆绑在同一根线槽里,如果空间受限必须平行走线,间距至少保持20厘米,交叉时要垂直交叉,别平行重叠。

3.4 电源分开接地,共模干扰的锅别全甩给变频器

有时候现场干扰很严重,变频器一启动,模拟量马上飘,全部人都在骂变频器。变频器确实是个干扰源,但很多时候是系统供电和接地方式本身就埋了雷。最典型的是把PLC的开关电源、变频器、继电器线圈全接在同一个开关电源或同一个回路上,变频器母线电流一波动,整个电源被污染。

我现在的标准做法:PLC控制电源、输入信号电源、输出负载电源、变频器主回路电源四级分开,至少控制电源要从进线端单独引一路开关和变压器,变频器电源单独一个断路器。接地方面,PLC的直流24V电源负端和机柜接地排之间用短粗导线连接,但要注意这个连接是否会造成远端设备地环路,根据设备布局判断,不固定的。现场调试时如果实在找不出干扰源,可以拿一个隔离变压器给PLC供电,再把模拟量电源单独用DC-DC隔离模块供电,大多数共模干扰都能压下去。

4. 调试、验收与工作方法:从“能干活”到“会干活”

4.1 调试时先空点后带载,分步锁死问题

设备调试最忌讳一上来就全速跑、全流程试。我是吃过大亏的,某次测试自动流程,程序走到一半设备猛动了一下,一条输送线卡停,才知道有个传感器信号没接对。后来我总结出的调试三板斧:先点动、再单机、后联调。第一步把所有输入信号逐一核对,强制输出逐个看执行机构动作是否正常;第二步在手动模式下单机运行,比如先让传送带走一段、气缸伸到位;第三步才切到自动模式,而且要让节拍放最慢,盯着每个条件是否满足再切换步号。

还有一个技巧,调试时程序里加临时监控变量,比如把当前步号、关键传感器状态、模式标志位,全部集中传到触摸屏的“调试监控页”上。这样跑流程时不需要背着手提电脑满车间追看程序,直接在屏上观察状态跳变就行。等验收完再把调试页删掉或隐藏,但程序里的监控变量可以留着,将来维护也用得上。

4.2 程序注释和版本管理是给三个月后的自己看的

入行头两年我是真不写注释的,觉得程序自己看得懂,结果设备三个月后故障,翻自己写的程序看着跟天书一样,当场社死。后来养成了两个习惯:一是关键逻辑网络块顶部写清楚“这个块做什么、为什么这么做、依赖哪些条件”,二是每次程序修改,都要在程序头部维护一张修改记录表,注明日期、修改人、修改内容、涉及功能。

版本管理也别只靠文件名加个“最终版”“最终版2”,要和甲方确认每次程序改动后同步更新备份,发出去的正式程序统一用“项目名_日期_修订号”命名,同时保留上一次的旧版本。最稳的做法是程序文件夹里放一个“版本说明.txt”,每条改动对应一个程序备份文件,这样万一新版本出问题,随时能回退到改动之前的状态。这个习惯救过我好几次。

4.3 安全回路和机械限位,必须永远站在逻辑之外

和机械工程师配合的时候,你会发现电气上有些“死逻辑”必须在PLC程序里面实现,比如互锁、限位、急停。但有一类东西不能用程序保证,就是安全回路。急停回路的接线必须采用硬接线串联方式,直接切断接触器线圈电源,不经过PLC输出点。这不是对PLC不信任,而是PLC本身有扫描周期、程序可能死机、输出模块可能故障,你不能把安全这件事押在软件上。

机械限位也一样,电气程序里做的软限位只是辅助,真正的硬限位开关必须串在回路中或者独立接入安全继电器。我做过的某台设备,甲方要求程序里因为限位失效要把设备停下来,我当场就告诉他们:程序可以写,但这是最后一道防线,前面必须有硬限位把运动物理切断,否则撞击事故该出还是出。安全回路和逻辑控制分开设计、分开验收,这是底线。

4.4 调试记录写得好,验收和售后都好做

很多人觉得调试记录就是走走形式,实际上它是我交付时最重要的武器之一。每完成一个阶段的调试,把以下内容记下来:各传感器实际动作距离、气缸到位时间、电机启动电流、通信帧正常率、模拟量通道校准值、程序当前版本号和修改时间。这些数据在验收时能帮你快速回答甲方的各种问题,在售后故障时能帮你判断是参数漂移还是硬件老化。

写记录的时候养成随手带相机的习惯,拍下柜内接线细节、端子排照片、传感器安装位置,整理进设备档案。某次远程支持时,甲方描述故障说“有个指示灯不亮”,我翻出调试记录里的照片,发现是某个端子松了,让他们直接去紧那个端子,十分钟解决问题。调试记录其实就是给未来的自己留线索。

4.5 和现场人员沟通,建议把程序逻辑讲成人话

项目调试完了,往往还要给甲方的维修电工或者操作工做培训。这时候把程序里的步进逻辑、互锁关系讲成大白话,比扔给他们一个变量表强得多。比如“自动运行时,门没关好传送带是不会动的”,翻译成程序语言可能是“门开关信号是传送带运行的使能条件之一”。培训时教他们通过触摸屏看当前步号、看报警信息、看I/O监控页面,告诉他们哪些故障可以自己复位,哪些必须打电话。这样能减少大量无效售后。

还有一条特别重要:不要当着操作工的面说“这是程序问题”。哪怕代码真有问题,也先控制系统现象,再回到程序里找原因。现场维护人员的情绪和配合度,直接影响你调试和售后的顺畅程度,这个经验不是技术,但比技术还管用。

5. 这三年踩过最贵的坑与复盘

5.1 改线不改图,等于给自己埋雷

有一次设备改造,我赶时间直接在柜子里改了三根线,想着“图回去再补”,结果改造完第二天客户就报故障,而且故障现象特别诡异:一个阀不该动作的时候动了。查了半天,发现是前一天改线时把一个中继的公共端挪到了另一个电源上,而图纸还是旧版,照着图纸排查根本找不到问题。最后把整个回路重新捋了一遍才定位到。

从那以后我立了一个规矩:现场改线,改一根,当场在图纸上划一根,哪怕用红笔标注一个“现场改线”也行。项目结束统一更新电子版图纸,旧图归档,绝不保留两个版本都当“现行版本”。这一条说给所有同行,能直接避免“图纸一切正常但设备死活不对”的悬案。

5.2 新手常犯的五个低级错误

这三年我自己犯过,也看别人犯过,挑五个最典型的提醒一下。第一个是PLC和触摸屏通信不上,查了半天发现是IP地址不在同一网段;第二个是模拟量模块的通道拨码和软件组态不一致,读出来全是大数;第三个是输出点烧了,因为负载电流超过晶体管输出额定值,没加中间继电器;第四个是程序里两个定时器用同一个编号,互相干扰;第五个是更换传感器后不重新校准,位置偏移导致设备卡料。

这些错误的共同点是:看起来都很小,但每一个都能让你在现场多待两天。我建议入行新人把“查组态、查地址、查接线、查负载、查校准”这五查做成一张上电前的检查表,每次调试前从头到尾勾一遍,能避免大部分低级事故。

5.3 学会看波形和诊断缓冲区,比会背指令重要

很多人学PLC喜欢背指令、背功能块,这个基础当然要,但现场排查故障真正拉开差距的,是会不会使用诊断工具。现在主流PLC基本都带诊断缓冲区、在线监控、变量跟踪、逻辑分析仪这类的功能。比如伺服报警,面板上报代码,很多人直接查手册找对应原因,我习惯同时打开诊断缓冲区看发生报警那一刻的其他关键变量状态,比如位置偏差、速度给定、使能信号、抱闸反馈,几个数据一对照,往往能看出是机械卡死、参数不对还是信号时序问题。

学会用示波器看PWM、看高速脉冲、看通信波形,更是处理疑难杂症的利器。某次设备脉冲输出计数不准,程序怎么看都没问题,后来用示波器一看,发现脉冲信号上升沿有严重振铃,导致计数器把一次脉冲当成了两次。这个故障,你用万用表和程序监控绝对是查不出来的。

6. 写在最后的几句心里话

这90条经验,是我从一到三年这个阶段一点一点攒出来的。现在回头想,很多道理刚入行时前辈也讲过,但人不撞一次南墙是记不住的。如果你刚入行,我的建议很简单:多看、多问、多记、多拆,别怕犯错,但同样的错不要犯第二次。

我也希望这个系列能保持每天更新一条到两条,把这些经验慢慢补完。每个人的现场都不一样,我的经验不一定全能套用,但排查问题的思路、留后路的习惯、和被现场毒打之后总结出来的那点教训,应该是通用的。

最后分享一个我自己一直保留的小习惯:每次解决完一个疑难故障,我会在手机备忘录里用三句话记下来——现象是什么、查了哪些地方、最终是哪个原因。三个月以后回看,这些碎片会变成你最有价值的技术资产。干我们这行,经验就是靠一单一单、一坑一坑攒出来的,共勉。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询