Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Configure Model from Command Line

The code generator provides model configuration parameters for customizing generated code. Depending on how you use and interact with the generated code, you make configuration decisions. You choose a configuration that best matches your needs for debugging, traceability, code efficiency, and safety precaution.

It is common to automate the model configuration process by using a MATLAB® script once you have decided upon a desired configuration.

The example describes:

  • Concepts of working with configuration parameters

  • Documentation to understand the code generation options

  • Tools and scripts to automate the configuration of a model

Configuration Parameter Workflows

There are many workflows for Configuration Parameters that include persistence within a single model or persistence across multiple models. Depending on your needs, you can work with configuration sets as copies or references. This example shows the basics steps for working directly with the active configuration set of a model. For a comprehensive description of configuration set features and workflows, see Configuration Sets in the Simulink® documentation.

Configuration Set Basics

Load a model into memory.

model='rtwdemo_configwizard';
load_system(model)

Obtain the model's active configuration set.

cs = getActiveConfigSet(model);

Simulink® Coder™ exposes a subset of the code generation options. If you are using Simulink® Coder™, select the Generic Real-Time (GRT) target.

switchTarget(cs,'grt.tlc',[]);

Embedded Coder® exposes the complete set of code generation options. If you are using Embedded Coder®, select the Embedded Real-Time (ERT) target.

switchTarget(cs,'ert.tlc',[]);

To automate configuration of models built for GRT- and ERT-based targets, the configuration set IsERTTarget attribute is useful.

isERT = strcmp(get_param(cs,'IsERTTarget'),'on');

You can interact with code generation options via the model or the configuration set. This example gets and sets options indirectly via the model.

deftParamBehvr = get_param(model,'DefaultParameterBehavior');  % Get
set_param(model,'DefaultParameterBehavior',deftParamBehvr)     % Set

This example gets and sets options directly via the configuration set.

if isERT
    lifespan = get_param(cs,'LifeSpan');  % Get LifeSpan
    set_param(cs,'LifeSpan',lifespan)     % Set LifeSpan
end

Configuration Option Summary

The full list of code generation options are documented with tradeoffs for debugging, traceability, code efficiency, and safety precaution.

Use Code Generation Advisor to obtain a model configuration optimized for your goals. In the Set Objectives dialog box, you can set and prioritize objectives.

You can find documentation about the Code Generation Advisor in the Simulink Coder documentation and additional documentation specific to Embedded Coder®.

Parameter Configuration Scripts

Simulink® Coder™ provides an example configuration script that you can use as a starting point for your application. A list of the most relevant GRT and ERT code generation options are contained in rtwconfiguremodel.m.

Alternatively, you can generate a MATLAB function that contains the complete list of model configuration parameters by using the configuration set saveAs function.

% Go to a temporary writable directory.
currentDir = pwd;
rtwdemodir();

% Save the model's configuration parameters to file 'MyConfig.m'.
saveAs(cs,'MyConfig')

% Display the first 50 lines of MyConfig.m.
dbtype MyConfig 1:50
1     function cs = MyConfig()
2     %---------------------------------------------------------------------------
3     %  MATLAB function for configuration set generated on 24-Feb-2017 16:09:35
4     %  MATLAB version: 9.2.0.538062 (R2017a)
5     %---------------------------------------------------------------------------
6     
7     cs = Simulink.ConfigSet;
8     
9     % Original configuration set version: 1.17.0
10    if cs.versionCompare('1.17.0') < 0
11        error('Simulink:MFileVersionViolation', 'The version of the target configuration set is older than the original configuration set.');
12    end
13    
14    % Original environment character encoding: US-ASCII
15    if ~strcmpi(get_param(0, 'CharacterEncoding'), 'US-ASCII')
16        warning('Simulink:EncodingUnMatched', 'The target character encoding (%s) is different from the original (%s).',  get_param(0, 'CharacterEncoding'), 'US-ASCII');
17    end
18    
19    % Do not change the order of the following commands. There are dependencies between the parameters.
20    cs.set_param('Name', 'Configuration'); % Name
21    cs.set_param('Description', ''); % Description
22    
23    % Original configuration set target is ert.tlc
24    cs.switchTarget('ert.tlc','');
25    
26    cs.set_param('HardwareBoard', 'None');   % Hardware board
27    
28    % Solver
29    cs.set_param('StartTime', '0.0');   % Start time
30    cs.set_param('StopTime', '48');   % Stop time
31    cs.set_param('SolverType', 'Fixed-step');   % Type
32    cs.set_param('EnableConcurrentExecution', 'off');   % Show concurrent execution options
33    cs.set_param('SampleTimeConstraint', 'STIndependent');   % Periodic sample time constraint
34    
35    % Data Import/Export
36    cs.set_param('LoadExternalInput', 'off');   % Load external input
37    cs.set_param('LoadInitialState', 'off');   % Load initial state
38    cs.set_param('SaveTime', 'off');   % Save time
39    cs.set_param('SaveState', 'off');   % Save states
40    cs.set_param('SaveFormat', 'StructureWithTime');   % Format
41    cs.set_param('SaveOutput', 'off');   % Save output
42    cs.set_param('SaveFinalState', 'off');   % Save final state
43    cs.set_param('SignalLogging', 'on');   % Signal logging
44    cs.set_param('SignalLoggingName', 'sigsOut');   % Signal logging name
45    cs.set_param('DSMLogging', 'on');   % Data stores
46    cs.set_param('DSMLoggingName', 'dsmout');   % Data stores logging name
47    cs.set_param('LoggingToFile', 'off');   % Log Dataset data to file
48    cs.set_param('DatasetSignalFormat', 'timeseries');   % DatasetSignalFormat
49    cs.set_param('ReturnWorkspaceOutputs', 'off');   % Single simulation output
50    cs.set_param('InspectSignalLogs', 'off');   % Record logged workspace data in Simulation Data Inspector

Each parameter setting in the generated file includes a comment for the corresponding parameter string in the Configuration Parameters dialog box.

% Return to previous working directory.
cd(currentDir)

Configuration Wizard Blocks

Embedded Coder® provides a set of Configuration Wizard blocks to obtain an initial configuration of a model for a specific goal. The predefined blocks provide configuration for:

  • ERT optimized for fixed point

  • ERT optimized for floating point

  • GRT optimized for fixed and floating point

  • GRT debug settings for fixed and floating point

  • Custom (you provide the script)

Put the block into a model and double-click it to configure the model. Open model rtwdemo_configwizard and click Open Configuration Wizard Library to interact with the blocks.

open_system(model)

To use configuration wizard blocks in the rtwdemo_configwizard model follow these steps:

  • Open the Configuration Wizard Library by clicking the link provided in the model.

  • Open the Model's Configuration Parameters by clicking the link provided in the model.

  • Drag and drop a Configuration Wizard Block, for example ERT (optimized for fixed point), from the wizard library into the model.

  • Double-click the wizard block.

The Configuration Parameter options are modified automatically.

% cleanup
rtwdemoclean;
close_system(model,0)

Summary

Simulink provides a rich set of MATLAB functions to automate the configuring a model for simulation and code generation. Simulink Coder and Embedded Coder® provide additional functionality specific for code generation. The Code Generation Advisor optimizes the model configuration based on a set of prioritized goals. You can save the optimal configuration to a MATLAB file by using the configuration set saveAs function, and reuse it across models and projects.

Was this topic helpful?