前置き(いらない)
最近気温がちょっとずつ下がってきて秋の訪れを感じます。
何もしてないのに時間が過ぎていてちょっと怖いです…。
CHMPWM(最適化PWM)とは
大容量インバータなどでPWM周波数をどうしても下げなければいけない場合、どうしても高調波含有量による電動機損失が問題になります。(テンプレ)
この問題を最小限にするため、電流の高調波成分が最小になるようにノッチ角を設定するPWMを高調波電流最小化PWM(CHM: Current Harmonic Minimum)と言います。自己満足です。電流の高調波含有量を最小にすることで、電流リプルによるトルクリプルあるいは電動機の温度上昇を最小限に抑えます。
matlabに便利な関数があると聞いて
僕は前まで適当にpythonでGAアルゴリズム(最近流行りの遺伝的アルゴリズム)を使ってノッチ角を生成していたのですが、matlabにてfmincon関数という便利な最適化関数を使ってノッチ角を生成できそうなので今回はこれを用いてノッチ角を生成してみます。
最小化する評価関数を求める
今回は高調波電流を最小にすることを考えます。
例としてノッチ角をと設定し[図1]のようにPWM波形を生成するとして、次の高調波電圧の振幅は、1/4サイクル毎に対称な波形なので項は消えて奇次高調波の項のみになり、
従って高調波電流は、次の高調波電流実効値を、次の高調波電流振幅を、電動機一相あたり実効漏れインダクタンスを、を基本波角周波数とすると、
ただし、3倍調波は三相結線では流れないので考慮しません。(この式から外れます。)
実装
fmincon関数に関しては他の記事の方が詳しく説明してくれます!!!!!!!
はい!!!!!!!!!!!!
あとは初期値とかで気をつけてもらえれば問題なく生成できるはずです。
生成できた!やったね
さすがmatlabですね、たった108秒ちょいで生成できました。[図2]pythonだと僕の実装力がないせいか5分くらいかかってたのでかなり高速化されています。ちなみにTHD計算のところで結構時間を取られてるみたいでした。fminconの最適化処理はかなり早く済んでいました。今回初期値はかなり適当に設定したのでガバガバです。本来はあらゆる場合の初期値を同時生成し、その中からもっとも良好な波形を選び切り替えるという処理を行って最適PWMを生成します。例として[図3]を参照してください。ノッチ角がカチャカチャ切り替わってるのがお分かりいただけると思います。まあつまり大域的最小解になるよう初期値を常に切り替えてるってことです。
終わり
と言うことで今回はCHMPWMのノッチ角生成をmatlabにやらせてみました。
結果としてpython生成よりかなり処理が早くなったので今後CHMPWMのノッチ角を生成することがあったらmatlabに任せてみようと思います。python苦手です