CN103019233A - 一种检测plc梯形图程序中是否存在竞态的方法 - Google Patents

一种检测plc梯形图程序中是否存在竞态的方法 Download PDF

Info

Publication number
CN103019233A
CN103019233A CN2012105647930A CN201210564793A CN103019233A CN 103019233 A CN103019233 A CN 103019233A CN 2012105647930 A CN2012105647930 A CN 2012105647930A CN 201210564793 A CN201210564793 A CN 201210564793A CN 103019233 A CN103019233 A CN 103019233A
Authority
CN
China
Prior art keywords
dec
plc
transition
execution
new
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.)
Granted
Application number
CN2012105647930A
Other languages
English (en)
Other versions
CN103019233B (zh
Inventor
齐鹏飞
罗继亮
陈雪琨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huaqiao University
Original Assignee
Huaqiao University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huaqiao University filed Critical Huaqiao University
Priority to CN201210564793.0A priority Critical patent/CN103019233B/zh
Publication of CN103019233A publication Critical patent/CN103019233A/zh
Application granted granted Critical
Publication of CN103019233B publication Critical patent/CN103019233B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Programmable Controllers (AREA)

Abstract

本发明一种检测PLC梯形图程序中是否存在竞态的方法,通过计算普通Petri网的可达图来确定待检测程序中是否存在竞态,不仅可以一次性完成检测工作,而且可以让程序员清晰、直观地从可达图中直接发现程序中隐含的逻辑错误,同时检测的每个步骤都可以由计算机完成,所以在效率上也更加突出,并达到自动化的标准。

Description

一种检测PLC梯形图程序中是否存在竞态的方法
技术领域
本发明涉及一种检测PLC(可编程逻辑控制器)程序中出现逻辑错误的方法,是针对PLC程序验证的有力工具,确切地说,提出了一种检测PLC梯形图程序中是否存在竞态的方法。
背景技术
可编程逻辑控制器(PLC)广泛地应用于航空航天、交通运输、核电能、石油化工、电力和交通等安全苛求系统领域。传统的PLC程序调试方法只能在语法、语义上进行检测,无法识别出程序变量之间隐藏的逻辑错误,如,竞态。所谓“竞态”指的是,给定的PLC程序在一组固定不变的输入情况下,在连续不同的工作周期中出现不断重复变化的输出值。例如,在一道加工程序中,控制机械臂抓取的程序中存在“竞态”,那么,在工作中机械臂的直接表现为抓取的动作不稳定,不断地重复抓住、松开动作,这样的错误会导致产品的加工出现非常严重的质量问题,以及非常低的工作效率。
目前已经报道的检测方法中更多的是偏向于理论的证明,虽然此类方法可以精确地发现程序中是否存在“竞态”,但在应用于较复杂程序时其本身的推导证明过程却过于繁杂,会导致效率偏低,甚至提高错误率。如,Zhendong Su等人提出了基于一种约束语言的“竞态”检测方法,该方法在检测过程中并非一次性完成检测工作,而是随机选择输入值进行仿真,并且不断重复这一仿真过程直到检测工作结束。虽然这种方法也可以达到检测PLC程序中是否存在“竞态”的目的,但是自身也存在缺陷:
1、检测工作需多次实验才能完成,工作效率偏低;
2、由于需要多次重复仿真实验,因此过多的人为工作量容易出现失误,提高了错误率。
发明内容
本发明的目的在于提供一种检测PLC梯形图程序中是否存在竞态的方法,可以直接、快速地发现PLC程序中隐含的逻辑错误。
一种检测PLC梯形图程序中是否存在竞态的方法,具体包括如下步骤:
步骤1、定义规则
(1)采样变迁及同地址采样变迁:把开关量或者触点这类输入量模拟为一对真假库所,而且在这对真假库所中添加了一对连接变迁,把这样的一类连接变迁定义为采样变迁,记做Tsample,并且这对连接变迁彼此互为同地址采样变迁;
(2)采样变迁中的优先级:按照PLC梯形图中每个开关量或者触点的物理地址的先后顺序,将普通Petri网中每个开关量或者触点对应的结点划分优先级,进而根据结点的优先级来划分结点中每对采样变迁的优先级,把优先级高的采样变迁记做th且th∈Tsample,把优先级低的采样变迁记做tl且tl∈Tsample,同地址的两个采样变迁优先级相同;
(3)计算变迁:把辅助继电器或者线圈这类输出量模拟为一对真假库所,而且根据路径和割集的概念添加了连接变迁,把这样的一类连接变迁定义为计算变迁,记做Tcompute
(4)计算变迁中的优先级:如果用户使用的程序是梯形图程序,那么PLC在程序执行阶段,总是按照先上后下、从左至右的顺序进行扫描,程序中的输出量也是按照这个顺序发生变化的,按照这个顺序将程序中输出量对应的结点划分优先级,进而确定与每个输出量变化相关的计算变迁的优先级,把最高级别的计算变迁标识记做:tmax且t∈Tcom
(5)标识的使能变迁和生成变迁:对于标识m,如果有一个变迁t可以被激发,激发后产生标识m′,此过程可表示为m[t>m′,变迁t称为标识m的使能变迁,记做mdec[t>,变迁t称为标识m′的生成变迁,记做[t>m′;
(6)端点:对于标识m,如果在新的变迁激发规则下不存在使能变迁,把这样的标识称为端点,记做端点e∈E,用E表示可达图中的端点集合;
(7)生成路径:从端点出发到标识m的一条有向路径,称为标识m的生成路径;
(8)新的变迁激发规则:
A、普通Petri网变迁激发规则同样适用于新的变迁激发规则中;
B、对于采样变迁,在低级别变迁激发后,高级别变迁即使使能也不再激发;
C、对于采样变迁,同地址的一对变迁中,若有一个激发,那么下一步中与其相对应的另一个即使使能也不再激发;
D、对于计算变迁,存在大于等于一个变迁使能时,只激发级别最高的变迁;
E、在计算变迁被激发后,其后续步骤中即使有采样变迁使能也不被激发;
步骤2、根据系统的控制规范,可编写满足要求的PLC梯形图程序,并进一步转换成普通Petri网,根据普通Petri网及其初始标识生成符合PLC工作机理的可达图,具体包括如下步骤:
步骤21、用E表示可达图中的端点集合,其中,E=Enew∪Eold,Enew为待检测端点集合,Eold为已检测端点集合;用εPLC表示有向弧集合;ωPLC表示有向弧的标签集合;MPLC表示所求状态集合;Mdec表示待检测状态集合;m0表示初始状态;令Enew={m0},
Figure BDA00002633618600041
Figure BDA00002633618600042
Figure BDA00002633618600043
Figure BDA00002633618600044
MPLC={m0};
步骤22、若
Figure BDA00002633618600045
则执行步骤23,否则,若Enew为空集,则算法结束;
步骤23、令Mdec=Mdec+{enew},即选取Enew中任一元素作为PLC程序的一个新的工作周期的起始状态,并标记为待检测状态,用符号“mdec”表示;若
Figure BDA00002633618600046
则选取Mdec中任一元素,执行步骤24,否则执行步骤224;
步骤24、若状态mdec下存在使能变迁t,则执行步骤26,否则执行步骤25;
步骤25、若mdec∈Enew,即mdec是待检测端点,则Mdec=Mdec-{mdec},Enew=Enew-{mdec},Eold=Eold+{mdec},即擦去当前状态的“待检测端点”及“待检测状态”标记并标记为“已检测端点”,返回步骤22,否则Mdec=Mdec-{mdec},Enew=Enew+{mdec},即擦去待检测状态标记,并标记为待检测端点,返回步骤23;
步骤26、根据步骤1中定义规则(1)至(4),对使能变迁t分类并划分优先级;
步骤27、若mdec是待检测端点,即mdec∈Enew,则执行步骤28,否则执行步骤29;
步骤28、对于每一个在mdec下使能的变迁t,执行:
步骤28.1激发变迁t,生成新标识m′;
步骤28.2若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤28.3,否则执行步骤28.4;
步骤28.3εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=t。即从mdec到m″画一条有向弧,并用t标记,返回步骤28;
步骤28.4εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=t,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用t标记,并将m′分别标记为待检测状态和所求状态;
步骤29、Mdec=Mdec-{mdec},即擦去当前状态的待检测标记,返回步骤23;
步骤210、若mdec是由采样变迁t激发后生成的,则执行步骤211,否则执行步骤215;
步骤211、对于每一个在mdec下使能的采样变迁t′,执行:
步骤211.1若t′的优先级低于t的优先级,则激发变迁t′,生成新标识m′,否则返回步骤211;
步骤211.2若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤211.3,否则执行步骤211.4;
步骤211.3εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=t′,即从mdec到m″画一条有向弧,并用t标记,返回步骤211;
步骤211.4εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=t,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用t标记,并将m′分别标记为待检测状态和所求状态,返回步骤211;
步骤212、若mdec下存在使能的计算变迁t′,则激发使能的计算变迁中优先级最高的那一个tmax,生成新标识m′;否则执行步骤216;
步骤213、若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤214,否则执行步骤215;
步骤214、若mdec的生成路径上只有一个端点,则从mdec到m″画一条有向弧,并用tmax标记,形成回路,此时,竞态race=1,算法结束;否则εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=tmax,即从mdec到m″画一条有向弧,并用tmax标记,执行步骤216;
步骤215、εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=tmax,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用tmax标记,并将m′分别标记为待检测状态和所求状态,执行步骤216;
步骤216、若mdec下无使能变迁t′,且mdec不是端点,则Enew=Enew+{mdec},即标记mdec为待检测端点,否则执行步骤217;
步骤217、若Mdec=Mdec-{mdec},即擦去mdec的待检测标记,返回步骤23;
步骤218、若mdec下存在使能的采样变迁t,则Mdec=Mdec-{mdec},即擦去当前状态待检测标记;否则执行步骤220;
步骤219、若mdec不是端点,则Enew=Enew+{mdec},即标记mdec为待检测端点,返回步骤23;否则直接返回步骤23;
步骤220、激发使能的计算变迁中优先级最高的那一个tmax,生成新标识m′;若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤221,否则执行步骤222;
步骤221、若mdec的生成路径上只有一个端点,则从mdec到m″画一条有向弧,并用tmax标记,形成回路,此时竞态race=1,算法结束;否则,令εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=tmax,即从mdec到m″画一条有向弧,并用tmax标记,执行步骤223;
步骤222、εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=tmax,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用tmax标记,并将m′分别标记为待检测状态和所求状态,执行步骤225;
步骤223、Mdec=Mdec-{mdec},即擦去当前状态“待检测状态”标记,返回步骤23;
步骤224、Enew=Enew-{mdec},Eold=Eold+{mdec},即擦去当前状态“待检测端点”标记,标记为“已检测端点”,返回步骤22;
步骤3、若步骤2输出一个具有可逆性的可达图,图中的每一个标识都代表着系统中可能出现的某一状态,每一条生成路径都描述了系统在某一状态后的演化过程,则PLC程序中不存在竞态race;若步骤2输出一个存在自回路的不可逆的、不完整的可达图,则PLC程序中存在竞态race。
本发明是一种检测PLC梯形图程序中是否存在竞态的方法,通过计算普通Petri网的可达图来确定待检测程序中是否存在竞态,不仅可以一次性完成检测工作,而且可以让程序员清晰、直观地从可达图中直接发现程序中隐含的逻辑错误,同时检测的每个步骤都可以由计算机完成,所以在效率上也更加突出,并达到自动化的标准。
具体实施方式
本发明一种检测PLC梯形图程序中是否存在竞态的方法,具体包括如下步骤:
步骤1、定义规则
(1)采样变迁及同地址采样变迁:把开关量或者触点这类输入量模拟为一对真假库所,而且在这对真假库所中添加了一对连接变迁,把这样的一类连接变迁定义为采样变迁,记做Tsample,并且这对连接变迁彼此互为同地址采样变迁;
(2)采样变迁中的优先级:按照PLC梯形图中每个开关量或者触点的物理地址的先后顺序,将普通Petri网中每个开关量或者触点对应的结点划分优先级,进而根据结点的优先级来划分结点中每对采样变迁的优先级,即物理地址较前的开关量或者触点对应的结点的优先级高,优先级高的结点对应的一对采样变迁的优先级高;同理,物理地址较后的开关量或者触点对应的结点的优先级低,与其对应的一对采样变迁优先级低,把优先级高的采样变迁记做th且th∈Tsample,把优先级低的采样变迁记做tl且tl∈Tsample,同地址的两个采样变迁优先级相同;
(3)计算变迁:把辅助继电器或者线圈这类输出量模拟为一对真假库所,而且根据路径和割集的概念添加了连接变迁,把这样的一类连接变迁定义为计算变迁,记做Tcompute
(4)计算变迁中的优先级:如果用户使用的程序是梯形图程序,那么PLC在程序执行阶段,总是按照先上后下、从左至右的顺序进行扫描,程序中的输出量也是按照这个顺序发生变化的,按照这个顺序将程序中输出量对应的结点划分优先级,进而确定与每个输出量变化相关的计算变迁的优先级。即,先发生变化的输出量对应的计算变迁优先级高于后发生变化的输出量对应的计算变迁,把最高级别的计算变迁标识记做:tmax且t∈Tcom
(5)标识的使能变迁和生成变迁:对于标识m,如果有一个变迁t可以被激发,激发后产生标识m′,此过程可表示为m[t>m′,变迁t称为标识m的使能变迁,记做mdec[t>;变迁t称为标识m′的生成变迁,记做[t>m′;
(6)端点:对于标识m,如果在新的变迁激发规则下不存在使能变迁,把这样的标识称为端点,记做端点e∈E,用E表示可达图中的端点集合;
(7)生成路径:从端点出发到标识m的一条有向路径,称为标识m的生成路径;
(8)新的变迁激发规则:
A、普通Petri网变迁激发规则同样适用于新的变迁激发规则中;
B、对于采样变迁,在低级别变迁激发后,高级别变迁即使使能也不再激发;
C、对于采样变迁,同地址的一对变迁中,若有一个激发,那么下一步中与其相对应的另一个即使使能也不再激发;
D、对于计算变迁,存在大于等于一个变迁使能时,只激发级别最高的变迁;
E、在计算变迁被激发后,其后续步骤中即使有采样变迁使能也不被激发。
步骤2、根据系统的控制规范,可编写满足要求的PLC梯形图程序,并进一步转换成普通Petri网,根据普通Petri网及其初始标识生成符合PLC工作机理的可达图,具体包括如下步骤:
步骤21、用E表示可达图中的端点集合,其中,E=Enew∪Eold,Enew为待检测端点集合,Eold为已检测端点集合;用εPLC表示有向弧集合;ωPLC表示有向弧的标签集合;MPLC表示所求状态集合;Mdec表示待检测状态集合;m0表示初始状态;令Enew={m0},
Figure BDA00002633618600111
Figure BDA00002633618600112
Figure BDA00002633618600113
Figure BDA00002633618600114
MPLC={m0};
步骤22、若
Figure BDA00002633618600115
即Enew不为空集,则执行步骤23,否则,若Enew为空集,则算法结束;
步骤23、令Mdec=Mdec+{enew},即选取Enew中任一元素作为PLC程序的一个新的工作周期的起始状态,并标记为待检测状态,用符号“mdec”表示;若
Figure BDA00002633618600116
即存在待检测状态,则选取Mdec中任一元素,执行步骤24,否则执行步骤224;
步骤24、若状态mdec下存在使能变迁t,则执行步骤26,否则执行步骤25;
步骤25、若mdec∈Enew,即mdec是待检测端点,则Mdec=Mdec-{mdec},Enew=Enew-{mdec},Eold=Eold+{mdec},即擦去当前状态的“待检测端点”及“待检测状态”标记并标记为“已检测端点”,返回步骤22,否则Mdec=Mdec-{mdec},Enew=Enew+{mdec},即擦去待检测状态标记,并标记为待检测端点,返回步骤23;
步骤26、根据步骤1中定义规则(1)至(4),对使能变迁t分类并划分优先级;
步骤27、若mdec是待检测端点,即mdec∈Enew,则执行步骤28,否则执行步骤29;
步骤28、对于每一个在mdec下使能的变迁t,执行:
步骤28.1激发变迁t,生成新标识m′;
步骤28.2若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤28.3,否则执行步骤28.4;
步骤28.3εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=t。即从mdec到m″画一条有向弧,并用t标记。返回步骤28;
步骤28.4εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=t,Mdec=Mdec+{m′},MPLC=MPLC+{m′}。即从mdec到m′画一条有向弧,用t标记,并将m′分别标记为待检测状态和所求状态;
步骤29、Mdec=Mdec-{mdec},即擦去当前状态的待检测标记。返回步骤23;
步骤210、若mdec是由采样变迁t激发后生成的,则执行步骤211,否则执行步骤215;
步骤211、对于每一个在mdec下使能的采样变迁t′,执行:
步骤211.1若t′的优先级低于t的优先级,则激发变迁t′,生成新标识m′,否则返回步骤211;
步骤211.2若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤211.3,否则执行步骤211.4;
步骤211.3εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=t′,即从mdec到m″画一条有向弧,并用t标记,返回步骤211;
步骤211.4εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=t,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用t标记,并将m′分别标记为待检测状态和所求状态,返回步骤211;
步骤212、若mdec下存在使能的计算变迁t′,则激发使能的计算变迁中优先级最高的那一个tmax,生成新标识m′;否则执行步骤216;
步骤213、若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤214,否则执行步骤215;
步骤214、若mdec的生成路径上只有一个端点,则从mdec到m″画一条有向弧,并用tmax标记,形成回路,此时,竞态race=1,算法结束;否则εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=tmax,即从mdec到m″画一条有向弧,并用tmax标记,执行步骤216;
步骤215、εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=tmax,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用tmax标记,并将m′分别标记为待检测状态和所求状态,执行步骤216;
步骤216、若mdec下无使能变迁t′,且mdec不是端点,则Enew=Enew+{mdec},即标记mdec为待检测端点,否则执行步骤217;
步骤217、若Mdec=Mdec-{mdec},即擦去mdec的待检测标记,返回步骤23;
步骤218、若mdec下存在使能的采样变迁t,则Mdec=Mdec-{mdec},即擦去当前状态待检测标记;否则执行步骤220;
步骤219、若mdec不是端点,则Enew=Enew+{mdec},即标记mdec为待检测端点,返回步骤23;否则直接返回步骤23;
步骤220、激发使能的计算变迁中优先级最高的那一个tmax,生成新标识m′。若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤221;否则执行步骤222;
步骤221、若mdec的生成路径上只有一个端点,则从mdec到m″画一条有向弧,并用tmax标记,形成回路,此时竞态race=1,算法结束;否则,令εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=tmax,即从mdec到m″画一条有向弧,并用tmax标记,执行步骤223;
步骤222、εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=tmax,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用tmax标记,并将m′分别标记为待检测状态和所求状态,执行步骤225;
步骤223、Mdec=Mdec-{mdec},即擦去当前状态“待检测状态”标记,返回步骤23;
步骤224、Enew=Enew-{mdec},Eold=Eold+{mdec},即擦去当前状态“待检测端点”标记,标记为“已检测端点”,返回步骤22;
步骤3、若步骤2输出一个具有可逆性的可达图,图中的每一个标识都代表着系统中可能出现的某一状态,每一条生成路径都描述了系统在某一状态后的演化过程,也就是PLC程序在不同的输入条件时,对应的不同输出结果,则PLC程序中不存在竞态race;若步骤2输出一个存在自回路的不可逆的、不完整的可达图,则PLC程序中存在竞态race。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (1)

1.一种检测PLC梯形图程序中是否存在竞态的方法,其特征在于包括如下步骤:
步骤1、定义规则
(1)采样变迁及同地址采样变迁:把开关量或者触点这类输入量模拟为一对真假库所,而且在这对真假库所中添加了一对连接变迁,把这样的一类连接变迁定义为采样变迁,记做Tsample,并且这对连接变迁彼此互为同地址采样变迁;
(2)采样变迁中的优先级:按照PLC梯形图中每个开关量或者触点的物理地址的先后顺序,将普通Petri网中每个开关量或者触点对应的结点划分优先级,进而根据结点的优先级来划分结点中每对采样变迁的优先级,把优先级高的采样变迁记做th且th∈Tsample,把优先级低的采样变迁记做tl且tl∈Tsample,同地址的两个采样变迁优先级相同;
(3)计算变迁:把辅助继电器或者线圈这类输出量模拟为一对真假库所,而且根据路径和割集的概念添加了连接变迁,把这样的一类连接变迁定义为计算变迁,记做Tcompute
(4)计算变迁中的优先级:如果用户使用的程序是梯形图程序,那么PLC在程序执行阶段,总是按照先上后下、从左至右的顺序进行扫描,程序中的输出量也是按照这个顺序发生变化的,按照这个顺序将程序中输出量对应的结点划分优先级,进而确定与每个输出量变化相关的计算变迁的优先级,把最高级别的计算变迁标识记做:tmax且t∈Tcom
(5)标识的使能变迁和生成变迁:对于标识m,如果有一个变迁t可以被激发,激发后产生标识m′,此过程可表示为m[t>m′,变迁t称为标识m的使能变迁,记做mdec[t>,变迁t称为标识m′的生成变迁,记做[t>m′;
(6)端点:对于标识m,如果在新的变迁激发规则下不存在使能变迁,把这样的标识称为端点,记做端点e∈E,用E表示可达图中的端点集合;
(7)生成路径:从端点出发到标识m的一条有向路径,称为标识m的生成路径;
(8)新的变迁激发规则:
A、普通Petri网变迁激发规则同样适用于新的变迁激发规则中;
B、对于采样变迁,在低级别变迁激发后,高级别变迁即使使能也不再激发;
C、对于采样变迁,同地址的一对变迁中,若有一个激发,那么下一步中与其相对应的另一个即使使能也不再激发;
D、对于计算变迁,存在大于等于一个变迁使能时,只激发级别最高的变迁;
E、在计算变迁被激发后,其后续步骤中即使有采样变迁使能也不被激发;
步骤2、根据系统的控制规范,可编写满足要求的PLC梯形图程序,并进一步转换成普通Petri网,根据普通Petri网及其初始标识生成符合PLC工作机理的可达图,具体包括如下步骤:
步骤21、用E表示可达图中的端点集合,其中,E=Enew∪Eold,Enew为待检测端点集合,Eold为已检测端点集合;用εPLC表示有向弧集合;ωPLC表示有向弧的标签集合;MPLC表示所求状态集合;Mdec表示待检测状态集合;m0表示初始状态;令Enew={m0},
Figure FDA00002633618500031
Figure FDA00002633618500032
Figure FDA00002633618500033
Figure FDA00002633618500034
MPLC={m0};
步骤22、若
Figure FDA00002633618500035
则执行步骤23,否则,若Enew为空集,则算法结束;
步骤23、令Mdec=Mdec+{enew},即选取Enew中任一元素作为PLC程序的一个新的工作周期的起始状态,并标记为待检测状态,用符号“mdec”表示;若则选取Mdec中任一元素,执行步骤24,否则执行步骤224;
步骤24、若状态mdec下存在使能变迁t,则执行步骤26,否则执行步骤25;
步骤25、若mdec∈Enew,即mdec是待检测端点,则Mdec=Mdec-{mdec},Enew=Enew-{mdec},Eold=Eold+{mdec},即擦去当前状态的“待检测端点”及“待检测状态”标记并标记为“已检测端点”,返回步骤22,否则Mdec=Mdec-{mdec},Enew=Enew+{mdec},即擦去待检测状态标记,并标记为待检测端点,返回步骤23;
步骤26、根据步骤1中定义规则(1)至(4),对使能变迁t分类并划分优先级;
步骤27、若mdec是待检测端点,即mdec∈Enew,则执行步骤28,否则执行步骤29;
步骤28、对于每一个在mdec下使能的变迁t,执行:
步骤28.1激发变迁t,生成新标识m′;
步骤28.2若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤28.3,否则执行步骤28.4;
步骤28.3εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=t。即从mdec到m″画一条有向弧,并用t标记,返回步骤28;
步骤28.4εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=t,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用t标记,并将m′分别标记为待检测状态和所求状态;
步骤29、Mdec=Mdec-{mdec},即擦去当前状态的待检测标记,返回步骤23;
步骤210、若mdec是由采样变迁t激发后生成的,则执行步骤211,否则执行步骤215;
步骤211、对于每一个在mdec下使能的采样变迁t′,执行:
步骤211.1若t′的优先级低于t的优先级,则激发变迁t′,生成新标识m,否则返回步骤211;
步骤211.2若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤211.3,否则执行步骤211.4;
步骤211.3εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=t′,即从mdec到m″画一条有向弧,并用t标记,返回步骤211;
步骤211.4εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=t,Mdec=Mdec+{m′},MPLC=MPLC+}m′},即从mdec到m′画一条有向弧,用t标记,并将m′分别标记为待检测状态和所求状态,返回步骤211;
步骤212、若mdec下存在使能的计算变迁t′,则激发使能的计算变迁中优先级最高的那一个tmax,生成新标识m′;否则执行步骤216;
步骤213、若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤214,否则执行步骤215;
步骤214、若mdec的生成路径上只有一个端点,则从mdec到m″画一条有向弧,并用tmax标记,形成回路,此时,竞态race=1,算法结束;否则εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=tmax,即从mdec到m″画一条有向弧,并用tmax标记,执行步骤216;
步骤215、εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=tmax,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用tmax标记,并将m′分别标记为待检测状态和所求状态,执行步骤216;
步骤216、若mdec下无使能变迁t′,且mdec不是端点,则Enew=Enew+{mdec},即标记mdec为待检测端点,否则执行步骤217;
步骤217、若Mdec=Mdec-{mdec},即擦去mdec的待检测标记,返回步骤23;
步骤218、若mdec下存在使能的采样变迁t,则Mdec=Mdec-{mdec},即擦去当前状态待检测标记;否则执行步骤220;
步骤219、若mdec不是端点,则Enew=Enew+{mdec},即标记mdec为待检测端点,返回步骤23;否则直接返回步骤23;
步骤220、激发使能的计算变迁中优先级最高的那一个tmax,生成新标识m′;若m′与已存在的状态m″标识相同且m″∈MPLC,则执行步骤221,否则执行步骤222;
步骤221、若mdec的生成路径上只有一个端点,则从mdec到m″画一条有向弧,并用tmax标记,形成回路,此时竞态race=1,算法结束;否则,令εPLC=εPLC+{(mdec,m″)},wPLC(mdec,m″)=tmax,即从mdec到m″画一条有向弧,并用tmax标记,执行步骤223;
步骤222、εPLC=εPLC+{(mdec,m′)},wPLC(mdec,m′)=tmax,Mdec=Mdec+{m′},MPLC=MPLC+{m′},即从mdec到m′画一条有向弧,用tmax标记,并将m′分别标记为待检测状态和所求状态,执行步骤225;
步骤223、Mdec=Mdec-{mdec},即擦去当前状态“待检测状态”标记,返回步骤23;
步骤224、Enew=Enew-{mdec},Eold=Eold+{mdec},即擦去当前状态“待检测端点”标记,标记为“已检测端点”,返回步骤22;
步骤3、若步骤2输出一个具有可逆性的可达图,图中的每一个标识都代表着系统中可能出现的某一状态,每一条生成路径都描述了系统在某一状态后的演化过程,则PLC程序中不存在竞态race;若步骤2输出一个存在自回路的不可逆的、不完整的可达图,则PLC程序中存在竞态race。
CN201210564793.0A 2012-12-21 2012-12-21 一种检测plc梯形图程序中是否存在竞态的方法 Expired - Fee Related CN103019233B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210564793.0A CN103019233B (zh) 2012-12-21 2012-12-21 一种检测plc梯形图程序中是否存在竞态的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210564793.0A CN103019233B (zh) 2012-12-21 2012-12-21 一种检测plc梯形图程序中是否存在竞态的方法

Publications (2)

Publication Number Publication Date
CN103019233A true CN103019233A (zh) 2013-04-03
CN103019233B CN103019233B (zh) 2015-04-15

Family

ID=47967940

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210564793.0A Expired - Fee Related CN103019233B (zh) 2012-12-21 2012-12-21 一种检测plc梯形图程序中是否存在竞态的方法

Country Status (1)

Country Link
CN (1) CN103019233B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103616885A (zh) * 2013-11-20 2014-03-05 华侨大学 基于Petri网的PLC在线故障诊断方法
CN103699048A (zh) * 2013-12-06 2014-04-02 华侨大学 一种将PLC加计数器转换为顺序Petri网的方法
CN103699730A (zh) * 2013-12-18 2014-04-02 华侨大学 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法
CN104133412A (zh) * 2014-07-08 2014-11-05 华侨大学 一种判断梯形图程序的无“竞态”的方法
CN104615071A (zh) * 2015-01-08 2015-05-13 华侨大学 基于Petri网的自动化立体仓库系统的PLC程序设计方法
CN108171396A (zh) * 2017-11-30 2018-06-15 云南电网有限责任公司 检测和删除Petri网业务流程中结构冗余的方法及装置
CN110865586A (zh) * 2019-07-26 2020-03-06 华侨大学 基于Petri网的无刷直流电机DSP逻辑控制程序设计方法
CN111124694A (zh) * 2019-11-14 2020-05-08 武汉纺织大学 一种基于petri网的可达图的死锁检测和解决方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011003837A1 (de) * 2009-07-08 2011-01-13 Schneider Electric Automation Gmbh Verfahren zur optimierung von petri-netz orchestrierten arbeitsabläufen für service-orientierte automatisierungsgeräte in service-orientierten automatisierten systemen
CN102411330A (zh) * 2011-08-25 2012-04-11 华侨大学 一种将可编程逻辑控制器程序转换为普通Petri网的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011003837A1 (de) * 2009-07-08 2011-01-13 Schneider Electric Automation Gmbh Verfahren zur optimierung von petri-netz orchestrierten arbeitsabläufen für service-orientierte automatisierungsgeräte in service-orientierten automatisierten systemen
CN102411330A (zh) * 2011-08-25 2012-04-11 华侨大学 一种将可编程逻辑控制器程序转换为普通Petri网的方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
李占山: "基于Petri网的PLC程序设计", 《电气传动自动化》, no. 02, 30 April 2002 (2002-04-30) *
王泳等: "Petri网理论在PLC程序设计中的应用研究", 《煤矿机械》, no. 03, 5 March 2005 (2005-03-05) *
董海鹰: "Petri 网在 PLC 系统中的应用研究", 《兰州铁道学院学报》, no. 04, 30 October 1998 (1998-10-30) *
高宏伟等: "基于Petri网的PLC程序设计方法研究", 《郑州轻工业学院学报(自然科学版)》, no. 01, 30 March 2003 (2003-03-30) *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103616885A (zh) * 2013-11-20 2014-03-05 华侨大学 基于Petri网的PLC在线故障诊断方法
CN103616885B (zh) * 2013-11-20 2016-05-18 华侨大学 基于Petri网的PLC在线故障诊断方法
CN103699048B (zh) * 2013-12-06 2016-08-17 华侨大学 一种将PLC加计数器转换为顺序Petri网的方法
CN103699048A (zh) * 2013-12-06 2014-04-02 华侨大学 一种将PLC加计数器转换为顺序Petri网的方法
CN103699730A (zh) * 2013-12-18 2014-04-02 华侨大学 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法
CN103699730B (zh) * 2013-12-18 2017-02-22 华侨大学 一种基于Petri网的组合逻辑FPGA系统可达图的生成方法
CN104133412A (zh) * 2014-07-08 2014-11-05 华侨大学 一种判断梯形图程序的无“竞态”的方法
CN104615071A (zh) * 2015-01-08 2015-05-13 华侨大学 基于Petri网的自动化立体仓库系统的PLC程序设计方法
CN108171396A (zh) * 2017-11-30 2018-06-15 云南电网有限责任公司 检测和删除Petri网业务流程中结构冗余的方法及装置
CN108171396B (zh) * 2017-11-30 2022-01-28 云南电网有限责任公司 检测和删除Petri网业务流程中结构冗余的方法及装置
CN110865586A (zh) * 2019-07-26 2020-03-06 华侨大学 基于Petri网的无刷直流电机DSP逻辑控制程序设计方法
CN110865586B (zh) * 2019-07-26 2022-06-07 华侨大学 基于Petri网的无刷直流电机DSP逻辑控制程序设计方法
CN111124694A (zh) * 2019-11-14 2020-05-08 武汉纺织大学 一种基于petri网的可达图的死锁检测和解决方法
CN111124694B (zh) * 2019-11-14 2023-10-27 武汉纺织大学 一种基于petri网的可达图的死锁检测和解决方法

Also Published As

Publication number Publication date
CN103019233B (zh) 2015-04-15

Similar Documents

Publication Publication Date Title
CN103019233B (zh) 一种检测plc梯形图程序中是否存在竞态的方法
Runge et al. Escaping the curse of dimensionality in estimating multivariate transfer entropy
Li et al. Consensus analysis of multiagent systems with second-order nonlinear dynamics and general directed topology: An event-triggered scheme
Zhai et al. Fault diagnosis based on parameter estimation in closed‐loop systems
CN102354144B (zh) 一种将梯形图转化成plc程序指令的方法
CN103698734A (zh) 智能电表基于仿真的虚拟故障测试方法
CN105162646A (zh) 一种多协议接口测试系统及方法
CN105577439A (zh) 一种基于传感设备为基础的仿真模拟方法
Diao et al. A big data online cleaning algorithm based on dynamic outlier detection
CN114070752A (zh) 测试方法、装置、电子设备及计算机可读存储介质
CN103941724A (zh) 一种低故障诊断精度要求的长时延网络控制系统容错控制方法
US9665668B2 (en) Configuring a dispatching rule for execution in a simulation
CN117313953A (zh) 一种负荷预测方法、装置、电子设备以及存储介质
CN115329972B (zh) 量子计算机性能确定方法及装置、电子设备和介质
Arnold Intelligent systems: A new industrial revolution
CN104700055A (zh) 一种多概率rfid事件流上复杂事件检测方法
CN106982246A (zh) 智能设备
CN103970027B (zh) 一种综合电子软件仿真环境中的遥测处理单元模拟方法
Chevalier et al. Accelerated probabilistic state estimation in distribution grids via model order reduction
Reshmila et al. Diagnosability of a class of discrete event systems based on observations
Shang et al. A kinematic chain isomorphism identification algorithm using optimized circuit simulation method
Zeng et al. Weighted average consensus of second-order multi-agent systems with various intelligence levels via sampled-data control
CN104408142A (zh) 一种面向制造物联网海量乱序数据流复杂事件检测方法
Dai Design of complex wind power generation parameter control system based on embedded control combined with Internet of Things
Chen et al. Improved RSSI indoor location system based on fuzzy algorithm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Luo Jiliang

Inventor after: Qi Pengfei

Inventor after: Chen Xuekun

Inventor before: Qi Pengfei

Inventor before: Luo Jiliang

Inventor before: Chen Xuekun

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: QI PENGFEI LUO JILIANG CHEN XUEKUN TO: LUO JILIANG QI PENGFEI CHEN XUEKUN

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150415