主要内容

创建自定义资源获取块

此示例演示如何使用资源管理方法创建自定义实体存储块,其中实体从指定的存储块获取资源资源池块。

假设您管理着一家生产两种不同材料零件的工厂1和材料2,以完成订单。零件生产出来后,要对其进行质量评估以保证质量。

质量控制的两种测试方法是:

  • 测试1用于用材料生产的零件1

  • 测试2用于用材料生产的零件2

在生产阶段之后,部件根据其材料进行标记,以应用正确的测试。

方法创建一个离散事件系统对象™以生成自定义行为matlab。DiscreteEventSystem用于资源管理的类方法。

创建离散事件系统对象

生成一个具有一个输入、一个输出和一个存储元素的自定义实体存储块。

该块接受类型的实体部分以其储存能力1.实体有一个属性测试标明生产零件所用的材料。根据属性的值,实体从指定的资源池块,并离开要测试的块。

参见生成获取资源的自定义块的代码

自定义块的行为

  1. 定义Test1而且Test2输入要通过实体类型获取的资源部分

    函数resNames = getResourceNamesImpl (obj)定义要获取的资源的名称。resNames = obj.resourceType (“部分”,{“Test1”,“Test2”});结束
  2. 实体进入存储。如果它的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调用实体的转发。

实现自定义块

  1. 保存.m文件CustomBlockAcquireResources.将System对象链接到SimEvents®通过使用MATLAB离散事件系统块。有关链接的更多信息,请参见使用MATLAB离散事件系统块创建自定义块

  2. 方法创建SimEvents模型MATLAB离散事件系统块,一个实体发电机块和一个实体终结者块,两个资源池块。按图中所示连接这些块。

    标签实体发电机块作为部件生成器和实体终结者块,离开测试

  3. 在部件生成器中:

    1. 实体的一代选项卡,设置在模拟开始时生成实体

    2. 实体类型选项卡,设置实体类型名称作为部分而且属性名称测试

    3. 事件动作选项卡,生成的行动领域输入:

      实体。测试= randi([1 2]);

      零件的生成与代间时间有关1和他们的测试属性值是12表示材料类型。

  4. 资源池布洛克:

    1. 设置资源名称Test1可重用在释放参数

    2. 统计数据选项卡中,输出量,效果统计并将其连接到一个作用域。

  5. 资源Pool1布洛克:

    1. 设置资源名称Test2可重用在释放参数

    2. 统计数据选项卡中,输出量,效果统计并将其连接到一个作用域。

  6. 从部件生成器右键单击实体路径到MATLAB离散事件系统块,并选择日志选择信号

  7. 模拟模型。

    • 观察测试自定义块的传入实体的属性值。三个实体需要测试1,七个实体需要测试2。

    • 观察三个类型的资源Test1被实体收购。

    • 观察7种类型的资源Test2被实体收购。

另请参阅

|||||||

相关的话题

Baidu
map