资讯动态

PLC诞生前夜:从继电器柜到梯形图与循环扫描机制

发布时间:2026/10/26 17:43:41 来源:尧图企业网站定制
1. 从继电器柜到梯形图PLC诞生的前夜1968年之前工厂里的控制逻辑基本靠继电器柜撑着。我第一次在老厂区见到那种柜子时印象特别深——一整面墙的金属箱里面密密麻麻的继电器、接触器、时间继电器接线像蜘蛛网一样缠在一起。一个中等规模的生产线控制柜里塞几百上千个继电器是常事每个继电器都有机械寿命触点氧化、线圈烧毁、接线松动随便一个故障就能让整条线趴窝。这种控制方式的核心问题不是“能不能用”而是“改不动”。生产线上想加一个工位、改一个动作顺序意味着要重新布线、增加继电器、调整时间参数电工得拿着图纸一根线一根线地查。更麻烦的是继电器逻辑是“硬件固化”的——逻辑藏在接线里不在图纸上更不在程序里。一个老师傅退休他脑子里的那套逻辑可能就断了传承。1968年美国通用汽车公司公开招标想找一种能替代继电器柜的电子控制器。要求很明确可编程、可修改、能在恶劣工业环境下稳定运行。这一年Modicon公司拿出了世界上第一台可编程逻辑控制器型号是084。为什么叫“084”因为这是公司的第84号项目。这台机器后来被公认为PLC的鼻祖它的出现把工业控制从“硬件接线逻辑”拽进了“软件程序逻辑”的时代。我后来查过084的一些资料它的编程方式跟今天完全不是一回事。早期PLC用的是“梯形图”的雏形但更接近继电器逻辑图的直接翻译——常开触点、常闭触点、线圈这些符号都是从继电器电路里借过来的。为什么用这套符号因为当时的电工和电气工程师只认这个你让他们学汇编语言或者布尔代数学习成本太高。梯形图的聪明之处就在于它让懂继电器逻辑的人能直接上手不需要重新学一门编程语言。从1968年到1980年这十几年是PLC从“新鲜玩意”变成“工业标配”的关键期。Modicon、Allen-Bradley、西门子、三菱这些品牌陆续进场梯形图成了事实上的标准编程语言循环扫描机制被确立为PLC的核心运行模型。今天你在任何一本PLC教材里看到的“输入采样—程序执行—输出刷新”三步走就是那个年代定下来的。2. 梯形图为什么能成为工控第一语言2.1 从继电器符号到软件逻辑的翻译梯形图Ladder Diagram简称LD的本质是把继电器控制电路“搬”到屏幕上。你看到的每一条横线叫“梯级”Rung左边是电源母线右边是输出母线中间是触点、线圈、功能块。常开触点对应继电器的常开接点常闭触点对应常闭接点线圈对应继电器线圈。这种一一对应关系让电气工程师看梯形图就像看自己画的电路图。但梯形图不是简单的“画图工具”它背后是一套完整的逻辑执行模型。我刚开始学PLC的时候总想把梯形图当成电路来理解结果踩了不少坑。电路是“并行”的——你合上开关电流同时流过所有支路。PLC是“串行”的——CPU一次只执行一条指令从上到下、从左到右扫完一遍再从头开始。这个区别非常关键它决定了梯形图里“顺序”比“位置”更重要。举个例子你在梯形图里写了两条支路一条控制电机启动一条控制指示灯。在电路里这两条支路是同时得电的。在PLC里CPU先扫第一条再扫第二条中间差了几微秒到几毫秒。大多数情况下你感觉不到但如果两条支路有逻辑依赖关系顺序写反了结果就完全不对。我见过一个新手写的程序启动按钮按下后电机没反应查了半天发现他把“启动”梯级放在了“自锁”梯级后面扫描顺序导致自锁永远建立不起来。2.2 循环扫描PLC的“心跳”机制循环扫描是PLC最核心的运行机制也是理解PLC编程的第一道门槛。它的流程是固定的三步输入采样CPU把所有输入端子上的信号状态读一遍存到输入映像区。程序执行CPU从第一条指令开始逐条执行用户程序每条指令的运算结果写到输出映像区。输出刷新CPU把输出映像区的状态一次性送到输出端子上驱动外部负载。这三步走完算一个扫描周期。扫描周期通常很短小型PLC大概1到10毫秒大型PLC可能几十毫秒。扫描周期越短PLC响应越快但功耗和发热也越大。为什么用循环扫描而不是中断驱动因为工业控制最怕的是“不确定”。中断驱动虽然响应快但程序执行顺序不确定同一个输入信号在不同时刻可能触发不同的中断导致逻辑混乱。循环扫描牺牲了一点响应速度换来了确定性和可预测性——每个扫描周期内输入状态是固定的程序执行顺序是固定的输出刷新是固定的。这种“确定性”在工业现场比“快”更重要。我实测过一个数据某品牌小型PLC扫描周期设定为10毫秒输入信号从端子变化到程序里读到新值最坏情况要等一个完整扫描周期也就是10毫秒。如果某个动作要求响应时间小于10毫秒这个PLC就不够用得换更快的型号或者用中断程序。很多新手选型时只看“有多少个IO点”不看扫描周期结果设备跑起来发现动作跟不上再换PLC就麻烦了。2.3 梯形图与指令表的取舍梯形图不是唯一的编程方式。IEC 61131-3标准定义了五种语言梯形图LD、功能块图FBD、顺序功能图SFC、指令表IL、结构化文本ST。但在国内工控现场梯形图占了绝对主导地位尤其是中小型项目。为什么因为梯形图“看得见”。一条梯级就是一个逻辑块触点怎么连、线圈怎么驱动一目了然。调试的时候你可以在线监控每个触点的通断状态哪个条件没满足、哪个线圈没输出屏幕上直接显示。指令表虽然写起来快但可读性差别人接手你的程序得一行行猜。结构化文本适合做复杂运算和数据处理但电气工程师不一定熟悉高级语言。我个人的经验是逻辑控制用梯形图数据处理用结构化文本运动控制用功能块图。一个项目里混用多种语言很正常关键是让维护的人能看懂。我见过一个项目前任工程师用结构化文本写了一套复杂的配方管理结果厂里的电工完全看不懂设备出故障只能等原厂来修停机一天损失几十万。后来我把它改成了梯形图加数据块的方式虽然代码量大了但电工能自己查问题维护成本降了一大截。3. 1968到1980PLC技术定型的关键节点3.1 Modicon 084与第一代PLC的硬件架构Modicon 084的硬件架构在今天看来很原始但它奠定了PLC的基本框架。CPU是核心负责执行程序存储器分程序存储区和数据存储区输入输出模块负责跟现场信号打交道电源模块供电。这个架构跟今天的PLC没有本质区别只是集成度、速度和容量差了几个数量级。084的编程设备是一台专用的编程器不是电脑。编程器上有键盘和显示屏你输入梯形图指令它编译成机器码存到PLC的存储器里。程序存储用的是磁芯存储器容量很小大概几千条指令。我查过资料084支持的最大IO点数在几百点左右扫描速度是微秒级——注意是微秒级不是毫秒级。早期PLC的扫描速度其实不慢因为程序简单、IO少CPU负担轻。第一代PLC的输入输出模块有个特点输入模块通常用光电隔离输出模块用继电器或晶体管。继电器输出能直接驱动接触器、电磁阀但寿命有限动作频繁的场合容易坏。晶体管输出寿命长、响应快但只能驱动直流小电流负载驱动大负载得加中间继电器。这个选型逻辑到今天都没变——你选PLC输出模块时先看负载类型和动作频率再决定用继电器还是晶体管。3.2 梯形图标准化与IEC 61131-3的雏形1970年代各家PLC厂商的梯形图指令集互不兼容。Modicon有一套指令Allen-Bradley有一套西门子又有一套。你学了某家的PLC换一个品牌就得重新学。这种碎片化让用户很头疼也让PLC的推广受到限制。1979年国际电工委员会开始制定PLC编程语言标准这就是后来的IEC 61131-3。标准化的核心目标是让不同品牌的PLC能用相似的编程方式降低学习成本和迁移成本。梯形图被纳入标准成为五种官方语言之一。标准还定义了数据类型、变量、程序组织单元等概念让PLC编程从“各搞各的”走向“有章可循”。但标准化不是一蹴而就的。直到今天各家PLC的梯形图指令集还是有差异。西门子的定时器指令叫TON、TOF、TP三菱的叫OUT T0 K100汇川的又不一样。你换品牌时逻辑思路可以复用但具体指令得重新查手册。我个人的做法是把常用逻辑封装成功能块换品牌时只改功能块内部实现上层程序不动。这样迁移成本最低。3.3 循环扫描机制的固化与优化循环扫描机制在1970年代被固化下来但各家厂商在实现细节上有优化。比如有些PLC支持“中断程序”在扫描周期之外响应特定事件有些支持“立即输入输出”在程序执行过程中直接读写IO不等扫描周期结束。中断程序解决的是“快”的问题。比如一个高速计数应用输入脉冲频率很高循环扫描来不及采样就得用中断。中断程序独立于主程序运行触发条件满足时立即执行执行完回到主程序继续扫描。但中断程序不能太长否则会拖慢主程序扫描导致其他逻辑响应变慢。立即输入输出解决的是“实时”的问题。比如一个安全联锁输入信号变化后必须立即切断输出不能等扫描周期结束。这时候用立即输入指令读信号用立即输出指令写输出绕过映像区直接操作硬件。但立即指令用多了会破坏扫描的确定性非必要不用。我踩过一个坑在一个包装线项目里我用中断程序处理编码器信号主程序做逻辑控制。调试时发现偶尔会丢脉冲查了很久才发现是中断程序里做了浮点运算执行时间太长导致下一个中断来的时候还没执行完脉冲就丢了。后来我把浮点运算移到主程序中断程序只做计数问题解决。这个经验告诉我中断程序要尽可能短只做最紧急的事复杂运算交给主程序。4. 从PLC到SCADA工控软件生态的雏形4.1 PLC与上位机的通信需求PLC刚诞生时主要是替代继电器柜做本地控制跟上位机通信不是刚需。但到了1970年代末工厂开始有了“集中监控”的需求——中控室想看到现场设备的状态想远程修改参数想记录生产数据。这就催生了PLC与上位机的通信技术。早期通信用的是串口RS-232、RS-485是主流。RS-232传输距离短大概十几米适合PLC跟本地触摸屏或编程器通信。RS-485传输距离长可达一千多米支持多点通信适合PLC跟中控室的上位机通信。通信协议各家自定义Modicon有Modbus西门子有PPI、MPI三菱有CC-Link。Modbus因为开放、简单成了事实上的行业标准直到今天还在大量使用。我刚开始做项目时最头疼的就是通信。不同品牌的PLC协议不同上位机软件要装不同的驱动。有时候驱动版本不对通信就是连不上查半天查不出原因。后来我养成了一个习惯拿到新PLC先确认通信参数——波特率、数据位、停止位、校验位、站号这五个参数必须跟上位机完全一致错一个就通不了。再就是物理层RS-485的A、B线不能接反终端电阻该加就得加屏蔽线该接地就得接地。这些细节看着小但通信故障十有八九出在这些地方。4.2 SCADA的萌芽与组态软件的出现SCADA数据采集与监视控制系统的概念在1970年代开始成型。早期的SCADA就是一台计算机加一套通信软件轮询各个PLC采集数据显示在屏幕上。没有图形界面没有数据库就是简单的数值显示和报警打印。1980年代组态软件开始出现。组态软件的核心思想是“配置代替编程”——你不需要写代码只需要拖拽控件、绑定变量、设置动画就能做出监控画面。这个思路大大降低了上位机开发的门槛让电气工程师也能做监控界面不需要专门学软件开发。我用过的第一款组态软件是某品牌的早期版本功能很简单但已经能实现基本的数据采集、趋势曲线、报警记录。那时候做项目PLC程序加组态画面一个人就能搞定。现在组态软件功能越来越强但核心逻辑没变通信驱动加变量管理加画面组态加数据存储。4.3 通信协议与数据采集的实操要点PLC与SCADA通信最核心的是“数据映射”。PLC里的输入输出点、数据寄存器、定时器、计数器在上位机里都要对应到具体的变量地址。这个映射关系必须准确错一个地址上位机显示的数据就是错的。我整理过一个通信排查的速查表放在这里供参考故障现象可能原因排查方法通信完全不通物理层断线、参数不匹配检查线缆、确认波特率等参数通信时断时续干扰、终端电阻缺失检查屏蔽接地、加终端电阻数据错误地址映射错误、数据类型不匹配核对PLC地址表、确认数据类型响应慢轮询周期太长、站号太多优化轮询策略、减少站号个别站不通站号冲突、驱动不兼容检查站号设置、更新驱动这个表是我多年踩坑总结出来的基本上通信问题都能归到这几类。新手遇到通信故障按这个表逐项排查比盲目试错效率高得多。5. 那些年我们踩过的PLC选型与编程坑5.1 品牌选型不是越贵越好而是越合适越好国内工控市场主流PLC品牌分几个梯队西门子、三菱、欧姆龙、罗克韦尔属于第一梯队价格高、生态好、资料多汇川、信捷、台达属于国产主力性价比高、服务响应快还有一些小众品牌价格便宜但资料少、兼容性差。选型时不能只看价格。我见过一个项目为了省成本选了某小众品牌PLC结果编程软件不稳定通信协议不开放跟触摸屏连不上最后换品牌重做省下的钱全赔进去了。选型的核心逻辑是先看项目需求再看品牌生态最后看价格。如果项目是标准逻辑控制IO点数不多国产PLC完全够用。汇川的AM系列、信捷的XD系列我用过不少稳定性没问题编程软件也越来越好用。如果项目涉及复杂运动控制、大型分布式系统西门子、三菱的生态优势就体现出来了——功能块丰富、通信协议完善、技术支持到位。还有一个容易被忽略的点编程软件的兼容性。三菱老式PLC的FX系列编程软件FXGPWIN在Win7以上系统经常出问题得用兼容模式或者虚拟机。新项目尽量选新型号软件支持好别为了省几百块钱用老型号后期维护成本更高。5.2 编程习惯注释、命名、模块化PLC程序的可维护性很大程度上取决于编程习惯。我见过太多“天书”程序没有注释、变量名是X0、Y0、M0、D0逻辑跳来跳去别人接手根本看不懂。好的编程习惯包括三条第一变量命名要有意义。启动按钮就叫Start_Btn电机输出就叫Motor_Out别用X0、Y0。第二每个梯级要有注释说明这段逻辑是干什么的。第三程序要模块化把功能相关的逻辑封装成子程序或功能块主程序只负责调用。我自己的习惯是程序分三层——设备层、工艺层、调度层。设备层封装单个设备的控制逻辑比如一台电机的启停、故障处理工艺层组合设备层实现一个工艺动作比如“上料—定位—加工—下料”调度层负责整体流程和模式切换。这样分层后调试时只需要关注出问题的那一层不用通读整个程序。5.3 仿真与调试PLCSIM等工具的使用心得PLC编程离不开仿真和调试。西门子的PLCSIM、三菱的GX Simulator、汇川的AutoShop仿真都是常用的工具。仿真能在不接硬件的情况下验证逻辑节省调试时间。但仿真不是万能的。我遇到过PLCSIM Advanced启动不了的情况报错Error 11查了半天发现是虚拟网卡配置问题。PLCSIM Advanced需要虚拟网卡跟PLC实例通信如果虚拟网卡被禁用或者IP冲突就启动不了。解决办法是检查网络适配器设置确保虚拟网卡启用IP地址不冲突。仿真跟实际硬件还有差异。仿真的扫描周期跟实际PLC不同定时器精度也不一样。有些指令在仿真里能跑在实际PLC上可能因为硬件限制跑不了。所以仿真验证完逻辑后必须上实际硬件测试不能直接交付。调试时我习惯用“强制”功能。强制输入输出点模拟现场信号观察程序反应。但强制用完后一定要取消否则程序会一直按强制值运行现场信号进不来。我见过一个事故调试时强制了急停信号调试完忘了取消结果急停按钮按下去没反应幸好没出大事。从那以后我养成了一个习惯调试结束前把所有强制点列出来逐个取消确认无误再交付。6. 从1968到1980PLC给工控软件留下了什么6.1 梯形图思维的延续与局限梯形图统治了PLC编程半个多世纪到今天依然是中小型项目的主流。它的优势是直观、易学、易调试电气工程师能快速上手。但梯形图也有局限处理复杂运算和数据结构时很吃力程序规模大了之后可读性下降跨品牌迁移时指令集不兼容。现在越来越多的项目开始用结构化文本ST做复杂逻辑用功能块图FBD做过程控制用顺序功能图SFC做流程控制。但梯形图不会消失因为现场维护的人还是习惯看梯形图。我个人的判断是梯形图做逻辑ST做运算FBD做控制SFC做流程各取所长。6.2 循环扫描对现代工控架构的影响循环扫描机制奠定了PLC的确定性基础这个思想影响了后来的DCS、运动控制器、甚至一些实时操作系统。确定性意味着可预测可预测意味着可信任。工业现场最怕的就是“不确定”——你不知道下一秒设备会做什么那就没法保证安全。现代PLC在循环扫描基础上增加了中断、事件触发、多任务等机制但核心还是“扫描—执行—刷新”这个循环。理解了这个循环你就理解了PLC的行为逻辑。为什么输入信号变化后程序里要等一个扫描周期才能读到为什么输出刷新是批量的而不是实时的为什么程序顺序会影响执行结果答案都在循环扫描里。6.3 给PLC新手的三个实操建议如果你刚开始学PLC我建议你按这个顺序来第一先搞懂循环扫描机制这是理解一切PLC行为的基础。第二找一个实际项目练手哪怕是一个红绿灯控制、一个电梯控制把梯形图写出来、仿真跑通、实际接线验证。第三养成好的编程习惯变量命名、注释、模块化这些习惯越早养成越好。红绿灯控制是经典的入门项目我当年就是从这个开始练的。十字路口红绿灯东西向和南北向交替放行有倒计时、有黄灯过渡。逻辑不复杂但能让你理解定时器、计数器、状态切换、互锁这些基本概念。写完之后用仿真跑一遍看看时序对不对再上实际PLC验证。电梯控制稍微复杂一点四层电梯有呼叫、有楼层检测、有开关门、有方向判断。这个项目能让你理解状态机、优先级、队列这些概念。我见过很多新手卡在电梯项目上主要是状态切换逻辑没理清。我的建议是先画状态图把每个状态和切换条件列清楚再写梯形图。状态图清楚了程序自然就出来了。PLC从1968年诞生到现在核心思想没变过用软件逻辑替代硬件接线用循环扫描保证确定性用梯形图降低学习门槛。这三点是PLC的根基也是工控软件逻辑革命的起点。你理解了这三点再看今天任何品牌的PLC都能快速上手。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑