延迟与自定义实体实体存储块
这个例子展示了如何使用离散事件系统对象™方法来创建一个自定义实体存储块具有一个输入端口,一个输出端口和一个存储元素。离散事件系统对象的实例化matlab.DiscreteEventSystem
类,它允许您使用这个类提供的实现和服务方法。然后,您使用MATLAB离散事件系统块集成系统对象SimEvents®模型。
自定义MATLAB离散事件系统阻止接受一个实体其输入端口,并将其转发给其输出端口和指定的延迟。可视化的图块使用离散事件系统框架。
打开模型和观察的行为定义块,明白了CustomEntityStorageBlockExample
。
创建离散事件系统对象
创建一个新的脚本和继承
matlab.DiscreteEventSystem
类。classdefCustomEntityStorageBlock < matlab.DiscreteEventSystem
添加一个自定义的描述块。
%一个自定义实体存储块和一个输入,一个输出,一个存储。
声明两个nontunable参数
能力
和延迟
代表存储容量和存储实体起飞延迟。% Nontunable属性属性(Nontunable)%的能力能力= 1;%的延迟延迟= 4;结束
参数捕获块的属性。
可以在运行时调整可调参数。
Non-tunable参数在运行时不能调整。
指定这些方法和设置访问受保护。
方法(访问=保护)%指定数量的输入端口。函数num = getNumInputsImpl (~) num = 1;结束%指定输出端口的数量。函数num = getNumOutputsImpl (~) num = 1;结束%指定一个新的实体类型的车。函数entityTypes = getEntityTypesImpl (obj) entityTypes = obj.entityType (“汽车”);结束%指定汽车作为实体类型中使用%的输入和输出端口。函数[inputTypes, outputTypes] = getEntityPortsImpl (obj) inputTypes = {“汽车”};outputTypes = {“汽车”};结束%指定存储类型、容量和连接%的输入和输出端口。函数[storageSpecs, I, O] = getEntityStorageImpl (obj) storageSpecs = obj.queueFIFO (“汽车”,obj.Capacity);%我表示实体存储索引1的第一个元素%连接到输入1。I = 1;% 1 O表示实体的第一个元素存储索引%连接到输出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.Delay
。您可以使用这种方法的输入参数来创建自定义行为。这个论点
obj
是离散事件系统对象继承的方法。这个论点存储
的索引存储元素实体进入。这个论点实体
是实体进入存储和它有两个字段,entity.sys
和entity.data
。这个论点源
是实体的源位置,进入存储。请注意
你不能操纵实体数据在一个退出动作。
名字你的离散事件系统对象
CustomEntityStorageBlock
并将其保存为CustomEntityStorageBlock.m
。自定义块代表一个简化的加油站,可以一次一辆汽车。一辆车到达加油站,服务4分钟前离开车站。
实现自定义实体存储块
创建一个模型使用一个实体发电机块,MATLAB离散事件系统块,和一个实体终结者块。
打开MATLAB离散事件系统块,并设置离散事件系统对象名称来
CustomEntityStorageBlock
。双击MATLAB离散事件系统观察能力和延迟。
输出数量的实体来了,统计的实体终结者块并将其连接到一个范围
增加仿真时间
20.
和运行模拟。观察实体到达实体终结者块的延迟4
。
另请参阅
matlab.DiscreteEventSystem
|条目
|matlab.System
|getEntityStorageImpl
|getEntityPortsImpl
|getEntityTypesImpl