英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
一种基于PLC程序的再构理论的规范化方法及其应用
摘要 可编程逻辑控制器(PLC)仍然是工业自动化的主力。完成PLC编程和软件的适应性(控制算法的实现)是一个既费时又费力的任务。现在,在新平台上对现有的PLC程序进行再次构造需要由专业人士进行大量的人工返工,因为现有的程序是由工业工具在低级平台上完成的。已知的再次构造过程不允许完全自动植入一个新的平台。此外,它们不能完成对代码的重新编译,这使得它很难理解并遵循被执行的算法。为了避免这些问题,本文提出了一种基于形式化方法对现有的PLC程序再次构造的理论。这个理论在实验室系统中的一个应用被呈现用以评估其适用性。
1.简介
可编程逻辑控制器(PLC)成功开启了制造系统的自动化。由于其灵活的编程,自动化系统可以频繁的改变。当运行在机器上的PLC程序无法满足的新生产需要时,需要作出明确的改变去适应。关于PLC的一个重要的问题是有在一个新平台上对现有的PLC程序再次构造的需求。一个原因是,上述扩展在某种程度上可能导致需要更强大的控制器去运行这些程序。供应商不在生产提供这些PLC硬件是进行再构的另一个重要原因。这些障碍启发了研究人员寻找一种方法在将程序迁移到运行在物理设备上的控制器之前,先在抽象的层面对PLC程序进行分析,验证和模拟[1,2,3,4]。利用模块化建模技术进行再利用的设计是该领域的另一重要研究方向。这项工作是致力于形式化的描述STEP5 PLC程序在IEC 61131-3环境中的再构。图1描绘了基于[5]中分类的重组理论。所描绘的编程工具仅用于将PLC程序从源系统导出并加载到目标系统。
所提出的再构方法是对开始于S5代码逆向工程的重整过程的形式化描述。请注意,逆向工程是从一个被转变换成XML(原始XML和带指令标识的XLM)的给定PLC编码开始的。因此,再次构造是重组过程中的最后一步,并且是设计重组过程的本质。
尽管使用工业工具可以在低平台上完成给定的S5 PLC程序的转换。这种再使用不方便,而且就其效率而言它的输出是不精确的。此外,就源平台到目标PLC平台的映射而言这种转换是固定的(例如西门子S5到西门子S7的转换)。所提出的这种方法不仅能够再构而且可以完成验证,分析等工作。此外,由于这种间接形式的描述,就其源平台到目标PLC平台的映射而言它是灵活的。所提出的再构理论使用了在[6,9,10中]所提出的方法的逆向工程。重组过程包括主要包括以下几个重要步骤,具体内容为:
1.利用互联网技术用形式化的方法对给定PLC程序进行逆向工程。
2.S5PLC结构到IEC 61131-3的转化过程。这一步为所有PLC从S5到IEC 61131-3的转化提供一个通用的基础。
3.将一个给定的S5 PLC程序结构的映射与其块插入IEC 61131-3。此步骤之后,
S5 PLC的单一功能块被转换为符合IEC 61131-3结构的新块。
- 不同块之间的动态语义传递。块中的代码和变量声明被映射到基于形式化模型(有限状态机FSM)的新块和变量中。
本文其余部分的结构如下:
第2节再次给出逆向工程步骤。由于上述的第二和第三个步骤是密切相关的,在第3节中将对发展的过程连同结构映射一起进行说明,这为4节的转换理论提供了依据。在5节中将给出一个实验室的研究案例,用以评估这一过程。第第6节总结本文并展望未来的工作。
2. S5 PLC程序的逆向工程
2.1形式化概念
这一步将写在指令表(IL)上的虚拟PLC代码注入有限状态机(FSM)。它是对[6]中所描述的工作一个的扩展,这一步是用Java完成,可以通过下列步骤完成(参照图2):
第一步:IL中的PLC代码被转换为原始的XML[6,10,11],然后使用XSL将这个原始XML转换为核心XML。核心XML不仅包含IL语法指定的属性(地址,标签,说明书和操作数),还包含为完成逆向工程而产生的其他属性(指令,类型,条件和外延),这指令的类型是下一步骤中的关键属性。
第二步:拆分XML中的类型属性以获得IF-THEN-ELSE语句形式的描述,XML中类型的拆分是构造算法的关键,IF-THEN-ELSE的转换是根据在[9,11]中给出的算法完成的。
第三步:利用文档对象模型(DOM)构建IF-THEN-ELSE语句,这样可以更容易的从XML中提取信息。
第四步:将IF-THEN-ELSE语句转化成XML格式的FSM。产生的这个FSM完全能构正式的描述给定的程序。
2.2参考示例
本节将用一个示例说明将S5 PLC程序形式化的步骤。考虑图3中给出的二进制算法,此代码被转换成用作将PLC算法抽象化和形式化的中间XML格式,转换成XML的过程在后文中省略。
与PLC算法的抽象化相关的IF-THEN-ELSE声明如下(参见图4):
这些IF-THEN-ELSE声明可以被优化以得到M100.0= E38.1和E38.2或E38.1和E38.3或E38.2和E38.3,再转换成用来描述PLC算法有限状态机的XLM(参见图5)。使用图像[ 14 ],使得FSM可以直观的显示。
3.从S5到IEC 61131-3的演变过程
S5程序是一种层次化的结构,包含OBs,PBs,FBs,SBs和DBs[16]。这里所描述的SBs是只包含一个网络的程序块,并且能被其他块调用。IEC 61131-3将这些传统块分为三种基本类型,即程序,功能块和功能。在IEC 61131-3中,这些用来用于建立程序和项目的块被称为程序组织单元(POU)[ 17 ]。根据各自不同的操作任务将这些POU定义为如下的标准类型:
程序(PROG):该POU类型代表在PLC中的“主程序”。POU定义程序中的全局变量(如输入,输出)和物理地址映射变量。
功能块(FB):这种POU可以被分配参数,并且包含静态变量。这种POU可以和输入参数一起被调用,并且可以将根据其内部状态变量承受相应值。定时器模块和计数器模块都是属于FB。
功能(FUN):这是一种可以被分配参数在但没有静态变量的POU,当它被相同的输入参数调用总是得到相同的结果作为它的函数值(输出)。
从上述可以看出PROG和BF具有输入和输出参数,而FUN则具有输入参数和一个函数返回值。
从STEP5到IEC 61131-3的主要的转化过程和结构映射如下:
OB1:在性的PLC中PLC程序循环处理是从某种类似PLC程序中的任务功能的模块开始的。因此,程序POU接收OB1的操作语义。
其它OB:在STEP5中,这些OB被分配去执行某些任务,根据它们的操作语义可以被转换成程序或功能块。例如OB20,OB21,OB22可以用于初始化或开始,这些块只使用一次,而不是PLC循环程序中的内容。他们转换的细节将在后面示出。
PB和FB:这些模块被转换为与S5中同名的FB,FBs和PB的区别是FB是可以频繁实例化的功能块。在S5中具有相同名称不会产生问题,但是在IEC61131-3中输出值将会被同名的参数覆盖。这就是每次功能块被实例化时都要添加一个索引到它的声明中的原因。
数据块:这些数据块被转换成IEC 61131-3中的一个数组并且被声明为主程序中的全局变量。DB的值将被取入到这个数组,当其它功能块调用该数组时其值将被改变。必须在IEC 61131-3相应的功能块中被声明为外部变量,S5中PB和FB包含的数据才能够使用。
符号表:S5中的符号表中承担全局变量声明的任务,它是一种三列的表格形式,含有操作数、符号和说明,用于对变量或符号进行注释。在S5中它可能是某块中给定的代码,通过编程工具在被寻址的操作数和它的符号间转换。表1公开了一个PLC程序符号表的一个简略视图。注意,E,A,M表示分别表示输入(输入),输出(输出)和标记(内部变量),紧随其后的数字表示操作数的物理地址,这些变量必须在IEC 61131-3项目的主程序中指定。此外,它们必须被声明为外部变量才能在相应的功能块中使用。S5中不能直接映射到相应IEC 61131-3中的元素必须被重新编程为功能或功能块并集成到项目库中。S5中的非二进制指令也是同样的处理方式。
4.动态语义的概念转换
转换过程是从PLC模块中的XML格式FSM开始的,这些描述FSM的XML是通过PLC算法转换得到的。这个过程是递归的去覆盖所有PLC模块中FSM。使用DOM可以将XML中的的信息提取出来并保存在一个新的文档中。下一过程是通过解析这个XML树去搜索输入和动作标签,在这个过程中XML格式的S5关键字对验证这些转换是否完成是非常重要的。IEC代码转换中的输入,是S5到 IEC的树结构关键词映射(参见表2)。通过符号表才能将变量的物理声明代入其符号。符号表和关键字的映射在执行过程中被描述为一个键到值的映射的哈希表。数据块将在转换过程中被集成,以防他们继续存在。转换方法的输出是IEC 61131-3程序的要素(例如程序和它的输入、输出全局以及变量内部变量)。
如前所述,在转换的过程中将会产生一个程序去完成OB1的任务,这个转换过程会重复,直到所有的PB和FB都被涵盖。遇到的另一个重要方面是通过OB的索引21,20和22的初始化,因为它们具有在IEC没有直接对应。在转换过程中继承他们时,会使用一种在初始声明中分配为真 的Init_PLC类型全局变量,这个变量在其相应的功能块中被设置为假,这样可以保证了它在循环过程中被单次执行。这种转换完成后,新的POU被保存在项目目录或生成成套的POU文本并用一个扩展口保存。二进制算法、定时器和计数器,以及非二进制算法的说明实例将在下一节中给出。
4.1.二进制算法转换
二进制算法转换从用XML描述的PLC模块中的FSM自动发生,这保证了逻辑上的直接转换和FSM进入IEC 61131-3的动态过程。在IEC中操作数将被声明为一个全局变量,并且以防万一不会为这个变量赋值已经在符号表中存在的符号。如果该变量被赋值一个匹配的符号,将通过它的符号进行声明。语义的转换是通过插入与FSM关键字匹配的IEC指令发生。为了防止转换过程中的输出语言为IL,需要完成转换过程中的另一个重要任务--即逻辑指令的嵌套。判断真与假之后必须增加一个插入语,因为在IEC中不允许二进制指令后进行空操作。真的会被添加到ANDS中的OR指令嵌套而假的将被分配到ORS中的AND嵌套,为了避免将IF-THEN-ELSE直接转换为IEC中的ST,转换过程中会使用这种替代。为了表达来自其FSM的二进制算法的变换,将在图6中给出一个说明性示例(此XML是从图5中获得的,它是由图3中的代码转换来的)
4.2定时器和计数器的转换
定时器和计数器的转换不是从FSM中的 XML开始的,转换是以将定时器和计数器类型与其在IEC中的副本按照表3内容匹配为起点。FSM中的XML对定时器和计数器起始过程中的状态提取是非常有用的,其它类型的计时器和计数器在IEC 61131-3中必须被重新编程为功能块(即,SI)。图7是脉冲定时器的一个示例。此转换中的一个要点是状态、定时器类型和时间值的信息。FSM有助于理解定时器类型的转换过程,通过可视化的语义。
4.3非二进制和数据块的转换
非二进制指令转换通过指定的XML格式FSM进行的。非二进制指令的语义被迁移到新定义的IEC61131-3结构功能块中,之后将被连接到项目目录。此步骤能够解决输入PLC转换过程中的兼容性问题。FSM中的变量如AKKU1,AKKUS2,OV等在主程序中被声明为全局变量并且在相应的功能块中被声明为外部变量,这些新生成的功能块出现在FSM中时能被被其他功能块调用。
与S5的非二进制功能块(FB)一起工作时,数据块(DB)是一个重要组成部分,这些数据块可以被功能块通过调用的方式被接收,功能块能够访问其中的数据变量,此访问后,功能块使用这些数据变量作为参数调用另一个FB。
5.案例分析
5.1设备描述
用于测试的重新实施和转换应用的设备是来自于FESTO的教学用模块化生产系统(MPS)。教学原型的主要目的是检查适当的厚度和材料类型圆柱形工件,深入每个工件合适的洞,然后根据自己的材料类型进行排序。顾名思义,该设备由不同的模块组成,这些模块又分为分配,检测,加工和存储四个站。 四个站的简要描述在中给出。在正常运行时,将一个工作件从杂志中推出来,由传送单元传送到测试点,电梯模块将工件带到测量模块,如果工件具有可承受的厚度,则由气缸安装在传送带上,否则电梯向下移动并将其推到将其引导到废料区的滑块。输送机传送适当的片的旋转台的位置1。然后该工作台旋转,直到工件在钻头模块下,钻孔旋转台将进继续移动,直到它到达钻孔检查模块。当工件的钻孔被检查正确时,该工作台将移动处理后的工件到位置4,在那里起重机可以把它捡起来,然后移到适当的仓库。在钻孔不正确的情况下,起重机把工件放在滑块上把它放到废料区。除了常规的操作,一些其他的模式如初始化,清理,紧急停止和无输出模式也能实现。
5.2.转换过程
该系统处理
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[152739],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。