機械学習によるROMを用いた永久磁石同期モーター(PMSM)のセンサレス制御
Overview
本記事では、永久磁石同期モーター(PMSM)のセンサレス制御を例に、AI・機械学習をパワーエレクトロニクス分野に適用する方法を検討します。
機械学習による動的サロゲートモデル作成ツールのAltair romAIを用いて、モータの電流と指令電圧値(Id, Iq, Vd_ref, Vq_ref)を用いて、ローターの角速度と磁極位置を予測するモデルを作成しました。
この予測モデルをパワーエレクトロニクスAltair PSIMのPMSMモータドライブに組み込みました。実際のローターの角速度と磁極位置の代わりに、予測したローターの角速度と磁極位置でモーター制御を行うよう変更しています。
ローター速度(wm, green)は目標速度(wm_ref, red)に良く追従しており、かつ、予測したロータ―速度(wm_rom, blue)は実際のローター速度(wm, green)とほぼ一致しています。
機械学習で予測したローターの角速度と磁極位置でセンサレス制御可能なことが確認できました。
Pre-Requisite
以下のソフトウェアを使用します。
Altair PSIM: PMSMのモーター制御パワーエレクトロニクス
romAI: 機械学習によるモーターの低次元化モデル(ROM)作成
Altair Twin Activate: パワーエレクトロニクスとROMの統合システムシミュレーション
Altair HyperStudy: 機械学習用トレーニングデータ生成
Altair Compose: 機械学習用トレーニングデータの加工
また、PSIMとHyperStudy連携のため、PSIM-HyperStudy Connector(近日リリース)を使用します。
本記事で使用したモデル一式は以下よりダウンロードいただけます。
Usage/Installation Instructions
1. モデル
フォルダ:01_training_model
Altair PSIMにはたくさんの例題が提供されております。今回はそのうちPMSMを制御するサンプル pmsm-pwm.psimsch を使用しました。
目標速度違いのデータを生成するため、目標速度wm_refをパラメータ化しています。
また、トレーニングに必要なデータの出力設定を追加しています。
pmsm-pwm_param.psimsch
2. トレーニングデータの生成
フォルダ:02_generate_training_data
2-1. PSIM-HyperStudy連携によるシミュレーション自動実行
フォルダ:02_generate_training_data/hst
PSIMとHyperStudyを連携することで、PSIMのパラメータを変えた計算を自動実行できます。PSIMのパラメータスイープ機能でも同様の計算は可能ですが、HyperStudyを用いると以下のメリットがあります。
- 入力パラメータの管理
- 出力応答の設定による入出力関係の分析
- 実験計画法による実行マトリクス自動作成
- 応答曲面作成
- 最適化
PSIM-HyperStudy Connector(近日リリース)を用いることで、簡単にPSIMとHyperStudyを連携することができます。
HyperStudyにPSIMモデルを登録します。
パラメータ化されたPSIMのパラメータが自動で登録されます。今回は1変数ですが、多変数になるとHyperStudyはさらに力を発揮します。
出力応答を定義します。たとえば、最終時刻のローター速度や目標速度との差などを作成しておきます。
これにより目標速度を変えた場合の最終時刻のローター速度や目標速度との差をHyperStudy上で簡単に確認できます。
DOEを定義します。たとえば、11水準とすることで、目標速度110 rad/sec ~ 210 rad/secまで10 rad/sec刻みのマトリクスを生成します。
解析を実行すると、11ケースの計算が自動で行われ、計算結果から出力応答を自動で取得します。
横軸目標速度、縦軸を実際のローター速度と誤差をプロットしました。
今回指定した速度範囲では、正しく制御されていることが一目で確認できます。
2-2. Composeによるデータ加工
フォルダ:02_generate_training_data/compose
PSIMの計算結果はタブ区切りのテキストファイルで出力しています。romAIのトレーニングデータとして使用するにはcsvフォーマットに変更が必要です。
また、11ケースの結果を1つのcsvにマージする必要があります。
Altair ComposeはMatlab互換のOpen Matrix Languageを採用した数値処理環境です。これを用いることで簡単にデータの加工が行えます。
stc_txt2csv.oml
PSIMのテキスト結果ファイルをcsvに変換するスクリプトです。
6~9行目のパス、ファイル名を変更いただければ、任意のPSIM-HyperStudyの結果に使用できます。
実行すると、DOEで計算された各フォルダ内に.csvが追加されます。
stc_merge_PSIM_results.oml
DOEで計算された各フォルダ内の.csvをdataフォルダにコピーし、かつマージして一つのファイルmerge.csvを生成するスクリプトです。
5~8行目のパス、ファイル名を変更いただければ、任意のPSIM-HyperStudyの結果に使用できます。
結果、merge.csvが生成されます。
3. 機械学習romAIによるROMの作成
フォルダ:03_create_rom
動的サロゲートモデル作成ツールのromAIで機械学習を用いて、merge.csvから予測モデルを作成します。
romAIは統合システムシミュレーション環境のTwin Activateに付属しています。
GUIのromAI Directorにmerge.csvを読み込み、入力、出力、状態量は以下の設定としました。状態量を用いた動的なROMとなります。
入力:Id, Iq, Vd_ref, Vq_ref (モータの電流と指令電圧値)
出力:wm, int_wm (ローター速度、ローター角度)
状態量:wm, int_wm(ローター速度、ローター角度)
ニューラルネットワークは以下としました。
Activate Function: relu
Hidden Layers: 2
Neurons: 20 x 20
romAIのトレーニングにはデータの分割(トレーニング・テスト)とハイパーパラメータの初期値に乱数が使用され、実行のたびに結果が変わります。
romAI Directorには繰り返し計算機能があり、乱数を変えた計算が簡単に行えます。今回は10回としました。
romAI DirectorのPost-Processorでは、作成した複数のROMの結果を比較できます。
乱数違いで生成した10個のROMに対し、今回は7番目に作成したROMのTest Lossが最も小さく、精度の高いROMであることがわかります。
4. ROMを用いたセンサレス制御シミュレーション
フォルダ:04_deploy_test
PSIMのPMSMモーター制御モデルでは、実際のローター速度、磁極位置を用いた制御を行っています。これをromAIの予測モデルに置き換え、センサレス制御が可能かを確認します。
pmsm-pwm_param_cosim.psimsch
PSIMのモデルはromAIと接続するために、Sim CouplerのIn Link Node / Out Link Nodeを追加しました。
また、実際のローター速度、磁極位置を制御に使用しないよう名前をwm_psim、CTr_psimに変更しています。
PSIMモデルとromAIのモデルの連成シミュレーション環境はTwin Activateで構築できます。
activate_rom_psim.scm
PSIMブロックとromAIブロックを配置し、それぞれのブロックでモデルを読み込みます。romAIは7番目のモデルを採用しました。
また、ポート間を接続します。
シミュレーションを行うと計算結果を確認できます。
ローター速度(wm, green)は目標速度(wm_ref, red)に良く追従しており、かつ、予測したロータ―速度(wm_rom, blue)は実際のローター速度(wm, green)とほぼ一致しています。
目標速度 170 rad/sec
また、PSIMブロックで参照したPSIMモデルのwm_refを変更することで、目標速度を変えたシミュレーションを行うことができます。
目標速度 110 rad/sec
機械学習で予測したローターの角速度と磁極位置でセンサレス制御可能なことが確認できました。
既存のフィードバックを用いたセンサ位置推定技術と組み合わせることで、精度向上や低速時、始動時の制御に活用できる可能性があります。
Post-Requisite
使用製品:Altair PSIM, Altair HyperStudy, Altair Twin Activate, Altair Compose, romAI
よくあるエンジニアからの質問はこちら