(57)【要約】【課題】メモリに故障が検出された場合でも可及的に操舵補助処理を継続する仕組みを、部品点数を増やすことなく実現する電動パワーステアリング装置を提供する。【解決手段】メモリ制御管理手段３０１、３０２は、制御手段がメモリ１０３の小領域の確保要求を発行した際、確保されていない小領域を選択してメモリ故障検出手段３０３に逐次故障検出を実行させ、正常な小領域が存在しているとき、該小領域を確保し、正常な小領域が存在しなかったとき、エラーを出力し、電動パワーステアリング装置は、エラーが出力されたとき、操舵補助処理を停止する。【選択図】        図４
2010047203.tif 000002
【特許請求の範囲】
【請求項１】
車両のステアリング系に発生する操舵トルクおよび前記車両の速度に基づいて演算した操舵補助指令値と、前記ステアリング系に操舵補助力を付与する操舵補助モータの電流検出値と、に基づいて前記操舵補助モータを制御する電動パワーステアリング装置において、
前記操舵補助モータを制御する操舵補助処理を実行する制御手段と、
前記制御手段の作業領域として動的に確保される複数の小領域を有するメモリと、
小領域に対して故障検出を行うメモリ故障検出手段と、
前記制御手段が小領域の確保要求を発行した際、確保されていない小領域を選択して前記メモリ故障検出手段に逐次故障検出を実行させ、正常な小領域が存在しているとき、該小領域を確保し、正常な小領域が存在しなかったとき、エラーを出力するメモリ制御管理手段と、
を備え、前記エラーが出力されたとき、前記操舵補助処理を停止させることを特徴とする電動パワーステアリング装置。
【請求項２】
前記メモリ制御管理手段は、前記制御手段が小領域の確保要求を発行した際、確保されていない小領域が存在しなかったとき、エラーを出力する、ことを特徴とする請求項１に記載の電動パワーステアリング装置。
【請求項３】
前記メモリ制御管理手段は、前記制御手段が小領域の解放要求を発行した際、解放要求された小領域を解放する、ことを特徴とする請求項１または２に記載の電動パワーステアリング装置。
【請求項４】
夫々の小領域について確保されているか否かを示す使用状況情報をさらに有し、
前記メモリ制御管理手段は、小領域の確保・解放に対応して前記使用状況情報を更新するとともに、前記使用状況情報に基づいて確保されていない小領域を選択する、
ことを特徴とする請求項３に記載の電動パワーステアリング装置。
【請求項５】
前記小領域には、前記制御手段で使用するローカル変数が記憶される
ことを特徴とする請求項３または４に記載の電動パワーステアリング装置。
【請求項６】
前記メモリは、記憶するローカル変数のサイズに対応して異なるサイズの小領域を夫々複数有し、
前記メモリ制御管理手段は、ローカル変数確保要求が発行されたとき、確保要求されたローカル変数のサイズに対応する複数の小領域のうちから確保する小領域を選択する、
ことを特徴とする請求項５に記載の電動パワーステアリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御コンピュータを搭載する電動パワーステアリング装置に関し、さらに詳しくは、制御コンピュータのメモリに故障が発生した場合でも操舵補助処理を継続することが可能な電動パワーステアリング装置に関するものである。
【背景技術】
【０００２】
乗用車やトラック等の車両の操舵力を軽減するため、操舵補助モータによって操舵を補助する、いわゆる電動パワーステアリング（ＥＰＳ：Electric  Power  Steering）装置がある。電動パワーステアリング装置では、操舵補助モータの駆動力を、減速機を介してギヤまたはベルト等の伝送機構により、ステアリングシャフトまたはラック軸に補助力を付与するようになっている。かかる電動パワーステアリング装置は、操舵補助トルクを正確に発生させるため、制御コンピュータを用いてモータ電流のフィードバック制御を行っている。フィードバック制御は、電流指令値とモータ電流検出値との差が小さくなるようにモータ印加電圧を調整するものであり、モータ印加電圧の調整は、一般的にＰＷＭ（パルス幅変調）制御のデューティー比の調整で行っている。
【０００３】
このような電動パワーステアリング装置の制御コンピュータは、データの格納や演算処理のためにＲＡＭ等のメモリを使用している。そして、電動パワーステアリング装置の安全性を高めるために、初期時および操舵アシスト中においてシステムの信頼性を高めたり、安全性を図ることを目的としてメモリ診断機能を具備するようになっている。
【０００４】
例えば、特許文献１および２では、メモリ診断機能を備えた電動パワーステアリング装置において、メモリの故障を検出した場合に、安全のために操舵アシストを停止する技術が開示されている。
【０００５】
また、特許文献３では、ＤＲＡＭなどの揮発性メモリを備えるコンピュータシステムにおいて、代替メモリを設け、揮発性メモリにメモリ故障が発生した場合、これを検出し、アクセス先を代替メモリに変更するようにすることで、ソフトウェアの動作に支障のない正常な状態に復帰させる技術が開示されている。
【０００６】
【特許文献１】特開２００４−１３３６３５号公報
【特許文献２】特開２００３−３２３３５３号公報
【特許文献３】特開２００６−０６５３９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、電動パワーステアリング装置を搭載する車両の大型化のため、電動パワーステアリング装置は高出力化が進み、操舵補助モータのモータトルクの増大・大電流化が加速している。軽自動車等では、電動パワーステアリング装置が作動していない場合でもある程度の操舵が可能であるが、リッターカー以上では操舵に大きな力が必要になるため、異常発生後も電動パワーステアリング装置による操舵アシストを継続することが望まれる。
【０００８】
しかしながら、特許文献１および２では、メモリの異常を検出した場合には、操舵アシストを停止する構成であるので、メモリに異常がある場合に操舵アシストを継続することができないという問題がある。
【０００９】
また、特許文献３によれば、代替メモリを用意するハードウェア面でのメモリ故障対策であるので、部品点数増加による品質確保の困難さおよびコストが増大するという問題がある。
【００１０】
本発明は、上記に鑑みてなされたものであり、メモリに故障が検出された場合でも可及的に操舵補助処理を継続する仕組みを、部品点数を増やすことなく実現する電動パワーステアリング装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、車両のステアリング系に発生する操舵トルクおよび前記車両の速度に基づいて演算した操舵補助指令値と、前記ステアリング系に操舵補助力を付与する操舵補助モータの電流検出値と、に基づいて前記操舵補助モータを制御する電動パワーステアリング装置において、前記操舵補助モータを制御する操舵補助処理を実行する制御手段と、前記制御手段の作業領域として動的に確保される複数の小領域を有するメモリと、小領域に対して故障検出を行うメモリ故障検出手段と、前記制御手段が小領域の確保要求を発行した際、確保されていない小領域を選択して前記メモリ故障検出手段に逐次故障検出を実行させ、正常な小領域が存在しているとき、該小領域を確保し、正常な小領域が存在しなかったとき、エラーを出力するメモリ制御管理手段と、を備え、前記エラーが出力されたとき、前記操舵補助処理を停止させることを特徴とする。
【００１２】
また、本発明の好ましい態様によれば、前記メモリ制御管理手段は、前記制御手段が小領域の確保要求を発行した際、確保されていない小領域が存在しなかったとき、エラーを出力することが望ましい。
【００１３】
また、本発明の好ましい態様によれば、前記メモリ制御管理手段は、前記制御手段が小領域の解放要求を発行した際、解放要求された小領域を解放することが望ましい。
【００１４】
また、本発明の好ましい態様によれば、夫々の小領域について確保されているか否かを示す使用状況情報をさらに有し、前記メモリ制御管理手段は、小領域の確保・解放に対応して前記使用状況情報を更新するとともに、前記使用状況情報に基づいて確保されていない小領域を選択することが望ましい。
【００１５】
また、本発明の好ましい態様によれば、前記小領域には、前記制御手段で使用するローカル変数が記憶されることが望ましい。
【００１６】
また、本発明の好ましい態様によれば、前記メモリは、記憶するローカル変数のサイズに対応して異なるサイズの小領域を夫々複数有し、前記メモリ制御管理手段は、ローカル変数確保要求が発行されたとき、確保要求されたローカル変数のサイズに対応する複数の小領域のうちから確保する小領域を選択することが望ましい。
【発明の効果】
【００１７】
本発明によれば、車両のステアリング系に発生する操舵トルクおよび前記車両の速度に基づいて演算した操舵補助指令値と、前記ステアリング系に操舵補助力を付与する操舵補助モータの電流検出値と、に基づいて前記操舵補助モータを制御する電動パワーステアリング装置において、前記操舵補助モータを制御する操舵補助処理を実行する制御手段と、前記制御手段の作業領域として動的に確保される複数の小領域を有するメモリと、小領域に対して故障検出を行うメモリ故障検出手段と、前記制御手段が小領域の確保要求を発行した際、確保されていない小領域を選択して前記メモリ故障検出手段に逐次故障検出を実行させ、正常な小領域が存在しているとき、該小領域を確保し、正常な小領域が存在しなかったとき、エラーを出力するメモリ制御管理手段と、を備え、前記エラーが出力されたとき、前記操舵補助処理を停止させることとしたので、メモリに故障が検出された場合でも可及的に操舵補助処理を継続する仕組みを、部品点数を増やすことなく実現することができる。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明にかかる電動パワーステアリング（ＥＰＳ）装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、下記実施例における構成要素には、当業者が容易に想定できるものまたは実質的に同一のものが含まれる。
【実施例】
【００１９】
図１は、電動パワーステアリング装置の一般的な構成を示す図である。図１において、操向ハンドル１のコラム軸２は減速ギヤ３、ユニバーサルジョイント４ａおよび４ｂ、ピニオンラック機構５を経て操向車輪のタイロッド６に連結されている。コラム軸２には、操向ハンドル１の操舵トルクＴを検出するトルクセンサ１０が設けられており、操向ハンドル１の操舵力を補助する操舵補助モータ２０が、減速ギヤ３を介してコラム軸２に連結されている。ここで、操舵補助モータ２０は、例えば、ブラシレスモータやブラシモータである。電動パワーステアリング装置を制御するコントロールユニット３０には、バッテリ１４から内蔵の電源リレー１３を経て電力が供給され、イグニションキー１１からイグニション信号が供給される。また、コントロールユニット３０は、トルクセンサ１０で検出された操舵トルクＴと車速センサ１２で検出された車速Ｖとに基づいて、操舵補助モータ２０の電流指令値を演算し、操舵補助モータ２０の電流検出値と電流指令値とに基づいて、操舵補助モータ２０の電流検出値が電流指令値に追従するように操舵補助モータ２０を駆動制御する。
【００２０】
図２は、図１のコントロールユニット３０のハードウェア構成を示す図である。コントロールユニット３０は、図２に示すように、ＭＣＵ（マイクロコントロールユニット）１００と、ＦＥＴプリドライバ回路１１０と、モータ駆動回路（インバータ）１２０と、電流検出回路１３０と、位置検出回路１４０等を備えている。
【００２１】
ＭＣＵ１００は、ＣＰＵ（制御手段）１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＥＥＰＲＯＭ（不揮発性メモリ）１０４、Ａ／Ｄ変換器１０５、インターフェース１０６、バス１０７等を備えている。ＣＰＵ１０１は、ＲＯＭ１０２に格納されたプログラムを実行して電動パワーステアリング装置を制御する。
【００２２】
ＲＯＭ１０２は、ＣＰＵ１０１が実行する各種プログラムを格納する。具体的には、ＲＯＭ１０２には、操舵補助（アシスト）を行う操舵補助モータ２０を制御するアシスト処理（操舵補助処理）、ＲＡＭ１０３の故障検出を行うメモリ診断処理を実行するための制御プログラム等が格納されている。
【００２３】
ＲＡＭ１０３は、ＣＰＵ１０１が制御プログラムを実行する場合にその作業領域として使用され、制御プログラムに定義されるグローバル変数や、制御プログラムに含まれる関数内で定義され、該関数による処理が終了すると解放されるローカル変数等が記憶されるものである。
【００２４】
ＥＥＰＲＯＭ１０４は、電源遮断後においても記憶内容を保持可能な不揮発性メモリであり、ＣＰＵ１０１が、電動パワーステアリング装置の制御で使用する制御データ等が格納される。なお、ここでは、不揮発性メモリとして、ＥＥＰＲＯＭを使用することとしたが、本発明はこれに限られるものではなく、ＦＬＡＳＨ−ＲＯＭ等の他の不揮発性メモリを使用することにしてもよい。
【００２５】
Ａ／Ｄ変換器１０５は、トルクセンサ１０からの操舵トルクＴ、電流検出回路１３０からの操舵補助モータ２０の電流検出値Ｉｍ、および位置検出回路１４０からのモータ回転角信号θ等を入力し、デジタル信号に変換する。インターフェース１０６は、車速センサ１２からの車速Ｖ（パルス）をＣＡＮ通信などの車載ネットワークを介して受け取るためのものである。
【００２６】
上記構成において、ＣＰＵ１０１が、ＲＯＭ１０２に格納されたプログラムを実行することにより、メモリ制御管理手段、メモリ故障検出手段、およびフェールセーフ処理手段として機能する。
【００２７】
ＦＥＴプリドライバ回路１１０は、ＭＣＵ１００から入力されるＵＶＷ各相のＰＷＭ制御信号を、各相正負の通電信号（Ｕp、Ｕn、Ｖp、Ｖn、Ｗp、Ｗn）に変換して、モータ駆動回路１２０に出力する。
【００２８】
モータ駆動回路１２０は、一対のＦＥＴスイッチング素子からなるブリッジ回路をＵ相用、Ｖ相用、Ｗ相用として３相分備えており、各ＦＥＴスイッチング素子には還流ダイオードが並列接続されている。このブリッジ回路には、バッテリ１４から電源リレー１３を介して直流電圧が印加される。各ＦＥＴスイッチング素子の制御端子（ゲート端子）には、ＦＥＴプリドライバ回路１１０から通電信号が入力される。モータ駆動回路１２０に印加される直流電圧は、モータ駆動回路１２０内のＦＥＴスイッチング素子のスイッチング動作によって３相の交流電圧に変換され、それにより操舵補助モータ２０が駆動される。このブリッジ回路には、シャント抵抗Ｒ１、Ｒ２が接続されている。このシャント抵抗Ｒ１、Ｒ２に電流検出回路１３０が接続され、これによって、操舵補助モータ２０の電流検出値Ｉｍを検出するようになっている。
【００２９】
位置検出回路１４０は、位置センサ２１からの出力信号をモータ回転角信号θとして、Ａ／Ｄ変換器１０５に出力する。
【００３０】
次に、ＲＡＭ１０３のメモリ構成を説明する。特許文献１〜３に開示される技術を含む従来の一般的なコンピュータにおいては、制御プログラムの処理中にローカル変数が定義されたとき、該ローカル変数をＲＡＭに設けられたスタック領域に確保し、該関数を使用した処理が終了されると確保した領域を解放するようになっている。これに対し、本実施例においては、ＲＡＭ１０３にローカル変数を記憶するスタック領域とは異なる領域として複数の小領域が設けられ、ローカル変数を小領域に確保しようとするとき、確保しようとした小領域が正常ではない場合、すなわち、例えば該小領域に故障が検出された場合、他の小領域にローカル変数を確保するようにし、正常な小領域が全く存在しない場合、フェールセーフ処理を実行するように構成されている。
【００３１】
図３は、ＲＡＭ１０３のメモリ構成例を示す図である。同図において、ＲＡＭ１０３は、制御プログラムにおけるグローバル変数などの確保領域である静的領域２００と、ローカル変数を確保する領域である動的領域２１０と、を備えている。
【００３２】
動的領域２１０は、複数のブロックからなるブロックメモリ領域２３０と、夫々のブロックに関する管理情報を格納するブロックメモリ管理領域２２０とを備えている。一つのブロックは、記憶するローカル変数のサイズに対応して、ブロック毎にサイズが決められたさらに小さな小領域に分割されており、一つの小領域に一つのローカル変数が記憶される。ここでは、ブロックメモリ領域２３０に、４バイトの小領域を６個有する第１ブロック２３１と、２バイトの小領域を１２個有する第２ブロック２３２と、１バイトの小領域を２４個有する第３ブロック２３３と、が設けられているとする。
【００３３】
ブロックメモリ管理領域２２０に格納されている夫々の管理情報は、対応するブロックについて、どの小領域が使用中であるかまたは不使用中であるか（確保されているか否か）を示す使用状況と、不使用中の小領域のうちのひとつの先頭アドレスを示す確保候補位置と、を有する。ここでは、ブロックメモリ管理領域２２０には、第１ブロック２３１、第２ブロック２３２、第３ブロック２３３に夫々対応する管理情報として、第１ブロック管理情報２２１、第２ブロック管理情報２２２、第３ブロック管理情報２２３が格納されているとする。
【００３４】
図４は、ＭＣＵ１００の機能構成図（ＣＰＵ１０１が制御プログラムを実行することにより実現する機能構成）を示す図である。ＭＣＵ１００は、図４に示すように、メモリ管理部３０１と、メモリ制御部３０２と、メモリ故障検出部３０３と、フェールセーフ処理部３０４とを備えている。メモリ故障検出部３０３は、メモリ制御部３０２が指定する小領域に対して故障診断を行う。メモリ制御部３０２は、ローカル変数の確保が要求されたとき、確保要求されているローカル変数のサイズに対応する小領域からなるブロックから、使用中でない小領域を選択してメモリ故障検出部３０３に該小領域のメモリ故障検出を順次実行させる。そして、メモリ制御部３０２は、故障が検出されなかった小領域を一つメモリ管理部３０１およびローカル変数の確保の要求元に通知する。メモリ制御部３０２は、使用中でない小領域が存在しないか、使用中でない小領域すべてに故障を検出したとき、エラーを出力する。また、メモリ制御部３０２は、ローカル変数を解放する要求を受信したとき、該要求をメモリ管理部３０１に転送する。
【００３５】
メモリ管理部３０１は、メモリ制御部３０２から通知された小領域を確保する。また、メモリ管理部３０１は、ローカル変数を解放する要求を受信したとき、該解放要求に対応する確保していた小領域を解放する。
【００３６】
フェールセーフ処理部３０４は、メモリ制御部３０２がエラーを出力したとき、フェールセーフ処理（アシスト処理を停止、操舵補助モータ２０への通電を遮断、またはＭＣＵ１００のリセット等）を実行する。ここでは、フェールセーフ処理部３０４は、ＦＥＴプリドライバ回路１１０にモータ停止信号を出力して、ＦＥＴプリドライバ回路１１０の動作を停止させて、操舵補助モータ２０を停止させる。
【００３７】
また、ＭＣＵ１００は、図４に示すように、操舵トルクＴと車速Ｖに基づいて操舵補助トルク指令値を算出するトルク制御系モジュール４００と、各種のトルク補償を行う補償制御系モジュール４１０と、モータ電流のＦＢ（フィードバック）制御を行うモータ電流制御系モジュール４２０と、操舵補助モータ２０のモータ電流のＦＦ（フィードフォワード）制御を行うモータ電流補助制御系モジュール４３０等、アシスト処理を実行するアシスト処理系を備えている。つぎに、アシスト処理系の各部の動作の概略を説明する。
【００３８】
まず、トルクセンサ１０で検出された操舵トルクＴと、車速センサ１２で検出された車速Ｖとがアシストマップ４０１に入力され操舵補助指令値が算出される。さらに、補償制御系モジュール４１０で演算される補償値、例えば、収斂性、慣性、およびＳＡＴなどの補償値を、加算部４０２で操舵補助指令値に加算してトルク指令値Ｔｒｅｆが決定される。トルク指令値Ｔｒｅｆは、位相補償部４０３で位相補償された後、電流指令値演算部４４０に入力される。そして、トルク指令値Ｔｒｅｆに基づいて電流指令値演算部４４０で電流指令値Ｉｒｅｆが決定される。なお、ブラシレスモータでは、トルク指令値Ｔｒｅｆの他に回転子のロータ角度も電流指令値演算部４４０に入力して電流指令値Ｉｒｅｆが決定される。
【００３９】
一方、操舵補助モータ２０のモータ電流は、電流検出値Ｉｍとして、電流検出回路１３０で検出され、電流指令値Ｉｒｅｆとともに減算部４２１へ入力される。減算部４２１では、それらの偏差ΔＩ＝Ｉｒｅｆ−Ｉｍが算出され、ＰＩ（比例積分）制御部４２２に入力される。ＰＩ（比例積分）制御部４２２では、偏差ΔＩの比例積分出力として、電圧制御値Ｖｒｅｆが出力される。また、電流指令値Ｉｒｅｆは、補助値演算部４３１に入力される。補助値演算部４３１で演算される補助値、例えば、Ｄｅａｄ  Ｔｉｍｅ、ＥＭＦ（逆起電力）、および弱め界磁制御の補助値が、加算部４３５で電圧制御値Ｖｒｅｆに加算される。加算部４３５の出力は、ＰＷＭ制御部４５０に入力されて、ＰＷＭ処理され、ＵＶＷ各相のＰＷＭ制御信号がＦＥＴプリドライバ回路１１０に出力され、ＦＥＴプリドライバ回路１１０およびモータ駆動回路１２０を介して、操舵補助モータ２０が駆動される。
【００４０】
これらのアシスト処理系の各機能部は、ローカル変数を使用する関数に基づく処理を開始した際、ローカル変数確保要求を発行し、該処理を終了する際、ローカル変数解放要求を発行する。
【００４１】
次に、本実施例の要部の動作を説明する。まず、アシスト処理系によりローカル変数を使用する処理が実行される動作を説明する。図５は、アシスト処理系の所定の機能部がローカル変数Ｌを使用する関数に基づく処理Ａを実行する動作を示すフローチャートである。図示するように、処理Ａが開始されると、所定の機能部は、ローカル変数Ｌを確保するために、ローカル変数確保要求を発行する（ステップＳ１）。そして、所定の機能部は、ローカル変数確保要求に対応してメモリ管理部３０１が小領域に確保したローカル変数Ｌを使用して処理Ａの内容を実行し（ステップＳ２）、ローカル変数Ｌが不要になったとき、ローカル変数解放要求を発行する（ステップＳ３）。該ローカル変数解放要求に対応し、メモリ管理部３０１によって小領域に確保されたローカル変数Ｌが解放される。
【００４２】
続いて、本実施例の電動パワーステアリング装置において、メモリ管理部３０１およびメモリ制御部３０２がローカル変数確保要求に対応して小領域を確保するローカル変数確保処理の動作を詳しく説明する。図６は、ローカル変数確保処理を説明するフローチャートである。
【００４３】
図６において、ローカル変数確保要求が発行されると、メモリ制御部３０２は、第１〜第３ブロック管理情報２２１〜２２３のうち、要求されたローカル変数のサイズを記憶可能な小領域からなるブロックのブロック管理情報の使用状況をメモリ管理部３０１を介して参照し、該ブロックに含まれる全ての小領域が使用中か否かを判定する（ステップＳ１１）。例えば３バイトや４バイトのローカル変数を確保するローカル変数確保要求が発行された場合、メモリ制御部３０２は、４バイトの小領域を有する第１ブロック管理情報２２１の使用状況を参照する。要求されたローカル変数のサイズに対応するブロックの全ての小領域が使用中であった場合（ステップＳ１１、Ｙｅｓ）、メモリ制御部３０２はエラーを発行する（ステップＳ１８）。
【００４４】
不使用中の小領域があった場合（ステップＳ１１、Ｎｏ）、メモリ制御部３０２は、メモリ故障検出部３０３に前述のブロック管理情報の確保候補位置が示す小領域について故障診断を実行させて診断結果を取得し、該位置の小領域に故障が検出されたか否かを判断する（ステップＳ１２）。故障診断の方法としては、例えばライト・リードチェックを用いることができる。ブロック管理情報の確保候補位置が示す小領域に故障が検出されなかった場合（ステップＳ１２、Ｎｏ）、メモリ制御部３０２は、メモリ管理部３０１に該位置の小領域の先頭アドレスを通知し、メモリ管理部３０１は、該小領域に関する使用状況を「使用中」となるように更新することによって該小領域を確保し（ステップＳ１３）、確保候補位置を他の不使用中の小領域の先頭アドレスで更新する（ステップＳ１４）。そして、メモリ制御部３０２は、確保した小領域の先頭アドレスをローカル変数確保要求の送信元に通知する（ステップＳ１５）。
【００４５】
ステップＳ１２にて故障が検出されたとき、メモリ制御部３０２は、使用状況を参照して不使用中の小領域全てに対する故障診断を完了したか否かを判定し（ステップＳ１６）、故障診断が完了していない場合（ステップＳ１６、Ｎｏ）、メモリ管理部３０１に確保候補位置をまだ故障診断を行っていない他の不使用中の小領域の先頭アドレスで更新させ（ステップＳ１７）、ステップＳ１２へ移行する。不使用中の全ての小領域に対する故障診断を完了した場合（ステップＳ１６、Ｎｏ）、確保可能な小領域がないので、ステップＳ１８へ移行してエラーを発行する。
【００４６】
続いて、本実施例の電動パワーステアリング装置において、メモリ管理部３０１およびメモリ制御部３０２がローカル変数解放要求に対応して小領域を解放するローカル変数解放処理の動作を詳しく説明する。図７は、ローカル変数解放処理を説明するフローチャートである。
【００４７】
図７において、ローカル変数解放要求が発行されると、メモリ制御部３０２は該ローカル変数解放要求をメモリ管理部３０１に転送し、転送されてきたローカル変数解放要求を受信したメモリ管理部３０１は、解放要求されているローカル変数の確保先の小領域の使用状況を「使用中」から「不使用中」に変更して前記確保先の小領域を解放する（ステップＳ２１）。そして、メモリ管理部３０１は、確保候補位置を該解放した小領域の先頭アドレスに更新し（ステップＳ２２）、ローカル変数解放処理を終了する。
【００４８】
以上の動作によりＲＡＭ１０３に小領域が確保・解放される様子を、具体例を示して説明する。ここで、図８に示すように、第１ブロック２３１、第２ブロック２３２、第３ブロック２３３の先頭アドレスが夫々0xFFFF8000、0xFFFF9000、0xFFFFA000となっており、初期状態において全ての小領域が不使用中で、第１ブロック管理情報２２１、第２ブロック管理情報２２２、第３ブロック管理情報２２３の確保候補位置が夫々のブロックの先頭アドレスと同値であるとする。また、ブロックメモリ管理領域２２０に登録される使用状況としては、各ブロックにおいて先頭からｎ番目の小領域について使用中であれば「１」、不使用中であれば「０」とする個別の値をｎ桁目に表示する２進法表示で表現することとし、ここでは２進数の値を１６進数に変換した値を用いている。例えば、あるブロックにおいて、先頭から１つ目と３つ目の小領域が使用中であれば、２進数表示で「101」となるので、該ブロックの使用状況は「0x00000005」となる。初期状態においては、全ての小領域が不使用中であるとしているので、第１〜第３ブロック管理情報２２１〜２２３の使用状況は初期状態で全て0x00000000となっている。
【００４９】
図９は、４バイトのローカル変数Ａ１および２バイトのローカル変数Ａ２を使用し、さらに内部で４バイトのローカル変数Ｂ１と２バイトのローカル変数Ｂ２と１バイトのローカル変数Ｂ３とを使用する処理Ｂの関数を呼び出す処理Ａが実行された場合のブロック管理情報の変化を説明する図である。図１０は、図９に説明する各状態においてＲＡＭ１０３に小領域が確保・解放される様子を説明する図である。なお、以下の説明においては、メモリ故障検出部３０３によりどの小領域にも故障が検出されなかったとしている。
【００５０】
まず、図９において、ローカル変数Ａ１を確保するローカル変数確保要求が発行されると（ステップＳ３１）、図１０に示す初期状態（図１０（１））から４バイトの小領域が第１ブロック２３１の先頭に確保される（図１０（２））。第１ブロック管理情報２２１は、確保候補位置が第１ブロック２３１の先頭から数えて２つ目の小領域の先頭アドレスである0xFFFF8004に変化し、使用状況は0x00000001に変化する（図９（２））。本具体例においては、図６ステップＳ１４において確保候補位置を更新する際、不使用中の小領域のうち、ブロックの先頭アドレスに最も近い不使用中の小領域の先頭アドレスで更新するとしている。
【００５１】
同様に、ローカル変数Ａ２を確保するローカル変数確保処理が発行されると（ステップＳ３２）、２バイトの小領域が第２ブロック２３２の先頭に確保され（図１０（３））、第２ブロック管理情報２２２は、確保候補位置（0xFFFF9002）、使用状況（0x00000001）に変化する（図９（３））。続いて、Ａ１およびＡ２を使用した内部処理が実行され（ステップＳ３３）、処理Ｂの関数呼び出しが実行される（ステップＳ３４）。
【００５２】
処理Ｂにおいて、ローカル変数Ｂ１を確保するローカル変数確保要求が発行されると（ステップＳ４１）、第１ブロックの先頭から２つ目の小領域が確保され（図１０（４））、第１ブロック管理情報２２１は、確保候補位置（0xFFFF8008）、使用状況（0x00000003）に変化する（図９（４））。同様に、ローカル変数Ｂ２、Ｂ３のローカル変数確保要求が発行されると（ステップＳ４２、ステップＳ４３）、第２ブロック２３２の２つ目の小領域および第３ブロック２３３の１つ目の小領域が夫々確保され（図１０（５）、（６））、第２ブロック管理情報２２２は、確保候補位置（0xFFFF9004）、使用状況（0x00000003）に変化し（図９（５））、第３ブロック管理情報２２３は確保候補位置（0xFFFFA001）、使用状況（0x00000001）に変化する（図９（６））。
【００５３】
処理Ｂにおける内部処理によりＢ１、Ｂ２、Ｂ３が使用され（ステップＳ４４）、ローカル変数Ｂ１を解放するローカル変数解放要求が発行されると（ステップＳ４５）、第１ブロックの２つ目の小領域に確保されていたローカル変数Ｂ１が解放され（図１０（７））、第１ブロック管理情報２２１は、確保候補位置（0xFFFF8004）、使用状況（0x00000001）に変化する（図９（７））。同様に、ローカル変数Ｂ２、Ｂ３を解放するローカル変数解放要求が発行されると（ステップＳ４６、ステップＳ４７）、第２ブロック２３２の２つ目の小領域および第３ブロック２３３の１つ目の小領域が夫々解放され（図１０（８）、（９））、第２ブロック管理情報２２２は、確保候補位置（0xFFFF9002）、使用状況（0x00000001）に変化し（図９（８））、第３ブロック管理情報２２３は確保候補位置（0xFFFFA000）、使用状況（0x00000000）に変化する（図９（９））。
【００５４】
処理Ｂが終了し、ローカル変数Ａ１、Ａ２を解放するローカル変数解放要求が発行されると（ステップＳ３５、ステップＳ３６）、第１ブロック２３１の１つ目の小領域と第２ブロック２３２の１つ目の小領域が夫々解放され（図１０（１０）、（１１））、第１ブロック管理情報２２１は、確保候補位置（0xFFFF8000）、使用状況（0x00000000）に変化し（図９（１０））、第２ブロック管理情報２２２は確保候補位置（0xFFFF9000）、使用状況（0x00000000）に変化する（図９（１１））。
【００５５】
以上述べたように、本実施例においては、操舵補助モータ２０を制御するアシスト処理を実行するＣＰＵ１０１と、ＣＰＵ１０１の作業領域として動的に確保される複数の小領域を有するＲＡＭ１０３と、小領域に対して故障検出を行うメモリ故障検出部３０３と、ＣＰＵ１０１が小領域の確保要求を発行した際、確保されていない小領域を選択してメモリ故障検出部３０３に逐次故障検出を実行させ、正常な小領域、すなわち故障が検出されなかった小領域が存在しているとき、該小領域を確保し、正常な小領域が存在しなかったとき、エラーを出力するメモリ制御部３０２およびメモリ管理部３０１と、を備え、エラーが出力されたとき、操舵補助処理を停止することとしたので、メモリに故障が検出された場合でも可及的に操舵補助処理を継続する仕組みを、部品点数を増やすことなく実現することが可能となる。
【００５６】
また、メモリ制御部３０２は、ＣＰＵ１０１が小領域の確保要求を発行した際、確保されていない小領域が存在しなかったとき、エラーを出力するように構成したので、確保できる小領域がなくなったとき、アシスト処理を中止して安全性を確保することが可能となる。
【００５７】
また、メモリ制御部３０２は、ＣＰＵ１０１が小領域の解放要求を発行した際、該当する確保されている小領域を解放するように構成したので、必要に応じて小領域の解放を行うことが可能となる。
【００５８】
また、夫々の小領域について確保されているか否かを示す使用状況をさらに有し、メモリ制御部３０２は、小領域の確保・解放に対応してメモリ管理部３０１に使用状況を更新させるとともに、使用状況に基づいて確保されていない小領域を選択するように構成したので、簡単に小領域の管理を行うことが可能になる。
【００５９】
また、小領域には、ＣＰＵ１０１で使用するローカル変数が記憶されるように構成したので、ＣＰＵ１０１は小領域にローカル変数を確保することが可能となる。
【００６０】
また、ＲＡＭ１０３は、記憶するローカル変数のサイズに対応して異なるサイズの小領域を夫々複数有し、メモリ制御部３０２は、ローカル変数確保要求が発行されたとき、確保要求されたローカル変数のサイズに対応する複数の小領域のうちから確保する小領域を選択するように構成したので、ＲＡＭ１０３のリソースを効率的に使用することが可能となる。
【００６１】
なお、上記実施例では、小領域にローカル変数を記憶させるとしたが、小領域に記憶させるデータはローカル変数に限られるものではない。また、ＲＡＭ１０３にスタック領域を設け、重要度に基づいてローカル変数の確保先を小領域とスタック領域とに振り分けるようにしてもよい。
【００６２】
また、ＲＡＭ１０３は、４バイトの小領域を６個と、２バイトの小領域を１２個と、１バイトの小領域を２４個有する構成としたが、小領域のサイズ、サイズの種類、および夫々のサイズの小領域の個数はこれに限らない。
【産業上の利用可能性】
【００６３】
以上のように、本発明にかかる電動パワーステアリング装置は、メモリを有する電動パワーステアリング装置に適用して有用である。
【図面の簡単な説明】
【００６４】
【図１】電動パワーステアリング装置の一般的な構成を示す図である。
【図２】図１のコントロールユニットのハードウェア構成を示す図である。
【図３】実施例にかかる電動パワーステアリング装置のＲＡＭのメモリ構成例を示す図である。
【図４】実施例にかかる電動パワーステアリング装置のＭＣＵの機能構成を説明する図である。
【図５】アシスト処理系の所定の機能部がローカル変数Ｌを使用する関数に基づく処理Ａを実行する動作を示すフローチャートである。
【図６】ローカル変数確保処理を説明するフローチャートである。
【図７】ローカル変数解放処理を説明するフローチャートである。
【図８】ＲＡＭの初期状態の具体例を説明する図である。
【図９】ブロック管理情報の変化の具体例を説明する図である。
【図１０】ＲＡＭに小領域が確保・解放される様子を説明する図である。
【符号の説明】
【００６５】
１  操向ハンドル
２  コラム軸
３  減速ギヤ
４ａ、４ｂ  ユニバーサルジョイント
５  ピニオンラック機構
６  タイロッド
１０  トルクセンサ
１１  イグニションキー
１２  車速センサ
１３  電源リレー
１４  バッテリ
２０  操舵補助モータ
２１  位置センサ
３０  コントロールユニット
１００  ＭＣＵ
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ＥＥＰＲＯＭ
１０５  Ａ／Ｄ変換器
１０６  インターフェース
１０７  バス
１１０  ＦＥＴプリドライバ回路
１２０  モータ駆動回路
１３０  電流検出回路
１４０  位置検出回路
２００  静的領域
２１０  動的領域
２２０  ブロックメモリ管理領域
２２１〜２２３  ブロック管理情報
２３０  ブロックメモリ領域
２３１〜２３３  ブロック
３０１  メモリ管理部
３０２  メモリ制御部
３０３  メモリ故障検出部
３０４  フェールセーフ処理部
４００  トルク制御系モジュール
４０１  アシストマップ
４０２  加算部
４０３  位相補償部
４１０  補償制御系モジュール
４２０  モータ電流制御系モジュール
４２１  減算部
４２２  ＰＩ制御部
４３０  モータ電流補助制御系モジュール
４３１  補助値演算部
４３５  加算部
４４０  電流指令値演算部
４５０  ＰＷＭ制御部
【図１】
2010047203.tif 000003
【図２】
2010047203.tif 000004
【図３】
2010047203.tif 000005
【図４】
2010047203.tif 000006
【図５】
2010047203.tif 000007
【図６】
2010047203.tif 000008
【図７】
2010047203.tif 000009
【図８】
2010047203.tif 000010
【図９】
2010047203.tif 000011
【図１０】
2010047203.tif 000012