1. 从一台“卡住”的产线设备说起去年冬天我在一个做汽车零部件的老客户那里蹲了三天。他们的自动化包装线突然停摆故障现象很怪PLC的输入输出指示灯都正常触摸屏上也没有报警但传送带就是不动。产线班长急得直跺脚因为这条线一停下游总装就得跟着断供。我打开编程软件连上PLC在线监控程序发现一个定时器的使能条件始终不满足——问题出在一个光电传感器的信号上。传感器本身没坏是安装支架被震松了位置偏了两毫米。重新固定、校准之后产线在十五分钟内恢复运行。这件事让我想了很久。整条产线的“大脑”是西门子的S7-1200编程软件是博途触摸屏是威纶通的。从传感器到执行器从PLC程序到SCADA画面这套系统里里外外都是进口品牌的影子。我们不是不会修也不是不会编程序但核心的控制单元、编程生态、通信协议几乎全是别人的。这就是“国产PLC不崛起制造强国又从何谈起”这句话背后最扎心的现实。这篇文章不打算喊口号也不打算写行业分析报告。我想从一个一线自动化工程师的视角把PLC这个东西拆开来看它到底难在哪国产PLC现在走到了哪一步我们在实际项目中怎么选型、怎么编程、怎么和SCADA打通以及那些只有踩过坑才知道的细节。无论你是刚入行的PLC编程新手还是做了多年系统集成的老手都能从里面找到可以直接参考的东西。2. PLC到底难在哪不只是“一块铁盒子”2.1 硬件可靠性的门槛比想象中高很多人觉得PLC就是个工业电脑把芯片、电路板、外壳组装起来就行。但工业现场的环境远比办公室恶劣夏天配电柜内温度能到六十度冬天户外设备可能零下二十度还有粉尘、油污、电磁干扰、电压波动。一台PLC要在这种环境下连续运行五年十年不出问题靠的不是某一项技术而是整个硬件设计、元器件选型、生产工艺、老化测试的系统能力。我拆过不少PLC进口品牌和国产品牌在电路板上的差距是肉眼可见的。进口品牌的PCB走线更规整电源部分有完善的过压过流保护光耦隔离做得更彻底连接器的镀金层更厚。这些细节单个看都是成本但加在一起就是可靠性。国产PLC这几年进步很大汇川、信捷、和利时这些品牌在中小型PLC上的稳定性已经可以接受但在高端大型PLC领域和西门子、罗克韦尔、三菱的差距仍然存在。注意选PLC不能只看参数表上的“MTBF”数字那个是理论值。真正要看的是同行业同工况下的实际运行案例最好能问到使用超过三年的用户。2.2 编程生态才是真正的护城河硬件可以逆向可以堆料但编程生态不行。西门子的博途、罗克韦尔的Studio 5000、三菱的GX Works这些软件平台经过了几十年的迭代积累了大量的库函数、诊断工具、仿真功能。一个工程师学会了博途他就能在西门子全系列PLC上工作这种用户粘性是国产PLC最难突破的壁垒。我见过很多国产PLC的编程软件功能上“有”但用起来“别扭”。比如在线监控的刷新率不够变量表导入导出格式不兼容仿真功能缺失或者不稳定。更关键的是当程序规模变大、逻辑变复杂的时候软件的编译效率、内存管理、调试体验就会暴露出差距。这不是靠一两个版本能追上的需要长期的用户反馈和迭代。2.3 通信协议的碎片化困局工业现场最头疼的问题之一就是“设备说不同的语言”。西门子有Profibus、Profinet罗克韦尔有EtherNet/IP三菱有CC-Link汇川有自己的一套信捷也有自己的协议。国产PLC如果只支持自己的协议那在系统集成时就会非常被动。支持标准协议需要交专利费、做认证支持第三方设备需要写驱动、做测试这些都是实打实的成本。我在一个水处理项目上用过某国产品牌的PLC它支持Modbus TCP但和施耐德变频器通信时数据格式总是对不上。后来查手册才发现它的浮点数字节序和施耐德的不一样需要手动做高低字节交换。这种细节在进口PLC的文档里通常写得很清楚但国产PLC的文档往往一笔带过得靠工程师自己试。3. 国产PLC的真实水平我实际用过的几款3.1 汇川从变频器到PLC的跨界选手汇川最早是做变频器起家的后来收购了贝加莱的中国团队推出了AM系列和Easy系列PLC。我去年在一个包装线上用了汇川的AM401配合CODESYS编程环境。整体感受是硬件做工不错CODESYS的生态也比较成熟支持IEC 61131-3标准梯形图、ST语言都能用。但问题也有。CODESYS本身是第三方平台汇川在底层做了很多定制导致有些标准库函数不能用或者行为不一致。比如我用到一个PID控制块在标准CODESYS里运行正常但在汇川的AM401上参数整定方式变了得重新调。另外汇川的HMI产品线和PLC的集成度还不够高触摸屏上找不到汇川PLC的驱动是常有的事得手动添加或者用Modbus通用驱动。3.2 信捷小型自动化领域的性价比之选信捷在小型PLC和触摸屏领域做得不错XD系列、XL系列在包装、纺织、电子设备上用得很多。我有个做口罩机的客户整机用了六台信捷PLC通过RS485组网成本比用西门子低了将近一半。信捷的编程软件XDPPro功能比较基础但胜在稳定梯形图编程对新手很友好。信捷的短板在于大型系统和复杂算法。它的PLC内存和运算能力有限做多轴运动控制或者复杂过程控制时就力不从心。另外信捷的以太网通信功能相对薄弱和SCADA系统对接时往往需要额外的网关或者OPC服务器。3.3 和利时流程工业的老牌选手和利时在DCS领域积累很深它的PLC产品在电力、化工、轨道交通等流程工业场景有应用。我参与过一个基于和利时PLC的大棚灌溉项目用到了模拟量输入输出、PID调节、远程通信等功能。和利时的硬件在抗干扰和冗余设计上做得比较扎实适合环境恶劣的现场。但和利时的编程软件体验一般界面偏老旧在线调试的便利性不如博途。而且它的产品资料和技术支持主要面向大客户中小型项目的工程师想找一份详细的编程手册都不太容易。品牌优势领域编程环境通信能力适合场景汇川中小型自动化CODESYS定制支持Modbus、EtherCAT包装、电子、锂电信捷小型设备XDPProRS485、Modbus纺织、口罩机、简单产线和利时流程工业自研平台Profibus、Modbus电力、化工、水处理西门子全领域博途Profinet、Profibus汽车、冶金、高端制造三菱中小型自动化GX WorksCC-Link、Modbus电子、电梯、机床4. 从零写一个PLC程序红绿灯控制实例4.1 需求拆解与I/O分配十字路口红绿灯是PLC编程入门的经典案例但很多人只把它当练习题没有真正理解背后的工程思维。我先把这个需求拆清楚一个十字路口东西方向和南北方向各有红、黄、绿三盏灯需要按照固定的时序循环切换。假设一个完整周期是60秒东西方向绿灯30秒、黄灯3秒、红灯27秒南北方向绿灯27秒、黄灯3秒、红灯30秒两个方向互锁不能同时绿灯。I/O分配如下东西绿灯Q0.0东西黄灯Q0.1东西红灯Q0.2南北绿灯Q0.3南北黄灯Q0.4南北红灯Q0.5。输入只需要一个启动按钮I0.0和一个停止按钮I0.1。定时器用TON时间基准100ms。4.2 梯形图逻辑与定时器链程序的核心是一个定时器链。启动后第一个定时器T1开始计时设定值30030秒。T1到达后触发T2计时3秒同时东西绿灯灭、黄灯亮。T2到达后触发T3计时27秒东西黄灯灭、红灯亮南北红灯灭、绿灯亮。以此类推四个定时器循环。这里有个细节定时器的使能条件要用前一个定时器的完成位而不是用常闭触点。如果用常闭触点在定时器到达的瞬间会产生一个扫描周期的抖动导致输出闪烁。正确的做法是用前一个定时器的Q位来置位下一个定时器的IN端同时用第一个定时器的Q位来复位自己。提示在博途里写这个程序可以用一个整数变量做状态机比纯定时器链更清晰。状态0到3分别对应四个相位每个状态里判断定时器是否到达到达就切换状态并复位定时器。4.3 互锁与安全逻辑红绿灯程序最不能出错的就是互锁。东西绿灯和南北绿灯绝对不能同时亮否则就是交通事故。除了在程序里做互锁硬件上也要做两个方向的绿灯接触器要互相串入对方的常闭触点。软件互锁是逻辑保护硬件互锁是最后一道防线。另外黄灯的时间不能太短一般3秒是底线。有些路口黄灯只有1秒司机根本反应不过来。如果是PLC控制黄灯时间要写死在程序里不能让人机界面上随便改。我见过一个项目操作员把黄灯时间改成了0.5秒结果一个月内出了三次追尾。5. SCADA与PLC连接从数据采集到画面组态5.1 通信方式的选择与配置SCADA和PLC连接最常用的方式是OPC UA或者Modbus TCP。西门子PLC用OPC UA需要购买许可证博途里要配置服务器证书、用户权限步骤比较繁琐。Modbus TCP相对简单但需要知道PLC的寄存器地址映射。比如S7-1200的DB块数据要通过Modbus TCP读取得先在PLC里写一段映射程序把DB块的数据搬到Modbus保持寄存器区。汇川PLC和SCADA连接如果SCADA软件支持CODESYS的网关可以直接用符号寻址不需要手动映射地址。但很多国产SCADA软件对CODESYS的支持不完善还是得走Modbus。信捷PLC的Modbus地址是固定的输入继电器、输出继电器、数据寄存器都有对应的Modbus地址查手册就能找到。5.2 数据刷新频率与通信负载SCADA画面的数据刷新频率不是越高越好。我见过一个项目工程师把刷新周期设成了100ms结果PLC的通信负载飙升扫描周期从10ms变成了50ms导致控制逻辑响应变慢。后来改成500ms画面看起来依然流畅PLC的负载也降下来了。一般来说模拟量数据的刷新周期可以设1秒开关量状态可以设500ms报警信息用事件触发而不是轮询。如果SCADA和PLC之间的网络不稳定还要加心跳检测和断线重连机制。我在一个远程泵站项目上SCADA和PLC之间用的是无线网桥遇到雷雨天气就会丢包。后来在PLC里加了一个心跳计数器SCADA每5秒读一次如果连续三次读不到就报警运维人员就能及时处理。5.3 报警与历史数据的处理SCADA的报警功能不能只依赖PLC的报警位。PLC的报警位只能表示“当前有故障”但SCADA需要记录“什么时候发生、什么时候恢复、操作员有没有确认”。这些信息要在SCADA的报警数据库里管理而不是写在PLC程序里。历史数据也是一样。PLC的存储空间有限不可能存几个月的运行数据。SCADA要定时把数据写入数据库并且做压缩和归档。我一般建议客户用SQL Server或者MySQL做历史库SCADA软件通过ODBC或者API写入。查询的时候用报表工具生成日报、月报比在SCADA画面里翻曲线方便得多。6. 那些年我踩过的坑PLC实操问题排查6.1 PLC仿真启动不了Error 11的解决思路S7-PLCSIM Advanced是西门子官方仿真工具但很多人第一次用就卡在启动环节报Error 11还没有详细错误信息。我遇到过几次总结下来原因主要有三个一是虚拟网卡没有正确安装PLCSIM Advanced需要创建一个虚拟以太网适配器如果被防火墙或者安全软件拦截了就会启动失败二是许可证问题PLCSIM Advanced需要单独的授权如果授权管理器里没有识别到也会报错三是端口冲突PLCSIM Advanced默认使用一些特定端口如果被其他软件占用了同样启动不了。解决办法先检查设备管理器里有没有“Siemens PLCSIM Virtual Ethernet Adapter”如果没有就重新安装PLCSIM Advanced然后打开Automation License Manager确认授权状态最后用netstat命令查一下端口占用情况把冲突的软件关掉或者改端口。6.2 汇川PLC与威纶通触摸屏通信失败威纶通触摸屏的驱动列表里找不到汇川PLC这是很多人的第一反应。其实威纶通支持汇川PLC只是驱动名称可能不叫“汇川”而是叫“Inovance”或者“CODESYS”。如果确实找不到可以用Modbus TCP通用驱动手动填写汇川PLC的IP地址和寄存器地址。但要注意汇川AM系列的Modbus地址映射和Easy系列不一样。AM系列用的是CODESYS的地址空间需要先在PLC里配置Modbus从站把变量映射到保持寄存器。Easy系列相对简单地址是固定的。我建议先在PLC侧用调试工具确认Modbus通信正常再去配置触摸屏这样能快速定位问题出在哪一侧。6.3 三菱老式PLC的编程软件兼容性三菱FX2系列是老机型了编程软件FXGPWIN在Win7以上的系统里经常装不上或者装上了打不开。如果必须用这个软件最稳妥的办法是装一个Windows XP的虚拟机在虚拟机里运行。或者用GX Works2的FX2兼容模式但有些老程序导入后指令会变需要手动核对。我个人的经验是如果客户还在用FX2最好建议他们升级到FX3或者FX5。老PLC的备件越来越难买编程软件也不受支持维护成本反而更高。升级的时候注意I/O点数和通信接口的兼容性FX3的编程口和FX2不一样触摸屏的通信线可能要换。问题现象可能原因排查步骤解决方法PLCSIM Advanced Error 11虚拟网卡未安装检查设备管理器重装PLCSIM Advanced触摸屏找不到汇川驱动驱动名称不同搜索Inovance或CODESYS用Modbus通用驱动FXGPWIN无法运行系统兼容性尝试兼容模式用XP虚拟机PLC通信负载高刷新周期太短监控扫描周期调整SCADA刷新率模拟量数据跳变干扰或接地不良检查屏蔽线接地加磁环或隔离器7. AI生成PLC代码能用到什么程度7.1 当前AI在PLC编程中的实际表现最近一年AI生成PLC代码的话题很热。我实测过几个工具让它们写一个电机启停的梯形图或者一个PID控制程序。结果是简单的逻辑AI能写出来语法基本正确但细节需要人工调整。比如定时器的编号、变量的命名、注释的完整性AI往往处理得不够规范。复杂的程序比如多轴运动控制、安全逻辑、通信协议处理AI目前还搞不定。它不理解现场设备的实际行为不知道哪个信号会抖动哪个执行器有延迟。AI生成的代码更像是一个“骨架”需要工程师根据实际工况去填充血肉。7.2 把AI当助手而不是替代者我的做法是用AI生成基础框架比如一个状态机的结构、一个Modbus通信的模板、一个报警处理的逻辑。然后我自己去填具体的地址、参数、互锁条件。这样能省掉一些重复劳动但核心的安全逻辑和工艺逻辑必须自己写。另外AI生成的代码一定要在仿真环境里跑一遍。PLCSIM或者CODESYS的仿真功能都可以用。仿真能发现语法错误和逻辑漏洞但发现不了现场干扰和时序问题。所以最终还是要上实际设备测试不能跳过这一步。8. 国产PLC的突围方向从细分场景切入8.1 在专用设备上做深度定制国产PLC和西门子、三菱正面竞争通用市场短期内很难赢。但在专用设备领域比如包装机、注塑机、纺织机、锂电池设备国产PLC可以针对特定工艺做深度定制。比如把包装机的追剪算法、注塑机的温度控制曲线、纺织机的张力控制模型直接做进PLC的固件里用户买回去就能用不需要自己编程。这种模式的好处是用户粘性高因为换品牌意味着重新学习一套专用指令利润空间大因为卖的是解决方案而不是硬件。汇川在电梯控制、信捷在口罩机上的成功都是这个思路。8.2 拥抱开源生态和标准协议国产PLC要打破生态壁垒一个可行的路径是拥抱开源。CODESYS本身就是基于IEC 61131-3标准的开放平台国产PLC可以用它作为编程环境降低用户的学习成本。同时积极支持OPC UA、MQTT、EtherCAT等标准协议让国产PLC能方便地接入各种SCADA和MES系统。我见过一些国产PLC厂商为了省授权费自己开发编程软件结果做出来的东西又难用又不稳定。不如把精力放在硬件可靠性和行业应用上软件平台用成熟的第三方方案。8.3 建立技术支持和培训体系进口PLC的强势很大程度上是因为有一整套技术支持体系官方文档、培训课程、认证工程师、社区论坛。国产PLC在这方面差距很大。很多小品牌的PLC说明书只有几十页遇到问题只能打电话找代理商代理商的技术能力也参差不齐。如果国产PLC厂商能把文档写清楚、把例程做完整、把培训视频放到网上让工程师能自学、能查资料、能交流那推广起来会容易得多。我在选型的时候如果两个品牌硬件差不多我一定会选文档更全、例程更多的那个。9. 给一线工程师的选型与学习建议9.1 选型时不要只看价格PLC选型价格是很重要的因素但不是唯一因素。我一般会从五个维度评估硬件可靠性、编程软件易用性、通信协议支持、技术资料完整性、备件供应周期。国产PLC在前两项上已经进步很大但在后三项上还需要时间积累。如果是关键产线、停机损失大的场景我建议还是用进口品牌或者用国产PLC做冗余配置。如果是辅助设备、单机设备、对成本敏感的场景国产PLC完全可以胜任。我有个客户做物流分拣线用了十几台信捷PLC运行两年多只换过两个电源模块整体成本比用西门子省了六成。9.2 学习PLC编程的正确路径新手学PLC不要一上来就啃理论。最好的路径是先找一个仿真软件比如PLCSIM或者CODESYS的仿真环境把基本的逻辑指令、定时器、计数器、比较指令练熟。然后找一个实际的小项目比如红绿灯、电梯、传送带从头到尾做一遍。最后再学通信和SCADA把数据采集和画面组态打通。我见过很多人梯形图写得很溜但一遇到通信就懵了。其实通信没有那么难关键是理解数据帧的结构和地址映射的规则。Modbus TCP的报文格式是公开的找个抓包工具看一下很快就明白了。9.3 建立自己的代码库和调试笔记做PLC编程最值钱的东西不是你会多少指令而是你积累了多少可复用的代码和调试经验。我建议每个工程师都建一个自己的代码库把常用的电机控制、PID调节、报警处理、通信模板整理成标准块。下次做项目的时候直接调用省时省力。调试笔记也很重要。每次遇到问题把现象、原因、解决方法记下来。时间长了这就是你自己的“故障字典”。我现在的笔记里有几百条记录从“PLC启动不了”到“模拟量跳变”从“触摸屏黑屏”到“通信超时”基本上常见的坑都覆盖了。10. 最后分享几个实操小技巧关于PLC的定时器有个细节很多人不知道不同品牌的定时器时间基准不一样。西门子的TON是1ms、10ms、100ms、1s可选三菱的定时器默认是100ms信捷的也是100ms。如果你从西门子换到三菱定时器的设定值要乘以10或者除以10否则时间会差很多。关于PLC的输入输出接线有个经验输入信号用PNP还是NPN一定要和传感器匹配。我见过一个项目传感器是NPN的PLC输入模块是PNP的结果信号一直读不到。后来加了一个继电器转换才解决问题。如果一开始就选对型号根本不用这么麻烦。关于SCADA和PLC的时间同步如果SCADA服务器和PLC的时间不一致历史数据的时序就会乱。我一般会在PLC里写一段程序通过SNTP协议从SCADA服务器同步时间或者反过来让SCADA定期读取PLC的时间并校正。这个细节在项目验收的时候经常被忽略但运行几个月后就会暴露出来。关于PLC程序的备份不要只存在编程电脑的硬盘里。我见过太多工程师电脑坏了程序丢了只能凭记忆重写。我的做法是程序写完后导出为源文件存一份到U盘存一份到网盘再打印一份关键部分的梯形图放在配电柜里。这样即使电脑丢了也能快速恢复。
阅读完成 · 觉得有帮助?