(57)【要約】【課題】プログラム更新作業を容易とするコントローラの提供である。【解決手段】上記した目的を達成するため、本発明のコントローラＣは、外部との情報通信を可能とするインターフェース１と、制御用プログラムを格納する不揮発性メモリ２と、演算処理部３とを備えて構成され、前記不揮発性メモリ２内には、前記制御用プログラムと前記制御用プログラムを書き換える際に実行される書込プログラムが格納される。【選択図】図１
2017151510.tif 000002
【特許請求の範囲】
【請求項１】
外部との情報通信を可能とするインターフェースと、
制御用プログラムを格納する不揮発性メモリと、
演算処理部とを備え、
前記制御用プログラムにより動作が制御されるコントローラであって、
前記不揮発性メモリ内には、前記制御用プログラムと前記制御用プログラムを前記演算処理部が書き換える際に実行される書込プログラムが格納される
ことを特徴とするコントローラ。
【請求項２】
前記フラッシュメモリ内には、先頭のアドレスから前記制御用プログラムが書き込まれる制御用プログラム領域、未使用領域、前記書込プログラムの順に格納されている
ことを特徴とする請求項１に記載のコントローラ。
【請求項３】
前記演算処理部は、前記インターフェースからプログラム書込命令を受け取ると、前記書込プログラムに従って前記制御用プログラムを消去し、前記インターフェースを通じて受け取る新たな制御用プログラムを前記不揮発性メモリに書き込んで、前記制御用プログラムを更新する
ことを特徴とする請求項１または２に記載のコントローラ。
【請求項４】
前記演算処理部は、前記インターフェースからプログラム書込命令を受け取ると、前記書込プログラムに従って前記制御用プログラム領域と前記未使用領域のデータを消去し、前記インターフェースを通じて受け取る新たな制御用プログラムを前記フラッシュメモリの先頭のアドレスから書込み、前記新たな制御用プログラムが書き込まれた領域と前記書込プログラム領域との間の領域に予め定められた未使用領域用バイナリデータを書き込む
ことを特徴とする請求項２に記載のコントローラ。
【請求項５】
前記インターフェースを通じて制御実行のための外部からの信号の受信と外部への制御指令の出力を行う
ことを特徴とする請求項１から４のいずれか一項に記載のコントローラ。
【請求項６】
前記インターフェースは、ネットワーク通信可能とされる
ことを特徴とする請求項１から５のいずれか一項に記載のコントローラ。
【請求項７】
前記不揮発性メモリの他に記憶装置を備え、
前記記憶装置に前記制御用プログラムと前記書込プログラムの一方の実行を指示する選択データを格納し、
起動時に前記選択データを参照して、前記制御用プログラムを実行するか前記書込プログラムを実行するかを判断する
ことを特徴とする請求項１から６のいずれか一項に記載のコントローラ。
【請求項８】
前記書込プログラムの実行開始時に前記書込プログラムの実行を指示する選択データが前記記憶装置に格納され、前記書込プログラムによってデータの書込みを終了すると前記制御用プログラムの実行を指示するデータが格納される
ことを特徴とする請求項７に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラに関する。
【背景技術】
【０００２】
ソレノイドやモータ等の制御対象機器を制御するには、制御対象機器へ制御指令を与えるコントローラが必要である。このようなコントローラは、一般的には、演算処理装置と、制御対象機器との接続を可能とするインターフェースと、制御対象機器の制御するコントローラとして機能させるプログラムを格納するフラッシュメモリとを備えている。
【０００３】
プログラムは、コントローラの動作をより制御対象機器の制御に適するように、或いは、不具合を修正するために、バージョンアップが必要となる場合がある。このようなコントローラは、ディスクやメモリカードといった記録メディアからデータを読み取る装置を搭載していない場合が一般的であり、プログラムの更新には、記録メディアを利用できないことが多い。
【０００４】
そこで、記録メディアを用いずにプログラムの更新する技術としては、たとえば、コントローラの電源をオフして、専用インターフェースを通じて接続されるプログラム書込装置でフラッシュメモリ内のプログラムを書き換えるものがある（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開１０−１３３８６７号公報の従来技術欄
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このように、専用インターフェースを利用する場合、コントローラの電源をオフし、筐体内に設けた蓋を取り外して、専用インターフェースにプログラム書込装置を接続する必要がある。たとえば、建設機械のシリンダや車両の緩衝器、パワーステアリング等を制御するコントローラでは、コントローラが外部からアクセスしにくい場所に搭載されている場合もあり、プログラムの更新作業に時間がかかる。
【０００７】
そこで、本発明は上記問題を解決するために創案されたものであって、その目的とするところは、プログラム更新作業を容易とするコントローラの提供である。
【課題を解決するための手段】
【０００８】
本発明のコントローラは、外部との情報通信を可能とするインターフェースと、制御用プログラムと書込プログラムを格納する不揮発性メモリと、演算処理部とを備えているので、コントローラが書込プログラムを実行してインターフェースを通じて外部から制御用プログラムデータを受け取って、不揮発性メモリ内の制御用プログラムを更新できる。よって、本発明のコントローラによれば、制御用プログラムを更新する際にコントローラの電源をオフにする必要も、専用インターフェースを用いて制御用プログラムを更新する情報処理装置を接続する必要もなく、外部と通信する前記インターフェースを用いて制御用プログラムの更新を行える。
【０００９】
また、請求項２のコントローラにあっては、フラッシュメモリ内に先頭のアドレスから、制御用プログラム領域、未使用領域、書込プログラムの順に格納されているので、書込プログラムよりも前のアドレスまでで書き換えを行うようにしておけば、書込プログラムを実行しつつ制御用プログラムのみを更新できる。また、未使用領域を予め設けているので、新しい制御用プログラムのデータ量が多くなっても対応でき、書込プログラム領域まで制御用プログラムのデータが上書きされるのを防止でき、書込プログラムも保護される。
【００１０】
さらに、請求項３のコントローラにあっては、演算処理部がインターフェースからプログラム書込命令を受け取ると、書込プログラムに従って制御用プログラムを消去し、インターフェースを通じて受け取る新たな制御用プログラムをフラッシュメモリに書き込んで、制御用プログラムを更新するようになっている。このように構成されると、インターフェースを通じて外部からコントローラに書込プログラムを実行させて、制御用プログラムの更新作業を外部から容易に指示できる。
【００１１】
また、請求項４のコントローラにあっては、演算処理部がインターフェースからプログラム書込命令を受け取ると、書込プログラムに従って制御用プログラム領域と未使用領域のデータを消去し、インターフェースを通じて受け取る新たな制御用プログラムをフラッシュメモリの先頭のアドレスから書込み、新たな制御用プログラムが書き込まれた領域と書込みプログラム領域との間の領域に予め定められた未使用領域用バイナリデータを書き込むようになっている。新しい制御用プログラムのデータ量が多くなっても未使用領域の容量を利用して対応でき、書込プログラムも保護される。
【００１２】
さらに、請求項５のコントローラにあっては、インターフェースを通じて制御実行のための外部からの信号の受信と外部への制御指令の出力を行うようになっている。このように、制御用プログラムに使用するインターフェースと制御実行のための通信を行うインターフェースを共通化できるので、コントローラのコストを低減できる。
【００１３】
そして、請求項６のコントローラにあっては、インターフェースがネットワーク通信可能とされているので、更新用の制御用プログラムの送信する情報処理装置をコントローラに直接接続する必要はなく、インターフェースに接続されるネットワークに接続して制御用プログラムを更新でき、更新作業が非常に簡単となる。
【００１４】
また、請求項７のコントローラにあっては、フラッシュメモリの他に記憶装置を備え、記憶装置に制御用プログラムと書込プログラムの一方の実行を指示する選択データを格納し、起動時に選択データを参照して、制御用プログラムを実行するか書込プログラムを実行するかを判断するようになっている。このようにコントローラを構成すると、制御用プログラムの更新に失敗したり更新を中断したりする場合に、コントローラの起動時に書込プログラムを選択して実行できるようになる。よって、本例のコントローラでは、更新作業を中断しても自動的に書込プログラムが実行されて更新作業を最初から行え、正常に更新されなかった制御用プログラムの実行によってエラーが発生する事態も回避できる。
【００１５】
さらに、請求項８のコントローラにあっては、書込プログラムの実行開始時に書込プログラムの実行を指示する選択データが記憶装置に格納され、書込プログラムによってデータの書込みを終了すると制御用プログラムの実行を指示するデータが格納されるようになっている。このようにコントローラを構成すると、制御用プログラムの更新が正常に終了していない状況では、コントローラの起動時に確実に書込プログラムを選択して実行できる。よって、本例のコントローラでは、更新作業を中断しても確実に書込プログラムが実行されて更新作業を最初から行え、正常に更新されなかった制御用プログラムの実行によってエラーが発生する事態も回避できる。
【発明の効果】
【００１６】
よって、本発明のコントローラによれば、プログラム更新作業を容易となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施の形態におけるコントローラの構成図である。
【図２】コントローラで建設機械のシリンダ装置を制御する態様を説明する図である。
【図３】フラッシュメモリ内のデータ格納状態を示したメモリマップの図である。
【図４】制御用プログラムを実行した際のコントローラの動作手順を示したフローチャートの一例である。
【図５】書込プログラムを実行した際のコントローラの動作手順を示したフローチャートの一例である。
【図６】更新プログラムを実行した際の情報処理装置の動作手順を示したフローチャートである。
【発明を実施するための形態】
【００１８】
本発明の実施の形態を図に基づき説明する。一実施の形態におけるコントローラＣは、図１および図２に示すように、外部との情報通信を可能とするインターフェース１と、制御用プログラムを格納する不揮発性メモリとしてのフラッシュメモリ２と、演算処理部３とを備えて構成されている。より詳細には、インターフェース１、フラッシュメモリ２および演算処理部３は、基板Ｂ上に実装されており、インターフェース１のコネクタ１ａを外方へ臨む状態で筐体４内に収容されている。
【００１９】
以下、コントローラＣの各部について詳細に説明する。コントローラＣは、本例では、図２に示すように、図外の建設機械のフロントアタッチメント（作業装置）を駆動する複数のシリンダ装置Ｈ１，Ｈ２，・・・Ｈｎを制御するようになっている。シリンダ装置Ｈ１，Ｈ２，・・・Ｈｎは、詳しくは、図示しないが、伸縮可能なシリンダ本体と、シリンダ本体へ圧油を供給するポンプと、シリンダ本体の伸長作動と収縮作動を切換える切換弁と、ポンプと切換弁を制御するシリンダ制御部とを備えている。そして、コントローラＣは、建設機械のオペレータの操作桿等の操作に応じて制御指令を生成して、シリンダ装置Ｈ１，Ｈ２，・・・Ｈｎにおけるシリンダ制御部へ送信して、シリンダ装置Ｈ１，Ｈ２，・・・Ｈｎを制御する。なお、コントローラＣは、建設機械のシリンダ装置Ｈ１，Ｈ２，・・・Ｈｎに限られず、自動車や鉄道車両のアクチュエータ、減衰力可変ダンパ、更には、ソレノイド、モータといった種々の制御対象に利用できる。
【００２０】
また、コントローラＣは、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を利用した車載ネットワークＮを介してオペレータの操作桿の操作によって生成される信号の受信と前記シリンダ制御部との通信を行うようになっている。
【００２１】
インターフェース１は、シリンダ装置Ｈ１，Ｈ２，・・・Ｈｎに接続されるＣＡＮバスＬのコネクタＬ１に接続可能なコネクタ１ａと、シリンダ装置Ｈ１，Ｈ２，・・・Ｈｎ等との信号のやり取りを制御するインターフェースコントローラ１ｂとを備えている。インターフェース１は、本例では、複数の外部機器と相互通信を実現するためにＣＡＮ通信を可能とするＣＡＮインターフェースコントローラとされているが、ネットワーク通信が可能であればよいので、ＦｌｅｘＲａｙ、Ｌｉｎ通信に対応するものであってもよい。また、インターフェース１は、複数の外部機器と相互に無線通信が可能な無線ＬＡＮを可能とするものでもよい。また、コネクタ１ａは、採用されるプロトコルに応じて適するものを採用すればよい。さらに、コネクタＬ１を筐体４の外からコネクタ１ａに接続できるように、コネクタ１ａは、筐体４外へ臨むように設けられている。
【００２２】
フラッシュメモリ２には、制御用プログラムと制御用プログラムを書き換える際に実行される書込プログラムが格納されている。具体的には、図３に示すように、フラッシュメモリ２には、先頭のアドレスから最後のアドレスまで、順に制御用プログラムを格納する制御用プログラム領域Ａ１と、プログラムが格納されない未使用領域Ａ２と、書込プログラムを格納する書込プログラム領域Ａ３と、プログラムが格納されない第二未使用領域Ａ４と、制御用プログラムの実行時に必要なデータを格納するデータ領域Ａ５が設けられている。フラッシュメモリ２中の未使用領域Ａ２と第二未使用領域Ａ４の各領域には、未使用領域用バイナリデータであるデータが書き込まれていないことを示すバイナリデータ、本例では、１６進数の「ＦＦ」が格納されている。なお、フラッシュメモリ２が格納されているデータを消去する場合、予め決められたデータ容量のブロック単位で消去する。本発明では、書込プログラムの実行時には、制御用プログラム領域Ａ１と未使用領域Ａ２のデータを消去して、消去された領域に新しい制御用プログラムを書き込むため、制御用プログラム領域Ａ１と未使用領域Ａ２の合計容量はブロックのデータ容量の整数倍に設定してある。また、本例では、フラッシュメモリ２の先頭のアドレスから制御用プログラムを格納する制御用プログラム領域Ａ１を設けているが、制御用プログラムの実行時に、制御用プログラムが格納されているアドレスへジャンプするようにしておけば、フラッシュメモリ２内での制御用プログラム領域Ａ１、未使用領域Ａ２および書込プログラム領域Ａ３を設ける順番、アドレスは、任意に設定できる。なお、書込プログラム領域Ａ３の後に第二未使用領域Ａ４を設けておくと、書込プログラムの設計変更でデータ量が増えても第二未使用領域Ａ４を利用できるので、プログラムの設計自由度が向上するが、第二未使用領域Ａ４の設置は任意である。
【００２３】
演算処理部３は、図示はしないが、たとえば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、ＣＰＵにおける演算処理の実行に際して記憶領域を提供するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性のメモリと、クロック回路とを備えており、制御用プログラムと書込プログラムのうち通常時は制御用プログラムを実行し、制御用プログラムを更新する場合にのみ書込プログラムを実行する。
【００２４】
制御用プログラムは、コントローラＣの動作を制御するプログラムである。演算処理部３が制御用プログラムを実行すると、コントローラＣは、操作桿の操作によって生成される信号を受け取り、シリンダ装置シリンダ装置Ｈ１，Ｈ２，・・・Ｈｎへ与える制御指令を生成し、インターフェース１から制御指令をシリンダ装置シリンダ装置Ｈ１，Ｈ２，・・・Ｈｎへ出力する。
【００２５】
書込プログラムは、制御用プログラムを更新するためのプログラムである。演算処理部３は、書込プログラムを実行すると、従前の制御用プログラムを外部から受信する新たな制御用プログラムを書き換えて更新するようになっている。
【００２６】
本例では、コントローラＣは、フラッシュメモリ２とは別に、不揮発性のメモリでなる記憶装置５を備えており、この記憶装置５の予め決められたアドレスには、制御用プログラムと書込プログラムのいずれを実行するか認識可能な選択データが格納される。なお、フラッシュメモリ２と演算処理部３と記憶装置５は、一つのＣＰＵにより構成されてよい。
【００２７】
コントローラＣの電源がオンされると、演算処理部３は、記憶装置５の選択データが格納されているアドレスを参照し、制御用プログラムと書込プログラムのうち選択データが指示するプログラムを実行する。
【００２８】
また、演算処理部３は、制御用プログラムを実行中にインターフェース１を通じて外部から予め決められたプログラム書込命令を受信すると、制御用プログラムを終了処理して、書込プログラムを実行するようになっている。
【００２９】
プログラム書込命令は、コントローラＣに制御用プログラムの更新を行うために書込プログラムを実行させるための命令であり、車載ネットワークＮに接続される更新用の制御用プログラムを送信する情報処理装置Ｐから送信される。情報処理装置Ｐは、プログラム書込命令をコントローラＣへ出力し、コントローラＣの制御用プログラムの書込み準備ができ、更新用の制御用プログラムの受信体制が整うと、制御用プログラムをコントローラＣへ送信する。コントローラＣは、受信した制御用プログラムをフラッシュメモリ２へ書き込んで制御用プログラムを新しいものへ更新する。制御用プログラムを更新する際に専用インターフェースを用いて情報処理装置Ｐを接続する必要はなく、情報処理装置Ｐを車載ネットワークＮにハブ等を介して接続すれば制御用プログラムの更新を行える。
【００３０】
なお、情報処理装置ＰのコントローラＣの接続に際しては、コントローラＣが外部からの信号の受信と制御指令の送信を行うためのインターフェースとは別に外部との信号の送受信を可能とする他のインターフェースを備えている場合、当該他のインターフェースを用いて接続してもよい。この場合、この他のインターフェースにおけるコネクタは、筐体４外からアクセスできるように筐体４外へ臨むように設けられる。
【００３１】
演算処理部３は、プログラム書込命令を受け取ると、記憶装置５に格納されている選択データを書込プログラムを実行させるデータへ書換え、制御用プログラムの更新が無事終了すると、選択データを制御用プログラムを実行させるデータへ書き換える。よって、何らかの事情により、制御用プログラムの書込み途中で断電したり、制御用プログラムの更新に失敗した状態で、コントローラＣの電源がオフされると、選択データは、書込プログラムを実行させるデータのままとなる。よって、次回のコントローラＣへの電源オン時には、演算処理部３は、選択データを参照し、書込プログラムを優先して実行して、制御用プログラムの受信を待つようになる。
【００３２】
つづいて、図４および図５に示したフローチャートに従って、コントローラＣの動作を説明する。前述のように、コントローラＣは、電源がオンされると、演算処理部３は、制御用プログラムを実行して初期設定処理を行う（ステップＳ１０１）。初期設定処理は、変数の初期化処理等、制御用プログラムの実行に必要な処理である。
【００３３】
次に、演算処理部３は、記憶装置５に格納されている選択データを参照して、制御用プログラムの処理を続行するか、書込プログラムを実行するかの判断を行う（ステップＳ１０２）。本例では、選択データは、２バイトのデータとされ、制御用プログラムの実行を指示する選択データは、１６進数表現で「ＦＦ  ＦＦ」とされ、書込みプログラムの実行を指示する選択データは、１６進数表現で「ＦＦ  ＦＦ」以外の任意のデータとされており、本例では、「５Ａ  ５Ａ」の２バイトのデータとされている。したがって、演算処理部３は、選択データを参照して、選択データが「ＦＦ  ＦＦ」であるか否かを判断する。選択データが「ＦＦ  ＦＦ」であれば、制御プログラムの実行を指示するデータであるのでステップＳ１０３へ移行し、そうでなければ、書込プログラムの実行を指示するデータであるからステップＳ１０４へ移行する。なお、選択データは、任意に決めればよい。
【００３４】
ステップＳ１０３では、演算処理部３は、選択データが制御用プログラムの実行を指示しているので、制御用プログラムを継続して実行する。反対に、ステップＳ１０４では、演算処理部３は、選択データが書込プログラムの実行を指示しているので、書込プログラムを実行すべく書込プログラムへジャンプする。
【００３５】
また、演算処理部３が制御用ステップを実行中に、プログラム書込命令を受信する（Ｓ１０５）と、制御用プログラムを終了する処理を行って、書込プログラムを実行すべく書込プログラムへジャンプする（ステップＳ１０６）。プログラム書込命令には、コントローラＣへ向けたものであるのをコントローラＣで判断可能なように、固有のＩＤが付されており、コントローラＣは、ＩＤを参照して、命令が自分へ向けての命令であるかどうかを判断できるようになっている。
【００３６】
コントローラＣは、書込プログラムを実行すると、図５のフローチャートに示した手順に従って、新しい制御用プログラムを情報処理装置Ｐから受け取って、それまでフラッシュメモリ２に格納されていた制御用プログラムを新しい制御用プログラムへ書き換えて更新する。
【００３７】
演算処理部３が書込プログラムを実行すると、まず、初期設定処理を行う（ステップＳ２０１）。初期設定処理は、変数の初期化処理等、書込プログラムの実行に必要な処理である。
【００３８】
次に、演算処理部３は、記憶装置５に格納されている選択データを参照して、制御用プログラムの更新が中断された状態であったか否かを判断する（ステップＳ２０２）。選択データが「ＦＦ  ＦＦ」であった場合、ステップＳ２０３へ移行し、選択データが「ＦＦ  ＦＦ」ではない場合、ステップＳ２０４へ移行する。
【００３９】
ステップＳ２０４では、情報処理装置Ｐからのプログラム書込命令の受信を待ち、プログラム書込命令を受信する（ステップＳ２０５）と、ステップＳ２０３へ移行する。
【００４０】
ステップＳ２０３では、プログラム書込命令の受信を受けて制御用プログラムを終了してから書込プログラムを実行していても、選択データの参照によって書込プログラムを実行していても、いずれにせよ、プログラム書込命令を受け取った状態であるので、命令の受け手として命令を正しく受け取ったとの肯定応答（ＡＣＫ）を情報処理装置Ｐへ送信する。
【００４１】
つづいて、ステップＳ２０６へ移行して、演算処理部３は、フラッシュメモリ２の制御用プログラム領域Ａ１と書込プログラム領域Ａ３の手前の未使用領域Ａ２の双方のメモリを消去するための命令であるイレース命令の受信を待つ。
【００４２】
その後、演算処理部３は、情報処理装置Ｐからイレース命令を受け取ると（ステップＳ２０７）、記憶装置５の選択データを「５Ａ  ５Ａ」に書き換え（ステップＳ２０８）、さらに、フラッシュメモリ２の制御用プログラム領域Ａ１と未使用領域Ａ２の領域のデータを消去する（ステップＳ２０９）。なお、本例では、演算処理部３は、フラッシュメモリ２中の制御用プログラム領域Ａ１と未使用領域Ａ２の各領域への未使用領域用バイナリデータである「ＦＦ」の書き込みによってデータを消去する。
【００４３】
ここまでの処理で、フラッシュメモリ２内の制御用プログラムの消去処理が終了して、フラッシュメモリ２に新しい制御用プログラムを書き込む準備が整ったので演算処理部３は、情報処理装置Ｐからのイレース命令に対して肯定応答を情報処理装置Ｐへ送信する（ステップＳ２１０）。
【００４４】
つづいて、演算処理部３は、情報処理装置Ｐからデータの送信を待ち、受信したデータが制御用プログラム更新の終了を指示する終了命令であるか否かを判断する（ステップＳ２１１）。演算処理部３は、ステップＳ２１１の判断で、受信したデータが終了命令でない場合、受信したデータが制御用プログラムのデータであるので、ステップＳ２１２へ移行する。
【００４５】
ステップＳ２１２では、情報処理装置Ｐは、制御用プログラムのデータを予め決められたデータ量に区切って送信するので、演算処理部３は、前記決められたデータ量のデータを受信する。そして、ステップＳ２１３へ移行して、演算処理部３は、決められたデータ量のデータを正しく受け取ったとの肯定応答を情報処理装置Ｐへ送信する。本例では、予め決められたデータ量は、８バイトとされていて、演算処理部３は、８バイトのデータを受け取ると肯定応答を送信する。
【００４６】
演算処理部３は、情報処理装置Ｐから受信したデータを順次バッファリングしてデータを蓄積していく（ステップＳ２１４）。そして、演算処理部３は、バッファリングして蓄積されたデータのデータ量が５１２バイトに到達したか否かを判断する（ステップＳ２１５）。本例では、バッファリングするデータ量は、本例では５１２バイトとされているが、任意に決められる。
【００４７】
そして、バッファリングして蓄積されたデータのデータ量が５１２バイトに到達している場合、演算処理部３は、蓄積されたデータをフラッシュメモリ２へ書き込む（ステップＳ２１６）。書込が終了するとステップＳ２１１の処理へ移行する。よって、演算処理部３は、制御用プログラムのデータを受信し続ける場合、バッファリングしつつ受信した制御用プログラムのデータを５１２バイトずつフラッシュメモリ２の先頭のアドレスから順に書き込み続ける。
【００４８】
他方、演算処理部３は、ステップＳ２１１の判断で、受信したデータが終了命令である場合、ステップＳ２１７へ移行する。ステップＳ２１７では、演算処理部３は、バッファリングによって蓄積されているデータがフラッシュメモリ２に書き込まれないまま残っているデータがあるか否かを判断する。
【００４９】
未書込のデータが残っている場合には、ステップＳ２１８へ移行して、演算処理部３は、フラッシュメモリ２に未書込のデータを書き込み、データの書込みが終了したとの肯定応答を情報処理装置Ｐへ送信する（ステップＳ２１９）。
【００５０】
演算処理部３は、ステップＳ２１７の判断でフラッシュメモリ２に書き込まれないまま残っているデータがない場合、フラッシュメモリ２へのデータ書き込みが終了しているので、ステップＳ２１９へ移行して、データの書込みが終了したとの肯定応答を情報処理装置Ｐへ送信する。
【００５１】
ステップＳ２１９の処理が終了すると、演算処理部３は、記憶装置５の選択データを「ＦＦ  ＦＦ」に書き換える（ステップＳ２２０）。最後に、演算処理部３は、書込プログラムの処理を終了し、自身をリセットするリセット処理を行って再起動する（ステップＳ２２１）。再起動後は、コントローラＣは、図４のフローチャートの処理手順に従って動作する。
【００５２】
転じて、情報処理装置Ｐは、たとえば、パーソナルコンピュータ等であり車載ネットワークＮを介してコントローラＣと通信ができるようになっている。そして、情報処理装置Ｐは、予め、更新用の制御用プログラムのデータを保有し、制御用プログラムのデータを送信する専用プログラムの実行により、更新用の制御用プログラムのデータをコントローラＣへ送信するようになっている。
【００５３】
前記専用プログラムを実行すると情報処理装置Ｐは、図６に示したフローチャートに従って動作する。まず、情報処理装置Ｐは、車載ネットワークＮを通じてコントローラＣへプログラム書込命令を送信する（ステップＳ３０１）。プログラム書込命令には、前述したとおり、コントローラＣ向けの命令であるのを示すＩＤを付して送信される。
【００５４】
コントローラＣは、前述のように、プログラム書込命令を受信すると正しくプログラム書込命令を受信した旨を示す肯定応答を送信するので、情報処理装置Ｐは、この肯定応答の受信を待つ（ステップＳ３０２）。なお、この肯定応答には、この肯定応答が情報処理装置Ｐ向けであるのを示す固有のＩＤが付されており、情報処理装置Ｐにて、肯定応答が自身に向けた応答であるのを判断できるようになっている。可能なＩＤが付されている。
【００５５】
情報処理装置Ｐは、前述の肯定応答を受け取ると、コントローラＣへ向けてイレース命令を送信する（ステップＳ３０３）。コントローラＣは、前述のように、イレース命令を受け取ると、フラッシュメモリ２の制御用プログラム領域Ａ１とこれに続く未使用領域Ａ２のデータを消去し、フラッシュメモリ２に新しい制御用プログラムを書き込む準備が整うと情報処理装置Ｐに肯定応答を送信するので、
情報処理装置Ｐは、この肯定応答の受信を待つ（ステップＳ３０４）。
【００５６】
つづいて、情報処理装置Ｐは、書込準備が整った旨の肯定応答を受け取ると、コントローラＣへ向けて更新用の制御用プログラムデータを８バイトずつコントローラＣへ向けて送信する（ステップＳ３０５）。これにより、コントローラＣは、前述のように、肯定応答を情報処理装置Ｐへ送信し、情報処理装置Ｐは、この肯定応答を受信する（ステップＳ３０６）。コントローラＣ側では、制御用プログラムデータをバッファリングし、５１２バイトのデータを蓄積したらフラッシュメモリ２にバッファリングしたデータを書き込む。なお、コントローラＣの８バイトのデータの受信後の肯定応答の送信とデータのバッファリングの順序は逆となっても構わない。肯定応答を受信すると情報処理装置Ｐは、次にフラッシュメモリ２に書き込まれるべき更新用の制御用プログラムのデータがあるかどうか、つまり、制御用プログラムのデータが終了したか否かを判断する（ステップＳ３０７）。その結果、制御用プログラムのデータが終了していない場合、ステップＳ３０５へ移行して、情報処理装置Ｐは、次にフラッシュメモリ２に書き込まれるべき更新用の制御用プログラムデータをコントローラＣへ送信する。このように、情報処理装置Ｐは、８バイトずつデータをコントローラＣへ送信して、コントローラＣは、５１２バイトずつ制御用プログラムデータを書き込んでいく。
【００５７】
ステップＳ３０７の判断で制御用プログラムのデータが終了している場合、ステップＳ３０８へ移行して、情報処理装置Ｐは、制御用プログラム更新の終了を指示する終了命令を送信する。
【００５８】
そして、情報処理装置Ｐは、コントローラＣに与えた終了命令に対してコントローラＣ側からの更新作業終了の肯定応答を受信する（ステップＳ３０９）と、制御用プログラムの更新作業がすべて終了するので、更新用プログラムの実行を終了する。
【００５９】
このように、本発明のコントローラＣは、外部との情報通信を可能とするインターフェース１と、制御用プログラムと書込プログラムを格納するフラッシュメモリ２と、演算処理部３とを備えているので、コントローラＣが書込プログラムを実行してインターフェース１を通じて外部から制御用プログラムデータを受け取って、フラッシュメモリ２内の制御用プログラムを更新できる。よって、本発明のコントローラＣによれば、制御用プログラムを更新する際にコントローラＣの電源をオフにする必要も、専用インターフェースを用いて情報処理装置Ｐを接続する必要もなく、外部と通信する前記インターフェースを用いて制御用プログラムの更新を行える。このように、専用インターフェースを利用せずに制御用プログラムを更新できるので、コントローラＣの筐体４内に専用インターフェースを設置してこの専用インターフェースに直接に情報処理装置Ｐを接続する必要も無くなる。よって、本発明のコントローラＣによれば、コントローラＣが外部からアクセスしにくい場所に搭載されていても、簡単に制御用プログラムの更新作業ができ、プログラム更新作業が容易となる。
【００６０】
また、本例のコントローラＣにあっては、ラッシュメモリ２内に先頭のアドレスから、制御用プログラム領域、未使用領域、書込プログラムの順に格納されているので、書込プログラムよりも前のアドレスまでで書き換えを行うようにしておけば、書込プログラムを実行しつつ制御用プログラムのみを更新できる。また、未使用領域を予め設けているので、新しい制御用プログラムのデータ量が多くなっても対応でき、書込プログラム領域Ａ３までデータが侵食するのを防止でき、書込プログラムも保護される。
【００６１】
さらに、本例のコントローラＣにあっては、演算処理部３が情報処理装置Ｐからプログラム書込命令を受け取ると、書込プログラムに従って制御用プログラムを消去し、インターフェース１を通じて受け取る新たな制御用プログラムをフラッシュメモリ２に書き込んで、制御用プログラムを更新するようになっている。このように構成されると、インターフェース１を通じて外部からコントローラＣに書込プログラムを実行させて、制御用プログラムの更新作業を外部から容易に指示できる。
【００６２】
さらに、本例のコントローラＣにあっては、インターフェース１を通じて制御実行のための外部からの信号の受信と外部への制御指令の出力を行うようになっている。このように、制御用プログラムに使用するインターフェースと制御実行のための通信を行うインターフェースを共通化できるので、コントローラＣのコストを低減できる。
【００６３】
そして、本例のコントローラＣにあっては、インターフェース１がネットワーク通信可能とされているので、更新用の制御用プログラムの送る情報処理装置ＰをコントローラＣに直接接続する必要はなく、インターフェース１に接続される車載ネットワーク（ネットワーク）Ｎに接続して制御用プログラムを更新でき、更新作業が非常に簡単となる。
【００６４】
また、本例のコントローラＣにあっては、フラッシュメモリ２の他に記憶装置５を備え、記憶装置５に制御用プログラムと書込プログラムの一方の実行を指示する選択データを格納するようになっている。このようにコントローラＣを構成すると、制御用プログラムの更新に失敗したり更新を中断したりする場合に、コントローラＣの起動時に書込プログラムを選択して実行できるようになる。よって、本例のコントローラＣでは、更新作業を中断しても自動的に書込プログラムが実行されて更新作業を最初から行え、正常に更新されなかった制御用プログラムの実行によってエラーが発生する事態も回避できる。
【００６５】
さらに、本例のコントローラＣにあっては、書込プログラムの実行開始時に書込プログラムの実行を指示する選択データが記憶装置に格納され、書込プログラムによってデータの書込みを終了すると制御用プログラムの実行を指示するデータが格納されるようになっている。このようにコントローラＣを構成すると、制御用プログラムの更新が正常に終了していない状況では、コントローラＣの起動時に確実に書込プログラムを選択して実行できる。よって、本例のコントローラＣでは、更新作業を中断しても確実に書込プログラムが実行されて更新作業を最初から行え、正常に更新されなかった制御用プログラムの実行によってエラーが発生する事態も回避できる。
【００６６】
なお、不揮発性メモリとしてフラッシュメモリ２を用いたが、ＥＥＰＲＯＭやＭＲＯＭ等の他の不揮発性メモリを用いてよい。
【００６７】
本例では、演算処理部３は、データの消去に当たり、未使用領域用のバイナリデータの書込みを行うようになっており、制御用プログラム更新の終了命令を受信すると制御用プログラムのデータのみを書き込んで処理を終了するようになっている。これに対して、制御用プログラム更新の終了命令を受信した際に、フラッシュメモリ２の書込プログラム領域Ａ３の先頭のアドレスの直前のアドレスまでデータが書き込まれていないブランクであること示すバイナリデータを書き込む最終データ書込処理を行ってもよい。このようにコントローラＣを構成すると、演算処理部３がインターフェース１からプログラム書込命令を受け取ると、書込プログラムに従って制御用プログラム領域Ａ１と未使用領域Ａ２のデータを消去し、インターフェース１を通じて受け取る新たな制御用プログラムをフラッシュメモリ２の先頭のアドレスから書込み、新たな制御用プログラムが書き込まれた領域と書込みプログラム領域との間の領域に予め定められた未使用領域用バイナリデータを書き込む。このようにコントローラＣを構成しても新しい制御用プログラムのデータ量が多くなっても未使用領域Ａ２の容量を利用して対応でき、書込プログラムも保護される。
【００６８】
さらに、前述したところでは、情報処理装置Ｐからの終了命令により、コントローラＣでは、制御用プログラムのデータがこれ以上存在しないことを把握して、書込を終了するようになっているが、以下のようにして制御用プログラムのデータがこれ以上存在しないことを把握してもよい。具体的には、制御用プログラムとして機能するためにプログラムされたデータの末尾に、未使用領域用のバイナリデータを所定回数以上連続した付加して構成する。そして、この所定回数以上連続した未使用領域用のバイナリデータが制御用プログラム更新を終了する終了命令として利用する。コントローラＣ側では、予め所定回数以上連続する未使用領域用のバイナリデータを受信すると、制御用プログラムのデータを書き込んだ後に続くアドレスからフラッシュメモリ２内の書込プログラム領域Ａ３の直前のアドレスまで未使用領域用のバイナリデータを書込むようにしておく。すると、情報処理装置Ｐ側から特別な終了用の命令を送信せずとも、コントローラＣが自動的にフラッシュメモリ２内の書込プログラム領域Ａ３の直前のアドレスまでデータを書込んで、データの更新を行える。終了命令としての前記未使用領域用バイナリデータ「ＦＦ」の連続回数は、たとえば、１２６回以上などすればよい。よって、コントローラＣは、更新用の制御用プログラムの送信の終了を判断でき、また、この場合、制御用プログラムのデータの末尾の認識をタイムリーに行えないが、更新用の制御プログラムが終了したことを認識した際にフラッシュメモリ２に書き込まれているバイナリデータは、未使用領域用バイナリデータであるため、終了の認識後に既に書き込んだ未使用領域用バイナリデータを再度書き込む動作を行わずに済む。
【００６９】
以上で、本発明の実施の形態についての説明を終えるが、本発明の範囲は図示されまたは説明された詳細そのものには限定されないことは勿論である。
【符号の説明】
【００７０】
１・・・インターフェース、２・・・フラッシュメモリ（不揮発性メモリ）、３・・・演算処理部、４・・・筐体、５・・・記憶装置、Ｃ・・・コントローラ、
【図１】
2017151510.tif 000003
【図２】
2017151510.tif 000004
【図３】
2017151510.tif 000005
【図４】
2017151510.tif 000006
【図５】
2017151510.tif 000007
【図６】
2017151510.tif 000008