IEC 61131-3是工业自动化领域中第一个致力于规范化编程语言并获得全球广泛认可的国际标准,它独立于任何公司。
IEC 61131-3是IEC 61131系列标准的第三部分, 是一系列编程语言的语法语义的规范,包括软件的总体模型和结构体语言。
该标准编程资源由以下几部分组成:
第1部分:概述;
第2部分:设备的要求和测试;
第3部分:编程语言;
第4部分:使用指南;
第5部分:通信;
第6部分:功能安全;
第7部分:模糊控制程序;
第8部分:应用指南;
第9部分:通信接口;
另一种是将该标准分为如下两部分
1 、公共元素
2 、编程语言
▌公共元素
数据类型
数据类型是在公共元素中定义的,我们用它定义任何使用到的参数的类型。定义数据类型可防止因对数据类型的不同设置而发生错误。数据类型的标准化是编程语言开放性的重要标志。
常见的数据类型有:整型,布尔型,字节,比特,字, 日期,时间和字符串等。基于这些基本数据类型,可以自定义数据类型,称之为衍生数据类型。通过这种方式,可以自定义一个模拟输入通道作为数据类型,并且重复使用。
变量
在配置、资源或者程序中,指定变量的唯一目的是确定硬件地址(例如:输入和输出)。以这种方式创建一个高级别的硬件无关性,支持软件的可重用性。变量的作用域通常被限制在声明它们的组织单元中,例如,本地。这意味着这些变量名可以在其他作用域毫无冲突的重复使用,消除了另一类错误的来源。如果变量有全局作用域,就必须有声明。热启动和冷重启时可以为参数赋初值,以便有正确的设置。
配置、资源和任务
下图是标准中描述的软件模型,可以帮助我们更好的理解:
总体而言,用来解决一个具体控制问题的整个系统可称为一个配置(configuration),它包括硬件的布置,I/O总线的内存地址和系统功能。
一个配置中可以定义一个或多个资源,把资源看做一个能够执行IEC程序的加工设备。一个资源 中可以定义一个或多个任务,任务控制着一组程序或功能块的执行。我们可以周期性的执行任务,也可以在一个特定的触发事件发生(如变量变化)时执行这些任务。
在标准中,程序是最大的程序组织单元,它能在资源层被声明。典型地,一个程序由若干函数(如ADD(),SIN()和COS())和功能块形成的网络组成,它们能够互相交换数据。
函数和功能块是基本构建块,包含一个数据结构和一个算法。
经典PLC包含一个资源,一个任务,一个程序和一个闭环。IEC61131-3对其作出改进,使未来的 PLC具有开源性,未来的PLC包括多线程以及多事件驱动程序。
IEC61131-3适用于广泛的应用程序,而不需要学习额外的编程语言。
程序组织单元
在IEC61131-3标准中,程序、功能块和函数, 被称作程序组织单元(POU)。
函数
IEC定义了标准函数和用户自定义函数,标准函数有如ADD(ition) 、ABS(绝对值函数),
SQRT ,SINus和COSinus 。用户自定义函数定义后可以重复使用。
功能块, FBs
功能块相当于集成电路(ICs),表示一个具体的控制功能。功能块包含数据和算法,所以可以跟踪过去。它们有一个定义好的接口和隐藏的内部结构,像是集成电路或者黑盒一样。可以通过这种方式明确区分不同水平的程序员或者维护人员。温度控制回路或PID是功能块的一个很好的例子。一旦定义,便可以在同一程序,不同程序,甚至不同工程项目中重复使用。功能块可以用任何IEC语言来编写,多数情况下,甚至可以用C/C++ 。因此,用户可以自定义功能块。派生的功能块是根据标准功能块得到的,但是全新的、 自定义的功能块可能也符合标准,因为标准仅仅是提供了框架。
函数和功能块的接口以相同方式描述:
上述声明描述了一个拥有两个布尔输入参数和一个布尔输出参数的函数块的接口。
程序
由上述的基本构建块可知程序是一个由若干函 数和功能块形成的网络,可以由任何定义的编程语 言编写。
顺序功能图 SFC
SFC是用图表描述控制程序运行的顺序流程图。这是一个程序的内部组织结构,保持概览的同时,也有助于将控制问题分解成若干可管理的部分。SFC由若干步组成,这些步由动作块和转换线连接在一起。每一步都代表一个特定的系统状态。 转换与条件相关,当条件为真时,转换前,该步停止活动,下一步激活。步与动作块相连,执行某些控制动作。在任何IEC语言中,包括SFC本身在内, 每个元素都是可编程的。如通常所需的批处理应用程序,可以使用替代序列和平行序列。由于SFC的通用型结构,它为来自不同背景,领域或国家的人员提供了一个交流的平台。
▌编程语言
IEC 61131-3标准中定义了四种编程语言。这意 味着它们的语法语义同时被定义,不允许有非标准 语句的存在。这些语言包括文本和图形各两个版本:
文本:
. 指令集,IL
. 结构化文本,ST 图表:
. 梯形图,LD
. 功能块图,FBD
上图中分别用四种语言描述了同一个程序块。
编程语言的选择取决于:
. 程序员背景
. 面临的问题
. 问题描述的层次
. 控制系统的结构
. 与其他人/部门的接口
梯形图起源于美国,是基于继电器梯形逻辑图解表示的一种图表语言。
指令集起源于欧洲,它是与汇编语言类似的一种文本语言。
功能块图是工业过程中很常见的一种关系图,表达了块图中函数、功能块和程序间的相互关系。它从处理单元之间信号流的角度来研究一个系统。
结构化文本是一个非常强大的高级语言,来源于Ada ,Pascal和“C ”,它包含一个现代编程语言的所有基本要素,包括选择分支(if-then-else和case of)和迭代循环(for ,while ,repeat)。这些元素也可以嵌套。结构化文本的优势表现在复杂功能模块的定义上,并且该模块可用于其它编程语言中。
ST程序实例:
自顶向下与自底向上
此外,此标准允许用两种方式开发程序: 自上 而下和自下而上。可以从整个应用程序出发,将其分为子部分,声明变量等,也可以从基部出发开始编程,例如通过派生函数和功能模块。不管选择哪种编程方式,开发环境都会帮助你完成整个开发过程。
▌实现
IEC 61131-3的总体要求是不容易实现的。因此,标准允许在各个方面的部分实现,包括支持的语言数量,函数和功能块。这使得供应商有自由的选择空间,但用户在选择过程中应该清楚这点。另外,新版本有更显著的实现层次。
目前IEC编程环境提供所有你期望的功能: 鼠标操作,下拉菜单,图形化编程的屏幕,多窗口的支持,内置超文本功能以及在设计过程中验证等。请注意,标准本身并没有对此有详细说明:它是供应商可以区分不同产品的部分。
▌第三版本和面向对象的功能
随着第三版在2013年的发布,面向对象的功能被添加到标准。类、方法、接口和命名空间成为标准的一部分,这些术语把IEC 61131-3标准与新一代软件工程师联系起来,也将其与其它软件工具联系起来。
▌结论
IEC 61131-3标准的技术意义高远,并留下足够 的空间成长和分化,IEC 61131-3影响整个工业控制 行业:不仅是传统的PLC市场,还有运动控制市场,分布式系统和基于softlogic / PC控制系统,包括PACS 。而且这些领域还在不断成长,包括安全、通信和数据交换方面。
该标准拥有广阔的应用领域,为用户和程序员们带来众多便利。在此仅列出常见的几种,采用此标准的益处是多样的,这取决于不同的领域。
. 减少在培训、调试、维护和咨询方面人力资源的浪费;
. 通过高水平的软件复用性来创建一个解决问题的焦点;
. 减少误解和错误;
. 编程技术可用在通用的工业控制领域中;
. 结合来自不同项目,工程,地点,公司或是国家的部分形成自己的方案方法。