IEC61131-3来了!工控历史上第一次实现控制系统(无论PLC还是DCS)统一编程
在工业控制的历史上,第一次实现工业控制系统的编程可以使用相同的标准(无论控制器为何种类型),而且根据该标准创建的程序可以很容易地在合规的不同控制系统之间进行复制使用。
有了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上开发ICS应用程序,这个过程可在相同的环境、相同的标准下通过PAC、安全、远程终端设备(RTU)、运动、IPC、DCS、以及S88/S95来实现。没有必要再为不同的工业控制需求而学习和使用不同的工具了。
图1:IEC 61131-3 提供的传统分段传递式梯形逻辑(LD)和平面内存空间可以方便转换从更老的工具拷贝过来的程序。本文图片来源:Bedrock自动化
同样的,有了这些现代标准,没有必要再锁定在专属硬件供应商以及相对应的专属软件之上。使用IEC 61131-3以及PLCopen标准开发的ICS应用程序可以在合规的不同集成开发环境之间复制使用。
根据最新统计,符合IEC 61131-3/PLCopen标准的平台已经被超过350家OEM厂商使用。类似的事情可以追溯到20世纪80年代,那时候早期的PC供应商提供他们自己的操作系统,直到合并到微软和苹果系统中,或者在20世纪90年代,当时早期的智能手机供应商提供他们自己的操作系统,直到合并到安卓和iOS系统中。ICS应用程序编程世界中类似的整合正在进行中,现在可以使用统一的标准和方法。
新的编程语言
IEC 61131-3 提供的传统分段传递式梯形逻辑(LD)和平面内存空间可以方便转换从更老旧的工具拷贝过来的程序。不过IEC 61131-3也包括创建高级应用的结构型及面向对象的编程工具,让刚进入工业领域的新一代工程师大大地舒了口气,他们一想到要使用他们祖辈们使用的语言进行编程就会浑身不舒服。这些工具包括三种新的编程语言、独立于语言的分层功能块、使用符号的分层寻址、指标、方法、继承以及接口。
除了传统的LD,新的IEC61131-3语言包括结构性语句(ST)、顺序功能图(SFC)以及连续函数图(CFC)。对于在将近一个世纪之前最初发明的梯形图来说,它仍然是一个好工具:可以用继电器和计时器实现简单的离散逻辑。对于顺序或基于状态的操作(适用于下一步动作取决于历史和输入的任何情况)来说,SFC是一个很好的语言。CFC是一种新的图形化语言,对于预先创建的或定制创建的功能块的放置和互联来说,它是一个极佳的高水平工具。CFC工作的目的是一样的,不过对于在梯形图逻辑中放置库数据块或附加说明来说,它是非常出众的选项。而ST则适用于所有其他程序(回路、条件句、复杂数学、位操作等等)。
灵活性特征
IEC 61131-3的强大特性可以使用相同的语言技能创建像PLC马达控制器之类的小程序,也可以创建像DCS过程工厂一样的大程序。例如,一个马达控制器可以像图1中那样使用梯形图实现。或者因为其动作取决于历史状态,用SFC来实现会更讲得通。使用SFC编程的时候可以使用各种语言的最优组合:在实施状态逻辑时使用SFC、在过渡逻辑中使用LD、在动作逻辑中使用ST(请见图2)。
图2:IEC61131-3 独立于语言的属性使得马达控制器可以因其应用目的而采用最佳的语言。
诸如马达控制器这样的低级模型可以组合起来成为更高级的模型。这些搭建的功能块可以是定制的模型或来自于工艺库的对象。图3展示了如何通过混合罐模型建立一整个DCS过程工厂,该模型是由输入传感器、控制、PD泵以及泵对象所建立的,而这些组成部分都是由低级对象构建的。控制对象也是由低级对象构建的,其包括一个管理冲水和注水的SFC、以及管理PD泵和泵控制回路的控制块。
这些控制块是由采用ST编写成的定制功能块所构建的,ST消除了输入流量值的积分与PD泵脉冲的累积之间的差值。功能块的输出驱动来自于自动化技术开源社区 (OSCAT)的开源控制库的低通滤波器,然后它会再驱动一个OSCAT的比例-积分-微分(PID)功能块。
IEC 61131-3 层级设计技术不仅简化了工厂控制的设计,而且其设计结果会对工厂维护非常有用。想象一下一位工厂的技术员被要求去处理工艺3号区域的2号混合罐内的一台硅土PD泵的马达故障,技术员可以从顶部开始,然后仔细检查每一个图3中所示的功能块,直到在控制和设备画面中找到硅土PD泵,或者可以通过设备画面直接找到它。
图3:工厂视图、控制和设备视图让人们很简单地了解与工厂的层级直观匹配的架构,通过了预测试的库模块的层级设计简化了复杂的DCS设计和维护。
到了那里以后,技术员会检查PD泵的输入信息,确保马达收到的是运转的指令。如果是这样,技术员会进一步挖掘PD泵的内部以及其马达模型内部,来查出马达为何不运转。如果马达没有收到运转的指令,技术员会挖掘到上游的控制模块来确定为什么执行顺序卡在了马达运行之前的状态。因为控制代码直接反映了工厂的层级关系,因此可以很直观地找到控制代码所适用的区域。而且,因为所有的物理输入/输出信号(I/O)都位于设备模型内,查找并解决问题也是直观的。不需要针对复杂控制编码的故障排查所需要的复杂程序来培训工厂技术员。
更进一步,可以直接在IEC 61131-3里面使用继承和指针来实施S88和S95的建模技术,随着不同的控制平台成批的进行部署以及涉及联网资产的企业范围内的整合方案,这种做法变得越来越重要(请见图4)。图4左边的部分显示的是包含了I/O的设备基础类型以及所有设备通用的功能如何可以为多个单元类别(定义了I/O和类别的不同阶段)所继承,而且它们自身也可以为多个设备类型(定义了那种类型独特的运行方式)所继承。
图4:IEC 61131-3的面向对象编程的特性包括继承、接口、以及指针,为S88批处理过程提供了简单的执行。
使用类似的类别结构建造的各个阶段定义了操作方式,在设备单元类别方面是可能的。这些阶段继而实例化为设备单元类别,它们会因此而有效。类似地,操作、步骤、模块以及过程单元的结构方式使其可以构成完整的S88系统。
图4的右侧显示了这个类别层级的对象如何实例化到项目中去。基础类别收集关于设备的信息以及与之相关联的阶段,并且将这些信息记录在一个注册表中。然后批处理服务器通过OPC-UA可以访问这个注册表,批处理服务器使用这些信息来确定在哪里以及如何实施批过程。基于对方法和闲置设备的选择,批处理服务器继而通过OPC-UA将已选项回送给主程序,主程序会使用存储在注册表中的指针在目标设备上执行目标阶段。
得益于继承功能,基础类别操作的复杂性不用让程序员看到。程序员需要做的就是将区分设备类型的库模块组合起来。或者,使用动态对象,该结构也可以从批处理服务器上进行配置。
验证在测试当中
当然,任何ICS设计只有在经过测试并被证明正确之后才算是完成了。幸运的是,IEC 61131-3的特性及其实施所提供的工具极大地简化了这个步骤。图5显示了工厂仿真功能块如何可以组合成一个完整的工厂仿真模型,该模型能够连接到可以与物理I/O交换的控制代码。
图5:IEC 61131-3的面向对象的特性以及内置的全功能仿真器在项目实施之前提升了控制和人机界面的确认及验证。
接下来控制和仿真代码可以在基于PC的运行模拟器上运行,因此在购买任何硬件之前,整个系统的控制应用软件可以被验证是否没有故障。使用在PC上运行的OPC-UA服务器也可以实现HMI屏幕的设计和测试。其结果是在安装或调试开始之前就确保了ICS设计的完整性和正确性。
本文来自于《控制工程中文版》(CONTROL ENGINEERING China )2017年10月刊《技术之源》栏目,原标题为:使用 IEC 61131-3 对控制系统进行标准化编程
————本期杂志封面————