Create Partitions
Partitioning a Model
Partitions are components of a model that execute independently as atomic tasks. In multi-tasking models, partitions are created from model components. Periodic partitions are scheduled as a function of sample times in a model. In export-function models, the root function-call inputs are defined as partitions. These partitions have a schedule associated with them, which tells what order the partitions execute.
With partitions, you can separate parts of the model which you can explicitly control. You can think of periodic partitions as components that run at specific rates in a model. Aperiodic partitions are components that run at specified hit times or specified events. The schedule of these partitions have an impact on simulation and code generation.
The Schedule Editor enables you to partition the model and interact with those partitions. The Schedule Editor shows partitions, the connections between them, and the order of the partitions.
There are three types of partitions:
Types of Partitions | Image | Description |
---|---|---|
Implicit |
| Automatically created by Simulink®. Blocks running at the base rate show up as an implicit partition. |
Periodic |
| User-defined partitions from the atomic subsystems and/or Model blocks. Periodic partitions can also be defined by export-functions. These partitions execute based on their sample time and thus their execution is periodic. |
Aperiodic |
| Aperiodic partitions are partitions which have no constraints and
can be made to execute at any time. Specify the hit times in the
Property Inspector of the Schedule Editor, at which you want
to run the aperiodic partition. You can also use events in the Schedule Editor to
schedule execution of the aperiodic partitions. |
The blocks running at the base rate in the model is shown as an implicit partition in the Schedule Editor. The base rate is the fastest discrete rate in the model. D1 denotes the base rate. D1 annotation also appears in the Timing Legend. The D1 partition or implicit partition always remains the first discrete partition in the order.
The default partitions that are already present in the model are also implicit partitions.
The partition colors match their rate.
Create Partitions from a Rate-Based Model
Partitioning is enabled only on multitasking, fixed-step, and variable-step solver
models. To choose multitasking execution mode, in Solver selection on the
Solver pane, select the Type to be
Fixed-step
or Variable-step
. Select
the Treat each discrete rate as a separate task check box
on the Solver pane of the Configuration Parameters dialog
box. For more information on multitasking execution mode, see Time-Based Scheduling and Code Generation (Embedded Coder).
As a best practice, enable the Automatically handle rate transition for data transfer setting in the Solver pane. When you check Automatically handle rate transition for data transfer, Simulink inserts Rate Transition blocks between blocks when rate transitions are detected. Simulink handles rate transitions for asynchronous and periodic tasks. Simulink adds the hidden blocks configured to ensure data integrity and determinism for data transfers. When you check Treat each discrete rate as a separate task, Simulink selects multitasking execution for models operating at different rates. It also specifies that groups of blocks with the same execution priority are processed through each stage of simulation (for example, calculating output and updating states) based on task priority.
To see default partitions in the Schedule Editor, open the Schedule Editor. On the Modeling tab, click Schedule Editor. Update the diagram by clicking the icon on the toolstrip. The default partitions in the model are called implicit partitions. You can also create partitions in the model through an atomic subsystem or a model block.
Create Partitions Using Manage Partitions
In the Schedule Editor, use the Manage Partitions panel to create partitions. To open the Manage Partitions panel, click Manage Partitions, on the Schedule Editor toolstrip. The changes made in Manage Partitions are applied to the model to create partitions after updating the diagram. Manage Partitions shows the model hierarchy with the Subsystem blocks and Model blocks which can be explicitly partitioned.
To create partitions from Subsystem blocks, select the subsystems and click the . To create partitions from Model blocks, select the Model blocks and click . Enter partition names in the column Partition Name, and sample times in the column Sample Time. Repeat the steps for all the subsystems and Model blocks in the model that you want to partition. Update the diagram to see the created partitions in the Schedule Editor. The partitions appear in the graph with their deduced data dependencies and order.
Note
Creating partitions using the Manage Partitions panel makes changes to the subsystem or model block parameters.
The following example shows how to configure a model for partitioning and create partitions by using Manage Partitions panel in the Schedule Editor.
Open the Model Fault-Tolerant Fuel Control System example model
sldemo_fuelsys
.openExample('simulink_automotive/ModelingAFaultTolerantFuelControlSystemExample') sldemo_fuelsys
Open the Schedule Editor.
Open the Schedule Editor On the Modeling tab, click Schedule Editor. To see the default partitions, click Update Diagram in the Schedule Editor. Two implicit partitions, created automatically by Simulink, are seen in the Schedule Editor.
Create partitions.
Open the Manage Partitions panel. In the panel, expand the
fuel_rate_control
subsystem. Select theairflow_calc
subsystem and click . To change the default partition name and sample time, click the default name and sample time.To create a partition for the
fuel_calc
subsystem, select thefuel_calc
subsystem and click .The Manage Partitions panel gives you the default partition names and sample times.
Update the diagram to see the newly created partitions.
Create Partitions from Atomic Subsystem Blocks
You can partition an atomic subsystem. An atomic subsystem is treated by Simulink as a unit when determining the execution order of block methods(partitioning
is enabled only on multitasking, fixed-step and variable-step solver models). To create
partitions from an atomic subsystem block, go to the Block Parameters dialog box. Select
Periodic partition
from the Schedule as
drop-down. Give the partition a name and a discrete sample time and click OK. This creates
an explicit partition for this block. To see this partition in the Schedule Editor, update
the diagram. The partition appears in the graph and in the Order with
the connections based on the signals in the model.
Create Partitions from Model Blocks
To create partitions from a Model block, in the Model events
simulation, select Schedule rates and
Schedule Editor
from the Schedule rates
with drop-down. When you enable partitioning from a referenced model,
partitions are created from all the Model blocks present in the referenced model. These
partitions are scoped by the model block name. To see this partition in the Schedule
Editor, update the diagram. The partitions appear in the graph and in the
Order column with the connections based on the design of your
model.
Export-Function Partitions
In export-function models, partitions are created from the function calls present in the model. To create partitions from the function calls in the export-function models, reference the export-function model in a top model. Schedule the Model block using the Schedule Editor through the block parameters. Partitions are then created from the function calls and their order is determined by the Schedule Editor.
Create an export-function model.
Add a Model block that references the export-function model.
Set the parameter to partition the export-function model.
Referencing an export-function model from a Model block allows you to partition the function calls without changing the model itself. Simulink functions in an export-functions model cannot be scheduled, and do not appear as partitions in the Schedule Editor.
Add a Model block to a new Simulink model. In the Model name box, enter the name of an export-function model. For example, use the export-function model created in Create Export-Function Model.
To enable the use of the Schedule Editor, configure the model to be multitasking. Open the Model Configuration Parameters. In Solver selection on the Solver pane, set the Type to
Fixed-step
. Check the Treat each discrete rate as a separate task and Automatically handle rate transition for data transfer parameters. Click OK. The model is enabled for partitioning.Note
Do not convert a subsystem into a model because it automatically creates Inport blocks.
Add Outport blocks to the output_100ms and output_10ms ports for saving simulation data to MATLAB®. For this example, in the export-function model, set the sample time of both the function calls to -1.
Add a Sine Wave block to provide data input. Set Amplitude to
2
and Sample time to0.01
.To partition the function calls of the export-function model, in the Block Parameters dialog box for the Model block, select
Schedule Editor
option from the Schedule Rates with drop-down menu.Open the Schedule Editor and update the diagram to see the function calls as partitions.