触发Simuli金宝appnk的组件与SimEvents离散事件

这个示例演示了如何使用Simulink函数块对实体进行时间戳金宝app,将实体属性传递给Simulink®组件,以及创建用于路由的通知事件。您可以使用Simulin金宝appk函数块获取实体属性,将它们传递给Simulink®组件进行处理,然后再将它们传递回您的SimEvents®模型。

这是通过使用实体发生器,实体队列,实体服务器,和实体终结者块构成一个简单的离散事件排队系统。要了解如何构建这个模型,请参阅创建一个离散事件模型

在本例中,我们使用这个简单的SimEvents®模型和Simulink函数块来演示如何:金宝app

  • 时间戳实体并测量实体的产生和服务完成之间的时间。您可以使用此工作流程来跟踪有多少时间是需要过程的实体在一个排队系统。

  • 提取实体属性,并在Simulink的组件中使用的属性值。金宝app您可以使用此工作流程实体属性传递给Simulink®的算法。金宝app

  • 从电子表格到SimEvents®模型导入数据,并指定实体产生的时间间隔。您可以使用此工作流程,从现有的数据集块和实体参数。

  • 提取实体属性,并通过他们与不同类型的另一个实体。

使用Simulink函数块的时间戳实体金宝app

该模型显示如何跟踪时间流过你的系统实体。甲S金宝appimulink的功能块用于时间戳实体产生和服务时间并且计算这两个过程之间的总持续时间。

要打开模型,使用此代码:

open_system ('TimeStampEntitiesUsing金宝appSimulinkFunctionModel');

在此模型中,实体代际间隔选在开放间隔的均匀分布生成(0,1)。实体有四个属性,所有属性的初始值为0

  • 数据代表实体携带的数据。

  • TimeStampGeneration存储实体产生的时间。

  • TimeStampServiceComplete实体店的服务完成时间。

  • TotalTime是一个实体的产生和服务之间的时间。

在Simuli金宝appnk函数块中,数字时钟块对实体生成时间进行时间戳。

当通过调用生成的实体,您可以时间戳时间标记()函数从实体发生器块Simulin金宝appk的功能。

方法在实体生成器块中调用该函数事件动作选项卡,生成场,使用此代码:

entity.TimeStampGeneration =时间标记();

代码调用时间标记()功能,并从数字时钟块到将值TimeStampGeneration生成实体时的属性。

同样的,时间戳服务完成并计算实体产生和服务之间的时间差,开实体服务器块,并在事件动作选项卡上,单击服务完成。输入验证码。

%通过调用邮票服务完成|时间标记()|%的功能。entity.TimeStampServiceComplete =时间标记();计算发电和服务之间的差额%完成时间。entity.TotalTime = entity.TimeStampServiceComplete  -  entity.TimeStampGeneration;%显示为所述时间差的实体属性。DISP(entity.TotalTime);

通过调用获得的服务完成时间时间标记(),则分配给entity.TimeStampServiceComplete属性。然后计算并分配实体的生成和服务完成之间的持续时间entity.TotalTime。该代码显示entity.TotalTime诊断查看器中每个实体的值。

模拟模型。在“诊断查看器”中,可以观察到entity.TotalTime对于价值10实体。实体产生和服务之间的持续时间增加,因为实体的实体队列块轮到他们的服务等。

增加模拟时间1000并观察entity.TotalTime收敛约26

通过TotalTime属性到Simulink的组件金宝app

假设你想通过考试entity.TotalTimeSimulink®组件的金宝app值。该模型展示了如何在实体到达实体终止符块时将属性值传递给Simulink函数块。金宝app

要打开这个模型中,使用此代码:

open_system (“GetEntityAttributes金宝appSimulinkFunctionModel”);

要实现此行为,请在事件动作选项卡,单击条目并调用getAttribute (entity.TotalTime)函数。

获取实体属性块entity.Totaltime作为输入参数并且使用增益块通过乘以它们以扩增其值2

模拟模型。观察范围块,显示了放大的属性值。

从电子表格导入数据以指定实体间生成时间

假设你想从电子表格到你的模拟合并数据。使用电子表格,您可以指定模型中的各种参数,如实体跨代的时候,实体属性,或服务时间。

此示例模型展示了如何将数据从电子表格导入SimEvents®模型,并使用数据指定实体间生成时间。

要打开这个模型中,使用此代码:

open_system ('ImportDataSimEventsModel');

在该模型中,一个从电子表格块是Simulink的功能块内部,并从取得的值金宝appinterGenerationTimes.xlsx电子表格。电子表格有五个值-1234,- 要用作实体代际倍。

要调用myDataSpreadsheet()方法中的实体生成器块中的相生的时间行动场,使用此代码:

DT = myDataSpreadsheet();

DT是指定实体的代际倍变量。该代码受让人DT通过调用Simulink的函数值金宝appmyDataSpreadsheet(),其从电子表格中获取的值。

模拟模型。观察到,当产生显示实体范围块和离开该块。实体生成之间的时间间隔是相同的从电子表格中的数据。

在不同的实体类型之间传递实体属性

在SimEvents,您可以创建具有不同的实体类型的模型,并通过使用Simulink的功能块实体之间的属性。金宝app

要打开这个模型中,使用此代码:

open_system ('AssignEntityAttribute金宝appSimulinkFunctionModel');

在模型中,两个实体Generator模块产生的实体。实体1生成实体的恒定值2并提供服务1仿真时间。服务完成后,实体到达标记为Assign Attribute 1的Simulink函数块。金宝app

在Assign属性1中,实体由内部队列大小相同的Receive块接收16。Receive块将实体数据转换为信号值。

类似地,实体2生成携带的值的数据实体2并提供服务仿真时间。服务完成后,实体到达Assign属性2。

实体数据传递到标新实体的另一个实体Generator模块。新的实体块生成携带两个属性的实体,数据1DATA2,其值由呼叫获取setAttribute1 ()setAttribute2(), 分别。

entity.data1 = setAttribute1();entity.data2 = setAttribute2();

仿真模型,并打开数据检查。观察这些值数据1DATA2新实体的值0直到仿真时间2。这是因为实体提供服务,有实体之间没有属性通。在时间2数据12,这是受传递的值setAttribute1 ()。在时间6DATA2开始从获取值setAttribute2()。此延迟是由于实体的服务时间不同造成的。

为路由创建通知事件

这个模型展示了如何使用Simulink函数块来创建一个事件,金宝app以便在实体的处理完成时通知路由块。

要打开这个模型中,使用此代码:

open_system (“NotifyEvent金宝appSimulinkFunctionCallModel”);

在模型中,实体生成器块生成表示设施中各部分的实体。然后实体由实体服务器块处理。如果一个部件通过了质量控制,实体输出开关块将部件发送到出厂。否则,零件将被送往进一步加工。

方法在实体服务器块中处理实体后创建通知事件事件动作选项卡,服务完成行动场,调用notifyEvent()函数。

在质量控制块,正弦波块被用于产生一个信号。甲圆块用于舍入信号值到最接近的整数小于或等于该值。从轮块的输出信号取的值1要么2。该信号由设置事件时间块转换为一个消息。

来自质量控制块的消息数据值指定当实体离开实体输出开关块时选择哪个输出端口。如果消息有价值1,输出端口1选择实体离开。如果消息有价值2、输出2选择实体离开。

模拟模型和观察范围块标记的零件行者。四个部分离开工厂。

观察发送到处理该范围块标记的部件,这表明六个部分被发送到进一步的处理。

也可以看看

||||||

相关话题