PLC编程进化论:从梯形图到现代语言的自动化编程之路

来源:贸泽电子 工业自动化 6 次阅读
摘要: *图源:stock.a*dobe 可编程逻辑控制器(PLC)的发展史,正是工业革命与信息革命交汇的缩影。自20世纪10年代初装配线问世以来,制造业始终致力于实现快速、可靠且可重复的生产模式。第一次工业革命时期的工厂仅依靠机械动力和电力来解决大规模生产难题。当装配线无需频繁调整时,这种模式运行良好。但到20世纪60年代,汽车行业每年都要配合新车型调整装配线,这就需要技术人员手动为传感器和电磁阀重新

*图源:stock.a*dobe

可编程逻辑控制器(PLC)的发展史,正是工业革命与信息革命交汇的缩影。自20世纪10年代初装配线问世以来,制造业始终致力于实现快速、可靠且可重复的生产模式。第一次工业革命时期的工厂仅依靠机械动力和电力来解决大规模生产难题。当装配线无需频繁调整时,这种模式运行良好。但到20世纪60年代,汽车行业每年都要配合新车型调整装配线,这就需要技术人员手动为传感器和电磁阀重新布线。与此同时,初生的计算机产业已发展成熟,能够提供兼具物理稳健性与成本效益的解决方案。汽车制造商开始安装现代PLC的前身硬件设备,让技术人员无需再把装配线的线路推倒重来,而是只需上传新代码就可以改变生产流程。

至少,理论上的设想是如此的。

本文将探讨根据国际标准IEC 61131-3定义的现代PLC编程方案。但由于各家PLC制造商都提供专用于其特定硬件的编程软件,因而在编码技术上会存在细微差异。

早期自动化编程:继电器与硬接线时代

图1(图源:Freepik)

这些PLC的前身,包括各类机械、电气和电子控制系统以及气动和液压控制装置,在初期都运行良好,但它们存在一个严重缺陷:要想重新编程,就需要掌握汇编语言或Fortran编程语言,但负责维护和更新这些系统的电工和机械师并非程序员。他们使用的是一种名为梯形图的语言。后来,电子工程师重返设计舞台,推出了第一代PLC。此后数十年间,虽然引入了多种编程方法,但梯形图至今仍是工业领域的主流编程方式。

梯形图的诞生:图形化逻辑的革命

图2(图源:Freepik)

梯形图最初用于直观记录制造和流程控制中继电器机架的设计与构造(图3),其形态类似于继电器逻辑硬件的原理图。梯形图以两条竖线绘制的母线为起点,其间的水平线(指令线)代表逻辑行。输入符号(称为触点)对应传感器、开关和按钮,位于梯级的左侧和中央区域;而输出符号(称为线圈)包括电机、继电器、指示灯或警报器,则置于梯级右侧。通过排列触点和线圈形成输入间的逻辑关系(如与、或、非),并将其连接至输出端,即可实现系统的控制逻辑。

图3:梯形图示例。(图源:Green Shoe Garage)

两种常见的输入逻辑符号是“常开触点”(EON,有时也称为“闭路检查”或XIC)和“常闭触点”(EOF,也称为“开路检查”或XIO)。EON既可以表示常开触点,也可以表示缓冲器;而EOF既可以表示常闭触点,也可以表示反相器。最后,输出逻辑符号称为输出线圈(OUT)(图4),它只有一种含义:为输出线圈控制的任何输出设备供电。

图4:常见梯形图符号。从左至右:常开触点(EON)、常闭触点(EOF)和输出线圈(OUT)。(图源:Green Shoe Garage)

当输入以并联方式排列时,其逻辑表达等同于“或”(OR)运算;反之,当输入以串联方式排列时,则构成“与”(AND)关系。另一项关键要点是:梯形图中每个输出点仅能出现一次,以确保每个输出状态仅由单一输入序列控制。

PLC以“程序扫描周期”的方式运行,并且会反复执行程序。平均而言,PLC需要数十毫秒来处理所有输入和指令,然后改变输出以反映当前机器状态。梯形图控制程序通常按从左到右、自上而下的顺序读取。扫描周期通常遵循以下流程:

  1. 读取输入

  2. 执行程序

  3. 写入输出位

梯形图编程需要遵循一些重要原则:

  • 合理组织梯形图代码,确保逻辑流畅且易于理解。相关的功能应归类分组,并使用子程序实现代码模块化。

  • 限制逻辑行的大小,过于复杂的逻辑行会增加故障排查难度。复杂逻辑应分解为更小、更易管理的步骤。

  • 切勿通过在PLC软件中编程来实现紧急停止功能。编程时应考虑程序在传感器故障等意外事件中的行为,并设计失效安全操作机制以降低风险。紧急停止装置必须通过硬接线方式接入设备配电系统。涉及生命安全问题时,绝不可依赖PLC本身实现防护。

  • 将输入端连接至缓冲器或反相器,以便通过软件调整而非重新布线来实现功能变更。谨记:工业领域中,设备停机将带来巨大的经济损失和人力成本。修改代码远比重新布线更为便捷。

  • 始终贯彻一致的逻辑原则。例如,若启动条件使用常开(NO)触点,则后续类似功能应继续使用常开触点,除非有特殊原因需要改变。同样地,若使用计数器,也应该相应采用递增或递减计时器。

  • 理解内存映射(亦称数据表)。由于PLC是内存受限设备,且采用硬连线内存地址进行I/O操作,因此成功的编程需要开发者深入掌握内部内存结构。相较于桌面应用程序等其他软件开发类型,这种要求更为严格。此外,不同数据类型(部分厂商称之为文件类型)由不同位数表示。内存各组件采用特殊的字符标识,例如:

  • O:3.1/0

  • [文件类型或编号] : [元素编号] . [字编号] / [位编号]

其中,文件类型/编号代表数据类型,如输入、输出或计数器。元素编号代表I/O插槽。若数据为多字的类型,则字编号表示需访问的具体的字。最后,位编号表示该字中需要访问的具体位。因此,本例表示第三输出插槽中第二个字节的首位。再次强调,不同供应商的格式可能存在差异,但关键在于必须精确掌握各个位应在何处设置,尤其对于外部I/O而言。

超越梯形图:文本化与高级语言的演进

图5(图源:pexels)

除梯形图外,IEC 61131-3标准还规范了另外两种图形化PLC编程方法:功能块图(FBD)和顺序功能图(SFC)。该标准还详述了基于文本的结构化文本编程法,这是一种语法类似Pascal的块结构化编程语言。需要注意的是,Arduino也为其Opta系列PLC推出了基于Arduino(本身是C语言封装)的编程方法。其他PLC供应商已开始弃用专有编程语言,转而采用Python、Java和C++等通用语言。

结构化文本编程方法在PLC领域日益受到青睐,众多企业正借此推动其制造流程兼容工业物联网(IIoT)。相较传统非联网工厂自动化技术而言,IIoT(无论连接互联网还是大型私有广域网)既具备吸引部分制造商的优势,也存在某些风险。

随着IIoT的兴起,现代PLC已具备更先进的网络功能,可轻松接入互联网并与IIoT生态系统中的其他设备通信。这包括对多种通信协议的支持,如MQTT、AMQP和OPC UA,这些协议对于实时云连接和数据交换至关重要。其优势体现在多个方面,包括企业资源规划(ERP)系统集成、数字孪生构建、预测性维护以及远程监控等应用场景。

相关推荐
评论区

登录后即可参与讨论

立即登录