CN109815153B - Plc程序及电机启停控制程序的静态切片方法和装置 - Google Patents
Plc程序及电机启停控制程序的静态切片方法和装置 Download PDFInfo
- Publication number
- CN109815153B CN109815153B CN201910121849.7A CN201910121849A CN109815153B CN 109815153 B CN109815153 B CN 109815153B CN 201910121849 A CN201910121849 A CN 201910121849A CN 109815153 B CN109815153 B CN 109815153B
- Authority
- CN
- China
- Prior art keywords
- output variable
- matrix
- plc program
- output
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000003068 static effect Effects 0.000 title claims abstract description 120
- 238000000034 method Methods 0.000 title claims abstract description 64
- 239000011159 matrix material Substances 0.000 claims abstract description 227
- 238000010586 diagram Methods 0.000 claims description 32
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012360 testing method Methods 0.000 abstract description 9
- 238000004458 analytical method Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 15
- 101100343605 Arabidopsis thaliana LOG1 gene Proteins 0.000 description 3
- 101150083341 LOG2 gene Proteins 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 208000027418 Wounds and injury Diseases 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Abstract
提供一种PLC程序及电机启停控制程序的静态切片方法和装置,该PLC程序静态切片方法包括:建立PLC程序的输出变量依赖关系图;确定所述输出变量依赖关系图的邻接矩阵;确定所述邻接矩阵的可达矩阵,以获得PLC程序的输出变量之间的逻辑可达关系;基于所述可达矩阵,确定影响指定输出变量的关联输出变量;获取PLC程序中所述指定输出变量和所述关联输出变量所在的梯级,形成PLC程序对于所述指定输出变量的静态切片。采用本发明示例性实施例的PLC程序及电机启停控制程序的静态切片方法和装置,能够有效缩减PLC程序的规模,提高其分析和测试的效率。
Description
技术领域
本发明总体说来涉及程序静态切片技术领域,更具体地讲,涉及一种PLC(Programmable Logic Controller,可编程逻辑控制器)程序静态切片方法和装置以及电机启停控制程序的静态切片方法和装置。
背景技术
可编程逻辑控制器PLC是一种被广泛应用于工业现场的计算机,它既可以作为机器人等智能设备的核心控制器,也可以作为智能制造生产线的重要组成部分,执行控制与监视等功能。由于PLC采用了独特的体系结构和高可靠性的硬件,使得它在恶劣的工业现场环境中仍能有很好的表现。另一个突出特点是它可编程的特性,这为工程师设计、调试和修改用户程序提供了很大的方便。但也正是因为工程师在设计PLC程序时有很大的灵活性,如果不小心引入错误,可能对系统或人员造成伤害。因此,如何尽早地发现并移除PLC程序中的错误就成为一个重要的问题。
目前,通常采用的测试方法有两种,一是模拟输入信号将其施加于实际PLC上,再检验其输出是否为期望值;二是借助于厂商提供的模拟器软件,在虚拟环境中进行测试。如果发现某个或某些输出有异常,再采用程序回溯的办法逐一查找原因并更正。在PLC程序规模不大,程序复杂程度不高的情况下,上述测试方法尚且可以被接受。但是对于大型的PLC程序,由于涉及变量较多且相互作用关系复杂,如靠纯人工回溯的办法进行查找,不仅非常耗时而且极易出错,使得测试效率非常低。
程序切片是由Weiser博士提出的一种重要的程序分析和理解方法,用于从源程序中抽取出对程序兴趣点上的特定变量有影响的语句和谓词,组成新的程序(称作切片)然后通过分析切片来分析源程序的行为。程序切片分为静态切片和动态切片两种,两者的区别在于求取静态切片无需实际执行程序,而求取动态切片需要在程序执行的条件下,分析程序语句之间的关联关系。
对一个具体PLC程序来说,某一个梯级的输出,可能直接或以逻辑非的形式作为其它多个梯级的输入,这导致PLC程序梯级之间的数据关联关系变得非常复杂。也就是说,PLC程序由于受到硬件体系结构、程序运行方式及指令系统规模等因素的限制,使得通用的程序切片方法难以直接应用。
发明内容
本发明的示例性实施例的目的在于提供一种PLC程序及电机启停控制程序的静态切片方法和装置,以克服上述至少一个缺陷。
在一个总体方面,提供一种可编程逻辑控制器PLC程序静态切片方法,包括:建立PLC程序的输出变量依赖关系图;确定所述输出变量依赖关系图的邻接矩阵;确定所述邻接矩阵的可达矩阵,以获得PLC程序的输出变量之间的逻辑可达关系;基于所述可达矩阵,确定影响指定输出变量的关联输出变量;获取PLC程序中所述指定输出变量和所述关联输出变量所在的梯级,形成PLC程序对于所述指定输出变量的静态切片。
可选地,PLC程序的输出变量依赖关系图可包括多个子依赖关系图,其中,每个子依赖关系图可通过以下方式来确定:针对PLC程序的每个梯级,建立该梯级的输出变量的子依赖关系图。
可选地,任一梯级的输出变量的子依赖关系图可包括节点和边,其中,每个节点为所述任一梯级中的输出变量,可通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,所述任一边的起始节点为作为所述任一边的终止节点的输入的输出变量。
可选地,所述任一梯级的输出变量的子依赖关系图可还包括环,由与输出指令相结合的输出变量指向自身的有向边可形成环。
可选地,确定所述邻接矩阵的可达矩阵的步骤可包括:基于单位阵和所述邻接矩阵,计算中间矩阵;通过将所述中间矩阵中的非零元素的取值替换为1,将零元素的取值保持不变,来获得所述邻接矩阵的可达矩阵。
可选地,基于所述可达矩阵,确定影响指定输出变量的关联输出变量的步骤可包括:从所述可达矩阵中获取所述指定输出变量所在列的各元素的数值;将数值为1的元素对应的输出变量确定为所述指定输出变量的关联输出变量。
可选地,基于所述可达矩阵,确定影响指定输出变量的关联输出变量的步骤可包括:如果所述可达矩阵为全一矩阵,则确定影响指定输出变量的关联输出变量为PLC程序中包括的所有输出变量,其中,PLC程序对于所述指定输出变量的静态切片为PLC程序本身,如果所述可达矩阵为单位阵,则确定影响指定输出变量的关联输出变量为所述指定输出变量,其中,PLC程序对于所述指定输出变量的静态切片为所述指定输出变量所在的梯级。
在另一总体方面,提供一种电机启停控制程序的静态切片方法,包括:建立电机启停控制程序的输出变量依赖关系图;确定所述输出变量依赖关系图的邻接矩阵;确定所述邻接矩阵的可达矩阵,以获得电机启停控制程序的输出变量之间的逻辑可达关系;基于所述可达矩阵,确定影响指定输出变量的关联输出变量;获取电机启停控制程序中所述指定输出变量和所述关联输出变量所在的梯级,形成电机启停控制程序对于所述指定输出变量的静态切片。
可选地,电机启停控制程序的输出变量依赖关系图可包括多个子依赖关系图,其中,每个子依赖关系图可通过以下方式来确定:针对电机启停控制程序的每个梯级,建立该梯级的输出变量的子依赖关系图。
可选地,任一梯级的输出变量的子依赖关系图可包括节点和边,其中,每个节点可为所述任一梯级中的输出变量,可通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,所述任一边的起始节点为作为所述任一边的终止节点的输入的输出变量。
可选地,所述任一梯级的输出变量的子依赖关系图可还包括环,由与输出指令相结合的输出变量指向自身的有向边可形成环。
可选地,基于所述可达矩阵,确定影响指定输出变量的关联输出变量的步骤可包括:从所述可达矩阵中获取所述指定输出变量所在列的各元素的数值;将数值为1的元素对应的输出变量确定为所述指定输出变量的关联输出变量。
可选地,基于所述可达矩阵,确定影响指定输出变量的关联输出变量的步骤可包括:如果所述可达矩阵为全一矩阵,则确定影响指定输出变量的关联输出变量为电机启停控制程序中包括的所有输出变量,其中,电机启停控制程序对于所述指定输出变量的静态切片为电机启停控制程序本身,如果所述可达矩阵为单位阵,则确定影响指定输出变量的关联输出变量为所述指定输出变量,其中,电机启停控制程序对于所述指定输出变量的静态切片为所述指定输出变量所在的梯级。
在另一总体方面,提供一种PLC程序静态切片装置,包括:关系图建立单元,建立PLC程序的输出变量依赖关系图;邻接矩阵确定单元,确定所述输出变量依赖关系图的邻接矩阵;可达矩阵确定单元,确定所述邻接矩阵的可达矩阵,以获得PLC程序的输出变量之间的逻辑可达关系;关联变量确定单元,基于所述可达矩阵,确定影响指定输出变量的关联输出变量;静态切片确定单元,获取PLC程序中所述指定输出变量和所述关联输出变量所在的梯级,形成PLC程序对于所述指定输出变量的静态切片。
可选地,PLC程序的输出变量依赖关系图可包括多个子依赖关系图,其中,关系图建立单元可通过以下方式来确定每个子依赖关系图:针对PLC程序的每个梯级,建立该梯级的输出变量的子依赖关系图。
可选地,任一梯级的输出变量的子依赖关系图可包括节点和边,其中,每个节点为所述任一梯级中的输出变量,通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,所述任一边的起始节点为作为所述任一边的终止节点的输入的输出变量。
可选地,所述任一梯级的输出变量的子依赖关系图可还包括环,由与输出指令相结合的输出变量指向自身的有向边可形成环。
可选地,关联变量确定单元可从所述可达矩阵中获取所述指定输出变量所在列的各元素的数值,将数值为1的元素对应的输出变量确定为所述指定输出变量的关联输出变量。
可选地,如果所述可达矩阵为全一矩阵,则关联变量确定单元可确定影响指定输出变量的关联输出变量为PLC程序中包括的所有输出变量,其中,静态切片确定单元可将PLC程序本身确定为PLC程序对于所述指定输出变量的静态切片,如果所述可达矩阵为单位阵,则关联变量确定单元可确定影响指定输出变量的关联输出变量为所述指定输出变量,其中,静态切片确定单元可将所述指定输出变量所在的梯级确定为PLC程序对于所述指定输出变量的静态切片。
可选地,所述PLC程序可指为实现预定功能而开发的用户程序。
在另一总体方面,提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序在被处理器执行时实现上述的PLC程序静态切片方法,或者上述的电机启停控制程序的静态切片方法。
在另一总体方面,提供一种计算装置,所述计算装置包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现上述的PLC程序静态切片方法,或者上述的电机启停控制程序的静态切片方法。
采用本发明示例性实施例的PLC程序及电机启停控制程序的静态切片方法和装置,能够有效缩减PLC程序的规模,提高其分析和测试的效率。
附图说明
通过下面结合示例性地示出实施例的附图进行的详细描述,本发明示例性实施例的上述和其它目的、特点和优点将会变得更加清楚,其中:
图1示出根据本发明示例性实施例的PLC程序静态切片方法的流程图;
图2示出根据本发明示例性实施例的具有锁存功能的PLC程序的示例图;
图3示出根据本发明示例性实施例的图2所示的PLC程序的输出变量依赖关系图;
图4示出根据本发明示例性实施例的确定可达矩阵的步骤的流程图;
图5示出根据本发明示例性实施例的电机启停控制程序的示例图;
图6示出根据本发明示例性实施例的电机启停控制程序的静态切片方法的流程图;
图7示出根据本发明示例性实施例的电机启停控制程序的输出变量依赖关系图;
图8示出根据本发明示例性实施例的电机启停控制程序中指定输出变量为OUT_1的输出变量依赖关系;
图9示出根据本发明示例性实施例的电机启停控制程序对于指定输出变量OUT_1的静态切片;
图10示出根据本发明示例性实施例的电机启停控制程序对于指定输出变量OUT_1和OUT_2的静态切片;
图11示出根据本发明示例性实施例的PLC程序静态切片装置的框图。
具体实施方式
现在,将参照附图更充分地描述不同的示例实施例,其中,一些示例性实施例在附图中示出。
图1示出根据本发明示例性实施例的PLC程序静态切片方法的流程图。
参照图1,在步骤S10中,建立PLC程序的输出变量依赖关系图。
应理解,PLC控制系统的程序主要包括系统程序和用户程序。
系统程序由PLC生成厂家固化在存储器中,用于控制PLC的正常运行,在PLC出厂前一般都经过充分的测试,错误率很低。
用户程序由PLC使用者编制录入,保存在用户存储器中,用于控制外部对象的运行。也就是说,用户程序是PLC使用者针对具体控制对象编制的程序,用户程序决定了一个PLC控制系统的功能。
本发明示例性实施例中的PLC程序是指为实现预定功能而开发的用户程序,即,PLC使用者(也可称为用户)为某个具体应用所开发的用户程序。
大多数PLC的用户程序具有图形化编程的特点,在一优选实施例中,上述PLC程序是采用梯形图语言编写的PLC程序,即,以梯形图方式来编写PLC程序。
优选地,上述PLC程序可由巴科斯范式BNF语法所生成,在此情况下,PLC程序具体如下特点。
(1)模块化。
一个PLC程序(program)可由至少一个梯级文件(ladder_file)所组成,一个梯级文件(ladder_file)可以包含多个梯级(rung)。这样,执行某些相关功能的梯级可以写在一个梯级文件中,利用梯级文件之间的调用关系设计“高内聚,低耦合”的模块化程序。
(2)指令多且复杂。
梯形图程序指令(instruction)既可以描述与(XIC)、与非(XIO)等简单逻辑,也可以设置定时器(TON)、计数器(CTU)等复杂功能,而且用户还可以根据需要自定义新的指令。另外,对于像定时器(TON)等复杂指令,除了可以在程序中直接使用指令名外,还可以取某些特殊的标志位,如T_1.DN表示定时器T1计时完成。
(3)编写灵活。
PLC程序指令与变量是分离的,例如,与输入指令相结合的变量可能是输入变量,也可能是输出变量,与输出指令相结合的变量一定是输出变量。由于输出变量既可以与输出指令相结合,也可以与输入指令相结合,这为在梯形图的一个梯级中使用另一个梯级的输出结果提供了可能。例如,如果输出指令与输出变量相结合,则不仅可以作为某个输入指令表(input_list)的输出结果,还可以作为输入指令表(input_list)的一部分。这样可以有效减少梯级的数量,使梯形图程序的编写变得简洁紧凑。
在本发明示例性实施例中,PLC程序的输出变量依赖关系图可包括多个子依赖关系图。也就是说,可针对PLC程序的每个梯级,建立该梯级的输出变量的子依赖关系图,所有梯级的输出变量的子依赖关系图构成了PLC程序的输出变量依赖关系图。优选地,多个子依赖关系图可为有向图,即,PLC程序的输出变量依赖关系图也是有向图。
作为示例,任一梯级的输出变量的子依赖关系图可包括节点和边。
例如,每个节点可为任一梯级中的输出变量,通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,该任一边的起始节点为作为该任一边的终止节点的输入的输出变量。
针对PLC程序的任一梯级,可根据该任一梯级中的输出变量与输入指令、输出指令的结合情况,以及输出变量在输入指令表(input_list)和输出指令表(output_list)的具体位置,来构造如下的该任一梯级的输出变量的子依赖关系图。
例如,该任一梯级的输出变量的子依赖关系图LOG,LOG=(V,E)是一个有向图,其中,V为子依赖关系图的节点集,E为子依赖关系图的边集。
节点集V中的每个节点(va∈V)为PLC程序一个梯级的输出变量,1≤a≤t,t为梯级的输出变量的个数,t为大于等于1的自然数。
边集E中的每个边为有向边,例如,用于连接节点va和节点vb的边<va,vb>(<va,vb>∈E,1≤b≤t),该边为由起始节点va指向终止节点vb的一条有向边,节点va位于指令表input_list中,节点vb由语法规则output_list::=instruction|output_branch推导出。这里,output_branch::=output_branchinput_listoutput_list|(*empty*)”。
在继电器控制电路形式的梯形图上,终止节点vb由语法规则output_list::=instruction|output_branch推导出,这意味着终止节点vb所表示的输出变量是与输出指令相结合的,并且该输出变量可以出现在提及的任何位置,例如,该终止节点vb所表示的输出变量的右侧可以还存在输出变量,或者该输出变量的右侧不再有输入或输出指令(即,该输出变量与输出指令的结合直接与右母线相连接)。
这里,应理解,对于语法规则比较简单的PLC程序,例如,针对输出变量与输出指令相结合不可以出现在梯级的任何位置,而只能与右母线直接连接的情况,可将与右母线直接连接的输出变量确定为边的终止节点。
在一优选实施例中,任一梯级的输出变量的子依赖关系图可还包括环,由与输出指令相结合的输出变量指向自身的有向边形成环。
图2示出根据本发明示例性实施例的具有锁存功能的PLC程序的示例图。
如图2所示,IN_1和IN_2为输入变量,OUT_1和OUT_2为输出变量,输出变量OUT_1与输出指令OTE结合,尽管未与右母线相连接,但是其也是整个梯级的逻辑输出。由于在PLC程序中,常用和自身的“逻辑与”表示锁存关系,输出变量OUT_2既与输出指令OTE结合,作为整个梯级的逻辑输出,也与输入指令XIC相结合,作为整个梯级输入指令表的一部分。这样,在该梯级的输出变量的子依赖关系图LOG中将有由输出变量OUT_2指向其自身的有向边,即形成环(如图3所示)。
特别地,如果梯级只有一个输出变量,该梯级所对应的子依赖关系图LOG中仅有一个节点,在子依赖关系图LOG中可能有环,也可能没有环。
另外,PLC程序中各输出变量的属性依赖于输出变量而存在,因此这里可将定时器(TON)的指令名和标志位统一抽象成子依赖关系图LOG中以指令名命名的相同节点。例如,定时器计时完成标志位T_1.DN在子依赖关系图LOG中可被记为T_1。
这里,PLC程序中所有梯级的输出变量的子依赖关系图LOG构成了PLC程序的输出变量依赖关系图POG。例如,如果PLC程序由m个梯级L1,L2,…,Lm组成,则梯级L1,L2,…,Lm所对应的梯级的输出变量的子依赖关系图可分别为LOG1,LOG2,…,LOGm,那么该PLC程序的输出变量依赖关系图POG可由所有子依赖关系图LOG1,LOG2,…,LOGm组成,记为POG={LOG1,LOG2,…,LOGm}。
也就是说,PLC程序的输出变量依赖关系图保持其所包含的各个梯级的输出变量的子依赖关系图的节点与连接关系不变。
返回图1,在步骤S20中,确定输出变量依赖关系图的邻接矩阵。
这里,可将输出变量依赖关系图存储为邻接矩阵。作为示例,邻接矩阵可为一n阶方阵,n为PLC程序中包括的输出变量的个数。邻接矩阵的每一行可分别用于表示一输出变量与PLC程序中所有输出变量之间的逻辑关联。
例如,邻接矩阵A中第i行第j列的元素A(i,j)的取值可通过以下方式来确定:
公式(1)中,vi为第i行的输出变量,vj为第j列的输出变量,E为输出变量依赖关系图的边集,1≤i≤n,1≤j≤n。也就是说,元素A(i,j)对应第i行的节点vi和第j列的节点vj,当连接节点vi与节点vj的边属于边集E,且节点vi与节点vj不是同一节点时,元素A(i,j)的取值为1。
在步骤S30中,确定邻接矩阵的可达矩阵,以获得PLC程序的输出变量之间的逻辑可达关系。
这里,可利用各种方法来基于邻接矩阵求取可达矩阵。在一优选实施例中,确定邻接矩阵的可达矩阵的步骤可包括:基于单位阵和邻接矩阵,计算中间矩阵;通过将中间矩阵中的非零元素的取值替换为1,将零元素的取值保持不变,来获得邻接矩阵的可达矩阵。
作为示例,可利用如下公式来计算所述中间矩阵:
F=I+A+A2+…+An(2)
公式(2)中,F表示中间矩阵,I表示单位阵,A表示邻接矩阵,n为PLC程序中包括的输出变量的个数。
这里,邻接矩阵A的n次连乘(即,连续叉乘)已经完全能够反映输出变量依赖关系图POG的所有连通情况。应理解,上述求取可达矩阵的方式仅为示例,本领域技术人员也可以采用其他方式来根据邻接矩阵求取可达矩阵。
作为示例,当PLC程序的输出变量依赖关系图POG中包含n个节点时,输出变量依赖关系图POG的可达矩阵B也是一个n阶方阵,可达矩阵B中各元素值的含义如下:
在输出变量依赖关系图POG的可达矩阵B中,vi为第i行的输出变量,vj为第j列的输出变量,B(i,*)表示所有与节点vi有依赖关系(即,逻辑关系)的输出变量所在的节点,而B(*,j)表示所有可能影响节点vj的关联输出变量所在的节点。
下面参照图4来介绍确定可达矩阵的一个示例,图4示出根据本发明示例性实施例的确定可达矩阵的步骤的流程图。
参照图4,在步骤S301中,确定PLC程序中每个梯级的输出变量。在本示例中,可假设PLC程序P中共有m个梯级,n个输出变量,指定输出变量在梯级l。
在步骤S302中,统计输出变量的个数,并确定邻接矩阵的行列元素。
例如,可确定出PLC程序P中包含n个输出变量,由此确定n阶邻接矩阵的行列元素分别对应于n个输出变量。也就是说,将n个输出变量按一定顺序排列作为邻接矩阵A的行与列。
在步骤S303中,将第k梯级的子依赖关系图LOGk存入邻接矩阵。
在步骤S304中,判断k是否等于m。这里,m为PLC程序P中包含的梯级的个数。作为示例,k的初始值可为1。但本发明不限于此,k的初始值也可为m,此时,可每循环一次,将k的数值减一,并在步骤S304中可判断k是否等于1。
如果k不等于m,则执行步骤S305:使得k=k+1,并返回执行步骤S303。
如果k等于m,则执行步骤S306:确定邻接矩阵的可达矩阵。
返回图1,在步骤S40中,基于可达矩阵,确定影响指定输出变量的关联输出变量。
例如,基于可达矩阵,确定影响指定输出变量的关联输出变量的步骤可包括:从可达矩阵中获取指定输出变量所在列的各元素的数值,将数值为1的元素对应的输出变量确定为指定输出变量的关联输出变量。
一种特殊情况,可达矩阵可为全一矩阵,即可达矩阵B中所有元素的值均为1。
也就是说,此时的有向图POG为强连通图,表明PLC程序的每一个输出变量都与其它输出变量有依赖关系,即,PLC程序的每个梯级之间都有依赖关系。在此情况下,可确定影响指定输出变量的关联输出变量为PLC程序中包括的所有输出变量。
另一种特殊情况,可达矩阵可为单位阵。
也就是说,此时的有向图POG由各个孤立节点及指向自身的环组成,表明PLC程序的每一个输出变量都与其它输出变量没有依赖关系,即,PLC程序的每个梯级内部没有输出变量与其他输出变量之间有依赖关系,并且PLC程序的每个梯级之间也没有依赖关系。在此情况下,可确定影响指定输出变量的关联输出变量为该指定输出变量。
在步骤S50中,获取PLC程序中指定输出变量和关联输出变量所在的梯级,形成PLC程序对于指定输出变量的静态切片。
例如,可以从PLC程序中提取指定输出变量和关联输出变量所在的梯级,来获得PLC程序的静态切片,或者也可以从PLC程序中删除与指定输出变量无逻辑可达关系的输出变量所在的梯级,来获得PLC程序的静态切片。
针对上述可达矩阵为全一矩阵的特殊情况,PLC程序对于指定输出变量的静态切片为PLC程序本身。
针对上述可达矩阵为单位阵的特殊情况,PLC程序对于指定输出变量的静态切片为该指定输出变量所在的梯级。
在一优选实施例中,如果指定输出变量为一组输出变量(即,包含多个输出变量)时,可通过上述方法分别获得该组输出变量中的每个输出变量对应的静态切片,将所有静态切片的并集确定为PLC程序对于该组输出变量的静态切片。
也就是说,本发明示例性实施例的PLC程序静态切片方法不仅能够求取针对某一个输出变量的程序切片,还能够求取针对某一组输出变量的程序切片。
下面参照图5至图10以PLC程序为用于实现三台电机的顺序启停控制的用户程序为例,来介绍电机启停控制程序的静态切片方法。应理解,在本示例中所列举的电机的台数以及定时时间的长度仅为示例,本领域技术人员可以根据实际需要来对示例中所列举的数值进行调整。此外,在本示例中所列举的电机启停控制程序仅为PLC程序的一个示例,本发明不限于此,本发明的静态切片方法可适用于任何PLC的用户程序。
这里,图5示出的是基于BNF语法的由梯形图语言编写的PLC程序,该程序的功能是实现三台电机的顺序启停控制。
如图5所示,当启动按钮被按下后,三台电机以5秒钟的时间间隔按照正序依次启动,即,1号电机首先启动,经过5秒钟后2号电机启动,再经过5秒钟后3号电机启动。
当停止按钮被按下后,三台电机以3秒钟的时间间隔按照逆序依次停止,即,3号电机首先停止,经过3秒钟后2号电机停止,再经过3秒钟后1号电机停止。
在该PLC程序中,输入变量IN_1和IN_2分别对应于启动按钮和停止按钮的动作,输出变量OUT_1、OUT_2和OUT_3分别对应于1号电机、2号电机和3号电机的运行状态。T_1、T_2、T_3和T_4是四个定时器,负责完成5秒和3秒两个时间段的计时。M_0和M_1为两个中间继电器,用作PLC程序的两个临时变量,同时他们也是输出变量。
图6示出根据本发明示例性实施例的电机启停控制程序的静态切片方法的流程图。
参照图6,在步骤S100中,建立电机启停控制程序的输出变量依赖关系图。
电机启停控制程序的输出变量依赖关系图可包括多个子依赖关系图。例如,针对电机启停控制程序的每个梯级,可建立该梯级的输出变量的子依赖关系图。
作为示例,任一梯级的输出变量的子依赖关系图可包括节点和边。例如,每个节点可为任一梯级中的输出变量,通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,该任一边的起始节点为作为该任一边的终止节点的输入的输出变量。
优选地,任一梯级的输出变量的子依赖关系图可还包括环,由与输出指令相结合的输出变量指向自身的有向边形成环。
以图5所示的电机启停控制程序为例,完成三台电机顺序启停控制的PLC程序共有5个梯级,建立各梯级所对应的输出变量的子依赖关系图,并由所有子依赖关系图组成该PLC程序的输出变量依赖关系图POG,如图7所示。
作为示例,在本发明示例性实施例中,在建立各梯级的输出变量的子依赖关系图LOG的过程中,将特殊输出变量(如定时器)及其标志位抽象为LOG图中的同一个节点。
在步骤S200中,确定输出变量依赖关系图的邻接矩阵。
例如,邻接矩阵可为一n阶方阵,n为电机启停控制程序中包括的输出变量的个数,邻接矩阵的每一行可分别用于表示一输出变量与电机启停控制程序中所有输出变量之间的逻辑关联。
例如,将邻接矩阵A的行与列分别按照OUT_1、OUT_2、OUT_3、T_1、T_2、T_3、T_4、M_0和M_1的顺序排列,由此获得电机启停控制程序的输出变量依赖关系图POG的邻接矩阵A。
例如,以上述邻接矩阵A中的第一行元素为例,由图7所示的输出变量依赖关系图POG中可以看出与输出变量OUT_1存在逻辑关联的输出变量(即,指向输出变量OUT_1的输出变量)为OUT_1和T_4,在本发明示例性实施例中定义邻接矩阵A中指向自身的环对应的元素的值不为1,因此,邻接矩阵A中的第一行各元素的取值为{000100000}。
在步骤S300中,确定邻接矩阵的可达矩阵,以获得电机启停控制程序的输出变量之间的逻辑可达关系。
例如,可基于单位阵和邻接矩阵来计算中间矩阵,再通过将中间矩阵中的非零元素的取值替换为1,将零元素的取值保持不变,来获得邻接矩阵的可达矩阵。优选地,可利用上述的公式(2)来计算中间矩阵。
作为示例,通过上述方式可获得上述示例中的邻接矩阵A的可达矩阵B为:
在步骤S400中,基于可达矩阵,确定影响指定输出变量的关联输出变量。
例如,可从可达矩阵中获取指定输出变量所在列的各元素的数值;将数值为1的元素对应的输出变量确定为指定输出变量的关联输出变量。
以上述获得的可达矩阵B为例,假设指定输出变量为第一个梯级的OUT_1,由程序的输出变量依赖关系图的可达矩阵B中输出变量OUT_1的所在列可知,除OUT_1自身外,还有输出变量T_3、T_4、M_0和M_1可影响输出变量OUT_1。其中,T_3和M_0与输出指令的组合在第4个梯级,T_4和M_1与输出指令的组合在第5个梯级。OUT_1与上述输出变量的数据依赖关系如图8所示。
这里,为了使图8更加清晰,在图8没有示出每个梯级的输出变量与自身的依赖关系。并且,当有多个输入指令和输出指令都可以与某个输出变量结合时,只画出一个箭头,由该输出变量指向其所影响的输出变量。
从图8所示可以看出,在第1个梯级上,表示电机运行的输出变量OUT_1是否为真依赖于定时器T_4的状态(是否计时结束),而定时器T_4是否计时结束又依赖于第5个梯级上中间继电器M_1是否为真(具体是保持为真的时间是否有3秒)和定时器T_3的状态(是否计时结束)。中间继电器M_1是否为真依赖于定时器T_3的状态(是否计时结束)和定时器T_4的状态(是否计时结束)。由此,第5个梯级上定时器T_4的状态(是否计时结束)需根据第4个梯级上定时器T_3的状态(是否计时结束)来判定。而第4个梯级上定时器T_3是否计时结束又依赖于中间继电器M_0是否真(具体是保持为真的时间是否有3秒)。中间继电器M_0是否真(具体是保持为真的时间是否有3秒)又依赖于定时器T_3的状态(是否计时结束)。
在步骤S500中,获取电机启停控制程序中指定输出变量和关联输出变量所在的梯级,形成电机启停控制程序对于指定输出变量的静态切片。
一种特殊情况,可达矩阵为全一矩阵,确定影响指定输出变量的关联输出变量为电机启停控制程序中包括的所有输出变量,在此情况下,电机启停控制程序对于指定输出变量的静态切片为电机启停控制程序本身。
另一种特殊情况,可达矩阵为单位阵,确定影响指定输出变量的关联输出变量为指定输出变量,在此情况下,电机启停控制程序对于指定输出变量的静态切片为该指定输出变量所在的梯级。
例如,以上述获得的可达矩阵B为例,对于指定输出变量OUT_1的结果只依赖于第1个梯级、第4个梯级和第5个梯级,即,第1个梯级、第4个梯级和第5个梯级构成了电机启停控制程序对于指定输出变量OUT_1的静态切片,如图9所示。
如果指定输出变量为第一个梯级的OUT_1和第二个梯级的OUT_2,则按照上述静态切片方法所得到PLC程序的静态切片如图10所示。
这里,图9所示的程序静态切片中梯级数量是3,相比于共有5个梯级的原程序,梯级数量少了2个。也就是说,实施程序静态切片方法之后,梯级数量减少了40%。
图10是对指定输出变量{OUT_1,OUT_2}所求取的静态切片,该程序切片中梯级的数量比图9中程序静态切片的梯级数量多了1个,但仍比原程序的梯级数量少了1个,减少的比例为20%。对于含有几十,上百,甚至更多梯级的大中型PLC程序来说,通过程序切片算法来减少待分析梯级的数量,可以明显地降低程序分析、理解与测试的工作量。
应理解,在本发明示例性实施例中,是以由巴科斯范式(BNF范式)语法生成的PLC程序为例来进行介绍的,但本发明的程序静态切片方法不局限于某一种PLC程序产生语法或者某一个PLC生产厂商的某一种特定的梯形图编程语言,该程序静态切片方法还适用于IEC标准规定的其它编程语言,例如,语句表语言(Instruction List,简称IL)、功能模块图语言(Function Block Diagram,简称FBD)、顺序功能图语言(Sequential FunctionChart,简称SFC)和结构化文本语言(Structured Text,简称ST)等。即,凡是PLC程序有文本类型保存格式,都可以采用本发明的程序静态切片方法来自动求取程序静态切片。
此外,本发明示例性实施例的程序静态切片方法不仅限于对PLC程序的某一个输出变量或者某一组输出变量求取静态切片,也可以适用于分析指定的输入变量与输出变量以及它们所在梯级之间的关系。
在本发明示例性实施例的PLC程序静态切片方法中,通过定义梯级的输出变量的子依赖关系图LOG、程序的输出变量依赖关系图POG、POG的邻接矩阵和POG的可达矩阵,使得程序静态切片过程简单、快速。
图11示出根据本发明示例性实施例的PLC程序静态切片装置的框图。
如图11所示,根据本发明示例性实施例的PLC程序静态切片装置包括关系图建立单元10、邻接矩阵确定单元20、可达矩阵确定单元30、关联变量确定单元40和静态切片确定单元50。
具体说来,关系图建立单元10建立PLC程序的输出变量依赖关系图。
优选地,本发明示例性实施例中的PLC程序是指为实现预定功能而开发的用户程序,即,该PLC程序非系统程序。
在本发明示例性实施例中,PLC程序的输出变量依赖关系图可包括多个子依赖关系图。
关系图建立单元10可通过以下方式来确定每个子依赖关系图:以梯形图方式编写PLC程序,针对PLC程序的每个梯级,建立该梯级的输出变量的子依赖关系图。优选地,多个子依赖关系图可为有向图,即,PLC程序的输出变量依赖关系图也是有向图。
作为示例,任一梯级的输出变量的子依赖关系图可包括节点和边。
例如,每个节点可为任一梯级中的输出变量,通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,该任一边的起始节点为作为该任一边的终止节点的输入的输出变量。
在一优选实施例中,任一梯级的输出变量的子依赖关系图可还包括环,由与输出指令相结合的输出变量指向自身的有向边形成环。
邻接矩阵确定单元20确定输出变量依赖关系图的邻接矩阵。
这里,邻接矩阵确定单元20可将输出变量依赖关系图存储为邻接矩阵。作为示例,邻接矩阵可为一n阶方阵,n为PLC程序中包括的输出变量的个数,邻接矩阵的每一行可分别用于表示一输出变量与PLC程序中所有输出变量之间的逻辑关联。
例如,邻接矩阵中第i行第j列的元素A(i,j)的取值可通过上述的公式(1)来确定,本发明对此部分的内容不再赘述。
可达矩阵确定单元30确定邻接矩阵的可达矩阵,以获得PLC程序的输出变量之间的逻辑可达关系。
可达矩阵确定单元30可基于单位阵和邻接矩阵,计算中间矩阵,通过将中间矩阵中的非零元素的取值替换为1,将零元素的取值保持不变,来获得邻接矩阵的可达矩阵。
作为示例,可达矩阵确定单元30可利用上述的公式(2)来基于单位阵和邻接矩阵计算中间矩阵,本发明对此部分的内容不再赘述。
关联变量确定单元40基于可达矩阵,确定影响指定输出变量的关联输出变量。
例如,关联变量确定单元40可从可达矩阵中获取指定输出变量所在列的各元素的数值,将数值为1的元素对应的输出变量确定为指定输出变量的关联输出变量。
一种特殊情况,可达矩阵可为全一矩阵,即可达矩阵B中所有元素的值均为1。在此情况下,关联变量确定单元40可确定影响指定输出变量的关联输出变量为PLC程序中包括的所有输出变量。
另一种特殊情况,可达矩阵可为单位阵。在此情况下,关联变量确定单元40可确定影响指定输出变量的关联输出变量为该指定输出变量。
静态切片确定单元50获取PLC程序中指定输出变量和关联输出变量所在的梯级,形成PLC程序对于指定输出变量的静态切片。
针对上述可达矩阵为全一矩阵的特殊情况,静态切片确定单元50可将PLC程序本身确定为PLC程序对于指定输出变量的静态切片。
针对上述可达矩阵为单位阵的特殊情况,静态切片确定单元50可将指定输出变量所在的梯级确定为PLC程序对于指定输出变量的静态切片。
在一示例性实施例中,以PLC程序为电机启停控制程序为例,介绍上述各单元执行的功能。
在本示例中,关系图建立单元10建立电机启停控制程序的输出变量依赖关系图。
这里,电机启停控制程序的输出变量依赖关系图可包括多个子依赖关系图。例如,多个子依赖关系图可为有向图。关系图建立单元10可通过以下方式来确定每个子依赖关系图:以梯形图方式编写电机启停控制程序,针对电机启停控制程序的每个梯级,建立该梯级的输出变量的子依赖关系图。
作为示例,任一梯级的输出变量的子依赖关系图可包括节点和边。
例如,每个节点为任一梯级中的输出变量,通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,任一边的起始节点为作为该任一边的终止节点的输入的输出变量。
优选地,任一梯级的输出变量的子依赖关系图可还包括环,由任一梯级的与输出指令相结合的输出变量指向自身的有向边形成环。
邻接矩阵确定单元20确定输出变量依赖关系图的邻接矩阵。
这里,邻接矩阵可为一n阶方阵,n为电机启停控制程序中包括的输出变量的个数,邻接矩阵的每一行分别用于表示一输出变量与电机启停控制程序中所有输出变量之间的逻辑关联。
可达矩阵确定单元30确定邻接矩阵的可达矩阵,以获得电机启停控制程序的输出变量之间的逻辑可达关系。
例如,可达矩阵确定单元30可基于单位阵和邻接矩阵,计算中间矩阵,通过述中间矩阵中的非零元素的取值替换为1,将零元素的取值保持不变,来获得邻接矩阵的可达矩阵。
关联变量确定单元40基于可达矩阵,确定影响指定输出变量的关联输出变量。
例如,关联变量确定单元40可从可达矩阵中获取指定输出变量所在列的各元素的数值,将数值为1的元素对应的输出变量确定为指定输出变量的关联输出变量。
静态切片确定单元50获取电机启停控制程序中指定输出变量和关联输出变量所在的梯级,形成电机启停控制程序对于指定输出变量的静态切片。
在一优选实施例中,如果可达矩阵为全一矩阵,则关联变量确定单元40可确定影响指定输出变量的关联输出变量为电机启停控制程序中包括的所有输出变量,静态切片确定单元50可将电机启停控制程序本身确定为电机启停控制程序对于指定输出变量的静态切片,
如果可达矩阵为单位阵,则关联变量确定单元40可确定影响指定输出变量的关联输出变量为指定输出变量,静态切片确定单元50可将指定输出变量所在的梯级确定为电机启停控制程序对于指定输出变量的静态切片。
根据本发明的示例性实施例还提供一种计算装置。该计算装置包括处理器和存储器。存储器用于存储计算机程序。所述计算机程序被处理器执行使得处理器执行上述的PLC程序静态切片方法或者电机启停控制程序的静态切片方法的计算机程序。
根据本发明的示例性实施例还提供一种存储有计算机程序的计算机可读存储介质。该计算机可读存储介质存储有当被处理器执行时使得处理器执行上述PLC程序静态切片方法或者电机启停控制程序的静态切片方法的计算机程序。该计算机可读记录介质是可存储由计算机系统读出的数据的任意数据存储装置。计算机可读记录介质的示例包括:只读存储器、随机存取存储器、只读光盘、磁带、软盘、光数据存储装置和载波(诸如经有线或无线传输路径通过互联网的数据传输)。
PLC是一种在工业领域有广泛应用的控制装置,其用户程序的可编程特性,在为工程师带来便利的同时也为引入各种错误带来了隐患。如果这些错误为经分析与测试等手段及时地被去除,可能产生严重的后果。然而,对于大型的PLC程序,由于涉及变量较多且相互作用关系复杂,依靠纯手工回溯的办法进行查找,不仅非常耗时而且极易出错。采用本发明示例性实施例的PLC程序及电机启停控制程序的静态切片方法和装置,可以在程序分析、测试过程中,有效地缩小程序查找的范围,能够节省人力资源、提高程序的测试效率。
此外,本发明示例性实施例的PLC程序及电机启停控制程序的静态切片方法和装置,具有易于计算机编程实现的特点,当程序的数量大且复杂时,在程序分析与测试之前,应用上述静态切片方法和装置将得到明显的收益。
尽管已经参照其示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。
Claims (17)
1.一种PLC程序静态切片方法,其特征在于,包括:
建立PLC程序的输出变量依赖关系图,其中,所述PLC程序的输出变量依赖关系图包括多个子依赖关系图,每个子依赖关系图通过以下方式来确定:针对PLC程序的每个梯级,建立该梯级的输出变量的子依赖关系图;
确定所述输出变量依赖关系图的邻接矩阵;
确定所述邻接矩阵的可达矩阵,以获得PLC程序的输出变量之间的逻辑可达关系,其中,基于单位阵和所述邻接矩阵计算中间矩阵,通过将所述中间矩阵中的非零元素的取值替换为1,将零元素的取值保持不变,来获得所述邻接矩阵的可达矩阵;
基于所述可达矩阵,确定影响指定输出变量的关联输出变量;
获取PLC程序中所述指定输出变量和所述关联输出变量所在的梯级,形成PLC程序对于所述指定输出变量的静态切片。
2.如权利要求1所述的PLC程序静态切片方法,其特征在于,任一梯级的输出变量的子依赖关系图包括节点和边,
其中,每个节点为所述任一梯级中的输出变量,通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,所述任一边的起始节点为作为所述任一边的终止节点的输入的输出变量。
3.如权利要求2所述的PLC程序静态切片方法,其特征在于,所述任一梯级的输出变量的子依赖关系图还包括环,由与输出指令相结合的输出变量指向自身的有向边形成环。
4.如权利要求1所述的PLC程序静态切片方法,其特征在于,基于所述可达矩阵,确定影响指定输出变量的关联输出变量的步骤包括:
从所述可达矩阵中获取所述指定输出变量所在列的各元素的数值;
将数值为1的元素对应的输出变量确定为所述指定输出变量的关联输出变量。
5.如权利要求1所述的PLC程序静态切片方法,其特征在于,基于所述可达矩阵,确定影响指定输出变量的关联输出变量的步骤包括:
如果所述可达矩阵为全一矩阵,则确定影响指定输出变量的关联输出变量为PLC程序中包括的所有输出变量,其中,PLC程序对于所述指定输出变量的静态切片为PLC程序本身,
如果所述可达矩阵为单位阵,则确定影响指定输出变量的关联输出变量为所述指定输出变量,其中,PLC程序对于所述指定输出变量的静态切片为所述指定输出变量所在的梯级。
6.一种电机启停控制程序的静态切片方法,其特征在于,包括:
建立电机启停控制程序的输出变量依赖关系图,其中,所述电机启停控制程序的输出变量依赖关系图包括多个子依赖关系图,每个子依赖关系图通过以下方式来确定:针对电机启停控制程序的每个梯级,建立该梯级的输出变量的子依赖关系图;
确定所述输出变量依赖关系图的邻接矩阵;
确定所述邻接矩阵的可达矩阵,以获得电机启停控制程序的输出变量之间的逻辑可达关系,其中,基于单位阵和所述邻接矩阵,计算中间矩阵,通过将所述中间矩阵中的非零元素的取值替换为1,将零元素的取值保持不变,来获得所述邻接矩阵的可达矩阵;
基于所述可达矩阵,确定影响指定输出变量的关联输出变量;
获取电机启停控制程序中所述指定输出变量和所述关联输出变量所在的梯级,形成电机启停控制程序对于所述指定输出变量的静态切片。
7.如权利要求6所述的静态切片方法,其特征在于,任一梯级的输出变量的子依赖关系图包括节点和边,
其中,每个节点为所述任一梯级中的输出变量,通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,所述任一边的起始节点为作为所述任一边的终止节点的输入的输出变量。
8.如权利要求7所述的静态切片方法,其特征在于,所述任一梯级的输出变量的子依赖关系图还包括环,由与输出指令相结合的输出变量指向自身的有向边形成环。
9.如权利要求6所述的静态切片方法,其特征在于,基于所述可达矩阵,确定影响指定输出变量的关联输出变量的步骤包括:
从所述可达矩阵中获取所述指定输出变量所在列的各元素的数值;
将数值为1的元素对应的输出变量确定为所述指定输出变量的关联输出变量。
10.如权利要求6所述的静态切片方法,其特征在于,基于所述可达矩阵,确定影响指定输出变量的关联输出变量的步骤包括:
如果所述可达矩阵为全一矩阵,则确定影响指定输出变量的关联输出变量为电机启停控制程序中包括的所有输出变量,其中,电机启停控制程序对于所述指定输出变量的静态切片为电机启停控制程序本身,
如果所述可达矩阵为单位阵,则确定影响指定输出变量的关联输出变量为所述指定输出变量,其中,电机启停控制程序对于所述指定输出变量的静态切片为所述指定输出变量所在的梯级。
11.一种PLC程序静态切片装置,其特征在于,包括:
关系图建立单元,建立PLC程序的输出变量依赖关系图,其中,所述PLC程序的输出变量依赖关系图包括多个子依赖关系图,所述关系图建立单元通过以下方式来确定每个子依赖关系图:针对PLC程序的每个梯级,建立该梯级的输出变量的子依赖关系图;
邻接矩阵确定单元,确定所述输出变量依赖关系图的邻接矩阵;
可达矩阵确定单元,确定所述邻接矩阵的可达矩阵,以获得PLC程序的输出变量之间的逻辑可达关系,其中,基于单位阵和所述邻接矩阵计算中间矩阵,通过将所述中间矩阵中的非零元素的取值替换为1,将零元素的取值保持不变,来获得所述邻接矩阵的可达矩阵;
关联变量确定单元,基于所述可达矩阵,确定影响指定输出变量的关联输出变量;
静态切片确定单元,获取PLC程序中所述指定输出变量和所述关联输出变量所在的梯级,形成PLC程序对于所述指定输出变量的静态切片。
12.如权利要求11所述的PLC程序静态切片装置,其特征在于,任一梯级的输出变量的子依赖关系图包括节点和边,
其中,每个节点为所述任一梯级中的输出变量,通过边将存在逻辑关联的两个节点进行连接,任一边的终止节点为与输出指令相结合的输出变量,所述任一边的起始节点为作为所述任一边的终止节点的输入的输出变量。
13.如权利要求12所述的PLC程序静态切片装置,其特征在于,所述任一梯级的输出变量的子依赖关系图还包括环,由与输出指令相结合的输出变量指向自身的有向边形成环。
14.如权利要求11所述的PLC程序静态切片装置,其特征在于,关联变量确定单元从所述可达矩阵中获取所述指定输出变量所在列的各元素的数值,将数值为1的元素对应的输出变量确定为所述指定输出变量的关联输出变量。
15.如权利要求11所述的PLC程序静态切片装置,其特征在于,如果所述可达矩阵为全一矩阵,则关联变量确定单元确定影响指定输出变量的关联输出变量为PLC程序中包括的所有输出变量,其中,静态切片确定单元将PLC程序本身确定为PLC程序对于所述指定输出变量的静态切片,
如果所述可达矩阵为单位阵,则关联变量确定单元确定影响指定输出变量的关联输出变量为所述指定输出变量,其中,静态切片确定单元将所述指定输出变量所在的梯级确定为PLC程序对于所述指定输出变量的静态切片。
16.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序在被处理器执行时实现如权利要求1至5中任意一项所述的PLC程序静态切片方法,或者如权利要求6至10中任意一项所述的电机启停控制程序的静态切片方法。
17.一种计算装置,其特征在于,所述计算装置包括:
处理器;
存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1至5中任意一项所述的PLC程序静态切片方法,或者如权利要求6至10中任意一项所述的电机启停控制程序的静态切片方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910121849.7A CN109815153B (zh) | 2019-02-19 | 2019-02-19 | Plc程序及电机启停控制程序的静态切片方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910121849.7A CN109815153B (zh) | 2019-02-19 | 2019-02-19 | Plc程序及电机启停控制程序的静态切片方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109815153A CN109815153A (zh) | 2019-05-28 |
CN109815153B true CN109815153B (zh) | 2024-01-26 |
Family
ID=66606745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910121849.7A Active CN109815153B (zh) | 2019-02-19 | 2019-02-19 | Plc程序及电机启停控制程序的静态切片方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109815153B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901188A (zh) * | 2010-07-23 | 2010-12-01 | 哈尔滨工程大学 | 一种基于可达路径的软件测试方法 |
CN102750223A (zh) * | 2012-06-06 | 2012-10-24 | 东南大学 | 一种基于面向对象程序切片谱的错误定位方法 |
CN103009631A (zh) * | 2011-09-22 | 2013-04-03 | 株式会社其恩斯 | 三维成形设备及方法、用于三维成形设备的设置数据创建设备及程序 |
CN103853554A (zh) * | 2014-02-20 | 2014-06-11 | 上海大唐移动通信设备有限公司 | 一种软件重构位置确定方法及装置 |
CN103901877A (zh) * | 2014-03-20 | 2014-07-02 | 北京天诚同创电气有限公司 | 基于故障属性数据的故障判断及处理方法 |
CN104572476A (zh) * | 2015-01-30 | 2015-04-29 | 南京邮电大学 | 一种基于程序切片的软件安全测试方法 |
CN104572474A (zh) * | 2015-01-30 | 2015-04-29 | 南京邮电大学 | 一种基于动态切片的轻量级错误定位技术实现方法 |
CN105867345A (zh) * | 2016-03-24 | 2016-08-17 | 浙江科技学院 | 一种多变量化工过程的故障源和故障传播路径定位方法 |
CN108304317A (zh) * | 2017-12-28 | 2018-07-20 | 东南大学 | 一种基于路径执行频率的单过程程序静态切片方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090132991A1 (en) * | 2007-11-16 | 2009-05-21 | Nec Laboratories America, Inc | Partial order reduction for scalable testing in system level design |
JP2009237762A (ja) * | 2008-03-26 | 2009-10-15 | Toshiba Corp | プログラム解析装置、プログラム解析方法および解析プログラム |
US9858331B2 (en) * | 2015-02-05 | 2018-01-02 | International Business Machines Corporation | Efficient structured data exploration with a combination of bivariate metric and centrality measures |
-
2019
- 2019-02-19 CN CN201910121849.7A patent/CN109815153B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901188A (zh) * | 2010-07-23 | 2010-12-01 | 哈尔滨工程大学 | 一种基于可达路径的软件测试方法 |
CN103009631A (zh) * | 2011-09-22 | 2013-04-03 | 株式会社其恩斯 | 三维成形设备及方法、用于三维成形设备的设置数据创建设备及程序 |
CN102750223A (zh) * | 2012-06-06 | 2012-10-24 | 东南大学 | 一种基于面向对象程序切片谱的错误定位方法 |
CN103853554A (zh) * | 2014-02-20 | 2014-06-11 | 上海大唐移动通信设备有限公司 | 一种软件重构位置确定方法及装置 |
CN103901877A (zh) * | 2014-03-20 | 2014-07-02 | 北京天诚同创电气有限公司 | 基于故障属性数据的故障判断及处理方法 |
CN104572476A (zh) * | 2015-01-30 | 2015-04-29 | 南京邮电大学 | 一种基于程序切片的软件安全测试方法 |
CN104572474A (zh) * | 2015-01-30 | 2015-04-29 | 南京邮电大学 | 一种基于动态切片的轻量级错误定位技术实现方法 |
CN105867345A (zh) * | 2016-03-24 | 2016-08-17 | 浙江科技学院 | 一种多变量化工过程的故障源和故障传播路径定位方法 |
CN108304317A (zh) * | 2017-12-28 | 2018-07-20 | 东南大学 | 一种基于路径执行频率的单过程程序静态切片方法及系统 |
Non-Patent Citations (1)
Title |
---|
连续在线程序切片算法的研究;陆龙文;《中国优秀硕士学位论文全文数据库信息科技辑》(第7期);I138-379 * |
Also Published As
Publication number | Publication date |
---|---|
CN109815153A (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5446652A (en) | Constraint knowledge in simulation modeling | |
US6385765B1 (en) | Specification and verification for concurrent systems with graphical and textual editors | |
US9141521B2 (en) | Method and apparatus for automatically generating a test script for a graphical user interface | |
US5490266A (en) | Process oriented logic simulation having stability checking | |
CN109143952B (zh) | 可编程逻辑控制器编程语言转换系统 | |
US20120117537A1 (en) | Flow Chart Programming Platform for Testers and Simulators | |
CN110515856B (zh) | 一种基于动态符号执行的测试用例生成系统 | |
CN111274142A (zh) | 一种基于扩展有限状态机的软件通信体系架构符合性测试建模方法 | |
CN109032056B (zh) | 可编程逻辑控制器编程语言转换方法 | |
RU2678717C1 (ru) | Способ построения программного комплекса автоматизации и визуализации тестирования встроенного программного обеспечения электронных устройств | |
EP1548581A2 (en) | Methods, apparatus and programs for system development | |
Wahler et al. | CAST: Automating software tests for embedded systems | |
CN110515857A (zh) | 一种基于动态符号执行的测试用例生成方法 | |
CN107247827B (zh) | 基于机器学习的虚端子模型建模及自动连线方法 | |
CN114237146B (zh) | 一种软plc控制功能实现方法、装置、设备及存储介质 | |
CN109815153B (zh) | Plc程序及电机启停控制程序的静态切片方法和装置 | |
CN114201397A (zh) | 一种接口测试建模方法、装置、电子设备和存储介质 | |
CN109542827A (zh) | 基于模型的通用仿真方法、系统及介质 | |
CN105162645A (zh) | 一种基于piif架构的互操作测试方法 | |
CN114675948A (zh) | 一种dag数据模型动态调度方法及系统 | |
Frey et al. | “Safety automata”—A new specification language for the development of PLC safety applications | |
Andersson et al. | Extracting simulation models from complex embedded real-time systems | |
Barros et al. | Towards an integrated tool support for the analysis of iopt nets using the spin model checker | |
CN111813702B (zh) | 调试系统、调试方法、设备及计算机可读存储介质 | |
CN115422035A (zh) | 一种虚拟ecu模型的自动化开发方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |