首页 / 资讯中心 / 文章详情

从继电器到PLC:工控软件逻辑革命的演进与启示

从继电器到PLC:工控软件逻辑革命的演进与启示 ★ FEATURED ARTICLE
1. 1968年一纸招标需求拉开工控软件逻辑革命的序幕1.1 继电器柜把车间逼到了极限干工控这些年我修过最头疼的设备不是PLC反而是成排成排的继电器柜。翻开柜门先闻一股烧糊味几十个中间继电器噼里啪啦地响想找出哪一步逻辑没通得拿万用表顺着几百根线一段一段排故。换产品时更痛苦改线、对线、重新紧固一个柜子折腾两三周是常有的事。而这一切的转折都来自1968年那纸招标需求。在1960年代工厂里所谓的“自动化”本质上就是一大堆继电器。电机启停、顺序动作、互锁保护全部靠中间继电器、时间继电器、接触器的触点组合完成。一条汽车焊装线的控制柜动辄几百个继电器控制室整整一面墙全是柜子。设备跑起来之后柜内温度高、触点频繁吸合故障率居高不下而且往往坏的都是最难排查的那个中间位置。那个年代电气工程师的日常工作大概有三类第一类是设计继电器逻辑电路图画触点串联并联第二类是带着学徒按图接线全网线号核对第三类是出了故障被叫到现场面对满柜继电器做“侦探”。逻辑越复杂柜子越大改起来越痛苦这几乎成了一条铁律。谁要是提出“能不能不用继电器而是像换程序一样换动作”在当时的车间里会被当成外行话。但这个“外行话”恰恰在1968年被一家大型汽车制造商认真写成了招标需求。汽车产线换型周期太长已经直接影响成本和交货。无论继电器柜设计得多熟练物理接线逻辑的修改效率就是上不去。行业需要一个新思路。1.2 招标书里三条要求定义了一台新设备1968年北美某大型汽车制造商的动力总成部门向多家设备供应商发送了一份自动化控制设备需求书。其中核心要求总结起来只有三条。第一逻辑功能必须通过可编程方式实现不能靠物理连线。这意味着设备内部要有可擦写的存储介质能装下一套程序逻辑变更不需要动端子排。当时的工程师普遍认为这近乎天方夜谭。第二编程方式必须贴近电气工程师的日常习惯不能强迫电气人员去学计算机的机器语言。当时计算机编程还是卡片、汇编、打孔纸带的天下让车间师傅去搞这个确实不现实。这条要求直接催生了后来的梯形图语言。第三设备必须适应工厂车间的高温、粉尘、振动和强电干扰环境可靠性要比继电器控制系统更高。继电器能扛的新设备要更能扛。这三条在今天看来平平无奇但在1968年却几乎是互相矛盾的目标。可编程、易编程、抗恶劣环境任何一个单拎出来都不难组合在一起就逼着供应商重新设计整套控制架构。随后几年几家自动化公司开始做原型最早投入实用的那批设备后来被命名为可编程逻辑控制器也就是大家熟悉的PLC。从今天的视角回头看这份招标书最大的价值不是催生了一台具体的机器而是确认了一个概念控制逻辑可以脱离物理硬件以软件形式独立存在。工控软件逻辑革命的起点就是这里。从继电器逻辑到存储器逻辑这一步跨出去后来几十年整个工业自动化都在这条路上加速。2. 从“配线逻辑”到“存储程序逻辑”PLC的原理性换道2.1 继电器控制系统的物理本质要说清楚PLC的革命性得先明白继电器控制系统的工作方式。继电器逻辑的每一个回路都是通过物理触点连接实现的。串联触点就是AND逻辑并联触点就是OR逻辑自锁触点是RS触发器时间继电器就是延时器。每个逻辑关系都对应一个真实的电气连接。这意味着逻辑由导线和触点决定逻辑变更必须变更物理实体。改一条回路要拆线、改线、重新套线号、重新紧固端子还要检查辅助触点够不够用。更麻烦的是继电器线圈长时间通电发热触点反复吸合会磨损氧化时间继电器的精度受温度影响这些都会让控制系统逐渐“变质”。还有一个隐藏问题继电器逻辑是并行动作的。一个线圈吸合其所有触点几乎同时动作前后只有几毫秒的机械偏差。逻辑复杂时工程师必须仔细考虑“谁先谁后”的竞争关系。这些基于物理特性的设计约束在全部换成PLC后基本消失但在早期转换过程中恰恰成了最大的坑。2.2 存储程序控制的基本套路PLC的工作原理和继电器完全不同核心是“存储程序控制”。硬件上只有三块CPU负责执行指令存储器负责存放程序和数据输入输出模块负责连接现场信号。程序是一串按顺序存放的指令执行过程像一个循环流水线CPU先读取输入端子状态写入输入映像区再按程序顺序执行指令更新中间变量和输出映像区最后把输出映像区的状态一次性写回输出端子。这个循环往复的过程被称为扫描周期。单个周期从几毫秒到几十毫秒不等取决于程序长度。一个简单的类比是继电器系统像一群人同时分工协作各干各的PLC像一个人拿着一份清单一条一条按顺序执行。单个周期内这个人只能做一件事但因为速度快从外部看起来和同时做差不多。扫描机制带来两个重要特性。第一程序执行结果有确定性不会因为触点机械动作快慢产生竞争第二程序可以反复扫描天然适合做循环控制。早期工程师第一次接触PLC时最难理解的就是“为什么输出不是立即变化而是要等一个扫描周期”。这个延迟在继电器时代几乎没有概念在PLC时代却成了必须接受的底噪。2.3 梯形图让电气工程师无缝迁移让PLC从实验室走进车间的关键一步是梯形图语言。梯形图沿用了继电器电路图的全部图形符号左母线相当于火线右母线相当于公共端常开触点对应“读一个位”常闭触点对应“读一个位的取反”线圈对应“写一个位”。电气工程师看到梯形图的第一反应不是害怕而是亲切。从继电器电路图转换成梯形图我一般按四步来做。第一步梳理输入输出清单把每颗按钮、每个限位、每台接触器映射成PLC地址第二步把原继电器逻辑拆解成一个个回路区分主回路、互锁回路、自锁回路第三步把每个回路翻译成一个梯形图梯级注意串联对应AND、并联对应OR第四步处理特殊元件时间继电器换成定时器指令计数器换成计数指令。这里有一个必须向新手讲清楚的差异继电器系统是并行物理动作PLC是串行扫描执行。多数逻辑在扫描周期足够短时等效但涉及“同一周期内先断开再闭合”的场合会表现不同。我见过不止一次设备调试时按下停止按钮输出没有立即断开而是多跑了半个周期就是因为程序里输出刷新在末尾中间又有别的指令在操作同一个位。解决方法是把对输出的最终赋值集中到一段独立梯级里避免分散。在那个没有在线仿真的年代验证程序只能靠“强迫输入”和“强制输出”。越是谨慎的工程师越会在转换前把原继电器图纸研究透再对照新地址表逐条核对因为这个环节错一步现场就要多烧几个保险丝。3. 第一代PLC的硬核工程实现1969-19753.1 早期PLC的架构拆开看其实很简陋现在用PLC的人很难想象早期设备有多“寒酸”。第一代PLC逻辑核心还不是后来成熟的微处理器而是中规模逻辑电路加专用运算单元。存储器用的是磁芯存储器容量极小按“字”甚至按“位”来算程序多了就塞不下。输入模块负责把AC 110V或者AC 220V的强电信号转换成内部5V逻辑电平输出模块则反方向输出一般用继电器或可控硅驱动负载。早期PLC能做的事也有限基本围绕逻辑运算、定时、计数。逻辑指令只有AND、OR、NOT、OUT这一类定时器精度和数量都有限计数器依赖硬件时钟。执行速度大约几十毫秒扫描一千步放到今天看简直慢得离谱但和继电器响应时间相比反而更快而且没有机械磨损、没有触点抖动、没有线圈发热。这种设计有一个很聪明的点它不强求替代一切继电器功能而是先做好“逻辑控制器”这一个角色。用户把几个最头疼的柜子改成PLC后发现故障率明显下降拆线改线的工时消失于是开始愿意把更多环节交给它。PLC初期的成功很大程度上是“小目标切入用可靠性说话”的成功。3.2 从图纸到投运早期PLC落地流程还原我调过一台很老的控制设备维护手册里还保留着当年从继电器柜改成PLC的完整记录。整套流程今天看依然很有参考价值。第一步做I/O统计和地址分配表。把原系统所有按钮、限位、接近开关、继电器线圈、接触器、指示灯逐一登记分配PLC输入输出地址。这个表做得越细后面编程越顺利一旦漏了一个输入点整套地址都得重新排。第二步整理安全联锁逻辑。急停、互锁、运行许可、边界条件单独画优先级表写程序时把这些放在最前面。早期PLC没有今天这么多安全认证概念但设计师普遍有一个朴素的习惯先把“坏情况”堵死再谈工艺动作。第三步用助记符输入程序。第一代PLC的编程器大多是手持式的屏幕只有一行字符程序以助记符方式逐条输入按地址写到位。那时候不存在鼠标拖拽梯形图这种好事工程师得先在纸上画梯形图再一条一条敲进去。第四步空载测试。把负载全部断开通过强制输入点的方式逐条验证逻辑。每强制一个输入组合观察对应输出是否正确这套方法虽然笨但非常稳。第五步带载点动。先手动吸合单台电机确认方向正确再逐步联动最后切自动。第六步程序备份到纸带或磁带。现在看纸带很古老但在当时是唯一可靠的离线存档方式。这套流程的核心思想是“先逻辑后工艺先空载后带载”和现代PLC项目调试的总体路径没有本质差异只是工具从仿真软件变成了强制点。3.3 早期可靠性策略光耦、看门狗与端子紧固PLC能在车间立足其实靠的是几个不起眼的硬件策略。输入输出全部做电气隔离输入侧用光耦输出侧用继电器或可控硅隔离强电信号和内部逻辑彻底分开。看门狗计数器一旦发现程序跑飞能自动复位重启防止卡死。程序存储在磁芯或早期非易失介质中断电不会丢失只是部分设计依赖后备电池电池没电照样丢程序。现场最容易出的问题反而不是CPU而是输入输出端子。车间振动会让螺钉松动粉尘会让继电器输出触点氧化端子排接触不良导致的偶发故障最难查。当年老师傅有句口诀PLC不投运端子先紧一遍。这句话在现代化工厂里依然实用很多莫名其妙的偶发报警最后都查到端子松动上。4. 微处理器时代1975年后PLC快速“膨胀”4.1 通用CPU进入PLC能力边界被打破1975年前后微处理器价格降到可以进入工业设备PLC开始换装通用CPU。这个变化是质变不只是更快而是存储和指令集都打开了。程序容量从几K字涨到几十K字算术运算、数据比较、数据传送这些指令陆续出现PLC从纯逻辑控制器变成“带一点计算能力的小计算机”。通用CPU带来的另一个好处是编程工具升级。厂家推出了专用编程器可以显示梯形图图形不用再背地址敲助记符。工程师在编程器上画梯形图直接生成机器码下载到控制器里。人机交互虽然没有今天这么友好但已经比拨码开关和一行字符屏进步太多。从市场角度看微处理器方案让PLC成本明显下降中小工厂也够得着了。产品开始分成小型机、中型机、大型机不同档次模块化设计成为主流电源、CPU、输入输出、通信模块都做成独立插卡坏了换一张卡就行。这个时期PLC的形态基本固定下来后面几十年都在这个框架内演进。4.2 模拟量、PID与通信雏形走出“继电器替代者”身份早期PLC只能处理开关量做不了连续控制。1977年前后模拟量输入模块和模拟量输出模块开始实用化比例阀、变频器、温度变送器、压力变送器可以直接接上PLC。有了模拟量自然需要闭环调节PID指令随之进入PLC功能库。这套组合拳让PLC从逻辑控制器升级成过程控制器开始抢仪表盘系统的生意。同一时期串行通信也冒出来了。多台PLC通过总线互连把状态数据传给一台上位机集中监控从概念变成现实。操作员可以在调度室里看到各台设备的运行状态记录从“人工抄表”变成了“定时打印”。通信能力让PLC不再是孤岛也为后来工厂数字化网络化埋下伏笔。应用领域随即扩张。汽车制造之外冶金、化工、电力、水处理行业都开始批量采用PLC。这些行业的特点是既有开关量顺序控制又有模拟量调节需求温度、压力、流量、液位各种信号混在一起。PLC能同时搞定逻辑和调节在性价比上碾压老式仪表盘逐步占领市场。4.3 1968-1980年的发展时间线速记我把这个阶段的关键节点列一张表方便对应记忆。时间节点1968大型汽车制造商发布可编程控制设备需求1969-1970第一批PLC样机投运成功替代继电器柜1971-1973PLC产品化多家自动化厂商入场1975微处理器方案导入性能大幅提升1977-1978模拟量、PID、串行通信功能落地1980PLC成为工业控制领域标准设备工控软件生态成型这张表里的每一条背后都是技术和市场反复磨合的结果。尤其是1975年微处理器这个转折点把PLC从“高级继电器”变成“工业计算机”整个行业对控制的想象力彻底打开。5. 从“硬件逻辑”到“软件逻辑”工控软件革命的长远影响5.1 范式转变改逻辑不再需要拧螺丝PLC带来最本质的改变是把“逻辑”从铜线和触点中解放出来装进了存储器。以前改一套动作要停机、断电、拆线、改线、测试再恢复生产工程师大部分时间在干体力活。PLC时代只需要修改程序、下载进去、重新启动逻辑就变了。硬件几乎不动只有程序在变。这个范式转变的直接产物是柔性制造。一条生产线不需要为每个产品单独定制一套硬接线逻辑同一套PLC配不同程序就能生产不同型号的产品。换型时间从以周计变为以分钟计这在1968年以前是不可想象的。从企业经营角度看PLC把设备改造的边际成本大幅压低小批量多品种生产第一次在经济上可行。对控制工程师个人来说身份也变了。以前是“接线的老师傅”核心技能是看图纸、走线、排故现在是“写逻辑的人”核心技能是抽象思考、逻辑设计、程序排错。掌握软件思维成了新一代工控人的起跑线。5.2 工控软件的“母语”扫描、映像、定时、计数PLC定义了一整套工业控制软件的基本范式今天几乎所有工控系统都能看到它的影子。扫描循环机制是内核程序不是事件驱动的而是一个周期性重复执行的过程。输入输出映像区是标配读写外部信号都要经过缓冲。定时器、计数器、保持位、掉电保持这些概念从PLC语言一路延伸到后来的DCS、PAC、软PLC、边缘控制器。就连编程语言也有清晰的血缘。现代国际标准中梯形图、指令表、结构化文本、功能块图、顺序功能图这几种语言最早的核心都源于PLC时代的工程实践。以前的电气工程师靠梯形图迁移到PLC后来的软件工程师靠结构化文本迁移到先进控制平台本质上都是同一套“工控思维”的延续。我经常跟刚入行的同事说不要觉得PLC是“老古董技术”。它的扫描模型、映像机制、批量输入输出思路至今仍是大多数工业实时控制系统的地基。哪怕今天流行各种高级语言开发控制逻辑底层还是要理解“程序周期执行、信号有延迟、输出有缓冲”这些老规矩。5.3 对今天自动化工程师的启示站在今天回看1968-1980这段历史我最想提醒大家的是读老程序是一种很好的学习方式。找一台1980年代初期的PLC系统打开程序你会发现设计者的思路非常清晰——安全联锁放最前面然后是启停逻辑接着是顺序动作步进最后才是工艺参数微调。这种“先安全、后功能、再优化”的排列习惯比很多现代程序还要规范。老程序还有一个值得学的地方注释和命名。那个年代存储空间紧张程序员的命名缩写却很有规律比如电机用M系列阀门用V系列按钮用PB系列一眼能看出逻辑作用。反观现在有些项目变量名直接用拼音首字母甚至无意义字符维护时简直灾难。好习惯和坏习惯从第一代PLC时代就定型了。另外老工程师的调试方法也很值得借鉴。没有仿真软件、没有在线修改逼着他们必须在头脑里把程序走一遍把每个输入组合都想明白。现在的年轻工程师习惯“先下载再看现象”少了这一步离线推演很多低级错误因此漏到现场。我觉得每周抽一点时间不开软件拿一张纸把关键逻辑走一遍是低成本高收益的习惯。6. 我遇到过的历史遗留问题与排查实录6.1 老PLC程序无故丢失最该查哪里老设备PLC程序丢失九成是电池问题。早期PLC的保持RAM靠锂电池供电电池电压不足程序掉电就消失。这个故障很隐蔽因为设备上电时工作正常一断电再上电就提示程序区空。排查方法很简单先看CPU面板上是否有电池低压指示灯再量电池电压。锂电池低于保持电压就要换换电池时不能断电正确做法是带电状态下替换电池模块否则程序当场丢。还有一类程序丢失是存储芯片本身坏了。早期一批EEPROM擦写寿命有限频繁下载程序会逐渐失效。判断方法是把程序重新下载一次下完能跑断电再上电又丢。这种情况不是电池问题而是存储介质彻底退休了只能换板卡。我的习惯是给老PLC系统配两个备份一个保存在编程器里另一个打印成助记符清单纸面存档。一旦出现程序丢失至少能手工恢复。当年很多工厂吃了没备份的亏程序丢了只能按原图纸重新编写费时费力还容易漏逻辑。6.2 扫描周期引发的“输出先断后通”灵异现象有台老设备切自动模式时中间继电器偶尔会瞬间误动作然后立刻恢复现场表现为接触器“咔哒”响一下但电机没停。排查了两天最后在程序里找到了原因。原来输出映像区里某两个位在同一扫描周期内先后被不同梯级赋值后面的梯级覆盖了前面的结果导致一个短暂的高电平脉冲。这其实是扫描机制下很典型的问题。老工程师靠经验避开了新手经常踩。解决办法有几个把相关逻辑集中到一个梯级里完成最终输出赋值增加中间位缓存先计算好结果最后统一写输出或者输出指令放在程序段的最后确保在此之前所有中间运算都已完成。从原理上讲就是要让“计算”和“输出”分离避免中间过程直接作用到输出映像区。现在用现代PLC在线监控很方便这类问题可以在程序里加断点逐步走查。老设备没有这些工具只能靠逻辑推演加试验。排这种故障最有用的技巧是把梯形图打印出来用笔标注每个位的赋值位置和引用位置一眼就能看出哪些位被重复赋值了。6.3 继电器电路转梯形图的四个常见坑做老设备改造时把继电器电路翻译成梯形图是个高频任务我总结过四个容易踩的坑。第一个坑忽略继电器线圈不同时动作。原电路里两个线圈可能靠机械结构保证先后动作梯形图里对应位实时变化顺序必须重新用程序表达。第二个坑把急停线放在程序末尾。梯形图从上往下执行输出写在哪里很重要急停必须放在影响所有输出的最前面最好用物理常闭触点直接切断负载电源不要只依赖程序。第三个坑漏掉自锁互锁的隐性回路。原继电器柜里有些互锁通过辅助触点实现不在一张图纸里翻译时容易漏改造后设备出现“同时动作”多半是这个原因。第四个坑盲目保留多余触点。PLC一个位可以被反复读取无数次不需要像继电器那样省触点但有些人习惯性按原图纸逐点翻译明显可以合并的逻辑也不优化导致程序冗长、扫描周期变长。6.4 最后想说的一点经验我修过不少老系统也从老系统里学到不少新思路。PLC从1968年诞生到今天控制器的外形、功能、通信能力都换了好几代但最底层的软件逻辑内核没有变依然是“扫描、映像、定时、计数、联锁”。我能给同行最实在的建议是不管手里用的是多高端的新系统遇到疑难故障时先回到PLC最朴素的模型去分析多数问题都能在那个层面找到答案。技术会一直换代这些基本功不会过时。如果你手里刚好有一台老设备、一段老程序别急着淘汰花点时间读明白它背后那位设计者的思路你会发现自己对工控软件逻辑的理解比看十遍手册还管用。
阅读完成 · 觉得有帮助?
咨询建站