发明名称 一种将PLC指令表程序转换成普通Petri网的方法
摘要 本发明一种将PLC指令表程序转换成普通Petri网的方法,实现了从PLC指令表程序到普通Petri网的自动转换,由于普通Petri网激发条件简洁,逻辑思维方式简单,更直观易懂,而且所得Petri网能够完全模拟PLC控制系统的动态行为,便于对PLC程序分析、纠错,提高其可靠性。
申请公布号 CN103092753A 申请公布日期 2013.05.08
申请号 CN201210589803.6 申请日期 2012.12.29
申请人 华侨大学 发明人 齐鹏飞;罗继亮;陈雪琨
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 泉州市文华专利代理有限公司 35205 代理人 车世伟
主权项 一种将PLC指令表程序转换成普通Petri网的方法,其特征在于包括如下步骤:步骤1、将PLC指令表程序转换成二值逻辑函数:根据转载指令“LD”或“LDN”的个数将给定的PLC指令表程序划分为多个程序网络块,对于每一个程序网络块,将其对应的变量存储器V中的变量值置1,步骤11、对于当前程序网络块中的STL程序进行从上到下的逐条搜索;步骤12、如果遇到指令LD,将其对应的操作数作为二值逻辑函数的初始输入量,与变量存储器V中变量值作“与”运算,将结果代入公式Y=F(A,B,C…)中等号右面,并重新存入存储器V中,跳转到下一条指令;步骤13、如果遇到指令LDN,将其对应的操作数作为二值逻辑函数的初始输入量,先对该输入量取非,然后与变量存储器V中变量值作“与”运算,将结果代入公式Y=F(A,B,C…)中等号右面,并重新存入存储器V中,跳转到下一条指令;步骤14、如果遇到指令A,将其对应的操作数作为二值逻辑函数的输入变量,与变量存储器V中变量值作“与”运算,用符号“*”连接,代入公式Y=F(A,B,C…)中等号右面,运算后将其结果用符号“()”括起,一并存入存储器V中,跳转到下一条指令;步骤15、如果遇到AN,将其对应的操作数作为二值逻辑函数 的输入变量,先对该变量取非,用符号“—”表示;然后与变量存储器V中变量值作“与”运算,用符号“*”连接,代入公式Y=F(A,B,C…)中等号右面,运算后用符号“()”括起,一并存入存储器V中,跳转到下一条指令;步骤16、如果遇到指令O,将其对应的操作数作为二值逻辑函数的输入变量,与变量存储器V中变量值作“或”运算,用符号“+”连接,代入公式Y=F(A,B,C…)中等号右面,运算后用符号“()”括起,一并存入存储器V中,跳转到下一条指令;步骤17、如果遇到指令ON,将其对应的操作数作为二值逻辑函数的输入变量,先对该变量取非,用符号“—”表示;然后与变量存储器V中变量值作“与”运算,用符号“*”连接,代入公式Y=F(A,B,C…)中等号右面,运算后用符号“()”括起,一并存入变量存储器V中,跳转到下一条指令;步骤18、如果遇到指令NOT,先将当前存储器中的变量值取非,然后重新存入存储器V中;步骤19、如果遇到指令=,将其对应的操作数作为二值逻辑函数的输出变量,将当前寄存器中的变量值赋给输出变量,代入公式Y=F(A,B,C…)中等号左面,跳转到下一条指令;步骤110、直到当前程序网络块中所有STL程序被搜索完为止;步骤2、将步骤1获得的二值逻辑函数转换为普通Petri网:步骤21、确定二值逻辑函数中输入量和输出量个数,得到输入量集合I=(i1,i2,…im),输出量集合O=(o1,o2,…on);步骤22、将二值逻辑函数中所有运算量模拟为2(m+n)个库所,其中,每个运算量im或on分别对应两个库所(poff,pon),表示im或on的断开状态和闭合状态,这些库所组成普通Petri网中库所的集合 <mrow> <mi>P</mi> <mo>=</mo> <munder> <mrow> <mi></mi> <mo>&cup;</mo> </mrow> <mrow> <mn>1</mn> <mo>&lt;</mo> <mi>i</mi> <mo>&lt;</mo> <mi>m</mi> <mo>+</mo> <mi>n</mi> </mrow> </munder> <mo>{</mo> <msub> <mi>p</mi> <mi>ioff</mi> </msub> <mo>,</mo> <msub> <mi>p</mi> <mi>ion</mi> </msub> <mo>}</mo> <mo>;</mo> </mrow>步骤23、定义普通Petri网的初始标识m0(pioff)=1,m0(pion)+m0(pioff)=1;步骤24、对于每一个运算量im或on,做下列运算来获得普通Petri网的变迁和有向弧:步骤241、根据公式A*(B+C)=A*B+A*C或A+B*C=(A+B)*(A+C)将给定二值逻辑函数变形为闭合型二值逻辑函数,确定闭合算子集合J=(j1,j2,…jm);步骤2411、将闭合算子集合J中每一个闭合算子模拟为一个变迁t;步骤2412、确定闭合算子中的输入量取值及其对应库所,在这种取值下,当前闭合二值逻辑函数的输出量为1;步骤2413、分别在步骤2412中所确定的库所与变迁t中添加一条双向弧;步骤2414、在当前闭合二值逻辑函数的输出量对应的库所对中,添加一条从poff指向变迁t的有向弧,添加一条从变迁t指向pon的有向弧;步骤242、根据公式A*B+A*C=A*(B+C)或(A+B)*(A+C)=A+B*C将给定二值逻辑函数变形为断开型二值逻辑函数,确定断开算子集合 K=(k1,k2,…km);步骤2421、将断开算子集合K中每一个断开算子模拟为一个变迁t:步骤2422确定断开算子中的输入量取值及其对应库所,在这种取值下,当前闭合二值逻辑函数的输出量为0;步骤2423、分别在步骤2422中所确定的库所与变迁t中添加一条双向弧;步骤2424、在当前闭合二值逻辑函数的输出量对应的库所对中,添加一条从pon指向变迁t的有向弧,添加一条从变迁t指向poff的有向弧;步骤24、对于每一个输入量所对应的库所对,添加连接迁tx和ty,且连接tx的输入和输出分别为该结点的库所poff和库所pon,而连接迁ty的输入和输出分别为该结点的pon和poff,满足m0(pion)+m0(pioff)=1;步骤25、根据普通Petri网的变迁激发规则去掉不能激发的变迁,获得最终的普通Prtri网。
地址 362000 福建省泉州市丰泽区城东华侨大学