このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
コマンド ラインからのモデルの構成
コード ジェネレーターには、生成コードをカスタマイズするためのモデル コンフィギュレーション パラメーターが用意されています。生成コードの使用および相互作用の状況に応じて、コンフィギュレーションの各種決定を行います。デバッグ、トレーサビリティ、コード効率、安全対策へのニーズに最適な設定を選択してください。
必要なコンフィギュレーションを決定した後は、MATLAB® スクリプトを使用してモデル コンフィギュレーション プロセスを自動化するのが一般的です。
この例では、以下について説明します。
コンフィギュレーション パラメーターの操作概念
コード生成オプションを理解するためのドキュメンテーション
モデルの設定を自動化するためのツールとスクリプト
コンフィギュレーション パラメーターのワークフロー
コンフィギュレーション パラメーターには、1つのモデル内または複数のモデルにわたって持続性を維持するワークフローが数多くあります。必要に応じて、コンフィギュレーション セットをコピーまたは参照として扱うこともできます。この例では、モデルのアクティブなコンフィギュレーション セットを直接操作するための基本手順を説明します。コンフィギュレーション セットの機能とワークフローの包括的な説明については、Simulink® ドキュメンテーションのモデルのコンフィギュレーション セットの管理を参照してください。
コンフィギュレーション セットの基本的な操作
モデルをメモリに読み込みます。
model='ThrottleControl';
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');
モデルまたはコンフィギュレーション セットを使用してコード生成オプションを操作できます。次の例では、モデルから間接的にオプションを取得し、設定しています。
deftParamBehvr = get_param(model,'DefaultParameterBehavior'); % Get set_param(model,'DefaultParameterBehavior',deftParamBehvr) % Set
次の例では、コンフィギュレーション セットからオプションを直接取得し、設定しています。
if isERT lifespan = get_param(cs,'LifeSpan'); % Get LifeSpan set_param(cs,'LifeSpan',lifespan) % Set LifeSpan end
コンフィギュレーション オプションの概要
コード生成オプションの一覧に、デバッグ、トレーサビリティ、コード効率、安全対策に関するトレードオフが記載されています。Simulink® Coder™ については、モデル コンフィギュレーション パラメーターの推奨設定のまとめの Simulink® Coder™ バージョンを参照してください。Embedded Coder® については、Recommended Settings Summary for Model Configuration Parameters (Embedded Coder)の Embedded Coder® バージョンを参照してください。
コード生成アドバイザーを使用して目的に合ったモデル コンフィギュレーションを取得します。[目的の設定] ダイアログ ボックスで、目的を設定して優先順位を付けることができます。
コード生成アドバイザーのドキュメンテーションについては、コード生成アドバイザーを使用したアプリケーションの目的を参照してください。Embedded Coder® の追加ドキュメンテーションについては、コード生成アドバイザーを使用したコード生成の目的に合わせたモデルの設定 (Embedded Coder)を参照してください。
パラメーター コンフィギュレーション スクリプト
Simulink® Coder™ にはアプリケーションを作成するための開始点として使用できるコンフィギュレーション スクリプトの例が用意されています。関連するほとんどの GRT および ERT コード生成オプションの一覧は、rtwconfiguremodel.m
に含まれています。
あるいは、コンフィギュレーション セットの関数 saveAs
を使用してモデル コンフィギュレーション パラメーターの完全なリストを含む MATLAB 関数を生成することができます。
% 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 % MATLAB function for configuration set generated on 27-Sep-2023 04:55:04 3 % MATLAB version: 23.2.0.2389690 (R2023b) Update 2 4 5 cs = Simulink.ConfigSet; 6 7 % Original configuration set version: 23.1.0 8 if cs.versionCompare('23.1.0') < 0 9 error('Simulink:MFileVersionViolation', 'The version of the target configuration set is older than the original configuration set.'); 10 end 11 12 % Character encoding: UTF-8 13 14 % Do not change the order of the following commands. There are dependencies between the parameters. 15 cs.set_param('Name', 'Configuration'); % Name 16 cs.set_param('Description', ''); % Description 17 18 % Original configuration set target is ert.tlc 19 cs.switchTarget('ert.tlc',''); 20 21 cs.set_param('HardwareBoard', 'None'); % Hardware board 22 23 cs.set_param('TargetLang', 'C'); % Language 24 25 cs.set_param('CodeInterfacePackaging', 'Nonreusable function'); % Code interface packaging 26 27 cs.set_param('GenerateAllocFcn', 'off'); % Use dynamic memory allocation for model initialization 28 29 cs.set_param('Solver', 'FixedStepDiscrete'); % Solver 30 31 % Solver 32 cs.set_param('StartTime', '0.0'); % Start time 33 cs.set_param('StopTime', '10.0'); % Stop time 34 cs.set_param('SolverName', 'FixedStepDiscrete'); % Solver 35 cs.set_param('SolverType', 'Fixed-step'); % Type 36 cs.set_param('SampleTimeConstraint', 'Unconstrained'); % Periodic sample time constraint 37 cs.set_param('FixedStep', '.001'); % Fixed-step size (fundamental sample time) 38 cs.set_param('EnableFixedStepZeroCrossing', 'off'); % Enable zero-crossing detection for fixed-step simulation 39 cs.set_param('ConcurrentTasks', 'off'); % Allow tasks to execute concurrently on target 40 cs.set_param('EnableMultiTasking', 'on'); % Treat each discrete rate as a separate task 41 cs.set_param('AllowMultiTaskInputOutput', 'off'); % Allow multiple tasks to access inputs and outputs 42 cs.set_param('PositivePriorityOrder', 'off'); % Higher priority value indicates higher task priority 43 cs.set_param('AutoInsertRateTranBlk', 'off'); % Automatically handle rate transition for data transfer 44 45 % Data Import/Export 46 cs.set_param('Decimation', '1'); % Decimation 47 cs.set_param('LoadExternalInput', 'off'); % Load external input 48 cs.set_param('SaveFinalState', 'off'); % Save final state 49 cs.set_param('LoadInitialState', 'off'); % Load initial state 50 cs.set_param('LimitDataPoints', 'on'); % Limit data points
生成されたファイルの各パラメーター設定には、[コンフィギュレーション パラメーター] ダイアログ ボックスの対応するパラメーター string のコメントが含まれます。
概要
Simulink には、シミュレーションとコード生成のためにモデルの構成を自動化する多数の MATLAB 関数が用意されています。Simulink Coder および Embedded Coder® は、コード生成専用の追加関数を提供します。コード生成アドバイザーは、優先する一連の目標に基づいてモデル コンフィギュレーションを最適化します。コンフィギュレーション セットの関数 saveAs を使用して最適なコンフィギュレーションを MATLAB ファイルに保存し、モデルやプロジェクトに再利用することができます。