用IEC 61131-3规范控制系统编程

在工业控制的历史上,工业控制系统(ICS)编程(无论控制器类型)第一次可以使用相同的标准来实现,并且使用该标准创建的程序可以轻松地从一个符合标准的控制系统传输到另一个。

通过加里·普拉特 2017年3月2日

PLCopen根据IEC 61131-3标准,ICS用户可以自由选择最优的硬件用于他们的应用程序,不再局限于单一厂商的专有硬件,因为他们投资的软件是按照封闭的专有标准编写的。

IEC 61131-3国际工业控制编程标准的最新版本提供了用于详细可编程逻辑控制器(PLC)和可编程自动化控制器(PAC)编程的低级语言,以及用于创建和配置高级分布式控制系统(DCS)和工业PC (IPC)对象的面向对象语言特性。从低级的离散PLC编程到高级的连续过程DCS/S88编程——在相同的环境中使用相同的编程语言标准——iec 61131-3和现代开发环境允许ICS程序员完全模拟他们的程序和人机界面(HMI)屏幕,以确保系统在部署时有效。

控制工程师在编程工业控制器的工具和技术方面面临着令人生畏的各种选择。工具沿着不同的轨迹发展,部分原因是它们被要求完成的任务,但主要原因是早期硬件的限制、应用程序竖井中工具的发展、每个自动化供应商的专有特性以及缺乏国际标准。幸运的是,现代硬件和现代标准,包括IEC 61131-3、PLCopen和OPC-UA,使得在相同的环境下,在相同的标准下,从PLC,通过PAC,安全,远程终端单元(RTU),运动,IPC, DCS,一直到S88/S95,开发ICS应用成为可能(见图1)。不再需要学习和使用不同的工具来满足不同的工业控制需求。

同样地,使用这些现代标准,不再需要被锁定在单个专有硬件供应商和相关的专有软件中。使用IEC 61131-3和PLCopen标准开发的ICS应用程序可以从一个兼容的集成开发环境(IDE)传输到另一个。据最新统计,超过350家原始设备制造商正在使用符合IEC 61131-3/ plopen标准的平台。20世纪80年代,早期的PC厂商提供自己的操作系统,直到与微软和苹果合并;20世纪90年代,早期的智能手机厂商提供自己的操作系统,直到与Android和iOS合并。在ICS应用程序编程世界中,类似的整合正在进行,因为统一的标准和方法是可用的。

IEC 61131-3工具

IEC 61131-3提供了传统的中继阶梯逻辑(LD)和扁平内存空间,以方便程序员从旧工具过渡。但是,IEC 61131-3还包括了用于创建高级应用程序的结构化和面向对象的编程工具,这让进入该行业的新一代工程师松了口气,因为他们一想到用曾祖父母的语言编程就感到恼火。这些工具包括三种新的编程语言:与语言无关的分层函数块、符号分层寻址、指针、方法、继承和接口。

除了传统的LD之外,新的IEC 61131-3语言还包括结构化文本(ST)、顺序功能图(SFC)和连续功能图(CFC)。梯子仍然是一个很好的工具,因为它最初是在近一个世纪前发明的:简单的离散逻辑,可以在继电器和计时器中实现。对于顺序操作或基于状态的操作(下一个操作取决于历史记录和输入),SFC是一种很棒的语言。CFC是一种新的图形语言,是一种用于放置和连接预构建或自定义构建块的优秀高级工具。CFC具有相同的目的,但它是一种比在阶梯逻辑中放置库块或附加指令更好的选择。ST适用于所有其他编程(循环、条件、复杂数学、位操作等)。

功能的灵活性

IEC 61131-3的强大功能允许同一语言创建程序,小到PLC电机控制器,大到DCS过程装置。例如,电机控制器可以在图2所示的阶梯中实现。或者,因为它的行为依赖于它的历史,所以在SFC中实现可能更有意义,SFC实现可以使用在SFC中实现的状态、LD中的转换和ST中的操作的最佳语言组合(参见图3)。

低级别的模型,如电机控制器,可以组装成高级别的模型。这些构建块可以是流程库中的定制模型或对象。图4显示了如何从混合罐模型构建整个DCS过程装置,混合罐模型是由输入传感器、控制、PD泵和泵对象构建的,这些对象本身是由较低级的对象构建的。控制对象也是从较低级别对象构建的,其中包括管理冲洗和填充的SFC,以及管理PD泵和泵控制环路的控制块。这些控制块由ST实现的自定义块组成,该块减去输入流量值的积分和PD泵脉冲的累积之间的差值。该块的输出驱动来自免费的自动化技术开源控制库OSCAT的低通过滤器,然后驱动OSCAT比例-积分-导数(PID)块。

IEC 61131-3层次化设计技术不仅使装置控制易于设计,而且设计结果对装置维护非常有用。假设一名工厂技术人员被叫去处理工艺区3的混合罐2中的二氧化硅PD泵电机的问题。技术人员可以从顶部开始,双击每个块,如图4所示,直到到达控制和设备视图上的二氧化硅PD泵,或者通过设备视图直接到达那里。

在那里,技术人员检查PD泵的输入,以验证电机是否被命令运行。如果是这样,技术人员将深入到PD泵及其电机模型中,查看电机不运行的原因。如果没有命令电机运行,那么技术人员将向下钻到上游控制块,以确定为什么在运行电机之前顺序卡在状态中。因为控制代码反映了工厂层次结构,所以导航到控制代码的适用区域是很直观的。而且,由于所有物理输入/输出(I/O)都位于设备模型中,因此查找和修复问题也很直观。不需要对工厂技术人员进行复杂程序的培训,以解决复杂的控制代码问题。

更进一步,继承和指针可以直接用于实现IEC 61131-3中的S88和S95建模技术,这将变得越来越重要,因为不同的控制平台被批量部署,企业范围的集成方案涉及连接的资产(见图5)。左侧显示了一个包含所有设备通用的I/O和功能的设备基类如何被多个单元类继承——这些单元类定义了类的I/O和阶段——它们自己也可以被多个设备类型继承——这些设备类型还定义了该类型的唯一操作。阶段(使用类似的类结构构建)定义了在设备单元类上可能存在的操作。然后将这些阶段实例化到它们有效的设备单元类中。操作、过程、模块和流程单元的结构类似地构成了一个完整的S88系统。

图5的右边显示了这个类层次结构的对象是如何在项目中实例化的。基类收集有关设备及其相关阶段的信息,并将这些信息记录在注册表中。然后,该注册表通过OPC-UA提供给批处理服务器,后者使用此信息确定在何处以及如何实现批处理过程。

基于选定的配方和空闲设备,批处理服务器然后通过OPC-UA将选择发送回主程序,然后使用存储在注册表中的指针在所需的设备上执行所需的阶段。由于继承,基类操作的复杂性对程序员来说是隐藏的。程序员所需要做的就是组装区分设备类型的库块。或者,使用动态对象,也可以从批处理服务器配置该结构。

检验在测试中

当然,只有经过测试并证明是正确的,ICS设计才算完整。幸运的是,IEC 61131-3及其实现中的特性提供了工具,使这一步非常容易。图6显示了如何组装工厂模拟块以创建完整的工厂模拟模型,该模型可以与物理I/O交换地连接到控制代码中。

然后,控制和仿真代码可以在基于pc的运行时模拟器上执行,这样在购买任何硬件之前,就可以证明整个系统的控制应用程序是无错误的。使用PC-runtime的OPC-UA服务器还可以设计和测试HMI屏幕。这使得在安装或调试开始之前,ICS设计是完整和正确的。

加里·普拉特基岩自动化公司的应用工程经理。由CFE媒体内容经理杰克·史密斯编辑,控制工程jsmith@cfemedia.com

更多的建议

关键概念

  • 最新版本IEC 61131-3控制编程标准为可编程逻辑控制器(plc)、可编程自动化控制器(pac)、分布式控制系统(dcs)和工业pc (ipc)对象提供了语言。
  • IEC 61131 - 3语言包括传统的中继梯形逻辑(LD)、结构化文本(ST)和顺序功能图(SFC)。
  • IEC 61131-3分级设计技术使植物控制易于设计,并导致对植物维护非常有用的设计。

考虑一下这个

想想看这就像实现工业控制系统(ICS)编程一样,无论控制器类型如何,都可以在控制系统之间传输。

在线额外

请参阅下面的相关文章,提供有关IEC 61131-3和面向对象编程(OOP)的更多信息。