以下、図面を参照して、本発明の実施形態について説明する。
図1は、本発明の実施形態における電力制御装置の構成の一例を示すブロック図である。
電力制御装置100は、電気的な負荷であるモータ200を制御する装置である。例えば、モータ200は、ハイブリッド自動車や電動自動車などに搭載された電動機であり、電力制御装置100によってモータ200が制御されることで、車両の駆動状態が制御される。
電力制御装置100は、直流電力を交流電力に変換し、変換した交流電力をモータ200に供給する。電力制御装置100は、トルク制御部1と、dq軸/UVW相変換器2と、PWM(Pulse Width Modulation)変換器3と、インバータ(INV)4と、バッテリ5と、バッテリ電圧検出器6と、電流検出器7u及び7vと、モータ回転速度演算器8と、UVW相/dq軸変換器9とを備える。バッテリ5は、本実施形態においては電力制御装置100の一部として構成されているが、電力制御装置100とは別体として構成されてもよい。バッテリ5は、直流電源であって、例えば、車載用のリチウムイオン電池である。
モータ200は、駆動用モータやステアリング用モータなどの、多相交流で駆動する電動機である。本実施形態では、モータ200は、UVW相の三相交流電流により駆動する。また、モータ200に隣接して、回転子位置検出器201が設けられている。
回転子位置検出器201は、例えば、レゾルバであって、所定周期でモータ200の回転子の位置を検出する。回転子位置検出器201は、回転子の電気角θを示す検出信号を、dq軸/UVW相変換器2、モータ回転速度演算器8、及び、UVW相/dq軸変換器9に出力する。
トルク制御部1は、不図示の上位コントローラから、モータ200の駆動力を決定するトルク指令値T*を取得する。例えば、上位コントローラは、アクセルペダルの踏込み量などの車両の運転状態に応じて、トルク指令値T*を算出する。
トルク制御部1には、さらに、バッテリ電圧検出器6により検出されるバッテリ5のバッテリ電圧検出値Vdcが入力されるとともに、d軸電流検出値id及びq軸電流検出値iqと、モータ200の回転速度Nとが入力される。
d軸電流検出値id及びq軸電流検出値iqは、モータ200へ供給される三相交流電流のうちのU相電流iu、V相電流ivを、UVW相/dq軸変換器9により変換されることで得られる。なお、U相電流iu、V相電流ivは、電流検出器7u、7vにより検出される。
モータ200の回転速度Nは、モータ回転速度演算器8によって、以下のように取得される。モータ回転速度演算器8は、所定周期で回転子位置検出器201から検出される信号に対してA/D変換によるサンプリングを行うことにより電気角θを取得し、今回取得された電気角検出値θと前の周期に取得された電気角検出値との差分を求め、その差分から単位時間あたりの電気角検出値の変化量を算出する。そして、電気角θの検出角の単位時間あたりの変化量から、モータ回転速度演算器8は、モータ200の回転速度Nを算出する。
トルク制御部1は、入力されるトルク指令値T*と、バッテリ電圧検出値Vdcと、d軸電流検出値id及びq軸電流検出値iqと、モータ200の回転速度Nと基づいて、電流ベクトル制御演算を実行することにより、d軸電圧指令値vd *及びq軸電圧指令値vq *を算出する。そして、トルク制御部1は、d軸電圧指令値vd *及びq軸電圧指令値vq *を、dq軸/UVW相変換器2に出力する。
dq軸/UVW相変換器2は、次式(1)に示されるように、回転子位置検出器201にて検出された電気角検出値θに基づいて、トルク制御部1により算出されたd軸電圧指令値vd *及びq軸電圧指令値vq *を、三相PWM電圧指令値であるU相PWM電圧指令値vu *、V相電圧指令値vv *及びW相電圧指令値vw *に変換する。そして、dq軸/UVW相変換器2は、変換された三相PWM電圧指令値vu *、vv *及びvw *をPWM変換器3に出力する。
PWM変換器3は、バッテリ電圧検出器6から出力されるバッテリ電圧検出値Vdc、dq軸/UVW相変換器2により変換された三相PWM電圧指令値vu *、vv *及びvw *、及び、電流検出器7u、7vにより検出されるU相電流iu、V相電流ivに基づいて、パルス幅変調(PWM)制御に使用される、パルス信号であるPWM信号Puu、Pul、Pvu、Pvl、Pwu及びPwlを生成する。
インバータ4は、PWM変換器3から出力されるPWM信号Puu、Pul、Pvu、Pvl、Pwu及びPwlに基づいてスイッチング素子が制御されることにより、バッテリ5の直流電力を交流電力に変換し、変換された交流電力をモータ200の各相に供給する。
本実施形態において、インバータ4は、3相6アームで構成される。すなわち、インバータ4は、6つのスイッチング素子(アーム)を備え、UVWの3相で駆動される。詳細には、インバータ4は、各相に対応して、バッテリ5に対して並列に接続される配線を備え、それぞれの配線において直列に接続された1対のスイッチング素子が設けられている。そして、直列に接続された1対のスイッチング素子の間がモータ200と接続されている。なお、スイッチング素子としては、例えば、電界効果トランジスタ等で構成されたパワー素子が用いられ、制御端子(例えばゲート端子)に供給されるパルス信号であるPWM信号のレベルに応じて、オンとオフとが切り替えられる。
以下では、各相において、モータ200の電源端子とバッテリ5の正極端子との間に接続されたスイッチング素子を上段のスイッチング素子と称し、モータ200の電源端子とバッテリ5の負極端子との間に接続されたスイッチング素子を下段のスイッチング素子と称する。また、バッテリ5の正極端子と負極端子の両端にはバッテリ電圧検出値Vdcだけの電位差が生じている。説明の便宜上、正極端子に生じる電位を「+Vdc/2」とし、負極端子に生じる電位を「−Vdc/2」として説明する。
上段のスイッチング素子は、オン(導通状態)のときにバッテリ5の正極端子に生じる電位「+Vdc/2」をモータ200に供給し、オフ(非導通状態)のときに電位の供給を停止する。一方、下段のスイッチング素子は、オンのときにバッテリ5の負極端子に生じる電位「−Vdc/2」をモータ200に供給し、オフのときにモータ200への電位の供給を停止する。
PWM変換器3は、三相PWM電圧指令値vu *、vv *及びvw *と、バッテリ電圧検出値Vdcとに基づいて、インバータ4に設けられる6つのスイッチング素子のそれぞれを駆動するPWM信号Puu、Pul、Pvu、Pvl、Pwu及びPwlを生成する。これらのPWM信号に基づいてインバータ4のスイッチング素子のそれぞれが制御されることで、バッテリ5の直流電力が擬似的に交流電力に変換されて、変換された交流電力がモータ200に供給される。
以下では、PWM変換器3における制御について、代表的に、U相に対応する一対のスイッチング素子のうちの上段のスイッチング素子へのPWM信号Puuと、下段のスイッチング素子へのPWM信号Pulとの生成処理について説明する。なお、VW相についても、同様に、PWM変換器3は、V相に対応するPWM信号Pvu及びPvlと、W相に対応するPWM信号Pwu及びPwlとを出力する。
PWM変換器3は、U相PWM電圧指令値vu *とバッテリ電圧検出値Vdcとに基づいて、デューティ指令値を演算する。デューティ指令値は、モータ200へ印加されるべきU相PWM電圧vuに対して一意に定まる。PWM変換器3は、演算されたデューティ指令値とキャリア波とを比較することで、上段のスイッチング素子に対するPWM信号Puuと、下段のスイッチング素子に対するPWM信号Pulとを出力する。
PWM信号Puuがハイレベルである場合には、上段のスイッチング素子がオンとなり、モータ200のU相端子には「+Vdc/2」の電位が供給される。PWM信号Pulがハイレベルである場合には、下段のスイッチング素子がオンとなり、モータ200のU相端子には「−Vdc/2」の電位が供給される。これらの上段と下段とのスイッチング素子の制御により、モータ200のU相端子の両端にVdcの電位差を生じさせることができる。
さらに、PWM変換器3は、上段と下段とからなる1対のスイッチング素子が同時にオンになるのを防止するために、PWM信号Puu及びPulにデッドタイムを付加し、デッドタイムが付加されたPWM信号をインバータ4に出力する。
インバータ4は、PWM信号Puu、Pul、Pvu、Pvl、Pwu及びPwlのレベルに基づいてスイッチング素子の接続状態(オン/オフ)が切り替えられることにより、モータ200のU相コイルにU相PWM電圧vuを供給する。同様に、インバータ4は、V相コイルにV相PWM電圧vvを供給し、W相コイルにW相PWM電圧vwを供給する。その結果、モータ200の各相のコイルに対して、交流電流iu、iv及びiwが流れる。
電流検出器7u及び7vは、それぞれ、モータ200に供給されるU相電流iu及びV相電流ivを検出する。電流検出器7uは、インバータ4とモータ200のU相コイルとの間に設けられるU相電力線に対して接続され、電流検出器7vは、インバータ4とモータ200のV相コイルとの間のV相電力線に対して接続される。電流検出器7u及び7vは、検出したU相電流iu及びV相電流ivを、PWM変換器3及びUVW相/dq軸変換器9に出力する。
UVW相/dq軸変換器9は、電流検出器7u及び7vから出力されるU相電流iu及びV相電流ivに対する検出信号を取得し、各検出信号についてアナログ信号からデジタル信号にA/D変換するサンプリング処理を行うことにより、U相電流iu、及び、V相電流ivを求める。そして、U相電流iu、V相電流iv、及び、W相電流iwの総和がゼロとなる性質を利用して、UVW相/dq軸変換器9は、次式(2)に従って、U相電流iu、及び、V相電流ivと、回転子位置検出器201により求められた電気角θの検出値とに基づいて、d軸電流検出値id及びq軸電流検出値iqを算出する。
UVW相/dq軸変換器9は、変換により得られたd軸電流検出値id及びq軸電流検出値iqをトルク制御部1に出力する。トルク制御部1においては、これらのd軸電流検出値id及びq軸電流検出値iqを用いて、d軸電圧指令値vd *及びq軸電圧指令値vq *に対するフィードバック制御が行われる。
図2は、PWM変換器3の詳細な構成を示すブロック図である。図3は、PWM変換器3の処理にて用いられるキャリア三角波を示す図である。
PWM変換器3は、デューティ指令値演算部31と、デッドタイム補償処理部32と、パルスタイミング補正処理部33と、PWM変換処理部34と、デッドタイム付加処理部35とを有する。本実施形態においては、これらのブロックのうち、デューティ指令値演算部31、デッドタイム補償処理部32、及び、パルスタイミング補正処理部33については、汎用的なコントローラによってプログラムが実行されることで、ソフトウェアとしてこれらの機能が実現される。PWM変換処理部34、及び、デッドタイム付加処理部35については、特定の機能を備えるマイコンにより、ハードウェアとしてこれらの機能が実現される。
また、本実施形態のPWM制御においては、キャリア信号として、図3に示される三角波が用いられる。例えば、不図示のキャリア信号生成部は、カウンタにより構成され、時間の経過と共にカウント値を増減させることでキャリア三角波を生成する。なお、キャリア三角波は、パルスタイミング補正処理部33及びPWM変換処理部34における処理に用いられる。このキャリア三角波の振幅はKDであり、周期はtcである。
再び図2を参照すれば、デューティ指令値演算部31は、次式(3)に従って、dq軸/UVW相変換器2から出力されるU相PWM電圧指令値vu *と、バッテリ電圧検出器6から出力されるバッテリ電圧検出値Vdcと、キャリア三角波の振幅KDに基づいて、モータ200に印加されるU相PWM電圧を生成するためのデューティ指令値Du01 *を演算する。なお、キャリア三角波の振幅KDは、デューティ指令値演算部31に予め記憶されている。
式(3)によれば、U相PWM電圧指令値vu *が大きくなるほどデューティ指令値Du01 *は大きくなり、バッテリ電圧検出値Vdcが小さくなるほどデューティ指令値Du01 *を大きくなる。デューティ指令値演算部31は、演算されたデューティ指令値Du01 *をデッドタイム補償処理部32に出力する。
デッドタイム補償処理部32は、デューティ指令値Du01 *に対してデッドタイム補償処理を行うことで、後段のデッドタイム付加処理部35におけるデッドタイムtdtの付加に起因するPWM電圧のパルス幅の変化に対する補償を行う。なお、このような補償処理は、デッドタイム補償と称される。
本実施形態では、デッドタイム補償処理部32は、次式(4)に従って、デューティ指令値Du01 *に対して、U相電流iuの極性(正負)に基づいてsgn(iu)によって符号を定め、補償量「2KDtdt/tc」を加算又は減算することで、デューティ指令値Du02 *を算出する。
具体的に、デッドタイム補償処理部32は、U相電流iuがプラスである場合、すなわちU相電流iuがインバータ4からモータ200へ流れる場合には、U相PWM電圧vuのオフ期間が短くなるようにデューティ指令値Du01 *に対する補償を行う。なお、オフ期間とは、バッテリ5の負極端子の電位がモータ200のU相に印加される期間のことである。一方、U相電流iuがマイナスである場合、すなわちU相電流iuがモータ200からインバータ4へ流れる場合には、デッドタイム補償処理部32は、U相PWM電圧vuのオフ期間が長くなるようにデューティ指令値Du01 *に対する補償を行う。
式(4)によれば、デッドタイム補償処理部32は、キャリア三角波の振幅KD及び周期tcと、デッドタイムtdtとを用いて、補償量「2KDtdt/tc」を算出する。補償量「2KDtdt/tc」は、デッドタイム時間tdtの半値「tdt/2」を、時間単位からキャリア三角波の振幅の単位へ単位系の変換をしたものである。この単位系の変換は、キャリア三角波の半周期「tc/2」において、キャリア三角波が振幅の2倍の「2KD」だけ変化することに基づいて行われる。
U相電流iuがプラスである場合、すなわちU相電流iuがインバータ4からモータ200へ流れる場合には、デッドタイム補償処理部32は、U相PWM電圧vuのオフ期間が短くなるように、デューティ指令値Du01 *に対し補償量「2KDtdt/tc」を加算することによりデューティ指令値Du02 *を算出する。
一方、U相電流iuがマイナスである場合、すなわちU相電流iuがモータ200からインバータ4へ流れる場合には、デッドタイム補償処理部32は、U相PWM電圧vuのオフ期間が長くなるように、デューティ指令値Du01 *に対し補償量「2KDtdt/tc」を減算することによりデューティ指令値Du02 *を算出する。
パルスタイミング補正処理部33は、PWM信号の位相(レベルの切り替えタイミング)を補正するために、デューティ指令値Du02 *に対する補正を行うことでデューティ指令値Du03 *を算出する。このパルスタイミング補正処理部33による補正により、U相PWM電圧vuのパルス幅の中間値をキャリア三角波の山及び谷の双方または一方と一致させることができる。
詳細には、パルスタイミング補正処理部33は、次式(5)に従って、三角波の変化量ΔCの極性に応じて補正量Kdly_finの符号を切り替え、デューティ指令値Du02 *に対して補正量Kdly_finの加算又は減算を行うことで、デューティ指令値Du03 *を算出する。
式(5)の右辺第2項に示されるように、補正量Kdly_finに対する正負の符号は、符号関数sgn(ΔC)によって定まる。補正量Kdly_finの算出方法は、後に式(7)〜(17)を用いて説明する。ΔCは、キャリア三角波の変化量であり、1回の制御演算中に互いに異なるタイミングで取得した2つの三角波のカウント値の差分である。本実施形態では、キャリア三角波の変化量ΔCは、次式(6)に従って、今回のキャリア三角波の取得値C2から前回のキャリア三角波の取得値C1を減算することで算出される。
パルスタイミング補正処理部33は、式(6)に従って算出された変化量ΔCがゼロよりも大きい場合には、キャリア三角波が増加区間であると判定し、変化量ΔCがゼロよりも小さい場合には、キャリア三角波が減少区間であると判定する。なお、パルスタイミング補正処理部33は、キャリア三角波の2つのカウント値でなく、互いに異なるタイミングで3つ以上のカウント値を取得し、それらの複数のカウント値に基づいてキャリア三角波の増減を判定してもよい。
そして、キャリア三角波が増加区間である場合には、パルスタイミング補正処理部33は、デューティ指令値Du02 *に対して補正量Kdly_finを加算して、デューティ指令値Du03 *を求める。算出されるデューティ指令値Du03 *が用いられる次区間は減少区間であるため、補正量Kdly_finを加算することで、PWM信号の位相を進めることができる。
一方、キャリア三角波が減少区間である場合には、パルスタイミング補正処理部33は、デューティ指令値Du02 *に対して補正量Kdly_finを減算して、デューティ指令値Du03 *を求める。算出されるデューティ指令値Du03 *が用いられる次区間は増加区間であるため、補正量Kdly_finを減算することで、PWM信号の位相を遅延できる。
このように、パルスタイミング補正処理部33は、キャリア三角波の増減に応じた符号が付された補正量Kdly_finを用いた補正をすることで、デューティ指令値Du03 *を算出する。そして、パルスタイミング補正処理部33は、補正後のデューティ指令値Du03 *をPWM変換処理部34に出力する。
PWM変換処理部34は、デューティ指令値Du03 *とキャリア三角波との比較を行い、PWM信号Puu0及びPul0を生成する。なお、この比較処理は、一般に、コンペアマッチングと称される。デューティ指令値Du03 *は、PWM変換処理部34の機能を実現するマイコンのレジスタに記憶されることで、キャリア三角波との比較に用いられる。
デューティ指令値Du03 *は、キャリア三角波の山又は谷となるタイミングにおいて、更新される。すなわち、キャリア三角波の山又は谷となるタイミングから、次に山又は谷となるタイミングまでの区間においては、同じデューティ指令値Du03 *が用いられる。
PWM変換処理部34は、例えば、図6に示されるようにU相電流iuがマイナスである場合には、デューティ指令値Du03 *がキャリア三角波よりも小さいときには、上段のスイッチング素子をオンにするため、PWM信号Puu0をハイレベルに設定する。PWM変換処理部34は、デューティ指令値Du03 *がキャリア波よりも大きいときには、上段のスイッチング素子をオフにするために、PWM信号Puu0をローレベルに設定する。下段のスイッチング素子に対するPWM信号Pul0は、上段のスイッチング素子に対するPWM信号Puu0に対して、レベルが反転するように設定される。PWM変換処理部34は、このように生成されたPWM信号Puu0及びPul0を、デッドタイム付加処理部35に出力する。
デッドタイム付加処理部35は、PWM変換処理部34により算出されたPWM信号Puu0及びPul0に対してデッドタイムtdtを付加する処理を行い、PWM信号Puu及びPulを生成する。
本実施形態では、デッドタイム付加処理部35は、PWM信号Puu0及びPul0のそれぞれに対して、立ち上りタイミングをデッドタイムtdtだけ遅延させることで、PWM信号Puu及びPulを生成する。デッドタイム付加処理部35は、生成されたPWM信号Puu及びPulを、インバータ4に出力する。
このようにして、PWM信号Puu0及びPul0の立ち上りタイミングをデッドタイムtdtだけ遅延させることで、一対のスイッチング素子が同時にオンとなりモータ200のU相の端子の電圧が不安定になることを抑制できる。
次に、パルスタイミング補正処理部33の処理である式(5)において用いられる補正量Kdly_finについて説明する。
PWM信号Puu及びPulが遅延する要因としては、デッドタイム付加処理部35によるデッドタイムtdtの付加以外に、PWM信号の伝達回路における遅延時間である伝達遅延tdly_c、スイッチング素子の操作に起因する遅延時間である操作遅延tdly_s、及び、センサや入力回路などにおけるサンプリングに起因する遅延時間である検出遅延tdly_csなどが考えられる。なお、操作遅延tdly_sは、スイッチング素子のオン操作の遅れ時間とオフ操作の遅れ時間の平均値とする。
これらの遅延に起因して、生成されるU相PWM電圧vuや、測定されるU相電流iuにおいて位相が遅延するおそれがある。そこで、パルスタイミング補正処理部33は、デューティ指令値Du02 *を補正することで、PWM信号Puu及びPulの位相のずれが抑制されるように、デューティ指令値Du03 *を生成する。
補正量Kdly_finの最大値である最大補正量Kdly_maxは、次式(7)のように定めることができる。最大補正量Kdly_maxは、デッドタイムtdt、伝達遅延tdly_c、検出遅延tdly_cs、及び、操作遅延tdly_sの合計時間に対して、時間単位からキャリア三角波の振幅への単位系の変換をした値である。この最大補正量Kdly_maxによる位相の変化量は、デッドタイムtdtの半値と、伝達遅延tdly_c、検出遅延tdly_cs、及び、操作遅延tdly_sとの合計に相当する。なお、これらの遅延成分は、発生する遅延の一例であり、これらの遅延の一部が含まれていなくてもよいし、その他の遅延が含まれていてもよい。
デューティ指令値Du02 *に対して最大補正量Kdly_maxを用いて補正をしてしまうと、補正後の値がキャリア三角波のピーク値である最大値「+Kd」又は最小値「−Kd」を超えてしまい、所望のタイミングでPWM信号Puu及びPulのレベルが切り替わらないおそれがある。
そこで、本実施形態においては、後述のように、式(13)、(14)に示される上限側修正量dover2及び下限側修正量dunder2に基づいて、式(15)、(16)に示されるように最大補正量Kdly_maxに対して修正を行ったもののうちの一方を、式(17)に示されるように補正量Kdly_finとして定める。後述のように、補正量Kdly_finを用いることで、補正後のデューティ指令値がキャリア波の最大値又は最小値を超えることを抑制することができる。
なお、本実施形態では、後述の図4に示されるようなデッドタイム付加が行われている。そのため、仮に、補正後のデューティ指令値が、キャリア三角波のピーク値に対して、デッドタイム付加に起因する遅延分だけは超えたとしても、生成されるPWM電圧における位相のずれの発生は抑制される。そのため、補正量Kdly_finの最小値である最小補正量Kdly_minは、次式(8)のように定めることができる。
以下では、具体的な補正量Kdly_finの算出方法について説明する。
式(5)に示される補正量Kdly_finを用いた補正が行われる場合には、補正量Kdly_finが最大補正量Kdly_maxである場合に、補正により得られるデューティ指令値Du03 *が最大値及び最小値となる。詳細には、補正量Kdly_finが最大補正量Kdly_maxである場合において、変化量ΔCが正でありsgn(ΔC)がプラスである時に、デューティ指令値は、次式(9)に示されるような最大値d* u03_upperとなる。補正量Kdly_finが最大補正量Kdly_maxである場合において、ΔCが負でありsgn(ΔC)がマイナスである時に、デューティ指令値は、次式(10)に示されるような最小値d* u03_lowerとなる。
上述のように、デューティ指令値Du02 *や最大補正量Kdly_maxの大きさによっては、デューティ指令値の最大値d* u03_upperがキャリア三角波のピーク値である最大値「+Kd」を上回ってしまう場合や、デューティ指令値の最小値d* u03_lowerがキャリア三角波の最小値「−Kd」を下回ってしまう場合がある。これらの場合には、デューティ指令値とキャリア三角波とを比較しても、比較結果から得られるPWM信号により生成されるPWM電圧は、所望のパルス幅とならない。
式(9)に示されるデューティ指令値の最大値d* u03_upperが、キャリア三角波の最大値「+Kd」を超える場合には、最大値d* u03_upperのキャリア三角波の最大値「+Kd」に対して上回る超過量だけを、補正量から予め減じる修正をすることで、生成されるPWM電圧のパルス幅の変化を抑制できる。また、式(10)に示されるデューティ指令値の最小値d* u03_lowerが、キャリア三角波の最小値「−Kd」を下回る場合には、最小値d* u03_lowerのキャリア三角波の最小値「−Kd」を下回る超過量だけを、補正量から予め減じる修正をすることで、生成されるPWM電圧のパルス幅の変化を抑制できる。
本実施形態では、補正量Kdly_finの算出、及び、デューティ指令値Du03 *の更新は、キャリア三角波の勾配が等しい所定周期、すなわち、増加区間及び減少区間ごとに行われ、かつ、デューティ指令値Du01 *、Du02 *の算出は、その所定周期の2倍ごとに行われるものとする。補正量Kdly_finの算出区間においては、次区間及び次々区間は、必然的に、増加区間及び減少区間の組み合わせとなる。そのため、所定区間ごとに、最大値d* u03_upperがキャリア三角波の最大値「+Kd」を上回る場合、及び、デューティ指令値の最小値d* u03_lowerがキャリア三角波の最小値「−Kd」を下回る場合の両者を検討して、補正量Kdly_finを算出する。
デューティ指令値の最大値d* u03_upperがキャリア三角波の最大値「+Kd」を上回る場合において、上限側の超過量である上限超過量doverは、次式(11)のように定められる。デューティ指令値の最小値d* u03_lowerがキャリア三角波の最小値「−Kd」を下回る場合において、下限側の超過量である下限超過量dunderは、次式(12)のように定められる。なお、デューティ指令値の最大値d* u03_upperがキャリア三角波の上限値「+Kd」を超えない場合には、上限超過量doverはゼロとなる。デューティ指令値の最小値d* u03_lowerがキャリア三角波の下限値「−Kd」を超えない場合には、下限超過量dunderはゼロとなる。
上述のように、式(8)に示される最小補正量Kdly_minだけは、キャリア三角波の最大値「+Kd」又は最小値「−Kd」を超えてもよい。そのため、補正後のデューティ指令値のキャリア三角波の最大値「+Kd」に対する超過量が、大きくても最小補正量Kdly_minとなるためには、最大補正量Kdly_maxに対して、次式(13)に示される上限側修正量dover2に応じた補正をすればよい。同様に、補正後のデューティ指令値のキャリア三角波の最小値「−Kd」に対する超過量(負値)が、少なくとも、最小補正量Kdly_minとなるためには、最大補正量Kdly_maxに対して、次式(14)に示される下限側修正量dunder2に応じた補正をすればよい。
次式(15)に示されるように、上限側において上限側修正量dover2だけ減じる修正をすることで得られる補正量を、Kdly_pと示す。次式(16)に示されるように、下限側において下限側修正量dunder2だけ増加させることで得られる補正量を、Kdly_mと示す。このように得られる補正量Kdly_p、Kdly_mを用いることで、補正後のデューティ指令値は、キャリア三角波の最大値及び最小値に対して、大きくても、デッドタイム付加に起因する遅延に相当する量だけが超過する。
ここで、最大補正量Kdly_maxは、キャリア三角波の振幅KDに比べると小さいため、式(8)に示されるデューティ指令値の最大値d* u03_upperがキャリア三角波の最大値「+Kd」を上回る状況と、式(9)に示されるデューティ指令値の最小値d* u03_lowerがキャリア三角波の最小値「−Kd」を下回る状況とが同時に起こることはない。そして、上限側及び下限側のうち、補正後のデューティ指令値が最大値又は最小値を超えない方は、超過量がゼロであるので、修正をする必要がない。したがって、修正後の補正量Kdly_p、Kdly_mのうち、修正をしていない大きい方については検討する必要がない。そのため、次式(17)に示されるように、補正量Kdly_finは、式(15)、(16)の絶対値のうちの小さい値となる。
なお、式(7)、(8)を用いれば、補正量Kdly_finについて次式(18)に示される関係が成立する。
図4は、デッドタイム付加処理部35によるデッドタイム付加の処理についての説明図である。本実施形態においては、デッドタイム付加処理部35により付加される付加時間は、原則的には、図上部に示されるように、予め記憶されている値tdtが用いられる。ただし、例外的に、図下部に示されるような状態においては、付加時間は、PWM信号のパルス幅tpに応じて変化する。なお、この図の説明では、PWM信号Puu0のローレベル区間、及び、PWM信号Pul0のハイレベル区間を、パルス幅と称するものとする。
図上部には、PWM信号Puu0及びPul0により定まるパルス幅tpが所定のデッドタイムtdtよりも長い場合が示されている。このような場合には、デッドタイム付加処理部35は、PWM信号Puu0及びPul0が立ち上がるタイミング(ローレベルからハイレベルへと切り替わるタイミング)において、所定のデッドタイムtdtだけ遅延されるように、PWM信号Puu、Pulを生成する。
図下部には、パルス幅tpが所定のデッドタイムtdt以下である場合が示されている。このような場合には、デッドタイム付加による付加時間は、PWM信号のパルス幅tpとなる。なお、PWM信号Pul0の立ち上がりタイミングをデッドタイムとしてtpだけ遅らせる場合には、立ち上がりタイミングが立ち下がりタイミングよりも後ろとなる。そのため、PWM信号Pulは、常にローレベルに設定される。このようにすることで、パルス幅tpが漸次減少してデッドタイムtdt以下となった場合に、付加時間も漸次減少することになるので、PWM信号のパルス幅の急激な変化を防ぐことができる。さらに、後に図9を用いて説明するように、図下部に記載のデッドタイム付加が行われることで、補正後のデューティ指令値のキャリア三角波のピーク値からの超過量が、デッドタイム付加に起因する遅延に相当する量以下であれば、U相PWM電圧vuを所望のパルス幅とすることができる。
図5は、デューティ指令値の算出制御の一例を示すフローチャートである。この算出制御は、キャリア三角波がピーク値となる毎に、すなわち、最大値(山)及び最小値(谷)となるタイミングで繰り返し実行される。なお、このフローチャートにおける制御は、電力制御装置100において記憶されているプログラムが実行されることにより、実現されてもよい。
ステップS501において、PWM変換処理部34は、キャリア三角波の状態が増加区間か減少区間であるかに応じて、デューティ更新をするか否かを判定する。デューティ更新とは、デューティ指令値Du01 *、Du02 *、及び、補正量Kdly_finの算出を示す。PWM変換処理部34は、式(6)に従った判定を行い、キャリア三角波が減少区間である場合には、デューティ更新をすると判断して(S501:Yes)、ステップS502の処理に進む。キャリア三角波が増加区間である場合には、PWM変換処理部34は、デューティ更新をしないと判断して(S501:No)、ステップS509の処理に進む。
ステップS502において、UVW相/dq軸変換器9は、電流検出器7u及び7vからの検出信号をA/D変換してU相電流iu及びV相電流ivを取得する。同時に、モータ回転速度演算器8は、回転子位置検出器201からの検出信号をA/D変換して電気角検出値θを取得する。
ステップS503において、UVW相/dq軸変換器9は、式(2)に基づいて、S501にて得られたU相電流iu及びV相電流ivと、電気角検出値θに基づいて、d軸電流検出値id及びq軸電流検出値iqを求める。そして、UVW相/dq軸変換器9は、変換したd軸電流検出値id及びq軸電流検出値iqをトルク制御部1にフィードバックする。
同時に、モータ回転速度演算器8は、電気角検出値θに基づいて回転速度Nを演算する。そして、モータ回転速度演算器8は、回転速度Nをトルク制御部1に出力する。
ステップS504において、トルク制御部1は、入力されるトルク指令値T*と、バッテリ電圧検出値Vdcと、回転速度Nと、d軸電流検出値id及びq軸電流検出値iqとに基づいて、電流ベクトル制御によって、d軸電圧指令値vd *及びq軸電圧指令値vq *を算出する。
ステップS505において、dq軸/UVW相変換器2は、式(1)に従って、電気角検出値θに基づいて、d軸電圧指令値vd *及びq軸電圧指令値vq *を三相PWM電圧指令値vu *、vv *及びvw *に変換する。そして、dq軸/UVW相変換器2は、変換された三相PWM電圧指令値vu *、vv *及びvw *をPWM変換器3に出力する。
ステップS506において、デューティ指令値演算部31は、式(3)に従って、三相PWM電圧指令値vu *、vv *及びvw *と、バッテリ電圧検出値Vdcとに基づいて、デューティ指令値Du01 *、Dv01 *及びDw01 *を演算する。
ステップS507において、デッドタイム補償処理部32は、式(4)に従って、デューティ指令値Du01 *、Dv01 *及びDw01 *に対してデッドタイム付加に対する補償処理を行い、デューティ指令値Du02 *、Dv02 *及びDw02 *を算出する。
ステップS508において、パルスタイミング補正処理部33は、式(7)〜(17)に従って、キャリア三角波の振幅KD及び周期tcと、デッドタイムtd、伝達遅延tdly_c、操作遅延tdly_s、及び、検出遅延tdly_csとを用いて、補正量Kdly_finを算出する。
ステップS509において、パルスタイミング補正処理部33は、式(6)に従って、キャリア三角波の増減状態を判断するキャリア三角波が増加区間であるか減少区間であるかを判断する。そして、キャリア三角波が増加区間である場合には(S509:Yes)、パルスタイミング補正処理部33は、補正量Kdly_finを加算するために、次にステップS510の処理を行う。キャリア三角波が減少区間である場合には(S509:No)、パルスタイミング補正処理部33は、補正量Kdly_finを減算するために、次にステップS511の処理を行う。
ステップS510において、パルスタイミング補正処理部33は、式(5)に従って、キャリア三角波が増加区間でありsgn(ΔC)が正となるため、デューティ指令値Du02 *、Dv02 *及びDw02 *に補正量Kdly_finを加算する。なお、キャリア三角波が増加区間である場合には、デューティ更新がなされないので(S501:No)、前区間で算出されたデューティ指令値Du02 *、Dv02 *及びDw02 *、及び、補正量Kdly_finが用いられてデューティ指令値Du03 *、Dv03 *及びDw03 *が算出される。
ステップS511において、パルスタイミング補正処理部33は、式(5)に従って、キャリア三角波が減少区間でありsgn(ΔC)が負となるため、デューティ指令値Du02 *、Dv02 *及びDw02 *から補正量Kdly_finを減算する。なお、キャリア三角波が減少区間である場合には、デューティ更新がなされるため(S501:Yes)、ステップS507で算出されたデューティ指令値Du02 *、Dv02 *及びDw02 *、及び、ステップS508で算出された補正量Kdly_finが用いられてデューティ指令値Du03 *、Dv03 *及びDw03 *が算出される。
ステップS512において、ステップS510またはS511にて算出されたデューティ指令値Du03 *、Dv03 *及びDw03 *を、次区間での演算に用いるデューティ指令値として、マイコンのレジスタにセットする。そして、デューティ指令値の算出制御は終了する。
なお、デューティ指令値の算出制御の後において、PWM変換処理部34は、デューティ指令値Du03 *、Dv03 *及びDw03 *に基づいて、PWM信号Puu0、Pul0、Pvu0、Pvl0、Pvu0及びPvl0を生成する。
そして、デッドタイム付加処理部35は、PWM信号Puu0、Pul0、Pvu0、Pvl0、Pwu0及びPwl0にデッドタイムtdtを付加することで、PWM信号Puu、Pul、Pvu、Pvl、Pwu及びPwlを生成する。デッドタイム付加処理部35は、PWM信号Puu及びPulをU相の一対のスイッチング素子に、PWM信号Pvu及びPvlをV相のスイッチング素子に、PWM信号Pwu及びPwlをW相のスイッチング素子に出力する。
インバータ4は、PWM信号Puu、Pul、Pvu、Pvl、Pwu及びPwlに基づいて各相において対をなすスイッチング素子が駆動されると、モータ200の各相に三相PWM電圧vu、vv、及びvwをそれぞれ供給する。
図6は、PWM制御の一例の説明図である。なお、説明の便宜上、この図にはU相に関する制御のみ示されている。
図上方には、キャリア三角波が示されている。以下では、左部に示されるキャリア三角波の減少区間を区間a、中央部に示される区間a後の増加区間を区間b、右部に示される区間b後の減少区間を区間cと称するものとする。区間aにおいては、デューティ指令値Du03 *の算出までの処理が示され、区間b及びcにおいては、U相PWM電圧vuの算出、及び、電力制御装置100のインバータ4とモータ200との間で流れるU相電流iuまでの処理が示されている。
図上部においては、区間b及びcにおいては、キャリア三角波に加えて、デューティ指令値Du01 *、及び、デューティ指令値Du02 *が点線で、デューティ指令値Du03 *が実線で示されている。
その下部には、デューティ指令値Du03 *を用いて定まるPWM信号Puu0及びPul0、及び、デッドタイムが付加されたPWM信号Puu及びPulが示されている。さらに、それらの下部には、モータ200に印加されるU相PWM電圧vuと、U相電流iuの実値、及び、電流検出器7uによる検出値とが示されている。なお、この例においては、U相電流iuがマイナス、すなわちU相電流iuがモータ200からインバータ4へ流れる場合が示されている。
電流の測定、及び、デューティ指令値Du03 *の更新は、キャリア三角波の傾きが一定の区間ごと、すなわち、区間a〜cのそれぞれで行われる。また、減少区間である区間a及びcにおいてはデューティ更新が行われ(S501:Yes)、増加区間である区間bにおいてはデューティ更新が行われない(S501:No)。
区間aでは、区間の開始タイミングから始まるA/D変換区間において、電力制御装置100、及び、モータ200の状態が検出される。そして、A/D変換区間に続く制御演算区間において、デューティ指令値Du03 *の算出が行われる。
そして、区間aに続く区間bにおいては、前区間aで算出されたデューティ指令値Du03 *とキャリア三角波との比較などが行われ、PWM信号Puu、Pulが生成される。PWM信号Puu、Pulに応じてインバータ4が制御されることにより、モータ200へU相PWM電圧vuが印加されて、U相電流iuが流れる。
なお、区間bでは、A/D変換区間において、モータ200の状態が検出され、制御演算区間において、区間cで用いられるデューティ指令値Du03 *の算出が行われる。なお、区間bは、デューティ更新が行われないので、区間aにおいて算出されたKdly_finが用いられてデューティ指令値Du03 *が算出される。
以下では、これらの処理の詳細について説明する。
区間aにおいては、デューティ更新の区間であるので(S501:Yes)、まず、A/D変換区間において、電流検出器7uによるサンプリング(A/D変換)によってU相電流iuが取得される(S502)。
そして、A/D変換区間に続く制御演算区間において、トルク制御部1による演算(S504)、及び、dq軸/UVW相変換器2による演算(S505)により、三相PWM電圧指令値vu *、vv *及びvw *が算出される。そして、デューティ指令値演算部31は、式(3)に従って、デューティ指令値Du01 *を算出する(S506)。デッドタイム補償処理部32は、U相電流iuが負であるので、式(4)に従って、デューティ指令値Du01 *に対して補償量「2KDtdt/tc」を減算することにより、デューティ指令値Du02 *を算出する(S507)。
その後、パルスタイミング補正処理部33は、2つのタイミングでキャリア三角波の値C1、C2を取得し、式(6)に従って、キャリア三角波の増減を判断する。そして、区間aが減少区間であるため(S509:No)、パルスタイミング補正処理部33は、式(5)に従って、デューティ指令値Du02 *に対して補正量Kdly_finを減算することで、デューティ指令値Du03 *を算出する(S511)。
なお、区間bにおいては、デューティ更新は行われない(S509:Yes)。パルスタイミング補正処理部33は、キャリア三角波が増加区間であるため(S509:No)、区間aにて算出された補正量Kdly_finを、デューティ指令値Du02 *に対して加算することで、デューティ指令値Du03 *を算出する(S510)。
次に、デューティ指令値Du01 *に替えてデューティ指令値Du02 *を用いることによる、PWM電圧の位相について説明する。
式(4)に示されるように、U相電流iuがマイナスでありsgn(iu)が負となるので、デューティ指令値Du02 *は、デューティ指令値Du01 *よりも補償量「2KDtdt/tc」だけ小さい。また、補償量「2KDtdt/tc」を用いた補正により、補償量「2KDtdt/tc」の時間単位への換算値、すなわち、デッドタイム時間tdtの半値「tdt/2」だけ、PWM電圧の位相を変化させることができる。
区間bにおいては、増加区間であるため、デューティ指令値Du01 *に替えて、補償量「2KDtdt/tc」だけ減少させたデューティ指令値Du02 *を用いることで、デッドタイムtdtの半値「tdt/2」だけ、PWM電圧の位相を進めることができる。区間cにおいては、減少区間であるため、デューティ指令値Du01 *に替えて、補償量「2KDtdt/tc」だけ増加させたデューティ指令値Du02 *を用いることで、デッドタイムtdtの半値「tdt/2」だけ、PWM電圧の位相を遅らせることができる。
そこで、デューティ指令値Du01 *がキャリア三角波よりも小さい区間をt1とすれば、デューティ指令値Du02 *がキャリア三角波よりも小さい区間t2は、t1よりもデッドタイム時間tdtだけ長くなり、「t2=t1+tdt」となる。従って、デューティ指令値Du01 *に替えてデューティ指令値Du02 *を用いることで、U相PWM電圧vuのパルス幅をデッドタイムtdtだけ長くできる。
次に、デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることによる、PWM電圧の位相について説明する。
図6に示される例においては、式(9)に示されるデューティ指令値の最大値d* u03_upperは、キャリア三角波の最大値を上回らず、かつ、式(10)に示される最小値d* u03_lowerは、キャリア三角波の最小値を下回らないものとする。そのため、式(11)に示される上限超過量dover、及び、式(12)に示される下限超過量dunderはゼロであり、式(13)に示される上限側修正量dover2、及び、式(14)に示される下限側修正量dunder2は、ゼロとなる。したがって、式(15)、(16)を用いて定まる式(17)において、「Kdly_fin=Kdly_max」が成立する。
式(5)によれば、デューティ指令値Du02 *に対して補正量Kdly_finを用いて補正をすることで、デューティ指令値Du03 *が算出される。Kdly_finは、式(7)に示されるKdly_maxと等しいため、デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることで、デッドタイムtdtの半値と、伝達遅延tdly_c、検出遅延tdly_cs、及び、操作遅延tdly_sとの合計時間、すなわち、「tdt/2+tdly_c+tdly_s+tdly_cs」だけ、U相PWM電圧vuの位相が変化する。
区間bは増加区間であるので、補正量Kdly_finを減算して得られるデューティ指令値Du03 *を用いることで、「tdt/2+tdly_c+tdly_s+tdly_cs」だけ、位相が進む。区間cは減少区間であるので、補正量Kdly_finを加算して得られるデューティ指令値Du03 *を用いることで、「tdt/2+tdly_c+tdly_s+tdly_cs」だけ、位相が進む。したがって、区間b及びcの両者において、デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることで、「tdt/2+tdly_c+tdly_s+tdly_cs」だけ位相が進む。
ここで、デューティ指令値Du02 *、及び、デューティ指令値Du03 *による制御タイミングをあわせて説明すれば、以下のようになる。
区間bにおいては、デューティ指令値Du01 *に替えてデューティ指令値Du02 *を用いることにより、デッドタイムtdtの半分「tdt/2」だけ位相が進み、デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることにより、「tdt/2+tdly_c+tdly_s+tdly_cs」だけ位相が進む。その結果、デューティ指令値Du01 *に替えてデューティ指令値Du03 *を用いることで、「tdt+tdly_c+tdly_s+tdly_cs」だけU相PWM電圧vuの位相が進む。
区間cにおいては、デューティ指令値Du01 *に替えてデューティ指令値Du02 *を用いることにより、デッドタイムtdtの半分「tdt/2」だけ位相が遅れ、デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることにより、「tdt/2+tdly_c+tdly_s+tdly_cs」だけ位相が進む。デッドタイムtdtの半分「tdt/2」については位相の進みと遅れとがキャンセルされるので、デューティ指令値Du01 *に替えてデューティ指令値Du03 *を用いることで、「tdly_c+tdly_s+tdly_cs」だけU相PWM電圧vuの位相が進む。
以下では、デューティ指令値Du03 *を用いてU相PWM電圧vuがどのように算出されるのかについて説明する。
PWM変換処理部34は、デューティ指令値Du03 *とキャリア三角波とを比較し、比較結果に応じてPWM信号Puu0及びPul0を生成する。デューティ指令値Du03 *がキャリア三角波よりも大きい場合には、PWM信号Puu0はハイレベルとなり、デューティ指令値Du03 *がキャリア三角波よりも小さい場合には、PWM信号Puu0はローレベルとなり、さらに、PWM変換処理部34は、PWM信号Puu0のレベルを反転させることで、PWM信号Pul0を生成する。
ここで、PWM信号Puu0及びPul0の切り替えタイミングは、デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることで、区間b及びcの両者において、補正量Kdly_finに応じた時間だけ位相が進む。そのため、デューティ指令値Du03 *により定まるPWM信号Puu0のローレベル区間、及び、PWM信号Pul0のハイレベル区間は、デューティ指令値Du02 *がキャリア三角波よりも小さい区間t2と等しくなる。なお、上述のように、「t2=t1+tdt」が成立している。
デッドタイム付加処理部35は、PWM信号Puu0及びPul0のそれぞれについて、立ち上がりタイミングをデッドタイムtdtだけ遅らせることで、PWM信号Puu、Pulを算出する。
PWM信号Puuのローレベル区間は、PWM信号Puu0のローレベル区間と比較すると、デッドタイムtdt分だけ長くなり、「t2+tdt」となる。PWM信号Pulのハイレベル区間は、PWM信号Pui0のハイレベル区間と比較すると、デッドタイムtdt分だけ短くなり、「t2−tdt」となる。なお、この「t2−tdt」は、「t1」と等しい。また、PWM信号Puu、Puuの両者がローレベルである場合には、上側と下側のスイッチング素子がオフとなるが、U相電流iuはマイナスでありモータ200から電力制御装置100へと電流が流れているため、インバータの構成上、上側のスイッチング素子に併設されたダイオードだけが導通状態となるので、U相PWM電圧vuの電位は「Vdc/2」となる。そのため、最終的に、U相PWM電圧vuにおいて電位が「−Vdc/2」となるパルス幅は、PWM信号Pulのハイレベル区間と等しくなるものとする。そのため、デューティ指令値Du03 *を用いた場合のU相PWM電圧vuのパルス幅はt1であり、デューティ指令値Du01 *を用いた場合と等しくなる。
PWM信号Puu及びPulによってインバータ4が制御される。PWM信号Puuがローレベル、かつ、PWM信号Pulがハイレベルである状態では、U相配線に「−Vdc/2」の電位が供給され、それ以外の状態では、U相配線に「Vdc/2」の電位が供給される。供給される電位が変化するタイミングから、U相PWM電圧vuが変化するタイミングまでは、伝達遅延tdly_cと操作遅延tdly_sとの和である「tdly_c+tdly_s」だけ遅延する。
そして、このようなU相PWM電圧vuの変化に応じて、擬似的な交流電流であるU相電流iuが流れる。U相電流iuは、U相配線の電圧が「Vdc/2」から「−Vdc/2」に変化するときに最大となり、U相配線の電圧が「−Vdc/2」から「Vdc/2」に変化するときに最小となる。そして、U相電流iuの測定値は、その実値に対して、検出遅延tdly_csだけ遅れている。
従って、区間bにおいては、U相電流iuの検出値は、デューティ指令値Du03 *により定まるPWM信号Pul0に対して、デッドタイムtdtと、伝達遅延tdly_c、操作遅延tdly_s、及び、検出遅延時間tdly_csとの和、すなわち、「tdt+tdly_c+tdly_s+tdly_cs」だけ遅延する。
区間cにおいては、U相電流iuの検出値における最小値(谷)と対応するPWM信号Pul0の立ち下がりタイミングにおいて、デッドタイムtdtが付加されない。そのため、U相電流iuの検出値は、PWM信号Puu0に対して、伝達遅延tdly_c、操作遅延tdly_s、及び、検出遅延時間tdly_csの和、すなわち、「tdly_c+tdly_s+tdly_cs」だけ遅延する。
上述のように、区間bにおいて、U相電流iuが検出されるタイミングは、デッドタイム補償前のPWM信号Puu0及びPWM信号Pul0の切り替えタイミングに対して、「tdt+tdly_c+tdly_s+tdly_cs」だけ遅延する。しかしながら、デューティ指令値Du01 *に替えてデューティ指令値Du03 *を用いることで、PWM信号の切り替えタイミングは、「tdt+tdly_c+tdly_s+tdly_cs」だけ進む。
区間cにおいて、U相電流iuが検出されるタイミングは、デッドタイム補償前のPWM信号Puu0及びPWM信号Pul0の切り替えタイミングに対して、「tdly_c+tdly_s+tdly_cs」だけ遅延する。しかしながら、デューティ指令値Du01 *に替えてデューティ指令値Du03 *を用いることで、PWM信号の切り替えタイミングは、「tdly_c+tdly_s+tdly_cs」だけ進む。
このように、デューティ指令値Du01 *に替えてデューティ指令値Du03 *を用いることで、遅延分だけ予め位相が進められるように補正がされるので、発生する遅延は相殺される。
U相PWM電圧vuが「−Vdc/2」と「Vdc/2」との間で切り替えられることにより、高調波を含む電流が流れる。そのため、理想的には、これらの切り替えタイミング、すなわち、U相電流iuがピークとなる山及び谷の中間においてA/D変換が行われるのが好ましい。本実施形態によれば、検出されるU相電流iuのピークの中間において、キャリア三角波がピーク(山及び谷)となるので、キャリア三角波のピークにおいてA/D変換により得られる電流値にスイッチングに起因する高周波成分が混入するのを抑制できる。
図7は、本実施形態のPWM制御の他の一例の説明図である。この図においては、図6のb及びcに相当する区間が示されている。また、区間cにおいて、補正量Kdly_finを加算することにより得られるデューティ指令値の最大値d* u03_upperが、一点鎖線で示されている。
式(9)によれば、デューティ指令値の最大値d* u03_upperは、「Du02 *+Kdly_max」であり、この例においては、キャリア三角波の上限を超える。したがって、式(11)に示される上限超過量doverは「d* u03_upper−KD」となる。なお、上述のように、補正後のデューティ指令値が、キャリア三角波の上限及び下限の双方を超えることはないため、以下においては、下限側に関する、式(10)、(12)、(14)及び(16)を考慮せずに、式(17)において、「Kdly_fin=Kdly_p」が成立するものとする。
さらに、点線で、最小補正量Kdly_minを用いて補正をした場合のデューティ指令値が示されており、その大きさは「Du02 *+Kdly_min」である。この例においては、「Du02 *+Kdly_min」は、キャリア三角波の最大値「KD」よりも小さい。そのため、最大値d* u03_upperのキャリア三角波の最大値「KD」に対する超過量である上限超過量doverは、補正量の最大値と最小値との差「Kdly_max−Kdly_min」よりも小さい。そのため、式(13)において、「dover2=dover」が成立する。
ここで、式(9)は「d* u03_upper=Du02 *+Kdly_max」であり、式(11)において「dover=Du02 *+Kdly_max−KD」が成立する。式(13)において、「dover2=dover」が成立し、式(15)は「Kdly_p=Kdly_max−dover2」であるので、式(17)において、「Kdly_fin=Kdly_p」が成立する。すなわち、「Kdly_fin=Kdly_max−dover」であり、式(11)の関係を用いれば、この式は「Kdly_fin=KD−Du02 *」となる。その結果、式(5)によって「Du03 *=KD」が求められる。
ここで、デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることによる、U相PWM電圧vuの位相、すなわち、PWM信号の位相の変化について検討する。
まず、修正されていない最大補正量Kdly_maxが補正に用いられる場合における、PWM信号の切り替えタイミング、すなわち、デューティ指令値d* u03_upperとキャリア三角波との交点について検討する。この図では、二点鎖線で示されるように、キャリア三角波の上限がないと仮定して、区間cにおけるキャリア三角波が区間bまで延長されている。この延長されたキャリア三角波と、デューティ指令値の最大値d* u03_upperとの交点が、本来的に、デューティ指令値d* u03_upperを用いた場合のPWM信号のレベルの切り替えタイミングとなる。
したがって、図示されるように、デューティ指令値Du02 *に替えてデューティ指令値の最大値d* u03_upperを用いることで、PWM信号の切り替えタイミングは、補正量である「Kdly_max」に相当する時間、すなわち、「tdt/2+tdly_c+tdly_s+tdly_cs」だけ位相が進むべきである。しかしながら、キャリア三角波には上限があるので、区間cにおいては、PWM信号の切り替えタイミングは、延長されたキャリア三角波とデューティ指令値の最大値d* u03_upperとの交点とならず、その交点からtexだけ遅れる。なお、texは、最大値d* u03_upperと、延長されたキャリア三角波との交点の、区間cの始点からの進み時間である。
本実施形態においては、デューティ指令値の最大値d* u03_upperに替えてデューティ指令値D* u03を用いられる。そのため、デューティ指令値D* u03を用いた場合のPWM信号の切り替えタイミングは、デューティ指令値d* u03_upperを用いた場合のPWM信号の切り替えタイミングに対して、texだけ遅れる。
すなわち、区間b及びcにおいて、デューティ指令値Du02 *に替えて最大値d* u03_upperを用いることで、「tdt/2+tdly_c+tdly_s+tdly_cs」だけ位相が進む。そして、デューティ指令値の最大値d* u03_upperに替えてデューティ指令値D* u03が用いられるので、texだけ移送が遅れる。その結果、区間b及びcの両者において、デューティ指令値D* u03により得られるPWM信号の切り替えタイミングは、デューティ指令値D* u02により得られる切り替えタイミングに対して、同じ位相だけ進む。
そのため、デューティ指令値D* u03により得られるPWM信号Puu0のローレベル区間、及び、Pul0のハイレベル区間は、デューティ指令値D* u03がキャリア三角波よりも小さい区間と同じt2となる。
そして、デッドタイム付加が行われることにより、PWM信号Puu0及びPul0は、それぞれの立ち上がりのタイミングがデッドタイムtdtだけ遅延されて、PWM信号Puu及びPulが算出される。そのため、U相PWM電圧vuのパルス幅に相当するPWM信号Pulのハイレベル区間は、「t2−tdt」、すなわち、「t1」となる。したがって、U相PWM電圧vuは、所望のパルス幅となる。
図8は、本実施形態のPWM制御のさらに他の一例の説明図である。
この図においては、式(9)により得られるデューティ指令値の最大値d* u03_upperは、「Du02 *+Kdly_max」であり、点線で示されるキャリア三角波の最大値KDを超える。そのため、式(11)において、「dover=d* u03_upper−KD」が成立する。
さらに、最小補正量Kdly_minを用いた補正により得られるデューティ指令値「Du02 *+Kdly_min」は、キャリア三角波の最大値KDよりも大きい。その結果、「Kdly_max−Kdly_min」は、上限超過量doverよりも小さいので、式(13)において、「dover2=Kdly_max−Kdly_min」が成立する。そのため、式(15)において、「Kdly_p=Kdly_min」が成立する。そして、式(17)において、「Kdly_fin=Kdly_min」が成立する。
デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることで、最小補正量Kdly_minに相当する「tdt/2」だけ、PWM信号の切り替えタイミングの位相が進む。区間cにおいては、上限がないと仮定して区間bまで延長されたキャリア三角波を用いれば、デューティ指令値Du02 *に替えてデューティ指令値Du03 *を用いることで、「tdt/2」だけPWM信号の切り替えタイミングの位相が進むことが理解できる。
また、デューティ指令値Du02 *がキャリア三角波よりも小さい区間t2については、区間a、bのそれぞれにおいてキャリア三角波の勾配の絶対値が等しい。そのため、区間bにおいてデューティ指令値Du02 *がキャリア三角波よりも小さい区間は、「t2/2」となる。その結果、デューティ指令値Du03 *により得られるPWM信号Puu0のローレベル区間、及び、PWM信号Pul0のハイレベル区間は、「tdt/2」と「t2/2」との和である「(tdt+t2)/2」となる。
また、図示されているように、区間cにおいては、区間bまで延長されたキャリア三角波におり定まるPWM信号の切り替えタイミングは、区間cの開始タイミングよりも前である。そのため、図示されるように、「tdt/2」は「t2/2」よりも大きいという関係が成立する。この関係によれば、PWM信号Puu0のハイレベル区間、及び、PWM信号Pul0のローレベル区間である「(tdt+t2)/2」は、デッドタイムtdtよりも小さくなることが理解できる。
このように、PWM信号Puu0のローレベル区間、及び、PWM信号Pul0のハイレベル区間、がデッドタイムtdtよりも短い場合には、図4に示されるように、これらの区間と同じ長さのデッドタイムが付加される。その結果、PWM信号Puuのローレベル区間は「tdt+t2」となり、PWM信号Pulのハイレベル区間はなくなる。
PWM信号Pulのハイレベル区間は消滅するが、PWM信号Puuのローレベル区間は、所望のパルス幅であるt2と、デッドタイムtdtとの和とすることができるので、PWMパルス電圧vuは所望のパルス幅となる。
なお、上述の実施形態においては、キャリア三角波が最大値から始まる減少区間aにおいて、デューティ更新が行われて(S501:Yes)、デューティ指令値Du01 *、Du02 *、及び、補正量Kdly_finが算出される。さらに、区間aにおいて、デューティ指令値Du02 *に対して補正量Kdly_finを用いた補正をすることで、その次の区間bにて用いられるデューティ指令値Du03 *が算出される。そして、算出されたデューティ指令値Du03 *が区間bにおいて用いられるように更新される。なお、区間aにおいて、区間cにおいて用いられるデューティ指令値Du03 *は、デューティ指令値Du02 *に対して、補正量Kdly_finに付される正負の符号を反転させることで算出できる。
そして、区間bにおいては、区間aにおいて生成されたDu02 *、及び、補正量Kdly_finを用いて算出されるデューティ指令値Du03 *が、その次の区間cにおいて用いられるように更新される。
このようにして、デューティ更新と、補正処理とは、以下の表1に示されるような組み合わせに基づいて行われる。
表1のような処理に限られず、以下の表2に示されるように、全区間で補正処理を行うことで次区間で用いられるデューティ指令値Du03 *を算出してもよい。詳細には、区間aにおいては、算出されるデューティ指令値Du01 *、Du02 *が、b区間に続けてc区間においても使用されると仮定して、b及びcの両区間において、補正後のデューティ指令値がキャリア三角波のピーク値を超えないように、補正量Kdly_finを算出する。
なお、dq軸電圧指令値vd *、vq *から三相PWM電圧指令値vu *、vv *、vw *に変換する際に、b区間に対応するθと、c区間に対応するθ(1区間分の回転角に基づいて予測する)のそれぞれについて、個々に変換することでc区間における三相PWM電圧指令値の状態を予測して、補正量Kdly_finを算出してもよい。
なお、表1及び表2のいずれにおいても、デューティ更新が行われる区間aの後の2つの区間b及びc、すなわち、PWMパルス信号においてローレベルからハイレベルへの切り替えをする区間b、及び、ハイレベルからローレベルへの切り替えをする区間cの両者について、デューティ指令値がキャリア三角波のピーク値を超えるか否かを判定して、補正量Kdly_finが算出される。
図9(a)は、本実施形態における、生成されるPWM電圧のパルス幅と、デューティ指令値との関係を示すグラフである。図9(b)は、比較例における、生成されるPWM電圧のパルス幅と、デューティ指令値との関係を示すグラフである。比較例においては、式(5)において、補正量Kdly_finに替えて最大補正量Kdly_maxが用いられるものとする。
これらの図には、横軸に示されるデューティ指令値Du02 *に応じて、縦軸に、生成されるPWM電圧おけるオン時間の比率が示されている。なお、上側のスイッチング素子のオン時間の比率が実線で、下側のスイッチング素子のオン時間の比率が破線で示されている。
図9(b)に示されるように、比較例においては、デューティ指令値Du02 *が、最大値「+KD」及び最小値「−KD」の近傍においては、デューティ指令値Du02 *とPWM電圧おけるオン時間の比率との関係における線形性が保たれない。これに対して、図9(a)に示されるように、本実施形態においては、当該関係において線形性が保つことができる。これは、デューティ指令値Du02 *が0%、100%の近傍となる場合においては、図8に示されるような処理が行われているため、補正によって得られるデューティ指令値Du03 *がキャリア三角波の最大値、及び、最小値を超えたとしても、PWM電圧を所望のパルス幅とすることができることに起因する。
本実施形態によれば、以下の効果を得ることができる。
PWM信号が生成されてからPWM電圧が実際にモータ200に印加されるまでの間に様々な遅延が発生し、これらの遅延に起因してPWM電圧において位相のずれが発生する。そこで、発生する遅延に応じた補正量を用いて予めデューティ指令値を補正しておくことで、位相のずれの発生を抑制することが考えられる。しかしながら、遅延に応じた補正量を用いて補正されたデューティ指令値がキャリア三角波のピーク値(最大値又は最小値)を超えてしまう場合には、生成されるPWM電圧は所望のパルス幅とならない。
そこで、遅延時間に応じた補正量を用いて補正される場合のデューティ指令値が、キャリア信号のピーク値を超えるか否かを判断する(式(11)、(12))。そして、その補正される場合のデューティ指令値がピーク値を超えると判断される場合には、その超過量に応じた修正量を用いて補正量を修正し(式(15)、(16))、その補正量を用いてデューティ指令値を補正し(式(5))、補正したデューティ指令値を用いてPWM信号が生成される。
このように超過量に応じて補正量が修正されることにより、補正されたデューティ指令値がキャリア三角波のピーク値を超えることに起因する生成されるPWM電圧のパルス幅の変化を抑制できる。その結果、モータ200へ供給される交流電力における外乱の発生を抑制できる。さらに、遅延時間に応じた補正量によりデューティ指令値が補正されているので、PWM信号のキャリア三角波に対する位相のずれの発生が抑制され、サンプリングより得られる電流の測定値にインバータ4におけるスイッチングに起因するPWM高調波の混入が抑制される。このようにして、モータ200の制御性の向上を図ることができる。
本実施形態の電力制御装置100によれば、遅延に応じた補正量は、第1遅延(本実施形態では、デッドタイムtdt)に起因する第1成分と、第2遅延(伝達遅延tdly_c、検出遅延tdly_cs、及び、操作遅延tdly_s)に起因する第2成分とからなる。そして、第1成分を用いて補正される場合に得られるデューティ指令値が、キャリア信号のピーク値を超過する場合には、PWM変換器3における後段の処理(本実施形態では図4に示されるデッドタイム付加処理)に起因して、PWM電圧は所望のパルス幅となる。
そこで、第1成分を用いて補正される場合に得られるデューティ指令値が、キャリア信号のピーク値を超える場合には、第2成分を修正量とする。そして、遅延に応じた補正量(第1成分及び第2成分)に対して修正量(第2成分)を用いた修正をすることで、修正された補正量(第1成分)が得られる。その補正量(第1成分)を用いた補正により得られるデューティ指令値がキャリア信号のピーク値を超過したとしても、PWM電圧は所望のパルス幅となる。そのため、デューティ指令値が0%や100%に近い場合においては、第1成分を用いた補正によってデューティ指令値が0%を下回る、又は、100%を超えても、本実施形態によればPWM電圧を所望のパルス幅とすることができる。このようにPWM制御の精度の向上を図ることができる。
なお、本実施形態においては、後段において図4に示されるようなデッドタイム付加が行われており、第1成分としてデッドタイムtdtに応じた値が用いられたが、これに限らない。特定の遅延に起因する成分を用いた補正により得られるデューティ指令値が、キャリア信号のピーク値を超過する場合に、その超過に起因してPWM電圧のパルス幅が変化しないのであるならば、その成分を第1成分とすることができる。
詳細には、本実施形態の電力制御装置100によれば、第1成分は、第1遅延であるデッドタイムtdtに起因する成分である。図8に示されるように、このデッドタイムtdtを用いた補正により得られるデューティ指令値「Du02 *+Kdly_min」が、キャリア三角波の最大値「+KD」を超えるような場合でも、本処理の後段にて行われる図4に示されるデッドタイム付加の処理に起因して、PWM電圧は所望のパルス幅t2となる。
このような場合には、遅延に応じた最大補正量Kdly_max(第1成分及び第2成分)に対して、「Kdly_max−Kdly_min」(第2成分)を修正量とした修正がなされるので、得られる補正量は、デッドタイム時間tdtに相当する「Kdly_min」(第1成分)となる。「Kdly_min」を用いた補正がされたデューティ指令値がキャリア三角波の最大値に対して超過したとしても、PWM信号におけるパルス幅「(t2+tdt)/2」は、後段の図4に示されるデッドタイム付加の処理によって2倍とされるため、PWM電圧を所望のパルス幅「t2+tdt」とすることができる。このようにすることで、デッドタイム付加に起因するパルス幅の変化を抑制することができる。その結果、PWM電圧制御の精度の向上を図ることができる。
本実施形態の電力制御装置100によれば、図7に示されるように、PWM電圧において発生する位相のずれに応じた補正量は、遅延時間の合計に応じた最大補正量Kdly_maxである。なお、最大補正量Kdly_maxを用いて補正されたデューティ指令値はd* u03_upperは、キャリア三角波の最大値「+KD」を超える。そして、上限超過量doverを修正量として補正量を修正し、修正された補正量を用いた補正によってデューティ指令値Du03 *を得る。
ここで、区間cのキャリア三角波に上限がないと仮定して区間bまで延長すれば、デューティ指令値Du02 *に替えて修正されていない補正量により求められるデューティ指令値d* u03_upperを用いることで、PWM電圧の切り替えタイミングは、区間b及びcの双方において、最大補正量Kdly_maxに相当する時間だけ進む。
しかしながら、実際にはキャリア三角波には上限があり、区間cにおいては、デューティ指令値d* u03_upperとキャリア三角波との交点で、PWM電圧を切り替えることはできない。そこで、デューティ指令値d* u03_upperに替えてデューティ指令値Du03 *を用いることで、デューティ指令値Du03 *はキャリア三角波の最大値及び最小値を超えないため、区間b及びcの双方において、PWM電圧の切り替えタイミングの位相をtexだけ進めることができる。これにより、PWM電圧の切り替えタイミングは、区間b及びcの双方において同じだけ位相が進むので、PWM信号を、デューティ指令値Du02 *に応じた所望のパルス幅とすることができる。
なお、遅延時間の合計に応じた最大補正量Kdly_maxは、デッドタイムtdtである第1遅延に起因する第1成分以外に、第2遅延である伝達遅延tdly_cに起因する第2成分を含む。伝達遅延tdly_cは、PWM信号の生成から、前記PWM電圧の負荷への印加までの遅延である。補正量Kdly_finは最大補正量Kdly_maxに対して修正量だけ修正されているので、補正量Kdly_finによる補正では、最大補正量Kdly_maxに含まれる全ての遅延を相殺することはできない。しかしながら、伝達遅延tdly_cなどの遅延時間の一部はデューティ指令値の補正により相殺できる。したがって、電流のサンプリングタイミングがインバータのスイッチングタイミングから時間的に離間でき、検出値におけるPWM高調波の混入を抑制できる。さらに、上述のように、PWM電圧を所望のパルス幅とすることができる。このようにして、PWM電圧制御の精度の向上を図ることができる。
実施形態の電力制御装置100によれば、最大補正量Kdly_maxの第2成分は、スイッチング素子の操作に起因する遅延時間である操作遅延tdly_sや、検出系(センサや入力回路におけるA/D変換)の遅延時間である検出遅延tdly_csなどの第2遅延に起因する成分を含む。これらの第2遅延に起因する成分が第2成分に含まれることにより、PWM電圧のパルス幅がより所望の値に近づけることができるので、PWM電圧制御の精度の向上を図ることができる。
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例の一部を示したに過ぎず、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。