
做PLC这行头三年是最容易产生“我好像会了”的错觉又最容易在设备面前被现实教育的阶段。我在一线做自动化这些年把入行以来踩过的坑、翻过的车、调通的项目整理成了90条实战经验每天更新一条。这篇先不动那90条的完整清单而是把大家搜得最多、问得最频繁的部分挑出来展开讲包括红绿灯和电梯程序怎么写、SCADA和触摸屏怎么连、PLCSIM为什么启动不了、现场PLC宕机怎么查、大棚灌溉和包装线项目怎么搭。内容偏实操带基础原理也带排查顺序适合刚入行一两年、正在被项目追着跑的工程师同样适合准备转行做PLC的朋友提前避雷。1. 先聊聊前三年的坑这90条经验是怎么攒出来的1.1 入行1-3年最容易踩的三种坑结合我接触过的工程师和自身经历前三年遇到的绝大多数问题可以归成三类编程上“逻辑没想清楚就写”通讯上“协议没搞明白就接”调试上“没按顺序排查就乱改参数”。这三类问题的共性在于它们都不是设备本身坏掉了而是思路没理顺。编程类最典型的就是定时器混用。很多人写十字路口红绿灯上来就一串TON定时器串联最后一个定时器复位第一个看着能跑一旦中途切换模式或者扫描周期不稳定状态就乱了。通讯类最典型的是不知道对方设备支持什么协议拿着Modbus TCP去连只支持S7协议的设备折腾半天还对不上。调试类最典型的是一上来先怀疑PLC坏了把程序清了重新下载结果问题还在最后发现是传感器NPN/PNP接错了。所以90条经验我的整理方式是按场景分类一条解决一个具体问题每条都附上“我当时是怎么发现的”和“下次怎么做能避免”。这样写不是为了凑数量而是让你在遇到问题时真的能翻到对应条目。1.2 90条经验的整理方法和使用建议这90条我是按场景标签来分的标签包括“编程逻辑”“通讯连接”“仿真调试”“品牌选型”“行业应用”五大类日常遇到问题就按标签去查。每天更新一条其实是逼自己把一个模糊的经验讲清楚而不是停留在“当时搞定了”的层面。建议你也建立自己的经验库哪怕只是记在手机备忘录里。格式就三条现象是什么、原因是什么、操作步骤是什么。重点写“原因”。很多工程师记笔记只记“换了个模块就好了”这等于白记因为下次遇到同样现象还是不知道怎么定位。使用这90条经验时我的建议是不要死记条目的结论要理解背后的排查顺序。比如仿真起不来原因可能是安装路径、许可证、版本不匹配、虚拟化冲突如果你只记住“重装软件”那换个机器还是不会排查。理解顺序比记住结论重要得多。2. 编程逻辑类红绿灯、电梯和时间锁机2.1 十字路口红绿灯程序套路和反直觉的坑十字路口红绿灯是PLC入门最经典的题目但我在面试和带新人时发现十个人里有八个会掉进同一个陷阱用定时器串联实现状态切换。比如东西绿灯亮10秒然后用定时器触发东西黄灯再触发南北绿灯。这种做法在小程序里确实能跑但存在两个隐患。第一个隐患是刷新时序。定时器在扫描周期内是边扫描边刷新的如果同一个定时器既被输出条件引用又在后面被复位就会出现一个扫描周期内的状态不一致表现在实际设备上就是某个灯闪了一下或者跳变了一下。第二个隐患是扩展性差一旦要加夜间模式、手动模式、故障闪烁模式这种状态链就非常难改。我推荐的写法是状态机方式。先把运行状态划分成几个固定阶段东西绿、东西黄、南北绿、南北黄、全红过渡用一个整数变量比如步号来记录当前处于哪个阶段。每个阶段的持续时间放到独立的定时器里定时时间到就切换步号步号变了就执行对应输出。核心逻辑是“步号决定输出定时器决定切换”而不是“定时器直接连输出”。三菱FX系列的写法步号用M或D寄存器配合四个TON型定时器T0-T3每个定时器对应一个阶段。西门子S7系列用SCL写更直观一个CASE语句加四个TON定时器搞定。如果你用的是CODESYS系的PLC思路一模一样只是定时器块换个名字而已。另外一个容易忽略的点是安全要求。十字路口红绿灯的PLC程序在调试阶段和实际运行阶段的要求完全不一样。实际使用中必须有全红时间就是两个方向都红灯给路口清空留出时间否则绿灯直接切换容易出事故。某些交通项目还要求绿闪功能就是绿灯结束前闪3秒这个用定时器加沿检测实现。2.2 四层电梯控制呼梯信号和方向仲裁四层电梯是比红绿灯高一个档次的经典练习项目也是很多面试官喜欢问的题目。很多人一听到电梯就觉得难其实PLC实现电梯控制核心不是电机而是三个逻辑问题呼梯信号怎么记、方向怎么选、到站怎么停。先说话呼梯信号。每一层的上呼、下呼顶层没有上呼底层没有下呼以及轿厢内选层信号都必须用电保持的方式锁存起来。三菱系列用SET/OUT加自锁西门子用SR触发器。不能用普通的输出线圈直接连按钮因为按钮松开信号就丢了。呼梯请求到达后要一直保持到电梯真正响应停车才能复位。第二个是方向仲裁。电梯运行方向不是按“当前最远的楼层”来决定的而是按“运行方向前方是否有请求”来判断。举个例子电梯在一层三层有人下呼二层有人上呼电梯应该先顺路上行接二层再停三层而不是直接冲到三层再回来。这个逻辑用程序写就是先检查同方向前方请求有就保持当前方向没有再看反方向是否有请求都没有就停在当前层。第三个是平层停车。光电开关或平层感应器给出平层信号后程序要先停抱闸再开门顺序不能反。我在调试电梯类教学设备时吃过一次亏程序里先开门再给停车指令结果轿厢溜了一下虽然实验设备没人但如果是真的电梯这就是大事。顺序一定是收到平层信号、断开运行输出、启动抱闸、确认速度为零、再开门。写四层电梯程序我建议先用流程图把各个状态画清楚再动手写。不要直接在一个FC里堆IF语句拆成“呼梯登记”“方向判断”“运行控制”“到站处理”四个功能块每个块单独调试联调时问题会少很多。2.3 时间到期自动停机别用临时比较要用电保持加锁存热词里有一条“PLC怎么设置时间到期自动停机”这是设备租赁、分期付款、项目尾款场景里非常常见的需求。实现方式不复杂但有个关键点停机条件必须断电保持不能断电之后重启就失效。西门子S7-1200/1500的常规做法是读取CPU的系统时间用READ_RTC或者TIA里直接读写系统时间块跟设定的截止时间做比较。比较结果一旦成立就置位一个断电保持的M位或DB位同时把这个位串到主回路输出控制里。注意这个置位动作本身要考虑保持性掉电保持区要在硬件配置里勾选保持性或者用保持型M区地址。三菱FX系列的做法也类似用比较指令CMP比较当前时间和设定时间结果通过SET指令置位一个带电池保持的M继电器再把这个M常闭点串到输出使能回路里。容易踩的坑有三个。一是很多PLC默认的系统时间不准开机后需要手动校准或者用WRITE_RTC写入时间。二是时间比较要考虑边界直接比较“当前时间大于截止时间”是会有漏洞的更好的写法是先转成字符串或统一到秒级时间戳再比较避免日期格式错位。三是停机动作一定要做自锁最好还能在触摸屏上显示停机原因比如“使用期限已到请联系服务商”不然客户不知道怎么回事。2.4 AI辅助PLC代码生成能用但不能盲用热词里出现“AI PLC代码生成”这个我也试过。现在用AI生成PLC程序对结构化文本SCL和ST语言确实有不错的效果比如给AI一段需求描述“红绿灯东西绿10秒黄3秒南北绿10秒黄3秒全红2秒”它能给你生成一个基本可用的SCL框架省掉不少敲代码的时间。但我的使用体会是AI生成的代码只能当参考草稿不能直接下载到PLC里。原因是AI不懂你的PLC品牌、IO映射、模块地址、安全规范它只会按通用逻辑给你拼一段语法正确的东西。比如它可能生成一个TIA里不存在的函数或者变量名用了中文导致编译不过更麻烦的是它完全不会考虑急停、安全回路、互锁这类现场必需的逻辑。我的建议用法是分两步。第一步让AI生成整体框架你拿来对照自己的思路看看有没有漏掉的状态这个过程有点像代码评审。第二步把AI生成的SCL粘贴到TIA里逐个功能块手改把IO地址换成实际的把安全逻辑补上。这样既提升了编框架的效率又保证了程序的可靠性。3. 通讯与上位机SCADA、触摸屏、第三方读取3.1 SCADA与PLC连接先分清协议再动手PLC和SCADA的连接是项目里最常被新手问到的。首先要明确一点SCADA本身不是通讯协议它是上位机软件要靠具体的通讯协议和PLC对话。常见的组合有三种。第一种西门子自家SCADA比如WinCC连西门子PLC直接用S7协议不需要额外转接配置时只要填PLC的IP地址、机架号、槽号就行。第二种第三方SCADA连西门子PLC如果SCADA支持S7协议那就直接用不支持的话就要走OPC UA或者通过MODBUS TCP。第三种SCADA连三菱、汇川、信捷这类PLC多数走MODBUS TCP或各家的专用协议比如三菱的MC协议。我在现场见过最多的坑是大家把IP ping通了就以为通讯没问题。其实IP通只代表网络层通应用层协议不对照样连不上。排查通讯问题我的顺序是第一步确认物理链路第二步确认IP能ping通第三步确认PLC侧通讯参数比如Modbus从站地址、波特率、数据格式第四步确认SCADA侧变量地址映射第五步才考虑防火墙和端口问题。另外SCADA画面的变量刷新率不是越高越好。有些人喜欢把刷新周期设到100毫秒以内结果画面上所有的数值都流畅了但PLC的通讯负载上去了导致PLC扫描周期被拉长。这个在后面讲C#读取频率时还会展开。3.2 C#读取PLC频率轮询周期怎么定热词里有一条“C#读取PLC频率多少”这其实是上位机开发中一个非常实际的问题。用C#读西门子PLC常用的是Sharp7或者S7.NET库本质都是走S7协议。读频率不是随意定的它取决于你的业务需求和PLC的通讯负载之间的平衡。我的经验是一般性的数据显示和状态监控200毫秒到500毫秒的轮询周期足够用。因为人眼看到画面数值的刷新超过10帧每秒就没有明显差别了。如果你要记录生产数据用于统计可以做到100毫秒。如果要做运动控制级别的实时同步那就别走普通S7通讯了那是另一个技术路线不是轮询能解决的。高频轮询带来的问题是会拖慢PLC的程序周期。西门子S7-1200的通讯负载是由CPU统一处理的你每50毫秒发起一轮读取请求CPU就会频繁处理通讯任务这时候你会发现PLC里本来5毫秒跑完的程序被拉到了十几毫秒。所以我对现场工程师的建议是先确认业务真的需要那么高的刷新率再确认CPU选型的通讯能力最后才确定轮询间隔。还需要注意批量读取。C#读多变量时别一条一条读尽量把地址连续的变量打包成一个请求用S7库的DB读取函数一次读一整块再在C#侧解析。这样能大幅减少通讯报文数量刷新频率也可以相应降低整体效率反而更高。3.3 触摸屏找不到驱动威伦通加汇川、MCGS加信捷的排查热词里有“威伦通触摸屏软件上怎么找不到汇川PLC的驱动啊”这是汇川和威伦通组合时的经典问题。汇川的PLC分两大体系AM系列是CODESYS生态用InoProShop编程Easy系列是AutoShop编程。对应的触摸屏驱动是不一样的。威伦通EBPro软件里新建装置时厂商列表里找“INVT”汇川的英文品牌名就是INVT然后型号里面会列出AM系列和Easy系列对应的驱动。如果列表里根本没有汇川大概率是EBPro软件的版本太旧需要更新到新版驱动包。另外连接参数里要选好COM口或者以太网地址通讯协议要和PLC侧的设置对齐。MCGS和信捷的组合也是类似的逻辑。信捷XD系列本身就支持Modbus RTU/TCP所以最稳妥的做法是在MCGS里直接用通用Modbus驱动把信捷PLC当Modbus从站来连。只要PLC侧把通讯参数配好从站地址、波特率、数据位、校验位、寄存器映射上位机就能读。直接用信捷专用驱动也行但通用Modbus驱动在某些情况下反而更稳因为少了很多专用驱动的版本兼容问题。这类问题本质上都一样触摸屏和PLC是两个品牌的产品它们之间没有“自动识别的魔法”只有通过双方支持的协议才能对话。排查时先确认PLC支持哪些协议再确认触摸屏驱动列表里有没有对应项最后看参数是否一致。3.4 变频器与PLC、松下、倍福、Keba的通讯特点ABB变频器和西门子PLC的组合也很常见。ABB变频器支持Modbus RTU、Profibus DP、Profinet等多种通讯方式。如果是走Modbus RTU需要在变频器参数里设置从站地址和通讯波特率然后PLC侧用Modbus主站指令去读写变频器的控制字和状态字。控制字用得多的是ABB的系列标准控制字比如启动、停止、使能状态字用来读运行频率和故障码。松下PLC的通讯设置老用户比较熟悉的是MEWTOCOL协议新一些的FP系列也支持Modbus。用FPWIN Pro配置时要在系统寄存器里把通讯协议设置为MEWTOCOL或MODBUS然后设置从站号、波特率、校验方式。松下FP系列有些型号是通过编程口、有些是通过扩展通讯模块别选错通讯通道。倍福PLC用的是TwinCAT本质上是把Windows环境变成实时控制系统。刚开始接触倍福的人会不习惯它的“非PLC式”开发方式所有IO都要通过EtherCAT端子映射到变量。倍福连上位机反而简单因为它自带ADS通讯协议也支持OPC UA和SCADA对接很顺。Keba这个品牌被问到“Keba是什么PLC”很多人第一次在项目里看到会觉得陌生。Keba是奥地利一家自动化控制器厂商在注塑机、机器人集成的周边控制里用得比较多它自己的开发环境叫KeStudio语言风格和CODESYS类似硬件形态常和伺服驱动系统集成在一起。如果在现场遇到Keba设备别慌先看它的通信接口支持什么协议绝大多数情况下都能用Modbus TCP或OPC UA和上位机对接。4. 仿真与调试PLCSIM为什么启动不了、PLC宕机排查4.1 S7-PLCSIM启动不了且没有报错问题出在实例和版本“S7-PLCSIM Advanced V5.0 PLC实例启动不了且没有报错”这个搜索词我一看就想起自己第一次用PLCSIM Advanced时的经历。TIA自带的S7-PLCSIM和单独的S7-PLCSIM Advanced是两套东西很多人把二者混为一谈。S7-PLCSIM是基本的仿真器直接点开始按钮就能仿真程序。但S7-PLCSIM Advanced是一个基于虚拟机技术的仿真环境它需要你先手动创建虚拟PLC实例类似在VMware里新建一台虚拟机然后指定PLC型号、IP地址启动实例之后TIA里的下载目标才会出现这个虚拟PLC。很多人以为“启动不了”是软件坏了其实只是没创建实例。创建实例时要注意版本匹配。PLCSIM Advanced V5.0对TIA博途的版本有要求不是所有TIA版本都能配合使用。如果TIA是V15PLCSIM Advanced V5.0基本没问题如果TIA是V17以上可能需要更新版本的PLCSIM Advanced。另外安装路径不要带中文或空格这在西门子全家桶里尤其重要。4.2 PLCSIM Advanced报Error 11虚拟化冲突排查PLCSIM Advanced报Error 11这个错误码很多人在搜索日志里见过。根据我的实际操作经验Error 11绝大多数和虚拟化环境冲突有关比如你本机装了Hyper-V、VMware、VirtualBox或者Windows的Device Guard/Credential Guard占用了虚拟化资源这会让PLCSIM Advanced无法正常创建仿真环境。排查顺序我可以给你一个明确的步骤。第一步打开Windows功能看Hyper-V、虚拟机平台、Windows虚拟机监控程序平台是否开启如果开启且你平时不用可以关闭并重启。第二步检查BIOS里的CPU虚拟化Intel VT-x或AMD-V是否开启这是PLCSIM Advanced运行的基础。第三步卸载或退出其他虚拟机软件。第四步重新启动PLCSIM Advanced以管理员身份运行然后重新创建实例。另外PLCSIM Advanced对网络配置也有要求它会自动创建虚拟网卡如果系统里默认网卡被禁用或者策略限制也可能出现启动失败但没明显报错。这时候在设备管理器里看虚拟网卡是否正常如果有黄色感叹号把网卡禁用再启用一次。4.3 现场PLC宕机几个高频原因和定位顺序热词里直接有“导致PLC宕机”说明这问题在现场真实发生过不少次。PLC运行中突然停机、模块SF灯亮、或者整个CPU进入STOP状态常见原因有三个。第一个是大电流干扰或接线错误导致模块损坏。比如把220V串进了24V信号回路或者感性负载没有加续流二极管导致瞬间高压冲击CPU模块。这种问题硬件的痕迹会比较明显模块上有烧灼点或异味但有时候表面看不到需要量电压判断。第二个是程序原因导致CPU进入STOP。我遇到最多的是除零错误、非法地址访问、数组越界还有无限循环导致看门狗超时。这类问题在TIA和三菱软件里都能通过诊断缓冲区看到停机原因。排查时不要先改程序先看CPU的诊断信息它会明确告诉你停机前最后一个事件是什么。第三个是通讯阻塞。PLC长时间被大量网口请求轰炸比如上位机每秒读几百个变量或者有人用测试工具一直发ARP广播占满了PLC的通讯处理资源CPU即使程序还在运行也会有类似“宕机”的表现。定位方式是断开网线看PLC是否恢复如果断开就正常了那就是通讯侧的问题。我处理这类问题的固定顺序先看PLC面板指示灯判断是Power问题、Run问题还是SF问题再看诊断缓冲区拿到停机原因再用排除法区分硬件问题和软件问题比如拔掉所有IO模块看能否运行最后才是动手修改。5. 品牌生态三菱、汇川、松下、ABB、AB的一些经验5.1 老设备三菱FX2与FXGP/WIN兼容模式与串口选择热词里有一条很具体“三菱老式PLC——FX2编程软件FXGP/WIN Win7/8/10/XP.zip”。FXGP/WIN是当年给三菱FX系列编程的经典软件现在很多老设备维护项目还在用它。但它在Win7、Win8、Win10上经常出现安装不了、打不开、无法通讯的问题。我的经验是安装时右键选择“以兼容模式运行”兼容性模式选Windows XPService Pack 3这一步能解决绝大多数安装报错。然后是通讯问题老设备大多走串口编程线如果你用的是USB转串口线优先选CH340或者FTDI芯片的线并把Windows设备管理器里的波特率设置和PLC侧保持一致常见是9600或19200。另一个比较容易踩的坑是FXGP/WIN的下载线型号很讲究。FX2编程口是圆形8针口和FX3U的编程口虽然长得像但引脚定义不一定一样买线的时候一定要问清支持FX2还是FX3U买错了插上电脑根本找不到设备。5.2 汇川AM/Easy与CODESYS生态汇川这几年在国产PLC里占有率上升很明显。AM系列走的是CODESYS路线编程软件是InoProShop界面和CODESYS几乎一样支持ST、梯形图、FBD几种语言混用。很多人第一次接触汇川AM最大的感受是“这就是一个封装好的CODESYS”所以如果你之前玩过倍福TwinCAT、欧姆龙NJ上手汇川AM基本没有障碍。Easy系列走的是另一套生态编程软件是AutoShop指令风格更像三菱用起来很亲民适合替代传统小型PLC。选型时一定要注意AM的工程文件用InoProShop打开Easy的工程文件用AutoShop打开两者不能互通。项目经理在方案阶段如果写“汇川PLC”而不写具体系列后面采购、编程、调试都会出问题。汇川和威纶通通讯时AM系列要选INVT的CODESYS以太网驱动Easy系列要选对应的串口或以太网驱动。汇川和MCGS通讯时优先走Modbus协议稳定而且驱动通用。5.3 AB PLC里遇到不认识的指令SWJ的排查思路“美国AB公司PLC中SWJ指什么”这个热词说明很多人在看AB老程序时会遇到不认识的指令。AB的PLC型号体系比较多从老的SLC500、PLC-5到现在的ControlLogix、CompactLogix每个体系里都有一些“冷僻指令”。SWJ不是AB PLC里的常用指令不同处理器甚至不同版本固件里的含义可能有差异。遇到这种情况的正确做法是别猜去翻对应机型的指令集参考手册Instruction Set Reference ManualAB的官方文档网站可以按处理器型号检索指令列表。直接把SWJ这个助记符放进去搜索通常能找到它的操作数说明和功能描述。这件事给我的体会是PLC工程师在调试老外的设备时不能只靠“看程序猜逻辑”。老设备里的冷门指令非常多很多程序连注释都没有。看不懂的指令就去查对应处理器的指令手册这比在论坛上问更靠谱。同时排查程序逻辑时应该先看整体架构哪些是主流程、哪些是故障处理再针对具体指令深挖效率会高很多。5.4 西门子PLC输入输出接线源型漏型与NPN/PNP先认清“西门子PLC输入输出接线”是一个看起来基础、但实际坑了很多人无数遍的话题。西门子S7-200 SMART、S7-1200的数字量输入点有两种接线方向源型和漏型。这里我先说清楚概念。源型输入对应的是PNP传感器信号高电平有效电流从信号端流入输入点漏型输入对应的是NPN传感器信号低电平有效电流从输入点流出到传感器。很多人把NPN传感器接到源型输入点上怎么调都不出信号其实就是接反了。接线前先看PLC接线的公共端标记。有的输入模块公共端是1L输入点标注是I0.0到I0.x传感器是PNP的就直接把信号线接到输入点传感器正极和PLC公共端一起接24V正。传感器是NPN的公共端接法就反过来了。这个搞错之后轻则信号不触发重则烧毁传感器或者输入模块。输出侧也一样。继电器输出型PLC比较皮实交直流都能带晶体管输出型只能带直流负载而且必须注意是源型输出还是漏型输出。驱动电磁阀时如果是直流电磁阀一定要在线圈两端反向并联续流二极管不然断电瞬间的反向电动势会打坏输出点。这个问题在老工程师看来不算事但新入行的工程师经常会忽略。6. 行业项目实战大棚灌溉和自动包装线6.1 基于西门子PLC的大棚灌溉传感器、PID和手动/自动切换“基于西门子PLC大棚灌溉”是农业自动化里很典型的项目技术含量并不低适合作为入行1-3年工程师练手和述职的项目。整体结构是传感器采集土壤湿度、温湿度、光照、流量PLC做逻辑控制和PID调节触摸屏或组态软件做监控输出控制电磁阀、水泵、施肥机。项目设计的第一步是划分控制场景。大棚灌溉不是简单“湿度低了就开阀”而是要考虑一天中的不同时段、植物不同生长期的用水需求、以及雨天停灌等外部条件。我的建议是程序里至少分三种模式自动模式、手动模式、检修模式。自动模式下PLC按照内环闭环控制逻辑运行手动模式供调试和应急使用检修模式必须能在触摸屏上一键锁定所有输出防止喷灌突然启动淋到检修人员。灌溉控制的闭环逻辑推荐的做法是用土壤湿度作为主反馈加上一个简单的液位/压力保护。很多新手一上来就上PID其实灌溉系统惯性很大、滞后明显PID参数调不好反而震荡。我更推荐的做法是区间控制湿度低于下限就开阀达到上限就关闭中间加一个滞后区间避免阀门频繁启停。这个思路比PID简单而且在农业灌溉场景下效果足够好。剩下的工作重点在IO规划和通讯上传感器用4-20mA模拟量输入电磁阀用继电器输出触摸屏通过Modbus TCP和S7-200 SMART通讯。IO规划时一定要预留一倍余量因为农业项目通常后续还要补充传感器和控制点。6.2 自动化包装线控制系统节拍是灵魂基于PLC的自动化包装线控制系统是另一个经典项目类型也是很多工厂改造项目的常客。包装线通常由供料、称量/灌装、封口、贴标、剔除等工位组成每个工位之间有传送带衔接PLC负责整线的节拍控制和设备互锁。这类项目在设计时第一件事不是画梯形图而是画节拍时序图。每个工位什么时间动作、动作持续多久、哪个传感器到位后触发下一个工位要把这些先画清楚再开始写程序。没有节拍图就直接写程序的项目后期调试一定乱成一锅粥。第二件事是防堵料逻辑。包装线上最有价值的程序不是让它顺利运行而是在堵料时能停下来在恢复时能自动接着跑。每个工位之间都应该有积料检测传送带上某个区域堆积过多时前级工位要自动暂停或减速。这个逻辑没有的话包装线一分钟堵三次操作工叫苦连天。第三件事是报警分级。不是所有报警都值得停线。比如贴标机标签用完这在很多生产场景下是可以继续跑完当前产品再停的属于提示级报警而封口温度异常可能造成整批废品必须立刻停线属于停机级报警。程序里要对报警分优先级再决定输出动作。包装线项目的程序框架我建议每个工位一个FB块工位之间用全局变量或者中间标志位传递状态信息。这样做的好处是某一个工位要调整动作时不用去翻主程序里乱七八遭的触点改对应的FB块就行了而且每个工位都能单独下装调试。6.3 这类项目怎么沉淀成经验做完一个大棚灌溉或者包装线项目如果只在脑子里记着“我做完了”那等于白做。我的习惯是项目结束一周内趁细节还没忘把项目资料整理成三份第一份是IO清单和设备清单第二份是程序架构和关键算法说明第三份是调试过程中遇到的所有问题和解决方案。这套资料的意义在校招面试和加薪述职时体现得非常直接。面试官问“你做过什么项目”如果你只能回答“做过一个大棚灌溉”那印象分很低如果你能说“我解决了土壤湿度滞后导致的阀门频繁启停问题用了滞后区间控制阀门动作频率从每5分钟一次降到每30分钟一次”这就完全是两个水平了。这也是为什么我坚持把经验写成90条的原因。经验的价值不在于数量而在于你能不能在里面找到解决问题的路径。前三年积累下来的每一条经验都是后面承接大项目、带新人的底气。7. 写在最后一点实际体会我自己的习惯是每处理完一个故障就在本子上写三条现象是什么、定位过程是什么、最终解决的改动是什么。写完再看一遍如果能用一句话讲给别人听懂这条经验就算真沉淀下来了。这90条经验就是这么攒出来的后面还会继续更新遇到具体问题搜对应关键词就行。最后再分享一个小技巧PLC工程师在调试时手里一定要有一个小本子或者手机备忘录记录每一个传感器的当前状态、每一个报警的触发条件。很多疑难故障不是一次定位出来的而是经过几轮观察、对比、排除之后才找到原因而这几轮观察的数据如果不随手记录很容易就忘了。把数据记下来把过程写下来你会发现自己三年后回头看这些记录很多东西原来早就遇到过。