分割ソルバーを使用した非線形 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 モデルのハードウェアインザループ実装を参照してください。