PIL テストを使用したコードの検証とプロファイリング
この例では、Texas Instruments® LAUNCHXL-F28379D ハードウェア ボードでの PIL プロファイリングについて説明します。プロセッサインザループ (PIL) シミュレーションでは、制御アルゴリズムはターゲット ハードウェアで実行されますが、プラント モデルはホスト マシンで実行されます。プラント モデルは、コントローラーに対する入力信号と出力信号をシミュレートし、シリアル通信インターフェイスを使用してコントローラーと通信します。この機能により、PIL シミュレーションを使用してターゲット ハードウェアでの実行時間を特定し、ホスト マシンでモデルをシミュレートする実行時間と比較できます。
実行時間はアルゴリズムのパフォーマンス メトリクスです。PIL シミュレーションから得られ、ターゲット ハードウェアでのアルゴリズムのオーバーランを検出するのに役立ちます。ターゲット ハードウェアでのアルゴリズムの平均実行時間と最大実行時間が PIL プロファイリング レポートに表示されます。
この例では、mcb_pmsm_foc_sim.slx
モデルを使用して PIL シミュレーションでのコード検証について説明します。この例で示すのは、モデル内の Current Control サブシステムの PIL プロファイリングです。このサブシステムには、ベクトル制御 (FOC)、電流スケーリング (pu 変換)、速度測定、回転子位置スケーリング (エンコーダー位置カウントからの角度の計算) のアルゴリズムが含まれています。ターゲット ハードウェアでの制御アルゴリズムの平均実行時間と最大実行時間が PIL プロファイリング レポートに表示されます。
この例のタスクは次のとおりです。
PIL テストを使用してシミュレーションとターゲット ハードウェアの動作モードでアルゴリズムを比較し、コード実行を検証する。
ターゲット ハードウェアでのアルゴリズムの実行時間を測定して PIL プロファイリングを実行し、PIL プロファイリング レポートを生成する。
必要な MathWorks 製品
Motor Control Blockset™
Embedded Coder®
C2000™ Microcontroller Blockset
サポート対象のハードウェア
LAUNCHXL-F28379D コントローラー ハードウェア ボード
PIL モデルの準備
1. モデル mcb_pmsm_foc_sim を開きます。
このモデルは、閉ループの速度制御の PMSM モーターと FOC アルゴリズムをシミュレートします。
2. Simulink ツールストリップの [ハードウェア] タブで [ハードウェア設定] をクリックします。
3. [コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行] で、[ハードウェア ボード] フィールドを [TI Delfino F28379D LaunchPad]
に設定します。
PIL を使用したコードの検証
1. [コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行]、[ハードウェア ボード設定]、[Target hardware resources]、[PIL] で、次のコンフィギュレーション設定を選択します。
a. Communication Interface - [serial]
を選択します。
b. SCI module - [SCI_A]
を選択します。
c. Serial port in MATLAB preferences - ハードウェアが接続されている通信ポートがモデルで自動的に検出されます。このパラメーターは、現在アクティブな MATLAB® セッションの間は以降も変わりません。通信ポートをもう一度検出するには [Refresh] ボタンをクリックします。
2. コンフィギュレーション パラメーターを設定するために、次のコマンドを使用して mcb_PIL_config_TI.m
スクリプト ファイルを開きます。
openExample('mcb/CodeVerificationAndProfilingUsingPILTestingExample','supportingFile','mcb_PIL_config_TI.m');
3. スクリプトでモデルの名前と終了時間を更新します。
4. スクリプトを実行して、シミュレーション モデルのコンフィギュレーション パラメーターと PIL の基本設定を更新します。
5. mcb_pmsm_foc_sim.slx
モデル例で Current Control サブシステムを右クリックします。[C/C++ コード] メニューの [このサブシステムをハードウェアに展開] を選択します。
[サブシステムに対するコードをビルド] ダイアログ ボックスが表示されます。すべてのパラメーターの [ストレージ クラス] を [Inlined]
に設定します。
6. [ビルド] をクリックします。Current Control という PIL サブシステムを含む untitiled
という名前のモデルが作成されます。
7. Current Control サブシステムの名前を Current Control (PIL) に変更します。
8. Current Control (PIL) サブシステムをコピーし、mcb_pmsm_foc_sim.slx
モデル例の Current Control サブシステムと置き換えます。
PIL モードでは、ターゲットに Current Control (PIL) サブシステムが展開され、ターゲット ハードウェアでサブシステムが実行されます。
9. ホスト マシンでのシミュレーションと PIL シミュレーションでアルゴリズムの実行を比較するために、Current Control サブシステムを Current Control (PIL) サブシステムに対して並列に接続します。さらに、サブシステムの出力で信号のログを有効にします。
10. Simulink ツールストリップの [アプリ] タブで [SIL/PIL マネージャー] アプリを選択します。
11. [SIL/PIL] ツールストリップで [SIL/PIL Sim Only]
を選択します。
12. [テスト対象システム] フィールドで [Model blocks in SIL/PIL mode]
を選択します。
13. [SIL/PIL] ツールストリップで [SIL/PIL を実行] をクリックします。Current Control (PIL) サブシステムがビルドされ、ターゲットに展開されます。
サブシステムが展開された後、Current Control (PIL) サブシステムがターゲット ハードウェア プロセッサで実行され、プラント モデルがホスト マシンで実行されます。
PIL プロファイリングの結果の解析
PIL シミュレーションが終了すると、プロファイリング レポートが生成されます。
メモ: PIL シミュレーションにはホストマシンベースのシミュレーションよりも時間がかかります。これは、ホスト マシンとターゲット ハードウェアで実行されるサブシステムとの間のシリアル通信 (Current Control (PIL) サブシステムの入力と出力に関連する通信) によるものです。
このプロファイリング レポートは、固定小数点データ型のもので、ターゲット ハードウェアで実行される Current Control (PIL) サブシステムの最大実行時間と平均実行時間を示しています。
[シミュレーション] タブの [データ インスペクター] ボタンを使用して、ホストマシンベースのシミュレーションと PIL シミュレーション (ターゲットで実行) の実行中にログ記録された信号を比較できます。これは、ホストマシンベースのシミュレーションと PIL シミュレーションの精度を検証するのに役立ちます。
次のプロットは、Current Control (PIL) サブシステムと Current Control サブシステムからの速度フィードバック信号を比較したものです。
実行時間が予定時間の 60% を超える場合は、次のいずれかの手法を使用してアルゴリズムを最適化できます。
RAM から実行する。
一部の機能を CLA または他の CPU にオフロードする。
アルゴリズムを 1 サイクルおきに実行するようにスケーリングする。
速度計算などの重要度が低い機能のレートを遅くする。
SIL/PIL コードの検証の詳細については、以下を参照してください。
Code Verification and Validation with PIL (C2000 Microcontroller Blockset)
Create Execution-Time Profile for Generated Code (Embedded Coder)
SIL/PIL Manager Verification Workflow (Embedded Coder)