PI制御電流帰還における伝達関数のエクセルマクロシミュレーション
今回はベクトルモータ制御の電流帰還制御に使われるPI制御の伝達関数周波数応答シミュレーションをエクセルマクロを用いて行う方法を説明しようと思います。
①PI制御電流帰還オープンループ伝達関数の周波数応答エクセルマクロシミュレーション
モータのベクトル制御でのPI制御を用いた電流帰還は非干渉制御を行うと、下図のようになり、オープンループゲインは以下の式になる。
X(s):電流指令値(入力)
Y(s):モータ電流値(出力)
Ca(s):PI制御部関数
Cm(s):モータ負荷関数
R:モータの抵抗値
L:モータのインダクタンス
K:比例制御の比例定数
Ta:積分制御の時定数
Tm:モータの時定数(L/R)
オープンループなので、帰還は考えないようにすると、伝達関数(出力/入力)は
Ca(s)・Cm(s)となる。
本来はd軸、q軸と別々に制御するが、今回はそれを省略する。
モータ負荷部Cm(s)ブロックの入力はモータ印加電圧であり、そこからモータ電流を導くCm(s)はすなわちアドミタンスであり、それは1/(R+sL)の一次遅れになり、モータの時定数Tm(L/R)を用いて表すと、1/(R(1+Tms))となる。
では、ボード線図を作成するために伝達関数の絶対値を求める。
絶対値計算は分母と分子をそれぞれ計算する。
伝達関数を変形して以下の通りにする。
分子、分母それぞれの絶対値を算出する。
〇分子 s=jωを分子の式に代入すると
K*(Tas+1)=K*(1+jTa*ω)
絶対値を計算する。
|K*(1+jTa*ω)|=K√(1+(Ta*ω)^2)
〇分母 s=jωを分子の式に代入すると
Tas*R*(1+Tms)=Ta*R*(jω-Tm*ω^2)
絶対値を計算する。
|Ta*R*(jω-Tm*ω^2)|=Ta*R*ω√((Tm*ω)^2+1)
オープンループゲインの絶対値は
Ca(s)・Cm(s)=|分子|/|分母|にて計算することができる。
次にモータ電気定数R,Lと制御器の設定応答角周波数ω0から
最適比例定数Kと制御器時定数Taを算出する。
①モータ定数RとLを入力する。
例えばR=0.05Ω、L=0.002Hとする。
②比例定数は制御器の応答角周波数(ω0)から決まる。
応答角周波数(ω0)と設定すると、比例定数Kは
K=ω0Lと導くことができる。
これは積分制御なしの比例制御のみを考えたときに、
応答角振動数ω0と時定数Tは次の関係になる。
T=1/ω0
<K=ω0Lの証明>
例えばω0 を500rad/s、L=0.002Hとして、K=ω0Lより
K=1としてステップ応答のシミュレーションをすると
下図のような立ち上がりとなり、時間0.02sec(1/ω0)のとき、
値が6.59 (指令値が10)となり、ほぼ時定数(1-1/e 0.632ですが)
になる。
③積分制御の時定数Taの求め方
Ta=Tmとすると、オープンループゲインの式
においてTaS+1 と1+TmS が同じになるので、
オープンループゲインはK/TaSRとsに対して1次の簡単な式になる。
そのためオープンループゲイン周波数応答シミュレーションは下図のように
極、零の無い直線になる。対数軸基準なので、直線=反比例となる。
このようなTaの求め方を極零相殺法と言う。
Tm=L/Rなので数値を代入して、Tm=0.04となるので、
Taも0.04とした時の周波数応答シミュレーション結果を下図に示す。
さらにTaを10倍、0.1倍と変化させた時の周波数応答シミュレーション結果を下図に示す。
また、このゲイン曲線の違いがクローズループになるとどうなるかを後程シミュレーションする。
Ta=0.4の時はTmによる極点が25rad/secに見られ、Taによる零点2.5rad/secと10倍離れていることが分かる。(極・零はω=1/Taから算出できる。)
オープンループゲインとクローズループゲインの周波数応答エクセルマクロシミュレーションはここからダウンロードしてください。
(右クリックで「新しいウインドウで開く」を行い、ダウンロードしてください。)
②PI制御電流帰還クローズループ伝達関数周波数応答エクセルマクロシミュレーション
非干渉制御を行うと、PI制御を用いた電流帰還は下図のようになり、
オープンループゲインは以下になる。
K:比例制御の比例定数
Ta:積分制御の時定数
R:モータの抵抗値
Tm:モータの時定数(L/R)
そのクローズループゲインは上のブロック図より
Y(s)/(X(s)-Y(s))=Ca(s)*Cm(s)
Y(s)=Ca(s)*Cm*1
Y(s)(1+Ca(s)*Cm(s))=Ca(s)*Cm(s)*X(s)
Y(s)/X(s)=Ca(s)*Cm(s)/(1+Ca(s)*Cm(s))
となるので、クローズループゲインは
Tas(R(1+Tms)を分母分子に掛ける。
絶対値計算は分母と分子をそれぞれ計算する。
|分子| K√((1)^2+(Taω)^2) S=jωを代入する。
|分母| √(K-TaTmRω2)2+(KTaω+RTaω)2)
クローズループのゲイン絶対値は|分子|/|分母|となる。
オープンループゲインの時と同じ定数にて周波数応答のシミュレーションを行った結果を下図に示す。Taは標準の0.04と0.4,0.004とした。
Ta=0.004の時、ω=500rad/sec付近でピークを持ってしまい、
発振しやすくなってしまう。
また、初めにω0を500rad/secと設定したが、シミュレーション結果より
カットオフ角振動数は500rad/secと読み取れる。
それに付加してTa=0.04、ω0を250、500、1000つまりKを0.5、1、2とした時のシミュレーションを下図に示す。ω0を倍、半分にすることでカットオフ角周波数も変化する。
但し、ここで注意することはモータ制御のキャリア周波数とカットオフ角周波数
の関係について、デジタルサンプリング誤差を考慮すると、カットオフ周波数(f0=ω0/2π)*10<キャリア周波数 以上の差が必要になる。
クローズループの時間応答シミュレーションはここからダウンロード出来ます。
(右クリックで「新しいウインドウで開く」を行い、ダウンロードしてください。)
マクロはTaを3パターンとしたシミュレーションです。
下図にクローズループの時間応答シミュレーション結果を示す。
Ta(積分時間)を標準から1/100(ゲインは100倍)をした状態のTa3では
起動波形が不安定になっており、発振の可能性がある。
以上
*1:s)X(s)-Y(s