使用自定义实体存储块延迟实体
这个例子展示了如何使用离散事件系统对象™方法来创建具有一个输入端口、一个输出端口和一个存储元素的自定义实体存储块。对象的实例化matlab。DiscreteEventSystem
类,它允许您使用该类提供的实现和服务方法。然后,使用MATLAB离散事件系统块将System对象集成到SimEvents中®模型。
自定义MATLAB离散事件系统块从它的输入端口接收一个实体,并以指定的延迟将其转发到它的输出端口。该图使用离散事件系统框架可视化块。
要打开模型并观察自定义块的行为,请参见CustomEntityStorageBlockExample
.
创建离散事件系统对象
创建一个新脚本并继承
matlab。DiscreteEventSystem
类。classdefCustomEntityStorageBlock < matlab。DiscreteEventSystem
向块中添加自定义描述。
具有一个输入、一个输出和一个存储的自定义实体存储块。
声明两个不可调参数
能力
而且延迟
表示存储容量和实体从存储的离开延迟。% Nontunable属性属性(Nontunable)%的能力能力= 1;%的延迟延迟= 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等于输入端口的数量。在这个例子中,
n
是1
因为只声明了一个输入端口。的我th元素指示实体存储索引我th输入端口连接到。
本例中为输入端口
1
连接到存储1
.如果输入端口是信号端口,则对应的元素为
0
.
类似地,返回值
O
用于定义存储和输出端口之间的连接。指定一个
eventForward
事件来转发类型的实体车
当输出进入存储时。函数(实体、事件)= CarEntry (obj、存储实体,源)指定实体进入存储时的事件操作。事件= obj.eventForward (“输出”1、obj.Delay);结束
一个
车
存储的条目调用事件操作和事件obj.eventForward
转发车
到带有索引的输出1
指定的延迟obj。延迟
.您可以使用此方法的输入参数来创建自定义行为。这个论点
obj
是方法继承的离散事件系统对象。这个论点存储
实体输入的存储元素的索引。这个论点实体
是进入存储的实体,它有两个字段,entity.sys
而且entity.data
.这个论点源
是进入存储的实体的源位置。请注意
不能在退出操作中操作实体数据。
命名您的离散事件系统对象
CustomEntityStorageBlock
保存为CustomEntityStorageBlock.m
.自定义块表示一个简化的加油站,一次可以服务一辆车。汽车到达加油站,经过4分钟的服务后才离开加油站。
实现自定义实体存储块
创建一个模型实体发电机块,MATLAB离散事件系统块,和一个实体终结者块。
打开MATLAB离散事件系统块,并设置Discrete-event系统对象名称来
CustomEntityStorageBlock
.双击MATLAB离散事件系统块观察其容量和延时。
输出到达的实体数量,a统计的实体终结者阻塞并连接到一个作用域
将模拟时间增加到
20.
然后运行模拟。观察到达的实体实体终结者延迟为的阻塞4
.
另请参阅
matlab。DiscreteEventSystem
|条目
|matlab。系统
|getEntityStorageImpl
|getEntityPortsImpl
|getEntityTypesImpl