主要内容

simulink.event.InputWriteLost

当输入端口值更新覆盖未处理的数据时触发事件

    描述

    使用一个simulink.event.InputWriteLost对象来配置根输入端口,以便在每次输入端口上的值更新覆盖未处理的数据时触发调度事件。通过在输入端口上配置事件触发器,您可以建模和模拟服务质量效果。

    您可以根据进入顶级模型或模型参考接口的输入端口的数据流,在基于速率的系统中触发一个或多个模型分区。的EventTriggers参数的轮廓尺寸在公共汽车元素块存储与端口关联的事件触发器对象。每个事件触发器将输入事件映射到它所触发的调度事件的名称。模型的调度指定了响应调度事件要执行的分区。该表总结了可以在输入端口上配置的事件触发器。对于每个输入端口,可以为每个输入事件配置一个事件触发器。

    输入事件 输入事件描述 事件触发对象
    输入写 值用于输入端口更新。 simulink.event.InputWrite
    输入写超时 输入端口值在指定的时间内没有更新。 simulink.event.InputWriteTimeout
    输入写了 输入端口值更新将覆盖未处理的数据。 simulink.event.InputWriteLost

    要为模型配置调度,请使用时间表编辑器

    创建

    可以以编程方式或交互方式为输入端口配置事件触发器。

    • 控件以编程方式配置事件触发器时,请自己创建和配置事件触发器对象simulink.event.InputWriteLost函数。

    • 当您使用块参数对话框或属性检查器交互配置事件触发器时,软件将创建和配置事件触发器对象。

    描述

    例子

    writeLost= simulink.event.InputWriteLost创建事件触发器writeLost它可用于配置输入端口,以便在每次输入端口值的更新覆盖未处理的数据时触发指定的调度事件。

    属性

    全部展开

    当输入端口值更新覆盖未处理数据时触发的事件,指定为字符串或字符向量。事件名称必须为“汽车”或者Schedule Editor中定义的事件的名称。

    缺省情况下,事件名称为“汽车”.当您更新或编译具有配置了输入端口的模型时InputWriteTimeout带有事件名称的事件触发器“汽车”,该软件创建一个范围为块的调度事件。例如,对于一个名为轮廓尺寸,软件就会创建事件轮廓尺寸。InputWriteLost.使用时间表编辑器为事件配置监听器。

    例子:inLost。EventName = " myEvent "配置事件触发对象inLost要触发事件myEvent在Schedule Editor中定义。

    数据类型:字符|字符串

    例子

    全部折叠

    配置一个模型,以便在每次传入值覆盖队列中未处理的数据时执行一个分区。

    打开模型SampleLost.模型包含子系统传感器它模拟了从单个传感器传输数据的过程0.1秒。Queue块存储传感器消息和模型引用SinkSystem从队列读取传感器数据。该模型被配置为记录事件,因此您可以使用Sequence Viewer可视化消息如何在系统中传播。

    mdl =“SampleLost”;open_system (mdl)

    引用模型SinkSystem包含两个子系统:

    • SignalConditioning子系统从队列接收传感器数据的消息,并使用增益块扩展数据。

    • SampleLost子系统包含一个值为1的Constant块,连接到一个Accumulator块。

    配置子系统SignalConditioning作为一个周期性分区,它每天从队列中接收一条消息0.5秒。

    1. 在“块参数”对话框或“属性检查器”中,选择作为原子单位对待

    2. 计划是列表中,选择周期性的分区

    3. 指定分区名称为SignalConditioning

    4. 指定采样时间为0.5

    另外,使用set_param命令,配置TreatAsAtomicUnitScheduleAsPartitionName,SystemSampleTime参数。

    load_system (“SinkSystem”);set_param (“SinkSystem / SignalConditioning”“TreatAsAtomicUnit”“上”...“ScheduleAs”“周期分区”...“PartitionName”“SignalConditioning”...“SystemSampleTime”“0.5”);

    配置子系统SampleLost作为一个非周期划分。

    1. 在“块参数”对话框或“属性检查器”中,选择作为原子单位对待

    2. 计划是列表中,选择非周期分区

    3. 指定分区名称为SampleLost

    另外,使用set_param命令,配置TreatAsAtomicUnitScheduleAs,PartitionName参数。

    set_param (“SinkSystem / SampleLost”“TreatAsAtomicUnit”“上”...“ScheduleAs”“非周期分区”...“PartitionName”“SampleLost”

    为模型引用配置输入端口SinkSystem使用输入写丢失事件触发器。

    1. 在“块参数”对话框中,单击执行页签,单击“添加事件触发器”。

    2. 从列表中选择输入写了

    或者,创建并配置一个simulink.event.InputWriteLost对象。然后,配置EventTriggers参数的输入端口set_param函数。

    inLost = simulink.event.InputWriteLost;set_param (“SinkSystem /尺寸。”“EventTriggers”, {inLost})

    按下更新框图Ctrl + D或使用set_param函数。缺省情况下,事件触发器被配置为触发汽车事件。当您更新框图或编译模型时,软件会创建事件SampleLost.Inport.InputWriteLost它的作用域是模型引用中的import块。

    set_param (mdl“SimulationCommand”“更新”

    配置模型以便SampleLost.Inport.InputWriteLost事件触发的SampleLost分区。

    1. 打开日程编辑器。在模型中,单击徽章在一个分区的子系统上。或者,从“导入”块的“块参数”对话框中,在执行选项卡上,单击打开时间表编辑器

    2. 扩大事件窗格中,单击“展开侧”

    3. 选择SampleLost.Inport.InputWriteLost事件。然后,将其拖到Schedule Editor画布中,并在SampleLost分区。

    另外,使用get_param函数获取模型的调度。然后,使用订单属性的触发器SampleLost分区并使用set_param函数将修改的调度指定为模型的调度。

    sched = get_param (mdl“安排”);sched.Order.Trigger (“SinkSystem。SampleLost”) =“SinkSystem.Inport.InputWriteLost”;set_param (mdl“安排”固定播送时间)

    模拟模型。

    = sim (mdl);

    使用仿真数据检查器和序列查看器来分析传感器数据如何在系统中移动。在模拟选项卡,在审查结果,点击数据检查而且顺序查看器

    要在模拟数据检查器中绘制数据、显示标记和添加游标,请加载视图SampleLostView使用Simulink.sdi.loadView函数。

    Simulink.sdi.loadView (“SampleLostView.mldatx”

    使用游标分析数据。

    当第11个传感器样本写入队列时,传感器系统第一次覆盖队列中的数据。在接收器系统第三次从队列读取一个值之前,传感器将写入队列,因此队列大小为8已经不够了。

    读取第三个值的接收器系统释放队列中的空间,因此下一个时间步不会发生输入写丢失事件,1.1.然后,从时间开始1.2,当传感器系统继续向队列中写入值时,四个输入写丢失事件依次发生。接收系统每次提取另一个值1.5,释放队列中的空间。该模式将在模拟的其余部分继续使用。

    序列查看器用闭合的黑圈表示覆盖的队列值。

    版本历史

    介绍了R2022b

    Baidu
    map