以下に、本開示の実施の形態について、図面を参照して詳細に説明する。なお、以下では、図中の同一又は相当部分には同一符号を付して、その説明は原則的に繰返さないものとする。
実施の形態1.
図1は、実施の形態1に係る電力変換器の制御装置100aの構成を説明する機能ブロック図である。以下、本実施の形態では、制御対象となる電力変換器500は、DC/DCコンバータ501と、DC/DCコンバータ501の制御信号を発生するスイッチング制御信号発生部502とを含む。DC/DCコンバータ501は、負荷に対して、出力電圧及び出力電流の積で示される直流電力を供給する。
制御装置100aは、DC/DCコンバータ501の出力値Y(t)を、指令値Yd(t)に制御する。制御される出力値Y(t)は、例えば、出力電圧であるが、出力電流、又は、直流電力等とすることも可能である。出力値Y(t)は、図示しないセンサによって検出されて、当該センサによる検出値は、制御装置100aへ入力される。
以下、本実施の形態では、制御装置100aでの制御演算値は、制御周期毎に更新されるものとする。即ち、各変数に付与される添字「(t)」は、任意の制御周期に相当する時間ステップtでの値を示している。更に、時間ステップtの制御周期に対してn周期(n:自然数)前の制御周期に相当する時間ステップを(t-n)と表記して、当該時点での各変数には、添字「(t-n)」を付すこととする。一方で、時間ステップtの制御周期から、n周期(n:自然数)後の制御周期に相当する時間ステップを(t+n)と表記して、当該時点での各変数には、添字「(t+n)」を付すこととする。
制御装置100aは、ハードウェアとしては、図示しない、演算装置、記憶装置、入力回路、及び、出力回路を含むように構成することができる。例えば、演算装置は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)等によって構成することができる。
図1に記載された、制御装置100aを構成する各機能ブロックは、代表的には、上記演算装置が、ROM(Read Only Memory)等の記憶装置に記憶されたソフトウェア(プログラム)を実行し、かつ、記憶装置、入力回路、及び出力回路等の他のハードウェアと協働することにより、各機能を実現することができる。また、各機能ブロックによる機能の一部又は全部について、専用の電子回路(ハードウェア)によって実現することも可能である。各機能ブロックの機能を実現するためのハードウェアは、同一のチップに搭載されてもよく、複数のチップに分割して搭載されてもよい。
制御装置100aは、フィードバック(FB)演算部101と、フィードフォワード(FF)演算部102と、制御量合成部103と、エミュレータ演算部104と、制御量補正部105と、リミッタ処理部106とを備える。
フィードバック演算部101は、一般的なフィードバック制御により、FB制御量Ub(t)を算出する。フィードフォワード演算部102は、FF学習を伴って、FF演算量Uf(t)を算出する。
制御量合成部103は、FB制御量Ub(t)及びFF演算量Uf(t)を合成することにより、基本制御量U1(t)を算出する。例えば、FB制御量Ub(t)及びFF演算量Uf(t)の加算によって、基本制御量U1(t)を算出することが可能である(U1(t)=Ub(t)+Uf(t))。
エミュレータ演算部104は、制御対象(電力変換器500)の動作模擬により、入力制御量Ud(t-1)に対する出力予測値Ym(t)を算出する。出力予測値Ym(t)は、主に、オーバーシュート量を予測するために求められる。
制御量補正部105は、制御量選択部3、及び、補正演算部7を有する。補正演算部7は、エミュレータ演算部104による出力予測値Ym(t)から求められるオーバーシュート量が予め定められた基準より大きいときに、補正制御量U2(t)を算出する。
制御量選択部3は、FF制御及びFB制御による基本制御量U1(t)と、補正演算部7による補正制御量U2(t)との一方を選択して、制御量U(t)として出力する。具体的には、上記オーバーシュート量が基準より大きいことに応じて補正演算部7によって補正制御量U2(t)が算出されると、次の制御周期にて、1つ前の制御周期で算出された補正制御量U2(t-1)が制御量U(t)とされる。一方で、上記のように補正制御量U2(t)が算出されない制御周期では、次の制御周期において、U(t)=U1(t)とされる。このように、制御量選択部3では、1つ前の制御周期でのエミュレータ演算部104での演算結果に従って、U(t)=U1(t)、及び、U(t)=U2(t-1)の一方が選択される。
リミッタ処理部106は、制御量選択部3が出力した制御量U(t)を受けて、電力変換器500(制御対象)への最終的な入力制御量Ud(t)を生成する。入力制御量Ud(t)は、リミッタ処理により、0~1.0の範囲内に制限される。即ち、制御量選択部3からの制御量U(t)が1より大きいと(U(t)>1.0)、Ud(t)=1.0に修正される。又、入力制御量Ud(t)が負であると(U(t)<0)、Ud(t)=0に修正される。これに対して、制御量U(t)=0~1.0の範囲内であれば(0≦U(t)≦1.0)、制御量U(t)がそのまま最終的な入力制御量Ud(t)とされる(Ud(t)=U(t))。
リミッタ処理部106からの入力制御量Ud(t)は、制御装置100aの出力値として、スイッチング制御信号発生部502へ入力される。即ち、入力制御量Ud(t)は、制御対象(電力変換器500)の操作量に対応する。
スイッチング制御信号発生部502は、各制御周期において、制御装置100aから出力された入力制御量Ud(t)に従って、DC/DCコンバータ501の制御信号を生成する。例えば、DC/DCコンバータ501は、トランジスタ等のスイッチング素子(図示せず)のデューティ比、即ち、周期的にオンオフされるスイッチング素子の各スイッチング周期でのオン時間の比率によって、出力値Y(t)を制御するように構成される。従って、スイッチング制御信号発生部502が発生する制御信号は、入力制御量Ud(t)によって示されるデューティ比を有する、上記スイッチング素子のオンオフ制御信号、より具体的には、デューティ比が変化する電圧パルス信号とすることができる。本実施の形態では、スイッチング素子のデューティ比を高くすると出力値Y(t)が上昇し、当該デューティ比を低くすると出力値Y(t)が低下するものとして説明を進める。
次に、各ブロックの構成及び動作を詳細に説明する。
フィードバック演算部101は、減算部1及びFB制御量算出部2を有する。減算部1は、指令値Yd(t)に対する出力値Y(t)の偏差ΔY(t)を算出する(ΔY(t)=Yd(t)-Y(t))。
図2には、FB制御量算出部8の構成例を説明する機能ブロック図が示される。
図2を参照して、FB制御量算出部2は、比例動作部2A、積分動作部2B、及び、微分動作部2Cを有する。
厳密には、FB制御量算出部2は、1つ前の制御周期における偏差から次の制御周期での制御量を算出する。図2の例では、偏差Y(t-1)を用いて、FB制御量Ub(t)が算出される。
従って、比例動作部2Aは、比例ゲインKp及び偏差ΔY(t-1)の積を比例制御量として出力する。積分動作部2Bは、積分制御量の現在の値に対して、偏差ΔY(t-1)及び積分ゲインKiの積を加算することによって更新した値を、新たな積分制御量として出力する。微分動作部2Cは、偏差ΔY(t-1)及びΔY(t-2)の差分値と微分ゲインKdとの積を、微分制御量として出力する。
FB制御量算出部2は、比例動作部2A、積分動作部2B、及び、微分動作部2Cからそれぞれ出力された、比例制御量、積分制御量、及び、微分制御量を加算してFB制御量Ub(t)を算出する。
次に、FF演算部102について、詳細に説明する。
再び図1を参照して、FF演算部102は、FF演算量Uf(t)を算出するFF制御量算出部8と、FF学習データファイル10とを有する。
FF学習データファイル10は、DC/DCコンバータ501の運転中における制御データを収集して学習データとして記憶する。具体的には、FF学習データファイル10には、各制御周期(時間ステップt)における指令値Yd(t)と、DC/DCコンバータ501の出力値Y(t)と、制御量合成部103が出力した基本制御量U1(t)とが、学習データとして記憶される。
FF制御量算出部8は、FF学習データファイル10に記憶された学習データを用いて構築されたFF学習モデルを用いて、指令値Yd(t)と、1周期前の出力値Y(t-1)及び基本制御量U1(t-1)とから、FF制御量Uf(t)を算出する。
図3は、FF制御量算出部8の構成の一例を説明する概念図である。図3に示されるように、FF制御量算出部8は、例えば、ニューラルネットワークを用いて構成することができる。
図3を参照して、FF制御量算出部8のFF学習モデルを構成するニューラルネットワーク120は、入力層を構成するK個(K:2以上の整数)のニューロンと、出力層を構成するL個(L:自然数)のニューロンと、入力層及び出力層の間に接続された隠れ層を構成する複数のニューロンとを含む。更に、隠れ層は、M層に亘って最大J個(M,J:2以上の整数)のニューロンが相互接続されて構成される。上述の個数パラメータK,L,M,Jを決定することにより、ニューラルネットワーク120の構造が設定される。このように、入力層、隠れ層、出力層の数、及び、各層のニューロン数によって、ニューラルネットワーク120の構造を任意に設定することができる。図3中に円記号で表記した各ニューロンには、活性化関数が入力される。例えば、活性化関数にはシグモイド関数を用いることができるが、公知の任意の活性化関数を適用することができる。更に、各ニューロン間の重み係数は、後述するように、例えば、過去の実績値から得られた複数の学習データを用いた機械学習によって決定することができる。
図3の例では、K=3、かつ、L=1であり、入力層には、3個のニューロンN11a~N13aが配置されるとともに、出力層には、ニューロンN20が配置される。
次に、図4~図7を用いて、FF演算部102での学習処理を説明する。
図4には、FF学習データファイル10に学習データを格納するための制御処理を説明するフローチャートが示される。
図4を参照して、制御装置100aは、ステップ(以下、単に「S」と表記する)100により、現在の制御周期(時間ステップt)における、指令値Yd(t)を抽出して、FF学習データファイル10に記憶する。制御装置100aは、S110では、同じ制御周期(時間ステップt)の基本制御量U1(t)を抽出し、FF学習データファイル10に記憶する。上述のように、基本制御量U1(t)は、当該制御周期のFF制御量Uf(t)及びFB制御量Ub(t)を合成することによって得られる。
更に、制御装置100aは、S120では、時間ステップtにおいて、DC/DCコンバータ501が出力した出力値Y(t)を抽出し、FF学習データファイル10に記憶する。
これにより、DC/DCコンバータ501の運転時には、制御周期毎に、学習データをFF学習データファイル10に格納することができる。
図5には、FF演算部102によるFF学習を説明する概念図が示される。
図5を参照して、FF学習は、DC/DCコンバータ501の運転停止時に実行することができる。FF学習データファイル10に格納された学習データから、Nx個(Nx:2以上の自然数)の学習データのセットを選んで、図3に示されたニューラルネットワーク120の機械学習を行う。
具体的には、ある制御周期(時間ステップt)における、指令値Yd(t)と、その1つ前の制御周期における基本制御量U1(t-1)及び出力値Y(t-1)とを入力データとし、当該制御周期での基本制御量U1(t)を教師データとするように、1セットの学習データが構成される。
そして、FF制御量算出部8によるFF学習モデル(例えば、図3のニューラルネットワーク120)に対して、指令値Yd(t)、基本制御量U1(t-1)、及び、出力値Y(t-1)を入力した結果、出力値として算出されるFF制御量Uf(t)と、教師データである基本制御量U1(t)との偏差(Uf(t)-U1(t))が小さくなるように、FF学習モデルの機械学習(FF学習)が実行される。
図6は、図5に示されたFF学習の制御処理の一例を説明するフローチャートである。図6では、図3のニューラルネットワーク120が、FF学習モデルとして用いられるときの制御処理が示される。
図6を参照して、制御装置100aは、S200により、ニューラルネットワーク120の構造を設定する。具体的には、入力層及び出力層の数、並びに、隠れ層及び各相のニューロン数が設定されることで、ニューラルネットワーク120の構造が設定される。
制御装置100aは、S210では、ニューラルネットワーク120内の各ニューロン間の重み係数の初期値を設定する。例えば、各初期値は、0から1までの実数の乱数を用いて設定することができる。
制御装置100aは、S220では、FF学習データファイル10から、基本制御量U1(t-1)及び出力値Y(t-1)と、1周期後の指令値Yd(t)及び基本制御量U1(t)とを、1セットの学習データとして読み込む。S220では、合計Nxセットの学習データがFF学習データファイル10から読み出される。
指令値Yd(t)、基本制御量U1(t-1)、及び、出力値Y(t-1)をニューラルネットワーク120の入力層に入力すると、出力層にFF制御量Uf(t)が得られることになる。機械学習は、出力層に得られるFF制御量Uf(t)と、教師データである基本制御量U1(t)との誤差が小さくなるように、各ニューロン間の重み係数を設定するように実行される。
制御装置100aは、S230では、ニューラルネットワーク120の出力値Uf(t)と、教師データ(基本制御量U1(t))との誤差を解消するように、ニューラルネットワーク120の重み係数を修正する。
S230では、学習データの各セットについて、修正後の重み係数が用いられたニューラルネットワーク120での出力値βi(βi=Uf(t))及び教師データ値Yi(Yi=U1(t))の誤差の二乗平均値(二乗平均誤差)が求められる。そして、制御装置100aは、S240では、S230で求められた二乗平均誤差を用いて収束判定を実行する。
例えば、合計Nxセットの学習データのうちのi番目のセット(i:1≦i≦Nxの自然数)の学習データについて、二乗誤差Ei=(Yi-βi)2を定義すると、i=1からi=NxまでのEiを積算したΣEiの平均値(ΣEi)/Nxが、予め定められた判定値ε(例えば、0.001)よりも小さくなると、S240をYES判定とすることができる。
二乗平均誤差が収束しないとき、即ち、(ΣEi)/Nx>εのときには、S240がNO判定とされて、S230に処理が戻される。このとき、S230では、例えば誤差逆伝搬法を用いて、重み係数が修正される。そして、修正後の重み係数を用いたニューラルネットワーク120に対して、再びNxセットの学習データを用いて、二乗平均誤差が求められる。S230及びS240による繰り返し計算は、二乗平均誤差が収束する重み係数が得られるまで実行される。
二乗平均誤差が収束したとき(S240のYES判定時)には、ニューラルネットワーク120の機械学習が終了され、繰り返し計算によって得られた重み係数が、FF制御量算出部8に記憶される。これにより、FF制御量算出部8は、図6による機械学習で求められたニューラルネットワーク120を有することになる。
一般に、ニューラルネットワーク120の学習が一度も実施されていない場合には、FF制御量算出部8の動作は停止される(Uf(t)=0)。一方で、FF制御量算出部8の動作時には、図7に示された制御処理によって、FF制御量Uf(t)が算出される。
図7は、FF制御量算出部の動作を説明するフローチャートである。
図7を参照して、制御装置100aは、S300では、FF学習データファイル10から1つ前の制御周期における基本制御量U1(t-1)及び出力値Y(t-1)を抽出するとともに、現在の時間ステップtにおける指令値Yd(t)を受ける。
制御装置100aは、S310では、基本制御量U1(t-1)、出力量Y(t-1)、及び、指令値Yd(t)を、ニューラルネットワーク120(図3)の入力層に入力する。そして、S320では、S310での入力層への入力に応じて、ニューラルネットワーク120の出力層で求められたFF制御量Uf(t)が、FF制御量算出部8から出力される。
このように、DC/DCコンバータ501の運転時に得られた学習データを用いた機械学習によって、1つ前の制御周期における基本制御量U1(t-1)及び出力値Y(t-1)と、現在の制御周期における指令値Yd(t)から、FF制御量Uf(t)を求めることができる。
次に、エミュレータ演算部104について、詳細に説明する。
再び図1を参照して、エミュレータ演算部104は、エミュレータ部9と、エミュレータ学習データファイル11とを有する。
エミュレータ学習データファイル11は、DC/DCコンバータ501の運転中における制御データを収集して学習データとして記憶する。具体的には、エミュレータ学習データファイル11には、現在の制御周期(時間ステップt)における、スイッチング制御信号発生部502への入力制御量Ud(t)、及び、DC/DCコンバータ501の出力値Y(t)が、学習データとして記憶される。
エミュレータ部9は、エミュレータ学習データファイル11に格納された学習データを用いて構築されたエミュレータ学習モデルを用いて、1つ前の制御周期の入力制御量Ud(t-1)及び出力値Y(t-1)から、DC/DCコンバータ501の出力予測値Ym(t)を算出する。
図8は、エミュレータ部9の構成の一例を説明する概念図である。図8に示されるように、エミュレータ部9についても、FF制御量算出部8と同様に、ニューラルネットワークを用いて構成することができる。
図8を参照して、エミュレータ部9を構成するニューラルネットワーク130についても、図3に示したニューラルネットワーク120(FF制御量算出部8)と同様に、K個のニューロンによる入力層と、L個のニューロンによる出力層と、J個のニューロンによる隠れ層とを構成する複数のニューロンによって構成することができる。図8の例では、K=2,かつ、L=1であり、入力層には、2個のニューロンN11b,N12bが配置されるとともに、出力層には、ニューロンN21が配置される。
次に、図9~図11を用いて、エミュレータ演算部104での学習処理を説明する。
図9には、エミュレータ学習データファイル11に学習データを格納するための制御処理を説明するフローチャートが示される。
図9を参照して、制御装置100aは、S400により、現在の制御周期(時間ステップt)における、スイッチング制御信号発生部502に入力された入力制御量Ud(t)を抽出して、エミュレータ学習データファイル11に記憶する。
更に、制御装置100aは、S410では、現在の制御周期(時間ステップt)における、DC/DCコンバータ501が出力した出力値Y(t)を抽出して、エミュレータ学習データファイル11に記憶する。これにより、DC/DCコンバータ501の運転時には、制御周期毎に、学習データをエミュレータ学習データファイル11に格納することができる。
図10には、エミュレータ演算部104によるエミュレータ学習を説明する概念図が示される。
図10を参照して、エミュレータ学習データファイル11に格納された学習データから、Ny個(Ny:2以上の自然数)の学習データのセットを選んで、図8に示されたニューラルネットワーク130の機械学習を行うことができる。
具体的には、ある制御周期(時間ステップt-1)における入力制御量Ud(t-1)及び出力値Y(t-1)を入力データとし、次の制御周期での出力値Y(t)を教師データとするように、1セットの学習データが構成される。
そして、エミュレータ部9によるエミュレータ学習モデル(例えば、図8のニューラルネットワーク130)に対して、入力制御量Ud(t-1)及び出力値Y(t-1)を入力した結果、出力値として算出される出力予測値Ym(t)と、教師データである実際の出力値Y(t)との偏差(Ym(t)-Y(t))が小さくなるように、エミュレータ学習モデルの機械学習(エミュレータ学習)が実行される。
図11は、図10に示されたエミュレータ学習の制御処理の一例を説明するフローチャートである。図11では、図8のニューラルネットワーク130が、エミュレータ学習モデルとして用いられるときの制御処理が示される。
図11を参照して、制御装置100aは、S500により、S200(図6)と同様に、ニューラルネットワーク130の構造を設定すると、S510により、S210(図6)と同様に、ニューラルネットワーク130内の各ニューロン間の重み係数の初期値を設定する。
制御装置100aは、S520では、エミュレータ学習データファイル11から、入力制御量Ud(t-1)及び出力値Y(t-1)と、1周期後の出力値Y(t)とを、1セットの学習データとして読み込む。S520では、合計Nyセット(Ny:2以上の自然数)の学習データがエミュレータ学習データファイル11から読み出される。
入力制御量Ud(t-1)及び出力値Y(t-1)をニューラルネットワーク130の入力層に入力すると、出力層に出力予測値Ym(t)が得られることになる。エミュレータ学習は、出力層に得られる出力予測値Ym(t)と、教師データである実際の出力値Y(t)との誤差が小さくなるように、各ニューロン間の重み係数を設定するように実行される。
制御装置100aは、S530では、ニューラルネットワーク130の出力層の出力予測値Ym(t)と、教師データ(出力値Y(t))との誤差を解消するように、ニューラルネットワーク130の重み係数を修正する。
S530では、各セットについて、出力値βi(βi=Ym(t))及び教師データ値Yi(Yi=Y(t))の誤差の二乗平均値(二乗平均誤差)が求められる。そして、制御装置100aは、S540では、S530で求められた二乗平均誤差を用いて収束判定を実行する。
例えば、合計Nyセットの学習データのうちのi番目のセット(i:1≦i≦Nyの自然数)の学習データについて、二乗誤差Ei=(Yi-βi)2を定義すると、i=1からi=NyまでのEiを積算したΣEiの平均値(ΣEi)/Nyが、予め定められた判定値ε(例えば、0.001)よりも小さくなると、S540をYES判定とすることができる。
二乗平均誤差が収束しないとき、即ち、(ΣEi)/Ny>εのときには、S540がNO判定とされて、S530に処理が戻される。このとき、S530では、例えば誤差逆伝搬法を用いて、重み係数が修正される。そして、修正後の重み係数を用いたニューラルネットワーク130に対して、再びNyセットの学習データを用いて、二乗平均誤差が求められる。S530及びS540による繰り返し計算は、二乗平均誤差が収束する重み係数が得られるまで実行される。
二乗平均誤差が収束したとき(S540のYES判定時)には、ニューラルネットワーク130のエミュレータ学習が終了され、繰り返し計算によって得られた重み係数が、エミュレータ部9に記憶される。これにより、エミュレータ部9は、図10によるエミュレータ学習で求められたニューラルネットワーク130を有することになる。
このようにすると、FF学習で説明したのと同様に、機械学習されたニューラルネットワークを用いて、エミュレータ部9を構成することができる。例えば、ニューラルネットワーク130の学習処理(図11)は、DC/DCコンバータ501の運転中にエミュレータ学習データファイル11に蓄積された学習データを用いて、DC/DCコンバータ501の運転停止中に実行することができる。或いは、処理時間が許容される場合には、ニューラルネットワーク130を、DC/DCコンバータ501の運転中にリアルタイムで学習してもよい。
但し、エミュレータ部9は、上記以外の構成とすることも可能である。例えば、エミュレータ部9の学習には、ニューラルネットワーク以外にも、ファジー制御による方法、又は、ファジー及びニューラルネットワークを組み合わせた方法等も用いても良い。
或いは、エミュレータ部9は、予め作成されたテーブルの参照によって実現されてもよい。具体的には、事前に、DC/DCコンバータ501の実際のデータに基づき、入力制御量Ud(t-1)及び出力値Y(t-1)の入力の組み合わせに対して、出力予測値Ym(t)をテーブル値として格納するテーブルを予め作成しておくことができる。そして、当該テーブルの複数の入力の組み合わせのうちの、実際の入力制御量Ud(t-1)及び出力値Y(t-1)の組み合わせに最も近い2つに対するテーブル値を用いて、出力予測値Ym(t)を算出することも可能である。この場合にも、DC/DCコンバータ501の運転時に得られたデータから上記テーブル値を更新することで当該テーブルを逐次学習することが可能である。
このように、エミュレータ演算部104は、制御対象(電力変換器500)の動作模擬により、入力制御量Ud(t-1)に対する1つの後の制御周期での出力予測値Ym(t)を算出することができる。
次に、制御量補正部105について、詳細に説明する。
再び図1を参照して、制御量補正部105は、制御量選択部3と、補正演算部7とを有する。
補正演算部7は、エミュレータ部9による演算と連動して、入力制御量Ud(t)に対する補正が必要か否かを判定するとともに、当該判定結果に応じて補正制御量U2(t)を生成する。制御量選択部3は、制御量合成部103による基本制御量U1(t)と、補正演算部7による補正制御量U2(t)を受けて、制御量U(t)を出力する。
より詳細には、ある制御周期において、補正演算部7によって入力制御量Ud(t)の補正が必要と判定された場合には、次の制御周期において、1つ前の制御周期で算出された補正制御量U2が、制御量U(t)として出力される(U(t)=U2(t-1))。一方で、ある制御周期において、入力制御量Ud(t)の補正が不要と判定された場合には、次の制御周期において、基本制御量U1(t)が制御量U(t)として出力される(U(t)=U1(t))。
図12A及び図12Bには、エミュレータ部9及び補正演算部7による制御処理を説明するフローチャートが示される。以下の説明で明らかになる様に、補正演算部7による補正制御量U2(t)の算出は、エミュレータ部9との協働によって実現される。
図12A及び図12Bを参照して、制御装置100aは、S600では、スイッチング制御信号発生部502に与えられる入力制御量Ud(t)、及び、DC/DCコンバータ501の出力値Y(t)を抽出する。更に、現在の制御周期での指令値Yd(t)を抽出する。
制御装置100aは、S605により、指令値Yd(t)にオフセット量δ(δ>0)を加算した許容指令値Yd♯(t)を設定する。例えば、オフセット量δは、許容されるオーバーシュート量の上限値に相当する。
制御装置100aは、S610では、S600で抽出した、入力制御量Ud(t)及び出力値Y(t)を、ニューラルネットワーク130(エミュレータ部9)の入力層に入力する。これにより、S620では、ニューラルネットワーク130の出力層に、次の制御周期の出力予測値Ym(t+1)が出力される。
制御装置100aは、S630により、エミュレータ部9での出力予測値Ym(t+1)と、オーバーシュート許容量が反映された許容指令値Yd♯(t)とを用いて、オーバーシュートの発生有無を判定する。
例えば、S630では、|Ym(t+1)|及び|Yd♯(t)|の大小比較と、Ym(t+1)及びYd♯(t)の符号(正負)比較が行われる。具体的には、Ym(t+1)及びYd♯(t)が同符号であり(即ち、Ym(t+1)・Yd♯(t)≧0)、かつ、|Ym(t+1)|>|Yd♯(t)|であるという条件が成立すると、Ym(t+1)がYd♯(t)を超過するため、オーバーシュートが発生すると判定される。
制御装置100aは、オーバーシュートが発生すると判定されたときには(S630のYES判定時)、補正制御量U2(t)の算出処理のための初期設定として、S640により、パラメータα=α0に設定し(例えば、α0=1.0)、S650により、パラメータj=0に設定する(j:整数)。
制御装置100aは、S660では、S630と同様の判定を実行する。更に、S665では、パラメータjが現在の値から1増加される。そして、S670では、S640での初期値α0から、S665による増加後のパラメータjと、予め定められた刻み値ΔU(例えば、ΔU=0.1)とを乗算した値を減算することによって、パラメータαが更新される(α=α0-j・ΔU)。
制御装置100aは、S675により、S670による更新後のパラメータαと、S600での入力制御量Ud(t)との乗算によって、入力制御量Ud(t)を更新する。更に、S680では、S675による更新後の入力制御量Ud(t)と、S600で抽出された出力値Y(t)が、ニューラルネットワーク130(エミュレータ部9)の入力層に入力される。これにより、S685では、ニューラルネットワーク130の出力層に、更新後のUd(t)に対応する出力予測値Ym(t+1)が出力される。
制御装置100aは、更新後の入力制御量Ud(t)を用いて、エミュレータ部9が出力予測値Ym(t)を算出すると(S685)、S660に処理を戻す。これにより、S685で得られた出力予測値Ym(t+1)を用いて、S630と同様の判定が実行される。これにより、S675で更新された入力制御量Ud(t)を用いたときのオーバーシュートの発生有無が判定されることになる。
更新後の入力制御量Ud(t)をエミュレータ部9に入力して得られた出力予測値Ym(t+1)のオーバーシュート量が、許容指令値Yd♯(t)に反映されたオーバーシュート許容量(δ)よりも小さいときには、S660がNO判定とされて、処理はS690に進められる。この場合には、最後にS675で更新された入力制御量Ud(t)が、補正制御量U2(t)に採用される(U2(t)=Ud(t))。
一方で、S660がYES判定のときには、出力予測値Ym(t+1)のオーバーシュート量がオーバーシュート許容量よりも大きいため、S675で更新された入力制御量Ud(t)について、更に補正が必要であるので、S665~S685の処理が再び実行される。以降では、S665~S685の処理が実行される毎にS660の判定が実行され、S660がNO判定となるまで、S665~S685の処理が繰り返されることになる。
この際に、S665及びS670によって、繰り返し毎に入力制御量Ud(t)は、ΔV倍(例えば、0.1倍)刻みで減少するように更新される。各更新後の入力制御量Ud(t)に対するエミュレータ部9の出力予測値Ym(t+1)を用いてS660の判定が実行されるので、最終的には、オーバーシュートが許容量以下に抑制された出力予測値Ym(t+1)を得ることが可能な入力制御量Ud(t)が、S690により、補正制御量U2(t)に採用されることになる。
このように、S630により、補正演算部7に入力された当初の入力制御量Ud(t)では、オーバーシュートが発生すると判定された場合には(S630のYES判定時)、S690によって、オーバーシュートを許容量以下に抑制するための補正制御量U2(t)が、図12A及び図12Bの処理によって得られることになる。
これに対して、S630により、補正演算部7に入力された当初の入力制御量Ud(t)を用いてもオーバーシュートを許容量以下に抑制できると判定された場合には(S630のNO判定時)には、処理はS695に進められる。この場合には、S640~S685による補正制御量U2(t)の算出処理は実行されない。
従って、S695では、補正制御量U2(t)は、補正制御量の算出が実行されなかったことを示すための特別な定数-Ceに設定される。ここでは、定数-Ceは、入力制御量Ud(t)が通常設定される範囲から大きく外れた負値に設定されるものとする(例えば、-Ce=-1.0×E+10)。
再び、図1を参照して、補正演算部7は、現在の制御周期での入力制御量Ud(t)、出力値Y(t)、及び指令値Yd(t)を用いて、次の制御周期における補正制御量を算出していることになる。即ち、補正演算部7から出力される補正制御量U2(t)は、実際には、次の制御周期で用いられるべき値である。この点は、次に説明する制御量選択部3での制御処理に反映される。
図13は、制御量選択部3に係る制御処理を説明するフローチャートである。
尚、図13の制御処理には、パラメータγが導入される。パラメータγは、補正演算部7から出力された、次の制御周期で用いられるべき補正制御量U2(t)を一時的に保存するためのものであり、補正演算部7の起動時には、初期値である-Ceに設定されているものとする。
図13を参照して、制御装置100aは、S700では、制御量合成部103から出力された基本制御量U1(t)と、補正演算部7から出力された補正制御量U2(t)とを制御量選択部3に入力する。
制御装置100aは、S710により、基本的な設定として、基本制御量U1(t)を、制御量選択部3から出力される制御量U(t)に設定する(U(t)=U1(t))。
更に、制御装置100aは、S720により、パラメータγが、定数-Ceであるか否かを判定する。例えば、S720では、γ>-Ceであるか否かが判定される。
ここで、後述するS750~S770の処理により、パラメータγは、1つ前の制御周期において、補正制御量U2(t)が算出されていなかったときには(即ち、U2(t)=-Ceのとき)、γ=-Ceに設定されている。一方で、1つ前の制御周期において、補正演算部7が補正制御量U2(t)を算出したときには(即ち、U2(t)>-Ceのとき)、γ=U2(t)に設定されている。
S720のYES判定時、即ち、γ>-Ceのときには1つ前の制御周期において、補正演算部7では、入力制御量Ud(t)を補正するために、補正制御量U2(t)の算出処理が実行されていることになる。従って、制御装置100aは、S730により、S710での設定を上書きして、U(t)=γに設定する。これにより、1つ前の制御周期において補正演算部7が算出した補正制御量U2(t-1)に従って、リミッタ処理部106に対して出力される制御量U(t)が設定される(U(t)=U2(t-1))。
更に、S740では、FF学習データファイル10に対して、学習データとして出力される基本制御量U1(t)についても、U1(t)=γに修正される。即ち、補正演算部7によって算出された、オーバーシュートを許容量以下に抑制するための補正制御量U2(t)が、制御量合成部103から出力された基本制御量U1(t)に代えて、学習データ(より特定的には、教師データ)とされる。
一方で、S720のNO判定時、即ち、γ=-Ceのときには、1つ前の制御周期において、補正演算部7では、入力制御量Ud(t)の補正のための補正制御量U2が算出されていない。従って、制御装置100aは、S730及びS740をスキップする。即ち、S710でのU(t)=U1(t)が維持される。
制御装置100aは、S750~S770では、上述した、補正演算部7からの補正制御量U2(t)をパラメータγに格納する処理を行う。S750では、補正制御量U2(t)が定数-Ceであるか否かが判定される。上述の様に、補正演算部7で補正制御量U2(t)が算出されていないときには、U2(t)=-Ceに設定されるので、S750はNO判定とされる。この場合には、S770により、パラメータγについても、γ=-Ceに設定される。
これに対して、補正演算部7がオーバーシュートを抑制するための補正制御量U2(t)を算出したときには、U2(t)>-Ceに設定されるので、S750はYES判定とされる。この場合には、S760により、パラメータγに補正制御量U2(t)を格納するために、γ=U2(t)に設定される。
図13の制御処理によって、制御装置100aは、1つ前での制御周期においてオーバーシュートを抑制するための補正制御量U2(t)が算出されると、その1つ後の制御周期では、制御量U(t+1)を、FF制御及びFB制御による基本制御量U1(t+1)から当該補正制御量U2(t)に補正することができる。
このように、実施の形態1に係る電力変換器の制御装置によれば、FB制御及びFF制御による基本制御量U1(t)をベースとしつつ、エミュレータ部9による出力予測値Ym(t)に基づくオーバーシュート許容量の超過判定結果に基づいて、エミュレータ部9を用いて補正制御量U2(t)を設定することにより、オーバーシュート量を許容量以下に抑制する制御を実現することができる。
又、エミュレータ部9による1つ後の制御周期での出力予測値Ym(t+1)に基づいて補正制御量U2(t)を算出するので、エミュレータ部9に過大な演算速度を要することなく、制御処理を実現することができる。即ち、本実施の形態では、時間ステップ(t)が「第1の時間ステップ」に対応するときは、時間ステップ(t+1)が「第2の時間ステップ」に対応し、時間ステップ(t-1)が「第1の時間ステップ」に対応するときは、時間ステップ(t)が「第2の時間ステップ」に対応することになる。又、「第2の時間ステップ」は、「第1の時間ステップ」の1つ後の制御周期のみに限定されず、「第1の時間ステップ」に対して、2以上(例えば、2又は3)先の制御周期を「第2の時間ステップ」とすることも可能である。
図14~図16には、実施の形態1に係る電力変換器の制御装置によるDC/DCコンバータ501の出力制御のシミュレーション結果が示される。
図14には、制御装置100aにおいて、FB演算部101のみを動作させ、FF演算部102及び制御量補正部105を停止したときのシミュレーション波形が示される。
図14を参照して、点線で示された指令値Yd(t)が周期的に変化するパターンの下で、制御装置100aによって設定された入力制御量Ud(t)によって制御対象(電力変換器500)が制御されることによって、出力値Y(t)が変化する。
図14のシミュレーションでは、図1において、U(t)=Ub(t)とされて、電力変換器500への入力制御量Ud(t)が算出される。FB制御のみでは、指令値Yd(t)の変化に応じて発生した偏差ΔY(t)を補償することで、出力値Y(t)が制御される。この結果、指令値Yd(t)の変化に対応して、出力値Y(t)を速やかに追従させることが困難である。
図15には、制御装置100aにおいて、FB演算部101及びFF演算部102を動作させる一方で、制御量補正部105を停止したときのシミュレーション波形が示される。
図15を参照して、図14と同様のパターンで変化する指令値Yd(t)に対して、図15のシミュレーションでは、FB制御及びFF制御の組み合わせにより電力変換器500への入力制御量Ud(t)が算出される。具体的には、図1において、U1(t)=Ub(t)+Uf(t)とし、U1(t)を補正することなくU(t)=U1(t)とすることで、入力制御量Ud(t)が算出される。
図15の波形からは、FB制御及びFF制御の組み合わせにより、指令値Yd(t)の変化に応じて出力値Y(t)を速やかに追従できることが読み取れる。一方で、上述した様に、FF制御では、速やかにU1(t)=Uf(t)となるように、FF学習が行われている。このため、指令値Yd(t)の変化に対する出力値Y(t)の追従性は高い一方で、オーバーシュート量が大きくなっていることが理解される。
図16には、制御装置100aにおいて、FB演算部101、FF演算部102、エミュレータ演算部104、及び、制御量補正部105を動作させたときのシミュレーション波形が示される。
図16を参照して、図14と同様のパターンで変化する指令値Yd(t)に対して、図15のシミュレーションでは、FB制御及びFF制御の組み合わせに対して、エミュレータ部9を用いた制御量の補正を更に加えて、入力制御量Ud(t)が算出される。具体的には、上述の実施の形態1に沿って入力制御量Ud(t)が算出される。
図16及び図15の比較から、実施の形態1に係る制御装置では、エミュレータ部9を用いて探索された、オーバーシュート量が許容量以下となるような補正制御量U2(t)への補正を組み合わせることで、オーバーシュート量が減少することが読み取れる。このように、実施の形態1に係る制御装置100aによれば、指令値の変更に対して出力値を追従する際のオーバーシュートを抑制することが可能となる。
尚、実施の形態1では、出力値Y(t)のオーバーシュート量、即ち、上昇した指令値Yd(t)に対して出力値Y(t)が追従する際における、Y(t)-Yd(t)を抑制する制御について説明したが、同様の制御を、低下した指令値Yd(t)に対して出力値Y(t)が追従する際におけるアンダーシュート量の抑制にも適用することができる。
例えば、指令値Yd(t)が低下した際には、図12AのS605については、許容指令値Yd♯(t)をYd♯(t)=Yd(t)-δ(δ>0)と設定するように変更し、かつ、図12BのS670については、α=α0+j・ΔVと演算するように変更すれば、補正演算部7によって、アンダーシュート量が許容値δを超えないような補正制御量U2(t)を算出することができる。
更に、図1では、制御量合成部103について、単純な加算によってFF制御量Uf(t)及びFB制御量Ub(t)を合成する例を説明した(U1(t)=Uf(t)+Ub(t))。しかしながら、制御量合成部103は、両者の重み付けを伴う加算によって、基本制御量U1(t)を算出することも可能である。
例えば、制御量合成部103は、重み係数M1及びM2を用いて、下記の式(1)に従って、基本制御量U1(t)を算出することが可能である。
U1(t)=M1・Ub(t)+M2・Uf(t) …(1)
尚、式(1)中の重み係数M1及びM2の各々は、0以上の実数である。重み係数M1及びM2は、時間経過に応じて変化させることも可能である。例えば、FF学習の初期には、M1=1.0、M2=0.1として、M2をM1より低く設定して、FF制御の寄与を小さくする。そして、FF学習が進むにつれて、M1=1.0の下で、M2を、0.2、0.3、・・・、1.0と、M1と同等の値まで徐々に増加してもよい。
FF学習の進行度は、例えば、FF制御量Fb(t)と、FB制御量Fb(t)及び(1-M2)の乗算値との差分ΔF(ΔF=|Fb(t)-(1-M2)・Uf(t)|)によって定量的に評価することができる。例えば、現在のM2の値の下で、ΔFが、予め定められた基準値Ftより小さくなると、学習が進んだと判断して、M2の値を増加側に更新することができる。このようなM2の更新は、M2がM1と同等となるまで繰り返し実行することができる。
このようにすると、学習が進んでおらず、FF制御の精度が低い間は、FF制御の反映を抑えてオーバーシュートが大きくなることを防ぐことができる。更に、FF学習の精度が上がると、FF制御の反映を大きくすることで、指令値Yd(t)の変化に対する出力値Y(t)の追従速度を高めることができる。
実施の形態1では、FB演算部101、FF演算部102、及び、制御量合成部103が「第1の制御演算部」の一実施例に対応し、制御量補正部105が「第2の制御演算部」の一実施例に対応する。又、FF制御用のニューラルネットワーク120は「第1のニューラルネットワーク」に対応し、エミュレータ用のニューラルネットワーク130は「第2のニューラルネットワーク」に対応する。
実施の形態2.
図17は、実施の形態2に係る電力変換器の制御装置100bの構成を説明する機能ブロック図である。
図17を参照して、実施の形態2に係る制御装置100bは、実施の形態1に係る制御装置100a(図1)と比較して、FF演算部102及び制御量合成部103の配置が省略される点で異なる。FB演算部101、エミュレータ演算部104、及び、制御量補正部105の構成及び動作は、実施の形態1と同様であるので、詳細な説明は繰り返さない。
制御装置100bでは、FF演算部102及び制御量合成部103が配置されないため、FB制御量Ub(t)がそのまま基本制御量U1(t)とされて、制御量選択部3へ入力される。実施の形態2においても、Ub(t)に基づく基本制御量U1(t)に従って算出された入力制御量Ud(t)がエミュレータ部9によって評価され、オーバーシュート量(又は、アンダーシュート量)が許容量より大きい場合には、補正演算部7によって、オーバーシュート量が抑制された補正制御量U2(t)を探索することができる。
このように、実施の形態2に係る制御装置100bでは、FB制御及びエミュレータを用いた制御量補正との組み合わせによって、指令値の変更に対して出力値を追従する際のオーバーシュート又はアンダーシュートを抑制する制御を行うことができる。即ち、実施の形態2では、FB演算部101が「第1の制御部」に対応する。
尚、フィードバック制御の挙動は、図2に示した、比例ゲインKp、積分ゲインKi、及び、微分ゲインKdによって変化する。例えば、図14のシミュレーション波形では、制御安定度を重視して、比例制御及び積分制御をメインとしたフィードバック制御が行われている。
これに対して、実施の形態2に係る制御装置では、FF制御を補完する意味合いから、微分ゲインKvを大きくすることが好ましい。仮に、大きくした微分ゲインKvによって入力制御量Ud(t)が大きく変化した場合にも、エミュレータ部9による出力予測値Ym(t)に許容量を超えたオーバーシュートが生じると、制御量補正部105によって入力制御量Ud(t)を補正することが可能である。この結果、指令値の変更に対して出力値を追従する際のオーバーシュートを抑制することができる。
尚、本実施の形態に係る電力変換器の制御装置について、実施の形態1及び2では、制御対象としてDC/DCコンバータを例示したが、制御対象はDC/DCコンバータに限定されるものではなく、AC/DCコンバータ及びDC/ACコンバータ等の他の電力変換器を制御対象とすることも可能である。即ち、制御量に応じて出力値が変化する電力変換器であれば、任意の回路構成及び入出力特性(非線形特性を含む)の電力変換器の出力値(電圧、電流、又は、電力等)を、実施の形態1及び2に係る制御装置によって制御することが可能である。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。