基于进程网模型的仿真技术研究

2015-11-16 06:25杨颜公
中国新技术新产品 2015年13期
关键词:状态图库所仿真技术

郭 峰 杨颜公 闫 琦 乔 磊

(北方工业大学,北京 100144)

Petri网是一个分布式系统,目前已在制造系统、通信网络、数字电路综合与验证等领域得到了广泛应用。但Petri网也有很多缺点。把Petri网与进程代数相结合的研究领域引起很多研究人员的兴趣,文献[6]提出了进程表达式的一种概念,文献[7]提出了用Petri网组件作为代数表达式的构造模型,其组件对外只提供接口,分别为TopPlace与BottomPlace。复杂的Petri网可以通过各种操作符组合而成,并给出了其操作语义,此进程网具有一般Petri网的运行规则,将这种Petri网模型称为进程网(Process Net,简称为PrN)文献[7]给出了实现其建模工具PrnTools的具体方法,但此软件目前仅局限于画图建模阶段,没有分析的功能。虽然目前有很多实现Petri网仿真的软件,但缺乏针对PrN网的仿真理论与实现。本文在文献[7]的基础上对基于PrN的仿真技术进行研究并实现。

1 进程网的基本概念

本文假设读者对Petri网理论有所了解,这里只对Pr给出定义:

定义1 PrN是一个七元组:(S,T,F,A,L,I,O),其中(S,T,F)是一个Petri网,有两个特殊的库所:i和o。库所i是组件的起始库所,即·i=Ø,在程序中用TopPlace表示;库所o是组件的终止库所,即o·=Ø;在程序中用BottomPlace表示。A是所有动作的集合,由英文字母组成的字符串表示,IÎT,是变迁的集合,但只表示接受的消息,OÎT,同样是变迁集合,但只表示输出的消息,这两个合起来就是PrN的接口变迁集合。PrN定义了最基本组合并称其为基本PrN(BasicComponent),由两个库所一个变迁组合而成,复杂的网结构由基本进程网结构组合而成。

2 进程网仿真功能的设计与实现

文献[7]介绍了进程网建模工具PrnTools的实现。此建模工具基于Eclipse平台开发,包 括实现进程网的建模。本文是在其基础上做的仿真技术的研究。

图1 PrnTools组件类图

2.1 组合组件逻辑关系

接下来给出修改后的组件类图(图1):

其中,BaseComplex是所有组合组件实现的接口,BaseComplexSupport是所有组合组件的父类。绘制的进程网的过程本质上就是产生新的组合组件,BasicComponent是最基本的进程网模型,包含两个库所和一个变迁及对应的流关系。

其他组合组件由继承BaseSingle Support的类添加元素修改而来,而其中每一个包含的基本元素数量和逻辑又各不相同。为了实现仿真,就必须添加每个组件的内部逻辑,包括前、后集合的实现,Token的添加以及组件元素的添加与命名。

2.1.1 前后集合的实现

前集用来判断是否满足点火条件,以便为点火做铺垫,实现仿真。在每一个变迁(TransitionComponent)中加入两个List,分别记录此组件的前集和后集:

在绘制每一个基本组件的时候,实现库所(Place)和变迁(Transition Component)的内部逻辑关系;在组件实现组合方式的时候.记录每一个Place和Transition新产生的逻辑关系。另外点火的时候面向变迁,所以每一个组 件都需要一个自己的List记录变迁。

publicList transInComponent

2.1.2 组件中元素的添加与命名

库所和变迁的标记用来区分彼此,是在可达图生成时的必须条件。此工具Prntools 以构造内部逻辑来实现一个完整的Petri网。 在内部逻辑构造过程中,需要修改自身组件或者链接两个基本组件,不同的逻辑需要不同的构造方法。

为了记录组件中所有元素,在组件父类(BaseSingleSupport)中添加两个List,分别记录产出的所有的库所和变迁。这样才能在画图结束后知道此组件中存在多少个库所和变迁,也能将其在命名上分开。命名规则如下:

基本组件:由两个库所和一个变迁组合而成,上面的库所(Topplace)标记为p1,下面的库所(Bottomplace)标记为p2。变迁标记为t1。

组件组合:两个组件进行算子组合,组件内部标记变化:组件1的库所和变迁序号不变,组件2的库所序和变迁依次增加组件1的元素个数。

2.2 仿真技术实现

2.2.1 进程网仿真技术

进程网的仿真步骤是先建立系统模型,然后通过多次点火模拟系统运行,得到仿真运行方式和结果。使用仿真方法,用户可以观察此组件中出现的Token的变化过程。分析出系统所具有的特性,如:可达性、有界性、可覆盖性等,以便使我们得到系统的一些重要信息。

2.2.2 点火技术

为组件父类(BaseComplexSupport)增加点火函数Firing。增加点火按钮,在选择组件并点击按钮时调用点火函数。一次的点火规则如下:当一个变迁的所有前集中含有一个以上的Token,则此变迁可以发生点火:此变迁前集Token数量减一,此变迁后集Token数量加一。

具体方法如下:

(1)变迁选择与Token移动

选中要点火的组件,在点火按钮被点击时,判断组件是否可以点火。如果组件可以实行点火,遍历所有变迁,判断可以点火的变迁数量。如果此时只有一个变迁可以点火,则根据规则进行:

①根据初始数据对模型进行初始标记。②发生点火变迁前的所有库所令牌数-1,点火变迁后的所有库所令牌数+1。③仿真结束后,将仿真结果显示和存储。若遍历后有两个以上的变迁可以进行点火的情况下,会给出一个提示面版,让用户自己选择

(2)记录状态图组件

对于Petri网的仿真,其点火过程中的可达标识集是一个有限集,可以以此集合作为顶点,以库所状态与经历的变迁的关系构成一个有向图,这个图称为进程网的状态图。通过这个Petri网的状态图可以得到这个网系统状态的变化与状态变化时经历的变迁,从而得知网系统的有关性质。

在每次点火的过程中,记录下组件点火前后的状态,即Mi与Mj,发生点火的变迁Tx,以便生成状态图。

(3)重复点火

回到步骤1,直到用户停止操作或发生死锁

(4)点火结束

在数次点火仿真后,如果组件达到死锁状态,及不能再继续点火,工具会对用户进行提示。

2.3 点火技术的描述

图2 一次点火的流程图

可以发现,整个大仿真过程由一次次的点火完成,用户可以在任何地方停止操作,以下给出点火的程序流程图,如图2所示。

结语

本文所提出的技术有效地实现了进程网流模型的分析与仿真,实现了对于顺序、选择、循环及并发等所有组合模式的标识及仿真技术,并且清晰地反映出进程网仿真过程中经历的状态改变及行为特征。进一步的工作可以考虑利用进程网点火和状态图的思想,实现可达图的构造。

[1]Murata T.Petri nets: Properties,analysis and applications[J].Proceedings of IEEE,1989,77(04): 541-574.

[2]Gu Tianlong,Bahri P A.A survey of Petri-net applications in batch processes[J].Computers in Industry,2002,47(01): 99-111.

[3]Luo Jun-Zhou,Shen Jun,Gu Guan-Qun.From Petri nets toformal description techniques and protocol engineering[J].Journal of Software,2000,11(05): 606-615.

[4]Wolfgang Reisig.Petri Nets-An Introduction[J].New York: Springer-Verlag,1985.

[5]Wu Zhe-Hui.Process expression of bounded Petri net[J].Sciencein China(Series E),1996,39(01): 37-49.

[6]Guo Feng,Deng Mengmeng,Shi Wanlin,Process Net: A petri net model with the characteristics of process algebras,Journal of Chemical and Pharmaceutical Research,2013-9.

[7]郭峰,邓蒙蒙,杨颜公.进程网建模工具的设计与实现[J].北方工业大学学报,2014,3(01):22-26.

[8]袁崇义.Petri网原理[M].北京:电子工业出版社,2005.

猜你喜欢
状态图库所仿真技术
航线网络优化方法研究
基于FPGA 的有色Petri 网仿真系统设计*
AMESim仿真技术在汽车空调制冷系统中的应用
应用三维仿真技术模拟弹子锁异常开启
利用Petri网特征结构的故障诊断方法
一种递归π演算向Petri网的转换方法
基于模糊Petri网的数控机床主轴故障诊断*
PSCAD/EMTDC-MATLAB联合仿真技术在SVC控制系统仿真建模中的应用
基于VHDL的一个简单Mealy状态机