分布式自动化控制系统在PLC编程上的进展外文翻译资料
2022-07-22 13:01:08
英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
分布式自动化控制系统在PLC编程上的进展
摘要—工业自动化设备基本上由PLC控制系统控制的。 在今天 ,PLC的编程大多是基于IEC 61131-3标准,PLC编程还没有准备好迎接广泛分布式自动化系统这个新的挑战。目前,行业和研究的不同解决方案正在开发中:包含面向对象的编程的IEC 61131-3标准;采用新的IEC 61499标准,使软件执行基于事件而不是基于IEC 61131-3标准。 在本文中,展示了面向对象的编程怎样使PLC软件行为基于事件。此外,在文章将展示出监督控制在设计正确的软件起什么样的作用。
I.介绍
目前,可编程逻辑控制器(PLC)编程主要是基于国际电工委员会(IEC)61131-3标准[ 1 ]。本标准不符合面向对象编程(OOP)的要求使得大型分布式系统的编程相当困难。事实上,标准目前正在修订以克服这一缺陷。IEC 61131-3中已经包含了一个简单的模块的概念,功能模块(FB)具有一个内部状态,这种状态的常规操作它可以被实例化多次。因此,拓展现有具有面向对象特征的FB是将面向对象引入IEC 61131-3的方式。
OOP已经证明在处理复杂的软件开发问题和灵活的可重用的软件组件的制造上的能力。然而,PLC并不是通用的计算机系统,为了使OOP工具面向工业自动化领域应满足额外的要求:I / O配置和直接访问I / O信号;多范式编程,即对象编程应该是可选的,以向OOP提供逐步和可逆的转换;面向对象程序设计应添加到当前的IEC 61131-3标准,避免一个严峻的学术问题;基于IEC 61131-3标准的面向对象程序设计应该提供所有的语言支持,如此便可以使用文本和图形语言,其中图形是非常有用的编程方法。
一些编程环境以及支持了面向对象的工业自动化的编程,例如见参考文献[ 4 ],[ 5 ]。在现有的技术水平上,只有CoDeSys V3N软件可以用来编程的一个多数指定的工业设备(见[ 5 ]详情)。CoDeSys符合上述的OOP编程工具的附加要求;它扩展了IEC 61131-3 功能块为同一类构造的方法的同时;它介绍了多态引用语义抽象功能块的界面构建。
另一方面,还有另一个IEC标准IEC 61499 [6]。本标准建立在IEC 61131-3 FB的概念之上,以提供与实现分布式控制标准。一篇很好的文章[7]介绍了如何使用IEC 61499的控制器,而文献[8]给出了在工业设置中使用IEC 61499控制器的实际运用的介绍。 IEC 61499标准中的应用模型是互连FB的网络的,因此,这里核心的FB模型需要简单的回顾,FB具有明确定义事件和数据输入和输出的接口的功能,事件输入用于激活块,事件输出用于将事件传播到其他块。数据输入和输出用于在块之间传递数据值。FB的行为由执行控制图(ECC)定义,执行控制图(EC)由执行控制(EC)状态,EC转换和EC操作组成。ECC基本上描述了摩尔型有限状态机,只要FB接收到输入事件,就会评估状态之间的转换条件。这样的条件使用输入事件和/或布尔保护条件来表示。当满足相关联的保护转换时,发生两个状态之间的转换。因此,每当ECC由输入事件触发时,响应于该事件,ECC内可能发生一系列转换。每个ECC状态可以与零个或多个动作相关联,这些动作可以包括以IEC 61131-3语言编写的算法,并且在算法完成时发布的可能的输出事件以及与这样的事件相关联的数据输出被更新。与给定状态相关联的动作将在进入状态时执行一次。 IEC 61499标准的优点之一是FB行为是基于事件的,而在IEC 61131-3中,它取决于循环扫描的程序执行。 ISaGRAF [9]允许开发符合IEC 61131-3或IEC 61499标准的程序。 然而,由于很多原因,这个标准尚未被业界接受[10]。
为了建立IEC 61131-3的应用程序和库,花费了大量的人力和资金,这使得难以采用新的标准或新的范例,至少在未来,除非与IEC 61131-3有一定兼容性的才会得以保留[11]
在本文中,将展示如何使用扩展了OOP和新FB模型的IEC 61131-3实现PLC程序的基于事件的行为。 实际上,使用OOP事件处理程序将被实现为当时间正确时,即根据期望的顺序被调用的对象的方法。。
如果采用OOP方法,PLC程序将由FB组成,其执行是并发的,并通过调用方法调用。因此,根据事件的发生,有必要调用匹配事件处理程序来处理它。这变成了PLC程序的主循环的作用。为了设计这样的主循环,需要一种正式的方法,因为并发性和对所需事件序列的逻辑约束使得这不是一件容易的事情。这有助于解决在工业实践中常见的趋势之间找到妥协的问题[12],试图直接构建控制应用程序,而不是从控制系统行为的正式定义和控制规范中合成控制器 如Ramadge和Wonham [13]。 注意,每个FB也有一个主循环,所以也可以使用相同的方法来设计它。 然而,这个任务通常并不复杂,在本文中,建议使用IEC 61131-3编程语言之一的SFC来解决这个问题。
(PN)已被证明是一个有前途的工具,用于分析和合成并发软件[14],[15]。这里提出了初步结果,以解决文中工业控制下PNs的程序段(例如:PLC编程主循环)确保并发进程满足所需的排序和逻辑约束的问题
这里假设读者熟悉PN和监督控制的基本知识。 有关详细信息,读者可以参考[16]和[17]。
II. IEC 61131-3功能块修订
顺序功能图
顺序功能图(SFC)是最常用的IEC 61131-3编程语言之一[1]。基本组件是:由矩形框表示的步骤,由水平条和定向弧表示的过渡由线表示。步骤可以是活动的或不活动的;步骤的状态由可以用于构造逻辑条件的布尔变量表示。转换具有相关的触发条件。如果所有具有到转换的输出弧的步骤并且与此转换关联的条件为真,则转换触发:在其被停用之前的所有步骤以及在其被激活之后的所有步骤。初始步骤由双重方框表示。动作包括简单的设置布尔变量的值或者在执行IEC 61131-3算法时的值可以与每个步骤相关联:它们表示当步骤活动时在系统中执行的操作。图3a)给出了SFC的一个例子。 START是初始步骤。如果REQ S1为真,则服务1被激活并且START被去激活。当SERVICE 1激活时,变量S1设置为true。
B.一个新的FB模型
本文提出了一种新的FB模型,它是通过IEC 61131-3标准中的定义得出的。 扩展基于两个主要概念:FB是对象; FB可以具有基于事件的行为。 在下面将讨论这两个概念。
FB是一个软件对象。 除了已知的IEC 61131-3 FB元件(声明,实现)之外,还定义了方法和属性。 方法和属性形成FB的外部视图(见图1)。 在FB仅限于一个程序操作之前。 方法和属性通过明确指定FB的外部视图(与其内部视图(局部变量)相反)强调模块化和封装的方面。
每个方法都包含一个自己的声明和实现部分。 请注意,方法具有局部变量,但它不会在两个PLC周期之间存储数据。作为事件处理程序的每种方法,调用时会修改FB状态并产生输出变量的新值。 这就是为什么假定在输入/输出事件和数据(辅助数据和现场数据)中组织输入/输出变量,图1中的OOP FB模型可以解释图2中基于事件的功能模块模型。
图1.面向对象编程中的功能模块模型
图2.基于事件的功能模块模型
属性启用对FB的内部变量的受控访问。 属性具有数据类型。 它不是FB的变量,但它可以访问其内部变量。 它提供一个抽象的,内部对象数据的外部视图。当从FB的外部读取属性时,接收访问器被隐式调用。 当写入属性时,隐式调用设置访问器。 访问器(get / set)类似于方法,除了它们只显示局部变量。 在访问器的实现部分中。 可以定义值检查或算术运算。 这在自动化上下文中可用于以所需单位或转换输入变量的值以获得导出变量。
方法,属性和输入/输出变量可以由标准点符号(例如,nameFB.namemethod)使用。
不同于IEC 61131-3和IEC 61499,由于FB是对象,它们可以通过继承来构造。新的FB继承旧FB的所有变量和方法,并且可以定义附加变量和/或方法.FB对象还具有主体(有时称为主循环),它来自标准IEC 61131-3定义。每次调用FB时都会执行FB主体(注意这与调用方法不同)。
在本文中,建议使用FB体来实现基于事件的行为。这是通过在体中包括用SFC编写的程序来实现的,称为执行控制SFC(ECSFC),其作为IEC 61499 FB所要求的ECC。
ECSFC必须仅根据被视为服务请求的事件输入来改变其活动步骤。每个服务请求将通过用可用语言之一编写的算法在主体中实现。与ECSFC活动步骤相关联的动作必须允许执行相应的算法,从而满足请求。算法的完成是必须输出的事件(它是输出事件)。
作为示例,考虑图3a中的SFC图,其激活图3b中的算法(仍然在SFC中实现)。 这是通过设置布尔变量Si,其与SFC i的初始步骤的唯一输出转变的条件相关联。 SFCi表示执行服务Si的算法。 因此,图3a中的SFC图充当ECSFC; 3a中的SFC图和3b中的SFC图根据需要实现基于事件的行为。
(a)
(b)
图3.(a)执行控制SFC;(b)SFC执行服务请求
如果可以使用分层SFC来编程ECSFC,则可以获得改进。 分层SFC允许图形直接修改另一个图形的状态。 层次结构提高了SFC建模能力,解决了控制算法设计中的一些非常重要的问题[18]。 在[19]中介绍了如何实现分级SFC,即使这在编程环境中不可用。 特别地,在分级SFC,SUSPEND和FORCE中可用的两个宏操作是非常有用的,因为它们的使用允许挂起和重置服务(在图3a中使用两个宏操作)。
除了已知的OOP的优点(可重用性,数据封装等),所提出的FB模型的优点是:
服务以及相关联的算法仅通过相关联的事件显式地调用时才被执行在 IEC 61499。这允许克服由于循环扫描程序执行的FB的不同行为,循环扫描程序执行这是IEC 61131-3体系结构的核心概念,但同时,这样设计的代码完全符合IEC 61131-3标准。
如果编程环境允许OOP,编码仍然完全符合IEC 61131标准。
服务请求的协调被委托给不具有对进程的直接控制的外部代理(这被委托给与该字段具有直接接口的FB)。
事实上,服务的协调,例如资源分配问题,需要一种正式的方法,它不使用现场数据。这使得特定的而且不易重复用一个FB是必须去执行大量的协调工作。
一个FB不同的执行模式通过输入事件可以很容易地使用选择它们。
III.FB设计
在OOP中的FB设计方法
这是不可能通过一个方法对序列进行编码,因为它不会在两个PLC周期之间存储数据。 这是目前的局限,至少在自动化上下文中。 事实上,如果为设备定义了FB类,状态序列对其执行的相关动作可以仅在FB的主体中实现。 添加新操作意味着重新定义设备类。
在本文中,建议将每个操作分为FB(OFB)的单独类去实现,而基本设备功能在称为设备FB(DFB)的类中实现。 如果需要更复杂的设备,可以定义新的DFB,它继承现有DFB的所有方法和属性,并通过新的方法和属性扩展它。
假设有一个名为SILO的DFB,其对于某一筒仓类型实现了基本操作,例如其输入和输出阀的打开和关闭以及其传感器测量的转换,以及名为FILLING的OFB,其实现顺序填充筒仓。下面是代码:
VAR
S1:SILO;
FIL1:FILLING(PTSILO:=ADR(S1));
END VAR
允许创建名为FIL1的OFB FILLING的实例,该实例在输入中接收指向S1的指针,该指针是DFB SILO的实例(ADR保持用于地址运算符,PTSILO是指向SILO对象的指针)。 这允许通过标准点符号(例如,PTSILO ^:namemethod)在FIL1内部使用S1的方法或属性。
以这种方式,使用OOP的所有好处:可以添加操作,仅仅为新操作定义新的OFB类。
此外,DFB和OFB之间的区别有助于高度重用与场直接接口的DFB。 注意,设备FB可以没有输入事件,但是它确实具有现场数据,因为它提供现场服务(例如打开阀,启动电动机),而OFB可以没有现场输入/输出,但是它肯定具有输入/输出事件,因为它 包括由输入事件启动的基本操作(例如,仓的填充,托盘的传送)的序列。
OOP的另一个有用的工具是接口。 接口是FB的抽象规范。 它们是没有任何实现部分的方法签名的集合。 接口声明的方法在每个FB中实现,它是从它派生的。 这是非常有用的,例如,用于暂停和某个操作的复位的自动化上下文。 定义一个标准接口,然后每个OFB将以不同的方式实现暂停和复位。
INTERFACE SUSPEND AND RESET
METHOD Suspend
...
END METHOD
METHOD Reset
...
END METHOD
END INTERFACE
然而,序列的暂停和复位是依赖于状态的动作。 那么,由于如前所述,它只能实现不依赖于当前状态的算法,这是不够的。 一种可能的解决方案是使用方法来设置一个变量,该变量在SFC中激活一个唯一的步,该变量保持激活,直到方法RESET设置变量的值,从而导致转换到初始步。使用了一种方法,因为除了引
全文共12737字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[145851],资料为PDF文档或Word文档,PDF文档可免费转换为Word