Main Content

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 コードの検証の詳細については、以下を参照してください。