一种将PLC指令表程序转换成普通Petri网的方法

文档序号:6580520阅读:270来源:国知局
专利名称:一种将PLC指令表程序转换成普通Petri网的方法
技术领域
本发明涉及一种将PLC指令表程序转换成普通Petri网的方法。
背景技术
可编程逻辑控制器(PLC)是工业控制系统中典型的控制器,广泛地应用于钢铁、石油、化工、电力和交通系统的监控等领域。然而PLC程序的开发却面临着高复杂性难题:在现场总线技术的支持下,工业控制系统规模和结构复杂性增长迅速,比如地铁交通控制系统和核电控制系统等等,而系统的状态个数随传感器和执行机构的数目呈指数级增长,仅由5辆自动导航车辆组成的物流系统的状态就达数百万之巨,因此PLC程序设计面临与生俱来的高计算复杂性。而高计算复杂性带来两大工程问题:(1)程序设计和调试工作量繁琐和巨大,程序开发周期和开发成本难于控制;(2)传统程序调试无法验证每个状态(状态数呈指数级增长),无法保证程序的正确性和可靠性,而程序出错可能造成严重事故,比如列车相撞、欧洲亚利安娜5号火箭爆炸和美国Threc-5放射性医疗事故等。为了克服上述工程问题,需要开发PLC程序仿真和软件验证方法,利用计算机来完成程序仿真和验证工作,降低程序开发成本,保证程序的正确性和可靠性。因此,需要将PLC程序模拟为计算机数学模型,即将PLC程序指令转换为一种计算机数学模型一Petri网,以Petri网为工具对PLC程序进行仿真和验证。该Petri网是1960年代德国科学家卡尔.Α.佩特里发明的,适合于模拟异步的、并发的动态系统,既有严格的数学表述方式,又有直观的图形表达方式。

发明内容
本发明的目的在于提供一种将PLC指令表程序转换成普通Petri网的方法,将PLC指令表程序转换为一种计算机数学模型一Petri网,从而能以Petri网为工具对PLC程序进行仿真和验证。一种将PLC指令表程序转换成普通Petri网的方法,包括如下步骤:步骤1、将PLC指令表程序转换成二值逻辑函数:根据转载指令“LD”或“LDN”的个数将给定的PLC指令表程序划分为多个程序网络块,对于每一个程序网络块,将其对应的变量存储器V中的变量值置1,步骤11、对于当前程序网络块中的STL程序进行从上到下的逐条搜索;步骤12、如果遇到指令LD,将其对应的操作数作为二值逻辑函数的初始输入量,与变量存储器V中变量值作“与”运算,将结果代入公式Y = F(A,B,0..)中等号右面,并重新存入存储器V中,跳转到下一条指令;步骤13、如果遇到指令LDN,将其对应的操作数作为二值逻辑函数的初始输入量,先对该输入量取非,然后与变量存储器V中变量值作“与”运算,将结果代入公式Y =F(A,B,0..)中等号右面,并重新存入存储器V中,跳转到下一条指令;
步骤14、如果遇到指令A,将其对应的操作数作为二值逻辑函数的输入变量,与变量存储器V中变量值作“与”运算,用符号连接,代入公式Y = F(A,B,0..)中等号右面,运算后将其结果用符号“”括起,一并存入存储器V中,跳转到下一条指令;步骤15、如果遇到AN,将其对应的操作数作为二值逻辑函数的输入变量,先对该变量取非,用符号“一”表示;然后与变量存储器V中变量值作“与”运算,用符号连接,代入公式Y = Hk, B, 0..)中等号右面,运算后用符号“O”括起,一并存入存储器V中,跳转到下一条指令;步骤16、如果遇到指令0,将其对应的操作数作为二值逻辑函数的输入变量,与变量存储器V中变量值作“或”运算,用符号“ + ”连接,代入公式Y = F(A,B,0..)中等号右面,运算后用符号“”括起,一并存入存储器V中,跳转到下一条指令;步骤17、如果遇到指令0N,将其对应的操作数作为二值逻辑函数的输入变量,先对该变量取非,用符号“一”表示;然后与变量存储器V中变量值作“与”运算,用符号连接,代入公式Y = F(A,B, 0..)中等号右面,运算后用符号“O”括起,一并存入变量存储器V中,跳转到下一条指令;步骤18、如果遇到指令Ν0Τ,先将当前存储器中的变量值取非,然后重新存入存储器V中;步骤19、如果遇到指令=,将其对应的操作数作为二值逻辑函数的输出变量,将当前寄存器中的变量值赋给输出变量,代入公式Y = F(A,B,0..)中等号左面,跳转到下一条指令;步骤110、直到当前程序网络块中所有STL程序被搜索完为止;步骤2、将步骤I获得的二值逻辑函数转换为普通Petri网:步骤21、确定二值逻辑函数中输入量和输出量个数,得到输入量集合I=Q1, i2,…。,输出量集合。=、,^…心;步骤22、将二值逻辑函数中所有运算量模拟为2 (m+n)个库所,其中,每个运算量Iffl或On分别对应两个库所(Pm,Pon),表示im或On的断开状态和闭合状态,这些库所组成普
通Petri网中库所的集合
权利要求
1.种将PLC指令表程序转换成普通Petri网的方法,其特征在于包括如下步骤: 步骤1、将PLC指令表程序转换成二值逻辑函数: 根据转载指令“LD”或“LDN”的个数将给定的PLC指令表程序划分为多个程序网络块,对于每一个程序网络块,将其对应的变量存储器V中的变量值置1, 步骤11、对于当前程序网络块中的STL程序进行从上到下的逐条搜索; 步骤12、如果遇到指令LD,将其对应的操作数作为二值逻辑函数的初始输入量,与变量存储器V中变量值作“与”运算,将结果代入公式Y = F(A,B,0..)中等号右面,并重新存入存储器V中,跳转到下一条指令; 步骤13、如果遇到指令LDN,将其对应的操作数作为二值逻辑函数的初始输入量,先对该输入量取非,然后与变量存储器V中变量值作“与”运算,将结果代入公式Y = F(A,B, C-)中等号右面,并重新存入存储器V中,跳转到下一条指令; 步骤14、如果遇到指令A,将其对应的操作数作为二值逻辑函数的输入变量,与变量存储器V中变量值作“与”运算,用符号连接,代入公式Y = F(A,B,C...)中等号右面,运算后将其结果用符号“O”括起,一并存入存储器V中,跳转到下一条指令; 步骤15、如果遇到AN,将其对应的操作数作为二值逻辑函数的输入变量,先对该变量取非,用符号“一”表示;然后与变量存储器V中变量值作“与”运算,用符号连接,代入公式Y = Hk, B, 0..)中等号右面,运算后用符号“O”括起,一并存入存储器V中,跳转到下一条指令; 步骤16、如果遇到指令O,将其对应的操作数作为二值逻辑函数的输入变量,与变量存储器V中变量值作“或”运算,用符号“ + ”连接,代入公式Y = Hk, B, 0..)中等号右面,运算后用符号“”括起, 一并存入存储器V中,跳转到下一条指令; 步骤17、如果遇到指令0N,将其对应的操作数作为二值逻辑函数的输入变量,先对该变量取非,用符号“一”表示;然后与变量存储器V中变量值作“与”运算,用符号连接,代入公式Y = F(A,B,0..)中等号右面,运算后用符号“O”括起,一并存入变量存储器V中,跳转到下一条指令; 步骤18、如果遇到指令NOT,先将当前存储器中的变量值取非,然后重新存入存储器V中; 步骤19、如果遇到指令=,将其对应的操作数作为二值逻辑函数的输出变量,将当前寄存器中的变量值赋给输出变量,代入公式Y = F(A,B,0..)中等号左面,跳转到下一条指令; 步骤110、直到当前程序网络块中所有STL程序被搜索完为止; 步骤2、将步骤I获得的二值逻辑函数转换为普通Petri网: 步骤21、确定二值逻辑函数中输入量和输出量个数,得到输入量集合I=Q1, i2,…im),输出量集合0=(Ol,o2,-on); 步骤22、将二值逻辑函数中所有运算量模拟为2 (m+n)个库所,其中,每个运算量im或Qn分别对应两个库所(P()ff,Pon),表示im或On的断开状态和闭合状态,这些库所组成普通Petri网中库所的集合
全文摘要
本发明一种将PLC指令表程序转换成普通Petri网的方法,实现了从PLC指令表程序到普通Petri网的自动转换,由于普通Petri网激发条件简洁,逻辑思维方式简单,更直观易懂,而且所得Petri网能够完全模拟PLC控制系统的动态行为,便于对PLC程序分析、纠错,提高其可靠性。
文档编号G06F11/36GK103092753SQ20121058980
公开日2013年5月8日 申请日期2012年12月29日 优先权日2012年12月29日
发明者齐鹏飞, 罗继亮, 陈雪琨 申请人:华侨大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1