Simulink Coder

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

コマンド ラインによるモデルの設定

この例では、生成コードをカスタマイズするための Simulink Coder™ および Embedded Coder の構成オプションを使用する方法を説明します。コード生成オプションには、モデルのコンフィギュレーション セットとも呼ばれる Simulink コンフィギュレーション パラメーターからアクセスします。

設定の決定とトレードオフは、生成されたコードをどのように使用し操作するかによって異なります。デバッグ、トレーサビリティ、コード効率、安全対策へのニーズに最適に一致する設定を選択します。機能、スクリプト、およびドキュメンテーションを使用すると、アプリケーションに最適なモデル コンフィギュレーション セットを容易に作成できます。

Simulink Coder™ には特定の目的のためにモデルを速やかに構成して確認する特定の目的のためにモデルを速やかに構成して確認するためのプッシュボタン機能がありますが、必要なコンフィギュレーションを確立した後は、MATLAB スクリプトを使用してモデル コンフィギュレーション プロセスを自動化するのが一般的です。この例では、以下について説明します。

  • 設定パラメーターの操作概念

  • コード生成オプションを理解するためのドキュメンテーション

  • モデルの設定を自動化するためのツールとスクリプト

これらの基本的なスキルがあれば、プロジェクトに最適な自動設定スキームの設定をうまく進めることができます。

コンフィギュレーション パラメーターのワークフロー

コンフィギュレーション パラメーターには、1つのモデル内または複数のモデルにわたって持続性を維持するワークフローが数多くあります。必要に応じて、コンフィギュレーション セットをコピーまたは参照として扱う場合もあります。この例では、モデルのアクティブなコンフィギュレーション セットを直接操作するための基本手順を説明します。コンフィギュレーション セットの機能とワークフローの包括的な説明は、Simulink ドキュメンテーションの「コンフィギュレーション セットコンフィギュレーション セット」を参照してください。

コンフィギュレーション セットの基本的な操作

モデルをメモリに読み込みます。

model='rtwdemo_configwizard';
load_system(model)

モデルのアクティブなコンフィギュレーション セットを取得します。

cs = getActiveConfigSet(model);

Simulink Coder™ 製品ではコード生成オプションのサブセットを公開しています。Simulink Coder™ を使用する場合は Generic Real-Time (GRT) ターゲットを選択します。

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

Embedded Coder 製品ではコード生成オプションの完全なセットを公開しています。Embedded Coder を使用する場合は Embedded Real-Time (ERT) ターゲットを選択します。

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

GRT ベースのターゲットと ERT ベースのターゲットの両方に対して作成するモデルの設定を自動化するには、コンフィギュレーション セットの IsERTTarget 属性が役立ちます。

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

モデルまたはコンフィギュレーション セットを使用してコード生成オプションを操作できます。次の例では、モデルから間接的にオプションを取得し、設定しています。

inlineParams = get_param(model,'InlineParams');  % Get InlineParams
set_param(model,'InlineParams',inlineParams)     % Set InlineParams

次の例では、コンフィギュレーション セットからオプションを直接取得し、設定しています。

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

設定オプションの概要

コード生成オプションの一覧に、デバッグ、トレーサビリティ、コード効率、安全対策に関するトレードオフが記載されています。

コード生成アドバイザーを使用して目的に合ったモデル コンフィギュレーションを取得してください。[目的の設定] ダイアログで、コード生成アドバイザーの目的を設定して優先順位を付けることができます。

コード生成アドバイザーコード生成アドバイザーのドキュメンテーションについては、Simulink Coder ドキュメンテーションおよび Embedded Coder の追加ドキュメンテーション追加ドキュメンテーションを参照してください。

パラメーター コンフィギュレーション スクリプト

Simulink Coder™ にはアプリケーションを作成するための開始点として使用できるコンフィギュレーション スクリプトのサンプルが用意されています。関連するほとんどの GRT および ERT コード生成オプションの一覧は、rtwconfiguremodel.mrtwconfiguremodel.m に含まれています。

あるいは、コンフィギュレーション セットの関数 saveAs を使用してモデル コンフィギュレーション パラメーターの完全なリストを含む MATLAB 関数を自動生成することができます。

% 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     %---------------------------------------------------------------------------
2     %  MATLAB function for configuration set generated on 09-Aug-2013 04:07:57
3     %  MATLAB version: 8.2.0.689 (R2013b)
4     %---------------------------------------------------------------------------
5     
6     function cs=MyConfig()
7     
8     cs = Simulink.ConfigSet;
9      
10    % Original configuration set version: 1.13.1
11    if cs.versionCompare('1.13.1') < 0
12        error('Simulink:MFileVersionViolation', 'The version of the target configuration set is older than the original configuration set.');
13    end
14     
15    % Original environment character encoding: windows-1252
16    if ~strcmpi(get_param(0, 'CharacterEncoding'), 'windows-1252')
17        warning('Simulink:EncodingUnMatched', 'The target character encoding (%s) is different from the original (%s).',  get_param(0, 'CharacterEncoding'), 'windows-1252');
18    end
19     
20    % Do not change the order of the following commands. There are dependencies between the parameters.
21    cs.set_param('SystemTargetFile', 'ert.tlc');   % System target file
22    cs.set_param('GenerateComments', 'on');   % Include comments 
23    cs.set_param('SimulinkBlockComments', 'on');   % Simulink block / Stateflow object comments 
24    cs.set_param('ShowEliminatedStatement', 'off');   % Show eliminated blocks 
25    cs.set_param('OperatorAnnotations', 'off');   % Operator annotations 
26    cs.set_param('ForceParamTrailComments', 'on');   % Verbose comments for SimulinkGlobal storage class 
27    cs.set_param('InsertBlockDesc', 'off');   % Simulink block descriptions 
28    cs.set_param('SimulinkDataObjDesc', 'off');   % Simulink data object descriptions 
29    cs.set_param('EnableCustomComments', 'off');   % Custom comments (MPT objects only) 
30    cs.set_param('SFDataObjDesc', 'off');   % Stateflow object descriptions 
31    cs.set_param('ReqsInCode', 'off');   % Requirements in block comments 
32    cs.set_param('IncludeHyperlinkInReport', 'on');   % Code-to-model 
33    cs.set_param('GenerateReport', 'on');   % Create code generation report 
34    cs.set_param('GenerateTraceInfo', 'off');   % Model-to-code 
35    cs.set_param('GenerateTraceReport', 'off');   % Eliminated / virtual blocks 
36    cs.set_param('GenerateTraceReportSl', 'off');   % Traceable Simulink blocks 
37    cs.set_param('GenerateTraceReportSf', 'off');   % Traceable Stateflow objects 
38    cs.set_param('GenerateTraceReportEml', 'off');   % Traceable MATLAB functions 
39    cs.set_param('LaunchReport', 'on');   % Open report automatically 
40    cs.set_param('GenerateCodeReplacementReport', 'off');   % Summarize which blocks triggered code replacements 
41    cs.set_param('GenerateCodeMetricsReport', 'off');   % Static code metrics 
42    cs.set_param('GenerateWebview', 'off');   % Generate model Web view 
43    cs.set_param('InlineParams', 'on');   % Inline parameters 
44    cs.set_param('MultiInstanceERTCode', 'off');   % Generate reusable code 
45    cs.set_param('OptimizeBlockIOStorage', 'on');   % Signal storage reuse 
46    cs.set_param('ExpressionFolding', 'on');   % Eliminate superfluous local variables (expression folding) 
47    cs.set_param('ParamNamingRule', 'None');   % Parameter naming 
48    cs.set_param('SignalNamingRule', 'None');   % Signal naming 
49    cs.set_param('UpdateModelReferenceTargets', 'IfOutOfDate');   % Rebuild 
50    cs.set_param('GenerateSampleERTMain', 'on');   % Generate an example main program 

生成されたファイルの各パラメーター設定には、[コンフィギュレーション パラメーター] ダイアログ ボックスの対応するパラメーター文字列のコメントが含まれます。このリンクを使用して MATLAB エディターで MyConfig.m を確認してください。MyConfig.mMyConfig.m.

% Return to previous working directory.
cd(currentDir)

設定ウィザードのブロック

Embedded Coder には特定の目的のためにモデルの最初のコンフィギュレーションを取得するための一連の Configuration WizardConfiguration Wizard ブロックが用意されています。事前定義されたブロックには、次の目的に使用できる構成が含まれています。

  • 固定小数点データ用に最適化された ERT

  • 浮動小数点データ用に最適化された ERT

  • 固定/浮動小数点データ用に最適化された GRT

  • 固定/浮動小数点データ用の GRT デバッグ設定

  • カスタム (スクリプトを指定)

モデルを設定するには、ブロックをモデルにドロップし、ダブルクリックします。これらの便利なブロックを操作するには、モデル rtwdemo_configwizardrtwdemo_configwizard を開き、[Open Configuration Wizard Library] をクリックします。

open_system(model)

具体的な手順:

  • モデルで表示されたリンクをクリックして Configuration Wizard ライブラリを開きます。

  • モデルで表示されたリンクをクリックしてモデルのコンフィギュレーション パラメーターを開きます。

  • ERT (固定小数点データ用に最適化) などの Configuration Wizard ブロックをウィザード ライブラリからドラッグして、モデルにドロップします。

  • ウィザード ブロックをダブルクリックします。

[コンフィギュレーション パラメーター] オプションが自動的に変わります。

% cleanup
rtwdemoclean;
close_system(model,0)

まとめ

Simulink には、シミュレーションとコード生成のためにモデルの構成プロセスを自動化する多数の MATLAB 関数が用意されています。Simulink Coder および Embedded Coder は、コード生成専用の追加関数を提供します。コード生成アドバイザーは、優先する一連の目標に基づいてモデルのコンフィギュレーションを最適化するための優れた手段です。コンフィギュレーション セットの関数 saveAs を使用して最適なコンフィギュレーションを MATLAB ファイルに自動的に保存し、モデルやプロジェクトに再利用することができます。