发明名称 一种将可编程逻辑控制器程序转换为普通Petri网的方法
摘要 本发明一种将可编程逻辑控制器程序转换为普通Petri网的方法,针对PLC梯形图程序,将梯形图触点和线圈模拟为结点,将导线模拟为有向边,建立梯形图程序的PLC有向图模型,定义该有向图中的路径,根据路径关系,将PLC有向图转换为Petri网;本发明实现PLC梯形图程序到普通Petri网模型的自动转换,由于普通Petri网激发条件简洁,逻辑思维方式简单,更直观易懂,而且所得Petri网模型能够完全模拟PLC控制系统的动态行为,更便于对PLC程序分析、纠错,使PLC程序逻辑更为严谨。
申请公布号 CN102411330A 申请公布日期 2012.04.11
申请号 CN201110248322.4 申请日期 2011.08.25
申请人 华侨大学 发明人 罗继亮;陈雪琨;齐鹏飞
分类号 G05B19/05(2006.01)I 主分类号 G05B19/05(2006.01)I
代理机构 泉州市文华专利代理有限公司 35205 代理人 陈雪莹
主权项 1.一种将可编程逻辑控制器程序转换为普通Petri网的方法,其特征在于具体包括以下步骤:步骤1、将PLC梯形图中左母线、右母线和包括触点、开关、辅助继电器或线圈的开关量模拟为结点,并且左、右母线和开关量与结点一一对应,得到结点集合V={v<sub>l</sub>,v<sub>r</sub>,v<sub>1</sub>,v<sub>2</sub>,L,v<sub>m</sub>},其中v<sub>l</sub>表示左母线,v<sub>r</sub>表示右母线,m表示开关量的个数;将左母线、右母线和开关量之间的导线模拟为有向边,得到有向边集合E={e<sub>1</sub>,e<sub>2</sub>,L,e<sub>n</sub>},其中任意e=(v<sub>x</sub>,v<sub>y</sub>),v<sub>x</sub>对应靠近左母线的母线或开关,v<sub>y</sub>对应靠近右母线的母线或开关,n是有向边的个数,从而获得PLC梯形图的有向图模型G=&lt;V,E&gt;;步骤2、计算Petri网的库所集<img file="FDA0000085877970000011.GIF" wi="348" he="83" />在PLC有向图中,将除母线对应的结点之外的全部结点v<sub>1</sub>,v<sub>2</sub>,L,v<sub>m</sub>模拟为2m个库所,其中每个结点v<sub>i</sub>(1≤i≤m)对应真库所p<sub>ion</sub>和假库所p<sub>ioff</sub>,所得库所组成Petri网的库所集<img file="FDA0000085877970000012.GIF" wi="347" he="83" />步骤3、设定Petri网的初始标识m<sub>0</sub>:<img file="FDA0000085877970000013.GIF" wi="1498" he="116" />显然,m<sub>0</sub>(p<sub>ion</sub>)+m<sub>0</sub>(p<sub>ioff</sub>)=1;步骤4、在PLC有向图中,定义与右母线结点相邻的赋值结点集合,赋值结点集合V<sub>o</sub>={v∈V/(v,v<sub>r</sub>)∈E},定义与左母线相邻的起始结点集合,起始结点集合V<sub>b</sub>={v∈V/(v<sub>l</sub>,v)∈E};步骤5、在PLC有向图中,对于任意一个赋值结点v<sub>ox</sub>,令∏(v<sub>ox</sub>)={π<sub>1</sub>,π<sub>2</sub>,L,π<sub>k</sub>}表示从起始结点到达v<sub>ox</sub>的全部基本有向路径集合,其中∏(v<sub>ox</sub>)中的任意一条路径满足下列条件:(1)它是一个结点序列,其中任意两个相邻结点之间存在一个从前者指向后者的有向边;(2)其中的每个结点仅能出现一次;(3)它的第一个结点是一个起始结点,最后一个结点是v<sub>ox</sub>;步骤6、对于每一个赋值结点v<sub>ox</sub>∈V<sub>o</sub>,进行下列运算来获得Petri网的变迁集合T和有向弧集合F:(1)令p<sub>on</sub>和p<sub>off</sub>分别对应v<sub>ox</sub>的真库所和假库所;(2)将∏(v<sub>ox</sub>)中k条路径的第i条路径π<sub>i</sub>模拟为一个变迁t<sub>ion</sub>,并且完成下列操作:设路径中非末尾结点的个数为v,那么在结点j(1≤j≤v)对应状态的库所p<sub>ij</sub>和t<sub>i</sub>之间添加一个双向弧;添加一个从t<sub>ion</sub>指向p<sub>on</sub>的有向弧;添加一个从p<sub>off</sub>指向t<sub>ton</sub>的有向弧;即<maths num="0001"><![CDATA[<math><mrow><mi>T</mi><mo>=</mo><mi>T</mi><munder><mi>U</mi><mrow><mn>1</mn><mo>&le;</mo><mi>i</mi><mo>&le;</mo><mi>k</mi></mrow></munder><mo>{</mo><msub><mi>t</mi><mi>ion</mi></msub><mo>}</mo><mo>,</mo></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><mi>F</mi><mo>=</mo><mi>F</mi><munder><mi>U</mi><munder><mrow><mn>1</mn><mo>&le;</mo><mi>i</mi><mo>&le;</mo><mi>k</mi></mrow><mrow><mn>1</mn><mo>&le;</mo><mi>j</mi><mo>&le;</mo><mi>v</mi></mrow></munder></munder><mo>{</mo><mrow><mo>(</mo><msub><mi>P</mi><mi>off</mi></msub><mo>,</mo><msub><mi>t</mi><mi>ion</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>t</mi><mi>ion</mi></msub><mo>,</mo><msub><mi>P</mi><mi>on</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>P</mi><mi>ij</mi></msub><mo>,</mo><msub><mi>t</mi><mi>ion</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>t</mi><mi>ion</mi></msub><mo>,</mo><msub><mi>P</mi><mi>ij</mi></msub><mo>)</mo></mrow><mo>}</mo><mo>;</mo></mrow></math>]]></maths>步骤7、定义∏(v<sub>ox</sub>)的割集,它满足下列条件:(1)它是一个结点集合;(2)每个结点都包含在∏(v<sub>ox</sub>)中的某路径内;(3)每个结点都不是v<sub>ox</sub>;(4)如果删除该集合中的结点,那么将不存在从左母线结点v<sub>l</sub>到达v<sub>ox</sub>的路径,如果∏(v<sub>ox</sub>)的一个割集不包含任何其它割集,则称其为最小割集,计算∏(v<sub>ox</sub>)的最小割集的集合,令其为Ψ(v<sub>ox</sub>);步骤8、、将Ψ(v<sub>ox</sub>)中c个割集的第m个割集ψ<sub>m</sub>模拟为一个变迁t<sub>moff</sub>,并完成下列操作:设路径中非末尾结点的个数为v′,那么在结点n(1≤n≤v′)对应状态的库所p<sub>mn</sub>和t<sub>moff</sub>之间添加一个双向弧;添加一个从p<sub>on</sub>指向t<sub>moff</sub>的有向弧;添加一个从t<sub>moff</sub>指向p<sub>off</sub>的有向弧,即<img file="FDA0000085877970000031.GIF" wi="383" he="99" /><maths num="0003"><![CDATA[<math><mrow><mi>F</mi><mo>=</mo><mi>F</mi><munder><mi>U</mi><munder><mrow><mn>1</mn><mo>&le;</mo><mi>m</mi><mo>&le;</mo><mi>c</mi></mrow><mrow><mn>1</mn><mo>&le;</mo><mi>n</mi><mo>&le;</mo><msup><mi>v</mi><mo>&prime;</mo></msup></mrow></munder></munder><mo>{</mo><mrow><mo>(</mo><msub><mi>P</mi><mi>off</mi></msub><mo>,</mo><msub><mi>t</mi><mi>moff</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>t</mi><mi>moff</mi></msub><mo>,</mo><msub><mi>P</mi><mi>on</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>P</mi><mi>mn</mi></msub><mo>,</mo><msub><mi>t</mi><mi>moff</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>t</mi><mi>moff</mi></msub><mo>,</mo><msub><mi>P</mi><mi>mn</mi></msub><mo>)</mo></mrow><mo>}</mo><mo>;</mo></mrow></math>]]></maths>步骤9、对于每个输入开关量对应的结点v<sub>i</sub>(<img file="FDA0000085877970000033.GIF" wi="431" he="49" />表示集合v<sub>o</sub>内元素个数),添加连接迁t<sub>x</sub>和t<sub>y</sub>,且t<sub>x</sub>的输入和输出分别为该结点的真库所和假库所,而t<sub>y</sub>的输入和输出分别为该结点的假库所和真库所,即<maths num="0004"><![CDATA[<math><mrow><mi>T</mi><mo>=</mo><mi>T</mi><munder><mi>U</mi><mrow><mn>1</mn><mo>&le;</mo><mi>i</mi><mo>&le;</mo><msup><mi>m</mi><mo>&prime;</mo></msup></mrow></munder><mo>{</mo><msub><mi>t</mi><mi>ix</mi></msub><mo>,</mo><msub><mi>t</mi><mi>iy</mi></msub><mo>}</mo><mo>,</mo></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><mi>F</mi><mo>=</mo><mi>F</mi><munder><mi>U</mi><mrow><mn>1</mn><mo>&le;</mo><mi>i</mi><mo>&le;</mo><msup><mi>m</mi><mo>&prime;</mo></msup></mrow></munder><mo>{</mo><mrow><mo>(</mo><msub><mi>P</mi><mi>ioff</mi></msub><mo>,</mo><msub><mi>t</mi><mi>iy</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>t</mi><mi>iy</mi></msub><mo>,</mo><msub><mi>P</mi><mi>ion</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>P</mi><mi>ion</mi></msub><mo>,</mo><msub><mi>t</mi><mi>ix</mi></msub><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><msub><mi>t</mi><mi>ix</mi></msub><mo>,</mo><msub><mi>P</mi><mi>ioff</mi></msub><mo>)</mo></mrow><mo>}</mo><mo>;</mo></mrow></math>]]></maths>步骤10、输出一个普通Petri网N:=(P,T,F)和初始标识m<sub>0</sub>。
地址 362000 福建省泉州市丰泽区城东华侨大学