法律状态公告日
法律状态信息
法律状态
2014-03-12
授权
授权
2012-08-08
实质审查的生效 IPC(主分类):G05B19/05 申请日:20110825
实质审查的生效
2012-04-11
公开
公开
技术领域
本发明涉及可编程逻辑控制器(PLC)程序的数学建模方法,是PLC程 序仿真和验证的有力工具,尤其是一种将可编程逻辑控制器程序转换为普 通Petri网的方法。
技术背景
可编程逻辑控制器(PLC)是工业控制系统中典型的控制器硬件,广泛 地应用于钢铁、石油、化工、电力和交通系统的监控。而PLC程序的开发 面临高复杂性难题:在现场总线技术的支持下,工业控制系统规模和结构 复杂性增长迅速,比如地铁交通控制系统和核电控制系统等等,而系统的 状态个数随传感器和执行机构的数目呈指数级增长,仅由5辆自动导航车 辆组成的物流系统的状态就达数百万之巨,因此PLC程序设计面临与生俱 来的高计算复杂性。
而高计算复杂性带来两大工程问题:(1)程序设计和调试工作量繁琐 和巨大,程序开发周期和开发成本难于控制;(2)传统程序调试无法验证 每个状态(状态数指数级增长),无法保证程序的正确性和可靠性,而程序 出错可能造成严重事故,比如列车相撞、欧洲亚利安娜5号火箭爆炸和美 国Threc-5放射性医疗事故等。
为了克服上述工程问题,需要开发PLC程序仿真和软件验证方法,利 用计算机来完成程序仿真和验证工作,降低程序开发成本,保证程序的正 确性和可靠性。因此,需要将PLC程序模拟为计算机数学模型,即将PLC 程序指令转换为一种计算机数学模型-Petri网,以Petri网为工具对PLC 程序进行仿真和验证。(Petri网是1960年代德国科学家卡尔·A·佩特里 发明的,适合于模拟异步的、并发的动态系统,既有严格的数学表述方式, 又有直观的图形表达方式。)
目前已经报道的方法是给出了将单个指令或简单的梯形图程序转换为 扩展Petri网的方法,无法自动转换普通的梯形图程序,在实际模拟转换 梯形图程序时需要列出大量的逻辑关系式,增加了工作量,而且扩展Petri 网的行为分析比较复杂,反而加大了出现错误的可能性;还有一种方法是 用扩展Petri网的结构元素去描述PLC梯形图的基本逻辑指令,进而完成 PLC梯形图语言的转换。这种方法的关键是把变迁定义为一个特定事件,但 是从逻辑层面上分析,整个网结构的运行并没有比PLC梯形图程序更简单, 而且Petri网结构在模拟仿真时也不能自行运转。
发明内容
本发明的目的在于提供一种能够实现可编程逻辑控制器程序自动转换 为普通Petri网的方法,以供计算机来完成PLC程序仿真和验证工作,降 低程序开发成本,保证程序的正确性和可靠性。
本发明一种将可编程逻辑控制器程序转换为普通Petri网的方法,具 体包括以下步骤:
步骤1、将PLC梯形图中左母线、右母线和包括触点、开关、辅助继电 器或线圈的开关量模拟为结点,并且左、右母线和开关量与结点一一对应, 得到结点集合V={vl,vr,v1,v2,L,vm},其中vl表示左母线,vr表示右母线,m表示 开关量的个数;将左母线、右母线和开关量之间的导线模拟为有向边,得 到有向边集合E={e1,e2,L,en},其中任意e=(vx,vy),vx对应靠近左母线的母线或 开关,vy对应靠近右母线的母线或开关,n是有向边的个数,从而获得PLC 梯形图的有向图模型G=<V,E>;
步骤2、计算Petri网的库所集
在PLC有向图中,将除母线对应的结点之外的全部结点v1,v2,L,vm模拟为 2m个库所,其中每个结点vi(1≤i≤m)对应真库所pion和假库所pioff,所得库 所组成Petri网的库所集
步骤3、设定Petri网的初始标识m0:
显然,m0(pion)+m0(pioff)=1;
步骤4、在PLC有向图中,定义与右母线结点相邻的赋值结点集合,赋 值结点集合Vo={v∈V/(v,vr)∈E},定义与左母线相邻的起始结点集合,起始结 点集合Vb={v∈V/(vl,v)∈E};
步骤5、在PLC有向图中,对于任意一个赋值结点vox,令∏(vox)={π1,π2,L,πk} 表示从起始结点到达vox的全部基本有向路径集合,其中∏(vox)中的任意一条 路径满足下列条件:
(1)它是一个结点序列,其中任意两个相邻结点之间存在一个从前者 指向后者的有向边;
(2)其中的每个结点仅能出现一次;
(3)它的第一个结点是一个起始结点,最后一个结点是vox;
步骤6、对于每一个赋值结点vox∈Vo,进行下列运算来获得Petri网的 变迁集合T和有向弧集合F:
(1)令pon和poff分别对应vox的真库所和假库所;
(2)将∏(vox)中k条路径的第i条路径πi模拟为一个变迁tion,并且完成下 列操作:设路径中非末尾结点的个数为v,那么在结点j(1≤j≤v)对应状态的 库所pij和ti之间添加一个双向弧;添加一个从tion指向pon的有向弧;添加一个 从poff指向tion的有向弧;即
步骤7、定义∏(vox)的割集,它满足下列条件:
(1)它是一个结点集合;
(2)每个结点都包含在∏(vox)中的某路径内;
(3)每个结点都不是vox;
(4)如果删除该集合中的结点,那么将不存在从左母线结点vl到达vox的 路径,如果∏(vox)的一个割集不包含任何其它割集,则称其为最小割集,计 算∏(vox)的最小割集的集合,令其为Ψ(vox);
步骤8、、将Ψ(vox)中c个割集的第m个割集ψm模拟为一个变迁tmoff,并完 成下列操作:设路径中非末尾结点的个数为v′,那么在结点n(1≤n≤v′)对应状 态的库所pmn和tmoff之间添加一个双向弧;添加一个从pon指向tmoff的有向弧; 添加一个从tmoff指向poff的有向弧,即
步骤9、对于每个输入开关量对应的结点vi(表示集合vo内元素个数),添加连接迁tx和ty,且tx的输入和输 出分别为该结点的真库所和假库所,而ty的输入和输出分别为该结点的假库 所和真库所,即
步骤10、输出一个普通Petri网N:=(P,T,F)和初始标识m0。
采用上述技术方案后,本发明能实现PLC梯形图程序到普通Petri网 模型的自动转换,由于普通Petri网激发条件简洁,逻辑思维方式简单, 更直观易懂,而且所得Petri网模型能够完全模拟PLC控制系统的动态行 为,以完成PLC程序仿真和验证工作,便于对PLC程序进行分析、纠错, 能使PLC程序逻辑更为严谨,降低了PLC程序的开发成本,能保证PLC程序 的正确性和可靠性。
附图说明
图1为本发明的工作流程示意图;
图2为本发明实施例一之风扇启动/停止控制电路图;
图3为本发明实施例一之用PLC实现控制功能的电路图;
图4为本发明实施例一之PLC梯形图程序示意图;
图5为本发明实施例一之PLC梯形图的有向图模型示意图;
图6为本发明实施例一之图4PLC梯形图程序对应的Petri网结构图;
图7为本发明实施例二之电机正反转控制电路图;
图8为本发明实施例二之用PLC实现控制功能的电路图;
图9为本发明实施例二之PLC梯形图程序示意图;
图10为本发明实施例二之PLC梯形图的有向图模型示意图;
图11为本发明实施例二之图9PLC梯形图程序对应的Petri网结构图。
以下结合附图和具体实施例对本发明作进一步详述。
具体实施方式
如图1所示,本发明一种将可编程逻辑控制器程序转换为普通Petri 网的方法,具体包括以下步骤:
步骤1、将PLC梯形图中左母线、右母线和包括触点、开关、辅助继电 器和线圈的开关量模拟为结点,并且左、右母线和开关量与结点一一对应, 得到结点集合V={vl,vr,r1,v2,L,vm},其中vl表示左母线,vr表示右母线,m表示 开关量的个数;将左母线、右母线和开关量之间的导线模拟为有向边,得 到有向边集合E={e1,e2,L,en},其中任意e=(vx,vy),vx对应靠近左母线的母线或 开关,vy对应靠近右母线的母线或开关,n是有向边的个数,从而获得PLC 梯形图的有向图模型G=<V,E>;
步骤2、计算Petri网的库所集
在PLC有向图中,将除母线对应的结点之外的全部结点v1,v2,L,vm模拟为 2m个库所,其中每个结点vi(1≤i≤m)对应两个库所pion和pioff,它们分别称 为vi对应的真库所和假库所,所得库所组成Petri网的库所集
步骤3、设定Petri网的初始标识m0:
显然, m0(pion)+m0(pioff)=1;
步骤4、在PLC有向图中,定义与右母线结点相邻的赋值结点集合,赋 值结点集合Vo={v∈V/(v,vr)∈E},定义与左母线相邻的起始结点集合,起始结 点集合Vb={v∈V/(vl,v)∈E};
步骤5、在PLC有向图中,对于任意一个赋值结点vox,令∏(vox)={π1,π2,L,πk} 表示从起始结点到达vox的全部基本有向路径集合,其中∏(vox)中的任意一条 路径满足下列条件:
(1)它是一个结点序列,其中任意两个相邻结点之间存在一个从前者 指向后者的有向边;
(2)其中的每个结点仅能出现一次;
(3)它的第一个结点是一个起始结点,最后一个结点是vox;
步骤6、对于每一个赋值结点vox∈Vo,进行下列运算来获得Petri网的 变迁集合T和有向弧集合F:
(1)令pon和poff分别对应vox的真库所和假库所;
(2)将∏(vox)中k条路径的第i条路径πi模拟为一个变迁tion,并且完成下 列操作:设路径中非末尾结点的个数为v,那么在结点j(1≤j≤v)对应状态的 库所pij和ti之间添加一个双向弧;添加一个从tion指向pon的有向弧;添加一个 从poff指向tion的有向弧;即
步骤7、定义∏(vox)的割集,它满足下列条件:
(1)它是一个结点集合;
(2)每个结点都包含在∏(vox)中的某路径内;
(3)每个结点都不是vox;
(4)如果删除该集合中的结点,那么将不存在从左母线结点vl到达vox的 路径,如果∏(vox)的一个割集不包含任何其它割集,则称其为最小割集,计 算∏(vox)的最小割集的集合,令其为Ψ(vox);
步骤8、将Ψ(vox)中c个割集的第m个割集ψm模拟为一个变迁tmoff,并完 成下列操作:设路径中非末尾结点的个数为v′,那么在结点n(1≤n≤v′)对应状 态的库所pmn和tmoff之间添加一个双向弧;添加一个从pon指向tmoff的有向弧; 添加一个从tmoff指向poff的有向弧,即
步骤9、对于每个输入开关量对应的结点vi(表示集合vo内元素个数),添加连接迁tix和tiy,且tix的输入和输 出分别为该结点的真库所和假库所,而tiy的输入和输出分别为该结点的假库 所和真库所,即
步骤10、输出一个普通Petri网N:=(P,T,F)和初始标识m0。
以实施例一“控制风扇启动/停止的自锁电路”来详述本发明。
如图2所示,PB1为启动按钮,PB2为停止按钮,KM为继电器线圈,用 于表示风扇的工作状态;图3是用PLC控制的外部接线电路图,PLC的输入 端I0.0接PB1、I0.1接PB2,输出端Q0.0接继电器线圈KM,从图4的PLC 梯形图程序可知,按下启动按钮PB1,I0.0接通,Q0.0通电,电扇运行, 自锁电路可以使电扇保持运转而不用一直按着启动按钮,按下停止按钮PB2 锁定输出Q0.0就被断电,电扇停止运行。
步骤1、根据图4所示PLC梯形图程序,转换有向图模型G=<V,E>,如图5 所示,结点集合V={vl,vr,v1,v2,v3},有向边集合E={e1,e2,e3,e4,e5,e6},其中, e1=(vl,v1),e2=(v1,v2),e3=(v2,v3),e4=(vl,v3),e5=(v3,v2),e6=(v3,vr);
步骤2、在图5的PLC有向图中,将除左右母线对应的结点之外的全部结 点v1,v2,v3模拟为6个库所,其中每个结点vi(1≤i≤3)对应两个库所pion和pioff, 它们分别称为vi对应的真库所和假库所,那么所得库所组成Petri网的库所 集
步骤3、设定Petri网的初始标识:
m0(p1on)=0,m0(p1off)=1,m0(p2on)=1,m0(p2off)=0,m0(p3on)=0,m0(p3off)=1;
步骤4、在图5的PLC有向图中,定义起始结点Vb={v1,v3},赋值结点Vo={v3};
步骤5、在图5的PLC有向图中,对于赋值结点v3的基本有向路径集合 ∏(v3)={π1,π2},其中,π1={v1,v2,v3},π2={v3,v2};
步骤6、对于赋值结点v3,添加Petri网的变迁和有向弧:
(1)p3on和p3off分别对应v3的真库所和假库所;
(2)将基本有向路径π1模拟为变迁t1,即T=TU{t1},在t1和v1、v2的真库 所之间添加双向弧,即F=FU{(p1on,t1),(t1,p1on),(p2on,t1),(t1,p2on)},再添加赋值结点的 真假库所与t1之间的有向弧,即F=FU{(p3off,t1),(t1,p3on)};将基本有向路径π2模拟为 变迁t2,即T=TU{t2},在t2和v2的真库所之间添加双向弧,即 F=FU{(p2on,t2),(t2,p2on},再添加赋值结点的真假库所与t2之间的有向弧,即 F=FU{(p3off,t2),(t2,p3on)};
步骤7、在图5的PLC有向图中,定义赋值结点v3的割集ψ1={v2};
步骤8、将割集ψ1模拟为变迁t3,即T=TU{t3},在t3和v2的假库所之间添 加双向弧F=FU{(p2off,t3),(t3,p2off)},再添加赋值结点的真假库所与t3之间的有向弧 F=FU{(p3on,t3),(t3,p3off)};
步骤9、对于输入开关量v1、v2对应的结点添加连接变迁,对于v1添加连 接变迁t4和t5,且·t4={p1off},t4·={p1on},·t5={p1on},t5·={p1off},即 F=FU{(p1off,t4),(t4,p1on),(p1on,t5),(t5,p1off)}对于v2添加连接变迁t6和t7,且 ·t6={p2off},t6·={p2on},·t7={p2on},t7·={p2off},即F=FU{(p2off,t6),(t6,p2on),(p2on,t7),(t7,p2off)},完成 转换;
步骤10、输出一个普通Petri网N:=(P,T,F)和初始标识m0(见图6)。
以实施例二“电机正反转电路”来详述本发明。
如图7所示,SB1、SB2为手动开关,KM1、KM2为继电器线圈,分别表 示电机正反转工作状态。图8是用PLC控制的外部接线电路图,一个PLC 芯片的输入端I0.0接SB1,输出端Q0.0接继电器线圈KM1,另一个PLC芯 片的输入端I0.1接SB2,输出端Q0.1接继电器线圈KM2。从图9的PLC梯 形图程序可知,该程序说明了一种互锁程序输出的简单方法。当按下手动 开关SB1,I0.0触点闭合,继电器KM1通电,电机正转;当按下手动开关 SB2,I0.1触点闭合,继电器KM2通电,电机正转。当正转(反转)时,按 下反转(正转)按钮,不能驱动电机反转(正转)。
步骤1、根据图9所示PLC梯形图程序,转换有向图模型G=<V,E>,结点集 合V={vl,vr,v1,v2,v3,v4},有向边集合E={e1,e2,e3,e4,e5,e6,e7,e8},其中,e1=(vl,v1), e3=(v4,v3),e4=(v3,vr),e5=(vl,v2),e6=(v2,v3),e7=(v3,v4),e8=(v4,vr),见图10;
步骤2、在图10的PLC有向图中,将除母线对应的结点之外的全部结点 v1,v2,v3,v4模拟为8个库所,其中每个结点vi(1≤i≤4)对应两个库所pion和pioff, 它们分别称为vi对应的真库所和假库所,那么所得库所组成Petri网的库所 集
步骤3、设定Petri网的初始标识:
m0(p1on)=0,m0(p1off)=1,m0(p2on)=0,m0(p2off)=1,
m0(p2off)=1,m0(p3on)=0,m0(p3off)=1,m0(p4on)=0,m0(p4off)=1;
步骤4、在图10的PLC有向图中,定义起始结点Vb={v1,v2},赋值结点 Vo={v3,v4};
步骤5、在图10的PLC有向图中,对于赋值结点v3的基本有向路径集合 ∏(v3)={π1},其中,π1={v1,v4,v3};对于赋值结点v4的基本有向路径集合∏(v4)={π2}, 其中,π2={v2,v3,v4};
步骤6.、对于赋值结点v3、v4添加Petri网的变迁和有向弧:
(1)p3on和p3off分别对应v3的真库所和假库所,p4on和p4off分别对应v4的 真库所和假库所;
(2)将基本有向路径π1模拟为变迁t1,即T=TU{t1},分别在t1和v1的真库 所、t1和v4的假库所之间添加双向弧,即F=FU{(p1on,t1),(t1,p1on),(p4off,t1),(t1,p4off)}再添 加赋值结点v3的真假库所与t1之间的有向弧,F=FU{(p3off,t1),(t1,p3on)};将基本有 向路径π2模拟为变迁t2,即T=TU{t2}分别在t2和v2的真库所、t2和v3的假库所 之间添加双向弧F=FU{(p2on,t2),(t2,p2on),(p3off,t2),(t2,p3off)},再添加赋值结点v4的真假 库所与t2之间的有向弧F=FU{(p4off,t2),(t2,p4on)},见图11;
步骤7、在图10的PLC有向图中,定义赋值结点v3的割集ψ1={v1},ψ2={v4}; 赋值结点v4的割集ψ3={v2},ψ4={v3}。
步骤8、将割集ψ1模拟为变迁t3,即T=TU{t3},在t3和v1的假库所之间添 加双向弧,即F=FU{(p1off,t3),(t3,p1off)},再添加赋值结点v3的真假库所与t3之间的 有向弧,即F=FU{(p3on,t3),(t3,p3off)};将割集ψ2模拟为变迁t4,即T=TU{t4},在t4和 v4的真库所之间添加双向弧,即F=FU{(p4on,t4),(t4,p4on)},再添加赋值结点v3的真 假库所与t4之间的有向弧,即F=FU{(p3on,t4),(t4,p3off)},将割集ψ3模拟为变迁t5, 即T=TU{t5},在t5和v2的假库所之间添加双向弧,即F=FU{(p2off,t5),(t5,p2off)},再 添加赋值结点v4的真假库所与t5之间的有向弧,即F=FU{(p4on,t5),(t5,p4off)};将割 集ψ4模拟为变迁t6,即T=TU{t6},在t6和v3的真库所之间添加双向弧 F=FU{(p3on,t6),(t6,p3on)},再添加赋值结点v4的真假库所与t6之间的有向弧,即 F=FU{(p4on,t6),(t6,p4off)},见图11;
步骤9、对于输入开关量v1、v2对应的结点添加连接变迁,对于v1添加连 接变迁t7和t8,且·t7={p1off},t7·={p1on},·t8={p1on},t8·={p1off},即 F=FU{(p1off,t7),(t7,p1on),(p1on,t8),(t8,p1off)};对于v2添加连接变迁t9和t10,且 ·t9={p2off},t9·={p2on},t10={p2on},t10·={p2off}即F=FU{(p2off,t9),(t9,p2on),(p2on,t10),(t10,p2off)}完成 转换;
步骤10、输出一个普通Petri网N:=(P,T,F)和初始标识m0(见图11)。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作 任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修 改、等同变化与修饰,均仍属于本发明技术方案的范围内。
机译: 用于将可编程逻辑控制器硬件配置和相应控制程序转换为在第一可编程逻辑控制器上使用以在第二可编程逻辑控制器上使用的方法
机译: 集成可编程逻辑装置的多个,将可编程逻辑装置中的可编程逻辑块的多个与集成电路可编程逻辑装置的可编程逻辑块相互连接的方法
机译: 在第二个可编程逻辑控制装置上使用的第一个可编程逻辑控制装置上使用的可编程逻辑控制装置的硬件配置和相应的控制程序转换方法