Main Content

分割ソルバーを使用した非線形 Simscape モデルの HDL コードの生成

この例では、分割ソルバーを使用して非線形 Simscape™ モデルの HDL コードを生成する方法を示します。その後、生成された HDL コードを Speedgoat® FPGA I/O モジュールに展開できます。

はじめに

この例では、Simscape™ 三相永久磁石同期モーター (PMSM) モデルを Simscape HDL ワークフロー アドバイザーを使用して HDL 実装モデルに変換する方法を学びます。PMSM は、分割ソルバーを使用するモデル内の非線形ブロックです。分割ソルバーは、Simscape ネットワークの方程式系全体を、非線形関数によって接続されている線形スイッチド システム方程式の複数の小さいセットに変換します。このソルバーを使用することで、モデル内の非線形ブロックを削除したり対応する Simulink ブロックに置き換えたりせずに Simscape HDL ワークフロー アドバイザーを実行できます。詳細については、分割ソルバーの仕組みについて (Simscape)を参照してください。その後、HDL コードを生成し、そのコードを Speedgoat® FPGA I/O モジュールに展開できます。

永久磁石同期モーター モデル

PMSM モデルは Simscape™ の物理システムです。このモデルでは、ベクトル制御 (FOC) を使用して三相永久磁石同期モーター (PMSM) の速度を制御します。モデルには、一般的なハイブリッド車両で使用できる PMSM と三相インバーターが含まれています。インバーターはバッテリーに接続されています。

モデルを開くには、MATLAB® コマンド プロンプトで次のように入力します。

ModelName = 'sschdlexPMSMPartitioningSolver';
open_system(ModelName)
set_param(ModelName, 'SimulationCommand', 'update');

モデルの動作を確認するには、モデルをシミュレートします。

sim(ModelName)
open_system([ModelName '/Scope'])

関数 hdlsetup を使用して、Simscape モデルを HDL 互換性をもつように構成します。

hdlsetup('sschdlexPMSMPartitioningSolver')

セットアップと構成

非線形モデルの展開をサポートするには、[ソルバー タイプ] として Partitioning[サンプル時間] として Ts を選択します。ドロップダウン リストから [分割法] を選択できます。分割ソルバーの使用時に速度とロバスト性のどちらを優先するかを選択します。詳細については、Solver Configuration (Simscape)を参照してください。PMSM モデルの機能を示す [ソルバー設定] の既定の設定は次のとおりです。

  • ソルバー タイプ: Partitioning

  • サンプル時間: Ts

  • 分割法: Robust simulation

モデル ウィンドウで、モデル統計を表示できます。[デバッグ] タブを選択し、[Simscape]、[統計ビューアー] をクリックします。これにより、sschdlexPMSMPartitioningSolver モデルの [Simscape の統計] ウィンドウが開きます。あるいは、Simscape HDL ワークフロー アドバイザーで [モデルの互換性のチェック] タスクに合格すると生成される Model Statistics リンクをクリックできます。ソルバーによってシステムが 3 つに分割されていることがわかります。最初の分割は前進オイラー法を使用して解決されます。他の 2 つの分割は後退オイラー法を使用して解決されます。[分割数] ノードを展開します。各分割をクリックすると詳細な説明が得られます。

HDL 実装モデルの生成

Simscape HDL ワークフロー アドバイザーは、Simscape プラント モデルを HDL コード生成用の HDL 互換の実装モデルに変換します。PMSM ブロックが HDL 互換の実装モデルを生成する非線形ブロックです。HDL 実装モデルを生成するには、以下を実行します。

1. Simscape HDL ワークフロー アドバイザーを開きます。

sschdladvisor('sschdlexPMSMPartitioningSolver')

2.HDL 実装モデルを生成するには、[実装モデルの生成] タスクのドロップダウン リストで [実装モデルを生成] タスクを右クリックし、リストから [選択したタスクまで実行] を選択します。

タスクが成功すると、HDL 実装モデル gmStateSpaceHDL_sschdlexPMSMPartitioningSol へのリンクが表示されます。

Simscape HDL ワークフロー アドバイザーのタスクも参照してください。

[離散方程式の抽出] タスクを実行すると、タスクによって右ペインに Simscape ネットワークのモード、状態、および塊の数と、状態空間表現が表示されます。

HDL コードの生成

HDL 実装モデルのパラメーターを保存します。

hdlsaveparams('gmStateSpaceHDL_sschdlexPMSMPartitioningSol')

リソース利用レポートの生成を有効にします。

hdlset_param('gmStateSpaceHDL_sschdlexPMSMPartitioningSol', 'ResourceReport', 'on')

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

makehdl('gmStateSpaceHDL_sschdlexPMSMPartitioningSol/HDL Subsystem');

コードを生成すると、HDL Coder でコード生成レポートが作成されます。[高水準リソース レポート] のリソース利用レポートには、ターゲットの FPGA デバイス上で消費される可能性がある、加算器、乗算器、およびレジスタの量が示されています。

Speedgoat FPGA I/O モジュールへの永久磁石同期モーターの展開

HDL 実装モデルの HDL Subsystem に FPGA で実行するブロックが含まれています。このサブシステムで HDL ワークフロー アドバイザーを実行して、Speedgoat ターゲット コンピューターの FPGA ボードに HDL アルゴリズムを展開できます。例については、Speedgoat FPGA I/O モジュールへの Simscape モデルのハードウェアインザループ実装を参照してください。

参考

関数

関連するトピック