| 层次Petri网介绍 | 帮助文档 CPN Tools help |
| 相关概念的简要阐述 | 怎样 How-to |
创建大型的、复杂的Petri网是一个很麻烦的任务。但是类似于模块化编程思想,通过在CPN Tools工具内利用替代变迁的概念可以将CPN网络结构拆分为多个小块。一般概念上,具有替代变迁的网络是有多个层次的网络-你可以先创建一个有点简化的网络,以此来从广义上定义你正在建模的系统的全貌;然后利用高层网中的替代变迁,将其关联到更为详细的页面中去,从而你可以逐步地、越来越细化你的模型。
用变迁表征网结构中的某一整块是层次网中常用的一种方法,利用这种方法使得包含上述变迁网络从逻辑上得到简化。这样一种变迁就叫做替代变迁。
替代变迁根本上没有增加任何新的东西。利用替代变迁可以做的操作同样也可以利用融合库所 fusion places的方式来实现。但是类比于融合库所,替代变迁显得更方便、有用,它可以区分出建模上的可行性和整体不可行性上的不同。
我们假定有一个名为Reverse的替代变迁,它代表一个被用来保存一列整型数值的网络。图中的小蓝色标签,叫做子页标签
subpage tag,它表征替代变迁Reverse 。
围绕替代变迁周围的弧可以有,也可以没有标注。不管怎样,这些标注都没有语义上的意思。
包含有替代变迁的页面叫做父页,上图中的Top页面就是一个父页。
当CPN网使用替代变迁的时候,替代变迁所表达的逻辑必须得在某一位置得到实现。实现替代变迁逻辑的页面叫做子页,从逻辑的角度来看子页也可以被称呼为子网或者子模块。
下图中的Reverse页面就是一个子页,它与替代变迁Reverse关联。
每个替代变迁都是对应子页的父节点。
层次网结构中子页和父页之间的关系,在索引区网的总视图 overview中得以显现。子页的名称通常位于父页的下面,而且子页的名称比父页的名称稍有缩进。
如果在索引中没有看到子页,可以单击父页旁边的蓝色箭头来展开子页列表。
父页和子页的关联是通过两个页面上有特殊目的的融合集 fusion sets中的库所来实现的。这些特殊的融合集包含两种库所。其中子页中的库所叫做端口库所,而父页上的叫做槽库所。
将与替代变迁相邻的库所叫做槽库所,也即是在替代变迁和槽库所之间至少有一条弧相连。
下图所示页面中的Begin库所和End库所就是两个槽库所。
端口类型标签 port-type tag与子页中的每个端口库所相连。在Reverse页面中的Begin库所和End库所就是端口库所。
有三种端口类型标签:In标签、Out标签和I/O标签。
端口库所/槽库所的关联被用来定义子页是如何粘合到它的父节点中去的。每一个槽库所都必须关联一个对应子页的端口库所。而具有In标签的端口库所也必须得关联一个槽库所,而且这个槽库所还得是替代变迁的输入(不是输出)节点。类似地,有Out标签的端口库所也必须得关联一个槽库所,而且这个槽库所还得是替代变迁的输出(不是输入)节点;有I/O标签的端口库所所关联的槽库所则可以既是替代变迁的输入节点又可以是替代变迁的输出节点。
注意:端口库所周围的弧与端口类型标签没有对应关系。例如:假定有一个具有In标签的端口库所,可以有弧从子页中的变迁流向这个库所,也可以有弧从这个库所(作为输出节点)流向子页中的某个变迁。
如果想详细学习端口库所/槽库所的关联,可以参阅适用于端口类型标签的图形反馈 graphical feedback for port-type tags 。
父页槽库所中具有的标识在子页对应端口库所中也同样应该具有,反之亦然。
例如:父页面Top中Begin库所中的初始标识与子页面Reverse中Begin库所的初始标识相同。
替代变迁的最大作用在于子页面并不仅仅只是唯一一个替代变迁的值:子页面可以被重复使用,效果就如同于多个父页面上多个替代变迁的值。
如果子页面表示超过一个替代变迁的值,那么这就叫做子页面的多重实例。类似地,也存在子页面上库所和变迁地多重实例的现象。每个子页面的实例都是完全独立的,与同一子页面的其他实例的标识无关。
下图所示网络中子页面Reverse有两个实例,分别表示为Reverse(1)和Reverse(2)。可以注意到页面Reverse上库所Begin的两个实例的标识是不同的:它们具有与对应槽库所一样的初始标识。
如果想更多地了解如何发现与替代变迁相关的子页面实例,请参阅适用于子页面标签的图形反馈 graphical feedback for subpage tags 。