用于检查PLC程序的正确性的计算机实现方法技术

技术编号:39037927 阅读:20 留言:0更新日期:2023-10-10 11:51
本发明专利技术涉及一种用于检查通过功能规范描述的PLC程序的正确性的方法,所述功能规范通常被作为时序图呈现。所述方法包括:

【技术实现步骤摘要】
【国外来华专利技术】用于检查PLC程序的正确性的计算机实现方法


[0001]本专利技术涉及可编程逻辑控制器。

技术介绍

[0002]可编程逻辑控制器(在下文中“PLC”)是被用作制造工艺(诸如装配线或机器人设备)的自动化控制器的工业数字计算机。
[0003]PLC可以经由表达从输入和内部存储器的值计算输出的计算的软件来模拟其已经取代的硬连线继电器、计时器和定序器。
[0004]通常,IEC 61131

3标准定义可以用于开发PLC软件的几种编程语言,如梯形逻辑(Ladder logics)、功能块(Function Block)、结构化测试(Structured Test)等。梯形逻辑例如使用继电器逻辑硬件的电路图来通过图形化示图表示PLC程序,而另一方面,结构化文本则是文本编程语言。
[0005]在软件的常规开发中,开发时间的大部分致力于调试。调试程序是关键的,尤其是在工厂自动化(FA)的情况下,因为工厂中的漏洞就人力和材料损失、以及机械设备关闭时间而言,可能是极其昂贵的。对PLC程序进行调试是特别困难的、耗时的且昂贵的。漏洞可以被看作是在程序的某个点处关于该程序的本地存储器和输入/输出的值的某个性质的违反。
[0006]调试的目的在于在生产中运行代码之前检测那些性质违反,即,当执行程序时,找到导致性质违反的内部存储器和输入的初始值。因为检查程序的所有的可能的执行是几乎不可能的(并且太昂贵),所以常用方法在于开发并且运行一些测试(即,在特定的初始配置上执行该程序,并且检查其行为)。<br/>
技术实现思路

[0007]然而,测试本质上不是穷尽的,并且其开发非常昂贵且耗时。
[0008]规避这些限制的解决方案在于执行正规的演绎验证。
[0009]演绎验证是基于以下检查,即,给定某些假定,程序对于所有的可能的执行产生预期的行为和结果。文档EP3715975(在下文中,在本说明书末尾的在先引用文档的列表中被标记为“[1]”)中公开了使用演绎验证来检查PLC程序中的运行时错误的存在的原理。
[0010]对于更高级别的性质,PLC程序的预期的行为通常被描述为时序图,即,根据一些输入值演变的输出值的时间演变。作为例示说明的例子,示出了图1的时序图规范。X变量的演变反映了输入值上的假设,而Y变量的演变表示预期的输出值。
[0011]输入值的变化(或计时器的结束)在这里被称为“事件”。这样的事件对应于PLC程序的单次执行。验证规范在于验证输出的值根据时序图在每个事件处改变(或者不改变)、并且它们在两个事件之间不改变。那些事件间(inter

events)在这里被称为“状态”,并且对应于PLC程序的未定义数量的连续执行。
[0012]用于验证PLC程序满足时序图规范的两种已知的方式可以被提及。
[0013]“测试”是第一种且是最普遍的。测试在于在不同的输入演变场景下(只有状态期间的执行的数量可以改变,由时序图给定的输入改变的次序不可改变),从初始配置执行程序。测试的问题是它的效率不足。执行许多不同的配置在人力时间和计算机处理(CPU)时间上是昂贵的,并且因为不同地定时的输入演变的数量是无限的,所以不可能对所有的执行进行测试,并且不可能是穷尽的:如果测试没有找到错误,并不意味着永远都不可能存在任何错误。而且,一旦测试检测到错误,开发者可以能及的唯一信息是导致该错误的输入和内部存储器的初始配置。因此通常难以理解错误的根本原因、以及所考虑的初始配置为何在程序几次执行之后、在程序的另一个点处导致错误。
[0014]验证时序图规范的最先进的方式是模型检查(如例如在本说明书的末尾处给出的参考文献[2]中所公开的模型检查)。模型检查在于以自动机(automaton)的形式来定义程序的模型,所述模型具有状态以及这些状态之间的转变。那么,模型检查在自动机中用从状态到状态的不同路径来模拟程序的不同执行。错误是通过不应该达到的特定状态来建模的。模型检查验证那些状态是不可达到的。
[0015]限制是模型检查是昂贵的、耗时的(CPU工作时间)且不是穷尽的。
[0016]它使得可以考虑同一程序的连续执行,但是复杂度通常是呈指数增长的,结果,它迅速地花费大量CPU时间来模拟该程序的执行。因此,对于典型的工业规模的大多数PLC程序,该方法不可能是穷尽的。
[0017]总之,为了解决对于PLC程序的时序图规范的验证,测试是可能的方法,但是不是穷尽的,一般来说是低效的,并且没有给出检测到的错误的可追溯性。模型检查就其本身而言,更有效率一点,使得可以考虑同一程序的连续执行,并且当验证失败时,提供执行追踪。但是,它对于大型工业程序仍是相对昂贵的,并且它仍然不是穷尽的。
[0018]尽管演绎验证提供穷尽性保证,但是它不是专门针对时间性质验证的。实际上,虽然演绎验证需要充分了解程序的变量演变,但是时序图是未完全指定的,意味着某个其他程序的变量的演变丢失并且两个状态改变之间的逝去时间不总是已知的。而且,时序图包括固定定时的事件(在以上评论的图1的例子中为3秒),其构成程序的对于演绎验证不可直接使用的元性质。
[0019]我们的专利技术使用抽象语义计算来使得可以对时序图规范进行演绎验证,并且提供穷尽性保证。
[0020]本专利技术旨在改进该情况。
[0021]为此,提出了一种用于检查PLC程序(即,用任何PLC编程语言(例如IEC 61131

3标准定义的那些中的一个)编写的程序)的正确性的计算机实现方法。更具体地说,该PLC程序对应于通过时间功能规范数据(诸如如以上在参照图1时呈现的时序图的数据)描述的可编程逻辑控制器的类型的计算机程序。所述方法包括:
[0022]‑
S1:将PLC程序转化到模型中,
[0023]‑
S2:转化时间功能规范数据,并且将如此转化的时间功能规范数据整合到模型中,
[0024]‑
S3:计算抽象语义,以推断时间功能规范数据中丢失的信息,
[0025]‑
S4:执行谓词变换,以便从模型和预定义的正规化PLC指令演绎将被验证的性质,以使得PLC程序满足所述时间功能规范数据,
[0026]‑
S5:解算并且检查所述性质是否总是被验证,或者提供反例。
[0027]该方法的实现使得然后可以在性质未被验证时检测PLC程序的第一个点并且让程序员做出适当的校正。
[0028]根据S3的抽象语义的计算(后面接着是在S4中实现的演绎验证)已经证明是特别有效的,尤其是对于通过时间功能规范(诸如时序图)描述的PLC程序。
[0029]在特定的实施例中,所述方法可以进一步包括在S5之后:
[0030]‑
S6:将所述反例转化到PLC模型错误事件初始配置中;
[0031]‑
S8:至少对状态变量值和事件初始变量值进行汇编,
[0032]‑
S9:转化回PLC程序。
[0033]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种用于检查PLC程序的正确性的计算机实现方法,所述PLC程序对应于通过时间功能规范数据描述的可编程逻辑控制器的类型的计算机程序,所述方法包括:

S1:将所述PLC程序转化到模型中,

S2:转化所述时间功能规范数据,并且将转化的时间功能规范数据整合到所述模型中,

S3:计算抽象语义,以推断所述时间功能规范数据中丢失的信息,

S4:执行谓词变换,以便从所述模型和预定义的正规化PLC指令演绎将被验证的性质以使得所述PLC程序满足所述时间功能规范数据,

S5:解算并且检查所述性质是否总是被验证,或者提供反例。2.根据权利要求1所述的方法,其中所述方法进一步包括,在S5之后:

S6:将所述反例转化到PLC模型错误事件初始配置中,

S8:至少对状态变量值和事件初始变量值进行汇编,

S9:转化回PLC程序。3.根据权利要求2所述的方法,其中,在S6中,所述反例的转化给出以下中的至少一个:

在通过所述时间功能规范数据描述的特定事件之后不满足的输出值,

以及导致规范违反的至少一个变量值。4.根据权利要求2或3所述的方法,其中所述方法进一步包括,在S6之后和S8之前:

S7:模拟执行以便除了初始配置之外还获得事件执行的中间值,并且,在S8中,对状态变量值和事件初始变量值、此外还有中间变量值进行汇编。5.根据权利要求4所述的方法,其中,在S7中,从获得自S6的PLC模型错误事件初始配置并且从预定义的PLC正规化指令来计算模型事件执行中间值,以模拟所述PLC程序的执行,并且从在S6中给出的事件初始配置直到最终的不满足事件为止,重新计算事件执行期间的内部存储器和输出的中间值。6.根据权利要求4或5所述的方法,其中,在S8中,从所述PLC程序的开始直到最终的不满足事件为止,对来自S...

【专利技术属性】
技术研发人员:D
申请(专利权)人:三菱电机株式会社
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1