Main Content

Simscape サブシステム置換のモデリング ガイドライン

Simscape™ アルゴリズムの HDL コードを生成するには、Simscape HDL ワークフロー アドバイザーを使用して、HDL 実装モデルを生成します。Simscape アルゴリズムのモデル化に際して特定のガイドラインに従う場合、Simscape HDL ワークフロー アドバイザーは、HDL 実装モデル内において Simscape サブシステムを対応する HDL Subsystem ブロックに置き換えます。HDL Subsystem ブロックには、Simscape ブロックの代わりに HDL 互換の Simulink® ブロックを使用する状態空間アルゴリズムが含まれています。HDL Subsystem ブロックの HDL コードを生成し、そのコードを FPGA ターゲット デバイスおよび Speedgoat® FPGA I/O モジュールに搭載の FPGA に展開できます。この場合、Simscape HDL ワークフロー アドバイザーの [実装モデルを生成] タスクで [実装モデルの検証ロジックの生成] チェック ボックスを選択すると、アドバイザーによって別個の状態空間検証モデルが生成されます。このモデルは、HDL Subsystem からの出力と元の Simscape サブシステムからの出力を比較して、それらが機能的に等価であることを確認します。

ガイドラインに従わない場合、Simscape HDL ワークフロー アドバイザーでは、この置換を実行できないことがあります。その場合、HDL 実装モデルには、状態空間アルゴリズムと、その隣に元の Simscape サブシステムが含まれます。コードを生成する前に、実装モデルを変更し、Simscape サブシステムが状態空間アルゴリズムに置き換えられるようブロックを再配置します。この場合、[実装モデルの検証ロジックの生成] チェック ボックスを選択すると、アドバイザーは検証ロジック サブシステムを実装モデル内に配置し、機能的に等価であることを確認します。

これらのガイドラインに加えて、Simscape モデルが Simscape HDL ワークフロー アドバイザーと互換性をもつように構成されていることを確認します。Simscape での HDL 互換性のある物理システムのモデル化を参照してください。

Simscape ブロックをサブシステム内に格納

  • HDL 実装モデル生成の対象である Simscape ブロックを Subsystem ブロック内に含め、テスト入力を与えます。Subsystem ブロック内では、モデルは Simscape ブロックを使用する複数の階層をもつことができます。

  • マスク サブシステムは使用しないでください。Simscape HDL ワークフロー アドバイザーは、HDL 実装モデル内のマスク サブシステムを置換できません。自動サブシステム置換では、表面的なマスクをもつマスク サブシステムを使用できます。表面的なマスクは、アイコンのみをもち、パラメーターや初期化コードをもちません。

  • Simscape ブロックを含む Subsystem ブロック内の入力端子で、Simulink-PS Converter (Simscape) ブロックを追加します。このサブシステムの出力端子で、PS-Simulink Converter (Simscape) ブロックを追加します。

    • Simulink-PS Converter ブロックと PS-Simulink Converter ブロックには意味のある名前を使用します。

      Simscape HDL ワークフロー アドバイザーは、Simulink-PS Converter ブロックと PS-Simulink Converter ブロックの名前を、HDL Subsystem ブロックの入力端子と出力端子に使用します。意味のある名前を使用すると、HDL 実装モデルの入力端子と出力端子が何に対応するかを識別しやすくなります。

    • Simulink-PS Converter ブロックの [ブロック パラメーター] ダイアログ ボックスの [設定] タブで [入力の取り扱い] をクリックし、[提供される信号][入力のみ] に設定するか、[フィルター処理と微分][入力のフィルター処理、微分の算出] または [ゼロ微分 (区分定数)] に変更します。

たとえば、降圧コンバーター モデルを開きます。Simscape_system ブロックには Simscape ブロックが含まれています。このサブシステムの外にあるブロックが、テスト環境を形成します。

openExample('plantdeployment/BuckConverterModelExample','supportingFile','sschdlexBuckConverterExample')
sim('sschdlexBuckConverterExample')

Buck converter model with test inputs and outputs captured.

Simscape_system サブシステム内で、モデルは Simscape ブロックと物理量信号を使用します。モデルのインターフェイスには Simulink-PS Converter ブロックと PS-Simulink Converter ブロックがあります。これらのブロックに、対応する端子名と一致するように一意の名前を指定します。

openExample('plantdeployment/BuckConverterModelExample','supportingFile','sschdlexBuckConverterExample')
open_system('sschdlexBuckConverterExample/Simscape_system')

Inside buck converter subsystem.

複数の Simscape ネットワークの考慮事項

Simscape モデルに複数のネットワークが含まれている場合は、以下を行います。

  • ネットワークをサブシステム内に 1 つずつ含めます。Simulink-PS Converter ブロックと PS-Simulink Converter ブロックをサブシステムのインターフェイスに追加します。

  • ネットワークごとに Solver Configuration (Simscape) ブロックを 1 つずつ使用します。別々のネットワーク内の Solver Configuration ブロックで、同じサンプル時間を使用します。

    たとえば、次のモデルには Solver Configuration ブロックよりも多くの Simscape ネットワークが含まれており、Simscape ネットワークは HDL Subsystem に置き換えられません。

    Two networks with one Solver Configuration block used for both networks.

その後、Simscape HDL ワークフロー アドバイザーが、各 Simscape サブシステムを対応する HDL Subsystem に置き換えます。

複数のネットワークをもつモデルの HDL コードの生成方法を示す例については、複数のネットワークを含む Simscape モデルの HDL コードの生成を参照してください。

Simscape Utilities ライブラリの特定のブロックを使用しない

Simscape サブシステムを状態空間アルゴリズムに置き換える実装モデルを生成するには、元の Simscape モデルで、[Simscape][Utilities] ライブラリの以下のブロックは使用しないでください。

たとえば、次のモデルには、Connection Label ブロックと Simscape Bus ブロックが 2 つの異なるサブシステム内に含まれています。Simscape HDL ワークフロー アドバイザーは、これらのサブシステムを状態空間アルゴリズムに置き換えることができません。

Unsupported Simscape bus, connection labels and ports for HDL subsystem replacement.

参考

|

関連するトピック