入行头三年谁没被现场折磨过呢。我整理工作笔记的时候发现从画第一张图、接第一台柜子开始积攒下来的经验已经能整理成上百条。这篇就分享我自己总结的90条实战经验主要围绕PLC工程师日常打交道的硬件选型、图纸、编程、调试、故障排查这些环节适合刚入行1-3年、正在车间和现场摸爬滚打的调试工程师也适合准备转行做PLC、想提前了解真实工作内容的朋友参考。虽然会带一些具体的设备和品牌背景但很多底层思路是通用的在不同牌子的系统上都能用得上。1. 硬件与图纸前期多花一小时现场少熬一个夜1.1 选型先算账IO点数、CPU性能与模块搭配很多新同事拿到项目之后的第一反应是打开报价单挑CPU型号其实正确的顺序是先算IO点数。数字量输入输出、模拟量输入输出的数量直接决定了你需要多大的扩展机架、多少个模块、需不需要远程IO。我自己的习惯是数字量输入预留15%余量数字量输出预留15%模拟量通道预留20%。这个余量不是拍脑袋定的是因为现场改动最频繁的就是传感器和执行机构甲方今天加一个检测位、明天加一路控制阀都是常事。等柜子做完了再发现点数不够要么加远程IO模块要么整体换CPU成本和时间都要翻倍。CPU的选型不是只看点数还要看扫描周期需求和运动控制能力。如果你这台设备带四轴以上的插补运动建议直接选带运动控制功能的CPU或者挂独立运动控制器别指望普通逻辑型CPU靠扫描周期去带伺服。PLC的扫描周期是按毫秒计算的普通逻辑控制在几十毫秒内都没问题但伺服轴需要微秒级的插补周期普通CPU根本忙不过来。模拟量扩展模块也需要提前确认分辨率比如温度采集用热电偶或者PT100对应要选热电偶模块或者热电阻模块而不是通用的模拟量模块。这个坑我见过好几次模块到货才发现类型不对交期又长项目直接被卡住。还有一个容易被忽略的问题是模块的功耗和总线供电能力。扩展模块一多背板总线电流就会吃紧尤其是一些小型PLC电源模块能提供的电流是有限的。选型的时候要打开手册查一下本机模块和扩展模块的电流消耗把所有模块的消耗电流加起来确认不超过电源模块的供电能力。别等到柜子装完一上电模块就闪烁报警那就是供电不够的典型症状。1.2 图纸阶段把这些坑提前填好图纸是PLC工程师的第一步很多后期的大麻烦都是在图纸阶段埋下的。最常见的问题就是IO分配表没有和现场传感器核对清楚。传感器分PNP和NPNPLC输入端也分源型和漏型这两者必须匹配。我遇到过最典型的情况是现场传感器选成NPN而PLC的输入端是源型输入信号怎么都不通。最后查了老半天只能全部换传感器或者加中间继电器转换几十个点位改下来光返工就花了半天。图纸上的标准和现场不一致也是高频问题。柜内端子号和原理图对不上、线号管编号跳号、元件标签贴错的我碰到太多了。所以我的习惯是到现场之后不急着通电先拿图纸和柜内端子一个点一个点核对一遍。这种核对看起来费时间但后面调起试来会省太多事。有一次也是因为偷懒没核对结果一送电就烧了一个中继就是因为图纸标的是24V线圈实际接的是220V线圈。这个教训相当深刻。另外主回路和控制回路的布线原则不能妥协。很多新手觉得把强电线和信号线扎在一起省事结果变频器一运行PLC就莫名其妙复位或者模拟量读数乱跳。主回路动力线和控制回路线必须分开走线槽动力线要用屏蔽电缆或者至少相隔一定距离。除了布线还要检查电源容量。控制变压器的容量要按所有负载的额定功率加20%余量来算别图省事选个刚好够的现场加个风扇、加个照明灯变压器马上就过载。图纸还有一点是版本管理。我见过一个项目里连着出现三个版本的电气图现场师傅手里一张自己电脑一张甲方手里还有一张。改程序的时候对不上返工返得人崩溃。所以图纸一定要统一出一个受控版本每次修改要更新修订说明发给所有相关方这个习惯尽早养成。1.3 接线与柜内工艺的规矩接线看起来是电工的活但PLC工程师自己心里要有数。线径一定要按电流选24V传感器线通常0.5平方毫米就够了但24V电源主干线要根据负载电流算好劣质细线会发热甚至烧毁。线号管必须套这是后期排查故障的第一线索。压接端子一定要用压线钳压牢不能用尖嘴钳随便夹一下了事这样很容易虚接现场隔三岔五莫名故障。强弱电分开、交流直流分开、模拟量信号单独走线这几条规矩不能破。柜内的走线要留一点余量不要拉得笔直绷紧柜门上的线要预留开关门的活动余量不然开关几次柜门线就断了。接地也要注意控制柜内要设独立接地铜排PLC的24V电源0V端、屏蔽层、柜体都要接到这个铜排上再由铜排单独连接到厂房接地级。忌讳把地线接成环或者多个接地点串在一起那样反而会引入地环流干扰。还有一个建议柜内接线完成之后一定拍照留底。调试的时候很多线在柜内底层看得不清楚照片放大看效率高得多。尤其是一些临时改线等你意识到需要记录的时候可能已经被下一波改动覆盖了。2. 程序编写不是能跑就行是排错少才算好2.1 扫描周期、定时器与边沿指令的底层认知写PLC程序和写电脑程序有一个很不一样的地方PLC的梯形图是循环扫描执行的。也就是说CPU从第一行扫到最后一行然后再回到第一行继续扫这个来回就是一个扫描周期。程序里所有指令的输出都是在扫描到那一刻才刷新的。搞清楚这个很多奇怪现象就自然解释了。你按下启动按钮程序里明明写了M0置位但触摸屏上M0的状态就是不亮。其实是因为M0的置位指令在程序末尾才执行触摸屏画面的刷新时机和PLC的扫描周期对不上等画面刷新的时候M0可能刚好被后面的逻辑复位了。这类问题不是程序错了是节奏和同步的问题。定时器也是重灾区。TON是延时接通TOF是延时断开刚上手特别容易混。我举个例子气缸到位信号要延时确认正确的做法是到位信号持续稳定之后才开始计时而不是用上升沿去触发一个定时器。上升沿只在那一瞬间有效之后你输入状态怎么变它都不会再触发第二次。很多设备“偶尔不动作”查到最后都是边沿指令用错了地方。还有一个经验有一种累积型定时器TONR只要通电就开始累计时间断电保持适合用在停机时间统计、设备保养提醒这些地方。关于定时器我再补充一个容易被坑的点定时器的时间基数和分辨率。同一个定时器指令不同的编号可能对应不同的时基比如0.1秒、0.01秒、0.001秒。如果你把时间值设大或者设小实际延时时间可能差十倍。修改这种问题的时候一定先查型号对应的手册别想当然。2.2 数据块、变量命名与程序结构化不少刚入行的朋友喜欢把临时数据随便扔在M区里变量名随便起甚至直接拿M0.0、M0.1来用。这样做功能也能跑但后期维护就是灾难。我用的是统一命名规则例如DI_设备号_信号名、DO_设备号_动作名、AI_设备号_参数名。看到名字就知道是哪个设备、什么信号类型、用在哪里的。这比M0.3这种天书好太多。变量表也要做注释不用写长篇大论短短一句“哪个气缸的到位开关”就够。程序结构要分块。我的习惯是分成初始化块、手动操作块、自动运行块、报警处理块、通信处理块。每个块用独立子程序或者函数块实现主程序里只做调用和简单的逻辑判断。别把一大堆功能堆在同一个循环里几百行网站在一块儿出问题排查起来非常痛苦。交叉引用工具能帮你快速定位变量在程序中的使用位置但想快速理解程序逻辑还是模块化的结构更友好。功能块FB的使用是提升效率的关键。如果你的产线里有好几台相同的设备比如四个工位都是一样的气缸动作序列写四个重复程序段纯属浪费。封装一个气缸控制功能块把伸出、缩回、延时、报警都封装在块里然后用四个功能块实例分别管理四个气缸。改动的时候改一个块四台设备同时生效这种思路到了一定阶段是必须掌握的。2.3 通信参数Modbus、以太网与常见坑通信是新手最容易水土不服的领域。先说Modbus RTU这种串口通信你以为波特率、站号设对了就万事大吉其实数据位、停止位、校验方式必须和设备侧完全一致任何一个参数不对通信就会时好时坏。通信应答超时时间也不要设成无限等待我一般设500毫秒到1秒超时就报故障提示操作员检查通信链路。如果设成无限等设备会一直卡在发送指令的状态后面整个流程都停住。现场总线通信还需要注意终端电阻。以PROFIBUS为例总线的两端设备上必须把终端电阻打到ON中间设备保持OFF。这个细节我见过无数人忽略结果就是通信时灵时不灵领导过来问你也说不出个所以然最后拿示波器查波形才发现是终端电阻的问题。以太网通信相对简单但要防IP地址冲突同一网段内IP不能重复这是上学时就知道的规则可到了现场还是有人乱配。PLC之间的以太网通信还要注意数据同步问题。如果用PUT/GET这类指令做点对点通信接收方要保持通信状态字的判断。正常通信和通信异常要有标志位通信断了要报警不能看着程序像没毛病实际上数据已经完全不更新了。还有一点通信数据区要跟逻辑控制区做物理隔离通信往来的数据放到独立的数据块控制逻辑只引用这个数据块里的内容。不然通信刷新把控制变量直接覆盖了设备动作就乱了。2.4 报警、急停与安全逻辑报警处理别把所有问题都一视同仁。我常用的做法是分三层提示级只记录不动作警告级声光提示操作员注意设备继续运行故障级立即停机并锁存故障原因。分级之后操作员面对满屏报警时才能第一时间抓住重点维修也不会因为一堆无效报警被淹没关键线索。报警要有历史记录不光跳出来就完事最好记录报警发生的时间点和复位时间方便后期回溯。急停、光幕、安全门这些信号在接线和程序上要做到双回路保险。安全信号不仅要进PLC还要在硬件控制回路里串联一旦安全信号断开硬件回路直接切断主接触器设备立刻停下来。软件逻辑也可以做停机但软件逻辑有可能因为CPU死机、程序跑飞而失效硬件回路却永远在高可靠性层面兜底。这个没有侥幸别图省事只做软件屏蔽。程序里的软联锁也要写全。电机正反转之间要有互锁气缸动作之间要有先后和互斥关系抽真空和放真空不能同时打开两个气缸伸出到位前另一台不能启动。写程序的时候把这些联锁条件全部想完整比现场出了事故再来补要强一百倍。另外故障复位也有讲究。停机故障不能随便一键复位比如安全门打开导致的停机必须等所有安全条件恢复了才能允许复位而且复位动作必须由操作员明确触发不能程序自动复位。3. 现场调试上电、干扰、执行机构的三座大山3.1 上电顺序不烧模块的五个步骤现场调试最容易出大问题是上电我见过太多人接完线直接送电结果模块炸了、电容鼓了、电源板烧了。我的顺序从来是固定的。第一步不送主电只把控制电源送上用万用表逐个量24V、5V电源模块的输出电压确认没有短路电压正常。第二步把CPU和各个模块逐一通电看每个模块的指示灯状态有报警立刻查。第三步检查所有传感器的供电和信号极性确认没有接反。第四步把输出端负载全部断开在程序里手动逐个强制输出点确认输出方向和动作逻辑正确。第五步才把主回路合上带载调试。这个过程看起来很笨但能挡住大多数低级错误。我唯一一次烧模块就是跳过了第四步直接带载强制输出结果把一路继电器控制线接错24V直接怼到220V端子上。从那以后我宁可多花半小时也不敢跳步骤。顺便提醒一句测试输出点强制的时候一定要记得程序里先断开自动连锁否则你以为强制了输出结果下一扫描周期又被PLC自动逻辑给复位了。3.2 干扰与接地看起来玄学其实是物理现场干扰问题是很多新手觉得“玄学”的地方其实归根结底就是电磁噪声串进了敏感回路。干扰源最常见的就是变频器和伺服驱动器它们工作时在输出线上会产生高频谐波。对策其实不复杂变频器和伺服的动力线、信号线必须分开走线管屏蔽层在控制器端单端接地千万不能两端都接地否则反而会形成地环流干扰更严重。PLC的24V电源不要直接给传感器供电建议用带隔离的开关电源或者至少要给PLC的24V单独一路。电源品质不行的时候宁可加一个EMC滤波器也别让干扰跑进CPU。模拟量信号线必须用屏蔽双绞线屏蔽层在PLC端接好。曾经有个项目4-20mA液位信号在变频器启动后读数一直漂查了半天最后发现信号线没接屏蔽层接上之后问题立刻消失。回到接地控制柜里地线接成环、接地排搭接不良这些问题都很常见。正规做法是控制柜内设独立接地铜排所有需要接地的屏蔽层、0V、柜体都汇总到铜排再由铜排单独接厂房的接地极形成单点接地系统。调试之前建议拿接地电阻仪测一下接地电阻一般工业环境要求在4欧姆以下要是测出来十几欧姆那整个柜子怎么搞都会有干扰。3.3 变频器、伺服与执行机构的调试关键点和变频器通信第一件事就是想清楚你是走端子控制还是总线控制。最经典的坑就是程序里发了启停命令变频器纹丝不动查了一圈才发现变频器参数里的控制源还是默认的端子控制你总线命令发过去根本不被采纳。频率源同理如果你要用模拟量给频率就要把频率源设为模拟量输入要用通信给频率就要改为总线给定。这种问题本身很小但排查起来相当费时间。变频器的加减速时间也要根据负载特性来设不要随意用默认值。惯性大的负载减速时间太短容易报过压故障负载是风机水泵这类平方转矩负载加减速时间和启动方式都有讲究。还有一个参数是载波频率载波高则电机噪音小、输出波形好但载波高了变频器发热也大输出距离变短。距离远的时候适当降低载波否则电机端电压波形会难看。伺服调试里刚性参数和惯量比是新手最头疼的部分。我的建议是先把设备负载的惯量比估算值填进去让伺服自整定跑一遍再微调位置环增益和速度环增益。别一上来就追求高刚性增益调太高电机会嗡嗡响甚至振荡设备启动和停止的时候还会过冲。正确的做法是一点点加增益直到设备动作干脆利落还没有异响就停在那。电机的抱闸控制也是一坑。抱闸打开要提前于电机运转抱闸闭合要延迟到电机停止之后这个时序通常写在程序里用定时器控制。如果时序反了设备要么刹不住要么抱闸磨损特别快还伴随刺耳的刹车声。限位开关建议采用常闭接线断线时能从逻辑上识别成触发状态相对更安全。常开接法一旦断线传感器失效而程序毫无察觉设备就会直接冲出去。4. 故障排查与工作习惯效率和安全都在细节里4.1 一套能覆盖八成故障的排查顺序设备出故障先别急着翻程序乱改。我给自己定的排查顺序是一看、二听、三闻、四测、五查程序。一看观察设备是在什么状态下停的报警画面里有什么提示机械位置对不对二听听有无异常声音继电器有没有咔嗒声、电机是否堵转声、抱闸是否异响三闻有没有焦糊味那是电气过热的信号四测用万用表测电压、电阻、通断最后才是打开程序查逻辑。八成以上的故障用这个顺序都能定位很多时候连程序都不用打开。举几个实际例子。有一台设备电机偶发性不启动排查了两天最后发现程序里某个输出用了上升沿而上一次停机时输出状态恰好让这个上升沿没有被刷新所以下一次启动就失效。这类问题你能看出来吗能。但如果直接看程序还真不一定能找到得结合设备动作时序一起推。还有一个模拟量漂移的案例查了所有参数都没问题最后确认是信号线屏蔽层没接。联机运行时出现“单机正常一联机就死”的情况优先考虑通信故障。我曾经遇到多台PLC通过以太网互连联机后偶尔某个站不响应最后发现是通信数据块太大占用扫描周期太多加上通信超时时间设置太短导致。把通信区精简超时时间调到合理范围问题就解决了。排查的逻辑顺序一定要清晰不要跳着查。4.2 备份、注释与程序版本管理程序备份这个习惯关键时刻能救命。每次修改完程序马上把修改日期和修改内容记录在注释里或者直接体现在备份文件名里。我自己用“项目名_版本号_日期”的格式来命名例如“贴标机_V1.2_20250622”。现场调试过程中如果新改的逻辑导致设备异常可以马上回退到上一个正常版本。要是你不备份就只能靠记忆去猜改来改去最后版本都不知道哪里去了。这里说的备份不只是PLC程序还包括HMI工程、变频器参数、伺服参数、图纸。尤其变频器和伺服参数调试完一定要导出保存。有一次设备运行半年后伺服参数被误改设备抖动严重维修部门翻遍电脑也没有原始参数最后只能慢慢重调损失了多少工时。养成调试完立刻导出一份参数表放到项目文件夹里的习惯后面会感谢自己。在线修改程序时也要特别注意。PLC在运行模式下在线修改一定要确认当前设备状态是安全的。断电保持的寄存器在程序下载以后可能被覆盖一些保存的配方数据、计数值会丢这个要注意提前备份。使用强制功能时更是要小心强制输出某点位之前先确认这台设备当前没有人在操作或者明确告知现场负责人。4.3 让调试效率翻倍的工具习惯工欲善其事必先利其器。调试线上设备有条件的话背一个带示波器功能的万用表。测模拟量信号、测PWM波形、测通信总线信号都能直接看波形排查问题效率可以提升好几个层次。普通的数字万用表只能看平均值带波形的能直接看出信号毛刺和干扰水平。软件方面在线监控、强制、交叉引用这些基础功能要熟练。很多新手排查问题时是一行一行看程序效率很低。交叉引用可以列出某个变量在所有程序段中的位置改一个变量前先查一下它被谁写入、被谁读取可以避免很多“改名引发的连锁反应”。调试大型设备时在程序里的关键逻辑加几个状态字变量用HMI显示出来比反复看在线监控更直观。大量参数修改的时候要学会用导出导入功能。比如调试触摸屏几十个画面、几百个变量手动配起来既慢又容易错。大部分组态软件都支持批量导入CSV把变量表在Excel里整理好一次性导入省时省力。PLC的注释表、配方数据同理能用批量导入就批量导入。5. 1-3年工程师的进阶心得5.1 写别人愿意接手的程序程序写得好不好不在于某个功能实现了而在于三个月后别人拿到你的程序能不能看懂、能不能接手维护。我有几个小习惯每个网络块写注释复杂逻辑写一段简短说明变量用有意义的名字不搞M0.0式的天书编号定时器、计数器建立编号登记表写到说明书里程序分块组织初始化、手动、自动、报警、通信各自独立。别小看这些很多老师傅接手年轻同事的程序时最头疼的就是“这程序是能跑但我看不懂”这才是一个程序真正的失败。处理复杂流程时我建议用状态机思路而不是一堆连锁的长逻辑。状态机就是把流程拆成若干个状态每个状态定义一个编号程序里通过状态编号转移整个流程清晰得像一张表格。状态机最大的好处是出了问题可以从状态字直接判断设备现在处于哪个环节排查效率高非常多。虽然前期设计状态表要花点时间但这个时间花得值。5.2 复盘和学习路线每次项目结束我都建议花一晚上做个复盘把这次踩过的坑、用过的好方法都记录下来。半年之后回头看你自己的记录会惊讶地发现很多当时觉得理所当然的小操作背后都有教训。我现在整理出来的这些经验就是把好几年的笔记重新过了一遍越整理越觉得真正值钱的东西不在书本里都在现场。学习路线上我给1-3年工程师的建议是先把一个品牌的PLC吃透再横向扩展到其他品牌。指令虽然不同但思路完全通用。然后重点学通信和运动控制这两个能力是区分初级和中级工程师的分水岭。最后一定要掌握至少一种HMI组态软件以及基本的PID整定方法。工程项目的验收阶段也很关键别只埋头写程序试着去参与方案汇报、验收测试、操作培训这些环节锻炼的是你从全局角度看设备的能力对长期发展帮助很大。我个人的体会是PLC这个职业入门门槛不算高但天花板很高。前三年最重要的不是背下多少指令而是有没有形成一套稳定的工作习惯这些习惯包括先算再选、先查再改、先备份再测试。文章里这些经验是我从现场一点点攒出来的目前先整理到这里后续剩下的条目我会在后面的更新里继续发出来。大家也可以把你在项目里遇到的问题留在评论区我会挑有代表性的在后续更新里补充。慢就是快少踩一个坑就是领先一步。
阅读完成 · 觉得有帮助?