IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーの特許一覧

<>
  • 特許-電子制御装置及び操舵システム 図1
  • 特許-電子制御装置及び操舵システム 図2
  • 特許-電子制御装置及び操舵システム 図3
  • 特許-電子制御装置及び操舵システム 図4
  • 特許-電子制御装置及び操舵システム 図5
  • 特許-電子制御装置及び操舵システム 図6
  • 特許-電子制御装置及び操舵システム 図7
  • 特許-電子制御装置及び操舵システム 図8
  • 特許-電子制御装置及び操舵システム 図9
  • 特許-電子制御装置及び操舵システム 図10
  • 特許-電子制御装置及び操舵システム 図11
  • 特許-電子制御装置及び操舵システム 図12
  • 特許-電子制御装置及び操舵システム 図13
  • 特許-電子制御装置及び操舵システム 図14
  • 特許-電子制御装置及び操舵システム 図15
  • 特許-電子制御装置及び操舵システム 図16
  • 特許-電子制御装置及び操舵システム 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-07
(45)【発行日】2023-11-15
(54)【発明の名称】電子制御装置及び操舵システム
(51)【国際特許分類】
   H02P 21/22 20160101AFI20231108BHJP
   B62D 5/04 20060101ALI20231108BHJP
   H02P 27/06 20060101ALI20231108BHJP
   H02P 25/22 20060101ALI20231108BHJP
   G06F 7/499 20060101ALI20231108BHJP
   B62D 6/00 20060101ALI20231108BHJP
【FI】
H02P21/22
B62D5/04
H02P27/06
H02P25/22
G06F7/499 101
B62D6/00
【請求項の数】 8
(21)【出願番号】P 2020123883
(22)【出願日】2020-07-20
(65)【公開番号】P2022020407
(43)【公開日】2022-02-01
【審査請求日】2023-01-25
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100121821
【弁理士】
【氏名又は名称】山田 強
(74)【代理人】
【識別番号】100139480
【弁理士】
【氏名又は名称】日野 京子
(74)【代理人】
【識別番号】100125575
【弁理士】
【氏名又は名称】松田 洋
(74)【代理人】
【識別番号】100175134
【弁理士】
【氏名又は名称】北 裕介
(72)【発明者】
【氏名】鈴木 貴広
(72)【発明者】
【氏名】滝 雅也
(72)【発明者】
【氏名】吉田 知史
(72)【発明者】
【氏名】片岡 資章
【審査官】安池 一貴
(56)【参考文献】
【文献】特開2004-278483(JP,A)
【文献】特開平04-268931(JP,A)
【文献】特開2017-229156(JP,A)
【文献】特開2019-193473(JP,A)
【文献】特開2007-213529(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H02P 21/22
B62D 5/04
H02P 27/06
H02P 25/22
G06F 7/499
B62D 6/00
(57)【特許請求の範囲】
【請求項1】
浮動小数点型データの演算を行う複数の演算ブロック(41~44,51~54,61~63)を備える電子制御装置(33,33A,33B)において、
複数の前記演算ブロックの演算データを記憶する記憶部(36,36A,36B)と、
複数の前記演算ブロックの演算データに基づいて、制御対象(31,38)における制御量の指令値(Ttgt,Ttgt1,Ttgt2)を算出する指令値算出部(70)と、
前記指令値の算出に先立ち、前記記憶部に記憶されているデータのうち、少なくとも2つの前記演算ブロックの演算データの加算データを算出し、算出した前記加算データから、算出した前記加算データを減算したデータである判定データを算出する判定値算出部と、
前記指令値の算出に先立ち、算出された前記判定データが非数であるか否かを判定する判定処理を行う判定部と、
前記指令値の算出に先立ち、前記判定部により非数であると判定された場合、前記記憶部に記憶されているデータのうち、前記判定部の判定対象になった前記演算ブロックの演算データに対する初期化処理を行う処理部と、を備える電子制御装置。
【請求項2】
複数の前記演算ブロックが分けられた各グループ(40,50,60)は、前記各グループを構成する前記演算ブロックの演算データに基づいて、前記制御対象における部分指令値(Tasf,Tcaf,Tctf)を算出する部分指令値算出部であり、
前記指令値算出部は、前記各部分指令値算出部により算出された前記部分指令値に基づいて前記指令値を算出し、
前記判定値算出部は、前記指令値の算出に先立ち、前記各部分指令値算出部において前記判定データを算出し、
前記判定処理は、前記各部分指令値算出部において、算出された前記判定データが非数であるか否かを判定する処理であり、
前記処理部は、前記記憶部に記憶されているデータのうち、非数であると判定された前記部分指令値算出部を構成する前記演算ブロックの演算データに対する初期化処理を行う請求項に記載の電子制御装置。
【請求項3】
前記処理部は、連続する複数回の制御周期それぞれにおいて前記判定部により非数であると判定されるまで、前記制御量の制御を継続させ、連続する複数回の制御周期それぞれにおいて前記判定部により非数であると判定された場合、前記制御量の制御を停止させる請求項1又は2に記載の電子制御装置。
【請求項4】
操舵装置(30)に適用される請求項1~のいずれか1項に記載の電子制御装置。
【請求項5】
前記電子制御装置は、操舵装置(30)に適用され、
前記制御対象は、第1,第2ステータ巻線群(39A,39B)を有するとともに、前記制御量としての操舵トルクを発生するモータ(38)であり、
前記操舵装置には、
前記モータと、
前記第1ステータ巻線群に電気的に接続された第1インバータ(32A)と、
前記第2ステータ巻線群に電気的に接続された第2インバータ(32B)と、が備えられ、
第1演算ブロック(91,101)及び第2演算ブロック(92,102)を有し、算出された前記指令値と、前記第1演算ブロックの演算データとに基づいて、前記第1インバータのスイッチング制御を行うための演算処理を行い、算出された前記指令値と、前記第2演算ブロックの演算データとに基づいて、前記第2インバータのスイッチング制御を行うための演算処理を行う駆動演算部を備え、
前記記憶部は、前記第1演算ブロック及び前記第2演算ブロックの演算データを記憶し、
前記判定値算出部は、前記指令値の算出に先立ち、前記第1演算ブロック及び前記第2演算ブロックにおいて前記判定データを算出し、
前記判定部は、前記記憶部に記憶されているデータのうち、前記第1演算ブロック及び前記第2演算ブロックそれぞれの前記判定データが非数であるか否かを判定し、
前記第1演算ブロック及び前記第2演算ブロックのうち、前記第1演算ブロックの前記判定データが非数であると判定された場合、前記第1インバータのスイッチング制御を行うための演算処理を停止させて、かつ、前記第2インバータのスイッチング制御を行うための演算処理を継続させ、
前記第1演算ブロック及び前記第2演算ブロックのうち、前記第2演算ブロックの前記判定データが非数であると判定された場合、前記第2インバータのスイッチング制御を行うための演算処理を停止させて、かつ、前記第1インバータのスイッチング制御を行うための演算処理を継続させる請求項に記載の電子制御装置。
【請求項6】
前記電子制御装置は、操舵装置(30)に適用され、
前記制御対象は、第1,第2ステータ巻線群(39A,39B)を有するとともに、前記制御量としての操舵トルクを発生するモータ(38)であり、
前記操舵装置には、
前記モータと、
前記第1ステータ巻線群に電気的に接続された第1インバータ(32A)と、
前記第2ステータ巻線群に電気的に接続された第2インバータ(32B)と、が備えられ、
前記指令値算出部は、
前記指令値として、操舵トルクの第1指令値を算出する第1指令値算出部と、
前記指令値として、操舵トルクの第2指令値を算出する第2指令値算出部と、であり、
第1演算ブロック(110,112~125)を有し、算出された前記第1指令値と、前記第1演算ブロックの演算データとに基づいて、前記第1インバータのスイッチング制御を行うための演算処理を行う第1駆動演算部と、
第2演算ブロック(210,212~225)を有し、算出された前記第2指令値と、前記第2演算ブロックの演算データとに基づいて、前記第2インバータのスイッチング制御を行うための演算処理を行う第2駆動演算部と、を備え、
前記記憶部は、前記第1演算ブロック及び前記第2演算ブロックの演算データを記憶し、
前記判定値算出部は、
前記第1指令値の算出に先立ち、前記第1演算ブロックにおいて前記判定データを算出し、
前記第2指令値の算出に先立ち、前記第2演算ブロックにおいて前記判定データを算出し、
前記判定部は、前記記憶部に記憶されているデータのうち、前記第1演算ブロック及び前記第2演算ブロックそれぞれ前記判定データが非数であるか否かを判定し、
前記第1演算ブロック及び前記第2演算ブロックのうち、前記第1演算ブロックの前記判定データが非数であると判定された場合、前記第1インバータのスイッチング制御を行うための前記第1駆動演算部の演算処理を停止させて、かつ、前記第2インバータのスイッチング制御を行うための前記第2駆動演算部の演算処理を継続させ、
前記第1演算ブロック及び前記第2演算ブロックのうち、前記第2演算ブロックの前記判定データが非数であると判定された場合、前記第2インバータのスイッチング制御を行うための前記第2駆動演算部の演算処理を停止させて、かつ、前記第1インバータのスイッチング制御を行うための前記第1駆動演算部の演算処理を継続させる請求項に記載の電子制御装置。
【請求項7】
ステータ巻線群(39A,39B)を有するとともに、操舵トルクを発生するモータ(31,38)と、
前記ステータ巻線群に電気的に接続されたインバータ(32,32A,32B)と、を備える操舵装置(30)に適用され、浮動小数点型データの演算を行う複数の演算ブロック(80~86,110,112~125,210,212~225)を備える電子制御装置(33,33A,33B)において、
複数の前記演算ブロックの演算データを記憶する記憶部(36,36A,36B)と、
複数の前記演算ブロックの演算データに基づいて、前記インバータのスイッチング制御を行うための演算処理を行う駆動演算部と、
前記記憶部に記憶されているデータのうち、前記モータのd,q軸に関する前記演算ブロックの演算データが非数又は無限大であるか否かを判定する判定部と、を備え、
前記d,q軸に関する前記演算ブロックの演算データのうち、d軸に関する演算ブロックの演算データが非数又は無限大であると判定された場合、q軸に関する演算ブロックの演算データに基づいて前記インバータのスイッチング制御を継続させる電子制御装置。
【請求項8】
請求項4~7のいずれか1項に記載の電子制御装置と、前記操舵装置と、を備える操舵システム(10)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子制御装置及び操舵システムに関する。
【背景技術】
【0002】
従来、浮動小数点型データの演算を行う電子制御装置が知られている。浮動小数点型データが用いられる演算の場合、非数を使用した演算データは非数となる。そのため、演算の途中で非数が発生すると、発生した非数の影響が後続する演算に伝播してしまう。
【0003】
そこで、特許文献1に記載されているように、前回の演算データを用いて今回の演算を行うに際し、前回の演算データが非数である場合、前回の演算データに代えてデフォルト値を用いる電子制御装置が知られている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2003-280891号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
電子制御装置として、浮動小数点型データの演算を行う複数の演算ブロックと、複数の演算ブロックの演算データを記憶する記憶部とを備えるものが知られている。この電子制御装置は、複数の演算ブロックの演算データに基づいて、制御対象の制御量の指令値を算出し、制御対象の制御量を指令値に制御する。
【0006】
ここで、このような電子制御装置についても、上述した非数の問題に対処することが要求される。なお、非数になる問題に限らず、演算データが無限大になる問題にも対処することが要求される。
【0007】
本発明は、制御対象における制御量の制御の信頼性を高めることができる電子制御装置を提供することを主たる目的とする。
【課題を解決するための手段】
【0008】
第1の発明は、浮動小数点型データの演算を行う複数の演算ブロックを備える電子制御装置において、
複数の前記演算ブロックの演算データを記憶する記憶部と、
複数の前記演算ブロックの演算データに基づいて、制御対象における制御量の指令値を算出する指令値算出部と、
前記指令値の算出に先立ち、前記記憶部に記憶されているデータのうち少なくとも1つの前記演算ブロックの演算データが非数又は無限大であるか否かを判定する判定処理を行う判定部と、
前記指令値の算出に先立ち、前記判定部により非数又は無限大であると判定された場合、前記記憶部に記憶されているデータのうち、前記判定部の判定対象になった前記演算ブロックの演算データに対する初期化処理を行う処理部と、を備える。
【0009】
第1の発明では、指令値算出部による指令値の算出に先立ち、記憶部に記憶されているデータのうち少なくとも1つの演算ブロックの演算データが非数又は無限大であるか否かが判定される。そして、非数又は無限大であると判定された場合、記憶部に記憶されているデータのうち、判定対象になった演算ブロックの演算データに対する初期化処理が行われる。このため、非数又は無限大になっている演算データが指令値の算出に及ぼす影響を抑制することができる。これにより、制御対象における制御量の制御の信頼性を高めることができる。
【0010】
ここで、第1の発明は、例えば第2の発明のように具体化できる。第2の発明は、前記指令値の算出に先立ち、前記記憶部に記憶されているデータのうち、少なくとも2つの前記演算ブロックの演算データの加算データを算出し、算出した前記加算データから、算出した前記加算データを減算したデータである判定データを算出する判定値算出部を備え、
前記判定部は、前記判定処理として、算出された前記判定データが非数であるか否かを判定する処理を行い、
前記処理部は、前記指令値の算出に先立ち、前記判定部により非数であると判定された場合、前記初期化処理を行う。
【0011】
複数の演算データの少なくとも1つが非数である場合、これら演算データの加算データも非数となる、また、複数の演算データの少なくとも1つが無限大である場合、これら演算データの加算データから、この加算データを減算したデータが非数となる。
【0012】
この点に鑑み、第2の発明は、判定データを算出する判定値算出部を備えている。判定データの算出に用いられる演算ブロックの演算データの少なくとも1つが非数である場合、加算データも非数となり、加算データに基づいて算出される判定データも非数となる。また、判定データの算出に用いられる演算ブロックの演算データの少なくとも1つが無限大である場合、加算データに基づいて算出される判定データが非数となる。以上説明した第2の発明によれば、複数の演算ブロックの演算データに、非数及び無限大の少なくとも一方が含まれていることを迅速に判定できる。これにより、制御対象における制御量の制御の信頼性をより高めることができる。
【図面の簡単な説明】
【0013】
図1】第1実施形態に係る操舵システムの構成図。
図2】電子制御装置の処理を示すブロック図。
図3】操舵指令トルクの算出処理の手順を示すフローチャート。
図4】第1チェック処理の手順を示すフローチャート。
図5】第2チェック処理の手順を示すフローチャート。
図6】第3チェック処理の手順を示すフローチャート。
図7】第2実施形態に係るチェック処理の手順を示すフローチャート。
図8】第3実施形態に係るチェック処理の手順を示すフローチャート。
図9】第4実施形態に係るトルク制御処理を示すブロック図。
図10】トルク制御処理におけるチェック処理の手順を示すフローチャート。
図11】第5実施形態に係る操舵システムの構成図。
図12】トルク制御処理を示すブロック図。
図13】トルク制御処理におけるチェック処理の手順を示すフローチャート。
図14】第6実施形態に係る操舵システムの構成図。
図15】トルク制御処理を示すブロック図。
図16】トルク制御処理におけるチェック処理の手順を示すフローチャート。
図17】トルク制御処理におけるチェック処理の手順を示すフローチャート。
【発明を実施するための形態】
【0014】
<第1実施形態>
以下、本発明に係る電子制御装置を具体化した第1実施形態について、図面を参照しつつ説明する。本実施形態の電子制御装置は、ドライバの操舵アシストを実施する操舵システムを構成する。
【0015】
図1に示すように、操舵システム10は、ステアリングホイール11、ステアリングシャフト12、ピニオンギア13、ラック軸14及び車輪15を備えている。ステアリングシャフト12の一端には、ステアリングホイール11が設けられ、ステアリングシャフト12の他端には、ピニオンギア13が設けられている。ピニオンギア13は、ラック軸14に噛み合っている。ラック軸14の両端には、ダイロッド等を介して一対の車輪15が連結されている。ドライバのステアリングホイール11の操作に伴うステアリングシャフト12の回転運動は、ラック軸14の直線運動に変換される。これにより、車輪15の操舵角を変化させる。
【0016】
操舵システム10は、ステアリングシャフト12に設けられたトルクセンサ20及び操舵角センサ21を備えている。トルクセンサ20は、ドライバによるステアリングホイール11の操作に伴う操舵トルクTsを検出する。操舵角センサ21は、ドライバによるステアリングホイール11の操舵角θs、及び操舵角θsの変化速度である操舵角速度ωsを検出する。
【0017】
操舵システム10は、電動パワーステアリング装置(以下、EPS装置30)と、減速ギア16とを備えている。EPS装置30は、モータ31と、インバータ32とを備えている。本実施形態において、モータ31及びインバータ32は三相のものである。モータ31を構成するロータの回転軸は、減速ギア16を介してステアリングシャフト12に連結されている。モータ31を構成するステータ巻線には、操舵システム10が備えるバッテリ37からインバータ32を介して電力が供給される。これにより、モータ31は、ドライバの操舵を補助するためのトルクをステアリングシャフト12に発生させる。
【0018】
EPS装置30は、電子制御装置33を備えている。電子制御装置33には、トルクセンサ20及び操舵角センサ21の検出値に加え、車両に備えられる車速センサ22の検出値が入力される(図2参照)。
【0019】
電子制御装置33は、CPUを主に構成される制御部34と、ROM35と、記憶部としてのRAM36とを備えている。制御部34は、ROM35に記憶されている制御プログラムの指示にしたがって浮動小数点型データの演算を行うことにより、モータ31の出力トルクを操舵指令トルクTtgtに制御する操舵制御を行う。
【0020】
浮動小数点型データの形式は、IEEE754規格によって定義されている。この形式のデータのうち、単精度記憶形式の浮動小数点型データは、上位ビットから順に、1ビットの符号部と、8ビットの指数部と、23ビットの仮数部とで定義されている。また、倍精度記憶形式の浮動小数型データは、上位ビットから順に、1ビットの符号部と、11ビットの指数部と、52ビットの仮数部とで定義されている。
【0021】
RAM36は、制御部34が制御プログラムを実行している間に用いる変数などのデータを記憶する記憶装置(例えば揮発性メモリ)である。
【0022】
図2に、制御部34により実行される操舵制御のうち、操舵指令トルクTtgt(「指令値」に相当)の算出処理のブロック図を示す。
【0023】
制御部34は、アシストトルク演算部40、補償トルク演算部50、制御トルク演算部60及び指令値演算部70を備えている。なお、本実施形態において、アシストトルク演算部40、補償トルク演算部50及び制御トルク演算部60のそれぞれが「部分指令値算出部」に相当し、指令値演算部70が「指令値算出部」に相当する。
【0024】
まず、アシストトルク演算部40について説明する。アシストトルク演算部40は、トルクセンサ20により検出された操舵トルクTsと、車速センサ22により検出された自車両の走行速度Vsとに基づいて、アシストトルクTasfを算出する。アシストトルク演算部40は、制御部34が備える複数の演算ブロックのうち、基本トルク算出部41、第1係数算出部42、第1乗算部43及び第1リミッタ44のグループからなる。
【0025】
基本トルク算出部41は、検出された操舵トルクTsに基づいて、基本トルクTbを算出する。詳しくは、基本トルク算出部41は、操舵トルクTsが大きいほど、基本トルクTbを大きくする。基本トルクTbは、操舵トルクTsと関係付けられて基本トルクTbが規定されたマップ情報又は数式情報に基づいて算出されればよい。
【0026】
第1係数算出部42は、検出された走行速度Vsに基づいて、第1係数K1(>0)を算出する。第1係数K1は、走行速度Vsが低いほど、基本トルクTbを大きくするように算出される。これは、走行速度Vsが低いほど、ドライバの操舵アシストに要するトルクが大きくなることに鑑みたものである。第1係数算出部42は、例えば、走行速度Vsが高いほど第1係数K1を小さくする。第1係数K1は、走行速度Vsと関係付けられて第1係数K1が規定されたマップ情報又は数式情報に基づいて算出されればよい。
【0027】
第1乗算部43は、基本トルクTbに第1係数K1を乗算することにより、基本アシストトルクTastを算出する。
【0028】
第1リミッタ44は、算出された基本アシストトルクTastが下限ガード値以上であってかつ上限ガード値以下の場合、第1乗算部43により算出された基本アシストトルクTastをアシストトルクTasf(「部分指令値」に相当)として出力する。一方、第1リミッタ44は、算出された基本アシストトルクTastが下限ガード値を下回る場合、下限ガード値をアシストトルクTasfとして出力し、算出された基本アシストトルクTastが上限ガード値を上回る場合、上限ガード値をアシストトルクTasfとして出力する。
【0029】
続いて、補償トルク演算部50について説明する。補償トルク演算部50は、走行速度Vsと、操舵角センサ21により検出された操舵角速度ωsとに基づいて、補償トルクTcafを算出する。補償トルク演算部50は、制御部34が備える複数の演算ブロックのうち、基本補償トルク算出部51、第2係数算出部52、第2乗算部53及び第2リミッタ54のグループからなる。
【0030】
基本補償トルク算出部51は、検出された操舵角速度ωsに基づいて、ベース補償トルクTcbを算出する。ベース補償トルクTcbは、操舵角速度ωsと関係付けられてベース補償トルクTcbが規定されたマップ情報又は数式情報に基づいて算出されればよい。
【0031】
第2係数算出部52は、走行速度Vsに基づいて、第2係数K2(>0)を算出する。第2係数K2は、第1係数K1と同様に、走行速度Vsが低いほど、ベース補償トルクTcbを大きくするように算出される。第2係数算出部52は、例えば、走行速度Vsが高いほど第2係数K2を小さくする。第2係数K2は、走行速度Vsと関係付けられて第2係数K2が規定されたマップ情報又は数式情報に基づいて算出されればよい。
【0032】
第2乗算部53は、ベース補償トルクTcbに第2係数K2を乗算することにより、基本補償トルクTcastを算出する。
【0033】
第2リミッタ54は、算出された基本補償トルクTcastが下限ガード値以上であってかつ上限ガード値以下の場合、第2乗算部53により算出された基本補償トルクTcastを補償トルクTaf(「部分指令値」に相当)として出力する。一方、第2リミッタ54は、算出された基本補償トルクTcastが下限ガード値を下回る場合、下限ガード値を補償トルクTcafとして出力し、算出された基本補償トルクTcastが上限ガード値を上回る場合、上限ガード値を補償トルクTcafとして出力する。
【0034】
なお、操舵指令トルクTtgtの算出に用いられる補償トルクとしては、他にも種々の補償トルクがあるが、本実施形態では、補償トルク演算部50が算出する補償トルクTcafを一例として示す。
【0035】
続いて、制御トルク演算部60について説明する。制御トルク演算部60は、操舵角センサ21により検出された操舵角θsと、目標操舵角θtgtとに基づいて、制御トルクTctfを算出する。本実施形態において、目標操舵角θtgtは、自車両の運転支援制御のために設定される値であり、電子制御装置33に対して上位の制御装置から入力される。運転支援制御としては、例えば、自車両を走行レーンから逸脱させることなく走行させるレーンキープアシスト(Lane Keep Assist)、先行車に自車両を追従走行させるアダプティブクルーズコントロール(Adaptive Cruise Control)、又は自車両の駐車支援を行う駐車支援制御が挙げられる。運転支援制御中にドライバがステアリングホイール11を操作しない場合、例えば、アシストトルクTasf及び補償トルクTcafが0になる。
【0036】
制御トルク演算部60は、制御部34が備える複数の演算ブロックのうち、偏差算出部61、フィードバック制御部62及び第3リミッタ63のグループからなる。偏差算出部61は、目標操舵角θtgtから操舵角θsを減算することにより、操舵偏差Δθを算出する。
【0037】
フィードバック制御部62は、操舵偏差Δθを0にフィードバック制御するための操作量として、基本制御トルクTctrを算出する。なお、フィードバック制御としては、例えば、比例積分制御又は比例積分微分制御を用いることができる。
【0038】
第3リミッタ63は、算出された基本制御トルクTctrが下限ガード値以上であってかつ上限ガード値以下の場合、フィードバック制御部62により算出された基本制御トルクTctrを制御トルクTctf(「部分指令値」に相当)として出力する。一方、第3リミッタ63は、算出された基本制御トルクTctrが下限ガード値を下回る場合、下限ガード値を制御トルクTctfとして出力し、算出された基本制御トルクTctrが上限ガード値を上回る場合、上限ガード値を制御トルクTctfとして出力する。
【0039】
続いて、指令値演算部70について説明する。アシストトルク算出部71は、第1リミッタ44から出力されたアシストトルクTasfに、第2リミッタ54から出力された補償トルクTcafを加算することにより、第1指令トルクTm1を算出する。
【0040】
制御トルク加算部72は、第1指令トルクTm1に、第3リミッタ63から出力された制御トルクTctfを加算することにより、第2指令トルクTm2を算出する。
【0041】
第4リミッタ73は、算出された第2指令トルクTm2が下限ガード値以上であってかつ上限ガード値以下の場合、制御トルク加算部72により算出された第2指令トルクTm2を操舵指令トルクTtgtとして出力する。一方、第4リミッタ73は、算出された第2指令トルクTm2が下限ガード値を下回る場合、下限ガード値を操舵指令トルクTtgtとして出力し、算出された第2指令トルクTm2が上限ガード値を上回る場合、上限ガード値を操舵指令トルクTtgtとして出力する。
【0042】
制御部34は、モータ31の出力トルク(「制御対象の制御量」に相当)を、算出した操舵指令トルクTtgtに制御すべく、インバータ32のスイッチング制御を行う。ここで、操舵指令トルクTtgtの算出に用いられる演算データに非数又は無限大が含まれると、操舵制御の信頼性が低下し得る。例えば、演算データが+∞又は-∞になる場合、リミッタの算出値が上限ガード値又は下限ガード値になってしまい、操舵指令トルクTtgtが正常な値から大きくずれ得る。そこで、本実施形態では、制御部34は図3に示す処理を行う。この処理は、所定の制御周期で繰り返し実行される。
【0043】
ステップS10では、アシストトルク演算部40がアシストトルクTasfを算出する。
【0044】
ステップS20では、第1チェック処理を行う。図4を用いて、第1チェック処理について説明する。ステップS21では、基本トルク算出部41が算出した基本トルクTb、第1係数算出部42が算出した第1係数K1、第1乗算部43が算出した基本アシストトルクTast、及び第1リミッタ44が算出したアシストトルクTasfを加算することにより、第1加算データDA1を算出する。
【0045】
ステップS22では、ステップS21で算出した第1加算データDA1から、ステップS21で算出した第1加算データDA1を減算することにより、第1判定データDB1を算出する。第1判定データDB1を算出するのは、アシストトルク演算部40における各演算データ(基本トルクTb,第1係数K1,基本アシストトルクTast,アシストトルクTasf)に非数及び無限大(+∞,-∞)の少なくとも一方が含まれていることを迅速に判定するためである。
【0046】
つまり、各演算データの少なくとも1つが非数である場合、各演算データの加算データも非数となる、また、各演算データの少なくとも1つが無限大である場合、各演算データの加算データから、この加算データを減算したデータが非数となる。この点に鑑み、第1判定データDB1を算出する。第1判定データDB1の算出に用いられる各演算データの少なくとも1つが非数である場合、第1加算データDA1も非数となり、第1加算データDA1に基づいて算出される第1判定データDB1も非数となる。また、第1判定データDB1の算出に用いられる各演算データの少なくとも1つが無限大である場合、第1加算データDA1に基づいて算出される第1判定データDB1が非数となる。
【0047】
ステップS23では、ステップS22で算出した第1判定データDB1が非数であるか否かを判定する。ステップS23において非数ではないと判定した場合、先の図3のステップS30に進む。
【0048】
一方、ステップS23において非数であると判定した場合には、ステップS24に進む。ステップS24では、連続するN回(N≧2)の制御周期において、ステップS23で非数であると判定したか否かを判定する。
【0049】
ステップS24において否定判定した場合には、ステップS25に進み、フェールセーフ処理を行う。本実施形態では、フェールセーフ処理として、RAM36に記憶されているデータのうち、基本トルク算出部41が算出した基本トルクTb、第1係数算出部42が算出した第1係数K1、第1乗算部43が算出した基本アシストトルクTast、及び第1リミッタ44が算出したアシストトルクTasfをデフォルト値(初期値)に書き換える初期化処理を行う。これにより、演算データが恒久的に非数又は無限大になるような異常が発生していなければ、次回の制御周期以降において、操舵指令トルクTtgtを正常な値に近づけていくことができる。
【0050】
一方、ステップS24において肯定判定した場合には、ステップS26に進み、フラグFの値を1にする。フラグFは、1によって上述した恒久的な異常が発生していることを示し、0によって恒久的な異常が発生していないことを示す。なお、フラグFの初期値は0にされている。
【0051】
ステップS25又はS26の処理の完了後、図3のステップS30に進み、フラグFの値が0であるか否かを判定する。ステップS30においてフラグFの値が0であると判定した場合には、ステップS40に進み、補償トルク演算部50が補償トルクTcafを算出する。
【0052】
ステップS50では、第2チェック処理を行う。図5を用いて、第2チェック処理について説明する。ステップS51では、基本補償トルク算出部51が算出したベース補償トルクTcb、第2係数算出部52が算出した第2係数K2、第2乗算部53が算出した基本補償トルクTcast、及び第2リミッタ54が算出した補償トルクTcafを加算することにより、第2加算データDA2を算出する。
【0053】
ステップS52では、ステップS51で算出した第2加算データDA2から、ステップS51で算出した第2加算データDA2を減算することにより、第2判定データDB2を算出する。
【0054】
ステップS53では、ステップS52で算出した第2判定データDB2が非数であるか否かを判定する。ステップS53において非数ではないと判定した場合、先の図3のステップS60に進む。
【0055】
一方、ステップS53において非数であると判定した場合には、ステップS54に進む。ステップS54では、連続するN回(N≧2)の制御周期において、ステップS53で非数であると判定したか否かを判定する。
【0056】
ステップS54において否定判定した場合には、ステップS55に進み、フェールセーフ処理を行う。本実施形態では、フェールセーフ処理として、RAM36に記憶されているデータのうち、基本補償トルク算出部51が算出したベース補償トルクTcb、第2係数算出部52が算出した第2係数K2、第2乗算部53が算出した基本補償トルクTcast、及び第2リミッタ54が算出した補償トルクTcafをデフォルト値に書き換える初期化処理を行う。
【0057】
一方、ステップS54において肯定判定した場合には、ステップS56に進み、フラグFの値を1にする。
【0058】
ステップS55又はS56の処理の完了後、図3のステップS60に進み、フラグFの値が0であるか否かを判定する。ステップS60においてフラグFの値が0であると判定した場合には、ステップS70に進み、制御トルク演算部60が制御トルクTctfを算出する。
【0059】
ステップS80では、第3チェック処理を行う。図6を用いて、第3チェック処理について説明する。ステップS81では、偏差算出部61が算出した操舵偏差Δθ、フィードバック制御部62が算出した基本制御トルクTctr、及び第3リミッタ63が算出した制御トルクTctfを加算することにより、第3加算データDA3を算出する。
【0060】
ステップS82では、ステップS81で算出した第3加算データDA3から、ステップS81で算出した第3加算データDA3を減算することにより、第3判定データDB3を算出する。
【0061】
ステップS83では、ステップS82で算出した第3判定データDB3が非数であるか否かを判定する。
【0062】
ステップS83において非数ではないと判定した場合、先の図3のステップS90に進む。
【0063】
一方、ステップS83において非数であると判定した場合には、ステップS84に進む。ステップS84では、連続するN回(N≧2)の制御周期において、ステップS83で非数であると判定したか否かを判定する。
【0064】
ステップS84において否定判定した場合には、ステップS85に進み、フェールセーフ処理を行う。本実施形態では、フェールセーフ処理として、RAM36に記憶されているデータのうち、偏差算出部61が算出した操舵偏差Δθ、フィードバック制御部62が算出した基本制御トルクTctr、及び第3リミッタ63が算出した制御トルクTctfをデフォルト値に書き換える初期化処理を行う。
【0065】
ステップS84において肯定判定した場合には、ステップS86に進み、フラグFの値を1にする。
【0066】
ステップS85又はS86の処理の完了後、図3のステップS90に進み、フラグFの値が0であるか否かを判定する。ステップS90においてフラグFの値が0であると判定した場合には、ステップS100に進み、指令値演算部70が操舵指令トルクTtgtを算出する。
【0067】
一方、ステップS30,S60又はS90においてフラグFの値が1であると判定した場合には、ステップS110に進み、操舵システム10における操舵制御を停止する。これにより、ドライバの操舵アシストが実施されなくなる。
【0068】
なお、本実施形態において、ステップS21,S22,S51,S52,S81,S82の処理が「判定値算出部」に相当し、ステップS23,S53,S83の処理が「判定部」に相当する。また、ステップS24~S26,S54~S56,S84~S86,S110の処理が「処理部」に相当する。
【0069】
ちなみに、ステップS30においてフラグFの値が1であると判定した場合、操舵指令トルクTtgtの算出に用いるアシストトルクTasfを0にし、ステップS40に移行してもよい。また、ステップS60においてフラグFの値が1であると判定した場合、操舵指令トルクTtgtの算出に用いる補償トルクTcafを0にし、ステップS70に移行してもよい。また、ステップS90においてフラグFの値が1であると判定した場合、操舵指令トルクTtgtの算出に用いる補償トルクTcafを0にし、ステップS100に移行してもよい。
【0070】
以上詳述した本実施形態によれば、以下の効果が得られるようになる。
【0071】
操舵指令トルクTtgtの算出に先立ち、RAM36に記憶されているデータのうち、アシストトルク演算部40における今回の制御周期の各演算データ(基本トルクTb,第1係数K1,基本アシストトルクTast,アシストトルクTasf)に基づく第1加算データDA1が算出される。そして、算出された第1加算データDA1から、算出された第1加算データDA1を減算した第1判定データDB1が算出される。そして、算出された第1判定データDB1が非数であると判定された場合、今回の制御周期において、アシストトルク演算部40における各演算データをデフォルト値に書き換える初期化処理が行われる。これにより、アシストトルク演算部40における各演算データに非数及び無限大の少なくとも一方が含まれていることを迅速に判定できる。また、補償トルク演算部50及び制御トルク演算部60それぞれにおいても、各演算データに非数及び無限大の少なくとも一方が含まれていることを迅速に判定できる。
【0072】
以上した本実施形態によれば、各演算データに非数及び無限大の少なくとも一方が含まれていることを迅速に判定しつつ、操舵指令トルクTtgtが操舵トルクとして許容できない値になるのを防止できる。これにより、EPS装置30の操舵制御の信頼性を好適に高めることができる。
【0073】
アシストトルク演算部40、補償トルク演算部50及び制御トルク演算部60それぞれについて、判定データが算出され、算出された判定データが非数か否かが判定される。そして、アシストトルク演算部40、補償トルク演算部50及び制御トルク演算部60のうち、判定データが非数であると判定された演算部のみの各演算データに対する初期化処理が行われる。これにより、アシストトルクTasf、補償トルクTcaf及び制御トルクTctfのうち、操舵トルクTsや操舵角θs等の検出値を用いて算出できるトルクが、操舵指令トルクTtgtに極力反映されるようにすることができる。その結果、操舵指令トルクTtgtの算出精度の低下を抑制することができる。
【0074】
判定データがN回の制御周期において連続して非数であると判定されない場合には初期化処理が行われ、判定データがN回の制御周期において連続して非数であると判定された場合には操舵制御が停止させられる。これにより、演算データが一時的に非数又は無限大になるような異常が発生する場合には操舵制御を継続することができ、演算データが恒久的に非数又は無限大になるような異常が発生する場合には操舵システム10を停止させることができる。
【0075】
<第2実施形態>
以下、第2実施形態について、第1実施形態との相違点を中心に図面を参照しつつ説明する。本実施形態では、演算データに含まれる非数のチェック方法を変更する。
【0076】
図7に、本実施形態のチェック処理の手順を示す。この処理は、制御部34により実行される。
【0077】
まず、アシストトルク演算部40の各演算データのチェック処理について説明する。
【0078】
ステップS120では、基本トルク算出部41が基本トルクTbを算出する。続くステップS121では、算出した基本トルクTbが非数であるか否かを判定する。ここで、非数か否かの判定方法としては、例えば以下のものを用いることができる。1つ目は、浮動小数点型データの演算機能のうち、比較結果が順序化不能(Unordered)か否かを検出する機能を用いて、非数か否かを判定する方法である。2つ目は、ステップS120で算出した演算データD同士を比較し、比較結果がFalseの場合に非数であると判定する方法である。3つ目は、「D!=D」の比較結果がTrueの場合に非数であると判定する方法である。
【0079】
続くステップS122では、ステップS121の判定結果が非数であるか否かを判定する。ステップS122において非数であると判定した場合には、ステップS123に進み、フェールセーフ処理として、RAM36に記憶されているデータのうち、基本トルクTbをデフォルト値に書き換える初期化処理を行う。
【0080】
ステップS123の処理が完了した場合、又はステップS122において非数でないと判定した場合には、次の演算データである第1係数算出部42が算出した第1係数K1について、図7に示す一連の処理を行う。その後、基本アシストトルクTast及びアシストトルクTasfについても図7に示す一連の処理を順次行う。これにより、今回の制御周期において、基本トルクTb、第1係数K1、基本アシストトルクTast及びアシストトルクTasfが非数であるか否かを確認することができる。ちなみに、本実施形態において、例えば、基本トルクTbを算出する基本トルク算出部41が「先演算ブロック」に相当し、第1係数K1を算出する第1係数算出部42が「後演算ブロック」に相当する。
【0081】
また、アシストトルク演算部40に対する確認の後、補償トルク演算部50及び制御トルク演算部60それぞれについても図7に示す一連の処理を順次行う。これにより、今回の制御周期において、アシストトルク演算部40、補償トルク演算部50及び制御トルク演算部60における全ての演算データについて非数であるか否かを確認することができる。
【0082】
以上説明した本実施形態によれば、先演算ブロックの演算データが非数である場合であっても、非数の影響が後演算ブロックの演算データに波及することを防止できる。これにより、操舵制御の信頼性を高めることができる。
【0083】
ちなみに、本実施形態において、連続するN回の制御周期それぞれにおいて例えば基本トルクTbが非数であると判定された場合、操舵制御を停止させてもよい。
【0084】
<第3実施形態>
以下、第3実施形態について、第2実施形態との相違点を中心に図面を参照しつつ説明する。本実施形態では、演算データに含まれる異常データが非数であるか否かではなく、無限大であるか否かを判定する。
【0085】
図8に、本実施形態のチェック処理の手順を示す。この処理は、制御部34により実行される。なお、図8において、先の図7に示した処理と同一の処理については、便宜上、同一の符号を付している。また、以下では、アシストトルク演算部40の基本トルク算出部41を例にして説明する。
【0086】
ステップS124では、算出した基本トルクTbが無限大(+∞、-∞)であるか否かを判定する。ここで、例えば、浮動小数点型データが単精度記憶形式のデータの場合、指数部が「255」であり、かつ、仮数部が「0」である場合に基本トルクTbが無限大であると判定すればよい。
【0087】
続くステップS125では、ステップS124の判定結果が無限大であるか否かを判定する。ステップS125において無限大であると判定した場合には、ステップS123に進む。ちなみに、本実施形態において、連続するN回の制御周期それぞれにおいて例えば基本トルクTbが無限大であると判定された場合、操舵制御を停止させてもよい。
【0088】
以上説明した本実施形態によれば、第2実施形態と同様の効果を奏することができる。
【0089】
<第4実施形態>
以下、第4実施形態について、第1実施形態との相違点を中心に図面を参照しつつ説明する。制御部34は、モータ31の出力トルクを、算出した操舵指令トルクTtgtに制御すべく、インバータ32のスイッチング制御を行う。このスイッチング制御のブロック図を図9に示す。本実施形態では、図9に示す処理においても、演算データに非数又は無限大が含まれるか否かのチェックが実施される。なお、本実施形態において、制御部34の行う図9に示す処理が「駆動演算部」に相当する。
【0090】
図9に示す処理は、複数の演算ブロックを備えている。各演算ブロックの演算データはRAM36に記憶される。指令電流算出部80は、指令値演算部70により算出された操舵指令トルクTtgtに基づいて、d,q軸指令電流Id*,Iq*を算出する。算出された各指令電流Id*,Iq*等、以下に説明する演算データはRAM36に記憶される。
【0091】
2相変換部81は、電流センサ23の検出値と、回転角センサ24により検出されたモータ31の電気角θeとに基づいて、3相固定座標系におけるU,V,W相電流を、2相回転座標系(dq座標系)におけるd軸電流Idr及びq軸電流Iqrに変換する。電流センサ23は、U,V,W相電流のうち少なくとも2相分の電流を検出する。回転角センサ24は、例えば、レゾルバ又はホール素子である。
【0092】
d軸偏差算出部82は、d軸指令電流Id*からd軸電流Idrを減算することにより、d軸電流偏差ΔIdを算出する。q軸偏差算出部83は、q軸指令電流Iq*からq軸電流Iqrを減算することにより、q軸電流偏差ΔIqを算出する。
【0093】
d軸指令電圧算出部84は、d軸電流偏差ΔIdに基づいて、d軸電流Idrをd軸指令電流Id*にフィードバック制御するための操作量として、d軸指令電圧Vdを算出する。q軸指令電圧算出部85は、q軸電流偏差ΔIqに基づいて、q軸電流Iqrをq軸指令電流Iq*にフィードバック制御するための操作量として、q軸指令電圧Vq*を算出する。なお、d軸指令電圧算出部84及びq軸指令電圧算出部85で用いられるフィードバック制御は、例えば比例積分制御とすればよい。
【0094】
3相変換部86は、d,q軸指令電圧Vd,Vq及び電気角θeに基づいて、dq座標系におけるd,q軸指令電圧Vd,Vqを、3相固定座標系におけるU,V,W相指令電圧VU,VV,VWに変換する。本実施形態において、U,V,W相指令電圧VU,VV,VWは、電気角で位相が120°ずつずれた波形となる。
【0095】
信号生成部87は、U,V,W相指令電圧VU,VV,VWと、電圧センサ25によって検出されたインバータ32の入力電圧(以下、電源電圧VINV)とに基づいて、インバータ32を構成するU,V,W相における上,下アームスイッチの駆動信号を生成する。信号生成部87は、例えば、U,V,W相指令電圧VU,VV,VWを電源電圧VINVの1/2で除算した値と、キャリア信号(例えば三角波信号)との大小比較に基づくPWM処理によって駆動信号を生成する。生成された駆動信号に基づいて、インバータ32を構成する各スイッチのスイッチング制御が行われる。これにより、モータ31の出力トルクが操舵指令トルクTtgtに制御される。
【0096】
ここで、図9に示すトルク制御処理における各演算ブロックの演算データに非数又は無限大が含まれることがある。この場合、操舵制御の信頼性が低下し得る。そこで、本実施形態では、トルク制御処理におけるチェック処理が行われる。図10に、制御部34により実行されるチェック処理の手順を示す。この処理は、所定の制御周期で繰り返し実行される。
【0097】
ステップS130では、指令電流算出部80が算出したd軸指令電流Id*、d軸偏差算出部82が算出したd軸電流偏差ΔId、及びd軸指令電圧算出部84が算出したd軸指令電圧Vdを加算することにより、d軸加算データDAdを算出する。
【0098】
ステップS131では、ステップS130で算出したd軸加算データDAdから、ステップS130で算出したd軸加算データDAdを減算することにより、d軸判定データDBdを算出する。
【0099】
ステップS132では、ステップS131で算出したd軸判定データDBdが非数であるか否かを判定する。ステップS132において非数ではないと判定した場合には、ステップS133に進み、d軸フラグFdを0にする。一方、ステップS132において非数であると判定した場合には、ステップS134に進み、d軸フラグFdを1にする。ちなみに、連続するN回(N≧2)の制御周期においてステップS132で非数であると判定した場合にd軸フラグFdを1にしてもよい。
【0100】
ステップS133又はS134の処理の完了後、ステップS135に進み、指令電流算出部80が算出したq軸指令電流Iq*、q軸偏差算出部83が算出したq軸電流偏差ΔIq、q軸指令電圧算出部85が算出したq軸指令電圧Vq、及び3相変換部86が算出した各指令電圧VU,VV,VWを加算することにより、q軸加算データDAqを算出する。
【0101】
ステップS136では、ステップS135で算出したq軸加算データDAqから、ステップS135で算出したq軸加算データDAqを減算することにより、q軸判定データDBqを算出する。
【0102】
ステップS137では、ステップS136で算出したq軸判定データDBqが非数であるか否かを判定する。ステップS137において非数ではないと判定した場合には、ステップS138に進み、q軸フラグFqを0にする。一方、ステップS137において非数であると判定した場合には、ステップS139に進み、q軸フラグFqを1にする。なお、本実施形態において、ステップS132,S137の処理が「判定部」に相当する。また、連続するN回(N≧2)の制御周期においてステップS137で非数であると判定した場合にq軸フラグFqを1にしてもよい。
【0103】
ステップS138又はS139の処理の完了後、ステップS140に進み、d軸フラグFdが1であって、かつ、q軸フラグFqが0であるか否かを判定する。ステップS140において否定判定した場合には、ステップS141に進み、q軸フラグFqが1であるか否かを判定する。ステップS141において否定判定した場合には、d,q軸に関する演算処理のいずれにも異常が発生していないと判定する。
【0104】
一方、ステップS141において肯定判定した場合には、q軸に関する演算処理に異常が発生していると判定し、ステップS142に進み、操舵システム10における操舵制御を停止する。これにより、インバータ32のスイッチング制御が停止される。
【0105】
ステップS140において肯定判定した場合には、ステップS143に進み、フェールセーフ処理を行う。本実施形態では、フェールセーフ処理として、3相変換部86に入力されるd軸指令電圧Vdを0にする処理を行う。これにより、モータ31に操舵トルクを発生させるためのインバータ32のスイッチング制御を継続させることができ、ひいては車両の走行を継続させることができる。
【0106】
<第4実施形態の変形例>
図10のステップS143において、フェールセーフ処理として、d軸指令電圧Vdを0にする処理に代えて、例えば、3相変換部86に入力されるd軸指令電圧Vdを、q軸指令電圧算出部85により算出したq軸指令電圧Vqの数%~数十%の値に設定する処理を行ってもよい。
【0107】
・ステップS130において、d軸加算データDAdの算出に用いられる演算データとしては、d軸指令電流Id*、d軸電流偏差ΔId及びd軸指令電圧Vdの全てに限らず、これら3つの演算データのうちいずれか2つであってもよい。
【0108】
・ステップS135において、q軸加算データDAqの算出に用いられる演算データとしては、q軸指令電流Iq*、q軸電流偏差ΔIq、q軸指令電圧Vq及び各指令電圧VU,VV,VWの全てに限らず、これら演算データのうち、一部であってかつ少なくとも2つであってもよい。例えば、q軸加算データDAqの算出に用いられる演算データとして、q軸指令電流Iq*、q軸電流偏差ΔIq、q軸指令電圧Vq及び各指令電圧VU,VV,VWのうち、各指令電圧VU,VV,VWを除いた演算データが用いられてもよい。
【0109】
図9に示すトルク制御処理における各演算データが非数であるか否かではなく、例えば第3実施形態で説明したように、無限大であるか否かが判定されてもよい。
【0110】
<第5実施形態>
以下、第5実施形態について、第1実施形態との相違点を中心に図面を参照しつつ説明する。本実施形態では、図11に示すように、EPS装置30は、ステータ巻線群を2つ有するモータ38を備えている。なお、図11において、先の図1に示した構成と同一の構成については、便宜上、同一の符号を付している。
【0111】
モータ38を構成するロータの回転軸は、減速ギア16を介してステアリングシャフト12に連結されている。一方、EPS装置30は、第1インバータ32A及び第2インバータ32Bを備えている。第1インバータ32Aは、モータ38を構成する第1ステータ巻線群39Aに電気的に接続されている。第2インバータ32Bは、モータ38を構成する第2ステータ巻線群39Bに電気的に接続されている。本実施形態において、第1ステータ巻線群39Aと第2ステータ巻線群39Bとは、電気角で30°ずらされて配置されている。第1,第2ステータ巻線群39A,39Bには、共通のバッテリ37から第1,第2インバータ32A,32Bを介して電力が供給される。これにより、モータ38は、ドライバの操舵を補助するためのトルクをステアリングシャフト12に発生させる。
【0112】
図12に、本実施形態に係るトルク制御処理のブロック図を示す。図12に示す処理は、複数の演算ブロックを備えている。各演算ブロックの演算データはRAM36に記憶される。詳しくは、指令電流算出部90は、指令値演算部70により算出された操舵指令トルクTtgtに基づいて、q軸指令加算値Iad_q*、d軸指令加算値Iad_d*、q軸指令差分値Isb_q*、及びd軸指令差分値Isb_d*を算出する。
【0113】
q軸指令加算値Iad_q*は、第1q軸指令電流Iq1*と第2q軸指令電流Iq2*との和である。第1q軸指令電流Iq1*は、第1ステータ巻線群39Aに対応する第1系統のq軸指令電流であり、第2q軸指令電流Iq2*は、第2ステータ巻線群39Bに対応する第2系統のq軸指令電流である。第1q軸指令電流Iq1*及び第2q軸指令電流Iq2*のそれぞれは、操舵指令トルクTtgtに基づいて定まるq軸指令電流Iq*が分配されたものである。
【0114】
d軸指令加算値Iad_d*は、第1d軸指令電流Id1*と第2d軸指令電流Id2*との和である。第1d軸指令電流Id1*は、第1系統のd軸指令電流であり、第2d軸指令電流Id2*は、第2系統のd軸指令電流である。第1d軸指令電流Id1*及び第2d軸指令電流Id2*のそれぞれは、操舵指令トルクTtgtに基づいて定まるd軸指令電流Id*が分配されたものである。
【0115】
q軸指令差分値Isb_q*は、第1q軸指令電流Iq1*と第2q軸指令電流Iq2*との差である。d軸指令差分値Isb_d*は、第1d軸指令電流Id1*と第2d軸指令電流Id2*との差である。本実施形態では、q軸指令差分値Isb_q*及びd軸指令差分値Isb_d*が0にされている。
【0116】
第1の2相変換部91は、第1電流センサ23Aの検出値と、回転角センサ24により検出された電気角θeとに基づいて、3相固定座標系における第1ステータ巻線群39Aに流れるU,V,W相電流を、dq座標系における第1d軸電流Id1r及び第1q軸電流Iq1rに変換する。第1電流センサ23Aは、U,V,W相電流のうち少なくとも2相分の電流を検出する。
【0117】
第2の2相変換部92は、第2電流センサ23Bの検出値と、「θe-30°」とに基づいて、3相固定座標系における第2ステータ巻線群39Bに流れるU,V,W相電流を、dq座標系における第2d軸電流Id2r及び第2q軸電流Iq2rに変換する。第2電流センサ23Bは、U,V,W相電流のうち少なくとも2相分の電流を検出する。
【0118】
電流算出部93は、第1q軸電流Iq1rに第2q軸電流Iq2rを加算することにより、q軸加算値Iad_qrを算出し、第1d軸電流Id1rに第2d軸電流Id2rを加算することにより、d軸加算値Iad_drを算出する。また、電流算出部93は、第1q軸電流Iq1rから第2q軸電流Iq2rを減算することにより、q軸差分値Isb_qrを算出し、第1d軸電流Id1rから第2d軸電流Id2rを減算することにより、d軸差分値Isb_drを算出する。
【0119】
q軸和偏差算出部94は、q軸指令加算値Iad_q*からq軸加算値Iad_qrを減算することにより、q軸和偏差ΔIad_qを算出する。d軸和偏差算出部95は、d軸指令加算値Iad_d*からd軸加算値Iad_drを減算することにより、d軸和偏差ΔIad_dを算出する。
【0120】
第1指令電圧算出部96は、q軸和偏差ΔIad_qに基づいて、q軸加算値Iad_qrをq軸指令加算値Iad_q*にフィードバック制御するための操作量として、q軸指令電圧和Vad_qを算出する。また、第1指令電圧算出部96は、d軸和偏差ΔIad_dに基づいて、d軸加算値Iad_drをd軸指令加算値Iad_d*にフィードバック制御するための操作量として、d軸指令電圧和Vad_dを算出する。なお、第1指令電圧算出部96で用いられるフィードバック制御は、例えば比例積分制御とすればよい。
【0121】
q軸差偏差算出部97は、q軸指令差分値Isb_q*からq軸差分値Isb_qrを減算することにより、q軸差偏差ΔIsb_qを算出する。d軸差偏差算出部98は、d軸指令差分値Isb_d*からd軸差分値Isb_drを減算することにより、d軸差偏差ΔIsb_dを算出する。
【0122】
第2指令電圧算出部99は、q軸差偏差ΔIsb_qに基づいて、q軸差分値Isb_qrをq軸指令差分値Isb_q*にフィードバック制御するための操作量として、q軸指令電圧差Vsb_qを算出する。また、第2指令電圧算出部99は、d軸差偏差ΔIsb_dに基づいて、d軸差分値Isb_drをd軸指令差分値Isb_d*にフィードバック制御するための操作量として、d軸指令電圧差Vsb_dを算出する。なお、第2指令電圧算出部99で用いられるフィードバック制御は、例えば比例積分制御とすればよい。
【0123】
dq電圧算出部100は、q軸指令電圧和Vad_q、d軸指令電圧和Vad_d、q軸指令電圧差Vsb_q、及びd軸指令電圧差Vsb_dに基づいて、第1系統の第1d,q軸指令電圧Vd1,Vq1と、第2系統の第2d,q軸指令電圧Vd2,Vq2とを算出する。
【0124】
第1の3相変換部101は、第1d,q軸指令電圧Vd1,Vq1及び電気角θeに基づいて、dq座標系における第1d,q軸指令電圧Vd1,Vq1を、3相固定座標系における第1U,V,W相指令電圧VU1,VV1,VW1に変換する。
【0125】
第1信号生成部102は、第1U,V,W相指令電圧VU1,VV1,VW1と、電圧センサ25によって検出された電源電圧VINVとに基づいて、第1インバータ32Aを構成するU,V,W相における上,下アームスイッチの駆動信号を生成する。生成された駆動信号に基づいて、第1インバータ32Aを構成する各スイッチのスイッチング制御が行われる。
【0126】
第2の3相変換部103は、第2d,q軸指令電圧Vd2,Vq2及び「θe-30°」に基づいて、dq座標系における第2d,q軸指令電圧Vd2,Vq2を、3相固定座標系における第2U,V,W相指令電圧VU2,VV2,VW2に変換する。
【0127】
第2信号生成部104は、第2U,V,W相指令電圧VU2,VV2,VW2と、電源電圧VINVとに基づいて、第2インバータ32Bを構成するU,V,W相における上,下アームスイッチの駆動信号を生成する。生成された駆動信号に基づいて、第2インバータ32Bを構成する各スイッチのスイッチング制御が行われる。
【0128】
ここで、図12に示すトルク制御処理における各演算ブロックの演算データに非数又は無限大が含まれることがある。この場合、操舵制御の信頼性が低下し得る。そこで、本実施形態では、トルク制御処理におけるチェック処理が行われる。図13に、制御部34により実行されるチェック処理の手順を示す。この処理は、所定の制御周期で繰り返し実行される。
【0129】
ステップS150では、第1の3相変換部101が算出した第1U,V,W相指令電圧VU1,VV1,VW1、及び第1の2相変換部91が算出した第1d,q軸電流Id1r,Iq1rを加算することにより、第1加算データDα1を算出する。なお、本実施形態において、第1の3相変換部101及び第1の2相変換部91が「第1演算ブロック」に相当する。
【0130】
ステップS151では、ステップS150で算出した第1加算データDα1から、ステップS150で算出した第1加算データDα1を減算することにより、第1判定データDβ1を算出する。
【0131】
ステップS152では、ステップS151で算出した第1判定データDβ1が非数であるか否かを判定する。ステップS152において非数ではないと判定した場合には、ステップS153に進み、第1フラグF1を0にする。一方、ステップS152において非数であると判定した場合には、ステップS154に進み、第1フラグF1を1にする。ちなみに、連続するN回(N≧2)の制御周期においてステップS152で非数であると判定した場合に第1フラグF1を1にしてもよい。
【0132】
ステップS153又はS154の処理の完了後、ステップS155に進み、第2の3相変換部103が算出した第2U,V,W相指令電圧VU2,VV2,VW2、及び第2の2相変換部92が算出した第2d,q軸電流Id2r,Iq2rを加算することにより、第2加算データDα2を算出する。なお、本実施形態において、第2の3相変換部103及び第2の2相変換部92が「第2演算ブロック」に相当し、制御部34の行う図12に示す処理が「駆動演算部」に相当する。
【0133】
ステップS156では、ステップS155で算出した第2加算データDα2から、ステップS155で算出した第2加算データDα2を減算することにより、第2判定データDβ2を算出する。
【0134】
ステップS157では、ステップS156で算出した第2判定データDβ2が非数であるか否かを判定する。ステップS157において非数ではないと判定した場合には、ステップS158に進み、第2フラグF2を0にする。一方、ステップS157において非数であると判定した場合には、ステップS159に進み、第2フラグF2を1にする。ちなみに、連続するN回(N≧2)の制御周期においてステップS157で非数であると判定した場合に第2フラグF2を1にしてもよい。
【0135】
ステップS160では、第1フラグF1が0であって、かつ、第2フラグF2が1であるか否かを判定する。ステップS160において肯定判定した場合には、第2系統に異常が発生したと判定し、ステップS161に進む。ステップS161では、第2信号生成部104、第2の2相変換部92及び第2指令電圧算出部99の演算処理を停止させ、第2指令電圧算出部99から出力されるq軸指令電圧差Vsb_q及びd軸指令電圧差Vsb_dを0にする処理を行う。これにより、第2インバータ32Bのスイッチング制御が停止され、第1インバータ32Aのスイッチング制御が継続される。その結果、モータ38の操舵トルクが0となることを防止でき、ひいては車両の走行を継続させることができる。
【0136】
ステップS160において否定判定した場合には、ステップS162に進み、第1フラグF1が1であって、かつ、第2フラグF2が0であるか否かを判定する。ステップS162において否定判定した場合には、第1,第2系統のいずれにも異常が発生していないと判定する。
【0137】
一方、ステップS162において肯定判定した場合には、第1系統に異常が発生したと判定し、ステップS163に進む。ステップS163では、第1信号生成部102、第1の2相変換部91及び第1指令電圧算出部96の演算処理を停止させ、第1指令電圧算出部96から出力されるq軸指令電圧和Vad_q及びd軸指令電圧和Vad_dを0にする処理を行う。これにより、第1インバータ32Aのスイッチング制御が停止され、第2インバータ32Bのスイッチング制御が継続される。その結果、モータ38に操舵トルクを発生させることができ、ひいては車両の走行を継続させることができる。
【0138】
ちなみに、電流算出部93、第1指令電圧算出部96及びdq電圧算出部100のうち少なくとも1つの演算データが非数又は無限大であると判定した場合、電流算出部93、第1指令電圧算出部96及びdq電圧算出部100の演算処理を停止させる。この場合、第1,第2インバータ32A,32Bのスイッチング制御が停止される。
【0139】
<第5実施形態の変形例>
図13のステップS150において、第1加算データDα1の算出に用いられる演算データとしては、第1U,V,W相指令電圧VU1,VV1,VW1、及び第1d,q軸電流Id1r,Iq1rの全てに限らず、これら演算データのうち、一部であってかつ少なくとも2つであってもよい。
【0140】
・ステップS155において、第2加算データDα2の算出に用いられる演算データとしては、第2U,V,W相指令電圧VU2,VV2,VW2及び第2d,q軸電流Id2r,Iq2rの全てに限らず、これら演算データのうち、一部であってかつ少なくとも2つであってもよい。
【0141】
図12に示すトルク制御処理における各演算データについて、非数であるか否かではなく、例えば第3実施形態で説明したように、無限大であるか否かが判定されてもよい。
【0142】
・第1指令電圧算出部96において、q軸指令電圧和Vad_q及びd軸指令電圧和Vad_dのうち、d軸指令電圧和Vad_dが非数又は無限大であると判定された場合、第1指令電圧算出部96におけるd軸指令電圧和Vad_dの演算処理を停止させてもよい。
【0143】
・第1の2相変換部91及び第2の2相変換部92において、第1d軸電流Id1rが非数又は無限大であると判定された場合、第1d軸電流Id1rを第2d軸電流Id2rと同じ値にしてもよい。また、第2d軸電流Id2rが非数又は無限大であると判定された場合、第2d軸電流Id2rを第1d軸電流Id1rと同じ値にしてもよい。
【0144】
<第6実施形態>
以下、第6実施形態について、第5実施形態との相違点を中心に図面を参照しつつ説明する。本実施形態では、図14に示すように、EPS装置30として完全2系統のものが用いられている。なお、図14において、先の図11等に示した構成と同一の構成については、便宜上、同一の符号を付している。
【0145】
第1ステータ巻線群39Aには、第1バッテリ37Aから第1インバータ32Aを介して電力が供給される。第2ステータ巻線群39Bには、第2バッテリ37Bから第2インバータ32Bを介して電力が供給される。
【0146】
EPS装置30は、第1電子制御装置33Aと、第2電子制御装置33Bとを備えている。本実施形態では、各電子制御装置33A,33Bに対応するセンサが冗長化されている。第1電子制御装置33Aには、第1電圧センサ25Aによって検出された第1インバータ32Aの入力電圧(以下、第1電源電圧VINV1)と、第1電流センサ23Aの検出値と、第1回転角センサ24Aにより検出されたモータ38の第1電気角θe1とが入力される。第2電子制御装置33Bには、第2電圧センサ25Bによって検出された第2インバータ32Bの入力電圧(以下、第2電源電圧VINV2)と、第2電流センサ23Bの検出値と、第2回転角センサ24Bにより検出されたモータ38の第2電気角θe2とが入力される。
【0147】
第1電子制御装置33Aには、第1トルクセンサ20Aにより検出された第1操舵トルクTs1と、第1操舵角センサ21Aにより検出されたステアリングホイール11の第1操舵角θs1、及び第1操舵角θs1の変化速度である第1操舵角速度ωs1とが入力される。第2電子制御装置33Bには、第2トルクセンサ20Bにより検出された第2操舵トルクTs2と、第2操舵角センサ21Bにより検出されたステアリングホイール11の第2操舵角θs2、及び第2操舵角θs2の変化速度である第2操舵角速度ωs2とが入力される。
【0148】
第1電子制御装置33Aは、CPUを主に構成される第1制御部34Aと、第1ROM35Aと、記憶部としての第1RAM36Aとを備えている。第1制御部34Aは、第1ROM35Aに記憶されている制御プログラムの指示にしたがって浮動小数点型データの演算を行うことにより、第1系統に対応するモータ38の出力トルクを第1操舵指令トルクTtgt1に制御する操舵制御を行う。
【0149】
第2電子制御装置33Bは、CPUを主に構成される第2制御部34Bと、第2ROM35Bと、記憶部としての第2RAM36Bとを備えている。第2制御部34Bは、第2ROM35Bに記憶されている制御プログラムの指示にしたがって浮動小数点型データの演算を行うことにより、第2系統に対応するモータ38の出力トルクを第2操舵指令トルクTtgt2に制御する操舵制御を行う。
【0150】
本実施形態では、第1,第2電子制御装置33A,33Bそれぞれが、図2に示すアシストトルク演算部40、補償トルク演算部50、制御トルク演算部60及び指令値演算部70を備えている。ここで、第1電子制御装置33Aにおいて、アシストトルク演算部40には第1操舵トルクTs1が入力され、補償トルク演算部50には第1操舵角速度ωs1が入力され、制御トルク演算部60には第1操舵角θs1が入力される。また、第2電子制御装置33Bにおいて、アシストトルク演算部40には第2操舵トルクTs2が入力され、補償トルク演算部50には第2操舵角速度ωs2が入力され、制御トルク演算部60には第2操舵角θs2が入力される。第1電子制御装置33Aの指令値演算部70(「第1指令値算出部」に相当)により算出される操舵指令トルクTtgtが第1操舵指令トルクTtgt1であり、第2電子制御装置33Bの指令値演算部70(「第2指令値算出部」に相当)により算出される操舵指令トルクTtgtが第2操舵指令トルクTtgt2である。
【0151】
図15に、本実施形態に係るトルク制御処理のブロック図を示す。トルク制御処理のうち、第1,第2制御部34A,34Bそれぞれにより実行される処理は、複数の演算ブロックを備えている。第1制御部34Aの各演算ブロックの演算データは第1RAM36Aに記憶され、第2制御部34Bの各演算ブロックの演算データは第2RAM36Bに記憶される。
【0152】
第1制御部34Aにおいて、第1の2相変換部110は、第1電流センサ23Aの検出値と、第1回転角センサ24Aにより検出された第1電気角θe1とに基づいて、3相固定座標系における第1ステータ巻線群39Aに流れるU,V,W相電流を、dq座標系における第1d軸電流Id1r及び第1q軸電流Iq1rに変換する。
【0153】
第2制御部34Bにおいて、第2の2相変換部210は、第2電流センサ23Bの検出値と、第2回転角センサ24Bにより検出された第2電気角θe2(=θe1-30°)とに基づいて、3相固定座標系における第2ステータ巻線群39Bに流れるU,V,W相電流を、dq座標系における第2d軸電流Id2r及び第2q軸電流Iq2rに変換する。
【0154】
第1制御部34Aは、第1通信部111を備え、第2制御部34Bは、第2通信部211を備えている。第1通信部111及び第2通信部211は、互いに通信可能に接続されている。
【0155】
第1の2相変換部110は、第1通信部111及び第2通信部211を介して、第2の2相変換部210から第2d軸電流Id2r及び第2q軸電流Iq2rを受信する。第1の2相変換部110は、第1q軸電流Iq1rに第2q軸電流Iq2rを加算することにより、第1q軸加算値Iad_q1rを算出し、第1d軸電流Id1rに第2d軸電流Id2rを加算することにより、第1d軸加算値Iad_d1rを算出する。また、第1の2相変換部110は、第1q軸電流Iq1rから第2q軸電流Iq2rを減算することにより、第1q軸差分値Isb_q1rを算出し、第1d軸電流Id1rから第2d軸電流Id2rを減算することにより、第1d軸差分値Isb_d1rを算出する。
【0156】
第2の2相変換部210は、第1通信部111及び第2通信部211を介して、第1の2相変換部110から第1d軸電流Id1r及び第1q軸電流Iq1rを受信する。第2の2相変換部210は、第1q軸電流Iq1rに第2q軸電流Iq2rを加算することにより、第2q軸加算値Iad_q2rを算出し、第1d軸電流Id1rに第2d軸電流Id2rを加算することにより、第2d軸加算値Iad_d2rを算出する。また、第2の2相変換部210は、第1q軸電流Iq1rから第2q軸電流Iq2rを減算することにより、第2q軸差分値Isb_q2rを算出し、第1d軸電流Id1rから第2d軸電流Id2rを減算することにより、第2d軸差分値Isb_d2rを算出する。
【0157】
第1制御部34Aの第1指令電流算出部112と、第2制御部34Bの第2指令電流算出部212とは、第1通信部111及び第2通信部211を介して情報のやりとりが可能である。第1指令電流算出部112は、第1制御部34Aの指令値演算部70により算出された第1操舵指令トルクTtgt1に基づいて、第1d,q軸指令電流Id1*,Iq1*を算出する。第2指令電流算出部212は、第2制御部34Bの指令値演算部70により算出された第2操舵指令トルクTtgt2に基づいて、第2d,q軸指令電流Id2*,Iq2*を算出する。
【0158】
第1指令電流算出部112は、第1q軸指令加算値Iad_q1*、第1d軸指令加算値Iad_d1*、第1q軸指令差分値Isb_q1*、及び第1d軸指令差分値Isb_d1*を算出する。第1q軸指令加算値Iad_q1*は、第1q軸指令電流Iq1*と第2q軸指令電流Iq2*との和である。第1d軸指令加算値Iad_d1*は、第1d軸指令電流Id1*と第2d軸指令電流Id2*との和である。第1q軸指令差分値Isb_q1*は、第1q軸指令電流Iq1*と第2q軸指令電流Iq2*との差である。第1d軸指令差分値Isb_d1*は、第1d軸指令電流Id1*と第2d軸指令電流Id2*との差である。本実施形態では、第1q軸指令差分値Isb_q1*及び第1d軸指令差分値Isb_d1*が0にされている。
【0159】
第1q軸和偏差算出部113は、第1q軸指令加算値Iad_q1*から第1q軸加算値Iad_q1rを減算することにより、第1q軸和偏差ΔIad_q1を算出する。第1q軸差偏差算出部114は、第1q軸指令差分値Isb_q1*から第1q軸差分値Isb_q1rを減算することにより、第1q軸差偏差ΔIsb_q1を算出する。
【0160】
第1d軸和偏差算出部115は、第1d軸指令加算値Iad_d1*から第1d軸加算値Iad_d1rを減算することにより、第1d軸和偏差ΔIad_d1を算出する。第1d軸差偏差算出部116は、第1d軸指令差分値Isb_d1*から第1d軸差分値Isb_d1rを減算することにより、第1d軸差偏差ΔIsb_d1を算出する。
【0161】
第1q軸和制御器117は、第1q軸加算値Iad_q1rを第1q軸指令加算値Iad_q1*にフィードバック制御するための操作量として、第1q軸指令電圧和Vad_q1を算出する。第1q軸差制御器118は、第1q軸差分値Isb_q1rを第1q軸指令差分値Isb_q1*にフィードバック制御するための操作量として、第1q軸指令電圧差Vsb_q1を算出する。第1d軸和制御器119は、第1d軸加算値Iad_d1rを第1d軸指令加算値Iad_d1*にフィードバック制御するための操作量として、第1d軸指令電圧和Vad_d1を算出する。第1d軸差制御器120は、第1d軸差分値Isb_d1rを第1d軸指令差分値Isb_d1*にフィードバック制御するための操作量として、第1d軸指令電圧差Vsb_d1を算出する。なお、各制御器117~120で用いられるフィードバック制御は、例えば比例積分制御とすればよい。
【0162】
第1q軸加算部121は、第1q軸指令電圧和Vad_q1と、第1q軸指令電圧差Vsb_q1とを加算する。第1q軸乗算部122は、第1q軸加算部121により算出された「Vad_q1+Vsb_q1」に1/2を乗算することにより、第1q軸指令電圧Vq1を算出する。
【0163】
第1d軸加算部123は、第1d軸指令電圧和Vad_d1と、第1d軸指令電圧差Vsb_d1とを加算する。第1d軸乗算部124は、第1d軸加算部123により算出された「Vad_d1+Vsb_d1」に1/2を乗算することにより、第1d軸指令電圧Vd1を算出する。
【0164】
第1の3相変換部125は、第1d,q軸指令電圧Vd1,Vq1及び第1電気角θe1に基づいて、dq座標系における第1d,q軸指令電圧Vd1,Vq1を、3相固定座標系における第1U,V,W相指令電圧VU1,VV1,VW1に変換する。
【0165】
第1信号生成部126は、第1U,V,W相指令電圧VU1,VV1,VW1と、第1電圧センサ25Aによって検出された第1電源電圧VINV1とに基づいて、第1インバータ32Aを構成するU,V,W相における上,下アームスイッチの駆動信号を生成する。生成された駆動信号に基づいて、第1インバータ32Aを構成する各スイッチのスイッチング制御が行われる。
【0166】
一方、第2制御部34Bにおいて、第2指令電流算出部212は、第2q軸指令加算値Iad_q2*、第2d軸指令加算値Iad_d2*、第2q軸指令差分値Isb_q2*、及び第2d軸指令差分値Isb_d2*を算出する。第2q軸指令加算値Iad_q2*は、第1q軸指令電流Iq1*と第2q軸指令電流Iq2*との和である。第2d軸指令加算値Iad_d2*は、第1d軸指令電流Id1*と第2d軸指令電流Id2*との和である。第2q軸指令差分値Isb_q2*は、第1q軸指令電流Iq1*と第2q軸指令電流Iq2*との差である。第2d軸指令差分値Isb_d2*は、第1d軸指令電流Id1*と第2d軸指令電流Id2*との差である。本実施形態では、第2q軸指令差分値Isb_q2*及び第2d軸指令差分値Isb_d2*が0にされている。
【0167】
第2q軸和偏差算出部213は、第2q軸指令加算値Iad_q2*から第2q軸加算値Iad_q2rを減算することにより、第2q軸和偏差ΔIad_q2を算出する。第2q軸差偏差算出部214は、第2q軸指令差分値Isb_q2*から第2q軸差分値Isb_q2rを減算することにより、第2q軸差偏差ΔIsb_q2を算出する。
【0168】
第2d軸和偏差算出部215は、第2d軸指令加算値Iad_d2*から第2d軸加算値Iad_d2rを減算することにより、第2d軸和偏差ΔIad_d2を算出する。第2d軸差偏差算出部216は、第2d軸指令差分値Isb_d2*から第2d軸差分値Isb_d2rを減算することにより、第2d軸差偏差ΔIsb_d2を算出する。
【0169】
第2q軸和制御器217は、第2q軸加算値Iad_q2rを第2q軸指令加算値Iad_q2*にフィードバック制御するための操作量として、第2q軸指令電圧和Vad_q2を算出する。第2q軸差制御器218は、第2q軸差分値Isb_q2rを第2q軸指令差分値Isb_q2*にフィードバック制御するための操作量として、第2q軸指令電圧差Vsb_q2を算出する。第2d軸和制御器219は、第2d軸加算値Iad_d2rを第2d軸指令加算値Iad_d2*にフィードバック制御するための操作量として、第2d軸指令電圧和Vad_d2を算出する。第2d軸差制御器220は、第2d軸差分値Isb_d2rを第2d軸指令差分値Isb_d2*にフィードバック制御するための操作量として、第2d軸指令電圧差Vsb_d2を算出する。なお、各制御器217~220で用いられるフィードバック制御は、例えば比例積分制御とすればよい。
【0170】
第2q軸加算部221は、第2q軸指令電圧和Vad_q2と、第2q軸指令電圧差Vsb_q2とを加算する。第2q軸乗算部222は、第2q軸加算部221により算出された「Vad_q2+Vsb_q2」に1/2を乗算することにより、第2q軸指令電圧Vq2を算出する。
【0171】
第2d軸加算部223は、第2d軸指令電圧和Vad_d2と、第2d軸指令電圧差Vsb_d2とを加算する。第2d軸乗算部224は、第2d軸加算部223により算出された「Vad_d2+Vsb_d2」に1/2を乗算することにより、第2d軸指令電圧Vd2を算出する。
【0172】
第2の3相変換部225は、第2d,q軸指令電圧Vd2,Vq2及び第2電気角θe2に基づいて、dq座標系における第2d,q軸指令電圧Vd2,Vq2を、3相固定座標系における第2U,V,W相指令電圧VU2,VV2,VW2に変換する。
【0173】
第2信号生成部226は、第2U,V,W相指令電圧VU2,VV2,VW2と、第2電圧センサ25Bによって検出された第2電源電圧VINV2とに基づいて、第2インバータ32Bを構成するU,V,W相における上,下アームスイッチの駆動信号を生成する。生成された駆動信号に基づいて、第2インバータ32Bを構成する各スイッチのスイッチング制御が行われる。
【0174】
ここで、図15に示すトルク制御処理における各演算ブロックの演算データに非数又は無限大が含まれることがある。この場合、操舵制御の信頼性が低下し得る。そこで、本実施形態では、トルク制御処理におけるチェック処理が行われる。
【0175】
まず、図16を用いて、第1制御部34Aにより実行されるチェック処理について説明する。この処理は、所定の制御周期で繰り返し実行される。
【0176】
ステップS170では、第1RAM36Aに記憶された以下の(A1)~(A7)の演算データを加算することにより、第1加算データDα1を算出する。
【0177】
(A1)第1の2相変換部110が算出した第1q軸加算値Iad_q1r、第1d軸加算値Iad_d1r、第1q軸差分値Isb_q1r、及び第1d軸差分値Isb_d1r
(A2)第1指令電流算出部112が算出した第1q軸指令加算値Iad_q1*、第1d軸指令加算値Iad_d1*、第1q軸指令差分値Isb_q1*、及び第1d軸指令差分値Isb_d1*
(A3)各算出部113~116が算出した第1q軸和偏差ΔIad_q1、第1q軸差偏差ΔIsb_q1、第1d軸和偏差ΔIad_d1、及び第1d軸差偏差ΔIsb_d1
(A4)各制御器117~120が算出した第1q軸指令電圧和Vad_q1、第1q軸指令電圧差Vsb_q1、第1d軸指令電圧和Vad_d1、及び第1d軸指令電圧差Vsb_d1
(A5)第1q軸加算部121が算出した「Vad_q1+Vsb_q1」、及び第1d軸加算部123が算出した「Vad_d1+Vsb_d1」
(A6)各乗算部122,124が算出した第1d,q軸指令電圧Vd1,Vq1
(A7)第1の3相変換部125が算出した第1U,V,W相指令電圧VU1,VV1,VW1
なお、本実施形態において、図15に示す第1制御部34Aの処理のうち、第1通信部111以外の処理が「第1演算ブロック」に相当する。また、第1制御部34Aの行う図15に示す処理が「第1駆動演算部」に相当する。
【0178】
ステップS171では、ステップS170で算出した第1加算データDα1から、ステップS170で算出した第1加算データDα1を減算することにより、第1判定データDβ1を算出する。
【0179】
ステップS172では、ステップS171で算出した第1判定データDβ1が非数であるか否かを判定する。ステップS172において非数ではないと判定した場合には、ステップS173に進み、第1フラグF1を0にする。一方、ステップS172において非数であると判定した場合には、ステップS174に進み、第1フラグF1を1にする。そして、第1通信部111及び第2通信部211を介して第2制御部34Bに、第1系統に異常が発生した旨を通知する。また、図15に示す第1制御部34Aの演算処理を停止させ、第1インバータ32Aのスイッチング制御を停止させる。
【0180】
異常が通知された後、第1通信部111及び第2通信部211の通信が可能な状態とされつつ、第2インバータ32Bのスイッチング制御が継続される。その結果、モータ38に操舵トルクを発生させることができ、ひいては車両の走行を継続させることができる。
【0181】
ちなみに、連続するN回(N≧2)の制御周期においてステップS172で非数であると判定した場合に第1フラグF1を1にしてもよい。
【0182】
続いて、図17を用いて、第2制御部34Bにより実行されるチェック処理について説明する。この処理は、所定の制御周期で繰り返し実行される。
【0183】
ステップS180では、第2RAM36Bに記憶された以下の(B1)~(B7)の演算データを加算することにより、第2加算データDα2を算出する。
【0184】
(B1)第2の2相変換部210が算出した第2q軸加算値Iad_q2r、第2d軸加算値Iad_d2r、第2q軸差分値Isb_q2r、及び第2d軸差分値Isb_d2r
(B2)第2指令電流算出部212が算出した第2q軸指令加算値Iad_q2*、第2d軸指令加算値Iad_d2*、第2q軸指令差分値Isb_q2*、及び第2d軸指令差分値Isb_d2*
(B3)各算出部213~216が算出した第2q軸和偏差ΔIad_q2、第2q軸差偏差ΔIsb_q2、第2d軸和偏差ΔIad_d2、及び第2d軸差偏差ΔIsb_d2
(B4)各制御器217~220が算出した第2q軸指令電圧和Vad_q2、第2q軸指令電圧差Vsb_q2、第2d軸指令電圧和Vad_d2、及び第2d軸指令電圧差Vsb_d2
(B5)第2q軸加算部221が算出した「Vad_q2+Vsb_q2」、及び第2d軸加算部223が算出した「Vad_d2+Vsb_d2」
(B6)各乗算部222,224が算出した第2d,q軸指令電圧Vd2,Vq2
(B7)第2の3相変換部225が算出した第2U,V,W相指令電圧VU2,VV2,VW2
なお、本実施形態において、図15に示す第2制御部34Bの処理のうち、第2通信部211以外の処理が「第2演算ブロック」に相当する。また、第2制御部34Bの行う図15に示す処理が「第2駆動演算部」に相当する。
【0185】
ステップS181では、ステップS180で算出した第2加算データDα2から、ステップS180で算出した第2加算データDα2を減算することにより、第2判定データDβ2を算出する。
【0186】
ステップS182では、ステップS181で算出した第2判定データDβ2が非数であるか否かを判定する。ステップS182において非数ではないと判定した場合には、ステップS183に進み、第2フラグF2を0にする。一方、ステップS182において非数であると判定した場合には、ステップS184に進み、第2フラグF2を1にする。そして、第2通信部211及び第1通信部111を介して第1制御部34Aに、第2系統に異常が発生した旨を通知する。また、図15に示す第2制御部34Bの演算処理を停止させ、第2インバータ32Bのスイッチング制御を停止させる。
【0187】
異常が通知された後、第1通信部111及び第2通信部211の通信が可能な状態とされつつ、第1インバータ32Aのスイッチング制御が継続される。その結果、モータ38に操舵トルクを発生させることができ、ひいては車両の走行を継続させることができる。
【0188】
ちなみに、連続するN回(N≧2)の制御周期においてステップS182で非数であると判定した場合に第2フラグF2を1にしてもよい。
【0189】
<第6実施形態の変形例>
図16のステップS170において、第1加算データDα1の算出に用いられる演算データとしては、(A1)~(A7)の全てに限らず、これら演算データのうち、一部であってかつ少なくとも2つであってもよい。
【0190】
図17のステップS180において、第2加算データDα2の算出に用いられる演算データとしては、(B1)~(B7)の全てに限らず、これら演算データのうち、一部であってかつ少なくとも2つであってもよい。
【0191】
図15に示すトルク制御処理における各演算データについて、非数であるか否かではなく、例えば第3実施形態で説明したように、無限大であるか否かが判定されてもよい。
【0192】
図15に示す各制御部34A,34Bの処理において、d軸に関する処理の演算データが非数であると判定された場合、q軸に関する処理の演算データに基づいてインバータのスイッチング制御を継続してもよい。以下、第1制御部34Aを例にして、図10を参照しつつ説明する。
【0193】
ステップS130では、第1RAM36Aに記憶された以下の(C1)~(C7)の演算データを加算することにより、d軸加算データDAdを算出する。
【0194】
(C1)第1の2相変換部110が算出した第1q軸加算値Iad_q1r、及び第1q軸差分値Isb_q1r
(C2)第1指令電流算出部112が算出した第1q軸指令加算値Iad_q1*、及び第1q軸指令差分値Isb_q1*
(C3)各算出部113,114が算出した第1q軸和偏差ΔIad_q1、及び第1q軸差偏差ΔIsb_q1
(C4)各制御器117,118が算出した第1q軸指令電圧和Vad_q1、及び第1q軸指令電圧差Vsb_q1
(C5)第1q軸加算部121が算出した「Vad_q1+Vsb_q1」
(C6)第1q軸乗算部122が算出した第1q軸指令電圧Vq1
(C7)第1の3相変換部125が算出した第1U,V,W相指令電圧VU1,VV1,VW1
ステップS135では、第1RAM36Aに記憶された以下の(D1)~(D6)の演算データを加算することにより、q軸加算データDAqを算出する。
【0195】
(D1)第1の2相変換部110が算出した第1d軸加算値Iad_d1r、及び第1d軸差分値Isb_d1r
(D2)第1指令電流算出部112が算出した第1d軸指令加算値Iad_d1*、及び第1d軸指令差分値Isb_d1*
(D3)各算出部115,116が算出した第1d軸和偏差ΔIad_d1、及び第1d軸差偏差ΔIsb_d1
(D4)各制御器119,120が算出した第1d軸指令電圧和Vad_d1、及び第1d軸指令電圧差Vsb_d1
(D5)第1d軸加算部123が算出した「Vad_d1+Vsb_d1」
(D6)第1d軸乗算部124が算出した第1d軸指令電圧Vd1
ステップS143では、第1の3相変換部125に入力される第1d軸指令電圧Vd1を0にする処理を行う。なお、以上説明した処理は、第2制御部34Bに対しても同様に適用できる。
【0196】
ちなみに、d軸加算データDAdの算出に用いられる演算データとしては、(C1)~(C7)の全てに限らず、これら演算データのうち、一部であってかつ少なくとも2つであってもよい。
【0197】
また、q軸加算データDAqの算出に用いられる演算データとしては、(D1)~(D6)の全てに限らず、これら演算データのうち、一部であってかつ少なくとも2つであってもよい。
【0198】
<その他の実施形態>
なお、上記各実施形態は、以下のように変更して実施してもよい。
【0199】
図4のステップS21において、基本トルクTb、第1係数K1、基本アシストトルクTast及びアシストトルクTasfのうち、全部を用いることなく、一部であってかつ2つ以上の演算データを用いて第1加算データDA1を算出してもよい。この場合、ステップS25において、基本トルクTb、第1係数K1、基本アシストトルクTast及びアシストトルクTasfのうち、第1加算データDA1の算出に用いた演算データの初期化処理を行ってもよい。なお、補償トルク演算部50及び制御トルク演算部60についても同様である。
【0200】
図4のステップS24,S25の処理を削除してもよい。この場合、ステップS23において肯定判定された場合にステップS26に移行すればよい。また、図5のステップS54,S55の処理を削除してもよい。この場合、ステップS53において肯定判定された場合にステップS56に移行すればよい。また、図6のステップS84,S85の処理を削除してもよい。この場合、ステップS83において肯定判定された場合にステップS86に移行すればよい。
【0201】
図3のステップS110を削除してもよい。この場合、ステップS30,S60,S90において否定判定された場合であっても、操舵システム10における操舵制御を停止させなくてもよい。
【0202】
・EPS装置としては、1系統のモータ及びインバータを備えるものに限らず、例えば、2系統のモータ及びインバータを備えるものであってもよい。
【0203】
・完全自動運転による走行が可能な車両に操舵システムを搭載することもできる。この場合、例えば、先の図2のアシストトルク演算部40及び補償トルク演算部50が電子制御装置33の処理から削除されればよい。
【0204】
・電子制御装置の制御対象としては、例えば、ステアバイワイヤの操舵装置を構成するモータや、インホイールモータであってもよい。この場合、制御量は、例えば、トルク又はトルクに応じた電流指令値(例えば、d,q軸電流指令値)とすればよい。
【0205】
・制御量としては、トルクに限らず、例えばモータの回転速度であってもよい。また、制御対象としては、モータに限らない。
【0206】
・本開示に記載の制御部及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の制御部及びその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載の制御部及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
【符号の説明】
【0207】
10…操舵システム、30…電動パワーステアリング装置、31…モータ、33…電子制御装置、34…制御部、36…RAM。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17