Main Content

simulink.event.InputWrite

Trigger event when input port value updates

Since R2022b

    Description

    Use a simulink.event.InputWrite object to configure a root input port to trigger a schedule event each time the port value updates. By configuring event triggers on input ports, you can model and simulate quality of service effects.

    You can trigger one or more model partitions in a rate-based system based on the flow of data into an input port in the top model or on a model reference interface. The EventTriggers parameter of an Inport or In Bus Element block stores the event trigger objects associated with the port. Each event trigger maps an input event to the name of the schedule event it triggers. The schedule for the model specifies the partition to execute in response to the schedule event. The table summarizes the event triggers you can configure on input ports. For each input port, you can configure one event trigger for each input event.

    Input EventInput Event DescriptionEvent Trigger Object
    Input writeValue for input port updates.simulink.event.InputWrite
    Input write timeoutInput port value does not update within a specified amount of time.simulink.event.InputWriteTimeout
    Input write lostInput port value update overwrites unprocessed data.simulink.event.InputWriteLost

    To configure the schedule for your model, use the Schedule Editor.

    Creation

    You can configure the event triggers for an input port programmatically or interactively.

    • When you configure the input port programmatically, create and configure the event trigger object yourself using the simulink.event.InputWrite function.

    • When you configure the input port interactively using the Block Parameters dialog box or the Property Inspector, the software creates and configures the event trigger object.

    Description

    inputWrite = simulink.event.InputWrite creates the event trigger object inputWrite that you can use to configure an input port to trigger a specified schedule event each time the port value updates.

    example

    Properties

    expand all

    Event to trigger when input port value updates, specified as a string or a character vector. The event name must be 'Auto' or the name of an event defined in the Schedule Editor.

    By default, the event name is 'Auto'. When you update or compile a model that has an input port configured with an InputWrite event trigger with the event name 'Auto', the software:

    1. Creates a schedule event that is scoped to the block. For example, for a block named Inport, the software creates the event Inport.InputWrite.

      This event appears in the Events panel in the Schedule Editor with other events defined for the model.

    2. Configures the listener for the event as the aperiodic partition connected to the input port, if the input port is connected to an aperiodic partition.

      To configure a different listener for the event, use the Schedule Editor.

    Example: inWrite.EventName = "myEvent" configures the event trigger object inWrite to trigger the event myEvent that is defined in the Schedule Editor.

    Data Types: char | string

    Examples

    collapse all

    Open the model ScaleInput. The model loads external input data into a subsystem. The subsystem contains a Gain block that multiplies the subsystem input by two.

    mdl = "ScaleInput";
    open_system(mdl)

    Create a timeseries object with input data for the model. The input data represents a line with a slope of one sampled every second for ten seconds.

    sampleTime = 1;
    numSteps = 11;
    time = sampleTime*(0:numSteps-1);
    time = time';
    
    data = time;
    
    lineTS = timeseries(data,time);

    Configure the model to load the timeseries object.

    set_param(mdl,"LoadExternalInput","on")
    set_param(mdl,"ExternalInput","lineTS")

    Simulate the model. By default, the maximum step size for the simulation is calculated such that the simulation takes 50 steps, resulting in a time step every 0.2 seconds.

    out = sim(mdl);

    Configure the model to execute the partition only when the value of the input port updates.

    Configure the subsystem to execute as an aperiodic partition. In the Block Parameters dialog box or the Property Inspector, select Treat as atomic unit, then from the Schedule as list, select Aperiodic partition. Alternatively, use the set_param function to configure the TreatAsAtomicUnit and ScheduleAs parameters.

    set_param("ScaleInput/Subsystem","TreatAsAtomicUnit","on")
    set_param("ScaleInput/Subsystem","ScheduleAs","Aperiodic partition")

    Add an input write event trigger to the Inport block. In the Block Parameters dialog box, on the Execution tab, click Add event trigger , then select Input Write from the list. Alternatively, create a simulink.event.InputWrite object and use the set_param function to configure the EventTriggers parameter.

    inputWrite = simulink.event.InputWrite;
    set_param("ScaleInput/Inport","EventTriggers",{inputWrite})

    Update the block diagram by pressing Ctrl+D or by using the set_param function. By default, the input write event trigger is configured to trigger the Auto event. When you update the block diagram or compile the model, the software creates the event Inport.InputWrite that is scoped to the Inport block and configures the partition connected to the Inport block as the listener for the event.

    set_param(mdl,"SimulationCommand","update")

    Simulate the model again. Because input port data drives the partition execution, the simulation takes a step only when the input value updates.

    out = sim(mdl);

    Version History

    Introduced in R2022b