You can generate code and build an executable for a subsystem within a model. The code generation and build process uses the code generation and build parameters of the root model.
In the Configuration Parameters dialog box, set up the code generation and build parameters, similar to setting up the code generation for a model.
Right-click the Subsystem block. From the context menu, select C/C++ Code > Build This Subsystem from the context menu.
Alternatively, in the current model, click a subsystem and then from the C Code tab, click Build.
Note
When you select Build This Subsystem, if the model is operating in external mode, the build process automatically turns off external mode for the duration of the build. The code generator restores external mode upon completion of the build process.
The Build code for Subsystem window displays a list of the subsystem parameters. The upper pane displays the name, class, and storage class of each variable (or data object) that is referenced as a block parameter in the subsystem. When you select a parameter in the upper pane, the lower pane shows the blocks that reference the parameter and the parent system of each block.
The Storage Class column contains a menu for each row. The menu options set the storage class or inline the parameter. To declare a parameter to be tunable, set the Storage Class to a value other than Inlined.
For more information on tunable and inlined parameters and storage classes, see Create Tunable Calibration Parameter in the Generated Code.
After selecting tunable parameters, click Build to initiate the code generation and build process.
The build process displays status messages in the MATLAB® Command Window. When the build is complete, the generated executable is in
your working folder. The name of the generated executable is
(on PC platforms) or
subsystem
.exe
(on The Open Group UNIX® platforms). subsystem
is the
name of the source subsystem block.subsystem
The generated code is in a build subfolder, named
.
subsystem
_target
_rtw
is the name of the source
subsystem block and subsystem
is the name of
the target configuration.target
When you generate code for a subsystem, you can generate an S-function by right-clicking the Subsystem block and selecting C/C++ Code > Build This Subsystem from the context menu. For more information on S-functions, see Generate S-Function from Subsystem.
The following limitations apply to building subsystems:
Subsystem build does not support a subsystem that has a function-call trigger input or a function-call output.
When you right-click a Subsystem block and select
C/C++ Code > Build This Subsystem from the context
menu to build a subsystem that includes an Outport block for which the
Data type parameter specifies a bus object, you must address
errors that result from setting signal labels. To configure the software to display
these errors, in the Configuration Parameters dialog box for the parent model, on the Diagnostics > Connectivity pane, set the Signal label mismatch parameter to
error
.
When a subsystem is in a triggered or function-call subsystem, the right-click build process might fail if the subsystem code is not sample-time independent. To find out whether a subsystem is sample-time independent:
Copy all blocks in the subsystem to an empty model.
In the Configuration Parameters dialog box, on the Solver pane, set:
Type to Fixed-step
.
Periodic sample time constraint to
Ensure sample time
independent
.
Click Apply.
Update the model. If the model is sample-time dependent, Simulink® generates an error in the process of updating the diagram.
When you use the right-click build process for a subsystem, the code generator
attempts to use the subsystem name for generated code files. In some cases, there can
be a conflict with the name that you specify when you set, for example, File
name options to Use function name
or
Function name options to Use subsystem
name
. You see an
error:
The subsystem 'model/subsys' is trying to generate code to an reserved file (subsys) for the model 'subsys'...
To resolve the error, modify one of the conflicting file names so that the names are unique.
In a subsystem build warning, the subsystem block path hyperlink that is created references a temporary model block path instead of the actual model block path. In the Diagnostic Viewer, clicking the subsystem hyperlink does not take you to the block. In the Command Window, you see a message:
... No system or file called 'subsystemName' found. ...