主要内容

使用自定义实体存储块延迟实体

这个例子展示了如何使用离散事件系统对象™方法来创建具有一个输入端口、一个输出端口和一个存储元素的自定义实体存储块。对象的实例化matlab。DiscreteEventSystem类,它允许您使用该类提供的实现和服务方法。然后,使用MATLAB离散事件系统块将System对象集成到SimEvents中®模型。

自定义MATLAB离散事件系统块从它的输入端口接收一个实体,并以指定的延迟将其转发到它的输出端口。该图使用离散事件系统框架可视化块。

要打开模型并观察自定义块的行为,请参见CustomEntityStorageBlockExample

创建离散事件系统对象

  1. 创建一个新脚本并继承matlab。DiscreteEventSystem类。

    classdefCustomEntityStorageBlock < matlab。DiscreteEventSystem
  2. 向块中添加自定义描述。

    具有一个输入、一个输出和一个存储的自定义实体存储块。
  3. 声明两个不可调参数能力而且延迟表示存储容量和实体从存储的离开延迟。

    % Nontunable属性属性(Nontunable)%的能力能力= 1;%的延迟延迟= 4;结束

    参数捕获块的属性。

    • 可调参数可以在运行时进行调优。

    • 不可调优的参数在运行时无法调优。

  4. 指定这些方法并将访问设置为protected。

    方法(Access = protected)%指定输入端口的数量。函数num = getNumInputsImpl(~) num = 1;结束%指定输出端口的数量。函数num = getNumOutputsImpl(~) num = 1;结束指定一个新的实体类型Car。函数entityTypes = getEntityTypesImpl(obj) entityTypes = obj. entitytype“汽车”);结束指定Car作为中使用的实体类型%输入和输出端口。函数[inputTypes,outputTypes] = getEntityPortsImpl(obj) inputTypes = {“汽车”};outputTypes = {“汽车”};结束指定存储类型、容量和连接%输入和输出端口。函数[storagesops, I, O] = getEntityStorageImpl(obj) storagesops = obj. queuefifo (“汽车”, obj.Capacity);I的第一个元素表示实体存储索引1,即%连接到输入1。I = 1;O的第一个元素表示实体存储索引1%连接到输出1。O = 1;结束结束

    只有一个仓库以先进先出(FIFO)的方式对汽车进行分类。的能力对象的参数定义服务器的容量。

    该方法getEntityStorageImpl ()还指定了端口和存储之间的连接,而且O

    • 返回值是元素的向量吗1,……n在它的长度n等于输入端口的数量。

      在这个例子中,n1因为只声明了一个输入端口。

    • th元素指示实体存储索引th输入端口连接到。

      本例中为输入端口1连接到存储1

    • 如果输入端口是信号端口,则对应的元素为0

    类似地,返回值O用于定义存储和输出端口之间的连接。

  5. 指定一个eventForward事件来转发类型的实体当输出进入存储时。

    函数(实体、事件)= CarEntry (obj、存储实体,源)指定实体进入存储时的事件操作。事件= obj.eventForward (“输出”1、obj.Delay);结束

    一个存储的条目调用事件操作和事件obj.eventForward转发到带有索引的输出1指定的延迟obj。延迟

    您可以使用此方法的输入参数来创建自定义行为。这个论点obj是方法继承的离散事件系统对象。这个论点存储实体输入的存储元素的索引。这个论点实体是进入存储的实体,它有两个字段,entity.sys而且entity.data.这个论点是进入存储的实体的源位置。

    请注意

    不能在退出操作中操作实体数据。

  6. 命名您的离散事件系统对象CustomEntityStorageBlock保存为CustomEntityStorageBlock.m

    自定义块表示一个简化的加油站,一次可以服务一辆车。汽车到达加油站,经过4分钟的服务后才离开加油站。

    请参见生成自定义实体存储块的代码

实现自定义实体存储块

  1. 创建一个模型实体发电机块,MATLAB离散事件系统块,和一个实体终结者块。

  2. 打开MATLAB离散事件系统块,并设置Discrete-event系统对象名称CustomEntityStorageBlock

  3. 双击MATLAB离散事件系统块观察其容量和延时。

  4. 输出到达的实体数量,a统计的实体终结者阻塞并连接到一个作用域

  5. 将模拟时间增加到20.然后运行模拟。观察到达的实体实体终结者延迟为的阻塞4

另请参阅

|||||

相关的话题

Baidu
map