【技术实现步骤摘要】
本专利技术涉及一种检测PLC (可编程逻辑控制器)程序中出现逻辑错误的方法,是针对PLC程序验证的有力工具,确切地说,提出了一种检测PLC梯形图程序中是否存在竞态的方法。
技术介绍
可编程逻辑控制器(PLC)广泛地应用于航空航天、交通运输、核电能、石油化工、电力和交通等安全苛求系统领域。传统的PLC程序调试方法只能在语法、语义上进行检测,无法识别出程序变量之间隐藏的逻辑错误,如,竞态。所谓“竞态”指的是,给定的PLC程序在ー组固定不变的输入情况下,在连续不同的工作周期中出现不断重复变化的输出值。例如,在一道加工程序中,控制机械臂抓取的程序中存在“竞态”,那么,在工作中机械臂的直接表现为抓取的动作不稳定,不断地重复抓住、松开动作,这样的错误会导致产品的加工出现非常严重的质量问题,以及非常低的工作效率。目前已经报道的检测方法中更多的是偏向于理论的证明,虽然此类方法可以精确地发现程序中是否存在“竞态”,但在应用于较复杂程序时其本身的推导证明过程却过于繁杂,会导致效率偏低,甚至提高错误率。如,Zhendong Su等人提出了基于ー种约束语言的“竞态”检测方法,该方法在检 ...
【技术保护点】
一种检测PLC梯形图程序中是否存在竞态的方法,其特征在于包括如下步骤:步骤1、定义规则(1)采样变迁及同地址采样变迁:把开关量或者触点这类输入量模拟为一对真假库所,而且在这对真假库所中添加了一对连接变迁,把这样的一类连接变迁定义为采样变迁,记做Tsample,并且这对连接变迁彼此互为同地址采样变迁;(2)采样变迁中的优先级:按照PLC梯形图中每个开关量或者触点的物理地址的先后顺序,将普通Petri网中每个开关量或者触点对应的结点划分优先级,进而根据结点的优先级来划分结点中每对采样变迁的优先级,把优先级高的采样变迁记做th且th∈Tsample,把优先级低的采样变迁记做tl且 ...
【技术特征摘要】
1.一种检测PLC梯形图程序中是否存在竞态的方法,其特征在于包括如下步骤步骤1、定义规则(1)采样变迁及同地址采样变迁把开关量或者触点这类输入量模拟为一对真假库所, 而且在这对真假库所中添加了一对连接变迁,把这样的一类连接变迁定义为采样变迁,记做Tsample,并且这对连接变迁彼此互为同地址采样变迁;(2)采样变迁中的优先级按照PLC梯形图中每个开关量或者触点的物理地址的先后顺序,将普通Petri网中每个开关量或者触点对应的结点划分优先级,进而根据结点的优先级来划分结点中每对采样变迁的优先级,把优先级高的采样变迁记做th且th e Tsample, 把优先级低的采样变迁记做h且& e Tsample,同地址的两个采样变迁优先级相同;(3)计算变迁把辅助继电器或者线圈这类输出量模拟为一对真假库所,而且根据路径和割集的概念添加了连接变迁,把这样的一类连接变迁定义为计算变迁,记做Tramputo ;(4)计算变迁中的优先级如果用户使用的程序是梯形图程序,那么PLC在程序执行阶段,总是按照先上后下、从左至右的顺序进行扫描,程序中的输出量也是按照这个顺序发生变化的,按照这个顺序将程序中输出量对应的结点划分优先级,进而确定与每个输出量变化相关的计算变迁的优先级,把最高级别的计算变迁标识记做tmax且t e Tcoffl ;(5)标识的使能变迁和生成变迁对于标识m,如果有一个变迁t可以被激发,激发后产生标识m',此过程可表示为,变迁t称为标识m的使能变迁,记做mdec;[t>,变迁t 称为标识m'的生成变迁,记做[t>m';(6)端点对于标识m,如果在新的变迁激发规则下不存在使能变迁,把这样的标识称为端点,记做端点e e E,用E表示可达图中的端点集合;(7)生成路径从端点出发到标识m的一条有向路径,称为标识m的生成路径;(8)新的变迁激发规则A、普通Petri网变迁激发规则同样适用于新的变迁激发规则中;B、对于采样变迁,在低级别变迁激发后,高级别变迁即使使能也不再激发;C、对于采样变迁,同地址的一对变迁中,若有一个激发,那么下一步中与其相对应的另一个即使使能也不再激发;D、对于计算变迁,存在大于等于一个变迁使能时,只激发级别最高的变迁;E、在计算变迁被激发后,其后续步骤中即使有采样变迁使能也不被激发;步骤2、根据系统的控制规范,可编写满足要求的PLC梯形图程序,并进一步转换成普通Petri网,根据普通Petri网及其初始标识生成符合PLC工作机理的可达图,具体包括如下步骤步骤21、用E表示可达图中的端点集合,其中,E=Emw U Eold, Enrat为待检测端点集合, Etjld为已检测端点集合;用ε PLC表示有向弧集合;ωριχ表示有向弧的标签集合;ΜΡΙΧ表示所求状态集合;Μ_表示待检测状态集合吨表示初始状态;令Enew=ImJ, EoM=0 ,Spjc = 0, ωΡΙΓ=0 Mjec=0, Mplc= {m0};步骤22、若本0,则执行步骤23,否则,若Enrat为空集,则算法结束;步骤23、令Mde。= Mdec+{enJ,即选取Emw中任一元素作为PLC程序的一个新的工作周期的起始状态,并标记为待检测状态,用符号“nw”表示;若Μ-# 0,则选取Mde。中任一元素,执行步骤24,否则执行步骤224 ;步骤24、若状态mde。下存在使能变迁t,则执行步骤26,否则执行步骤25 ;步骤 25、若 mdec e Enew,即 mde。是待检测端点,则 Mdec=Mdee-{mde。},Enew=Enew- {mdec},Eold = Edd+lnw},即擦去当前状态的“待检测端点”及“待检测状态”标记并标记为“已检测端点”, 返回步骤22,否则Mdee=Mdee-1mdeJ , Enew=Enew+ {mdec},即擦去待检测状态标记,并标记为待检测端点,返回步骤23 ;步骤26、根据步骤I中定义规则(I)至(4),对使能变迁t分类并划分优先级;步骤27、若mde。是待检测端点,即mde。e Enew,则执行步骤28,否则执行步骤29 ;步骤28、对于每一个在mde。下使能的变迁t,执行 步骤28.1激发变迁t,生成新标识m';步骤28.2若m'与已存在的状态m标识相同且m e ,则执行步骤28. 3,否则执行步骤28. 4 ;步骤 28. 3 ε PLC = ε PLC+{(mdec,m )}, wPLC(mdec,m ) = t。即从 mdec 到 m画一条有向弧,并用t标记,返回步骤28 ;步骤 2...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。