永久磁石同期モータ(PMSM)を安全に停止させる方法
PSIMのコード生成機能を用いて、実機の永久磁石同期モータ(PMSM)を駆動させるビデオチュートリアルがあります。
InstaSPIN Code Generation – DRV8305 Quick Start | PMSM control
永久磁石同期モータ(PMSM)のInstaSPINによるセンサレス制御の実装 (日本語解説)
しかし、このチュートリアルではプログラムの中断方法の記載が無く、強制的にプログラムを止めると、条件によってはハードウェアの破損のおそれがあります。
安全に止めるには指令値の回転数を0にして、PWMをストップしてからプログラムを停止することが推奨されます。
本記事ではその方法を説明します。修正したモデルはこちらです(InstaSPIN_safe_stop_rev2.psimsch)。
モデル
上記チュートリアルと同じものを使用します。
C:\Altair\Altair_PSIM_2023.1\examples\Code Generation\F2806x Target\TI DRV8305 PMSM InstaSPIN Lab11
フォルダ内の
DRV8305 PMSM InstaSPIN Lab11 (F28069).psimsch
このモデルに回転数指令値の指定とPWMのストップ命令を追加します。
回転数指令の追加
元のビデオチュートリアルの最後に説明があるものと同様です。
現在のモデル・コードは回転数の指令値が0.5KRPMで固定されています。回転数を変更するために、わざわざモデル・コードを修正するのは面倒ですので、マイクロコントローラへの入力信号で回転数が変更できるようモデル・コードを修正します。
F2806X用のSCI inputを配置、接続します。
SCI inputブロックの名前と初期値を設定します。
PWMのスタート/ストップ指令
PWMをスタート/ストップさせるためにF2806X用のStart PWM / Stop PWMブロックを配置します。
SCI inputブロックを配置し、0=ストップ、1=スタートとなる信号が入力できるよう設定します。
また、PWMストップ時にPIコントローラをリセットするため、信号を別途取り出しておきます。
3相PWMブロックの初期条件を変更します。元モデルではStartとなっており、プログラム開始と同時にPWM信号が出力されます。
今回は、PWMのスタート/ストップを入力できるよう修正しましたので、Do not startとしておき、プログラム開始時はPWM信号が出力されないようにしました。
プログラム開始後、PWMのスタート信号を送ることで、PWM信号が出力されます。
PIコントローラのリセット
PWM信号を停止させた場合、再度PWM信号を出力してモーターを制御するには、PIコントローラの積分値をリセットする必要があります。
本制御モデルにはId ControllerとSpeed Controllerの2か所でPIブロックを用いたPIコントローラがあります。また、Iq ControllerはCブロックを用いたPIコントローラが実装されています。
2か所あるPIブロックを用いたPIコントローラはReset OptionがあるTI DMCのPIコントローラへ置き換え、PWMのStop信号を接続します。
また、Cブロックを用いたPIコントローラはCコードを修正し、PWMのStop信号で値をリセットします。
Id Controller
PIブロックをTI DMCのPIブロックへ置き換え、PWMのStop信号を接続します。
パラメータの対比は以下です。
パラメータの換算方法は下記サンプルをご参照ください。
C:\Altair\Altair_PSIM_2023.1\examples\Digital Control\digital PI comparison.psimsch
Speed Controller
PIブロックをTI DMCのPIブロックへ置き換え、PWMのStop信号を接続します。
パラメータの対比は以下です。
Iq Controller
Iq Controllerは出力の上限、下限(outMax, outMin)が定数ではなく、3番目の入力(x3)により変化するため、通常のPIブロックではなく、Cブロックで実装されています。
Inputの数を3 ->4に変更し、PWMのStop信号を接続します。コード内ではx4で参照可能です。
x4>0の場合にUiとUpを0にするコードを追加します。
コード生成と実行
元のチュートリアルを参考にコード生成、CCSによるマイクロコントローラへのコード書き込みを実施します。
PSIMのファイル名が長すぎる場合はCCSのデバッグでエラーが出る可能性がありますのでご注意ください。本モデルも短めに変更しております(InstaSPIN_safe_stop_rev2.psimsch)。
DSPオシロスコープを開きます。
接続すると、Start_Stop_PWMが追加されています。
これを1としUpdateするとPWM信号が出力され、モータが回転します。
0としUpdateするとPWM信号が停止し、モータも停止します。
作業を終了する場合は、
speed_ref = 0とし、モータの回転を止めた後、Start_Stop_PWM = 0としてPWM信号を停止させます。
この状態でCCSの1. suspendでプログラムを停止させます。
そして、2. terminateでデバッグプロジェクトを終了させます。
使用製品:Altair PSIM