主要内容

使用事件动作管理实体

这个例子展示了如何在一个简单的队列系统中控制实体生成速率和写事件操作来更改实体属性。在离散事件模拟中,一个事件是对可能改变状态变量、输出或其他事件发生的瞬时事件的观察。SimEvents®允许您在事件发生时创建自定义操作。这些动作叫做事件动作.事件可以有相应的操作。您可以使用MATLAB编写事件操作来更改实体属性®代码或仿真软件®功能。

从一个简单的排队系统开始

这是一个简单的队列系统,包含实体生成器、实体队列、实体服务器和实体终止器块。在本例中,一个实体表示到达加油站的卡车的一个油箱。实体的属性表示当前油箱中的气位。事件动作表示油箱内气体液位的变化。储气罐是随机生成的,排成一队,用一个泵来维护,泵在一秒钟内输送恒定数量的气体。油罐带着新的总汽油量离开加油站。

修改模型

  1. 对象生成的整个模型或实体路径实体发电机实体队列,实体服务器块并单击右键进行选择日志选择信号.仿真数据检查器用于可视化模型中储罐的流量及其气位。有关更多信息,请参见检查模拟数据

  2. 重命名实体发电机块作为坦克发电机,实体队列块作为等待队列,则实体服务器块作为泵,和实体终结者块退出。

    为这个特定的应用程序重命名这些块

  3. 将源自“Tank Generator”块的路径重命名为“Tank to Queue”,“Waiting Queue”块为“Tank to Pump”,“Pump”块为“Tank to Exit”。

配置和模拟模型

  1. 双击Tank Generator,并选择实体类型选项卡。改变实体类型名称坦克,属性名称CurrentGasLevel

    实体属性CurrentGasLevel表示每个罐中现有的气体量。

  2. 模拟模型。打开仿真数据检查.观察油箱以相同的速度接近等待队列、泵和出口。

    油罐带着最初的汽油量离开加油站1这是属性初始值

    对于到达队列的每个实体,显示CurrentGasLevel值为1的Simulink数据检查器

    Simulink数据检查器,显示每个到达泵的实体的CurrentGasLevel值为1

    Simulink数据检查器显示,对于到达出口的每个实体,CurrentGasLevel值为1

  3. 打开坦克发电机块参数对话框。在实体的一代选项卡,设置时间源Matlab的行动.遵守默认的MATLAB代码。

    dt =兰德(1,1);

    代码随机化了实体生成间时间参数dt表示随机坦克到达。

  4. 模拟更新后的模型。在仿真数据检查,观察油罐随机到达,初始气体量相同1

    显示实体是随机生成的Simulink数据检查器

    观察到储罐是随机产生的,但它们以一个被调节的固定速率接近泵,因为泵的使用时间是1

    显示实体离开队列的Simulink数据检查器被调节为恒定值1

  5. 打开Tank Generator方块对话框。在事件动作选项卡,产生行动字段,输入代码。

    实体。CurrentGasLevel =兰迪([1,4]);

    油罐到达加油站的汽油量是随机的,从14

  6. 模拟更新后的模型。在仿真数据检查时,观察油罐到达时的气体量是随机的。

    Simulink数据检查器,显示实体生成与随机初始气体值

  7. 对于“泵块”,需要设置以下参数:

    1. 事件动作选项卡上,选择服务完成

    2. 服务完成行动字段,输入代码。

      实体。CurrentGasLevel =实体。CurrentGasLevel + 3;

      每箱装3单位气体1S持续时间,然后它离开泵。

    观察到,Tank Generator和Pump块更新了事件动作图标{…},表示这些块定义了一个事件动作。

    在Tank Generator和Pump模块上使用事件操作图标建模

  8. 模拟更新后的模型。在仿真数据检查,观察每个油罐离开加油站时,额外有3单位的汽油。

    Simulink数据检查器显示实体离开泵与添加的气体

排队系统中实体管理的改进模型

这是在配置简单排队系统后修改的模型。

另请参阅

|||

相关的话题

Baidu
map