这个例子展示了如何使用Simulink函数块来标记实体,将实万博1manbetx体属性传递给Simulink®组件,以及创建路由通知事件。您可以使用Simulin万博1manbetxk函数块获取实体属性,将它们传递给Simulink®组件进行处理,然后将它们传递回您的SimEvents®模型。
这是通过使用实体生成器,实体队列,实体服务器和实体终止器块构建的简单离散事件排队系统。要了解如何构建此模型,请参阅创建离散事件模型.
在这个例子中,我们使用简单的SimEvents®模型和Simulink函数块来演示如何:万博1manbetx
时间戳实体并测量实体生成和服务完成之间的时间。您可以使用此工作流程跟踪在排队系统中处理实体所需的时间。
提取实体属性并在Simulink组件中使用属性值。万博1manbetx您可以使用此工作流程将实体属性传递给Simulink®算法。万博1manbetx
将数据从电子表格导入Simevents®模型并指定实体生成间隔。您可以使用此工作流从现有数据设置块和实体参数。
提取实体属性并将其传递给具有不同类型的另一个实体。
此模型显示如何跟踪流经系统流过的实体的时间。Si万博1manbetxmulink功能块用于时间戳实体生成和服务时间,并计算这两个过程之间的总持续时间。
要打开模型,请使用此代码:
open_system ('TimeStampentitiesUsing万博1manbetxSimulink功能模拟机');
在该模型中,从开放间隔的均匀分布生成实体互动间隔(0,1)
.实体有四个属性,所有属性的初始值为0.
:
数据
表示实体携带的数据。
时间戳
存储实体生成时间。
TimeStampServiceComplete
存储实体服务完成时间。
TotalTime
是实体生成和服务之间的时间。
在Simuli万博1manbetxnk函数块中,数字时钟块记录实体生成时间。
您可以通过调用实体生成实体时的时间戳时间戳()
来自实体生成器块的Simulin万博1manbetxk函数中的函数。
在实体生成器块中调用函数事件动作选项卡,产生字段,使用此代码:
实体.TimestampGeneration =时间戳();
代码调用时间戳()
函数并将数字时钟块的值分配给时间戳
属性。
同样,到时间戳服务完成并计算实体生成和服务之间的时差,打开实体服务器块,并在事件动作选项卡上,单击服务完成.输入此代码。
通过致电|时间戳()|百分比服务完成%的功能。Entity.TimestampServiceComplete =时间戳();%计算生成和服务之间的差异%完成时间。Entity.Totaltime = Entity.TimestampServiceComplete - 实体.TimestampGeneration;%显示时间差的实体属性。DISP(ority.totaltime);
服务完成时间,通过调用时间戳()
,分配给Entity.TimestampServiceComplete.
属性。然后计算并分配实体生成到服务完成之间的持续时间Entity.Totaltime.
.代码显示Entity.Totaltime.
诊断查看器中每个实体的值。
模拟模型。在诊断查看器中,可以观察Entity.Totaltime.
价值观10.
实体。实体生成和服务之间的持续时间增加,因为实体在实体队列块中等待其转向服务。
增加模拟时间1000
并观察到这一点Entity.Totaltime.
收敛到大约26.
.
TotalTime
属性到Simulink组件万博1manbetx假设你想通过Entity.Totaltime.
值到Simulink®组万博1manbetx件。这个模型展示了当实体到达实体终止符块时,如何将属性值传递给Simulink函数块。万博1manbetx
要打开此模型,请使用此代码:
open_system (“GetEntityAttributes万博1manbetxSimulinkFunctionModel”);
控件中的实体终止符块可以实现此行为事件动作选项卡,单击入口并打电话给getAttribute (entity.TotalTime)
函数。
Get Entity Attributes块接受Entity.Totaltime.
作为输入参数,并使用增益块来通过将它们乘以乘以扩增其值2
.
模拟模型。观察显示放大属性值的范围块。
假设您希望将数据从电子表格中纳入模拟。使用电子表格,您可以在模型中指定各种参数,例如实体代数时间,实体属性或服务时间。
这个示例模型展示了如何将数据从电子表格导入SimEvents®模型,并使用数据指定实体代际时间。
要打开此模型,请使用此代码:
open_system ('ImportDatasimeventsModel');
在模型中,来自电子表格块的IS在Simulink功能块内,并从中获取来自的值万博1manbetxIntergenerationTimes.xlsx.
电子表格。电子表格有五个值-1
那2
那3.
那4.
,5.
- 用作实体互动时间。
打电话给mydataspreadsheet()
函数,在实体生成器块中,在相生的时间行动字段,使用此代码:
dt = mydataspreadsheet();
DT.
是指定实体的代际时间的变量。代码分配DT.
通过调用Simulink函数来值万博1manbetxmydataspreadsheet()
,从电子表格获取值。
模拟模型。遵守生成实体并离开块时显示的范围块。实体生成之间的间隔与来自电子表格的数据相同。
在SimEvents中,您可以创建具有不同实体类型的模型,并使用Simulink功能块通过实体之间的属性。万博1manbetx
要打开此模型,请使用此代码:
open_system ('endgententityattribut万博1manbetxesimulinkfunctionModel');
在该模型中,两个实体生成器块生成实体。实体1生成具有常数值的实体2
服务对象是1
仿真时间。服务完成后,实体到达标记为分配属性1的Simulink功能块。万博1manbetx
在Assign Attribute 1中,实体由一个内部队列大小的Receive块接收16.
.接收块将实体数据转换为信号值。
类似地,实体2生成携带值数据的实体2
服务对象是5.
仿真时间。服务完成后,实体到达Assign Attribute 2。
实体数据传递给标记为新实体的另一个实体生成器块。新实体块生成携带两个属性的实体,data1.
和data2.
,其值是通过呼叫获取的setAttribute1 ()
和setAttribute2()
, 分别。
entity.data1 = setAttribute1();entity.data2 = setAttribute2();
模拟模型并打开数据检查器。观察到的价值data1.
和data2.
新实体的价值是0.
直到模拟时间2
.这是因为实体是服务的,实体之间没有属性通过。当时2
那data1.
是2
,这是通过的价值setAttribute1 ()
.当时6.
那data2.
开始获得价值setAttribute2()
.此延迟是由于实体的服务时间不同造成的。
这个模型展示了如何使用Simulink Function块创万博1manbetx建一个事件,当实体的处理完成时通知路由块。
要打开此模型,请使用此代码:
open_system (“NotifyEvent万博1manbetxSimulinkFunctionCallModel”);
在模型中,实体生成器块生成代表设施中部件的实体。实体然后由Entity Server块处理。如果一个部件通过了质量控制,实体输出开关块将部件路由到出厂。否则,零件将被送往深加工。
要在处理实体之后创建通知事件,请在entity Server块中事件动作选项卡,服务完成行动场,调用NotifyEvent()
函数。
在质量控制块中,正弦波块用于生成信号。圆形块用于将信号值舍入到最接近的整数小于或等于该值。来自圆形块的输出信号需要值1
或者2
.该信号由设置的事件时间块转换为消息。
Quality Control块中的消息数据值指定实体离开Entity output Switch块时选择哪个输出端口。如果消息有价值1
,输出端口1
为实体离开而选择。如果消息有价值2
、输出2
为实体离开而选择。
模拟模型并观察标记部件的范围块。四个部分离开设施。
请遵守发送到处理的标记部分的范围块,显示六个部分被发送到进一步处理。
获得|实体生成器|实体队列|实体服务器|实体终结者|偏见|万博1manbetxSimulink功能