Main Content

Simscape ハードウェアインザループ ワークフロー入門

Simscape™ モデルをフィールド プログラマブル ゲート アレイ (FPGA) 展開用に HDL コードに変換できます。これには HDL Coder™ が必要です。物理システムのシミュレーションが高速化され、モデルのプロトタイプを迅速に作成できます。変換により、ハードウェアインザループ (HIL) シミュレーションを使用した HDL 実装モデルのリアルタイム シミュレーションも提供されます。

Simscape プラント モデルを汎用の FPGA、System on a Chip (SoC)、または Speedgoat® FPGA I/O モジュールに展開することで、HIL シミュレーションをより小さいタイム ステップと高い精度で実行できます。このワークフローを使用して次のことが可能です。

  • Simscape HDL ワークフロー アドバイザーを使用して HDL 実装モデルを生成します。実装モデルは、Simscape コンポーネントを HDL 互換の Simulink® ブロックに置き換える Simulink モデルです。詳細については、Simscape HDL ワークフロー アドバイザーを使用した HDL 実装モデルの生成を参照してください。

  • 実装モデルの HDL コードを生成し、HDL ワークフロー アドバイザーを使用して、生成されたコードを Speedgoat FPGA I/O モジュールに展開します。詳細については、HDL コードの生成と展開を参照してください。

モデルを HDL コードに変換しながら、複雑な物理システムを Simscape でモデル化して展開できます。

次のワークフロー図は、Simscape ハードウェアインザループ ワークフローのさまざまな段階の機能を示しています。

Simscape to HDL workflow diagram

Simscape での HDL 互換性のある物理システムのモデル化

Simscape HDL ワークフロー アドバイザーと互換性をもつように、Simscape モデルを設計する際には以下のガイドラインに従います。このワークフローを使用する前に、Simscape サブシステムを状態空間アルゴリズムに変換しておきます。詳細については、Simscape サブシステム置換のモデリング ガイドラインを参照してください。

Simscape モデルは、線形ブロック、線形スイッチド システム ブロック、および非線形ブロックを使用して作成できます。

  • 線形ブロックは、抵抗など、線形関係によって定義されるブロックです。

  • 線形スイッチド システム ブロックにはダイオードやスイッチなどのブロックがあります。これらのブロックは "V = IR" のような線形関係でも定義され、"R" はダイオードまたはスイッチの状態に応じて 2 つ以上の値の間で切り替わります。

  • 非線形ブロックは非線形方程式によって定義されるブロックで、nonlinear resistornonlinear inductorDC MotorPMSM などのブロックがあります。

ソルバー タイプ (後退オイラー法または分割) は、モデル内のブロックのタイプに基づいて選択できます。モデルに線形ブロックおよび線形スイッチド システム ブロックがある場合は、後退オイラー法ソルバー タイプを選択します。モデルに非線形ブロックがある場合は、分割ソルバー タイプを選択します。詳細については、Solver Configuration (Simscape) を参照してください。

ソルバー設定の構成

HDL コード生成用にソルバー設定を構成するにはモデルを開きます。次に例を示します。

openExample('plantdeployment/OpenTheSimscapeHDLWorkflowAdvisorExample','supportingFile','sschdlexBoostConverterExample')
open_system('sschdlexBoostConverterExample/Simscape_system')

Solver Configuration (Simscape) ブロックをダブルクリックします。

[ソルバー タイプ] の選択.  ブロックのソルバー タイプを選択するには、Solver Configuration (Simscape) ブロックをダブルクリックします。

  1. [ブロック パラメーター] ダイアログ ボックスで、[ローカル ソルバーを使用] を選択します。

  2. [ソルバー タイプ] ドロップダウン リストから、線形ブロックおよび線形スイッチド システム ブロックの場合は [後退オイラー] を選択します。非線形ブロックの場合は [分割] を選択します。昇圧コンバーターの場合は [後退オイラー] を選択します。

サンプル時間の指定.  同様に離散サンプル時間を指定できます。

  1. [ブロック パラメーター] ダイアログ ボックスで、[ローカル ソルバーを使用] を選択します。

  2. [サンプル時間] テキスト ボックスで、離散サンプル時間 Ts を指定します。

ソルバー設定が正しく指定されていることを確認するには、Simscape HDL ワークフロー アドバイザーでソルバーのコンフィギュレーションのチェックを実行します。

関数 hdlsetup の実行

モデルの作成後、関数 hdlsetup を実行して HDL コード生成用にモデルを構成します。関数 hdlsetup により、モデル コンフィギュレーション パラメーターがコード生成用の推奨される既定値に設定されます。関数 hdlsetup を呼び出す前にモデルを開いておきます。

current_model に対して関数 hdlsetup を呼び出すには、MATLAB® コマンド プロンプトで次のように入力します。

hdlsetup('current_model')

関数 hdlsetup を実行した後、エラーや警告なしでモデルがコンパイルされたことを確認します。

HDL コード生成用の Simscape モデル例

HDL コード生成の場合、独自の Simscape アルゴリズムを設計することも、Simscape で作成されたモデル例のリストから選択することもできます。

後退オイラー法ソルバーを使用するモデル例

分割ソルバーを使用するモデル例

すべての例には、接頭辞 sschdlex と接尾辞 Example が付いています。たとえば、昇圧コンバーター モデルを開くには、MATLAB コマンド プロンプトで、次のように入力します。

openExample('plantdeployment/OpenTheSimscapeHDLWorkflowAdvisorExample','supportingFile','sschdlexBoostConverterExample')
open_system('sschdlexBoostConverterExample/Simscape_system')

このほかにも、特定用途向けのさまざまなモデル例があります。HDL コード生成用に設計されたすべての Simscape モデルのリストを取得するには、MATLAB コマンド ウィンドウで「sschdlex」と入力して Tab キーを押します。

Simscape HDL ワークフロー アドバイザーを使用した HDL 実装モデルの生成

最初に、Simscape HDL ワークフロー アドバイザーを使用して Simscape モデルから HDL 実装モデルを生成します。

Boost converter model

HDL 実装モデルを生成するには、Simscape HDL ワークフロー アドバイザーを開きます。

MATLAB コマンド プロンプトで、関数 sschdladvisor を実行します。

sschdladvisor('current_model')

この関数により、current_model に対する Simscape HDL ワークフロー アドバイザーが開きます。

Simscape HDL ワークフロー アドバイザーでのタスクの実行

Simscape HDL ワークフロー アドバイザーの左側のペインに、関連するタスクのグループまたはカテゴリを含むフォルダーのリストが表示されます。フォルダーを展開すると各フォルダーで使用可能なタスクが表示されます。左側のペインからフォルダーまたは個々のタスクを選択すると、右側のペインに関連する情報が表示されます。左側のペインのタスクについて、そのタスクを実行するためのコントロールが右側のペインに表示されます。状態メッセージや他のタスクの結果を示す表示領域もあります。個々のタスクの詳細を確認するには、そのタスクを右クリックし、リストから [これはなに?] を選択します。

[Simscape HDL ワークフロー アドバイザー] ウィンドウでは、個々のタスクを実行するか、リスト内のすべてのタスクを実行できます。実行するタスクを選択し、[このタスクを実行] をクリックします。タスクを実行するには、そのタスク以前のすべてのタスクが正常に実行されていなければなりません。サブフォルダー内で特定のタスクに対するワークフローを実行するには、そのフォルダーを展開してからタスクを右クリックし、[選択したタスクまで実行] を選択します。

Simscape HDL Workflow Advisor window

ワークフローを実行して HDL 実装モデルの機能を元の Simscape アルゴリズムと比較するには、次のようにします。

  1. [実装モデルを生成] タスクを選択します。

  2. [検証設定] で、[実装モデルの検証ロジックの生成] チェック ボックスをオンにします。これにより、[検証ロジックの許容誤差] が有効になり、既定値の 0.001 に設定されます。

  3. [実装モデルを生成] タスクを右クリックし、リストから [選択したタスクまで実行] を選択します。

タスクが成功すると、HDL 実装モデルと状態空間検証モデルへのリンクが表示されます。実装モデルは、元の Simscape モデルと同じ名前をもち、接頭辞 gmStateSpaceHDL を使用します。状態空間検証モデルは、実装モデルと同じ名前をもち、接尾辞 _vnl を使用します。

Simscape HDL Workflow Advisor window with links to generated implementation model and state-space validation model in the display area of right pane

Simscape HDL ワークフロー アドバイザーのタスクの詳細については、Simscape HDL ワークフロー アドバイザーのタスクを参照してください。

HDL コードの生成と展開

HDL コード生成用に、生成された状態空間検証モデルを使用して HDL 実装モデルと元の Simscape アルゴリズムの数値結果を検証できます。

Boost converter validation model

HDL コードを生成する前に、生成された HDL 実装モデルを検証します。

HDL アルゴリズムの検証

HDL 実装モデルの機能を元の Simscape アルゴリズムと比較できます。HDL 実装モデルを検証するには、状態空間検証モデルをシミュレートします。シミュレーションでアサーションや警告が発生しなければ、HDL 実装モデルの出力が元の Simscape アルゴリズムと指定の許容誤差内で一致していることを示します。詳細については、HDL 実装モデルの Simscape アルゴリズムに対する検証を参照してください。

コードの生成

HDL アルゴリズムを検証したら、実装モデルの HDL コードを生成できます。MATLAB コマンド プロンプトで次のように入力します。

makehdl('gmStateSpaceHDL_current_model/HDL Subsystem')
詳細については、Simscape モデルの HDL コードの生成を参照してください。

HDL コードを生成した後、リアルタイム モデルをターゲット ハードウェアに展開できます。コードの展開方法の詳細については、HDL ワークフロー スクリプトを使用した Simscape 降圧コンバーター モデルの Speedgoat IO モジュールへの展開を参照してください。

Simscape モデルからの HDL コード生成の制限

HDL Coder は、以下を使用する Simscape ネットワークからのコード生成をサポートしません。

参考

| |

関連するトピック