Using Function-Call Subsystems
AFunction-Call Subsystemblock is a conditionally executed subsystem that runs each time the control signal receives a function-call event. A Stateflow®chart,Function-Call Generatorblock, or anS-functionblock can provide function call events.
A function-call subsystem is analogous to a function in a procedural programming language. Invoking a function-call subsystem executes the output methods of the blocks within the subsystem in execution order. For an explanation ofFunction-Call Subsystemblocks parameters, seeSubsystem, Atomic Subsystem, Nonvirtual Subsystem, CodeReuse Subsystem
Creating a Function-Call Subsystem
To create a function-call subsystem:
Add aFunction-Call Subsystemblock to your model.
Open the subsystem block. Add a block diagram defining the algorithm that is executed when the subsystem receives a function-call event.
Set initial and disabled values for theOutportblocks. SeeConditional Subsystem Initial Output ValuesandConditional Subsystem Output Values When Disabled.
Set how subsystem states are handled when subsystem is executed.
Open the subsystem block, and then open the block parameters dialog box for theTriggerblock. From theStates when enablingdrop-down list, select:
held
— States maintain their most recent values.reset
— States set to their initial conditions.inherit
— Use the held or reset setting from the parent subsystem initiating the function-call.
For nested subsystems whoseFunction-Call Subsystem块有不同的参数设置,洞穴ings for the child subsystem override the settings inherited from the parent subsystem.
Attach a function-call initiator to the function-call input port.
If you attach anInportblock, open the block, select the Signal Attributes pane, and then select theOutput function callcheck box.
Sample Time Propagation in a Function-Call Subsystem
Configure aFunction-Call Subsystemblock by setting theSample time typeof itsTriggerport block totriggered
orperiodic
.
A triggered (aperiodic) function-call subsystem can execute zero, one, or multiple times during a time step.
If a function-call subsystem is executed by a root-level function-callInportblock with a discrete sample time, multiple function-calls during a time step are not allowed. To allow multiple function-calls, setSample timeto
-1
(inherited), and set the sample time for all blocks in the function-call subsystem to-1
(inherited).A periodic function-call subsystem executes once during a time step and must receive periodic function-calls. If the function-calls are aperiodic, the simulation stops and an error message is displayed. Set the sample time for all blocks in the function-call subsystem to
-1
(inherited).
Note
During range checking, the minimum and maximum parameter settings are back-propagated to the actual source port of the function-call subsystem, even when the function-call subsystem is not enabled.
To prevent this back propagation:
Add aSignal Conversionblock and aSignal Specificationblock after the source port.
Set theOutputof theSignal Conversionblock to
Signal copy
.Specify the minimum and maximum values for theSignal Specificationblock instead of specifying them on the source port.
Model Examples
See Also
Blocks
- Function-Call Feedback Latch|Function-Call Generator|Function-Call Split|Function-Call Subsystem|Subsystem, Atomic Subsystem, Nonvirtual Subsystem, CodeReuse Subsystem|Trigger
Related Examples
- Export-Function Models Overview
- Generate Component Source Code for Export to External Code Base(Embedded Coder)
- Context-dependent inputs
- Invalid function-call connection
- Check usage of function-call connections
- Check for potentially delayed function-call subsystem return values