永久磁石同期モータ(PMSM)を安全に停止させる方法

Kosuke_IKEDA
Kosuke_IKEDA
Altair Employee

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で固定されています。回転数を変更するために、わざわざモデル・コードを修正するのは面倒ですので、マイクロコントローラへの入力信号で回転数が変更できるようモデル・コードを修正します。

image

F2806X用のSCI inputを配置、接続します。

image

SCI inputブロックの名前と初期値を設定します。

image

 

PWMのスタート/ストップ指令

PWMをスタート/ストップさせるためにF2806X用のStart PWM / Stop PWMブロックを配置します。

SCI inputブロックを配置し、0=ストップ、1=スタートとなる信号が入力できるよう設定します。

また、PWMストップ時にPIコントローラをリセットするため、信号を別途取り出しておきます。

image

3相PWMブロックの初期条件を変更します。元モデルではStartとなっており、プログラム開始と同時にPWM信号が出力されます。

今回は、PWMのスタート/ストップを入力できるよう修正しましたので、Do not startとしておき、プログラム開始時はPWM信号が出力されないようにしました。

プログラム開始後、PWMのスタート信号を送ることで、PWM信号が出力されます。

image

 

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信号を接続します。

image

パラメータの対比は以下です。

imageimage

パラメータの換算方法は下記サンプルをご参照ください。

C:\Altair\Altair_PSIM_2023.1\examples\Digital Control\digital PI comparison.psimsch

 

Speed Controller

PIブロックをTI DMCのPIブロックへ置き換え、PWMのStop信号を接続します。

image

パラメータの対比は以下です。

imageimage

 

Iq Controller

Iq Controllerは出力の上限、下限(outMax, outMin)が定数ではなく、3番目の入力(x3)により変化するため、通常のPIブロックではなく、Cブロックで実装されています。

Inputの数を3 ->4に変更し、PWMのStop信号を接続します。コード内ではx4で参照可能です。

x4>0の場合にUiとUpを0にするコードを追加します。

image

 

コード生成と実行

元のチュートリアルを参考にコード生成、CCSによるマイクロコントローラへのコード書き込みを実施します。

PSIMのファイル名が長すぎる場合はCCSのデバッグでエラーが出る可能性がありますのでご注意ください。本モデルも短めに変更しております(InstaSPIN_safe_stop_rev2.psimsch)。

DSPオシロスコープを開きます。

接続すると、Start_Stop_PWMが追加されています。

これを1としUpdateするとPWM信号が出力され、モータが回転します。

0としUpdateするとPWM信号が停止し、モータも停止します。

image

作業を終了する場合は、

speed_ref = 0とし、モータの回転を止めた後、Start_Stop_PWM = 0としてPWM信号を停止させます。

image

この状態でCCSの1. suspendでプログラムを停止させます。

そして、2. terminateでデバッグプロジェクトを終了させます。

image

 

使用製品:Altair PSIM