一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分析可编程逻辑控制器程序的方法、计算机程序和装置与流程

2021-11-10 05:19:00 来源:中国专利 TAG:


1.本发明涉及用于分析以iec 61113

3标准中描述的语言编写的程序的方法和装置。这种程序特别适用于可编程逻辑控制器(plc),以执行工业系统的控制。
2.本发明更具体地涉及用于分析、检测和纠正梯形图程序中的错误的方法和装置。


背景技术:

3.可编程逻辑控制器(plc)是工业数字计算机,其用作制造过程的自动化控制器(例如,装配线或机器人设备)。
4.plc配备了根据输入和内部存储器的值计算输出的软件,因此取代了硬接线继电器、定时器和定序器。也称为梯形图逻辑的梯形图语言是一种用于开发plc软件的编程语言。这种语言使用继电器逻辑硬件的电路图通过图形来表示plc程序。标准iec 61131

3描述了用于对plc进行编程的其他几种语言中的梯形图语言。
5.软件开发过程的一部分专门用于调试。调试包括检查程序是否按照给定的规范安全运行。在生产环境中实施之前需要进行调试,因为工厂中的缺陷在人员和物质损失以及工厂关闭时间方面可能非常昂贵。
6.通常的方法是模拟方法,该模拟方法包括设置一些通过初始配置定义的测试并对所述测试执行程序以检查其在这些配置下的行为。该程序通常在工厂的软件模拟中执行。
7.这种方法的主要缺点是它不是穷尽的,而且很耗时,因此成本很高。这种非穷尽性使得几乎不可能保证所选测试在生产环境中一次涵盖程序的所有可能执行。在测试阶段之后,程序中可能会保留缺陷,因为唯一的保证是程序不会因测试的配置而出现缺陷。
8.模型检查方法包括连续执行要测试的程序的模型,而不是程序本身,以节省时间和资源。然而,与执行路径相关的复杂度尤其是对于工业应用来说通常是指数级的。测试效率受cpu时间限制,因此该方法仍不是穷尽的。
9.此外,测试部分或全部手动开发并运行,因为需要手动定义至少一些配置来生成和执行所述测试。虽然部分测试生成和执行可以被自动化,但这种方法的另一个缺点是测试的输出值仍然必须由程序员分析,关于缺陷的唯一可用信息是导致缺陷的输入和内部存储器的初始配置。因此,通常很难理解错误的根本原因以及所考虑的初始配置为什么会在程序的某个点导致该错误。


技术实现要素:

10.根据本发明的一个方面,公开了一种可编程逻辑控制器程序分析方法,所述可编程逻辑控制器程序分析方法包括以下步骤:
11.‑
将可编程逻辑控制器程序类型的原始程序转换成逻辑框架中的模型;
12.‑
至少从所述模型和预定义语言形式化来确定所述原始程序的内部变量的一组属性;
13.‑
通过自动求解器验证与用户规范相结合的所述一组属性的可满足性,并且如果
来自所述一组属性的属性的对立(contraposition)是可满足的,则提供所述属性对立可满足的一组代表模型输入和内部存储器值的反例,或者如果所述一组属性总是得到满足,则提供其确认;
14.‑
将反例转换成所述模型的错误初始配置,所述初始配置包括输入和内部存储器的初始值;
15.‑
模拟具有所述模型的错误初始配置的模型的执行,并且从执行开始到所述属性违反,记录所述模型模拟的错误中间配置,所述中间配置包括内部存储器的中间值;
16.‑
将所述模型的错误初始配置和所述模型模拟的错误中间配置转换为所述原始程序的错误初始配置和错误中间配置;以及显示所述程序错误初始配置和程序错误中间配置。
17.在这些处理下,当违反与程序相关的一个或多个属性时,就会出现漏洞。属性与程序的输入、输出和本地存储器的值有关。本发明允许在模拟环境中或真实环境中执行程序之前检测这种违反。该方法包括查找在程序执行期间导致错误的输入和本地存储器的初始值。调试是自动化和加速的。该方法是穷尽的,因为它保证了如果利用所描述的方法没有发现错误场景,则不执行配置会违反程序属性。实际上,在现有技术中,即使在测试执行期间没有检测到属性违反,也不能保证该属性将适用于所有可能的执行。
18.由于所获得的初始和中间配置,还提供了有关错误场景的有用信息以及程序代码,以指示在程序执行期间在哪里、如何以及为什么发生这种错误。对属性违反精确地进行了解释。计算导致属性违反的初始配置,并且从初始配置到违反属性的程序点记录和检索执行信息(例如,存储器分配)。该方法检测作为互锁属性的、由程序员在一阶逻辑中表达的指令错误或功能规范违反。在执行期间可以与存储器值相关的附加信息一起打印程序,例如,导致属性违反的初始值和中间值以及如何修复漏洞。因此,该方法允许自动调试,因为不需要人工干预来确定要运行的测试、监督它们的执行和分析它们的结果。
19.该方法还允许更快的调试,因为它依赖于属性验证,而不是在多个测试配置下连续执行程序来模拟,因为它是对工业规模的复杂程序有限制的自动模拟的情况。因此减少了中央处理单元上的执行时间。
20.由于这些处理,提供了一种用于在工厂自动化行业中安全地减少梯形图程序的部署时间的高效、穷尽且快速的工具。
21.该模型优选地以一阶逻辑框架来表达,其可以在数学上证明,因此可用于表示计算问题。此外,一阶逻辑适用于表达从梯形图模型和相应的功能规范得出的属性,并且与高级逻辑框架相比,一阶逻辑属性的生成更容易自动化。
22.根据一个实施方式,将原始程序转换成模型的步骤包括将所述原始程序表达为抽象语法树的第一中间步骤以及从所述抽象语法树生成模型的第二中间步骤。
23.这种中间步骤的实现是有利的,因为抽象语法树可以利用其包含的每个元素的属性和注释等信息来增强。所述抽象语法树优选地以诸如ocaml的函数语言来描述。抽象语法树还允许在梯形图程序中存储每个元素的位置,这对于在模型的模拟执行期间检索错误中间配置很有用。
24.为此,模拟模型执行的步骤优选地包括:
25.‑
将所述模型错误初始配置转换成与抽象语法树相对应的错误初始配置的第一中
间步骤;
26.‑
利用所述相应的初始配置计算抽象语法树并检索与抽象语法树相对应的内部存储器的中间值的第二中间步骤。
27.抽象语法树表示是有利的,因为它允许生成不能通过简单执行梯形图程序获得的中间值(例如,连接指令的逻辑门处的值)。
28.根据一个实施方式,将原始程序转换成模型的步骤包括静态单赋值变换的中间步骤。静态单赋值变换优选地应用于抽象语法树表示,并且有利于在执行期间跟踪内部存储器值。
29.根据一个实施方式,在确定一组属性的步骤期间,使用迪杰斯特拉(dijkstra)的最弱前置条件演算来计算所述一组属性以确定所述一组属性的前置条件,基于其前置条件执行所述一组属性的验证。前置条件是属性固有的潜在假设。满足的前置条件意味着该属性被验证并且在其执行期间没有发生错误。
30.根据一个实施方式,使用可满足性模求解器来验证与用户规范相结合的所述一组谓语(predicates)的可满足性,该可满足性模求解器是被配置为求解可满足性模理论问题的自动求解器,该可满足性模理论问题是以一阶逻辑表达为逻辑公式的决策问题。
31.根据本发明的另一方面,公开了一种包括指令的计算机程序,当这些指令由至少一个处理器运行时,用于执行如上文所述的方法。
32.在优选实施方式中,所述计算机程序在演绎程序验证平台上执行。
33.本发明还针对一种存储根据本发明的计算机程序并使计算机执行如上定义的方法的步骤的非暂时性计算机可读介质。
34.根据本发明的另一方面,公开了一种用于执行如前所述的可编程逻辑控制器程序分析方法的装置。在一个实施方式中,这种装置可以包括处理电路pc(如图6的示例中所示),所述处理电路pc包括:
35.‑
存储器mem,其存储上述计算机程序指令并且可能还存储其他数据(例如,暂时性计算数据),
36.‑
处理器proc,其用于读取存储器mem的内容并执行根据本发明的方法的步骤,以及
37.‑
可能的输入/输出接口int,其用于(通过网络或任何其他链接)接收/发送要由处理器proc处理的数据。
附图说明
38.本发明的其他特征和优点从以非限制性示例的方式并参考附图的方式给出的、对其实施方式中的一者的以下详细描述中显现,在附图中:
39.[图1]图1例示了所公开的方法中涉及的一组示例性步骤,
[0040]
[图2]图2表示梯形图的示例,
[0041]
[图3]图3a和图3b例示了所公开的方法中涉及的中间步骤的执行结果,
[0042]
[图4]图4例示了所公开的方法中涉及的中间步骤的另一执行结果,
[0043]
[图5]图5例示了由于所公开的方法执行而导致的错误场景,
[0044]
[图6]图6例示了用于执行可编程逻辑控制器程序分析方法的处理电路pc的示例。
具体实施方式
[0045]
在附图中,相同的附图标记表示相同或相似的元件。
[0046]
图1示出了由参考数字10指定并且涉及梯形图程序演绎验证的一组示例性步骤。
[0047]
该方法的第一步骤(trans)是转换步骤,包括将plc程序(prog)转换成模型(mod)。
[0048]
所述plc程序prog可在下文称为plc的可编程逻辑控制器上执行。plc能够存储和执行指令(例如,排序、计时、计数、算术、数据操作和通信),以控制工业机器和过程。以输入和输出连接的形式提供现场设备的接口电路。
[0049]
梯形图以图形化的图的方式表示plc程序的顺序控制逻辑。梯形图语言是一种图形语言,其模仿如图2所示的表示梯形图的示例的继电器逻辑电气原理图。梯形逻辑实际上是一种基于规则的语言。规则(也称为“梯级”)在由一组数据中的条件激活时被实例化。根据所述激活选择一个组并且执行属于这些规则的语句。当利用诸如继电器的机电设备实现时,构成程序的各种规则作为软件的一部分在连续循环中顺序执行。通过每秒执行多次循环,可以实现同时且立即执行的效果。梯级按给定顺序执行,以实现可编程控制器的正确操作。更具体地,梯形图程序可以包括连续执行的一个循环(例如,每100毫秒执行一次)。
[0050]
梯级输入是逻辑检查器(也称为“触点”)。所谓的“触点”可以指经由集成或外部输入模块从诸如按钮和限位开关之类的物理设备到可编程控制器的物理或硬输入。触点也可以表示内部存储位的状态,这些内部存储位可以在程序的其他地方生成。
[0051]
梯级输出是由“线圈”表示的执行器。“线圈”可以代表操作连接到可编程控制器的某些设备的物理输出,或者可以代表用于程序中其他地方使用的内部存储位。每个触点或线圈与可编程控制器的存储器中的单个位的状态相对应。这些指令提供检查存储器中特定位地址的on/off状态并控制内部和外部输出的状态的能力。与机电继电器不同,梯形图程序可以多次引用单个位的状态,这相当于具有无限大量触点的继电器。
[0052]
在梯形图中,梯级被构建为连接指令的网络。指令之间的连接代表所述指令之间的逻辑关系。例如,在梯形图逻辑中,or逻辑是通过两个触点的并联连接来实现的,而and逻辑是通过梯形图逻辑作为触点的串联连接来实现的。
[0053]
第一步骤(trans)中操作的转换是通过实现转换算法来执行的。转换算法使用梯形图基元(ladder primitive)的预定义模型化,以将梯形图程序(prog)转换成以逻辑框架表达的模型(mod)。梯形图基元包括构成梯形图逻辑电路(例如,由触点表示的逻辑检查器、由线圈表示的执行器、功能块以及更一般的任何基本或增强的梯形图语言指令)的逻辑指令元素。
[0054]
模型(mod)优选地以一阶逻辑的逻辑框架来表达。一阶逻辑是命题逻辑的扩展,并且考虑命题在世界的局部视图(称为域)中是真还是假。一阶逻辑由字母表、一阶语言、一组公理和一组推理规则组成。由于一阶逻辑可以在数学上证明,因此它可用于表示计算问题。一阶逻辑由语法和语义组成。一阶逻辑的语法是一种用于表达概念的形式语言,一阶逻辑公式的语义确定了任何一阶逻辑公式的值。
[0055]
给定梯形图程序的顺序结构,转换仅对包含在循环本身中的指令进行操作。因此,不需要以时间逻辑表示程序模型,因为程序不涉及循环的连续执行。在转换的第一步骤中,代数数据类型用于对程序的输入、内部存储和输出进行建模,而多态类型用于对多个模型基元进行因式分解。
[0056]
指令的建模包括将它们表达为一阶公式,以表示谓语。谓语基本上是非二进制变量的二进制值函数。可以从这些谓语中获得执行时间处输入和本地存储器的授权值。指令模型化可能与表示为一阶公式的属性相关联,这些属性表达执行时间处输入和本地存储器的授权值(即,指令在执行时不会引发错误的值)。这些公式可能会链接到附加信息,像它们所涉及的指令和错误原因。
[0057]
梯形图模型是使用包括所述谓语的数学语句生成的。换句话说,梯形图程序的目标是利用选定的数学逻辑中的一组谓语来表达的。这种数学语句的验证确保了程序的计算方法是正确的。这种数学语句的验证明确了计算方法执行预期计算的原因。这种验证也称为证明,并且确保了与数学语句相关联的程序的执行安全性和可靠性。如果证明在程序执行期间没有遇到运行时错误(例如,非法访问存储器或溢出、非法操作(像试图除以0)或在涉及循环的连续执行的其他类型程序的情况下的像无限循环的终止问题),则可以确保执行安全性。程序可靠性也称为函数正确性,并且包括验证程序是否完成了它应该做的事情。
[0058]
在形式逻辑中,当且仅当系统中可以证明的每个公式相对于系统的语义在逻辑上都是有效的时,逻辑系统才具有可靠属性。换句话说,当系统的所有定理都是重言式时,系统就是可靠的。演绎系统的可靠性是这样一种属性,即在该演绎系统中可证明的任何语句在该理论所基于的语言的语义理论的所有解释或结构上也是真的。
[0059]
在优选实施方式中,第一步骤包括第一中间步骤(ast

trans),其中,梯形图程序首先被表示为抽象语法树,也称为ast表示或语法树,以下简称为首字母缩略词ast。然后在第二中间步骤(mod

trans)中根据梯形图程序的ast表示生成梯形图模型。
[0060]
抽象语法树是用编程语言编写的源代码的抽象语法结构的树表示。树的每个节点表示出现在源代码中的构造,在本实施方式中,该源代码是梯形图程序。
[0061]
ast可以利用其包含的每个元素的例如属性和注释等信息进行编辑和增强。对于梯形图程序的源代码,这种编辑和注释是不可能的,因为这意味着要对其进行更改。
[0062]
与梯形图程序相比,它的ast不包括出现在真实语法中的每一个细节,而只是包括结构和内容相关的细节,例如,大括号、分号或圆括号。像if

condition

then表达式这样的语法结构可以借助于具有三个分支的单个节点来表达。
[0063]
由于编译器分析的连续阶段,ast通常包含有关程序的额外信息。以ast表示梯形图程序是有利的,因为它允许存储梯形图程序中的每个元素的位置,这在方法的以下步骤中是有用的。这个中间步骤也很有趣,因为对ast的完整遍历通常允许验证程序的正确性。
[0064]
在本实施方式中,所述ast表示优选地以例如ocaml的函数语言进行描述。
[0065]
在优选实施方式中,转换算法包括第三中间步骤,其中,静态单赋值变换(ssat)用于在程序执行期间跟踪内部存储器值。在命令式编程语言(例如,梯形图语言)中,赋值允许变量在其生命周期和范围内的不同时间保持不同的值。静态单赋值变换有利于保持跟踪在每个执行阶段赋予的值。为了对以命令式语言编写的程序执行演绎验证,需要转换成函数模型,并且转换成函数模型对模型执行的,尤其是对ast表示执行,这要归功于静态单赋值变换。静态单赋值变换可以看作是链接步骤,该链接步骤允许向模型元素添加信息(像代码位置),以便将它们链接到梯形图程序元素。因此,可以容易地执行回溯到原始梯形图程序(prog)。图3b提供了这种静态单赋值变换的示例,其中,在模型执行的不同步骤中整数d1的值被存储为(d1_1,d1_2,d1_3)的值。这种变换的等价物以图3a的梯形图表示。
[0066]
该方法的第二步骤(predt)包括从梯形图程序模型(mod)生成属性(prop)。第二步骤将模型(mod)与预定义的语言形式化(lform)相结合,以获得与所述模型(mod)相关的属性(prop)。然后获得关于所述属性的条件(cond)。
[0067]
这种属性代表在模型执行时执行的操作,并预期在执行的每个阶段进行验证。它们类似于在每次递归调用时验证循环不变量。关于所述属性的条件可以被分为两类:前置条件和后置条件。
[0068]
前置条件(precond)指示属性(prop)固有的并且应在其执行之前进行验证否则可能会发生错误的潜在假设。更具体地,当调用例程时,假设满足与所述例程属性相对应的前置条件,从而验证所述例程属性。
[0069]
例如,阶乘函数程序包括代表对变量执行的递归演算的循环。这种循环的前置条件是计算了其阶乘的变量在循环开始时必须是正整数。
[0070]
后置条件代表在验证先决条件的情况下调用例程时预期的结果。因此,可以根据属性计算在例程结束时预期的结果推导出例程属性的前置条件。在循环的情况下,前置条件和后置条件密切相关甚至相似并形成循环不变量,特别是在涉及连续执行循环的程序中。如果在循环的执行阶段满足后置条件,则确保了也满足下一阶段的前置条件。
[0071]
为此,第二步骤(predt)使用迪杰斯特拉的最弱前置条件演算来计算所述属性并确定与模型属性(prop)相关的前置条件(precond)。图4例示了在第二步骤中生成和计算以获得前置条件的属性的示例。图4的属性可以如下:“如果在x中存储的值为“开启”/“真”,则存储在d1中的值大于0且小于9999”。
[0072]
对一阶逻辑属性执行迪杰斯特拉的最弱前置条件演算可确保这样的计算是可靠的,同时使计算属性的大小最小化。前置条件提供了每个属性的定义域。该步骤确保了证明的可靠性,因为满足的前置条件意味着例程属性成立,并且在其执行期间没有出现错误。因此,如果满足属性,或者换言之,所述属性的对立不可满足,则在执行相应的梯形图程序时不会发生错误。
[0073]
在有利的实施方式中,根据用户规范(func)表达其他特性。用户规范也称为功能规范,并且描述了程序的预期行为,即,程序必须执行以满足程序用户所需要的以及所要求的输入和输出属性请求的功能。例如,在工业环境中,只有当传感器接收到给定范围内的信号时,才可以要求机器人手臂运行。编写的程序应该符合所述规范;然而,从用户规范得到的计算属性是附加安全措施,因为编写的程序可能包含指令错误。
[0074]
这些属性是互锁属性(intprop),并且是通过以一阶逻辑表达功能规范而获得的。所述互锁属性与模型的属性一起计算,作为要满足的附加后置条件。因此,使用迪杰斯特拉的最弱前置条件演算,也可以从这些互锁属性中得到前置条件(precond)。
[0075]
高级逻辑框架也可以用于第一步骤和第二步骤;然而,一阶逻辑通常足以表达从梯形图模型(prop)和相应的功能规范(intprop)得到的属性。高级逻辑框架可能会引入与最终应用程序有关的不必要的复杂度。此外,与高级逻辑框架相比,一阶逻辑属性的生成更容易自动化。
[0076]
从功能规范得到的属性的计算确保了当模型的属性得到满足时,在执行时不会发生因违反功能规范而导致的错误。
[0077]
第二步骤也称为谓语变换,并且优选地在演绎程序验证平台(plat)上计算,该
plat包括适当的工具以接收梯形图模型作为输入并生成各种程序的形式证明。第一步骤也优选地在演绎程序验证平台(plat)上计算。指令建模可以通过外部建模工具来执行,该工具可以包括在所述演绎程序验证平台中下载的库,并且该库包括梯形图语言的预定义模板和模型。在一个有利的实施方式中,所述平台(plat)是why3类型的,并且梯形模型(mod)以whyml类型的编程语言来表达。
[0078]
该方法的第三步骤(smt)使用自动求解器以便正式证明在第二步骤中生成的属性,或者找到这些属性的反例。如果这些生成的属性总是满足,或者如果它们的对立是不可满足的,则正式证明了这些生成的属性。所述属性(prop)或其对立的可满足性是根据其先前定义的前置条件(precond)来评估的。
[0079]
在优选实施方式中,第三步骤由可满足性模理论(smt)问题的自动定理证明器执行,该自动定理证明器可用于证明大量内置逻辑理论及其组合中的一阶公式的有效性或双重可满足性。这种求解器被配置为求解可满足性模理论问题,这些问题是以一阶逻辑表达为逻辑公式的决策问题。smt问题是sat问题,其中,命题变量被另一种数学理论的公式替换。更具体地说,smt问题被表达为一组smt实例,这些实例是具有附加解释的一阶逻辑中的公式。
[0080]
先前在第二步骤中使用的演绎程序验证平台一般也包括自动求解器。因此,它也可用于计算第三步骤。可以优选使用的求解器的示例是cvc4。另一示例可以是z3和alt

ergo。求解器必须被配置为与平台正确交互以运行证明并提供反例。所述交互包括需要证明或反例的模型元素的指示。在所述平台(plat)是why3的优选实施方式中,需要证明或反例的模型元素可以用whyml语言中的特定函数来标记,如图3b中可以看到的标签“模型跟踪”。
[0081]
解析度是相对于背景理论启发式地执行的并且包括确定smt实例是否可满足。至少相对于整数线性算术理论,优选记录理论、线性实数算术和字符串的理论,解析从第二步骤获得的属性。在有利的实施方式中,自动定理证明器是基于具有多态类型的一阶逻辑的,并且优选地包括内置基础理论(例如,有理和整数线性算术、数组、元组、记录、归纳数据类型、位向量、字符串以及未解释函数符号的等式)。在更优选的实施方式中,这种自动定理证明器还包括对量词和模型生成能力的支持。
[0082]
如果在使用smt求解器进行计算时满足在第二步骤获得的属性(prop,intprop),则由smt求解器生成表示满足属性的证明的响应(proof ok)。然后确保程序(prog)的指令不会在生产时出现错误,和/或用户表达的功能规范(func)对梯形图程序(prog)的所有可能执行都适用。因此,证明了程序(prog)的可靠性。
[0083]
否则,如果属性(prop,intprop)的对立是可满足的,则求解器会提供该属性的反例。代表所述反例的响应(proof nok)由smt求解器生成,并且与导致不满足所述属性的情况的模型配置相对应。特别是,反例的内容至少是指初始配置,因为形式证明是基于前置条件(precond)进行评估的。
[0084]
该方法的第四步骤将所获得的属性反例(proof nok)转换(transb)成模型配置,更具体地说,转换成初始模型配置。所述模型配置包括模型输入和内部存储器值。这种转换是在所述预定义语言形式化(lform)的基础上执行的,并且作为第二步骤中来自模型(mod)的属性生成过程的反向而操作。
[0085]
所获得的属性反例包括与初始(iniconf)和中间(intconf)模型配置相对应的数据,因为模型和演绎验证过程是函数的。所述初始模型配置(iniconf)包括在执行梯形图模型(mod)开始时的模型输入和内部存储器的初始值,这导致不满足所述属性的情况。所述中间模型配置包括在执行梯形图模型(mod)开始与不满足所述属性的模型位置之间的内部存储器的中间值。
[0086]
但是,所述反例不包括执行期间生成的所有中间值。例如,在梯形图程序的执行期间,可以将四个值赋值给梯形图程序变量x。因此,这四个值被赋值给代表变量x的四个中间变量(x1,x2,x3,x4)。在某些情况下,所获得的反例可能不会返回与所有中间变量(x1,x2、x3、x4)相对应的值。
[0087]
如下详述,克服这种情况的优选方法是从所获得的反例中选择初始配置,并且通过利用选自反例的所述初始配置(iniconf)执行模型来重新计算中间变量(x1,x2,x3,x4)的值。
[0088]
第五步骤包括模拟梯形图程序的执行(exe),以便根据第四步骤中获得的模型初始配置计算内部存储器的中间值。
[0089]
在优选实施方式中,第五步骤包括第一中间步骤(ast

transb),其包括将在第四步骤中获得的模型初始配置(iniconf)转换成ast表示的相应初始配置(ast

iniconf),优选地以ocaml语言表达。这种转换可以从ast表示到模型的转换来得到,如在第一步骤中所运行的。
[0090]
第五步骤包括第二中间步骤(ast

syex),其包括由符号执行引擎利用所述相应初始配置(ast

iniconf)计算ast表示,以便检索和记录ast表示内部存储器(ast

intconf)的中间值。ast表示执行作为梯形图程序执行的模拟而运行。中间值的收集被执行到发生错误或违反规范的执行点。第五步骤步也可以在所述演绎程序验证平台上执行。
[0091]
ast表示是有利的,因为它允许生成无法通过执行梯形图程序获得的中间值。原因之一是在梯形图模型中,连接指令的逻辑门不被表示为变量。因此,在返回的反例中没有明确说明发生在这种代码位置的错误。在第一步骤步中进行转换时,这些代码位置处的值将丢失,并且不会在第三步骤提供的反例值中检索到。但是,这些代码位置处的值对于正确解释导致错误的原因至关重要。第五步骤还允许检索这些代码位置处的值,这要归功于已被应用单个静态赋值的ast表示的执行。
[0092]
第五步骤提供模型错误场景,通过这些场景收集导致错误或违反规范的值。模型错误场景是基于ast表示配置(ast

iniconf、ast

intconf)的。
[0093]
第六步骤将模型错误场景转换回梯形图程序。ast表示配置(ast

iniconf、ast

intconf)被转换回梯形图程序的相应配置。图5例示了具有二进制值的颜色的错误场景和所述错误场景的整数值的标签。梯形图程序以图形方式显示,如图5所示,并富有与以下内容相关的信息:程序中的错误位置;所述错误之前的执行路径,并且该执行路径例如用颜色高亮来指示;从程序执行开始到错误或违反规范的输入和内部存储器的值。错误场景连同在第一步骤中添加到模型中的错误位置和原因信息提供了与发现的错误以及如何修复它有关的非常完整的信息。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献