LTspiceで三相PWM整流器を作る ~直流電圧制御編~
はじめに
三相PWM整流器および単相を含む一般の系統連系変換器においては,交流電流制御系の上位(外側)に直流電圧制御系を設けます。 直流電圧を制御するためには交流電流を制御する必要があるとも言えます。
マイナーループである電流制御系に対して,直流電圧制御系のゲインが高過ぎると,系全体として不安定になることは容易に想像できます。 例えてみれば,部下が仕事を終えないうちに,上司がまた新しい仕事を積み上げる…そんな感じになるからです。 したがって,直流電圧制御系の制御応答を電流制御系のそれより遅くしなければならない,とよく言われています。 私もこれを口伝のように教わってきましたが,しかし,具体的にどのような状況で,また,どのようなメカニズムで不安定になるのか,噛み砕いて理解・消化できておりませんでした。
そこで本記事では,本ブログで扱ってきたLTspiceによる三相PWM整流器を例に,直流電圧制御系の小信号モデルを立てます。 安定性や外乱応答についてナイキスト線図やボード線図を描き,LTspiceによる過渡解析(.TRAN解析)の結果と比較してみます。
ナイーブな考え方
どのような考え方か
図1に本ブログで扱っている三相PWM整流器の概略図を示します。
LTspiceによるモデル構築,シミュレーションの様子やd-q座標系での等価回路の導出については,本ブログの過去の記事をご参照下さい*1*2。 なお,図1では電流の方向として変換器から系統に流出する方向を正にとっていますが,以下の議論では,流入する方向を正にとっています…💦 分かり難くて大変申し訳ありません…。
直流電圧vdcを制御するためには,直流電圧指令値vdc*と実際の値vdcとの誤差に基づいたPI(比例積分)制御にて,有効電力に相当するd軸電流の指令値id*を生成する,というのが基本的な考え方かと存じます。 もう少し具体的に描くと,図2,3のように表現できそうです。 d軸電流idと系統電圧のd軸成分vsd*3によって電力pが形成され,それと同じ電力pを生み出す直流電流idcがコンデンサCと抵抗器RLに流れ込む…。ごく自然な考え方ですね。 なお,コンデンサではエネルギーが電圧の2乗に比例するため,本来は非線形なシステムになります*4。 したがって,図3は動作点の近傍での小信号モデルとして描いており,各物理量には動作点からの摂動を表す「Δ」を付しています。 直流電流ΔIdcは,電力ΔPを動作点での直流電圧Vdcで除したものとして書けます*5。
図3中のGc(s)は電流制御系の伝達関数(後述の図4中のGc(s)に相当)です。 直流電圧制御系の応答速度が電流制御系のそれよりも十分遅ければ,Gc(s) ≈ 1と近似しても良いでしょう。 しかし,本記事ではそれができない場合の挙動を明らかにしたいと思います。
ここでは両図に「ナイーブなもの」と注記を付けました。naïveとは,Weblio辞書によれば,
(特に若いために)世間知らずの; 単純[素朴]な; 純真[うぶ]な; だまされやすい.
との意です*6。 そう,結論から言うと,この考え方では三相PWM整流器の挙動をうまく表現できておりませんでした…💦 何がダメだったのでしょうか?
目次
制御係数Ki, Kvの導入
まず,d-q座標系での交流電流制御系については,d軸,q軸等価回路の干渉をキャンセルする制御(非干渉制御)を実施していれば,本ブログの過去の記事と同じように考えることができます*7*8。 電流制御系の比例ゲインKPiと積分ゲインKIiは,
と書けます。ここで,(1)式右辺冒頭の係数Kiを電流制御系の「制御係数」と呼ぶことにします。 本ブログの過去の記事でも,制御係数Kiと電流制御系の安定性の関係について繰り返し取り扱っています*9。 制御係数Ki = 1の場合,制御周期をT (= 100 μs),交流側のインダクタンスをL,同じく抵抗をRとした場合に,サンプル & ホールドと1サンプリング遅れを考慮して,電流制御系のステップ応答にオーバーシュートが生じない比例ゲインKPi,積分ゲインKIiとなります。 本記事では,電流制御系についてはKi = 1に固定します。
ここで,電流制御系について少しおさらいしましょう。 図4は,サンプル & ホールド(S&H)の伝達関数を移動平均フィルタとして,また,制御装置の演算時間(いわゆる1サンプリング遅れ)をむだ時間要素として表現した電流制御系のブロック線図です。本ブログでは繰り返し取り扱っているブロック線図ですね。 なお,図中のGc(s)は電流指令値I*(s)を入力,実際の電流I(s)を出力とする伝達関数,Gcc(s)は同じく電流指令値I*(s)を入力とししますが,制御入力(操作量)である電圧V(s)を出力とする伝達関数です。 Gcc(s)は後に再登場します。
図4において,S&Hと1サンプリング遅れを無視した理想的なブロック線図を描くと,図5となります。 これは,1次遅れ要素をプラント,PI制御器をコントローラとするシステムです。
ところで,図3に示す直流電圧制御系についても,電流制御系の伝達関数Gc(s) ≈ 1と見なし,S&Hの影響を無視すれば,図6のようにブロック図を簡略化できます。
途中にVsd / Vdcという係数は付いていますが,これも同じく,1次遅れ要素をプラント,PI制御器をコントローラとするシステムです。 図5と図6では,電流と電圧,インダクタンスと静電容量,抵抗とコンダクタンスが入れ替わっており,まさに双対なシステムになっています。 そこで,比例ゲインKPv,積分ゲインKIvについて,
と設定することとします。 (3)式右辺冒頭の係数Kvを直流電圧制御系の制御係数と呼ぶことにします。
なお,(4)式右辺に係数「4」を掛けることにしました。相当する(2)式にこのような係数はありませが, LTspiceでの試行錯誤から,外乱応答を改善するために,(2)式そのままの双対として得られる積分ゲインを4倍することとしました。
厳密ではありませんが,直流電圧制御系の制御係数Kvと電流制御系の制御係数Kiの比を,設定した応答速度の比と考えることもできると思います。
具体的な計算
本ブログで扱ってきた三相PWM整流器の回路定数を表1に示します。 これを例として,図3のモデルのナイキスト線図を描き,安定性について考えることにしましょう。
パラメータ | 値 |
---|---|
主回路方式 | 三相2レベル電圧形インバータ |
定格系統電圧 | 400 V |
系統電圧変動範囲 | 0.95 p.u. (380 V) ~ 1.05 p.u. (420 V) |
定格周波数 | 50 Hz |
周波数変動範囲 | 48 ~ 52 Hz |
定格有効電力 | ±200 kW |
定格無効電力 | ±150 kvar |
定格直流電圧 | 720 V |
連系リアクトルL | 12% (L = 306 μH) |
連系リアクトルの巻線抵抗R | 10 mΩ |
直流コンデンサC | 10 mF (H = 12.96 ms) |
PWMキャリア周波数 | 5 kHz |
制御周期T | 100 μs |
例として,制御係数Kv = 3の場合における図3の開ループ伝達関数のナイキスト線図を描いてみます。 Ki = 1に対して3倍もあるので,先の例え話では,部下に対して大量に仕事を投げる上司,と言えそうです。 図3中の記号を使えば,開ループ伝達関数Gvo(s)は次式のように書けます。
いつものように,Python + JupyterLab + Matplotlibを使いました。 結果として,図7のようなプロットが得られます。
思った以上に安定です。何だ,全然問題ないじゃないか──そう思ってLTspiceで回路モデルとしての挙動を確認してみます。 図8に三相PWM整流器のLTspiceスキマティックを示します。 直流側には負荷抵抗器と負荷電流源(図8中では回路から切り離されて短絡されています)を両方接続できるようにして,適宜(手動で)繋ぎ替えながらシミュレーションしました。 ここでは電流源は使わず,抵抗器を使いました。 負荷抵抗器にはLTspiceのbehavioral resistorを用い*10,取るべき負荷電力から抵抗値を逆算して入力しています*11。
さて,実際にシミュレーションしてみるとどうなるか…。
.step paramコマンドにて,直流側の負荷電力を0 p.u. (0 kW) ~ 1 p.u. (200 kW)まで25%刻みで変化させたシミュレーション波形を重ねて描いています。 d軸電流で言えば,0 A, 125 A, 250 A, 375 A, 500 Aの5パターンです(図中ではd軸電流として条件を注記しています)。
ぐぬぬ…!? ドユコト…!? 負荷電力が大きくなるにつれて不安定になっていますね…💦 図3のモデルでは負荷電力には依存しないように見えますが…。こりゃ一体どういうことなのか…? この,「負荷電力を大きくしていくと直流電圧制御系が不安定になる」という現象のメカニズムが分からず,何日か悩んでいました。 こんなときはそう,まずは絨毯爆撃だッ─とばかり,制御係数Kvと負荷電力Pをともに.step paramで変化させたデータをとりました。 表2に結果を示します*12。 安定であれば「✔」,不安定であれば「✘」と記入しています。
図9の通り,Kv = 3の場合は負荷電力0.5 p.u.と0.75 p.u.の間に安定限界がありますが,例えばKv = 2とすると,負荷電力1 p.u.でも安定となりました。 これを再現できる小信号モデルを立てるため,何日か悩み続けていました。
「逆ぶれ」の発見と改善した小信号モデル
変換器に流入する電力pc
無意識に前提としていたことのひとつが,「系統から流出した電力がそのまま変換器に流入する」という考えでした。 送電線や連系インピーダンスの抵抗成分を無視できる場合,かつ,定常状態ではもちろん間違った考えではありません。 図2, 3もそのような前提に基づいて描いており,電力pは系統からの流出電力です。 電圧源vsdとして表現した系統と,電流源idとして表現した変換器の間にはインピーダンスを何も描いていません。
しかし,直流電圧vdcのダイナミクスに直接影響するのは,系統から流出する電力ではなく,変換器(図1にてRとLを除いた純粋な電圧形インバータ部分)に流入する電力です。 また,実際には系統と変換器の間には連系インピーダンスであるRとLが置かれています。 そう考えたとき,あるアイディアを思いつきました。
系統から取り込むd軸電流idを増加させようとすると,変換器はいったん自分のd軸電圧vdを下げるはず…。 すると,その瞬間に変換器に流入する電力はいくらか小さくなるのではないか…
概念図としては図10のように描けます。系統からの流出電力pと,変換器への流入電力pcを区別して描いています。 d軸電流idを増やそうとすると,インダクタンスLの両端に電圧を立てる必要があるため,変換器はいったん自分のd軸電圧vdを下げます。 すると,本来は増加させたい変換器への流入電力pcがいったん減少,つまり逆ぶれ(逆応答とも言います)してから増加に転じます。 言い換えれば,不安定零点があるシステムと同様の挙動を示すのではないかと考えました。
変換器に流入する電力pcは,変換器のd軸電圧vdとd軸電流idの積です*13。
図10の通り,vdとidが両方とも変化するので,それぞれ動作点と摂動に分けることにします。
(7)式を(6)式に代入すれば,変換器に流入する電力pcは,
と書けます。pcの小信号モデルを作ろうとすると,(8)式右辺第1項は定常項なので除き,また,第4項は摂動(微小量)どうしの積なので無視することができ,
と表現できます。 ナイーブなモデルでは,(9)式右辺第1項しか考えていなかったことになります*14。
ブロック線図
図11,12に,(9)式を応用した直流電圧制御系のモデルと小信号ブロック線図を示します。
図12では,PI制御器P(s)の出力であるd軸電流指令値ΔId*(s)から,(9)式右辺の2つの項に相当する並列システムに分岐しています。 上側のパスでは,ナイーブなモデルと同様に,電流制御系の指令値応答の閉ループ伝達関数Gc(s)からd軸電流ΔIdの応答を得て,さらに動作点でのVdを乗じて(9)式右辺第1項ΔPiを計算します。 下側のパスでは,電流制御系の制御入力(操作量)応答の閉ループ伝達関数Gcc(s)からd軸電圧ΔVdの応答を得て,さらに動作点でのIdを乗じて(9)式右辺第2項ΔPvを計算します。 ΔIdを増やそうとするとΔVdを減らす必要があるので,図12では,上側のパスから下側のパスを減じて合流させ,ΔPを得ています。 これ以外の点では,図12と図3はまったく同じです。
なお,Vdの動作点は,
としました。Rが十分小さければ,Vd ≈ Vsdとしてしまっても良いと思います。 ただし,Rを考慮すると,(9)式右辺第2項を考慮しなくても,若干ですが安定性が負荷電力に依存するようになります*15。
ナイキスト線図と安定限界
それでは早速,図11,12の改善したモデルにてナイキスト線図を描いてみましょう。 まず,図8,9のシミュレーション結果に相当する,制御係数Kv = 3として,負荷電力(d軸電流)を増加していった場合です。 図13に得られたナイキスト線図を示します。
おおっ! 図8,9のシミュレーション結果と同じく,負荷電力が0.5 p.u. (Id = 250 A)と0.75 p.u. (Id = 375 A)の間に安定限界があるように見えます🎵 さらに,Kv = 3に固定したまま,d軸電流を変化させながら閉ループ伝達関数のアニメーションを描いてみると,図14のようになります。 安定限界は負荷電力0.68 p.u. (Id = 340 A)あたりにありそうです*16。 また,右側から不安定零点が迫ってくる様子も分かりますね🌠
安定限界となるであろうKv = 3,Id = 340 Aの条件で,LTspiceにて直流電圧制御系のステップ応答(時刻t = 80 msで直流電圧指令値を0.2% = 1.44 Vだけステップ状に増やす)をシミュレーションしてみます。 すると,持続振動する結果が得られましたので,概ね安定限界となっていると言えそうです。 図15に波形を示します。
今度は逆に,負荷電力(d軸電流)を固定して,Kvを変化させたナイキスト線図を描いてみます。
盛り沢山になってしまいましたが,図16 ~ 20における安定・不安定の境界を探っていくと,表2と完全に一致することが判ります。 モデルは正しそうです。
時間領域・周波数領域での挙動
安定・不安定の境界という点だけでなく,時間領域や周波数領域での挙動についても新しい小信号モデルが妥当であるか確認します。
モデル組み込み
図21に示すように,LTspiceの三相PWM整流器のスキマティックの中に図12の小信号モデルを組み込みました。
これにより,三相PWM整流器の回路としての挙動と,小信号モデルが一致するか,1つのLTspiceシミュレーションの中で確認できます。 図22に,制御係数Kv = 2.1,d軸電流Id = 500 A(負荷電力1 p.u.)の場合のシミュレーション波形を示します。 時刻t = 80 msで直流電圧指令値を0.2% = 1.44 Vだけステップ状に増やしています。 この条件は安定限界に近く,減衰振動が生じており,その周波数は概ね319 Hz (= 2,007 rad/s)となります。 一方,図23に示す閉ループ伝達関数の直接プロットからは,極の虚軸成分が約2,000 rad/s = 318 Hzにあることが判り,ほぼ一致することが判ります。
図22の1段目の赤い波形が実際*17のvdc,青い波形が小信号モデルの挙動です。スイッチングリプル等は当然表現できていませんが,振動周波数や減衰の様相はほぼ一致していると言えそうです。
周波数応答解析(FRA)
次に,図12の小信号モデルの周波数領域での特性をFRA (frequency response analysis)にて確認します。 指令値応答と外乱応答(インピーダンス)の2つについて考えました。
指令値応答
図12のP(s), Q(s), R(s), S(s), T(s)を用いて書けば,直流電圧制御系の指令値応答の小信号閉ループ伝達関数Gvc(s)は
と書けます*18。 制御係数がKv = 2で一定であるとして,動作点としてd軸電流Id = 0 A, 250 A, 500 Aの3パターンを考えます。 図24に示すように,LTspiceのスキマティックの直流電圧指令値にある周波数の摂動を加えます。 .measコマンドにて直流電圧に現れるその周波数の成分をフーリエ解析にて抽出します。 .step paramコマンドにて,摂動の周波数を変化させながら,過渡(.TRAN)解析を繰り返します。 これによって,スイッチング等を含む非線形なシステムにおいても小信号周波数特性を得られます*19*20。 本ブログではFRAを周波数スキャンとも呼んでおります。
ここでは,摂動として,定格直流電圧720 Vの0.2%である1.44 Vを振幅とする正弦波信号を与えました。 また,スキャンする周波数を79.58 Hz (500 rad/s) ~ 1,592 Hz (10,000 rad/s)とし,対数スケール上で20点/decadeとしました。 これで,d軸電流Idの1条件あたり28ケースとなり,合計84ケースとなります。 (11)式の小信号モデルとLTspiceによるFRAの結果を比較すると,図25を得ます。
小信号モデルとLTspiceによるFRA結果はほぼ一致していることが判り,小信号モデルは妥当と言えると考えます。 ただし,d軸電流Id = 0 A,すなわち無負荷の場合,デッドタイムが無視できないほど影響することが分かりました。 デッドタイムなしとしたLTspiceによるFRAはほぼ小信号モデルと一致しますが,Td = 2 μsのデッドタイムを設けると,図25中に薄い青色でプロットした通り,無視できないほどの相違が生じます。 もちろん,デッドタイムがある方が現実的なので,ズレているのは小信号モデルの方です💦 デッドタイムを考慮した小信号モデルを立てることが今後の課題の1つですね。
外乱応答
図26に,三相PWM整流器の直流側に電流外乱ΔDi(s)を加えた場合の小信号ブロック線図を示します。
外乱応答ΔVdc(s) / ΔDi(s)はインピーダンスの次元を持ちますから,Zd(s)と書くことにします。 Zd(s)は,図26中の記号を使って書けば,
となります。 定性的には,低周波側では積分ゲインを持つ直流電圧制御系が十分に働いて,インピーダンスは小さく見えるはずです。積分ゲインによって周波数が低くなる方向に20 dB/decでインピーダンスが小さくなっていくでしょう。積分の影響で偏角は+90°になると考えられます。 一方,高周波側については,制御に関係なく,直流コンデンサC = 10 mFの影響が支配的になり,やはり,インピーダンスは小さく見えるはずです。周波数が高くなる方向で,同じく20 dB/decでインピーダンスが小さくなるでしょう。コンデンサなので偏角はもちろん−90°ですね。 と言うことで,中間の周波数でいったんピークを迎えるような山なりの周波数特性になると思われます。 場合によっては,とある周波数でとんでもなくインピーダンスが大きくなることもあるのかもしれません。 では実際に計算してみましょう。
指令値応答と同様に,図26の小信号モデルとLTspiceによるFRA結果を比較します。図27のように直流側に摂動となる電流源を接続します。 LTspiceによるFRAでは,摂動として定格直流電流200 kW / 720 V = 277.8 Aの10%の27.78 Aの振幅をもつ正弦波電流を与えました。
結果を図28に示します。 小信号モデルとLTspiceによるFRA結果はほぼ一致していることが判り,小信号モデルは妥当と言えると考えます。 ただし,図28のFRAではデッドタイムを零としました。恐らく,Id = 0 Aの場合には,デッドタイムを設けると誤差が生じると考えます。 図29にLTspiceによるFRAの様子を示します。Error logからの「.Plot step'ed .meas data」は複数ケースの.TRAN解析の結果から得られる周波数特性を描いてくれるのでデバッグする上で助かりますね(最終的にはMatplotlibでプロットしてます)。
さて,図28を見ると,インピーダンスの偏角が−90°を超えている,すなわち負性抵抗になっている周波数帯が存在しますね。 この周波数帯で共振するLC直列回路を直流側に接続すると,直流電圧制御系が不安定になると考えられます。 そこで,図30に示すように,ωr = 2,500 rad/s (398 Hz)に共振するL = 0.16 mH,C = 1 mFのLC直列回路を接続してみました。 図28において,2,500 rad/sでは,負荷電力が0 p.u.,0.5 p.u.の場合にはインピーダンスの偏角が−90°未満,すなわち安定ですが,1 p.u.になると−90°を超えて不安定になりそうです。
図31に実際に,LTspiceの過渡(.TRAN)解析を実行した結果を示します。 ただし,時刻t = 20 ms ~ 40 msで負荷電力を0 p.u. (0 kW)から0.5 p.u. (100 kW)にランプ上に立ち上げ,その後t = 80 ms ~ 100 msでで0.5 p.u. (100 kW)から1 p,u. (200 kW)にランプ上に増加させます。
予想通り,電力が1 p.u.まで立ち上がると不安定になる結果が得られました。 おおぉ~,やはり理論とシミュレーション結果(願わくば実験も)が一致するのは気持ちが良いですね🎵
PWM整流器の後段に負荷をつなげる場合,その負荷の入力インピーダンスも気を付けないといけないんですね。 負荷もパッシブなものとは限らず,そこからまたDC-DCコンバータにて適宜変圧していることもあるでしょう。 その場合,例えば入力電流を平滑化しようとLCフィルタのようなものを入力部に設けている場合,軽負荷時にダンピングが足りずに発散する──などということもあるかもしれません。 非線形要素,制御装置等が関係する小信号伝達関数やインピーダンスはなかなか奥が深いなぁと感慨を深く結果を眺めておりました。
まとめとディスカッション
本記事では,三相PWM整流器の直流電圧制御系が安定となる条件について,元々のナイーブな小信号モデルを出発点としてその一見不思議な挙動──負荷電力が大きくなると不安定になる傾向にある──という現象について述べました。 また,それを表現するために変換器への流入電力の「逆ぶれ」を考慮して改善した小信号モデルを立てました。 さらに,改善した小信号モデルの妥当性をLTspiceにて確認しました。 系統連系インバータの制御ではもしかするとこれは常識なのかもしれませんし,あるいはひょっとして盲点としてこれまであまり検討されたことがないことなのかもしれません。 是非,お詳しい方のご意見を頂戴したいと存じます。
もしかすると,系統連系変換器の直流電圧制御については,「電流制御より十分に遅くすべし」という口承のみが伝わり, 詳しいメカニズムは顧みられなくなってしまったのかもしれない──と予想しています。 また,今回は三相のシステムを扱いましたが,単相PWM整流器では2倍周波数の電力脈動による直流電圧の上下に対して制御が働かないよう,直流電圧制御の応答速度を下げる必要があるので,この口承は単相のみで成立するものなのかもしれません*21。
いずれにしても私自身,これまで数年間を「学ぶ」ということを忘れて暮らしてきており,系統連系変換器に関わって生活してきたものの,このような点について理解が及んでいないことに疑問も感じることなく,時間を過ごしてきました。 幸い,昨年に南先生の「Pythonによる制御工学入門」と出会ったことが学び直しの契機となり,放っておいたLTspiceも駆り出して現在に至っています。
あぁ,今回も記事が長すぎましたね…。 3回シリーズでお届けした「LTspiceで三相PWM整流器を作る」ですが,今回でいったん終了となります。 次記事はもっと気楽なネタで書こうと思います💦
*1:https://negligible.hatenablog.com/entry/2020/09/07/043141
*2:https://negligible.hatenablog.com/entry/2020/09/30/023013
*3:PLLが正常に働いていれば,系統電圧のq軸成分vsq = 0になります。
*4:直流電圧制御系は,直流電圧そのものではなく,その2乗を制御したほうが何かと都合が良いのではないかと昔から考えています。
*5:vac × idc = pとし,同じpがある決まった直流電圧vdcを有する系に流入したとすれば,直流電流idcはpをvdcで割ったものとして書けますね。
*6:https://ejje.weblio.jp/content/na%C3%AFve
*7:https://negligible.hatenablog.com/entry/2020/07/15/011258
*8:https://negligible.hatenablog.com/entry/2020/07/24/011819
*9:そのときは添え字のiはなく,ただのKでした。
*10:http://ltwiki.org/?title=Undocumented_LTspice#Behavioral_Resistors
*11:負荷電流源と負荷抵抗器では振動に対するダンピングの効果が異なるために,このような措置としましたが,具体的に計算するとあまり関係なさそうなことも分かります…。
*12:この2次元.step paramを用いたシミュレーションも一晩ほど時間を要しました…。
*13:2020/10/28追記: これはq軸電流iq = 0 Aである場合です。q軸電流が流れている場合には,モデルに若干の変更が必要かもしれません…。
*14:vsdとvdの違いもあります。
*15:「逆ぶれ」に気づく前は,これしか安定性が負荷電力に依存するメカニズムが思いつきませんでした。
*16:もちろんナイキスト線図でも同じく340 Aあたりと判ります。
*17:妥当な言い方が判りませんが,これもシミュレーション内です。
*18:電流制御系はQ(s)の中に含まれています。
*19:http://ltwiki.org/files/LTspiceHelp.chm/html/Bode.htm
*20:https://negligible.hatenablog.com/entry/2020/07/04/042756
*21:Twitterにてそのようなご指摘をいただきました。Twitterのタイムラインには天才たちが渦巻いているので本当に勉強になります。