创建自定义资源获取块
此示例演示如何使用资源管理方法创建自定义实体存储块,其中实体从指定的存储块获取资源资源池块。
假设您管理着一家生产两种不同材料零件的工厂1
和材料2
,以完成订单。零件生产出来后,要对其进行质量评估以保证质量。
质量控制的两种测试方法是:
测试1用于用材料生产的零件
1
.测试2用于用材料生产的零件
2
在生产阶段之后,部件根据其材料进行标记,以应用正确的测试。
方法创建一个离散事件系统对象™以生成自定义行为matlab。DiscreteEventSystem
用于资源管理的类方法。
创建离散事件系统对象
生成一个具有一个输入、一个输出和一个存储元素的自定义实体存储块。
该块接受类型的实体部分
以其储存能力1
.实体有一个属性测试
标明生产零件所用的材料。根据属性的值,实体从指定的资源池块,并离开要测试的块。
自定义块的行为
定义
Test1
而且Test2
输入要通过实体类型获取的资源部分
.函数resNames = getResourceNamesImpl (obj)定义要获取的资源的名称。resNames = obj.resourceType (“部分”,{“Test1”,“Test2”});结束
实体进入存储。如果它的
entity.data.Test
值是1
,实体产生于Material1
.实体获得1
资源的资源池块的资源类型Test1
.类似地,如果其entity.data.Test
值是2
,该实体从资源池块的资源类型Test2
.方法函数[实体,事件]=条目(obj,存储,实体,源)在实体条目上,从指定的池中获取资源。如果entity.data.Test = = 1如果实体是由Material1生成的,它将获取类型为Test1的资源。resReq = obj.resourceSpecification (“Test1”1);其他的如果实体是由Material2生成的,它将获取类型为Test2的资源。resReq = obj.resourceSpecification (“Test2”1);结束从对应的池中获取资源。事件= obj.eventAcquireResource (resReq,“TestTag”);结束函数[entity,events] = resourceAcquired(obj, storage,...实体、资源标签)资源获取完成后,将实体转发到输出。事件= obj.eventForward (“输出”0.0、存储);结束结束
资源获取成功后,将显示
resourceAcquired
调用实体的转发。
实现自定义块
保存
.m
文件CustomBlockAcquireResources
.将System对象链接到SimEvents®通过使用MATLAB离散事件系统块。有关链接的更多信息,请参见使用MATLAB离散事件系统块创建自定义块.方法创建SimEvents模型MATLAB离散事件系统块,一个实体发电机块和一个实体终结者块,两个资源池块。按图中所示连接这些块。
标签实体发电机块作为部件生成器和实体终结者块,离开测试.
在部件生成器中:
在实体的一代选项卡,设置在模拟开始时生成实体来
从
.在实体类型选项卡,设置实体类型名称作为
部分
而且属性名称来测试
.在事件动作选项卡,生成的行动领域输入:
实体。测试= randi([1 2]);
零件的生成与代间时间有关
1
和他们的测试
属性值是1
或2
表示材料类型。
在资源池布洛克:
设置资源名称来
Test1
和可重用在释放参数从
.在统计数据选项卡中,输出量,效果统计并将其连接到一个作用域。
在资源Pool1布洛克:
设置资源名称来
Test2
和可重用在释放参数从
.在统计数据选项卡中,输出量,效果统计并将其连接到一个作用域。
从部件生成器右键单击实体路径到MATLAB离散事件系统块,并选择日志选择信号.
模拟模型。
观察
测试
自定义块的传入实体的属性值。三个实体需要测试1,七个实体需要测试2。观察三个类型的资源
Test1
被实体收购。观察7种类型的资源
Test2
被实体收购。
另请参阅
matlab。DiscreteEventSystem
|条目
|matlab。系统
|cancelAcquireResource
|getResourceNamesImpl
|resourceAcquired
|eventAcquireResource
|resourceSpecification