入行3年,我把PLC调试踩过的90个坑,都写成了实战笔记
干了三年多PLC,从最开始连梯形图都画不利索,到如今能独立扛起非标设备的电气调试,这中间踩过的坑比走过的路还多。我一直有个习惯,每解决一个现场问题,就把它记成一条卡片笔记,标注当时的环境、故障现象和排查过程。到现在已经攒了90多条,都是拿真金白银的加班时间换来的。今天把这批笔记整理成文,按编程软件、通讯配置、现场调试、程序架构、电气设计五个方向拆开来讲。内容不绕弯子,每条都是可以直接抄作业的实战经验。
说白了,入行1到3年的PLC工程师,最缺的不是理论,而是“提前避坑”的能力。很多问题你翻手册根本找不到答案,只有亲自在车间里被电锤声吵着、被急停拍过、被甲方盯着改程序,才能记住。下面这些经验,希望能帮你少走点弯路。
1. 编程与软件使用:别让工具成为你最大的障碍
1.1 博途软件装了两个版本,项目直接打不开
刚入行那会儿,我的电脑上装了博途V15和V16两个版本,心想多一个版本多一条路。结果某天客户发来一个V15的项目,双击打开,软件直接提示“项目已由更高版本创建,无法打开”,等我把V15卸了重装,V16又认不出这个项目文件了。折腾了一下午,最后只能远程找客户重新导出。
这里要搞清楚原理:博途不同大版本之间,项目数据结构不兼容,V15的项目V16能打开,但V16的项目V15打不开。而且同一个电脑装多版本,注册表里的组件版本经常互相覆盖。我的建议是,入行头两年电脑上只装一个博途版本,优先选V16或V17,因为主流设备厂商的项目大多基于这两个版本。真遇到老版本项目,用“项目备份”功能让客户导出为低版本兼容格式,别自己在软件上硬试。
另外还有一点很多人忽略,博途安装时选的“语言包”会影响后续注释显示。如果你装的是英文版,打开中文注释的项目,文字会变成乱码。安装时中英文语言包都勾上,项目打开后就能正常显示。
1.2 GX Works2 打开三菱老程序,注释全丢了
三菱PLC的老用户,手头往往有一批用GX Developer写的程序。用GX Works2打开后,注释、注解经常全部丢失,只剩下指令。这不一定是文件损坏,很多情况下是软件转换编码的问题。
老版本GX Developer默认使用Shift-JIS编码,而GX Works2默认用ANSI或UTF-8。打开老程序时,在“工程”菜单里选择“工程属性”,手动指定旧工程的字符编码为Shift-JIS,注释就能正常显示。如果你的三菱程序是FX系列,还要注意GX Works2对FX3U以下型号的支持其实很有限,最好直接用GX Developer V8.103E,稳定,不出幺蛾子。
还有一个小技巧,每次修改老程序前,先“另存为”一份备份,文件名加上日期。老程序很多都是多年前别人写的,里面可能有无意的双线圈、未初始化寄存器,改坏了几乎没有后悔药。
1.3 InoProShop 设置PLC端口号,找半天不知道在哪
台达、汇川的PLC,很多情况下用InoProShop编程。新手最容易卡在“通讯设置”上,不知道去哪里修改PLC的端口号。这里说清楚路径:工具菜单 -> 通讯设置 -> 双击你要连接的设备 -> 修改端口号。注意,这个端口号是电脑访问PLC的TCP/IP端口,不是串口的COM口号。
有个典型的错误是,把COM口号当成了端口号。COM1、COM3是串口编号,和网口通讯的端口号是两码事。如果你用网线连接PLC,需要确认的是IP地址和端口号(默认一般是502或102,不同型号可能不同)。如果连不上,先ping一下PLC地址,通了再检查端口,不通就查网线和IP段,这个顺序能省一半排查时间。
InoProShop还有一个坑,就是它的“在线监视”模式默认不显示软元件注释。你需要在“视图”菜单里勾选“软元件注释显示”,否则看程序时一屏全是寄存器地址,脑子容易懵。
1.4 西门子S7-200 SMART连接不上,IP填对了还是找不到CPU
这是入行必踩的坑。用STEP 7-Micro/WIN SMART搜不到S7-200 SMART的CPU,但用“添加IP地址”能连上,说明问题出在“搜索”机制上。这个搜索功能依赖Windows的发现网络,很不稳定。
解决方案分两步:第一步,手动添加CPU的IP地址,在弹出的窗口里填入PLC的IP和端口号(默认是102);第二步,把电脑的网卡和PLC放在同一个网段,比如PLC是192.168.0.10,电脑就设192.168.0.5。这两步做完,九成能连上。还有一种更隐蔽的情况:S7-200 SMART以太网口的IP,可以通过编程电缆在“系统块”里修改,如果你之前的项目里设置了非默认IP,搜索不到太正常了。
用此方法连不上时,换一根交叉网线试试。现在很多电脑网卡支持自适应,但车间现场用的老交换机、老网线,往往就是差那一根线的事情。
1.5 Codesys网口MAC地址和许可证绑定,重装系统后激活失败
Codesys平台(汇川、信捷、欧姆龙的部分机型都基于它开发)有一个让人头疼的机制:运行时授权绑定的MAC地址和CPU唯一标识。你重装系统或者更换电脑后,原来能用的项目突然提示授权无效,代码无法下载。
遇到这种情况,需要到设备管理器的网卡属性里,把“本地管理地址”设置为原来的MAC地址,代替物理网卡地址。这个方法叫MAC地址克隆,在做Codesys开发时非常实用。另外,Codesys安装时有一个“Device Description”的选项,很多国产PLC的厂家会提供自己的设备描述文件,安装这个才能看到对应的控制器型号。忘了装这一步,你会发现自己怎么都找不到目标设备。
1.6 下载程序时提示需要AMS Net ID和端口号,一脸懵
这个提示源自西门子S7-1500、S7-1200的通讯配置,在下载程序时会要求输入目标PLC的AMS Net ID(6字节网络标识符)和端口号。AMS Net ID不是IP地址,是类似IP加网卡后缀的形式,比如192.168.0.1.1.1。端口号一般固定为102。
新手不知道从哪里找这个值,其实在博途的“在线访问”里可以自动检测,右键点击“可访问设备”->“更新显示”,软件会自动列出目标PLC的AMS Net ID。新建立的连接,手动输入时要注意最后两位通常标识CPU和通讯处理器,不是随便填的。
2. 通讯与组网:设备连不上,一半是配置问题一半是玄学
2.1 一个PLC接两个触摸屏,直接把屏烧了
这个标题大家应该都搜过。答案是:可以接,但要用对方式。很多PLC的通讯口(比如西门子S7-200的PPI口、三菱FX的编程口)只支持单主站,两个触摸屏同时去读这个口,会造成总线冲突,运气差直接把通讯口烧了。
正确方案:从PLC的以太网口(如果有)接交换机,两个触摸屏都走网线连到交换机上;或者用支持多主站的DP口、Modbus TCP方式。老式PLC只有一个串口,那就只能“一主一从”或“主从轮询”,两个屏轮流通信,效率极低,而且容易掉线。
我实际做过一个项目,两台威纶通触摸屏同时读一台三菱FX3U,采用COM1口的“链路通信”才能同时访问,端口分配写成“链接继电器+链接寄存器”配合使用。如果只用默认参数,第二台屏读到的数据全是0,一度以为屏坏了。
2.2 台达PLC下载程序,线连上了但一直提示通讯超时
台达PLC的编程口兼容性很挑线。原装编程线用的是专用芯片,几十块的USB转串口线用不了,或者动不动就报超时。这不是设置问题,是电平转换芯片不兼容。
我的建议是直接买一根台达原装USB编程线,或者选择基于CH340芯片的兼容线。用普通USB转485线时,必须确认跳线帽打在“CVM”侧还是“RS232”侧,接反了必然通讯超时。还有一个容易被忽略的点:台达PLC的通讯参数在“HMI属性”里设置,默认波特率9600、数据位7、偶校验、1停止位,软件里改过,HMI也要对应改,两端不一致就会显示“通讯错误”。
2.3 博途PLC与模拟屏不兼容,画面怎么都传不上去
博途平台的PLC(如S7-1200/S1500)和第三方模拟屏通讯,最常见的问题就是网口协议不匹配。博途PLC默认只开放标准的S7协议,老款模拟屏用的是PPI或MPI协议,自然不通。
解决办法:更换为PROFINET协议端口,并在触摸屏的驱动里选择“Siemens S7-200/TCP”或者“S7-1200/TCP”,对应输入PLC的机架号和槽号。S7-1200通常机架0、槽1,S7-1500机架0、槽0。不要凭经验填4,有个客户的项目我检查半天,就是槽号填错了,画面连不上。另外要留意博途组态里的“连接机制”:如果勾选了“仅支持PG/PC和HMI通信”,第三方屏就无法访问,必须取消这个限制。
2.4 森兰变频器和S7-200 SMART通讯,数据一直在跳动
西门子S7-200 SMART和森兰SB200变频器走Modbus RTU通讯,常见的故障就是数据跳动、偶尔断开。这类变频器支持Modbus RTU,但默认通讯地址区映射和西门子的保持寄存器地址对不上。
排查顺序:先用串口调试助手单独读变频器地址,确定寄存器值正常稳定;再检查PLC程序里的轮询时间,变频器多个参数不能一次性读全,分开轮询,每个参数间隔5-10ms;最后检查变频器的通讯参数:从站地址1、波特率9600、数据格式8-N-1。把“双字顺序”改为“高字在前”(有些变频器是低字在前),数据就不会颠倒了。
2.5 AB PLC的编程软件,装完直接蓝屏
Allen-Bradley的Studio 5000安装包巨大,很多新手装了之后开软件就蓝屏,实际上大部分是兼容性问题和授权的驱动冲突。Studio 5000对Windows版本要求很苛刻,Win10家庭版、精简版系统基本装不上,一定要专业版。还有,RSLinx Classic和FactoryTalk View的版本如果不匹配,也会导致蓝屏。
解决思路:先把系统更新到最新,再关闭杀毒软件安装,最后按版本兼容矩阵装软件(官方文档里能查到)。软件装好后,优先使用“以管理员身份运行”。AB系列PLC的通讯套路和西门子完全不同,需要先在RSLinx里配置驱动,选择EtherNet/IP驱动,再填PLC的IP。没有RSLinx驱动,换谁都连不进去。
2.6 润滑电机启动后3秒,主轴电机才运行,停止时主轴先停、4秒后润滑才停
这个描述听起来是一个延时顺序控制逻辑,本质上是电机顺启逆停要求。程序里用了两个定时器:正序启动时,T1延时3秒导通主轴;停止时,T2延时4秒切断主轴电源,先保证主轴停稳,再停润滑。这种逻辑在机床控制中非常普遍。
实现方式有两种:一是用定时器加中间继电器(或PLC内部M点)完成;二是用状态机编写启停流程,判断启动信号、停止信号和运行状态。建议新手用后者,逻辑清晰,现场调试改条件也方便,不会出现“改一个定时器,另一段逻辑跟着乱”的情况。
3. 现场调试与故障处理:真实车间里的血泪教训
3.1 温度PID波动温差大,调节PID参数就三个步骤
这是网上热搜最狠的一个:PLC温度PID波动温差大如何调节。PID调节的核心动作就三个:先调P,再调I,最后动D。很多人一上来就三个参数一起改,调个通宵也调不好。
我的经验是,温度对象是典型的大惯性系统,先把积分I放得很小(甚至先改为0),只保留比例P,设定目标温度,观察实测值。如果超调太大,把P减小;如果响应太慢,把P增大。逐渐找到临界振荡点(就是测量值出现周期性波动但幅度不增大的状态),记录这个P值,再引入积分I,把I设在临界周期的二分之一到三分之一。微分D在温度系统中一般可以不加,加上反而容易引入高频噪声。
举一个真实案例:一个热处理炉,原来P=30、I=5、D=0,波动达±12度。我只把P调到18,I调到1.8,波动降到±3度以内。整个过程半小时,而设备原来被调试了一周。模拟量滤波时间参数如果设得太大,也会让PID反应迟缓,误以为温度不上来。滤波器时间常数应小于PID采样周期的1/4。
3.2 软启动器一拖三接线实物,看着简单却容易炸
“PLC控制软启动器一拖三”是工控热搜的高频词。所谓一拖三,就是一台软启动器轮流启动三台电机。电气接线上,软启动器输出端接的是一个接触器切换组,三个接触器分别接三台电机,且要保证“先切换后启动”,绝对不能带载切换。
最关键的是控制逻辑:任何一台电机正在运行时,绝对不能操作接触器切换。PLC程序里要把切换条件写死——软启动器启动信号必须断开,再延时200ms,才允许动作切换接触器。我曾经见过一个现场,调试人员贪快,没有做互锁,结果切换时拉弧,把软启动器的可控硅模块炸了,几万块的设备说没就没了。
接线实物中,接触器的辅助触点要接回PLC输入,做反馈确认。程序里读不到“切换完成”信号,就不给出启动指令。这样虽然麻烦一点,但安全性大大提升。
3.3 S7-PLCSIM Advanced下载程序时提示保护机密PLC组态数据的密码出错
好多人在用S7-PLCSIM Advanced仿真时,下载程序会弹出“保护机密PLC组态数据的密码时出错”。这通常是在博途中勾选了“保护PLC的组态数据”选项,仿真器无法读取加密数据。
解决办法很简单:在PLC属性 -> 保护与安全 -> 勾选“允许从远程进行完全访问”(或者取消组态数据的加密)。还有一种情况是仿真软件的版本和博途版本不一致,比如博途V16却装了S7-PLCSIM Advanced V4.0,两者不兼容,也会报这个错。务必核对版本对应关系。
3.4 非标项目调试实战:第一次去客户现场,三小时没跑通程序
非标设备调试,核心考验的是排查链路的能力。刚到现场,控制柜通电,PLC的RUN灯亮,HMI显示“通讯错误”。不要急着改程序,先按顺序来:网线通不通、IP通不通、端口通不通、HMI的驱动程序对不对。这一套查完,80%的问题都能定位。
另一类高频问题是急停回路。非标设备一般都有急停按钮,串在安全回路里,但调试时往往被短接或没接。如果PLC的输入点里找不到急停信号,程序肯定运行不下去。每个非标项目,我到了现场第一件事:把所有安全输入点用手动万用表量一遍,确认信号到了哪个模块。信号没到,程序改再多也没用。
调试时要有“分块”意识,把程序按功能拆成几段:手动模式先测气缸、电机、阀;自动模式再测流程。千万别一上来就全自动跑,出了乱子根本不知道是哪段逻辑引发。
3.5 十字路口红绿灯PLC程序,看似简单但状态机容易写乱
红绿灯程序是PLC入门的经典课题,也常被用作毕业设计。它看着简单,但用梯形图写状态跳转时,稍不小心就把绿灯和红灯同时点亮。推荐用步进指令(三菱的STL、西门子的SCL)编写,核心思想是“任何时刻只有一个状态位为ON”。
我写过一版比较稳的方案,用S0~S7八个状态位表示“南北绿灯、南北黄灯、东西绿灯、东西黄灯”等,每个状态结束用定时器T0~T7触发切换。注意无论“东西方向红灯”还是“南北方向红灯”,都必须由对方方向的绿灯状态去触发,不允许红灯作为主动状态输出。这样能从根本上避免双方向同时放行的逻辑漏洞。
4. 程序架构与逻辑设计:写得好的程序,三个月后自己还能看懂
4.1 程序里到处都是M点,改一个功能要翻遍几十个网络
见过太多的程序,全部逻辑散落在一堆M0、M1、M10里面,没有任何注释和分组。这种程序调试时简直是灾难,排查问题只能靠在线监控一个点一个点追踪。
推荐做法:把M区域按功能块分段规划,比如M0~M19用于设备状态、M20~M39用于流程控制、M40~M59用于报警信息、M60~M99作为通讯转换区。每一段在程序最开头加注释框说明用途,在梯形图网络标题里写明对应设备名。这样维护时,一个点对应一段业务,改起来有据可查。用“符号表/变量表”代替直接地址编程,这是现代PLC编程的基本功,绝对不是浪费时间。
4.2 轴定位控制时,旋转方向偏移导致工件压坏
三菱PLC的定位控制,常见的坑是“相对定位”和“绝对定位”用混。比如从原点出发,工件在正方向100mm处,你用了相对定位指令DRVI,设定-100,结果机器往反方向猛进,直接压坏治具。
建议所有绝对位置用绝对定位指令DDRVA,相对位置用DRVI,并且要在程序里加“当前位置软限位”判断。定位控制之前,先执行原点回归,原点回归过程中,正负极限开关要接入PLC的急停回路,不能只靠程序判断,否则原点开关失灵时照样飞车。
4.3 润滑电动机逆启顺停,定时器一个都不能少
回到“电机顺启逆停定时器”这个话题,核心逻辑是:启动时需要润滑油先到,停止时需要主轴先停。生产设备中常见的是“顺启逆停”与安全联锁结合。
在梯形图里,启动支路用保持(SET)输出,停止支路用复位(RST)输出,配合两个定时器实现先启辅机、再启主机;停止时先停主机、延时停辅机。这比用简单自锁回路更可靠,因为自锁回路在突然断电恢复后,可能会“自动重启”造成安全事故。如果担心突然断电恢复的问题,记得在程序开头加“首次扫描复位”逻辑,把关键设备的输出全部复位到安全状态。
4.4 PLC梯形图符号,很多人看不懂到底哪个是常开哪个是常闭
梯形图符号看起来简单,但在现场被人问得最多的就是:常开触点和常闭触点看混了。常开触点符号是“两条竖短线”,常闭符号是“两条竖短线中间加一斜杠”。这跟物理继电器图很像,但PLC里的常开常闭是针对“输入信号”的逻辑状态,不是真实接线的通断状态。
举个例子,急停按钮接入PLC时通常接常闭触点,信号正常时为1;急停按下,信号变0。梯形图里用的却是常开触点去判断急停是否释放。如果这一层逻辑想不明白,现场故障排查就会绕很多弯路。任何时候都记住:PLC程序判断的是“电位”,不是“机械动作”。
4.5 用AI生成PLC代码,能用在关键设备上吗
现在热搜里出现了“AI PLC代码生成”,很多人问这靠不靠谱。我的看法是:AI能帮你生成框架性的、模式固定的代码,比如电机启停、延时控制、红绿灯逻辑、Modbus报文组帧,这些它有足够多的标准答案。但要它写一个带安全联锁和故障恢复的非标流程,它往往会在你没有明说的边界条件下翻车。
用AI生成的代码,必须自己逐条核对变量地址、输入输出映射、安全逻辑。没有经过充分测试之前,绝对不能直接下载到生产设备。最好在仿真器或备用PLC上跑三天再说。AI是加速器,不是替你写程序的人。
4.6 重力浇注线主轴与润滑联锁的“延时停止”设计
这里回到车间里常见的一个需求:系统停止,主轴先停,4秒后润滑再停。为什么这样设计?因为主轴带着大惯量负载,断电后还在靠惯性旋转,此时如果立刻停掉润滑,轴瓦会因为没有油膜而干磨烧毁。4秒的延时就为了让主轴转速降到安全范围。
用PLC实现时,停止信号触发主轴接触器断开,同时启动断电延时定时器T(4秒),然后断开润滑输出。如果现场主轴刹车制动更快,可以按实际停车时间调整到3秒、5秒,但必须留足余量。控制程序逻辑简单,但这条经验背后的原理,很多年轻工程师没有考虑。
5. 电气设计与选型:图纸没画对,后面全是痛苦
5.1 一个PLC能接多少个输入输出,不是看点数而是看带载能力
新手常常只关注“点数够不够”,忽略了输出模块的驱动能力。一个普通继电器输出模块,每一路触点电流上限一般是2A,这个2A是指阻性负载;如果驱动的是交流接触器线圈,启动冲击电流能到额定电流的3倍以上,直接导致触点黏连。
针对这种情况,输出端最好加中间继电器转接。PLC输出接中间继电器线圈(约0.5W),再由中间继电器触点去控制接触器。这样既保护了PLC输出点,又方便更换。工业现场“PLC输出点烧毁”的故障,有七成是省了中间继电器。
5.2 模拟量模块的量程设置错了,温度显示全在乱跳
S7-200 SMART的模拟量模块默认量程是0~20mA,但很多温度变送器输出4~20mA。如果你没有在模块配置里把量程改为4~20mA,软件里读到的数值就会偏到负值或最小值,一连串乱跳。
模拟量信号的转换公式要学会:实际工程量 =(原始值-偏移量)×(工程量范围/数字量范围)。比如4~20mA对应0~100度,PLC读取的原始值范围若为5530~27648,那4mA对应的原始值就是5530,不是0。这个偏移量不减去,算出来的温度永远是负的。现场所有模拟量显示异常,第一步先观察原始值,原始值正常再查程序换算,顺序别反了。
5.3 开关电源容量计算失误,24V电压被拉到18V
给PLC、HMI、传感器供电,用的是24V开关电源。很多人不知道电源容量怎么算,结果把设备一接上,电压被拉到18V,传感器全部低电压报警,PLC模块连启动都困难。
估算公式:所有输入模块消耗(要看具体品牌手册,一般一个输入点几毫安)+ 输出继电器线圈(按0.5~1W/只计算)+ 触摸屏(约20W)+ 传感器(按实际电流累加),再乘以1.2的余量系数。举个例子,一台设备有8个输入点(假设8×5mA=40mA)、4个输出中间继电器(4×0.5W≈80mA)、1个7寸触摸屏(约20W/24V≈0.83A)、10个光电传感器(10×10mA=100mA),总电流约1.05A。如果偷懒只买一个1A的电源,铁定不够。建议直接选3A或5A规格,价格差不了几个钱,但能省一堆故障排查时间。
5.4 电机保护用热继电器还是用软启动器
这要按电机容量分。7.5kW以下的电机,用热继电器作为过载保护,简单可靠;7.5kW以上,特别是频繁启动、重载启动场合,建议用软启动器。热继电器的整定电流,按电机铭牌额定电流的1.05~1.1倍设定,调大了失去保护意义,调小了频繁误动作。
现在很多地方直接用变频器带电机,此时热继电器可以省略,因为变频器内部有过载保护功能。但要注意,变频器输出侧的电流检测精度和热继电器不是一回事,参数要按变频器手册的“电机保护”项重新设置,不能全部依赖默认值。
5.5 PLC控制柜布局的5个细节,看着小影响很大
控制柜的布局经验,往往没人教你,只能自己去现场试错。我总结了5条:一是电源线、通讯线、模拟量线要分槽走线,间距至少20厘米,否则变频器的谐波会把模拟量信号干扰成“心电图”;二是PLC的CPU模块和开关电源之间要留足散热空间,很多柜子里PLC被电源烤得烫手,一年后模块死机;三是地线必须走星型接地,不能形成接地环路,否则RS485通讯灯闪但数据乱;四是24V电源的0V端子尽量多点接入公共端子排,避免单个端子压太多线接触不良;五是柜内照明灯要选LED、变压供电,不要直接用220V荧光灯,受潮后漏电保护天天跳。
5.6 PLC型号与变频器的匹配,不能光看通讯协议
很多工程师选变频器,只看通讯协议是不是Modbus就下单。实际上同一个Modbus协议,不同变频器的寄存器映射、字节顺序、校验模式可能完全不同。ABB变频器用Modbus时,寄存器地址从40001开始,但数据格式是“长字高字节在前”,西门子S7-200 SMART默认高字节在后,不调整读取顺序,数值直接错乱。
我用过一个项目,ABB ACS510变频器和西门子S7-200 SMART通讯,频率设定值总是漂移。排查到最后就是字节顺序错位,修改PLC程序里的“字节交换”指令后,数据马上稳定。选型时一定要跟厂家要一份寄存器映射表,并在样机到手后先单独测试通讯,再组合联调。
写在最后的一点体会
90条经验看起来很多,但真正遇到问题的时候,你会发现90条根本不够用。写这本笔记的过程中,我最深的感触是:PLC这一行,坐在办公室画图写程序,永远是“纸上谈兵”,真正值钱的本事都在现场,在那种带着万用表、螺丝刀、抱着笔记本趴在地沟里看接线的时候积累起来的。
我到现在还保持着一个习惯,每次调试完,哪怕已经加班到凌晨,也会在回程的路上打开手机备忘录,把当天解决的问题记两句话。这两个月回看,发现很多当时觉得“天都要塌了”的故障,其实就是某个输入点没接好、某个参数没设置对、某根线松了而已。
如果你也在这行干了1到3年,建议你从现在开始,也给自己建一个“踩坑记录本”。不用写得很正式,拍照、截图、语音转文字都行,关键是坚持。等攒到100条的时候回头看看,你会明显感觉到自己在专业上的成长速度比之前快了一大截。