三相同期モータ(ブラシレスDCモータ)のベクトル制御

目次

はじめに

ブラシレスDCモータについて調べてみたところ,割りと簡単にモデル化できそうだったのでやってみました.

ブラシレスDCモータとは,三相同期モータにドライバが乗っかったもののことを指すようです. これら2つの違いはハードウェアというよりは,動かす手法(ソフトウェア)の違いに起因するようです.

ざっくりと以下の種類があるようです.

  • 三相同期モータ(周波数制御)
    直接三相交流を入力する.ドライバなし.
  • ブラシレスDCモータ(120度通電制御)
    直流を入力する.ドライバによって回転子の角度に応じて通電する相をスイッチングする.
  • ベクトル制御
    直流を入力する.ドライバによって回転子の角度に応じてインバータにより正弦波を与える.

詳細については述べませんが,これらは全て永久磁石同期電動機(Permanent Magnet Synchronous Motor; PMSM)という種類のモータです.

またPMSMには表面磁石同期電動機(Surface Permanent Magnet Synchronous Motor; SPMSM)埋込磁石同期電動機(Interior Permanent Magnet Synchronous Motor; IPMSM)の2種類があります.

基本的な動作についてはRENESASのウェブページが詳しいです.

www.renesas.com

このなかでも最も新しい手法がベクトル制御で,これを用いることで三相モータの高効率な特性を活かしつつ,DCモータのように簡単な制御を行うことができます.

今回は,永久磁石同期電動機をモデル化し,ベクトル制御を行ってみます.

ベクトル制御といってもモータの出力軸トルクを所望の値に制御することを目的とします.

永久磁石同期電動機の運動モデル

永久磁石同期電動機のモデル化については以下を参考にしています.

付録4 同期機の2軸理論

NAOSITE : Nagasaki University's Academic Output SITE: パワーエレクトロニクスと電動機制御入門

 電圧と電流の関係

PMSMに与える電圧と流れる電流の関係は回転子を中心として座標変換することで,簡潔に表現できることが知られています.

この座標変換をPark変換と呼びます.

回転子のあるN極の方向を d軸とし, d軸に直行する方向を q軸とします.

このとき, d軸, q軸方向に作用する電圧と,コイルに流れる電流には以下の関係が成り立ちます.

\begin{align}
\frac{d}{dt} \left[ \begin{array}{c}
i_d \\
i_q
\end{array} \right] = \left[ \begin{array}{cc}
-\frac{R}{L_d} & \frac{\omega L_{q}}{L_{d}} \\
-\frac{\omega L_{d}}{L_{q}} & -\frac{R}{L_{q}}
\end{array} \right] \left[ \begin{array}{c}
i_{d} \\
i_{q}
\end{array} \right] + \left[ \begin{array}{cc}
\frac{1}{L_{d}} & 0 \\
0 & \frac{1}{L_{q}}
\end{array} \right] \left[ \begin{array}{c}
v_{d} \\
v_{q}
\end{array} \right] + \left[ \begin{array}{c}
0 \\
-\frac{\omega \Phi_{a}}{L_{q}}
\end{array} \right]
\end{align}

ただし, L_{d} d軸インダクタンス, L_{q} q軸インダクタンス, \omegaは電気角速度, Rは電機子巻線抵抗, \Phi_{a}は速度起電力係数(トルク定数のようなものらしい)です.

電流とトルクの関係

電機子に流れる電流 i_{d} i_{q}とトルク Tの関係は以下の式で表すことができます.

\begin{align}
T = \frac{P_{n}}{2}[ \Phi_a i_{q} + ( L_{d} - L_{q}) i_{d} i_{q} ]
\end{align}

ただし, P_{n}は極数です.

SPMSMでは L_{q} = L_{d}となるようで,以下の式に書き換えることができます.

\begin{align}
T = \frac{P_{n}}{2}\Phi_a i_{q}
\end{align}

ここで P_{n}および \Phi_{a}は定数であるため,SPMSMの場合にはトルクは電流と比例することとなります.

モータの機械的特性

今回,モータの機械的な特性は以下のような簡単な形式を利用します.

\begin{align}
J \ddot{\theta_{m}} + D \dot{\theta_{m}} = T
\end{align}

角加速度について解くと以下のようになります.

\begin{align}
\ddot{\theta_{m}} = -\frac{D}{J} \dot{\theta_{m}} + \frac{1}{J}T
\end{align}

ただし, Jは回転体の慣性モーメント(電機子とかその先につながる負荷に相当), Dは粘性減衰係数, \theta_{m}は機械角です.

同期電動機を考える際には,機械的な(目に見える)回転角度である機械角と,電気的な(電磁力による)回転角度である電気角を区別して扱う必要があります.

今回は出力軸トルクの制御を目的としているので機械的特性を考える必要はありませんが,慣性力の作用しないモータというのもイメージしづらいので入れています.

機械角と電気角の関係

機械角 \theta_{m}と電気角 \thetaの関係は以下の式で表すことができます.

\begin{align}
\theta = \frac{P_{n}}{2} \theta_{m}
\end{align}

たとえば, P_{n}=2,つまり回転子が単なる棒磁石のときには,電気的な振幅はN極が電線に近づいたときに大きくなり,離れていく際に小さくなっていきます.このとき,機械角の1回転あたりに電気角も1回転するため,電気角と機械角は等しくなります.

一方 P_{n}=4の場合には,機械角が1回転する間にN極は2度電線に近づきます.このとき機械角の1回転あたりに電気角は2回転することになるため,電気角は機械角の2倍ということになります.

dq座標とabc座標の変換

さて,ここまでに d軸, q軸に電圧 v{d} v_{q}を与えたときの電流と,その電流によって発生するトルク,トルクによって作用する回転運動についてモデル化しました.

 しかし,実際にPMSMから出ている端子は a b cの3本です.ここまでは d-q軸に対しての運動を考えてきましたが,実際のものを動かすためには a-b-c軸で考える必要があります.

この d-q軸と a-b-c軸を行ったり来たりするための変換がPark変換Clarke変換です.実際には以下の図のような形で利用します.

 

f:id:blockahead:20180120102446p:plain

 

Clarke変換,Park変換で a-b-c軸を d-q軸に変換後, d-q軸電流にフィードバックをかけます.それをさらに逆Park変換と空間ベクトル変換で a-b-c軸に変換してPMSMへ入力するという使い方をします.

空間ベクトル変換は逆Clarke変換と同じ目的で利用されますが,空間ベクトル変換を利用すると実際のFETのスイッチング動作まで落とし込むのが簡単なようです.

今回はスイッチング動作までは再現しないので簡単のため逆Clarke変換を利用します.

Park変換,Clarke変換を利用すると,図中の \alpha - \beta軸への変換がまとめて行えます.これをPark変換と呼ぶ場合もあるようです.Park変換と逆Park変換は単純な座標変換なので,逆変換を行うときは係数の転置を取ればよいです.

係数 \frac{1}{\sqrt{2}}の項に関する計算を省略した形式で書かれているものも多くあります.

Park変換(abc軸からdq軸への変換)

\begin{align}
\left[ \begin{array}{c}
i_{d} \\ i_{q} \\ 0
\end{array}\right] = \sqrt{\frac{2}{3}} \left[ \begin{array}{ccc}
\cos \theta & \cos ( \theta - \frac{2}{3} \pi ) & \cos ( \theta + \frac{2}{3} \pi ) \\
-\sin \theta & -\sin ( \theta - \frac{2}{3} \pi ) & -\sin ( \theta + \frac{2}{3} \pi ) \\
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}
\end{array} \right] \left[ \begin{array}{c}
i_{a} \\ i_{b} \\ i_{c}
\end{array} \right]
\end{align}

逆Park変換(dq軸からabc軸への変換)

\begin{align}
\left[ \begin{array}{c}
v_{a} \\ v_{b} \\ v_{c}
\end{array} \right] = \sqrt{\frac{2}{3}} \left[ \begin{array}{ccc}
\cos \theta & -\sin \theta & \frac{1}{\sqrt{2}} \\
\cos ( \theta - \frac{2}{3} \pi ) & -\sin ( \theta - \frac{2}{3} \pi ) & \frac{1}{\sqrt{2}} \\
\cos ( \theta + \frac{2}{3} \pi ) & -\sin ( \theta + \frac{2}{3} \pi ) & \frac{1}{\sqrt{2}}
\end{array} \right] \left[ \begin{array}{c}
v_{d} \\ v_{q} \\ 0
\end{array}\right]
\end{align}

PMSMの運動モデル

これまでの内容をまとめると,PMSMの運動モデルは次のように得ることができます.

f:id:blockahead:20180120123403p:plain

ベクトル制御

今回はベクトル制御いっても,モータの出力軸トルクの制御を目的としています.運動モデルは既に得られており,Park変換も既に存在するのでそれらを組み合わせるだけです.

f:id:blockahead:20180120163024p:plain

単純なPI制御ですが,商用のコントローラでもこのような構成のことが多いようです.

PIコントローラ

 i_{d} i_{q}に対して,以下のようなコントローラを組みます.

\begin{align}
v_{d} &= ( i_{dRef} - i_{d} ) \left( K_{P} +\frac{1}{s} K_{I} \right) \\
v_{q} &= ( i_{qRef} - i_{q} ) \left( K_{P} +\frac{1}{s} K_{I} \right)
\end{align}

非干渉化

図では省略していますがPIコントローラと逆Park変換の間に非干渉化制御を入れることが多いかと思います.

電圧と電流の関係を見てみると, i_{d} i_{q}が互いに干渉しあっていることがわかるかと思います.このような干渉項(カップリング項)がある場合,単純なPI制御では上手く制御できなかったりするため,干渉項を打ち消す操作を行います.

PMSMでは干渉項は角速度に対して作用するため,上のPIコントローラの式を次のように修正します.

\begin{align}
v_{d} &= ( i_{dRef} - i_{d} ) \left( K_{P} +\frac{1}{s} K_{I} \right) - \omega L_{q} i_{q} \\
v_{q} &= ( i_{qRef} - i_{q} ) \left( K_{P} +\frac{1}{s} K_{I} \right) + \omega ( L_{d} i_{d} + \Phi_{a} )
\end{align}

 トルク指令

PMSMでは流れる電流とトルクの間には以下のような関係がありました.

\begin{align}
T = \frac{P_{n}}{2}[ \Phi_a i_{q} + ( L_{d} - L_{q}) i_{d} i_{q} ]
\end{align}

SPMSMでは L_{d} = L_{q}であるため,以下の式で目標トルクを得られるような電流値を得ることができます.

\begin{align}
i_{d} = 0 \\
i_{q} = \frac{2}{P_{n} \Phi_a} T
\end{align}

IPMSMの場合ではid=0制御と呼ばれる方法で電流値を得られます.トルクが i_{d}の積の形式になっているため, i_{d}=0とすることでSPMSMの場合と同じ式が得られます.

今回はIPMSMに対してid=0制御を利用してトルク制御を行ってみます.

シミュレーション

MATLAB/Simulink R2015aでシミュレーションしてみました.

シミュレーションに使用したPMSMのパラメータについては下記の論文の第4章を参考にしています.

 

jairo.nii.ac.jp

シミュレーションの結果が以下の図です.

目標とするトルクが出力できていることがわかります.

f:id:blockahead:20180120180609p:plain


 

この結果はSimlink project形式でGithubにアップロードしています.

github.com