可编程逻辑控制器软件领域专用模型开发外文翻译资料

 2022-04-17 23:01:22

英语原文共 13 页,剩余内容已隐藏,支付完成后下载完整资料


可编程逻辑控制器软件领域专用模型开发

Gregor Kandare *, Stanislav Strmcˇnik, Giovanni Godena

摘要:

程序过程控制负责协调在典型工业控制系统中执行基本控制的控制单元。基本控制反过来执行必要的操作,以保持过程变量和设备的期望状态。程序过程控制领域的软件由负责管理启动和关闭序列,异常处理和模块通信的模块组成。在这项工作中,我们提出领域专用建模语言(DSL)ProcGraph及其相应的代码生成工具,专为程序过程控制系统领域的软件开发而设计的。使用领域特定语言的优势在于,不仅是程序员,就连领域专家都能够理解和修改代码。 DSL代码是自我记录的,因为它是以问题域的习惯用语表达的。在这篇文章中,我们给出了一个ProcGraph语言的正式描述。此外,我们描述了如何使用形式化模型来实现自动IEC 1131-3代码生成器。

  1. 引言

开发工业控制系统的软件无疑是非常复杂和具有挑战性的。原因在于控制系统的本质,控制系统是为了控制机器、设备和过程而设计的。如果软件有错误,那么机器、设备、进程就可能失控。因此,可靠性、安全性和实时反应是此类软件最重要的属性之一[1,2]。

另一方面,现代控制系统涵盖了一系列功能,包括从简单的传感器,执行器和控制器到复杂的计算机系统等各种各样的硬件设备。 因此控制软件变得越来越复杂,开发和维护也就变得更加困难。 因此,软件质量和软件开发过程的生产力也是控制系统领域的关键问题也就不足为奇了[3]。

在这个领域中,软件供应商和工程公司使用了一种广泛的方法来处理上面提到的一些复杂性问题,即采用可重用性的概念。简而言之,采用可重用性意味着依靠经过良好测试和现场验证的基本软件模块和模块的系统,这些软件模块和模块可以通过使用合适的工具配置到专用系统中。这种方法非常适合实现基本的控制功能(根据ISA S88标准,[4]),它主要致力于建立和维护过程设备和过程变量的特定状态,并且在完全不同的过程中是相同或相似的。

与基本控制功能相比,从软件开发的角度来看,由各种事件序列组成的程序控制活动在诸如启动和停止之类的状态之间的转换是更加成问题的。控制的程序部分完全是过程特定的,需要开发定制软件。因此,过程控制软件开发过程的管理是一个相当重要的任务。程序控制功能(以及基本控制功能)的实现如今主要基于可编程逻辑控制器(PLC)。 因此,主要的问题是如何改进PLC软件开发过程。

本文的目的是提出一个基于领域特定建模语言ProcGraph的程序控制软件开发的新概念,以及一个用于自动生成程序代码和文档的特殊设计工具。在文章中,我们强调了软件开发的最后阶段之间的转换,即软件模型到源代码的翻译(自动代码生成 - 代码合成)。这里介绍的方法的主要贡献是在程序控制软件开发领域中特定领域建模语言和工具的应用。

在接下来的部分中,定义了一个连续过程控制系统的模块化结构。此外,还讨论了与PLC软件开发过程相关的一些基本问题。下一节将介绍ProcGraph的建模语言及其形式化描述。提出了将ProcGraph模型映射到IEC 61131-3源代码的技术。进一步介绍了代码的合成过程和相应的软件工具。最后,给出了建模工具的应用实例。

  1. 连续过程控制结构的形式化

过程控制结构的形式化一方面需要通过控制功能的划分来处理控制系统的复杂性。 另一方面,如果我们想要在更高的抽象层次上设计控制软件,甚至自动化部分软件开发过程,那么形式化是必不可少的。

过去,为了控制系统和软件的设计过程的简化和标准化,已经做了很多工作。 例如,ISA S88标准涵盖了批处理控制系统及其组织的设计。 批量过程控制的各种软件工具已在市场上出售。然而,这不是连续过程域的情况。

让我们以软件设计为目的,借助批量控制标准ISA S88来形式化连续过程控制。按照标准,连续过程控制系统可以分为基本控制模块和程序控制模块两部分,如图1所示。通过对控制系统进行划分,实现其模块化。模块化使系统的分析,设计,实施,使用和维护变得更简单。 此外,软件开发人员通过领域专家(过程工程师)的眼睛观察软件。 如果软件开发人员和领域专家使用相同的抽象,则他们之间的通信更容易,而且不容易产生歧义。

基本控制致力于建立和维护过程设备的特定状态。用于基本控制的设备包括控制器、可编程逻辑控制器(PLC)、传感器、执行器以及其他类似设备,这些设备可以配备专用软件以及相应的基本控制模块。

另一方面,程序控制指导设备导向的行动按照有序的顺序进行,以便执行以过程为导向的任务。以设备为导向的操作是通过向基本控制发送命令来执行的,就像人工操作员手动驱动程序一样。程序控制的主要动力包括启动和停止动作的顺序,以及对异常情况的处理,如警报和安全关闭。这些情况的处理方式主要取决于受控过程的要求。 程序控制实体因此比基本控制实体更独特。图1显示了程序控制和基本控制之间的通信。这些命令取决于输入信号和程序控制的当前状态。 这种情况是反应式系统的典型特征。 因此,我们可以将程序控制系统视为一个反应系统。

  1. 关于改进PLC软件开发过程的基本问题

可编程逻辑控制器(PLC)是最常用于执行基本和程序过程控制的设备。 由于对控制软件质量和可靠性的要求很高,因此PLC软件开发的过程并不简单。 此外,在[5]中描述的IEC 61131-3标准推荐的PLC编程语言提供了相当低的抽象级别。 这方面使得PLC编程语言不适用于复杂的系统。

在文献[1 - 3,6 - 9]中提出了解决PLC软件开发问题的几种解决方案。解决方案主要基于软件的生命周期视图。根据这个观点,软件被认为是任何其他产品,在它的创建和应用过程中经历了不同的发展阶段。因此,软件开发和使用的过程(软件产品的演化)可以划分为生命周期的几个阶段。软件生命周期通常从需求定义阶段开始,并以操作和维护阶段结束。中间阶段是产品的开发阶段,可以进一步划分为建模和实现阶段。在建模阶段,使用建模和软件工具进行分析和设计。

目前,面向对象系统最广泛的建模语言是UML(统一建模语言,[10])。然而,在程序控制软件领域,使用UML或类似的标准建模语言的缺点在于它们过于通用并且没有足够的领域特定性。通用建模语言的使用增加了[11]中定义的认知距离,这是从软件开发的一个阶段到下一个阶段所需的努力的度量。为了减少认知距离,最好在软件开发的所有阶段使用类似的抽象。这可以通过使用领域特定的建模语言来实现[2,12-17]。领域特定建模语言和通用建模语言(如UML)的主要区别在于,领域语言的元素表示来自领域世界的项目,而UML元素代表来自代码世界的事物。这使得开发人员可以专注于在域中构建解决方案,而不用担心代码。虽然UML没有提高对编程语言的抽象层次,但是领域特定的建模语言却做到了。领域专用建模语言和编程语言之间的抽象差距可以与高级编程语言(如Java和低级机器语言)之间的差距进行比较。于领域特定语言设计需要对域有详细的了解,所以必须由领域专家进行。领域特定建模语言的另一个优势是,可以自动化大量的开发阶段,从而提高生产力和可靠性。

程序控制软件设计过程中的另一个问题是选择合适的计算机自动化软件工程工具(CASE)。CASE工具在CAD / CAM(计算机辅助设计/计算机辅助制造)工具在其他产品的开发中发挥着与软件开发相同的作用。CASE工具的主要目标是自动化开发阶段和软件生命周期阶段之间的转换。因此,CASE工具支持设计,编辑,一致性和正确性检查以及图形和文本模型的保存和检索。 最后但并非最不重要的一点,CASE工具的基本功能是可以从模型中自动生成程序代码。

与CASE工具相关的一个主要问题是市场上可用的只支持标准建模语言,如UML,YSD,Statecharts和类似的通用建模语言。 大多数CASE工具可以用C 或Java之类的高级编程语言自动生成代码。 此外,代码生成最常被限制在体系结构图(如UML类图)到静态代码结构和模块的映射中。

根据[18],如果我们想在计算机自动化设计工具的特定领域,如程序控制软件的开发,我们有两种选择。第一个选择是使用现有的商业CASE工具,它支持一种能够最有效地服务于我们目的的建模语言,忽视或忽略这些差异。然而,在大多数情况下,不能使用商业CASE工具提供的自动代码生成,因为不支持领域特定的建模语言。或者,我们可以开发一个特定于领域的CASE工具[19],它支持领域特定的建模语言以及转换为所需的目标编程语言。第二种选择需要更高的初始努力,但从长远来看,它的效率更高。一个众所周知的事实是,领域特定代码的合成比通用代码的合成更有效[20]。在本文中,第二种选择是使用一种早期开发的建模语言,称为ProcGraph,作为关键元素。

为了在CASE工具中实现代码综合,必须对建模语言语法和语义进行形式化描述。 建模语言的形式化描述也使我们能够执行句法分析的模拟,比如一致性和正确性检查。 以下部分将简要介绍ProcGraph语法。

  1. ProcGraph建模语言的形式化描述

ProcGraph是一个专门用于程序过程控制软件领域的建模语言[21]。 ProcGraph相对于通用建模语言的优势在于,它使用与过程工程师用于描述过程控制系统(主题域导向分解[22])相同的抽象描述控制系统。

ProcGraph模型由三种类型的图组成,每个图描述了控制软件的一个特定方面:

程序控制实体图(PCED)描述了系统的概念分解以及概念组件之间的关系。

状态转换图(STD)描述概念组件的动态视图(行为)。

实体依赖关系图(EDD)描述概念组件(过程控制实体)之间的因果关系和条件依赖关系。

    1. 程序控制实体图

过程控制实体图描述了控制软件系统的架构视图。PCED中的节点表示概念组件——过程控制模块。PCED中的连接代表了过程控制实体之间的关系(依赖性)。过程控制实体图的示例如图2所示。全箭头说明了箭头接收实体的特定状态转换取决于箭头源实体的某个状态(条件依赖性)。 虚线箭头表示箭头源实体进入某一状态时触发箭头接收实体的某种状态转换(因果关系)。

从拓扑的角度来看,程序控制实体图是一个有向图。 图的节点由圆角矩形表示。 图3展示了使用UML类图的过程控制实体图语法的图形描述。该语法确定每个节点都有一个名称,并可以连接到一个或多个节点。 每个连接都有一个类型(完整或虚线)。

描述过程控制实体图的语法的另一种方法是使用6元组:其中VE是一组节点,PE是一组连接,alpha;是将节点映射到相应的状态转换图的函数,即返回连接的源节点的函数,po是返回连接的汇节点的函数,tp一个定义连接类型的函数。

    1. 状态转换图

程序控制系统本质上是反应系统。 描述这种系统行为的最合适的模型是状态转换图(STD)。 这个模型的描述可以在[22-26]和其他一些资料中找到。 状态转换图是由代表状态的顶点和描述转换的弧组成的图形模型。

ProcGraph使用扩展版本的std。除了状态和转换,扩展状态转换图还包含复合状态或超状态。超状态可以包含子状态,也可以是其他超状态的一部分。随着超状态的引入,实现了转换数量的减少。以这种方式,模型可以被简化而不会丢失信息。通过使用超级状态,可以在模型中建立一个状态层次结构。此外,层次结构也使我们能够简化系统的自顶向下设计。 设计可以从最高级别的状态开始,然后逐步细化到基本状态。

每个状态都有一个独特的名称。转换是根据语法指定的:

这个名称可以被解释如下:如果事件发生并且条件满足,则转换触发并且执行动作。 图4显示了一个扩展状态转换图的例子。

图4中的状态层次图由图5中的树表示。根节点表示整个状态转换图。 基本状态通过子树来表示叶节点和复合状态。 在图4中,如果节点处于活动状态,则通向根节点的路径上的所有节点也是活动的。

图6展示了状态转换图语法的图形描述。从这个图中我们可以看到每个节点可以包含零个或多个节点,每个节点通过一个或多个节点连接。

语法也可以用九元组来表示:

VS是一组节点,PS是一组连接,是一个返回连接的源节点的函数,po是返回连接的汇聚节点的函数,nad是返回节点的超节点的函数,I 是输入信号描述的集合,P是一组参数描述,O表示输出信号的一组描述以及lambda;是一个将逻辑表达式归属于来自集PS的每个转换的功能。 逻辑表达式表示触发转换的事件。

4.3实体依赖关系图

实体依赖关系图(EDD)是过程控制实体图和状态转换图的混合。EDD描述了两个或多个过程控制实体的状态转换图,以及状态转换图之间的依赖性(关系)。虽然过程控制实体图只显示了实体间依赖关系的存在,但实体依赖关系图还更详细地指定了关系的源和汇。有条件的关系用箭头表示,而因果关系用虚线箭头表示。EDD中的箭头始终始于节点(状态),并处于转换状态。 图7显示了一个样品EDD。

用UML来表示实体依赖关系图的语法如图8所示。语法类似于状态转换图的语法。 区别在于,除了节点之间的连接之外,还存在连接(表示依赖关系),并在连接中汇聚。八元组:

还描述了实体依赖关系图的语法。 与表达式(2)相比,表达式(3)包含分别返回连接源节点和宿转换连接的一组条件关系连接(O)和函数izp和pop。 另一方面,实体依赖图中的转换不是指定的。 因此(3)不包含包含转换指定元素的集合。

  1. 将模型映射到源代码

为了实现软件产品开发阶段之间的无缝转换,每个阶段模型中出现的抽象必须尽可能相似。 如果是这种情况,从一个阶段到另一个阶段所需要的努力就被最小化了。

正如

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[466638],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。