主要内容

在SimEven金宝appts中使用离散事件触发Simulink组件

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

这是一个简单的离散事件队列系统,使用实体生成器、实体队列、实体服务器和实体终止器块构建。要学习如何构建这个模型,请参阅创建离散事件模型

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

  • 时间戳实体和度量实体生成和服务完成之间的时间。您可以使用此工作流来跟踪处理排队系统中的实体所需的时间。

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

  • 将数据从电子表格导入SimEvents®模型,并指定实体生成间隔。您可以使用此工作流从现有数据设置块和实体参数。

  • 提取实体属性并将它们传递给另一个具有不同类型的实体。

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

这个模型展示了如何跟踪流经系统的实体的时间。Si金宝appmulink函数块用于对实体生成和服务时间进行时间戳,并计算这两个进程之间的总持续时间。

要打开模型,请使用以下代码:

open_system (“TimeStampEntitiesUsing金宝appSimulinkFunctionModel”);

在该模型中,实体代际间隔是由开区间上的均匀分布产生的(0,1).实体有四个属性,所有属性的初始值为0

  • 数据表示实体所携带的数据。

  • TimeStampGeneration存储实体生成时间。

  • TimeStampServiceComplete存储实体服务完成时间。

  • TotalTime是实体生成和服务之间的时间。

在Simuli金宝appnk函数块中,数字时钟块记录实体生成时间。

可以通过调用时间戳()函数在Simulink函数中的实金宝app体生成器块。

在实体生成器块中调用函数事件动作选项卡,生成字段,使用以下代码:

实体。TimeStampGeneration =时间戳();

代码调用时间戳()函数,并将数字时钟块中的值赋给TimeStampGeneration属性。

类似地,为了对服务完成进行时间戳,并计算实体生成和服务之间的时间差,打开entity Server块,并在事件动作选项卡上,单击服务完成.输入此代码。

%通过调用|timeStamp()标记服务完成%的功能。实体。TimeStampServiceComplete =时间戳();%计算生成和服务之间的差异%完成时间。实体。TotalTime =实体。TimeStampServiceComplete - entity.TimeStampGeneration;%显示时间差的实体属性。disp (entity.TotalTime);

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

模拟模型。在诊断查看器中,可以观察实体。TotalTime10实体。实体生成和服务之间的持续时间会增加,因为实体在实体队列块中等待它们的服务轮。

将模拟时间增加到1000和观察实体。TotalTime收敛于大约26

通过TotalTime属性为Simulink组件金宝app

假设你想通过实体。TotalTime值到Simulink®组金宝app件。这个模型展示了当实体到达实体终止符块时,如何将属性值传递给Simulink函数块。金宝app

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

open_system (“GetEntityAttributes金宝appSimulinkFunctionModel”);

控件中的实体终止符块可以实现此行为事件动作选项卡上,单击条目并调用getAttribute (entity.TotalTime)函数。

Get Entity Attributes块接受实体。Totaltime作为输入参数,并使用增益块将其值乘以2

模拟模型。观察显示放大属性值的Scope块。

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

假设您希望将电子表格中的数据合并到您的模拟中。使用电子表格,您可以在模型中指定各种参数,例如实体代际时间、实体属性或服务时间。

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

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

open_system (“ImportDataSimEventsModel”);

在模型中,From电子表格块位于Simulink函数块中,并从金宝appinterGenerationTimes.xlsx电子表格。电子表格有五个值-123.4,5-用作实体代际时间。

调用myDataSpreadsheet ()函数,在实体生成器块中,在相生的时间行动字段,使用以下代码:

dt = myDataSpreadsheet ();

dt为实体指定代际时间的变量。分配的代码dt值通过调用Simulink函数金宝appmyDataSpreadsheet (),它从电子表格中获取值。

模拟模型。观察在实体生成时显示的Scope块并离开该块。实体生成之间的间隔与电子表格中的数据相同。

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

在SimEvents中,您可以创建具有不同实体类型的模型,并使用Simulink Function块在实体之间传递属性。金宝app

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

open_system (“AssignEntityAttribute金宝appSimulinkFunctionModel”);

在模型中,两个Entity Generator块生成实体。实体1生成常量值为的实体2服务对象是1仿真时间。服务完成后,实体到达标记为Assign Attribute 1的Simulink功能块。金宝app

在Assign Attribute 1中,实体由一个内部队列大小的Receive块接收16.接收块将实体数据转换为信号值。

类似地,实体2生成携带值数据的实体2服务对象是5仿真时间。服务完成后,实体到达Assign Attribute 2。

实体数据被传递到另一个标记为New entity的实体生成器块。New Entity块生成带有两个属性的实体,data1data2,其值可通过调用setAttribute1 ()setAttribute2 (),分别。

实体。data1= setAttribute1(); entity.data2 = setAttribute2();

模拟模型并打开Data Inspector。观察值data1data2新实体的值为0直到仿真时间2.这是因为实体被服务,实体之间没有属性传递。在时间2data12,即所传递的值setAttribute1 ().在时间6data2开始获得价值setAttribute2 ().此延迟是由于实体的服务时间不同造成的。

为路由创建通知事件

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

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

open_system (“NotifyEvent金宝appSimulinkFunctionCallModel”);

在模型中,实体生成器块生成代表设施中部件的实体。实体然后由Entity Server块处理。如果一个部件通过了质量控制,实体输出开关块将部件路由到出厂。否则,零件将被送往深加工。

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

在质量控制块中,正弦波块用于生成信号。Round块用于将信号值四舍五入到小于或等于该值的最近整数。来自Round块的输出信号接受这个值12.信号通过“设置事件时间”块转换为消息。

Quality Control块中的消息数据值指定实体离开Entity output Switch块时选择哪个输出端口。如果消息有价值1,输出端口1为实体离开而选择。如果消息有价值2、输出2为实体离开而选择。

模拟模型并观察标有“部件分离”的Scope块。四个部分离开基地。

观察标记为Parts Sent to Processing的Scope块,该块显示有6个部件被发送到进一步加工。

另请参阅

||||||

相关的话题