(57)【要約】【課題】処理負荷の増大を抑制しつつ、データの同時性を保証する。【解決手段】マイコン１０９は、コアＡ１、Ａ２を備え、コアＡ１は、電流指令部１０５を備え、コアＡ２は、電流検出部１０３、電流制御部１０４および三相電圧変換部１０６を備え、電流指令部１０５は、包括部Ｂ１を備え、電流制御部１０４は、分割部Ｂ２を備え、包括部Ｂ１は、マイコン１０９の処理において同時性を保証すべき複数のデータを、マイコン１０９で一度に扱うことができる１つのデータに包括し、マイコン１０９の処理において同時性を保証すべき複数のデータのデータサイズの合計は、マイコン１０９で一度に扱うことができるデータサイズ以下であり、分割部Ｂ２は、包括部Ｂ１で包括後の１つのデータを元の複数のデータに分割する。【選択図】図２
2020123127.tif 000002
【特許請求の範囲】
【請求項１】
マイクロコンピュータを備える電子制御装置であって、
前記マイクロコンピュータにおいて同一タスクで参照される複数のデータを、前記マイクロコンピュータで一度に扱うことができる１つのデータに包括する電子制御装置。
【請求項２】
前記マイクロコンピュータは、第１タスクおよび第２タスクを実行するときに、
前記第１タスクは、前記複数のデータを互いに異なるタイミングで更新し、
前記第２タスクは、前記第１タスクで更新された複数のデータが包括された１つのデータから、前記第１タスクで更新された複数のデータを取得する請求項１に記載の電子制御装置。
【請求項３】
前記マイクロコンピュータにおいて同一タスクで参照される複数のデータは、前記マイクロコンピュータの処理において同時性を保証すべき複数のデータであり、
前記マイクロコンピュータの処理において同時性を保証すべき複数のデータのデータサイズの合計は、前記マイクロコンピュータで一度に扱うことができるデータサイズ以下である請求項１に記載の電子制御装置。
【請求項４】
前記マイクロコンピュータは、第１コアおよび第２コアを備え、
前記第１コアが前記同時性を保証すべき複数のデータの更新側、前記第２コアが前記同時性を保証すべき複数のデータの参照側である場合、
前記第１コアは、前記同時性を保証すべき複数のデータを１つのデータに包括し、
前記第２コアは、前記同時性を保証すべき複数のデータが包括された１つのデータから、前記同時性を保証すべき複数のデータを取得する請求項３に記載の電子制御装置。
【請求項５】
前記同時性を保証すべき複数のデータは、モータ制御に用いられる三相電流値またはｄｑ座標の電流指令値である請求項４に記載の電子制御装置。
【請求項６】
前記第１コアは、前記電流指令値を更新する電流指令部を備え、
前記第２コアは、前記電流指令部で更新された前記電流指令値を参照する電流制御部を備え、
前記電流指令部は、前記ｄｑ座標の電流指令値を１つのデータに包括し、
前記電流制御部は、前記電流指令部にて包括された１つのデータから前記ｄｑ座標の電流指令値を取得する請求項５に記載の電子制御装置。
【請求項７】
マイクロコンピュータにおいて同一タスクで参照される複数のデータをそれぞれ格納可能な３つのバッファを備える電子制御装置であって、
前記マイクロコンピュータにおいて同一タスクで参照される複数のデータは、同時性を保証すべき複数のデータであり、
前記同時性を保証すべき複数のデータの更新側と参照側のそれぞれは、前記３つのバッファから任意に選択したいずれのバッファに対しても非同期にアクセス可能であり、
前記同時性を保証すべき複数のデータの更新側の制御周期が参照側の制御周期より速い場合、前記参照側が前記３つのバッファから任意に選択したいずれかのバッファを参照しているときは、前記更新側は前記３つのバッファのいずれも更新しない電子制御装置。
【請求項８】
前記マイクロコンピュータは、前記参照側である第１コアと、前記更新側である第２コアとを備え、
前記マイクロコンピュータの処理において同時性を保証すべき複数のデータのデータサイズの合計は、前記マイクロコンピュータで一度に扱うことができるデータサイズより大きい請求項７に記載の電子制御装置。
【請求項９】
マイクロコンピュータにおいて同一タスクで参照される複数のデータをそれぞれ格納可能な３つのバッファを備える電子制御装置であって、
前記マイクロコンピュータにおいて同一タスクで参照される複数のデータは、同時性を保証すべき複数のデータであり、
前記同時性を保証すべき複数のデータの更新側と参照側のそれぞれは、前記３つのバッファから任意に選択したいずれのバッファに対しても非同期にアクセス可能であり、
前記同時性を保証すべき複数のデータの参照側の制御周期が更新側の制御周期より速い場合、前記更新側が前記３つのバッファから任意に選択したいずれかのバッファを更新しているときは、前記参照側は前記３つのバッファのいずれも参照しない電子制御装置。
【請求項１０】
前記マイクロコンピュータは、前記参照側である第１コアと、前記更新側である第２コアとを備え、
前記マイクロコンピュータの処理において同時性を保証すべき複数のデータのデータサイズの合計は、前記マイクロコンピュータで一度に扱うことができるデータサイズより大きい請求項９に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータ（以下、マイコンと言う）が搭載された電子制御装置に関する。
【背景技術】
【０００２】
モータ制御では、三相電流値Ｉｕ、Ｉｖ、Ｉｗまたは電流指令値Ｉｄ＊、Ｉｑ＊などの同時性が保証されていなければならない複数のデータが用いられることがある。マルチコアマイコンを用いたモータ制御では、処理負荷を分散させるため、制御周期が異なるコアとタスクとの間で同一データ群に対して更新および参照を行うことがある。その場合、データ群を参照するタイミングによって、一方のデータは更新された今回値が採用され、もう一方のデータは更新されていない前回値が採用されるというように複数のデータの同時性が保証されないことがあった。
【０００３】
複数のデータの同時性を保証するため、割込み禁止を使用すると、制御周期が速いタスクでは処理負荷が増大し、タスク破綻を招くことがある。そのため、割込み禁止を用いることなく、モータ制御で使用するデータ群の同時性を保証する必要がある。特許文献１、２によれば、割込み禁止を用いることなく、データ群の同時性を保証する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１３０１４０号公報
【特許文献２】特開２００９−２４５００９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示された方法では、参照用メモリの参照中に第２プロセッサコアに割込みが入り、第２プロセッサコアの処理が止まった場合に更新処理が実行されると、更新用メモリのデータの同時性が保証されなくなる。そのため、参照側は同時性が保証されていないデータを参照する可能性があった。
【０００６】
特許文献２に開示された方法では、調停部が更新・参照を管理していることから、特許文献１に開示された方法で発生する同時性が保証されていないデータの参照は発生しない。しかし、特許文献２に開示された方法では、特許文献１に開示された方法よりも、処理負荷が増大するという問題があった。
【０００７】
本発明は、上記事情に鑑みなされたものであり、その目的は、処理負荷の増大を抑制しつつ、データの同時性を保証することが可能な電子制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、第１の観点に係る電子制御装置は、マイクロコンピュータを備え、前記マイクロコンピュータにおいて同一タスクで参照される複数のデータを、前記マイクロコンピュータで一度に扱うことができる１つのデータに包括する。
【発明の効果】
【０００９】
本発明によれば、処理負荷の増大を抑制しつつ、データの同時性を保証することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１実施形態に係る電子制御装置の構成を示すブロック図である。
【図２】図２は、図１のマイコンのマルチコアの適用例を示すブロック図である。
【図３】図３は、図２の電流指令値Ｉｄ＊、Ｉｑ＊を包括しないときの更新と参照の関係の一例を示すタイミングチャートである。
【図４】図４は、図２の電流指令値Ｉｄ＊、Ｉｑ＊を包括したデータの一例を示す図である。
【図５】図５は、図２の電流指令値Ｉｄ＊、Ｉｑ＊を包括したときの更新と参照の関係の一例を示すタイミングチャートである。
【図６】図６は、図２の電流指令値Ｉｄ＊、Ｉｑ＊の包括方法を示すフローチャートである。
【図７】図７は、図２の電流指令値Ｉｄ＊、Ｉｑ＊の参照方法を示すフローチャートである。
【図８】図８は、第２実施形態に係る電子制御装置の構成を示すブロック図である。
【図９】図９は、三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性が保証されないときの更新と参照の関係の一例を示すタイミングチャートである。
【図１０】図１０は、第２実施形態に係る三相電流値Ｉｕ、Ｉｖ、Ｉｗの検出値の更新側と参照側との間のデータの受け渡し方法を示すブロック図である。
【図１１】図１１は、図１０の３つのバッファを用いたときの更新と参照の関係の一例を示すタイミングチャートである。
【図１２】図１２は、図１０の３つのバッファを用いたときの三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新方法を示すフローチャートである。
【図１３】図１３は、図１０の３つのバッファを用いたときの三相電流値Ｉｕ、Ｉｖ、Ｉｗの参照方法を示すフローチャートである。
【図１４】図１４は、第３実施形態に係る電子制御装置の三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新側と参照側との間のデータの受け渡し方法を示すブロック図である。
【図１５】図１５は、図１４の３つのバッファを用いたときの更新と参照の関係の一例を示すタイミングチャートである。
【図１６】図１６は、図１４の３つのバッファを用いたときの三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新方法を示すフローチャートである。
【図１７】図１７は、図１４の３つのバッファを用いたときの三相電流値Ｉｕ、Ｉｖ、Ｉｗの参照方法を示すフローチャートである。
【図１８】図１８は、複数のデータの同時性の保証方法の使い分け方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
図１は、第１実施形態に係る電子制御装置の構成を示すブロック図である。
図１において、モータ装置は、モータ１０１、インバータ回路１０２、マイコン１０９、バッテリ１１０、レゾルバ１１１および電流センサＳｕ、Ｓｖ、Ｓｗを備える。モータ装置は、例えば、車両、ロボット、エレベータまたはクレーンの駆動装置として用いることができる。マイコン１０９は、例えば、車両に搭載された電子制御装置として用いることができる。
【００１３】
モータ１０１は、例えば、三相誘導電動機である。バッテリ１１０は、直流電圧Ｅｄｃをインバータ回路１０２に供給する。マイコン１０９は、インバータ回路１０２をＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）制御する。インバータ回路１０２は、マイコン１０９によるＰＷＭ制御に基づいて、直流電圧Ｅｄｃを三相電圧Ｖｕ、Ｖｖ、Ｖｗに変換し、モータ１０１を駆動する。レゾルバ１１１は、モータ１０１に取り付ける回転軸の角度を検出し、マイコン１０９に出力する。電流センサＳｕ、Ｓｖ、Ｓｗは、モータ１０１に流れる電流の三相電流値Ｉｕ、Ｉｖ、Ｉｗをそれぞれ検出し、マイコン１０９に出力する。
【００１４】
マイコン１０９は、ＡＤ（Ａｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌ）コンバータ１１２、ＰＷＭ制御部１１３、ＲＤＣ（ｒｅｓｏｌｖｅｒ  ｔｏ  ｄｉｇｉｔａｌ  ｃｏｎｖｅｒｔｅｒ）１１４およびモータ電流制御部１０８を備える。モータ電流制御部１０８は、電流検出部１０３、電流制御部１０４、電流指令部１０５、三相電圧変換部１０６および回転位置検出部１０７を備える。
【００１５】
ＡＤコンバータ１１２は、電流センサＳｕ、Ｓｖ、Ｓｗにて検出された三相電流値Ｉｕ、Ｉｖ、ＩｗをＡＤ変換し、電流検出部１０３に出力する。ＰＷＭ制御部１１３は、インバータ回路１０２をＰＷＭ制御する。ＲＤＣ１１４は、レゾルバ１１１にて検出された回転角をデジタル化し、回転位置検出部１０７に出力する。
【００１６】
回転位置検出部１０７は、モータ１０１の回転角θｅを検出し、電流検出部１０３および三相電圧変換部１０６に出力する。電流指令部１０５は、電流指令値Ｉｄ＊、Ｉｑ＊を電流制御部１０４に出力する。電流検出部１０３は、ＡＤコンバータ１１２でデジタル化された三相電流値Ｉｕ、Ｉｖ、Ｉｗおよび回転位置検出部１０７で検出された回転角θｅに基づいて、ｄｑ変換した電流検出値Ｉｄ＾、Ｉｑ＾を生成し、電流制御部１０４に出力する
【００１７】
電流制御部１０４は、電流検出部１０３から出力された電流検出値Ｉｄ＾、Ｉｑ＾と、電流指令部１０５から出力された電流指令値Ｉｄ＊、Ｉｑ＊とが一致するように電圧指令値Ｖｄ＊、Ｖｑ＊を生成し、三相電圧変換部１０６に出力する。三相電圧変換部１０６は、電圧指令値Ｖｄ＊、Ｖｑ＊と回転角θｅとから三相電圧Ｖｕ、Ｖｖ、Ｖｗに一度変換した後、パルス幅変調（ＰＷＭ）したドライブ信号によって、インバータ回路１１３の半導体スイッチ素子をＯＮ／ＯＦＦ制御して出力電圧を調整する。
【００１８】
マイコン１０９は、モータ制御に用いられるこれらの処理を分散させるため、マルチコアを採用することができる。このとき、マイコン１０９は、マイコン１０９において同一タスクで参照される複数のデータをマイコン１０９で一度に扱うことができる１つのデータに包括する。タスクは、マイコン１０９で実行されるプログラムの実行単位である。マイコン１０９において同一タスクで参照される複数のデータは、マイコン１０９の処理において同時性を保証すべき複数のデータである。同時性を保証すべき複数のデータは、その一部のデータが今回の更新前のデータである場合は、その他のデータも今回の更新前のデータである。また、同時性を保証すべき複数のデータは、その一部のデータが今回の更新後のデータである場合は、その他のデータも今回の更新後のデータである。例えば、マイコン１０９は、同一タスクで参照される複数のデータを互いに異なるタイミングで更新した場合、それら複数の更新値をマイコン１０９で一度に扱うことができる１つのデータに包括する。同時性を保証すべき複数のデータは、例えば、マイコン１０９を動作させるプログラムにて指定することができる。同時性を保証すべき複数のデータは、例えば、モータ制御に用いられる三相電流値またはｄｑ座標の電流指令値である。
【００１９】
図２は、図１のマイコンのマルチコアの適用例を示すブロック図である。
図２において、マイコン１０９は、コアＡ１、Ａ２を備える。コアＡ１は、電流指令部１０５を備える。コアＡ２は、電流検出部１０３、電流制御部１０４および三相電圧変換部１０６を備える。コアＡ１、Ａ２の制御周期は、必ずしも同一周期でなくてもよい。
【００２０】
電流制御部１０４は、電圧指令値Ｖｄ＊、Ｖｑ＊を生成するために、電流指令部１０５から出力された電流指令値Ｉｄ＊、Ｉｑ＊を参照する。このとき、電流指令部１０５から電流制御部１０４に出力される電流指令値Ｉｄ＊、Ｉｑ＊は、同時性が保証されていることを前提としたデータである。
【００２１】
しかし、電流指令部１０５はコアＡ１に設けられ、電流制御部１０４はコアＡ２に設けられている。このため、異なるコアＡ１、Ａ２で電圧指令値Ｖｄ＊、Ｖｑ＊の更新と参照が独立に実行され、電流制御部１０４で参照される電流指令値Ｉｄ＊、Ｉｑ＊の同時性が保証されないことがある。すなわち、電流制御部１０４が電流指令値Ｉｄ＊、Ｉｑ＊を参照するタイミングによっては、電流指令値Ｉｄ＊、Ｉｑ＊のうちの一方のデータＩｄ＊は更新された今回値が採用され、もう一方のデータＩｑ＊は更新されていない前回値が採用されることがある。
【００２２】
図３は、図２の電流指令値Ｉｄ＊、Ｉｑ＊を包括しないときの更新と参照の関係の一例を示すタイミングチャートである。
図３において、図２の電流指令部１０５は、同時性を保証すべき電流指令値Ｉｄ＊、Ｉｑ＊のうちの一方のデータＩｄ＊の更新３０１を時刻ｔ１に実行し、もう一方のデータＩｑ＊の更新３０２を時刻４に実行したものとする。このとき、電流制御部１０４および電流指令部１０５は、共有ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を使用し、電流指令部１０５が電流指令値Ｉｄ＊、Ｉｑ＊を出力し、電流制御部１０４が電流指令値値Ｉｄ＊、Ｉｑ＊を参照する。
【００２３】
ここで、電流指令値Ｉｄ＊、Ｉｑ＊のうちの一方のデータＩｄ＊と、もう一方のデータＩｑ＊は、同一タイミングで出力されない。このとき、電流制御部１０４は、データＩｄ＊の更新３０１の時刻ｔ１と、データＩｑ＊の更新３０２の時刻４との間の時刻ｔ２にデータＩｄ＊の参照３０５を実行し、時刻ｔ３にデータＩｑ＊の参照３０６を実行したものとする。この場合、電流指令値Ｉｄ＊、Ｉｑ＊の一方のデータＩｄ＊の参照値３０３は更新されているが、電流指令値Ｉｄ＊、Ｉｑ＊のもう一方のデータＩｑ＊の参照値３０４は更新前の前回値となり、電流制御部１０４で参照される電流指令値Ｉｄ＊、Ｉｑ＊の同時性が保証されない。
【００２４】
図２において、電流制御部１０４で参照される電流指令値Ｉｄ＊、Ｉｑ＊の同時性を保証するため、電流指令部１０５は、包括部Ｂ１を備え、電流制御部１０４は、分割部Ｂ２を備える。包括部Ｂ１は、マイコン１０９の処理において同時性を保証すべき複数のデータを、マイコン１０９で一度に扱うことができる１つのデータに包括する。このとき、マイコン１０９の処理において同時性を保証すべき複数のデータのデータサイズの合計は、マイコン１０９で一度に扱うことができるデータサイズ以下である。例えば、マイコン１０９で一度に扱うことができるデータサイズが３２ビット、電流指令値Ｉｄ＊、Ｉｑ＊の一方のデータＩｄ＊のデータサイズが１６ビット、もう一方のデータＩｑ＊のデータサイズも１６ビットである場合、包括部Ｂ１は、これらの２つのデータＩｄ＊、Ｉｑ＊を１つのデータに包括することができる。
【００２５】
分割部Ｂ２は、包括部Ｂ１で包括後の１つのデータを元の複数のデータに分割する。例えば、分割部Ｂ２は、包括部Ｂ１で包括後の１つのデータを２つのデータＩｄ＊、Ｉｑ＊に分割する。
【００２６】
図４は、図２の電流指令値Ｉｄ＊、Ｉｑ＊を包括したデータの一例を示す図である。
図４において、図２の電流指令部１０５で更新される電流指令値Ｉｄ＊、Ｉｑ＊の各データ４０１、４０２は、１６ビットのＲＡＭで管理されていたものとする。このとき、電流指令値Ｉｄ＊、Ｉｑ＊の２つのデータ４０１、４０２を１つのデータ４０３として包括できる３２ビットの共有ＲＡＭ４０４を用意する。
【００２７】
そして、電流指令部１０５は、電流指令値Ｉｄ＊、Ｉｑ＊のデータ４０１、４０２がどちらも更新された後に、共有ＲＡＭ４０４の上位１６ビットにデータ４０１、下位１６ビットにデータ４０２を格納し、１つのデータ４０３として管理する。
【００２８】
電流制御部１０４は、電流指令値Ｉｄ＊、Ｉｑ＊として１つのデータ４０３が格納された共有ＲＡＭ４０４にアクセスし、電流指令値Ｉｄ＊、Ｉｑ＊を１つのデータ４０３として参照する。そして、電流制御部１０４は、３２ビットの１つのデータ４０３から２つのデータ４０１、４０２を１６ビットごとに取り出す。これにより、電流制御部１０４は、電流指令値Ｉｄ＊、Ｉｑ＊の各データ４０１、４０２が同一タイミングで更新されない場合においても、同時性が保証された電流指令値Ｉｄ＊、Ｉｑ＊を参照することができる。
【００２９】
このとき、電流指令部１０５での電流指令値Ｉｄ＊、Ｉｑ＊の更新処理と、電流制御部１０４での電流指令値Ｉｄ＊、Ｉｑ＊の参照処理は、電流指令部１０５と電流制御部１０４とで非同期に独立して実行することができる。このため、電流指令部１０５での電流指令値Ｉｄ＊、Ｉｑ＊の更新タイミングに応じて電流指令部１０５での電流指令値Ｉｄ＊、Ｉｑ＊の参照タイミングを管理したり、電流指令部１０５での電流指令値Ｉｄ＊、Ｉｑ＊の参照タイミングに応じて電流指令部１０５での電流指令値Ｉｄ＊、Ｉｑ＊の更新タイミングを管理したりする必要がなく、処理負荷の増大を抑制することができる。
【００３０】
図５は、図２の電流指令値Ｉｄ＊、Ｉｑ＊を包括したときの更新と参照の関係の一例を示すタイミングチャートである。
図５において、図２の電流指令部１０５は、同時性を保証すべき電流指令値Ｉｄ＊、Ｉｑ＊のうちの１６ビットのデータＩｄ＊の更新５０１を時刻ｔ１１に実行し、もう一方の１６ビットのデータＩｑ＊の更新５０２を時刻１２に実行したものとする。
【００３１】
次に、電流指令部１０５は、同時性を保証すべき電流指令値Ｉｄ＊、Ｉｑ＊を１つのデータに包括し、その包括した３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊を共有ＲＡＭに格納することで、共有ＲＡＭの電流指令値Ｉｄ＊、Ｉｑ＊の更新５０３を時刻１３に実行する。
【００３２】
次に、電流制御部１０４は、共有ＲＡＭに１つのデータとして格納されている３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊の参照５０７を時刻１４に実行する。次に、電流制御部１０４は、１つのデータとして参照した３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊の分割５０８を時刻１５に実行し、１６ビットの電流指令値Ｉｄ＊および１６ビットの電流指令値Ｉｑ＊を取得する。
【００３３】
このとき、１６ビットのデータＩｄ＊が時刻ｔ１１に更新され、１６ビットのデータＩｑ＊が時刻ｔ１２に更新された場合においても、電流制御部１０４は、それら２つのデータが１つのデータとして包括された３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊を時刻ｔ１４に参照することができる。ここで、３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊の参照値５０４は更新されているため、その３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊から分割された１６ビットの電流指令値Ｉｄ＊の参照値５０５および１６ビットの電流指令値Ｉｑ＊の参照値５０５のいずれも更新された値となり、電流制御部１０４で参照される電流指令値Ｉｄ＊、Ｉｑ＊の同時性を保証することができる。
【００３４】
また、電流指令部１０５での更新５０１、５０２、５０３と、電流制御部１０４での参照５０７および分割５０８は、電流指令部１０５と流制御部１０４とで非同期に独立して実行することができ、電流指令部１０５および電流制御部１０４の処理負荷の増大を抑制することができる。
【００３５】
図６は、図２の電流指令値Ｉｄ＊、Ｉｑ＊の包括方法を示すフローチャートである。
図６において、図２の電流指令部１０５は、電流指令値Ｉｄ＊、Ｉｑ＊の一方のデータＩｄ＊を算出する（Ｓ１１）。次に、電流指令部１０５は、電流指令値Ｉｄ＊、Ｉｑ＊のもう一方のデータＩｑ＊を算出する（Ｓ１２）。
【００３６】
次に、電流指令部１０５は、３２ビット単位でデータが格納される共有ＲＡＭの上位１６ビットにデータＩｄ＊を格納し（Ｓ１３）、下位１６ビットにデータＩｑ＊を格納し、電流指令値Ｉｄ＊、Ｉｑ＊を３２ビットのデータとして管理する。
【００３７】
図７は、図２の電流指令値Ｉｄ＊、Ｉｑ＊の参照方法を示すフローチャートである。
図７において、図２の電流制御部１０４は、電流指令部１０５で包括された３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊を参照する（Ｓ２１）。次に、電流制御部１０４は、１つのデータに包括された３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊から、上位１６ビットのデータＩｄ＊を取得する。次に、電流制御部１０４は、１つのデータに包括された３２ビットの電流指令値Ｉｄ＊、Ｉｑ＊から、下位１６ビットのデータＩｑ＊を取得する。
【００３８】
上述した第１実施形態では、更新側で更新された電流指令値Ｉｄ＊、Ｉｑ＊を１つのデータに包括することにより、参照側で用いられる電流指令値Ｉｄ＊、Ｉｑ＊の同時性を保証する方法について説明した。しかし、データの包括によってデータの同時性を保証する方法は、同時性を保証すべき複数のデータのデータサイズの合計がマイコン１０９で一度に扱えるデータサイズ以下でなければならない。
【００３９】
以下、同時性を保証すべき複数のデータのデータサイズの合計がマイコン１０９で一度に扱えるデータサイズよりも大きい場合の複数のデータの同時性の保証方法について説明する。
【００４０】
図８は、第２実施形態に係る電子制御装置の構成を示すブロック図である。
図８において、この電子制御装置は、図２のマイコン１０９の代わりにマイコン１０９Ａを備える。なお、以下の説明では、マイコン１０９Ａは、３２ビットマルチコアマイコンであるものとする。マイコン１０９Ａは、図２のマイコン１０９の構成に加え、モータ温度推定部１１５を備える。モータ温度推定部１１５は、ＡＤコンバータ１１２でデジタル化された三相電流値Ｉｕ、Ｉｖ、Ｉｗに基づいて、図１のモータ１０１の温度を推定する。
【００４１】
マイコン１０９Ａは、コアＡ１１〜Ａ１３を備える。コアＡ１１は、ＡＤコンバータ１１２を備える。コアＡ１２は、電流検出部１０３、電流制御部１０４、電流指令部１０５、三相電圧変換部１０６および回転位置検出部１０７を備える。コアＡ１３は、モータ温度推定部１１５を備える。コアＡ１１〜Ａ１３の制御周期は、必ずしも同周期でなくてもよい。
【００４２】
モータ温度推定部１１５は、モータ１０１の温度を推定するために、ＡＤコンバータ１１２から出力された三相電流値Ｉｕ、Ｉｖ、Ｉｗを参照する。なお、以下の説明では、三相電流値Ｉｕ、Ｉｖ、Ｉｗは、それぞれ１６ビットのデータであるものとする。このとき、ＡＤコンバータ１１２からモータ温度推定部１１５に出力される三相電流値Ｉｕ、Ｉｖ、Ｉｗは、同時性が保証されていることを前提としたデータである。
【００４３】
しかし、ＡＤコンバータ１１２はコアＡ１１に設けられ、モータ温度推定部１１５はコアＡ３に設けられている。このため、異なるコアＡ１１、Ａ１３で三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新と参照が独立に実行され、モータ温度推定部１１５で参照される三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性が保証されないことがある。すなわち、モータ温度推定部１１５が三相電流値Ｉｕ、Ｉｖ、Ｉｗを参照するタイミングによっては、三相電流値Ｉｕ、Ｉｖ、Ｉｗのうちの一部のデータは更新された今回値が採用され、残りのデータは更新されていない前回値が採用されることがある。
【００４４】
図９は、三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性が保証されないときの更新と参照の関係の一例を示すタイミングチャートである。
図９において、図８のＡＤコンバータ１１２は、同時性を保証すべき三相電流値Ｉｕ、Ｉｖ、ＩｗのうちのデータＩｕの更新６０１を時刻ｔ２１に実行し、データＩｖの更新６０２を時刻２２に実行し、データＩｗの更新６０３を時刻２６に実行したものとする。
【００４５】
一方、モータ温度推定部１１５は、データＩｖの更新６０２の時刻ｔ２２と、データＩｗの更新６０３の時刻２６との間の時刻ｔ２３にデータＩｕの参照６０７を実行し、時刻ｔ２４にデータＩｖの参照６０８を実行し、時刻ｔ２５にデータＩｗの参照６０９を実行したものとする。この場合、三相電流値Ｉｕ、Ｉｖ、ＩｗのうちのデータＩｕ、Ｉｖの参照値６０４、６０５は更新されているが、三相電流値Ｉｕ、Ｉｖ、ＩｗのうちデータＩｗの参照値６０６は更新前の前回値となり、モータ温度推定部１１５で参照される三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性は保証されない。
【００４６】
この第２実施形態では、三相電流値Ｉｕ、Ｉｖ、Ｉｗの合計データサイズは４８ビットであるのに対して、マイコン１０９Ａで一度に扱うことができるデータサイズは３２ビットである。このため、マイコン１０９Ａの処理において同時性を保証すべき三相電流値Ｉｕ、Ｉｖ、Ｉｗのデータサイズの合計は、マイコン１０９Ａで一度に扱うことができるデータサイズより大きく、三相電流値Ｉｕ、Ｉｖ、Ｉｗをマイコン１０９Ａで一度に扱うことができる１つのデータに包括することはできない。
【００４７】
以下の実施形態では、同時性を保証すべき複数のデータのデータサイズの合計がマイコン１０９Ａで一度に扱えるデータサイズよりも大きい場合、三面の同サイズの中間バッファ（トリプルバッファ）を用意し、そのトリプルバッファに対して、三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新と参照を行うことで、三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性を保証する方法について説明する。
【００４８】
なお、第２実施形態では、同時性を保証すべき三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新側の制御周期が参照側の制御周期より速い場合を前提とし、第３実施形態では、同時性を保証すべき三相電流値Ｉｕ、Ｉｖ、Ｉｗの参照側の制御周期が更新側の制御周期より速い場合を前提とする。
【００４９】
図１０は、第２実施形態に係る三相電流値Ｉｕ、Ｉｖ、Ｉｗの検出値の更新側と参照側との間のデータの受け渡し方法を示すブロック図である。
図１０において、図８のマイコン１０９Ａは、トリプルバッファとして、３つのバッファ７０１〜７０３を備える。各バッファ７０１〜７０３のデータサイズは、４８ビットとすることができる。このとき、各バッファ７０１〜７０３は、４８ビットの三相電流値Ｉｕ、Ｉｖ、Ｉｗを保持することができる。
【００５０】
図８のマイコン１０９Ａは、ＡＤコンバータ１１２としてＡＤコンバータ１１２Ａを備え、モータ温度推定部１１５としてモータ温度推定部１１５Ａを備える。ＡＤコンバータ１１２ＡはコアＡ１１に割り当てられ、モータ温度推定部１１５ＡはコアＡ１３に割り当てられている。ＡＤコンバータ１１２Ａは、三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新側として動作し、モータ温度推定部１１５Ａは、三相電流値Ｉｕ、Ｉｖ、Ｉｗの参照側として動作する。三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新側と参照側のそれぞれは、３つのバッファ７０１〜７０３から任意に選択したいずれのバッファに対しても非同期にアクセス可能である。
【００５１】
ここで、３つのバッファ７０１〜７０３は、更新側から参照側への三相電流値Ｉｕ、Ｉｖ、Ｉｗの受け渡しに用いることができる。このとき、参照側が３つのバッファ７０１〜７０３から任意に選択したいずれかのバッファを参照しているときは、更新側は３つのバッファ７０１〜７０３のいずれも更新しないようにする。
【００５２】
例えば、ＡＤコンバータ１１２Ａが、３つのバッファ７０１〜７０３から任意に選択したいずれかのバッファに三相電流値Ｉｕ、Ｉｖ、Ｉｗのデータを格納するものとする。また、３つのバッファ７０１〜７０３のうちのバッファ７０３に最新データが格納されており、モータ温度推定部１１５Ａは参照処理を行っているものとする。
【００５３】
この状態の場合に、ＡＤコンバータ１１２Ａが３つのバッファ７０１〜７０３のどのバッファをデータの格納対象とするかについて説明する。
【００５４】
ＡＤコンバータ１１２Ａは、最新データが格納されているバッファ７０３および参照対象であるバッファ７０２以外のバッファ７０１をデータの格納対象とする。すなわち、ＡＤコンバータ１１２Ａは、三相電流値Ｉｕ、Ｉｖ、Ｉｗのデータの格納先をバッファ７０１に決定する。
【００５５】
最新データが格納されているバッファ７０３および参照対象であるバッファ７０２以外のバッファ７０１をデータの格納対象とする場合、ＡＤコンバータ１１２Ａは、モータ温度推定部１１５Ａの参照対象がバッファ７０２であることを知らなければならない。このため、モータ温度推定部１１５Ａは、データの参照先を異なるコアＡ１１、Ａ１３間の共有ＲＡＭデータとしてＡＤコンバータ１１２Ａに通知する（７０５）。
【００５６】
また、ＡＤコンバータ１１２Ａが格納対象として決定したバッファ７０１に対して三相電流値Ｉｕ、Ｉｖ、Ｉｗを格納しようとするタイミングでは、前回の格納先が現状で三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データを格納しているバッファであるため、三相電流値Ｉｕ、Ｉｖ、Ｉｗの前回の格納先であるバッファ７０３を記憶する。
【００５７】
このようにして、ＡＤコンバータ１１２Ａは、参照対象のバッファ７０２および前回の三相電流値Ｉｕ、Ｉｖ、Ｉｗの格納先のバッファ７０３以外のバッファ７０１を三相電流値Ｉｕ、Ｉｖ、Ｉｗの次の格納先として決定することができる。
【００５８】
一方、モータ温度推定部１１５Ａは、ＡＤコンバータ１１２Ａが格納した三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データを取得することで、三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データを常に参照できるようにする。そのために、モータ温度推定部１１５Ａは、ＡＤコンバータ１１２Ａがどのバッファに対して、三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データを格納したかを通知してもらう。このとき、ＡＤコンバータ１１２Ａは、データの格納先を異なるコアＡ１１、Ａ１３間の共有ＲＡＭデータとしてモータ温度推定部１１５Ａに通知する（７０４）。
【００５９】
しかし、以上の方法で三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性を保証しようとしても、割込みが発生して、処理遅延が発生すると、モータ温度推定部１１５Ａが参照中のバッファと同一バッファに対して、ＡＤコンバータ１１２Ａがデータを格納し、三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性が保証できない可能性がある。このため、モータ温度推定部１１５Ａがトリプルバッファを参照中は必ず、ＡＤコンバータ１１２Ａがトリプルバッファにデータを格納しないように制限する。
【００６０】
このようにＡＤコンバータ１１２Ａによるトリプルバッファへの格納を制限するには、ＡＤコンバータ１１２Ａは、モータ温度推定部１１５Ａがトリプルバッファを参照中かどうかを知らなければならない。このため、モータ温度推定部１１５Ａは、参照中フラグを異なるコアＡ１１、Ａ１３間の共有ＲＡＭデータとしてＡＤコンバータ１１２Ａに通知する（７０６）。ＡＤコンバータ１１２Ａは、参照中フラグを参照し、参照中フラグがＯＮの場合は必ずトリプルバッファに対して、データを格納しないようにすることで、トリプルバッファを使用した三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性を保証することができる。
【００６１】
図１１は、図１０の３つのバッファを用いたときの更新と参照の関係の一例を示すタイミングチャートである。
図１１において、図１０のＡＤコンバータ１１２Ａは、同時性を保証すべき三相電流値Ｉｕ、Ｉｖ、Ｉｗのうちの１６ビットのデータＩｕの更新８０１を時刻ｔ３１に実行し、１６ビットのデータＩｖの更新８０２を時刻ｔ３２に実行し、１６ビットのデータＩｗの更新８０３を時刻ｔ３３に実行したものとする。
【００６２】
次に、ＡＤコンバータ１１２Ａは、トリプルバッファのうち格納対象となるバッファを決定し、更新８０１〜８０３を実行した４８ビットのデータＩｕ、Ｉｖ、Ｉｗの格納８０４を時刻ｔ３４に実行する。
【００６３】
次に、モータ温度推定部１１５Ａは、トリプルバッファのうち最新のデータＩｕ、Ｉｖ、Ｉｗが格納されたバッファを参照先に設定し、データＩｕの参照８０８を時刻ｔ３５に実行し、データＩｖの参照８０９を時刻ｔ３６に実行し、データＩｗの参照８１０を時刻ｔ３７に実行する。
【００６４】
このとき、３つのデータＩｕ、Ｉｖ、Ｉｗの更新後に３つのデータＩｕ、Ｉｖ、Ｉｗがバッファに格納される。このため、モータ温度推定部１１５Ａは、バッファに格納された３つのデータＩｕ、Ｉｖ、Ｉｗを参照することにより、データＩｕの参照値８０５、データＩｖの参照値８０６およびデータＩｗの参照値８０７のいずれも更新された値とすることができ、モータ温度推定部１１５Ａで参照される三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性を保証することができる。
【００６５】
図１２は、図１０の３つのバッファを用いたときの三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新方法を示すフローチャートである。
図１２において、図１０のＡＤコンバータ１１２Ａは、モータ温度推定部１１５Ａが設定した参照中フラグを判定し（Ｓ３１）、参照中フラグがＯＮであれば処理を終了する。
【００６６】
一方、参照中フラグがＯＦＦの場合、ＡＤコンバータ１１２Ａは、モータ温度推定部１１５Ａが参照先として設定しているバッファと、三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データが格納されているバッファ以外のバッファを三相電流値Ｉｕ、Ｉｖ、Ｉｗの格納先として決定する（Ｓ３２）。
【００６７】
次に、ＡＤコンバータ１１２Ａは、三相電流値Ｉｕ、Ｉｖ、Ｉｗの格納先として決定したバッファに対して、三相電流値Ｉｕ、Ｉｖ、Ｉｗを格納し（Ｓ３３）、三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データの格納先を更新する（Ｓ３４）。
【００６８】
図１３は、図１０の３つのバッファを用いたときの三相電流値Ｉｕ、Ｉｖ、Ｉｗの参照方法を示すフローチャートである。
図１３において、図１０のモータ温度推定部１１５Ａは、参照中フラグをＯＮにする（Ｓ４１）。
【００６９】
次に、モータ温度推定部１１５Ａは、ＡＤコンバータ１１２Ａが設定した三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データが格納されているバッファを参照先に設定する（Ｓ４２）。
【００７０】
次に、モータ温度推定部１１５Ａは、参照中フラグをＯＦＦし（Ｓ４３）、参照先のバッファから三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データを取得する（Ｓ４４）。
【００７１】
ここで、参照中フラグのＯＮとＯＦＦの間に参照先を設定する処理を行うことによって、参照中フラグがＯＮ中は必ずＡＤコンバータ１１２Ａの格納処理が発生しないことから、参照先のバッファに対して三相電流値Ｉｕ、Ｉｖ、Ｉｗが格納されることはない。その後、モータ温度推定部１１５Ａは、参照先として設定されたバッファから三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データを参照する。以上の方法により、三相電流値Ｉｕ、Ｉｖ、Ｉｗの参照側であるモータ温度推定部１１５Ａは、同時性が保証された三相電流値Ｉｕ、Ｉｖ、Ｉｗを参照することができる。
【００７２】
上述した第２実施形態で示した参照中フラグを適用して同時性を保証する方法では、更新側の制御周期が参照側の制御周期よりも速い場合、参照中フラグを用いてデータ格納処理を制限することで同時性を保証している。
【００７３】
しかし、参照側の制御周期が更新側の制御周期よりも速い場合、データ参照処理に制限をかけなくてはならない。以下の第３実施形態では、参照側の制御周期が更新側の制御周期よりも速い場合のデータの同時性の保証方法について説明する。
【００７４】
図１４は、第３実施形態に係る電子制御装置の三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新側と参照側との間のデータの受け渡し方法を示すブロック図である。
図１４において、図８のマイコン１０９Ａは、３つのバッファ７１１〜７１３を備える。各バッファ７１１〜７１３のデータサイズは、４８ビットとすることができる。このとき、各バッファ７１１〜７１３は、４８ビットの三相電流値Ｉｕ、Ｉｖ、Ｉｗを保持することができる。
【００７５】
図８のマイコン１０９Ａは、ＡＤコンバータ１１２としてＡＤコンバータ１１２Ｂを備え、モータ温度推定部１１５としてモータ温度推定部１１５Ｂを備える。ＡＤコンバータ１１２ＢはコアＡ１１に割り当てられ、モータ温度推定部１１５ＢはコアＡ１３に割り当てられている。ＡＤコンバータ１１２Ｂは、三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新側として動作し、モータ温度推定部１１５Ｂは、三相電流値Ｉｕ、Ｉｖ、Ｉｗの参照側として動作する。三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新側と参照側のそれぞれは、３つのバッファ７１１〜７１３からそれぞれ任意に選択したいずれのバッファに対しても非同期にアクセス可能である。
【００７６】
ここで、３つのバッファ７１１〜７１３は、更新側から参照側への三相電流値Ｉｕ、Ｉｖ、Ｉｗの受け渡しに用いることができる。このとき、更新側が３つのバッファ７１１〜７０３から任意に選択したいずれかのバッファを更新しているときは、参照側は３つのバッファ７１１〜７１３のいずれも参照しないようにする。
【００７７】
例えば、ＡＤコンバータ１１２Ｂが、３つのバッファ７１１〜７１３から任意に選択したいずれかのバッファに三相電流値Ｉｕ、Ｉｖ、Ｉｗのデータを格納するものとする。また、３つのバッファ７１１〜７１３のうちのバッファ７１３に最新データが格納されており、モータ温度推定部１１５Ｂは参照処理を行っているものとする。
【００７８】
この第３実施形態は、参照中フラグを用いた制御方法以外は第２実施形態と同様の方法を用いることができる。ただし、参照側のモータ温度推定部１１５Ｂの制御周期の方が更新側のＡＤコンバータ１１２Ｂの制御周期よりも速いため、三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性を保証するには、ＡＤコンバータ１１２Bがトリプルバッファを更新中は必ず、モータ温度推定部１１５Ｂがトリプルバッファを参照しないように制限する。
【００７９】
このようにモータ温度推定部１１５Ｂによるトリプルバッファの参照を制限するには、モータ温度推定部１１５Ｂは、ＡＤコンバータ１１２Ｂがトリプルバッファを更新中かどうかを知らなければならない。このため、ＡＤコンバータ１１２Ｂは、更新中フラグを異なるコアＡ１１、Ａ１３間の共有ＲＡＭデータとしてモータ温度推定部１１５Ｂに通知する（７１６）。モータ温度推定部１１５Ｂは、更新中フラグを参照し、更新中フラグがＯＮの場合は必ずトリプルバッファに対して、データを参照しないようにすることで、トリプルバッファを使用した三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性を保証することができる。
【００８０】
図１５は、図１４の３つのバッファを用いたときの更新と参照の関係の一例を示すタイミングチャートである。
図１５において、図１４のＡＤコンバータ１１２Ｂは、同時性を保証すべき三相電流値Ｉｕ、Ｉｖ、Ｉｗのうちの１６ビットのデータＩｕの更新９０１を時刻ｔ４１に実行し、１６ビットのデータＩｖの更新９０２を時刻ｔ４２に実行し、１６ビットのデータＩｗの更新９０３を時刻ｔ４３に実行したものとする。
【００８１】
次に、ＡＤコンバータ１１２Ｂは、トリプルバッファのうち格納対象となるバッファを決定し、更新９０１〜９０３を実行した４８ビットのデータＩｕ、Ｉｖ、Ｉｗの格納９０４を時刻ｔ４４に実行する。
【００８２】
次に、モータ温度推定部１１５Ｂは、トリプルバッファのうち最新のデータＩｕ、Ｉｖ、Ｉｗが格納されたバッファを参照先に設定し、データＩｕの参照９０８を時刻ｔ４５に実行し、データＩｖの参照９０９を時刻ｔ４６に実行し、データＩｗの参照９１０を時刻ｔ４７に実行する。
【００８３】
このとき、３つのデータＩｕ、Ｉｖ、Ｉｗの更新後に３つのデータＩｕ、Ｉｖ、Ｉｗがバッファに格納される。このため、モータ温度推定部１１５Ｂは、バッファに格納された３つのデータＩｕ、Ｉｖ、Ｉｗを参照することにより、データＩｕの参照値９０５、データＩｖの参照値９０６およびデータＩｗの参照値９０７のいずれも更新された値とすることができ、モータ温度推定部１１５Ｂで参照される三相電流値Ｉｕ、Ｉｖ、Ｉｗの同時性を保証することができる。
【００８４】
図１６は、図１４の３つのバッファを用いたときの三相電流値Ｉｕ、Ｉｖ、Ｉｗの更新方法を示すフローチャートである。
図１６において、図１４のＡＤコンバータ１１２Ｂは、更新中フラグをＯＮにする（Ｓ５１）。
【００８５】
次に、ＡＤコンバータ１１２Ｂは、モータ温度推定部１１５Ｂが参照先として設定しているバッファと、三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データが格納されているバッファ以外のバッファを三相電流値Ｉｕ、Ｉｖ、Ｉｗの格納先として決定する（Ｓ５２）。
【００８６】
次に、ＡＤコンバータ１１２Ｂは、三相電流値Ｉｕ、Ｉｖ、Ｉｗの格納先として決定したバッファに対して、三相電流値Ｉｕ、Ｉｖ、Ｉｗを格納する（Ｓ５３）。
【００８７】
次に、ＡＤコンバータ１１２Ｂは、三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データの格納先を更新し（Ｓ５４）、更新中フラグをＯＦＦする（Ｓ５５）。
【００８８】
図１７は、図１４の３つのバッファを用いたときの三相電流値Ｉｕ、Ｉｖ、Ｉｗの参照方法を示すフローチャートである。
図１７において、図１４のモータ温度推定部１１５Ｂは、ＡＤコンバータ１１２Ｂが設定した更新中フラグを判定し（Ｓ６１）、更新中フラグがＯＮであれば処理を終了する。
【００８９】
一方、更新中フラグがＯＦＦの場合、モータ温度推定部１１５Ｂは、ＡＤコンバータ１１２Ｂが設定した三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データが格納されているバッファを参照先に設定する（Ｓ６２）。
【００９０】
次に、モータ温度推定部１１５Ｂは、参照先のバッファから三相電流値Ｉｕ、Ｉｖ、Ｉｗの最新データを取得する（Ｓ６３）。
【００９１】
図１８は、複数のデータの同時性の保証方法の使い分け方法を示すフローチャートである。
図６および図７に示すように、複数のデータを一つのデータに包括して参照する処理では、分岐先を決める判断処理がないが、トリプルバッファを用いる処理では、図１２および図１７に示すように、更新側または参照側において、分岐先を決める判断処理がある。このため、複数のデータを一つのデータに包括する処理の方が、トリプルバッファを用いる処理に比べて、処理負荷の増大の抑制効果が高い。
【００９２】
このため、図１８に示すように、同時性を保証すべき複数のデータのデータサイズの合計がマイコンで一度に扱えるデータサイズ以下の場合（Ｓ７１のＹＥＳ）、複数のデータを一つのデータに包括する処理を適用することで、データの同時性を保証する（Ｓ７２）。例えば、同時性を保証すべき複数のデータが電流指令値Ｉｄ＊、Ｉｑ＊である場合、図５および図６の処理を適用することができる。
【００９３】
一方、同時性を保証すべき複数のデータのデータサイズの合計がマイコンで一度に扱えるデータサイズより大きい場合（Ｓ７１のＮＯ）、同時性を保証すべき複数のデータを一つのデータに包括できないため、トリプルバッファを用いる処理を適用することで、データの同時性を保証する。
【００９４】
トリプルバッファを用いる処理では、更新側の制御周期の方が参照側の制御周期よりも速い場合（Ｓ７３のＹＥＳ）、更新側の処理を制限するトリプルバッファを使用した処理を適用する（Ｓ７４）。例えば、同時性を保証すべき複数のデータが三相電流値Ｉｕ、Ｉｖ、Ｉｗである場合、図１２および図１３の処理を適用することができる。
【００９５】
一方、参照側の制御周期の方が更新側の制御周期よりも速い場合（Ｓ７３のＮＯ）、参照側の処理を制限するトリプルバッファを使用した処理を適用する（Ｓ７５）。例えば、同時性を保証すべき複数のデータが三相電流値Ｉｕ、Ｉｖ、Ｉｗである場合、図１６および図１７の処理を適用することができる。
【００９６】
以上の実施形態では、２つのコアを用いたモータ制御について説明したが、同コアかつ異なる制御周期のタスク間のデータ群の同時性の保証にも適用が可能である。また、２つ以上のコアが存在するマルチコアマイコンで２コア間のデータの同時性の保証であれば、本発明は適用可能である。
【符号の説明】
【００９７】
１０１…モータ、１０２…インバータ回路、１０３…電流検出部、１０４…電流制御部、１０５…電流指令部、１０６…三相電圧変換部、１０７…回転位置検出部、１０８…モータ電流制御部、１０９…マイコン
【図１】
2020123127.tif 000003
【図２】
2020123127.tif 000004
【図３】
2020123127.tif 000005
【図４】
2020123127.tif 000006
【図５】
2020123127.tif 000007
【図６】
2020123127.tif 000008
【図７】
2020123127.tif 000009
【図８】
2020123127.tif 000010
【図９】
2020123127.tif 000011
【図１０】
2020123127.tif 000012
【図１１】
2020123127.tif 000013
【図１２】
2020123127.tif 000014
【図１３】
2020123127.tif 000015
【図１４】
2020123127.tif 000016
【図１５】
2020123127.tif 000017
【図１６】
2020123127.tif 000018
【図１７】
2020123127.tif 000019
【図１８】
2020123127.tif 000020