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