(57)【要約】【課題】  それぞれファームウェアが異なる２以上のプロセッサを備えるインバータ装置において、運用を維持しながらファームウェアプログラムの更新が可能にすること。【解決手段】  異なるファームウェアプログラムで動作する２つのプロセッサを備えるインバータ装置において、運用継続が要求される所定の制御処理を実行するプロセッサと、前記制御処理以外の処理を実行するプロセッサに機能分散し、ファームウェアプログラムの更新データを両プロセッサの記憶領域間で転送し、起動するプログラムの遷移を繰り返しながら両プロセッサの役割を交代させることで、前記制御処理を実行するプログラムの作動を継続しつつ、２種類のファームウェアとも更新する。【選択図】      図６
2016103114.tif 000002
【特許請求の範囲】
【請求項１】
所定の制御処理を実行する第１のプログラム又は前記制御処理以外の処理を実行する第２のプログラムのいずれかを格納する記憶領域を有する第１のプロセッサと、
前記第１のプロセッサと接続され、前記第１のプログラムを格納する記憶領域と、前記第２のプログラムを格納する記憶領域とを別個に有する第２のプロセッサと、
を具備するインバータ装置であって、
前記第１のプロセッサは、
外部機器から送信される第１のプログラム又は第２のプログラムの更新データを受信する通信手段と、
受信した前記更新データを記憶領域に格納してプログラムの更新処理を実行する更新手段と、
当該記憶領域に格納されたプログラムと、当該プログラムが第１のプログラムであるのかあるいは第２のプログラムであるのかを表す種類情報と、を前記第２のプロセッサへ送信する転送手段と、
を備え、
前記第２のプロセッサは、
受信した前記種類情報に基づいて格納すべき記憶領域を判定して、該記憶領域に受信したプログラムを格納するプログラム格納手段と、
前記種類情報に基づき、実行すべきプログラムを判定するプログラム選択手段と、
を備えることを特徴とするインバータ装置。
【請求項２】
所定の制御処理を実行する第１のプログラム又は前記制御処理以外の処理を実行する第２のプログラムのいずれかを格納する記憶領域を有する第１のプロセッサと、
前記第１のプロセッサと接続され、前記第１のプログラムを格納する記憶領域と、前記第２のプログラムを格納する記憶領域とを別個に有する第２のプロセッサと、
を具備し、
前記第１のプロセッサのメモリアドレス空間のデータを前記第２のプロセッサのメモリアドレス空間へ転送し、両プロセッサ間のデータ等価処理を実行するデータ等価手段を有するインバータ装置であって、
前記第１のプロセッサは、
外部機器から送信される第１のプログラム又は第２のプログラムの更新データを受信する通信手段と、
受信した前記更新データを記憶領域に格納してプログラムの更新処理を実行する更新手段と、
データを等価すべき第１のプロセッサのアドレス空間と第２のプロセッサのアドレス空間を対応付けた等価領域を保存する等価領域管理テーブルと、
外部機器から送信されるプログラムの種類に基づいて前記等価領域を設定する等価領域設定手段と、を備え、
前記データ等価手段は、前記等価領域に基づいてデータ等価処理を実行し、
前記第２のプロセッサは、前記等価領域に対応して実行すべきプログラムを選択することを特徴とするインバータ装置。
【請求項３】
前記等価領域管理テーブルは、さらにデータ等価処理を実行する回数を保存可能であって、等価領域がプログラムの記憶領域の場合は前記等価領域設定手段により回数１が設定され、
前記データ等価手段は、前記回数分のデータ等価処理が完了すると、前記等価領域管理テーブルの回数をリセットすることを特徴とする請求項２記載のインバータ装置。
【請求項４】
制御処理を実行する第１のプログラム又は制御処理以外の処理を実行する第２のプログラムを格納する記憶領域を有し、前記第１のプログラムが作動する第１のプロセッサと、
前記第１のプロセッサと接続し、前記第１のプログラムを格納する第１の記憶領域と、前記第２のプログラムを格納する第２の記憶領域とを有し、前記第２のプログラムが作動する第２のプロセッサと、
を具備するインバータ装置の前記第１のプログラム又は前記第２のプログラムを更新する方法であって、
前記第１のプロセッサの記憶領域に格納された前記第１のプログラムを、前記第２のプロセッサの前記第１の記憶領域に転送するステップと、
前記第１のプロセッサに格納された前記第１のプログラムの作動を停止し、前記第２のプロセッサの前記第１の記憶領域に格納された前記第１のプログラムを起動するステップと、
外部機器から受信した更新後の前記第２のプログラムを、前記第１のプロセッサの記憶領域に格納するステップと、
前記第１のプロセッサの記憶領域に格納された更新後の前記第２のプログラムを、前記第２のプロセッサの前記第２の記憶領域に転送するステップと、
外部機器から受信した更新後の前記第１のプログラムを、前記第１のプロセッサの記憶領域に格納するステップと、
前記第１のプロセッサの記憶領域に格納された更新後の前記第１のプログラムを起動し、前記第２のプロセッサの前記第１の記憶領域に格納された前記第１のプログラムの作動を停止し、前記第２のプロセッサの前記第２の記憶領域に格納された更新後の前記第２のプログラムを起動するステップと、
前記第１のプロセッサの記憶領域に格納された更新後の前記第１のプログラムを、前記第２のプロセッサの前記第１の記憶領域に転送するステップと、
を含むことを特徴とするインバータ装置のプログラムの更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、それぞれファームウェアが異なる２以上のプロセッサを有するインバータ装置におけるファームウェアプログラムの更新方法および同更新方法を備えるインバータ装置に関する。
【背景技術】
【０００２】
直流・交流の変換や周波数等の調整によりモータ等の制御を行うインバータ装置には、プロセッサに所定の動作をさせるためにファームウェアが組み込まれている。これらのファームウェアは、性能の向上や仕様の変更等に対応させるために定期または不定期に更新される。
【０００３】
従来のインバータ装置におけるファームウェアの更新では、ＲＯＭライターを使用してプロセッサの不揮発性メモリにデータを書き込んでいたため、運用中のインバータ装置の電源を切ってから書き込みを行う必要があった。
【０００４】
そのため、プロセッサにあらかじめファームウェアの更新機能を備えるインバータ装置も開発されているが、更新後にはプロセッサのリブート（初期化）をしなければならないので、その際に運用を停止する必要があった。
【０００５】
関連する技術として、例えば特許文献１には、２箇所に備えられるファームウェアについて一括して更新データを受信し、人手で変更操作を行うことなくファームウェア更新モードに移行し、２箇所のファームウェアの更新処理を実行する電子機器及び電子機器におけるファームウェア更新方法が提案されている。
【０００６】
また、特許文献２には、ホストＩ／Ｆ制御部の設定変更によりコマンド受信メモリアドレスを切り替えることを可能とすることにより、転送先切り替え用のスイッチやＣＰＵの動作状況を管理するための共有メモリを必要とせず、ホストからのコマンドを異常終了させずにファームウェア更新を実現することを可能にするディスク制御装置およびファームウェアの更新方法が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２８２０９０号公報
【特許文献２】特開２０１０−１１７９７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来の技術では、インバータ装置が周辺機器との連携によりシステム化して、複数のモータ等の監視制御に用いられるような場合に、ファームウェア更新のためにインバータ装置の運用を停止させると、他の周辺機器もしくは上位に接続する監視機器が、インバータ装置の異常と誤認してしまうおそれがある。
【０００９】
たとえば図１２に示すシステムでは、複数のモータ９６をそれぞれ制御するインバータ装置９９と、各インバータ装置のシーケンス制御を行うコントローラ（ＰＬＣ：プログラマブルロジックコントローラ）９８と、これら複数のインバータ装置９９の監視を行う監視装置や表示装置等の上位の外部機器（パーソナルコンピュータ、ワークステーション）９７が接続された構成となっており、いずれかのインバータ装置９９の運用が停止されると、監視を行う外部機器９７が異常を検知するおそれがある。
【００１０】
このような事態を回避するためには、インバータ装置９９においてモータ９６を制御する上で必要な機能についてはその動作を中断させることなく運用を継続し、並行してファームウェアの更新を行う必要がある。
【００１１】
しかしながら、たとえば特許文献１の技術では、ファームウェアの更新時に機器の動作を制御するコントローラへの通信を停止することから、装置の運用を継続するものではない。また、特許文献２の技術では、ファームウェア更新完了後のＣＰＵのリブート（再起動）により装置の動作が一旦停止するので運用が中断される。
【００１２】
本発明はかかる従来の事情に対処してなされたものであり、それぞれファームウェアが異なる２以上のプロセッサを備えるインバータ装置であって、運用を継続させながらファームウェアプログラムの更新が可能なインバータ装置及びインバータ装置におけるファームウェアプログラムの更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明に係るインバータ装置は、所定の制御処理を実行する第１のプログラム又は前記制御処理以外の処理を実行する第２のプログラムのいずれかを格納する記憶領域を有する第１のプロセッサと、前記第１のプロセッサと接続され、前記第１のプログラムを格納する記憶領域と、前記第２のプログラムを格納する記憶領域とを別個に有する第２のプロセッサと、を具備するインバータ装置であって、
前記第１のプロセッサは、外部機器から送信される第１のプログラム又は第２のプログラムの更新データを受信する通信手段と、受信した前記更新データを記憶領域に格納してプログラムの更新処理を実行する更新手段と、当該記憶領域に格納されたプログラムと、当該プログラムが第１のプログラムであるのかあるいは第２のプログラムであるのかを表す種類情報と、を前記第２のプロセッサへ送信する転送手段と、を備え、
前記第２のプロセッサは、受信した前記種類情報に基づいて格納すべき記憶領域を判定して、該記憶領域に受信したプログラムを格納するプログラム格納手段と、前記種類情報に基づき、実行すべきプログラムを判定するプログラム選択手段と、を備えることを特徴とする。
【００１４】
なお、インバータ装置と外部機器とは直接１対１で接続しても良いし、ネットワークを介して接続するようにしても良い。
【００１５】
本発明では、負荷の継続運用に必要な制御処理を実行するプログラム（第１のプログラム）と、そのプログラムを実行するプロセッサ（第１のプロセッサ）、および、比較的長周期の監視処理など前記制御処理以外の処理を実行するプログラム（第２のプログラム）と、そのプログラムを実行させるプロセッサ（第２のプロセッサ）とを予め機能分けしてインバータ装置を構築する。そして、プログラムの更新時は、そのプログラムとプロセッサとの関連付けを変更して、継続運用の必要な制御処理については２つのプロセッサ間で処理を引継ぎながら各プログラムの更新を行う。
【００１６】
また、外部機器と繋がりプログラムの更新データを受信する第１のプロセッサには第１のプログラム又は第２のプログラムのいずれかを格納する記憶領域を備え、第１のプロセッサから転送される更新プログラムを受信する第２のプロセッサには第１のプログラムを格納する記憶領域（第１の記憶領域）と、第２のプログラムを格納する記憶領域（第２の記憶領域）を備える。これにより、第２のプロセッサのみに第１のプログラムおよび第２のプログラムの両方を格納する記憶領域を設ければよく、第１のプロセッサの記憶領域は第１のプログラム又は第２のプログラムのいずれか一方を格納することになるので、第１のプロセッサの記憶領域を節約することができる。
【００１７】
また、本発明に係るインバータ装置は、所定の制御処理を実行する第１のプログラム又は前記制御処理以外の処理を実行する第２のプログラムのいずれかを格納する記憶領域を有する第１のプロセッサと、前記第１のプロセッサと接続され、前記第１のプログラムを格納する記憶領域と、前記第２のプログラムを格納する記憶領域とを別個に有する第２のプロセッサと、を具備し、前記第１のプロセッサのメモリアドレス空間のデータを前記第２のプロセッサのメモリアドレス空間へ転送し、両プロセッサ間のデータ等価処理を実行するデータ等価手段を有するインバータ装置であって、
前記第１のプロセッサは、外部機器から送信される第１のプログラム又は第２のプログラムの更新データを受信する通信手段と、受信した前記更新データを記憶領域に格納してプログラムの更新処理を実行する更新手段と、データを等価すべき第１のプロセッサのアドレス空間と第２のプロセッサのアドレス空間を対応付けた等価領域を保存する等価領域管理テーブルと、外部機器から送信されるプログラムの種類に基づいて前記等価領域を設定する等価領域設定手段と、を備え、
前記データ等価手段は、前記等価領域に基づいてデータ等価処理を実行し、
前記第２のプロセッサは、前記等価領域に対応して実行すべきプログラムを選択することを特徴とする。
【００１８】
本発明では、２つのプロセッサ間で運用時に制御や監視のためのデータを等価するメモリ空間に、プログラム記憶領域のメモリ空間も加えて等価処理を行う。これによりマルチプロセッサ構成の際に通常備えるデータ等価処理の機能を利用してプログラムの更新を効率よく行うことができる。
【００１９】
好ましくは、等価処理の周期あるいは回数を設定できるようにすると良い。例えば、制御に必要なデータは短い周期で継続的に等価処理を行い、プログラムの更新は長周期で１回のみ行うようにすれば、運用に支障を来たすことなくプログラムを更新することができる。
【００２０】
さらに、本発明に係るインバータ装置のプログラムの更新方法は、制御処理を実行する第１のプログラム又は負荷の制御処理以外の処理を実行する第２のプログラムを格納する記憶領域を有し、前記第１のプログラムが作動する第１のプロセッサと、前記第１のプロセッサと接続し、前記第１のプログラムを格納する第１の記憶領域と、前記第２のプログラムを格納する第２の記憶領域とを有し、前記第２のプログラムが作動する第２のプロセッサと、を具備するインバータ装置の前記第１のプログラム又は前記第２のプログラムを更新する方法であって、
前記第１のプロセッサの記憶領域に格納された前記第１のプログラムを、前記第２のプロセッサの前記第１の記憶領域に転送するステップと、前記第１のプロセッサに格納された前記第１のプログラムの作動を停止し、前記第２のプロセッサの前記第１の記憶領域に格納された前記第１のプログラムを起動するステップと、外部機器から受信した更新後の前記第２のプログラムを、前記第１のプロセッサの記憶領域に格納するステップと、
前記第１のプロセッサの記憶領域に格納された更新後の前記第２のプログラムを、前記第２のプロセッサの前記第２の記憶領域に転送するステップと、外部機器から受信した更新後の前記第１のプログラムを、前記第１のプロセッサの記憶領域に格納するステップと、前記第１のプロセッサの記憶領域に格納された更新後の前記第１のプログラムを起動し、前記第２のプロセッサの前記第１の記憶領域に格納された前記第１のプログラムの作動を停止し、前記第２のプロセッサの前記第２の記憶領域に格納された更新後の前記第２のプログラムを起動するステップと、前記第１のプロセッサの記憶領域に格納された更新後の前記第１のプログラムを、前記第２のプロセッサの前記第１の記憶領域に転送するステップと、を含むことを特徴とする。
【００２１】
本発明では、異なるファームウェアプログラムで動作する２つのプロセッサを備えるインバータ装置において、ファームウェアプログラムの更新データを、２つのプロセッサの記憶領域間の転送と、起動するプログラムの遷移を繰り返すことで、負荷の制御処理を実行するプログラム（第１のプログラム）の作動を継続しつつ、２種類のファームウェアとも更新することができる。
【発明の効果】
【００２２】
以上のごとく、本発明によれば、それぞれプログラムが異なる少なくとも２つのプロセッサを備えるインバータ装置において、重要な処理について運用を停止させることなくプログラムを更新することが可能になる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施の形態に係るインバータ装置および周辺機器のシステム構成図である。
【図２】図１の不揮発性メモリ２４，３４のメモリマップである。
【図３】図１のインバータ装置のソフトウェアの機能ブロック図である。
【図４】本発明の第１の実施の形態に係るインバータ装置において、ファームウェアを更新する際の不揮発性メモリのプログラム格納状態、実行動作の前半の流れの説明図である。
【図５】本発明の第１の実施の形態に係るインバータ装置において、ファームウェアを更新する際の不揮発性メモリのプログラム格納状態、実行動作の後半の流れの説明図である。
【図６】本発明の第１の実施の形態に係るインバータ装置において、ファームウェアの更新の詳細動作を示すフローチャートである。
【図７】図３のプログラム格納手段の処理手順を示すフローチャートである。
【図８】図３のプログラム選択手段の処理手順を示すフローチャートである。
【図９】本発明の第２の実施の形態に係るインバータ装置のソフトウェアの機能ブロック図である。
【図１０】図９のインバータ装置において、ファームウェアの更新の詳細動作を示すフローチャートである。
【図１１】図９の等価領域管理テーブルのデータ構成図である。
【図１２】上位の外部機器により複数のインバータ装置を管理するシステムの構成図である。
【発明を実施するための形態】
【００２４】
［第１の実施の形態］
以下、本発明のインバータ装置及びインバータ装置のプログラムの更新方法に係る第１の実施の形態を説明する。
【００２５】
図１は、本実施の形態に係るインバータ装置１の全体構成を説明する図である。インバータ装置１は、基本制御を行うマスタープロセッサ２と、応用処理を行うスレーブプロセッサ３で構成されており、それぞれのプロセッサに組み込まれたファームウェアにより、モータ制御切替部４を介してモータ等の負荷７の負荷を制御する。ここで「基本制御」とは、継続運転が要求される処理であって、具体的には負荷の制御処理を意味する。また、「応用処理」とは前記制御処理以外の処理を意味し、例えば比較的長周期の自己診断や監視処理などが含まれる。
【００２６】
また、インバータ装置１は、シリアル通信６を介してパーソナルコンピュータ等の外部機器８と接続する。外部機器８では、操作オペレータ等によりインバータ装置１の監視を行い、それぞれのプロセッサに組み込まれたファームウェアのプログラム更新データを生成してインバータ装置１のマスタープロセッサ２へ送信する。すなわち、スレーブプロセッサ３のファームウェアの更新プログラムであっても、一旦、マスタープロセッサ２の記憶領域に格納された後で、スレーブプロセッサ３のファームウェアを更新するのが本実施形態の特徴の一つである。
【００２７】
このインバータ装置１のマスタープロセッサ２，スレーブプロセッサ３には、それぞれ演算処理を行うＣＰＵ２１，３１、シリアル通信５を介して相互のプロセッサ間の通信を行うシリアルＩ／Ｆ（シリアル通信インタフェース）２２−２，３２、収集した監視データ等を一時的に記憶する揮発性メモリ２３，３３、オペレーティングシステム（ＯＳ）やファームウェア等のプログラムを記憶する不揮発性メモリ２４，３４、モータ制御切替部４に制御指令等を出力するＩ／Ｏ出力２５，３５等を備えている。また、マスタープロセッサ２は、さらにシリアル通信６を介して外部機器８との通信を行うシリアルＩ／Ｆ２２−１を有する。揮発性メモリ２３，３３としてはＲＡＭを使用することができ、不揮発性メモリ２４，３４としてはＲＯＭ（Ｅ２ＰＲＯＭ、フラッシュメモリ等を含む。）を使用することができる。
【００２８】
上述したように、外部機器８（パーソナルコンピュータ等）は、インバータ装置１のマスタープロセッサ２およびスレーブプロセッサ３のファームウェアを更新するプログラム更新データを生成して、インバータ装置１に送信する。インバータ装置１のマスタープロセッサ２は、外部機器８から送信されたプログラム更新データを受信して、さらにスレーブプロセッサ３へ転送する。これにより、外部機器８から送信されたプログラム更新データは、各プロセッサ２，３が備える不揮発性メモリ２４，３４の所定の領域に格納される。
【００２９】
図２は、本実施形態に係るインバータ装置１の各プロセッサが備える不揮発性メモリ２４，３４におけるプログラム格納状態を説明するメモリマップである。プログラムの種類ごとに格納領域が決まっている。
【００３０】
例えば、図２では何れのプロセッサとも、0x00000000番地〜0x00010000番地（0x00000000以上、0x00010000未満のアドレス範囲を意味する。以下同様）にはオペレーティングシステム（ＯＳ）が格納され、0x00010000番地〜0x00015000番地はシリアル通信などの更新管理プログラムが格納され、また0x00015000番地〜0x00020000番地には後述するマスター制御プログラムやスレーブ制御プロプログラムなどの実行を管理する実行管理プログラムが格納されている。
【００３１】
また、マスタープロセッサ２側の不揮発性メモリ２４では、0x00020000番地〜0x00040000番地は、マスタープロセッサ２またはスレーブプロセッサ３の制御プログラムが格納される領域として割り当てられている。なお、マスタープロセッサ２は、通常は基本制御を行うので、デフォルトでは基本制御を行うプログラムであるマスター制御プログラムが格納される。
【００３２】
一方、スレーブプロセッサ３側の不揮発性メモリ３４では、0x00020000番地〜0x00040000番地は、スレーブプロセッサ３の制御プログラム（以下、「スレーブ制御プログラム」という。）が格納される領域（第２の記憶領域）として割り当てられ、0x00040000番地〜0x00060000番地は、マスタープロセッサ２の制御プログラム（以下、「マスター制御プログラム」という。）が格納される領域（第１の記憶領域）として割り当てられている。
【００３３】
ここで、「更新管理プログラム」は、外部機器８や相互のプロセッサ間のシリアル通信５の送受信を行う機能や、同期をとるためのメッセージ通知機能、ファームウェアを不揮発性メモリ２４，３４に書き込む機能等を実現する。
【００３４】
「実行管理プログラム」とは、ファームウェア、即ちマスター制御プログラムやスレーブ制御プログラムを実行させるプログラムであるが、他にも更新するファームウェアの種類によって、自局のプロセッサの動作を判断する機能等も実現する。
【００３５】
なお、本実施形態のインバータ装置１では、不揮発性メモリ２４，３４とも、0x00000000番地〜0x00020000番地の領域はＲＯＭライターでの書き込みが可能なＵＶ−ＥＰＲＯＭ等の記憶媒体とし、0x00020000番地以降の領域は、プログラムの記憶領域に対応したセクタ単位でＣＰＵから書き込み可能なフラッシュメモリ等を用いるのが好ましい。
【００３６】
図３は、本実施形態のインバータ装置１におけるソフトウェアの機能ブロック図である。それぞれのプログラムは、図２に示すメモリマップの各領域に格納されている。なお、オペレーティングシステム（ＯＳ）等のデータも格納するが図３では省略している。
【００３７】
前述したようにマスタープロセッサ２の不揮発性メモリ２４には、更新管理プログラム２４１、実行管理プログラム２４５、マスター／スレーブ制御プログラム２４６等が格納されている。ここでマスター／制御プログラムとは、マスター制御プログラムまたはスレーブ制御プログラムのいずれか一方を意味する。
【００３８】
図３において、マスタープロセッサ２の更新管理プログラム２４１は、シリアルＩ／Ｆ部（通信手段）２４２、ファームウェア更新手段２４３、転送手段２４４等として機能する。
【００３９】
また、スレーブプロセッサ３の不揮発性メモリ３４には、更新管理プログラム３４１、実行管理プログラム３４６、マスター制御プログラム３４７、スレーブ制御プログラム３４８等が格納されている。
【００４０】
スレーブプロセッサ３の更新管理プログラム３４１は、シリアルＩ／Ｆ部（通信手段）３４２、ファームウェア更新手段３４３、プログラム格納手段３４４等として機能し、実行管理プログラム３４６は、プログラム選択手段３４９等として機能する。
【００４１】
次に、制御プログラム更新時の概略手順を説明する。
図４，図５は、本実施形態のインバータ装置１及びインバータ装置１におけるファームウェアプログラムの更新方法において、マスター制御プログラムとスレーブ制御プログラムの二つのファームウェアを更新する際の、不揮発性メモリのプログラム格納状態及び実行動作の流れの説明図である。一連の更新手順において図４は前半部分を図５は後半部分を示している。
【００４２】
図４のメモリマップに示すように、マスタープロセッサ２の不揮発性メモリ２４における制御プログラムを格納する記憶領域は一つであり、通常の状態では、基本制御を行うために動作するマスター制御プログラムが格納され、実行管理プログラム２４５によって実行されている（ＭＡ１）。
【００４３】
スレーブプロセッサ３の不揮発性メモリ３４における制御プログラムを格納する記憶領域は二つであり、通常状態では第２の記憶領域にスレーブ制御プログラムが格納され、実行管理プログラム３４６によって実行されている。
【００４４】
プログラムの更新が行われる場合には、まず外部機器８から更新開始の通知がインバータ装置１のマスタープロセッサ２に送信される。なお、更新プログラムは外部機器８からシリアル通信６によって直接マスタープロセッサ２に送信しても良いし、コントローラを仲介させて間接的に送信するようにしても良い。
【００４５】
マスタープロセッサ２は更新開始の通知を受信すると、不揮発性メモリ２４に格納されているマスター制御プログラムのデータ（実行オブジェクト）をシリアル通信５を介してスレーブプロセッサ３へ送信する。スレーブプロセッサ３は、マスタープロセッサ２から送信されるマスター制御プログラムのデータを受信すると、第１の記憶領域に格納する（ＳＡ１）。
【００４６】
次に、スレーブプロセッサ３は、スレーブ制御プログラムを停止すると共に、不揮発性メモリ３４の第１の記憶領域に格納したマスター制御プログラムのモードで起動する（ＳＡ２）。このとき、スレーブプロセッサ３でのマスター制御プログラムの開始とマスタープロセッサ２でのマスター制御プログラムの停止のタイミングを同期させる。例えば、マスタープロセッサ２からマスター制御プログラム停止時のプログラム実行アドレスの次のアドレスをスレーブプロセッサ３へ送信し、スレーブプロセッサ３では、受信した実行アドレスからマスター制御プログラムの動作を開始するようにしても良い。
【００４７】
上述のごとく、マスター制御プログラムは、本来マスタープロセッサ２を制御するためのプログラムであるが、スレーブプロセッサ３についても、マスター制御プログラムの動作モードで起動することができる。また、スレーブ制御プログラムは、本来スレーブプロセッサ３を制御するためのプログラムであるが、マスタープロセッサ２についても、スレーブ制御プログラムの動作モードで起動することができる。
【００４８】
なお、スレーブ制御プログラムは、モータ等の負荷７の制御処理（すなわち継続運転が要求される処理）以外の処理を行うプログラムなので、一時的に停止をしても、インバータ装置１の全体の運用には支障がない。
【００４９】
次に外部機器８は、マスタープロセッサ２へ更新用のスレーブ制御プログラム（以下、単に「新スレーブ制御プログラム」と言う。）を送信する。マスタープロセッサ２は、新スレーブ制御プログラムを受信すると、記憶領域に上書きする（ＭＡ２）。このとき、マスタープロセッサ２では実行管理プログラム２４５によって記憶領域に格納されている制御プログラムの作動は停止状態になっている。
【００５０】
マスタープロセッサ２の記憶領域への新スレーブ制御プログラムの上書きが完了すると、新スレーブ制御プログラムのモードで起動する。またマスタープロセッサ２は記憶領域に格納されている新スレーブ制御プログラムをスレーブプロセッサ３へ転送する（ＭＡ３）。
【００５１】
一方、スレーブプロセッサ３は、第１の記憶領域に格納されているマスター制御プログラムのモードで動作中であるが、マスタープロセッサ２から送られてくる新スレーブプログラムのデータを受信すると第２の記憶領域へ格納する（ＳＡ３）。なお、制御プログラムの種別（マスターかスレーブか）については、制御プログラムのデータを転送する際に予め種別の識別情報を送信することによって受信側でどの制御プログラムを受信したかを認識できるようにしておく。
【００５２】
ステップＭＡ４及びステップＳＡ４は、新スレーブ制御プログラムの転送が完了した状態を示している。
【００５３】
次に、図５を用いて、制御プログラムの更新手順の続きを説明する。なお、図５は、上記ステップＭＡ４及びステップＳＡ４からの手順を示している。
【００５４】
ステップＭＡ４及びステップＳＡ４の状態において、マスタープロセッサ２は、外部機器８から更新用のマスター制御プログラム（以下、単に「新マスター制御プログラム」と言う。）を受信すると、それまで動作中であった新スレーブ制御プログラムを停止し、受信した新マスター制御プログラムを記憶領域に上書きする（ＭＡ５）。このとき、スレーブプロセッサ３では、ステップＳＡ４の状態が継続しており、マスター制御プログラムのモードで動作中である（ＳＡ５）。
【００５５】
マスタープロセッサ２は記憶領域への新マスター制御プログラムの上書きが完了すると、新マスター制御プログラムのモードで動作を開始する（ＭＡ６）。このとき、スレーブプロセッサ３では、上記ステップＳＡ２で説明した同期処理と同様の処理によってマスター制御プログラムの動作を停止させると共に、第２の記憶領域に格納された新スレーブ制御プログラムのモードで起動する。
【００５６】
さらにマスタープロセッサ２は記憶領域に格納されている新マスター制御プログラムをスレーブプロセッサ３へ転送する。スレーブプロセッサ３は、この新マスター制御プログラムを受信すると停止中である第１の記憶領域へ上書きする（ＳＡ６）。
【００５７】
ステップＭＡ７及びステップＳＡ７は、転送が完了した状態を示している。以上の手順により、マスター制御プログラム、スレーブ制御プログラムとも、更新されたプログラムとなっている。
【００５８】
図６は、本実施形態のインバータ装置及びインバータ装置におけるファームウェアプログラムの更新方法において、ファームウェアを更新する際の詳細動作を示すフローチャートである。
【００５９】
はじめに、パーソナルコンピュータ等の外部機器８において、ファームウェアの更新プログラムが生成される（Ｓ１０１）。ここで、通常においてファームウェアの更新プログラムは、マスター制御プログラムとスレーブ制御プログラムの双方を対象として生成される。
【００６０】
外部機器８は、ファームウェアの更新プログラムを生成すると、シリアル通信６を介してインバータ装置１のマスタープロセッサ２に、プログラム更新指令を送信する（Ｓ１０２）。
【００６１】
マスタープロセッサ２のシリアルＩ／Ｆ部（通信手段）２４２は、プログラム更新指令を受信すると、更新管理プログラム２４１の転送手段２４４を起動して（Ｓ１０３）、マスタープロセッサ２の不揮発性メモリ２４が備える記憶領域のマスター制御プログラムのデータを、プログラムの種類等の情報を含むプログラム転送通知(メッセージ)とともに、スレーブプロセッサ３の不揮発性メモリ３４が備えるシリアルＩ／Ｆ部（通信手段）３４２に転送する（Ｓ１０４）。ここでの転送処理は、マスタープロセッサ２とスレーブプロセッサ３とを接続するシリアル通信５を用いて行う。
【００６２】
スレーブプロセッサ３では、マスタープロセッサ２からのデータの転送を受けると、所定の記憶領域に格納する（Ｓ１０５）。
【００６３】
ここで、Ｓ１０５での動作については、図７のフローチャートを用いて説明する。
スレーブプロセッサ３では、マスタープロセッサ２からプログラムが転送されると（Ｓ２０１）、プログラム格納手段３４４を起動して、プログラムがマスター制御プログラムかスレーブ制御プログラムかを判定する（Ｓ２０２）。具体的には、マスタープロセッサ２の転送手段２４４から送信されるプログラム転送通知(メッセージ)に含まれるプログラムの種類の情報を参照する。
【００６４】
プログラム格納手段３４４は、判定の結果、マスター制御プログラムである場合には（Ｓ２０２において「マスター」）、マスター制御プログラムの記憶領域である第１の記憶領域にプログラムを書き込む（Ｓ２０３）。一方、スレーブ制御プログラムである場合には（Ｓ２０２において「スレーブ」）、スレーブ制御プログラムの記憶領域である第２の記憶領域にプログラムを書き込む（Ｓ２０４）。
【００６５】
なお、ここではマスター制御プログラムなので、第１の記憶領域に格納される。この時点のメモリマップは図４のＭＡ１，ＳＡ１の状態になっている。
【００６６】
図６に戻り、Ｓ１０５以降の流れを説明する。
スレーブプロセッサ３のプログラム格納手段３４４は、プログラムの書き込みが完了すると、転送完了通知を生成して、シリアル通信５を介してマスタープロセッサ２に送信する（Ｓ１０６）とともに、スレーブプロセッサ３の実行管理プログラム３４６を起動して、スレーブプロセッサ動作モードからマスタープロセッサ動作モードに遷移する（Ｓ１０８）。
【００６７】
一方、マスタープロセッサ２の実行管理プログラム２４５は、転送完了通知の受信を受けてマスタープロセッサ動作モードでの動作を停止する（Ｓ１０７）。
【００６８】
次に、マスタープロセッサ２では、外部機器８から更新プログラムが送信されると（Ｓ１０９）、更新手段２４３を起動して、マスタープロセッサ２の記憶領域に書き込みを行う（Ｓ１１０）。
【００６９】
マスタープロセッサ２の更新手段２４３は、更新プログラムの書き込みの完了を受けて、プログラムの種類等の情報を含む更新完了通知（メッセージ）とともに、書き込まれた更新プログラムをスレーブプロセッサ３に転送して（Ｓ１１１）、更新されたプログラムの動作モードで起動する（Ｓ１１２）。
【００７０】
更新プログラムの転送を受けたスレーブプロセッサ３では、プログラム選択手段３４９が起動して、更新完了通知を参照して受信した更新プログラムの種類を判定し、所定の動作モードに遷移する（Ｓ１１３）。
【００７１】
ここで、ステップＳ１１３での動作については、図８のフローチャートを用いて説明する。スレーブプロセッサ３では、マスタープロセッサ２から更新プログラムが転送されると（Ｓ３０１）、プログラム選択手段３４９を起動して、プログラムがマスター制御プログラムかスレーブ制御プログラムかを判定する（Ｓ３０２）。具体的には、マスタープロセッサ２の転送手段２４４から送信される更新完了通知に含まれるプログラムの種類の情報を参照する。
【００７２】
プログラム選択手段３４９は、判定の結果、マスター制御プログラムである場合には（Ｓ３０２において「マスター」）、スレーブ制御プログラムを起動してスレーブプロセッサ動作モードに遷移する（Ｓ３０３）。一方、スレーブ制御プログラムである場合には（Ｓ３０２において「スレーブ」）、マスター制御プログラムを起動してマスタープロセッサ動作モードに遷移する（Ｓ３０４）。
【００７３】
なお、ここではマスター制御プログラムなので、スレーブ制御プログラムの動作モードで起動する。この時点のメモリマップは図４のＭＡ４，ＳＡ４の状態になっている。
【００７４】
これにより、図６のフローチャートにおける動作は完了する。なお、図６は、図４，図５で示す不揮発性メモリのプログラム格納状態及び実行動作の流れのうち、前半である図４のフローを説明するものであるが、後半である図５においてファームウェアを更新する際の詳細動作も同様の手順になる。
【００７５】
以上のように、本実施形態のインバータ装置及びインバータ装置におけるファームウェアプログラムの更新方法によれば、インバータ装置の運用を継続しつつ、並行してファームウェアの更新を行うことができる。また、記憶領域を遷移させながらプログラム更新を行っているので、マスタープロセッサ２の記憶領域はマスター制御プログラム又はスレーブ制御プログラムのいずれか一方のみを格納すればよいので、マスタープロセッサ２におけるメモリを節約することができる。
【００７６】
［第２の実施の形態］
次に、本発明のインバータ装置及びインバータ装置のプログラムの更新方法に係る第２の実施の形態について説明する。
【００７７】
図９に示すように、本実施形態では、マスタープロセッサ２の更新管理プログラム２４１に等価領域設定手段２４７，等価領域管理テーブル２３１を追加し、さらにマスタープロセッサ２の不揮発性メモリ２４と、スレーブプロセッサ３の不揮発性メモリ３４に、データ等価手段２４０，３４０をそれぞれ追加した点が第１の実施の形態と異なっている。
【００７８】
ここでデータ等価手段２４０，３４０は、マスタープロセッサ２とスレーブプロセッサ３との間で同じデータを共有するために、両プロセッサの所定のメモリ空間のデータを一定の周期で等価する処理を実行する。通常データ等価の対象となるメモリ空間は揮発性メモリ（ＲＡＭ）上に取られるが、本実施の形態では、不揮発性メモリの制御プログラム記憶領域もデータ等価の対象にしている。なおデータ等価処理自体は、例えば特開２００９−０９３３９２号公報に記載されているような従来技術を用いることができる。
【００７９】
等価領域管理テーブル２３１には、マスタープロセッサ２とスレーブプロセッサ３との間で等価すべきメモリ空間の対応関係が保存されており、データ等価手段２４０、３４０はこの対応関係に基づいてデータ等価処理を実行する。また、制御プログラムの更新時は、マスタープロセッサ２の等価領域設定手段２４７がこの等価領域管理テーブル２３１の等価すべき制御プログラム記憶領域の対応関係を書き換える。
【００８０】
具体的には、図１０のフローチャートに沿って説明する。なお、第１の実施形態において処理手順を説明した図６と同じ部分については説明を省略する。
【００８１】
はじめに、外部機器８はファームウェアの更新プログラムを生成して（Ｓ４０１）、インバータ装置１のマスタープロセッサ２にプログラム更新指令を送信する（Ｓ４０２）。
【００８２】
マスタープロセッサ２では、プログラム更新指令を受けて等価領域設定手段２４７が起動し（Ｓ４０３）、プログラム更新指令に基づいて等価領域管理テーブル２３１に転送すべきアドレス空間を設定する（Ｓ４０４）。
【００８３】
図１１は等価領域管理テーブル２３１の構成例である。等価領域管理テーブル２３１では、等価の方向や転送すべきプログラムの種類等により、等価の対象となるデータのメモリアドレスを管理する。
【００８４】
等価領域設定手段２４７は、外部機器８からプログラム更新開始の通知を受けたときは、転送元アドレスとして、マスタープロセッサ２の記憶領域のアドレス空間（0x00020000番地〜0x00040000番地）を設定し、また転送先アドレスとして、スレーブプロセッサ３の第１の記憶領域（0x00040000番地〜0x00060000番地）を設定する。すると、マスタープロセッサ２のデータ等価手段２４０は、転送先アドレス情報と共に、転送元アドレスに格納されているデータ（制御プログラムのデータ）をスレーブプロセッサ３へ送信する。スレーブプロセッサ３のデータ等価手段３４０は、マスタープロセッサ２から送られてくるデータを受信すると、受信データに含まれている転送先アドレス情報に基づいて、そのアドレスへ受信したデータを書き込む（Ｓ４０５）。
【００８５】
以上の処理によって、プログラム更新開始の際に、マスタープロセッサ２のマスター制御プログラムをスレーブプロセッサ３の第１の記憶領域に退避させることができる。
【００８６】
データ等価処理対象の全アドレス空間の等価処理の完了により、マスタープロセッサ２は、マスター制御プログラムの動作を停止させ（Ｓ４０６）、一方スレーブプロセッサ３は、マスター制御プログラムを起動してマスタープロセッサ動作モードへ遷移する（Ｓ４０７）。このとき両プロセッサのプログラムの停止、起動のタイミングは、図６のステップＳ１０６と同様にデータ等価手段３４０からデータ等価手段２４０へデータ等価処理完了の通知によって同期させることができる。
【００８７】
外部機器８から更新プログラムが送られてくると（Ｓ４０８）、マスタープロセッサ２の等価領域設定手段２４７は、更新プログラムの種類によって転送先の判定を行う。
【００８８】
等価領域設定手段２４７は、外部機器８から送られてきた更新プログラムの種類がスレーブ制御プログラムの場合は、等価領域管理テーブル２３１の転送先アドレス範囲を（0x00020000番地〜0x00040000番地）に設定し、更新プログラムの種類がマスター制御プログラムの場合は、転送先アドレス範囲を（0x00040000番地〜0x00060000番地）に設定する。なお、転送元アドレス範囲は、マスタープロセッサ２のマスター／スレーブ制御プログラム領域である（0x00020000番地〜0x00040000番地）が設定される。また、等価領域管理テーブル２３１の等価回数は「１」を設定する。ちなみに、プログラム以外のデータ等価処理は通常ＲＡＭ領域で行われるが、この場合の等価回数は制限なしのコード（例えば「ＦＦ」）を設定する。データ等価手段２４０は、データ等価処理ごとに等価回数をデクリメントし、等価回数が「０」になるとそのアドレス空間のデータ等価処理を実行しない。また、等価回数が「制限なし（ＦＦ）」の場合はデクリメントしない。これにより、制御プログラムの転送処理を複数回繰り返すことを防止することができる。
【００８９】
そして、マスタープロセッサ２、スレーブプロセッサ３は、前述したステップＳ１１２，ステップＳ１１３と同様に処理によって、それぞれ更新されたプログラムの動作モードへ遷移する（Ｓ４１２，Ｓ４１３）。
【００９０】
以上のように、本実施の形態に係るインバータ装置及びインバータ装置のプログラムの更新方法によれば、等価の対象とするデータのメモリアドレスを一括して管理することができるので、構成の変更に柔軟に対応することができる。
【符号の説明】
【００９１】
１  インバータ装置
２  マスタープロセッサ
３  スレーブプロセッサ
４  モータ制御切替部
５，６  シリアル通信
７  負荷（モータ）
８  外部機器
２１，３１  ＣＰＵ
２２−１，２２−２，３２  シリアルＩ／Ｆ
２３，３３  揮発性メモリ（ＲＡＭ）
２４，３４  不揮発性メモリ（ＲＯＭ）
２５，３５  Ｉ／Ｏ出力
２３１  等価領域管理テーブル
２４０，３４０  データ等価手段
２４１，３４１  更新管理プログラム
２４２，３４２  シリアルＩ／Ｆ部（通信手段）
２４３，３４３  ファーム更新（更新手段）
２４４  転送手段
２４５，３４６  実行管理プログラム
２４６  マスター／スレーブ制御プログラム
２４７  等価領域設定手段
３４４  プログラム格納手段
３４７  マスター制御プログラム
３４８  スレーブ制御プログラム
３４９  プログラム選択手段
【図２】
2016103114.tif 000003
【図４】
2016103114.tif 000004
【図５】
2016103114.tif 000005
【図６】
2016103114.tif 000006
【図７】
2016103114.tif 000007
【図８】
2016103114.tif 000008
【図１０】
2016103114.tif 000009
【図１１】
2016103114.tif 000010
【図１２】
2016103114.tif 000011
【図１】
2016103114.tif 000012
【図３】
2016103114.tif 000013
【図９】
2016103114.tif 000014