主要内容

。

Çコード生成のためのコントロールアルゴリズムモデルの准备

コントロールアルゴリズムモデルにコードを生成し,生成したコードを既存のシステムに统合して,シミュレーションと実行可能ファイルの结果を検证します。

モデルの理解

この例では动作と构造の観点からモデルを说明します。例ではコード生成のためのモデルの构成方法およびコード生成の方法も说明します。以下の方法について说明します。

  • モデル例の机能的な动作について理解する。

  • モデルの検证方法について理解する。

  • モデルチェックツールに精通する。

  • コード生成に影响するコンフィギュレーションオプションに精通する。

  • モデルからコードを生成します。

モデルの机能设计の理解

この例では,スロットルコントローラーの単纯なモデルを使用します。このモデルは冗长性を特徴としていますが,安全を最重要视するドライブバイワイヤアプリケーションには一般的です。このモデルでは,アルゴリズム设计の标准的なモデル构造と基本ブロックのセットが强调されています。

现在の设定では,モデルが生成するコードは量产ターゲットシステム用には设定されていません。この例では,ターゲットの构成を変更し,生成されたコードの形式に対する変化を観测します。

最上位モデルの検证

モデル例を开きます

最上位モデルの构成は以下のとおりです。

  • 4つのサブシステム(PI_ctrl_1PI_ctrl_2Define_Throt_ParamPos_Command_Arbitration)。

  • 最上位入力(pos_rqstfbk_1fbk_2)。

  • 最上位出力(pos_cmd_onepos_cmd_twoThrotComm)。

  • 信号の経路指定。

  • 変形させないブロック。変换ブロックは总和ブロックや集成ブロックのように信号の値を変化させます。

レイアウトは基本モデルの构成スタイルを示します。

  • 信号の経路指定操作から计算を分离(ラインとバス)

  • サブシステムへ分割

このスタイルはさまざまなモデルタイプに适しています。

サブシステムの検证

2つのサブシステムは,PIコントローラーのPI_ctrl_1PI_ctrl_2を表しています。サブシステムは同じ内容をもち,ここでは同じデータを使用します。后でこのサブシステムを使用してコードジェネレーターが再利用可能な关数を作成するプロセスを学习します。

再利用を目的とした关连するブロックやモデルのグループである “ライブラリ” から,PIコントローラーを取得します。モデルのインクルードと再利用には2つの方法があり,ライブラリはそのうちの1つを提供します0.2番目のメソッドであるモデル参照については,このシリーズの后半で说明します。

モデル内でライブラリブロックを使用する场合,モデル内でブロックのインスタンスは编集できません。代わりに,ライブラリでブロック定义を编集します。これにより,异なるモデル间でもブロックのインスタンスが同一になります。

PI_ctrl_1サブシステムを开きます。

Stateflow®チャートPos_Command_Arbitrationは2つのコマンド信号の基本エラーチェックを行います。コマンド信号が离れすぎている场合,チャートは出力をfail_safe位置に设定します。

Pos_Command_Arbitrationを开きます。

コード生成用のモデルコンフィギュレーションパラメーター设定の确认

コード生成用のモデルを准备するには,嵌入式编码器アプリを开きます。次に,コード生成モデルコンフィギュレーションパラメーターを设定します。パラメーターにより,コードジェネレーターがコードの生成に使用する方法と结果のコード形式が决定します。

コード生成の目的

モデルコンフィギュレーションパラメーターを手动で设定することができます。あるいは,自动的にモデルコンフィギュレーションパラメーターを设定する事前定义された目的を选択することもできます。

以下のように,ハイレベルなコード生成の目的を选択できます。

  • 実行效率性

  • ROM效率性

  • RAM效率性

  • トレーサビリティ

  • 安全対策

  • デバッグ

各目的は,现在のモデルコンフィギュレーションパラメーターを目的の推奨値を基准にしてチェックします。各目的には一连のコード生成アドバイザーチェックも含まれます。これらの追加のチェックを使用して,モデルコンフィギュレーションパラメーターが目的を満たすコードを作成するように设定されていることを検证できます。

目的によって作成された推奨事项の一部は,コード生成アドバイザーチェックと竞合します。目的を选択する顺序によって,结果が决定します.S金宝appimulink®は优先顺位の高い目的を満たすことで,竞合を解决します。

次の図は,优先顺位を执行效率>ROM效率>RAM效率に设定する方法を示しています。ダイアログボックスを开くには,[コンフィギュレーションパラメーター]ダイアログボックスで,[コード生成]ペインを选択します次。に,[目的の设定]をクリックします。

コード生成アドバイザーを実行して,指定した目的に基づいてモデルをチェックすることができます。コード生成アドバイザーを开くには,[Cコード]タブで[C / C ++コードアドバイザー]をクリックします。

コード生成アドバイザーにより,选択した目的に基づいてチェックのリストが作成されます。最初のチェックでモデルコンフィギュレーションパラメーターの现在値がレビューされ,目的に基づいて代替値が提案されます。チェックにより,パラメーターが自动的に推奨値に设定されます。

手动设定オプション

モデルの[コンフィギュレーションパラメーター]ダイアログボックスでは,以下のペインがコード生成に关连します。

  • ソルバー

  • ハードウェア実行

  • コード生成

ソルバー

[ソルバー]ペインを开きます。

  • モデル用のコードを生成するには,モデルコンフィギュレーションパラメーター[タイプ]固定步骤に设定しなければなりません。

  • パラメーター[固定ステップサイズ]によってシステムの基本レートが设定されます。パラメーターをシステム内のレートの最小公倍数に设定します。

  • パラメーター[ソルバー]によってコードジェネレーターが使用する积分アルゴルズムが制御されます。

  • システム内の各レートのエントリポイント关数を生成するには,パラメーター[各离散レートを个别のタスクとして扱う]を选択します。

ハードウェア実行

[ハードウェア実行]ペインを开きます。

ハードウェア実行パラメーターを使用してハードウェアボードを指定します.S金宝appimulink®は,ボードの选択に基づいて,ペインのその他の设定を调整します(非表示のマイクロプロセッサデバイスの详细など)。ワードサイズやバイト顺などの非表示のパラメーター设定を表示または调整するには,[デバイスの详细]をクリックします。

コード生成

[コード生成]ペインを开きます。

[コード生成]ペインを使用してシステムターゲットファイルと最适化を指定します。この例では,嵌入式Coder®システムターゲットファイル(ert.tlc)を使用します。このシステムターゲットファイルを拡张して,カスタマイズされた设定を作成できます。[コード生成]ペインとそのサブペインの基本パラメーターの一部には次が含まれます。

システムターゲットファイル

  • ert.tlc - “基地” 嵌入式Coder®

  • grt.tlc - “基地”通用实时目标

  • ハードウェア固有のターゲット

使ファイル

コード最适化

  • 使用されていない分岐をコードから削除し,一时変数の作成を制御します。

  • 明示的な初期化コードをもつ信号を制御します。

  • オーバーフローとゼロ除算の保护コードの使用を有效または无效にします。

コード形式オプション

  • かっこの使用

  • ヘッダーファイル情报

  • 変数命名规则

カスタムコードのインクルード

  • çファイル

  • ^ hファイル

  • オブジェクトファイル

  • フォルダーパス

ASAP2ファイルの生成

モデルコンフィギュレーションパラメーターの保存

モデルコンフィギュレーションパラメーターの値をMATLAB®关数として保存できます。コマンドプロンプトで,次のように入力します。

HCS = getActiveConfigSet('rtwdemo_PCG_Eval_P1');hCs.saveAs('ConfiguredData');

MATLAB®关数はコンフィギュレーションパラメーターオブジェクトのテキスト表现を保存します。生成されたファイルは,アーカイブを行ったり,従来の差分ツールを使用して异なるバージョンのファイルを比较するときに使用できますま。た,ファイルの内容を视覚的に検查することもできます。

关数を実行してその他のモデルのコンフィギュレーションパラメーターを设定できます。

hCs2 = ConfiguredData;attachConfigSet('基于myModel',hCs2,TRUE);setActiveConfigSet('基于myModel',hCs2.Name);

シミュレーションテスト环境の理解

「テストハーネス」という名前の别のモデルでスロットルコントローラーのモデルをテストします。テストハーネスは制御アルゴリズムを评価するモデルです。次のテストハーネスを使用します。

  • テストデータを制御アルゴリズムから切り离す

  • プラントモデルまたはフィードバックモデルを制御アルゴリズムから切り离す

  • 制御アルゴリズム用の复数のバージョンで再利用可能な环境を提供する

テストハーネスを开きます

通常のシミュレーションテスト环境は以下の部分で构成されています。

  • テスト対象ユニット

  • テストベクトルソース

  • 评価とログ

  • プラントまたはフィードバックシステム

  • 入力と出力のスケーリング

テスト対象のユニットを强调表示します。

制御アルゴリズムは “テスト対象のユニット”です。テストハーネスモデルは模型ブロックから制御アルゴリズムを参照します。型号ブロックではコンポーネントを再利用できます。型号ブロックは制御アルゴリズムを名前(rtwdemo_PCG_Eval_P1)で参照します。

型号ブロックは别のモデルに “コンパイルされた关数”としてモデルを含める(参照元)ことができます。既定では,Si金宝appmulink®中は参照モデルを変更时にコンパイルします。コンパイルされた关数にはライブラリに比べて以下のような利点があります。

  • 大规模なモデルのシミュレーションを高速に実行する。

  • コンパイルされた关数のシミュレーションを直接実行できる。

  • シミュレーションに必要なメモリーが小さい。モデルの复数のインスタンス(复数の模型ブロック)を追加しても,コンパイルされたモデルのコピーはメモリに1つだけ存在します。

テストベクトルソースを强调表示します。

このモデルはテストベクトルソースとして信号生成器ブロックを使用します。そのブロックには,シミュレーション(pos_rqst)と検证サブシステムで使用する予想される结果を駆动するデータがあります。一般的なアプリケーションではシステムを十分に评価するためのテストスイートを作成しますが,この例ではテストデータを1セットのみ使用します。

検证を强调表示します。

テストハーネスはシミュレーション结果を“ゴールデンデータ” と比较します。ゴールデンデータとは,モデルに望ましい动作を示すテスト结果です。このモデルでは,V&V断言ブロックがプラントのスロットル位置のシミュレーション结果をテストハーネスが提供するゴールデン値と比较します0.2つの信号の差が5%を超える场合,テストは失败で,断言ブロックはシミュレーションを中止します。

别の方法として,シミュレーションの実行が终了した后でシミュレーションデータを评価することもできます.MATLAB®スクリプトまたはサードパーティのツールを使用して评価を行うことができます。実行が终了するまで待机しなければなりませんが,実行后の评価はデータの解析において大きな柔软性があります。これら2つの方法を组み合わせれば,非常に柔软で效率のよいテスト环境を得ることができます。

load_system('rtwdemo_PCGEvalHarness')Open_System('rtwdemo_PCGEvalHarness /验证'

プラント/フィードバックシステムを强调表示します。

この例では,伝达关数を正准型に分割することにより,スロットルのダイナミクスをモデル化します。プラントモデルを作成して,特定のレベルの忠実度をモデル化できます。多くのアプリケーションでは异なるプラントモデルを异なる段阶のテストで使用します。

スケーリングされた入力と出力を强调表示します。

入力と出力をスケーリングするサブシステムは以下の基本关数を実行します。

  • テスト対象のユニットとプラントに送る信号を选択する。

  • エンジニアリングユニットとテスト対象のユニットで必要なユニットとの间で信号の再スケーリングを行う。

  • プラントとテスト対象ユニットの间においてレート変换を行う。

シミュレーションテストの実行

テストハーネスモデルのシミュレーションを実行するには,[开始]または次のハイパーリンクをクリックします。

テストハーネスを実行します。

はじめてテストハーネスを実行する场合は,S金宝appimulink®中でその参照モデルがコンパイルされていなければなりません。コマンドウィンドウでコンパイルの进行状况を监视できます。

モデルのシミュレーションが终了すると,金宝appSimulink®中はプロット図に结果を表示します。

SIM('rtwdemo_PCGEvalHarness'

右下のプロット図は期待される(ゴールデン)スロットルの位置とプラントで计算されたスロットルの位置の差を示しています。

コードの生成

コードを生成するには,嵌入式编码器アプリを开きます。次のいずれかの手法を使用します。

  • モデル内で按Ctrl + Bキーを押す。

  • [Cコード]タブで,[ビルド]または[コード生成]を选択します。

  • 次のハイパーリンクをクリックする。

モデルのコードを生成します。

コードジェネレーターによって复数のファイルが生成されます。结果コードは计算面では效率的ですが,量产环境に统合できるほど整理されていません。

生成されたコードの検查

コードジェネレーターによって作成される复数のファイルは,[コード]ビューまたはコード生成レポートで确认できます。标准のÇ定义ファイルとヘッダーファイルの他に,コードジェネレーターによってHTMLファイルセットも生成されます.HTMLファイルはコードとモデル间のハイパーリンクになります。

モデルエクスプローラーでHTMLコードブラウザーを开きます。

生成されたコードでは次のことに注意してください。

  • コントローラーコードは型号名称_步という名前の关数に含まれており,ファイルrtwdemo_PCG_Eval_P1.c内にあります。

  • コードジェネレーターでは复数のブロックの演算が1つのコードのステートメントに畳み込まれています。

  • 关节型号名称_初始化は変数を初期化します。

  • データ构造体はモデルデータを定义します(たとえばrtwdemo_PCG_Eval_P1_U.pos_rqst)。

  • rtwdemo_PCG_Eval_P1.c:ステップと初期化关数を定义するÇファイル

  • ert_main.c:単纯なスケジューラを含む例のメインファイル

  • rtwdemo_PCG_Eval_P1.h:编金宝app码器的Simulink™データ构造体の型定义が含まれる^ hファイル

  • PCG_Eval_p1_private.h:生成したコードでのみ使用するデータを宣言するファイル

  • rtwdemo_PCG_Eval_P1_types.h:リアルタイムモデルデータ构造体を宣言するħファイル

このシリーズの次の例については,生成コードのデータインターフェイスの构成を参照してください。

关键词トピック