PLC程序的缩减时间自动装置

上传人:油条 文档编号:107494072 上传时间:2019-10-19 格式:DOC 页数:19 大小:1.45MB
返回 下载 相关 举报
PLC程序的缩减时间自动装置_第1页
第1页 / 共19页
PLC程序的缩减时间自动装置_第2页
第2页 / 共19页
PLC程序的缩减时间自动装置_第3页
第3页 / 共19页
PLC程序的缩减时间自动装置_第4页
第4页 / 共19页
PLC程序的缩减时间自动装置_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《PLC程序的缩减时间自动装置》由会员分享,可在线阅读,更多相关《PLC程序的缩减时间自动装置(19页珍藏版)》请在金锄头文库上搜索。

1、PLC程序的缩减时间自动装置H.X.Willems摘要在这项工作中,开发了一套工具,用于将可编程序控制器(PLC)程序转换成定时自动装置,以便核查这个程序。这是表明,我们的PLC程序的定时自动装置模型可以被分解成定时部分和不定时部分,通常情况下,不定时部分,在规模上远远大于定时部分,且可以使用CADP工具箱将其简化到合适的大小。这样的简化,使状态空间的减少量是很可观的,即使是小型的PLC程序。关键词:可编程序控制器、PLC自动装置、定时自动装置AMS主题分类(1991): 68N20, 68Q05, 68Q55, 68Q60CR主题分类(1994): C.3, D.2.4, D.2.5, D.

2、3.2, D.3.4, F.3.11 说明可编程序控制器(PLC)越来越多地被应用于各种工业环境中的关键安全应用程序。这项工作的目的是PLC应用程序的验证。因为许多由PLC控制的过程是时间先决的,时间被认为是由PLC的施加控制的不可分割的一部分,时间自动装置的形式对于PLC系统的建模似乎是适当的,因为它允许包括实时方面。此外,模型检查工具可为时间自动机的系统验证提供方便。如图1所示,这里考虑的PLC有一个运作框架。在每个周期开始时,PLC从环境中读取所有的传感元件,并且将其可访问内存单元的实际状态放置到PLC程序中;随后,将被编入执行PLC的程序指令和计算结果写入(其他的)内存单元;第三步,这

3、些结果送入由PLC控制的执行机构。输出完成后,才能进入下一个周期。在这项工作中,我们只考虑简单的PLC。因为PLC不支持多任务和中断,这些功能会使所遇到的问题更复杂。在验证PLC应用时,所遇到的问题之一,是状态空间剧增。例如,如果我们有一个PLC控制3个开关量(这是并不鲜见的),每个开关可以打开或关闭。仅由开关产生的状态空间就有230个。然而,其中许多可能无法访问,因为某些开关不能进行组合。4,5,6,7中已描述多种算法,以减少状态空间。状态空间减少方法是由Caesar/Aldebaran开发包(CADP工具集)支持,可访问http:/www.inrialpes.fr/vasy/cadp.ht

4、ml,从中获得。然而,这些算法(工具集)并没有把时间考虑在内,因此CADP提供的减少状态空间方法不能直接用于PLC系统的状态空间减少。本项目中,我们分成定时和不定时两个部分,并将PLC系统的状态减少法用于后者。在这方面,值得庆幸的是,两部分中不定时的部分是迄今为止最大的。 下一节,我们将讨论一种可转换成定时自动机的PLC语言,以及完成该转换的编译器的设计。第3章侧重讲,使用CADP以减少PLC系统的状态空间,和一种现有的用来生成省时自动机编译器。第4章,呈现并讨论安装有前面章节开发编译器的PLC系统所获得的结果。第5章给出从这项研究得出的结论,第6章进一步研究提供建议。2 编译器的设计本节介绍

5、,指令表(IL)语言,它被IEC定义为标准1131-3 8,和其它一些定时器结构。2.2节在基本语言上的采用了一些限制,以简化的编译器的设计。本节还将介绍模型检查Uppaal,它是本项目中用来执行时间自动检查的模型。以及从IL转化成中间格式在转化成Uppaal定时自动格式的过程。 Uppaal时间自动格式将在本文中进行介绍(在Uppaal中它被称为“ta”格式)。本文将与编译器生成的描述(定时自动机)表示为PLC自动机。2.1 基础语言:指令表IL是一种低层次的语言,它的结构类似于一个简单的机器汇编。国际电工委员会(IEC)已经认可了IL8,因为它简单,易于学习,非常适合用来解决项目执行过程中

6、直接的较小问题以及小范围的变化。9。此外,它有时是一个IEC标准的PLC语言的基础,其中的所有其他语言(在该标准的定义中)可以转换 9。图2给出了一个用IL写的小程序。IL程序包括一系列指令,每个指令在一个新行。由一个指令(至少)包括一个运算符和一个操作数;运算符可通过一个标签运行,而且可以通过追加所谓的修饰符改变其内涵。表2.1中已给出可用于IL的运算符的数量,每个运算符允许的修改次数和操作的数量。最后,可根据需要给各个操作数附上评论。一些句法的细节:一个标签以字母开头,由字母和数字和结束与一个冒号(VOLTS_OK: 和END: 见图2)。修饰符确认操作数N(按位取反),C(条件)和“(”

7、,(表示暂停运作,即先计算括号之间的部分)。IL指令,可以是布尔值,整数或变量名。在IL中,标签和变量名不区分大小写的意见,可在目前以指令开始,不包含“换行”。将IL代码包含在一个“项目类型定义”中,此定义以关键词“项目”开始,“结束项目”结束,可完成一个PLC程序。其定义包含(IL)的程序文本,还包括输入,输出和内部变量声明列表。图3给出一个示例程序类型定义。将IL代码包含在一个“项目类型定义”中,此定义以关键词“项目”开始,“结束项目”结束,可完成一个PLC程序。其定义包含(IL)的程序文本,还包括输入,输出和内部变量声明列表。图3给出一个示例程序类型定义。IL程序的语义是由Mader和W

8、upper描述的布尔变量10。这项工作,包括整数的扩展很简单。然而,有一个问题:有一个特殊的变量,称为实际的寄存器(AE),其代表在PLC的中央处理单元累加器的值,它应承担布尔值和整数值。由于我们不希望使用重载变量,应给寄存器应加装与它相关的单一型号。决定使用的寄存器类型的一个整数,1代表true,0代表false。2.2有关基础语言的约束准则关于计时器:本文只涉及导通延迟计时器(TON计时器),即是在IEC 1131-3中描述的有两个输入口(IN和PT)和两个输出件(Q和ET)的标准化计时器。图4(上部)给出了这样一类定时器布局图。IN输入口确定时钟是否运行;如果其状态为true,计时器将在

9、Q变为true之前,进入等待状态,等待时间由PT给出。在这段等待时间中,ET开始计时,当等待时间结束,ET则与PT等值。在图4(下部)给出计时器终端(TON计时器)各组件的之间联系。 这种定时器可以被视为厨房警报器的一个代表: 如果设置它,它将在指定的时间后报警。此种计时器由软件设计(不由硬件)实现的,与理想计时器相比,人们常常采用这类延时。在文本的中, 这种不精确性没有得到清楚的阐述。 此外,除非计时器设定时间到了,计时器的输出口不改变:定时器间接接地影响着可变参数,但是CAL timer命令必须用于更新Q和ET的值。在此处所用的程序语言解析方法里,计时器必须事先接入在输入口,而在 IL标准

10、中可用的计时器将形成一个计时器列表在此处不可用,由于目标格式不支持包含点的变量名称,这些点被翻译为“底线”(TIMER.PT被翻译为定时器TIMER_PT)。 如果TON定时器在输入被找到,四个变量被加入变量列表中:<timer_name>_IN,<timer_name>_PT,<timer_name>_ET,<timer_name>_Q,对于不同的程序,变量之一的<timer_name>_PT将被赋予不同的值。其中的原因将在2.4.2节中详细阐明。其他类型的计时器也能同样地处理。 Mader和Wupper展示了这样一类计时器是如何被

11、转被换成一个定时自动机的。 关于细节,读者查阅请原文 10。 在这里,参数ET没有使用,因此我们也不探讨它。按照标准,控制器的限定量N(参见表2.1)应该是按位取反。在这项工作中,它被分别解释为布尔值和整数值:对于布尔值,它被解释作为逻辑否定(例如LDN B1布尔变量B1为true 将导致实际寄存器的值为0),而对于整数值,它被解释作为整数信号的改变(LDN 1导致AE = -1)。注意,这里所开发的翻译器不允许将true和false作为操作数使用:这些布尔值在翻译成中间格式的过程中,保持一成不变 (参见下段),但是引起了进一步的问题(因为他们将被视为未声明的标识符);取而代之,我们使用1和0

12、。 然而,这可能导致一类问题是否原始程序包含语句LDN true或LDN false中的一个,因为LDN 1将导致AE = -1而不是AE = 0。 所以LDN控制器不应该使用true和false (而应该使用LD 1或0)。 这里使用的翻译器能识别的只有三个基本类型(BOOL,INT,TON)和三个使用类型(输入,输出和正常),而标准型定义了更多的类型。限制基本类型的原因是,整数值和布尔值可大量修改,且一部分模型检验器不支持更复杂的类型,如:对效率因素的实时控制。限制使用类型的原因是,至于有关PLC的核查,除这三个变量外,不需要变量:如果需要的话,可以轻松地纳入其他类型(例如“保留”变量),

13、而不会产生其它的问题。 此外,除了调用TON计时器时,函数不能被识别(这意味着,CAL控制器只执行定时器,而RET控制器不得执行)。这样做是因为,对于核查来说,代码是连续的或包含函数调用都无关紧要,而所有的带有函数调用的PLC程序都可以改写成没有函数调用的PLC程序。一般来说,包含函数调用的程序不能简单地在顺序程序中被改写。然而,因为递归函数不允许出现在带有有界周期时间应用程序中(如实例PLC Programs1),所以使函数退化成简单的宏指令和重写的程序成为可能。最后,没有公认的标准(例如%IW40)中定义的绝对地址,相反,应该使用标识符。2.3从指令列表到中间格式最初,我们预期可以使用Ex

14、tended Affix Grammar(EAG)编译器,来将IL转换成定时自动机,但这种方法导致编译器运算过慢,所以我们放弃了这种方法。然后,我们决定使用C程序来翻译,因为我们已经有了EAG解析器,我们用它来生成一个中间格式,就可以很容易地读取一个C程序。中间格式上的第一行(ASCII)为程序的名称,下一行是数量的声明,其次是bij的声明。每个声明行的格式为:variable_name : base_type : use_type : 当base_type是BOOL,INT或TON的use_type和use_type是INPUT、OUTPUT或NORMAL。下一行包含IL文件中指令的数目,其

15、次指令的格式:sequence_number : level : label : operator : modifiers : operand,每项一行。当这种格式的后一个单元没有自我解释是,序列号和等级,可能需要一些说明。等级就是一个特定语句开头括号中的那个数字。引入这样一个等级的原因是,我们打算定义一种嵌套括号,不带一个堆栈,但带有对应每个等级的不同变量。我们这样做是因为我们不想想用有限自动机(嵌套括号的数量可以被静态确定)。在图5a中描绘的结构被转换到图5b中所述。可以看出,在图5b中的语句序列(“后缀”符号)与在图5a中的“前缀”符号是不同的。图5b的后缀表示法对于支架施工是很必要的。

16、5b中的结构稍后会为主等级和嵌套等级分别用变量ae0和ae1来定义(见章节2.4和3)。见EAG语法文字文本的可用性报告的结束部分(及相关文件)。EAG编译器本身可从ftp:/ftp.cs.kun.nl/pub/eag获得。2.4 从中间格式到TA格式我们选择Uppaal(参见http:/www.docs.uu.se/docs/rtmv/uppaal/)模型检测器,是因为它支持整数和大多IL语言的多种元件(任务、算术和比较)。此外,实时编写可以被定义,且如上所示的内容这对PLC的应用非常重要。应用包不支持布尔值 (仅支持整数值),并且如上所述,这与实际计数器的实施选择恰好相符。另外的好处是这个包裹支持TA输入格式,且是十分简单的格式(注:DIV操作员没有被实施维护与i2lotos编译器的相似性,参考第3.1节)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号