(57)【要約】【課題】工作機械等の産業機械を制御する制御装置におけるプログラムやデータの更新を容易に行う。【解決手段】通常動作時においては、電気的に書き換え可能な不揮発性の第１のメモリに格納された外部機器制御プログラムを実行して外部機器を制御する制御装置において、プログラム書き換え動作時においては、前記制御装置は、前記外部機器制御プログラムを書き換える処理を実現する書き換え制御プログラムを実行することによって、前記外部機器制御プログラムを書き換える外部機器制御プログラム書き換え用データをストレージ装置から取得し、取得した前記外部機器制御プログラム書き換え用データを用いて、前記外部機器制御プログラムを書き換える。【選択図】  図１
2004295589.tif 000002
【特許請求の範囲】
【請求項１】
外部機器を制御する外部機器制御プログラムを格納した、電気的に書き換え可能な不揮発性の第１のメモリを備えたサブモジュールと、
前記外部機器制御プログラムを書き換えるための外部機器制御プログラム書き換え用データを格納したストレージ装置と、
前記外部機器制御プログラム書き換え用データを用いて、前記外部機器制御プログラムを書き換える処理を実現する書き換え制御プログラムと、制御装置全体を制御する全体制御プログラムとを格納した第２のメモリを備え、通常動作時においては、前記全体制御プログラムを実行して前記サブモジュールに格納された前記外部機器制御プログラムを用いて前記サブモジュールに前記外部機器を制御させ、一方、プログラム書き換え動作時においては、前記書き換え制御プログラムを実行して、前記外部機器制御プログラムを書き換えるメインモジュールと、
を備えることを特徴とする制御装置。
【請求項２】
前記ストレージ装置は前記全体制御プログラムを書き換えるための全体制御プログラム書き換え用データをさらに格納するものであり、
前記第２のメモリ内の前記書き換え制御プログラムは、さらに、前記全体制御プログラム書き換え用データを用いて、前記全体制御プログラムを書き換えるものであり、
前記メインモジュールは、前記書き換え制御プログラムの実行時において、前記全体制御プログラムを書き換えることを特徴とする請求項１に記載の制御装置。
【請求項３】
前記サブモジュールは、前記サブモジュールを識別する識別子を保持したサブモジュール識別機構を備え、
前記ストレージ装置は、複数の前記サブモジュール分の前記外部機器制御プログラム書き換え用データを有し、
前記メインモジュールは、前記書き換え制御プログラムの実行時において、前記モジュール識別機構から前記識別子を取得し、取得した前記識別子を用いて、該当するサブモジュールに対応した前記外部機器制御プログラム書き換え用データを前記ストレージ装置から抽出し、抽出した前記外部機器制御プログラム書き換え用データを用いて、前記外部機器制御プログラムを書き換えることを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記サブモジュールは、前記外部機器制御プログラムのバージョン情報を保持したバージョン識別機構を備え、
前記ストレージ装置内の前記外部機器制御プログラム書き換え用データは、更新後の前記外部機器制御プログラムのバージョン情報を格納しており、
前記メインモジュールは、前記書き換え制御プログラムの実行中において、前記バージョン識別機構に保持されたバージョン情報と、前記外部機器制御プログラム書き換え用データ中におけるバージョン情報とを比較し、所定の書き換え条件を満たす場合にのみ、前記外部機器制御プログラムを書き換えることを特徴とする請求項１乃至３のいずれかに記載の制御装置。
【請求項５】
前記第１のメモリは、前記外部機器制御プログラムを格納したプログラム領域と、所定のデータを格納したデータ領域とを備え、
前記ストレージ装置は、さらに、前記所定のデータを書き換えるための所定のデータ書き換え用データを有し、
前記書き換え制御プログラムは、さらに、前記所定のデータ書き換え用データを用いて、前記所定のデータを書き換えるものであり、
前記メインモジュールは、前記書き換え制御プログラムの実行中において、前記ストレージ装置における、前記外部機器制御プログラム書き換え用データ及び前記所定のデータ書き換え用データのいずれか一方あるいは両方を選択し、前記プログラム領域及び前記データ領域のいずれか一方あるいは両方に書き込むことを特徴とする請求項１乃至４のいずれかに記載の制御装置。
【請求項６】
前記ストレージ装置内の前記外部機器制御プログラム書き換え用データと前記所定のデータ書き換え用データとは、両者を識別するインデックスデータをそれぞれ有し、
前記メインモジュールは、前記書き換え制御プログラムの実行中において、前記外部機器制御プログラム書き換え用データ及び前記所定のデータ書き換え用データのいずれか一方あるいは両方を選択し、前記インデックスデータに基づいて、前記プログラム領域及び前記データ領域のいずれか一方あるいは両方に自動的に書き込むことを特徴とする請求項５に記載の制御装置。
【請求項７】
外部機器を制御する外部機器制御プログラムを格納した、電気的に書き換え可能な不揮発性の第１のメモリと、
前記外部機器制御プログラムを書き換える外部機器制御プログラム書き換え用データを格納したストレージ装置と、
前記外部機器制御プログラム書き換え用データを用いて、前記外部機器制御プログラムを書き換える処理を実現する書き換え制御プログラムを格納した第２のメモリと、
通常動作時において、前記外部機器制御プログラムを実行して、前記外部機器を制御し、プログラム書き換え動作時において、前記書き換え制御プログラムを実行して、前記外部機器制御プログラムを書き換える制御部と、
を備えることを特徴とする制御装置。
【請求項８】
通常動作時においては、電気的に書き換え可能な不揮発性の第１のメモリに格納された外部機器制御プログラムを実行して外部機器を制御する制御装置における前記外部機器制御プログラムを更新するプログラム更新方法であって、
プログラム書き換え動作時において、前記制御装置は、前記外部機器制御プログラムを書き換える処理を実現する書き換え制御プログラムを実行することによって、前記外部機器制御プログラムを書き換えるための外部機器制御プログラム書き換え用データをストレージ装置から取得し、取得した前記外部機器制御プログラム書き換え用データを用いて、前記外部機器制御プログラムを書き換えることを特徴とするプログラム更新方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ダイカストマシンや射出形成機、工作機械等の産業機械の制御を行う制御装置、及び制御装置内のプログラムを更新するプログラム更新方法に関する。
【０００２】
【従来の技術】
ダイカストマシンや射出形成機、工作機械等の産業機械の制御を行う制御装置は、通常、ベース基板に挿入された、メインモジュールとサブモジュールとを基本的な構成として備える。前者のメインモジュールは各サブモジュールを管理し、一方、後者のサブモジュールは、例えば、モータコントロールモジュール、カウンタモジュール、リレーコントロールモジュール等であり、各サブモジュールに接続された外部機器を制御する。より詳しくは、各サブモジュールは、外部機器を制御するプログラムを格納したＥＰＲＯＭを備え、このプログラムを用いて外部機器を制御する。
【０００３】
各サブモジュール内のプログラムを更新するために、従来では、プログラムが書き込まれたＥＰＲＯＭ自体を取り替える必要があった。つまり、特別な開発ツールで作成された新たなプログラムをＲＯＭライタによってＥＰＲＯＭへ書き込み、このＥＰＲＯＭを客先まで運んで、制御装置内におけるサブモジュール上のＥＰＲＯＭと交換していた。
【０００４】
【特許文献１】
特開平１０−１９８５７１号公報
【０００５】
【発明が解決しようとする課題】
しかし、これらＥＰＲＯＭへのプログラムの書き込み及びＥＰＲＯＭの取り替え作業には経験を積んだ技術者が必要となる。またＥＰＲＯＭの製作、交換には手間がかかってしまう。特に、各サブモジュールの配置構成は、制御装置の機種によって異なるため、１台、１台の制御装置毎に、各サブモジュール内のプログラムを管理することは非常に困難となる。また、プログラムのバージョン変更がある場合などは、更に管理が困難となる。
【０００６】
プログラムの更新にかかる時間と手間を短縮するために、ネットワークを介してソフトウェアを更新する方法も考案されている（例えば、特許文献１参照）。この方法は、ネットワークを介して、更新対象となる装置を遠隔操作することにより、装置内のソフトウェアの更新を可能とする方法である。
【０００７】
しかし、上述したサブモジュール内のプログラムの更新にこの方法を用いるとすると、制御装置を配置した工場内に、ネットワーク設備を導入し、このネットワーク設備に制御装置を繋げることが必要となる。これは、コストアップになるとともに、ユーザにもネットワークの知識が要求されるようになる。
【０００８】
本発明は、上記問題点に鑑みてなされたものであり、プログラムの更新を容易に行うことのできる制御装置及びプログラム更新方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明の制御装置は、前記外部機器を制御する外部機器制御プログラムを格納した、電気的に書き換え可能な不揮発性の第１のメモリを備えたサブモジュールと、前記外部機器制御プログラムを書き換えるための外部機器制御プログラム書き換え用データを格納したストレージ装置と、前記外部機器制御プログラム書き換え用データを用いて、前記外部機器制御プログラムを書き換える処理を実現する書き換え制御プログラムと、制御装置全体を制御する全体制御プログラムとを格納した第２のメモリを備え、通常動作時においては、前記全体制御プログラムを実行して前記サブモジュールに格納された前記外部機器制御プログラムを用いて前記サブモジュールに前記外部機器を制御させ、一方、プログラム書き換え動作時においては、前記書き換え制御プログラムを実行して、前記外部機器制御プログラムを書き換えるメインモジュールと、を備えることを特徴とする。
【００１０】
また、本発明の別の制御装置は、外部機器を制御する外部機器制御プログラムを格納した、電気的に書き換え可能な不揮発性の第１のメモリと、  前記外部機器制御プログラムを書き換える外部機器制御プログラム書き換え用データを格納したストレージ装置と、前記外部機器制御プログラム書き換え用データを用いて、前記外部機器制御プログラムを書き換える処理を実現する書き換え制御プログラムを格納した第２のメモリと、通常動作時において、前記外部機器制御プログラムを実行して、前記外部機器を制御し、プログラム書き換え動作時において、前記書き換え制御プログラムを実行して、前記外部機器制御プログラムを書き換える制御部と、を備えることを特徴とする。
【００１１】
本発明のプログラム更新方法は、通常動作時においては、電気的に書き換え可能な不揮発性の第１のメモリに格納された外部機器制御プログラムを実行して外部機器を制御する制御装置における前記外部機器制御プログラムを更新するプログラム更新方法であって、プログラム書き換え動作時において、前記制御装置は、前記外部機器制御プログラムを書き換える処理を実現する書き換え制御プログラムを実行することによって、前記外部機器制御プログラムを書き換える外部機器制御プログラム書き換え用データをストレージ装置から取得し、取得した前記外部機器制御プログラム書き換え用データを用いて、前記外部機器制御プログラムを書き換えることを特徴とする。
【００１２】
【発明の実施の形態】
図１は、本実施の形態としての制御装置の構成を示すブロック図である。
【００１３】
図１に示すように、１つのメインモジュール１と、複数のサブモジュール２（１）〜２（ｎ）と、データストレージ装置としてのメモリカードモジュール３とが、それぞれデータ通信用のデータバス５に接続されている。具体的には、これらメインモジュール１、サブモジュール２（１）〜２（ｎ）及びメモリカードモジュール３は図示しないコネクタを備え、これらのコネクタが、データバス５におけるコネクタ（図示せず）に差し込まれている。これにより、メインモジュール１、サブモジュール２（１）〜２（ｎ）及びメモリカードモジュール３と、データバス５とが電気的に接続される。
【００１４】
メインモジュール１は、各種の演算処理を行うＣＰＵ１０を備えている。また、メインモジュール１は、３種類のメモリ、つまり、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２、電気的にデータの書き換え（消去及び追加）が可能な、不揮発性メモリとしてフラッシュメモリ１３を備えている。ＥＰＲＯＭ１１には、後述するプログラム書き込み処理を実現するプログラム（書き込み制御プログラム）が書き込まれている。一方、フラッシュメモリ１３には、制御装置全体を適正に制御するプログラム（全体制御プログラム）が格納されている。この全体制御プログラムは、各種命令と、各種データとからなり、プログラムのバージョン番号等の属性データも含む。この全体制御プログラムは、上述のプログラム書き込み処理において書き換えの対象となる。ＲＡＭ１２は、ＣＰＵ１０が各種演算処理を行うときの作業領域として用いられる。このＣＰＵ１０には、入出力ドライバ１４が接続されており、この入出力ドライバ１４には、キーボードやディスプレイ装置等の入出力端末機器１５が繋がっている。入出力ドライバ１４は、例えば、ＣＰＵ１０と入出力端末機器１５の間における動作速度を調整したり、電気的特性の違いを吸収したりする。ＣＰＵ１０は、入出力ドライバ１４及び入出力端末機器１５を介して、作業者と情報のやり取りを行う。入出力端末機器１５としては、例えば、タッチパネル付きのディスプレイ装置を用いてもよい。一方、ＣＰＵ１０には、通信入出力ドライバ６が接続されており、この通信入出力ドライバ６は、データバス５と接続されている。通信入出力ドライバ６は、ＣＰＵ１０による出力信号をデータバスに適した信号に変換してデータバス５上に送出するとともに、データバス５上を流れるデータを監視し、メインモジュール１宛のデータをデータバス５から取得して、ＣＰＵ１０に渡す。
【００１５】
サブモジュール２（１）〜２（ｎ）も、上述のメインモジュール１と同様に、ＣＰＵ１６（１）〜１６（ｎ）、ＲＡＭ１８（１）〜１８（ｎ）、フラッシュメモリ１９（１）〜１９（ｎ）、入出力ドライバ２０（１）〜２０（ｎ）、通信入出力ドライバ８（１）〜８（ｎ）を備えている。入出力ドライバ２０（１）〜２０（ｎ）には、モータ、カウンタ、リレー等の外部機器２１（１）〜２１（ｎ）が接続されている。フラッシュメモリ１９（１）〜１９（ｎ）には、これら外部機器をコントロールするプログラム（外部機器制御プログラム）が格納されている。上述の全体制御プログラムと同様に、この外部機器制御プログラムも、各種命令と、各種データとからなり、プログラムのバージョン番号等の属性データも含む。ＣＰＵ１６（１）〜１６（ｎ）は、この外部機器制御プログラムを実行することによって、外部機器２１（１）〜２１（ｎ）を制御する。また、このフラッシュメモリ１９（１）〜１９（ｎ）には、この外部機器制御プログラムに加えて、前述のプログラム書き込み処理時において、新たな外部機器制御プログラムをこのフラッシュメモリ１９（１）〜１９（ｎ）に書き込むプログラム（個別書き込みプログラム）が格納されている。また、各サブモジュール２（１）〜２（ｎ）は、各サブモジュール２（１）〜２（ｎ）に固有のＩＤ番号を保有したモジュール識別機構２２（１）〜２２（ｎ）を備え、このＩＤ番号は、各ＣＰＵ１６（１）〜１６（ｎ）により読み取り可能に構成されている。具体的には、各モジュール識別機構２２（１）〜２２（ｎ）にはＩ／Ｏポート（図示せず）において複数の信号線が設けられ、複数の信号線はそれぞれ電源の出力電位にプルアップ、または接地される。従って、例えば、信号線が８本存在する場合は、各モジュール識別機構２２（１）〜２２（ｎ）に対して２８（＝２５６）種類のＩＤ番号を設定することができる。各ＣＰＵ１６（１）〜１６（ｎ）は、このＩ／Ｏポートにおける複数の信号線の各信号線の電位を読むことにより、そのサブモジュールのＩＤ番号、つまり、そのサブモジュールの種類を認識する。なお、上述から分かるように、各サブモジュール２（１）〜２（ｎ）におけるメモリは、主として２種類のメモリ、つまり、ＲＡＭ１８（１）〜１８（ｎ）とフラッシュメモリ１９（１）〜１９（ｎ）とから構成され、メインモジュール１のようなＥＰＲＯＭは例えばコストダウンの観点から設けていない。
【００１６】
メモリカードモジュール３は、上述したメインモジュール１と同様に、通信入出力ドライバ９を備える。また、メモリカードモジュール３は、メモリカードコネクタ２５を備え、このメモリカードコネクタ２５において、メモリカード２４が挿入されている。このメモリカード２４は、コンパクトフラッシュ（登録商標）やスマートメディア等のフラッシュメモリであり、汎用的にパーソナルコンピュータ、特にノート型コンピュータで用いられているものと同じものである。このメモリカード２４内には、前述したプログラム書き込み処理時において、新たにインストールするプログラムデータ（全体制御プログラム及び外部機器制御プログラム）が格納されている。新たなプログラムの作成は汎用のパーソナルコンピュータで行う。作成された新たなプログラムは、この汎用のパーソナルコンピュータから、このパーソナルコンピュータのスロットに差し込まれたメモリカードに転送される。このメモリカードを、上述のメモリカードコネクタ２５に差し込んで、このメモリカード内のプログラムデータを制御装置に転送する。このようにプログラムの書き換えに当たっては汎用的なメモリカードを用いるため、特別な開発ツールや媒体は必要ない。
【００１７】
図２は、メモリカード２４に格納されたデータ構造（ファイル）を示す図である。
【００１８】
このデータ構造は、メインモジュール１に全体制御プログラムを書き込むためのメインモジュール１データと、各サブモジュール２（１）〜２（ｎ）に外部機器制御プログラムを書き込むためのサブモジュール２（１）〜２（ｎ）データとを有する。このデータ構造は、所定の基準となるアドレスから、例えば８ビット単位のブロックが、順次で並んでなるものである。以下、メインモジュール１データ及び各サブモジュール２（１）〜２（ｎ）データについてより詳細に説明する。
【００１９】
メインモジュール１データ及び各サブモジュール２（１）〜２（ｎ）データの先頭ブロック（第１のブロック）には、モジュールの種類を表すＩＤ番号が格納される。メインモジュールの場合は、ＩＤ番号は“０”であり、サブモジュールの場合は、上述したモジュール識別機構２２（１）〜２２（ｎ）に設定されたＩＤ番号である。
【００２０】
この第１のブロックに続くブロック（第２のブロック）には、後述する本体データ（新たなプログラム）が格納されたブロック数を示す数値が格納される。例えば、サブモジュール２（１）データの場合、本体データが格納されたブロックの数は、図２に示すように、“ｍ１−４＋１”個であるので、この第２のブロックには“ｍ１−４＋１”が格納される。
【００２１】
この第２のブロックに続くブロック（第３のブロック）には、本体データ（新たなプログラム）のバージョン番号が格納される。バージョン番号は、例えば、最初に作成したプログラムを“０”とし、更新する毎に数が増えていく。
【００２２】
以上に説明した１〜３番目までのブロックのデータを、図２に示すように、インデックスデータと称する。
【００２３】
この第３のブロックに続くブロック（第４のブロック）からｍｘ（ｘ＝１，２，・・・ｎ）番目のブロックまでは、新たに格納するプログラム（全体制御プログラムあるいは外部機器制御プログラム）が複数のブロックに分割されて格納されている。これらのブロックに格納されたプログラムは、図２に示すように、本体データと称される。
【００２４】
以上のような構成を有するメインモジュール１データ及びサブモジュール２（１）〜２（ｎ）データの内、最下位のサブモジュール２（ｎ）データの後には、データ構造（ファイル）の終わりを示す記号「ＦＥＮＤ」が格納される。
【００２５】
当然ながら、プログラムの書き込み対象となるモジュール（メインモジュール１及びサブモジュール２（１）〜２（ｎ））については任意に選択することができる。この場合、書き込み対象となるモジュールについてのみ、インデックスデータ及び本体データを作成すればよい。
【００２６】
また、上述のように、メインモジュール１も、プログラムの書き換え対象となるモジュールの１つであるので、メインモジュール用のインデックスデータ及び本体データのみを含め、サブモジュール用のものを含めないことも可能である。
【００２７】
また、各モジュールの最終データに、図２に示すように、チェックサムを格納する場合もある。チェックサムとは、データ内容を足し算した結果を下の桁からいくつか表示した数値である。チェックサムを格納することで、例えば、メモリカード２４上のチェックサムの値と、フラッシュメモリに書き込んだ値のチェックサムの値とが異なっている場合は「書き込みエラー」を表示したり、またはエラーとなったモジュールデータの書き込み処理を再び行ったりすることができる。
【００２８】
図３は、書き込み制御プログラムの動作アルゴリズムを示すフローチャートである。この書き込み制御プログラムは、上述したように、メインモジュール１におけるＥＰＲＯＭ１１内に格納されており、メインモジュール１のＣＰＵ１０によって解釈及び実行される。以下、このアルゴリズムに従った、プログラム書き込み処理について説明する。書き込むプログラムは、全体制御プログラム及び外部機器制御プログラムである。より詳しくは以下の通りである。
【００２９】
まず、図３のステップ１０に示すように、メインモジュール１におけるＥＰＲＯＭ１１に格納された書き込み制御プログラムを起動する（ステップＳ１０）。より詳しくは、まず、メモリカードモジュール３におけるコネクタ２５に、インデックスデータ及び本体データの入ったメモリカード２４を差し込む。この状態において、例えば、制御装置に設けられた特定のキー（図示せず）を押しながら、制御装置の電源を立ち上げる。このとき、メインモジュール１のＥＰＲＯＭ１１内格納プログラム（図示せず）が起動し、このプログラムの指示に従って、書き込み制御プログラムがＣＰＵ１０に読み込まれ及び解釈される。これにより、本書き込み制御プログラムに従った処理が開始される。
【００３０】
このとき、各サブモジュール２（１）〜２（ｎ）は、書き込み処理のための準備を開始する（ステップＳ１１）。より詳しくは、各サブモジュール２（１）〜２（ｎ）におけるＣＰＵ１６（１）〜１６（ｎ）は、フラッシュメモリ１９（１）〜１９（ｎ）内に格納された個別書き込みプログラムをＲＡＭ１８（１）〜１８（ｎ）上にロードする。各サブモジュール２（１）〜２（ｎ）は、個別書き込みプログラムをＲＡＭ１８（１）〜１８（ｎ）上にロードしたら、準備の完了を示す準備完了フラグをデータバス５上に送出する。ＣＰＵ１０は、データバス５上に送出された準備完了フラグを受信するまで待機する（ステップＳ１１のＮｏ）。
【００３１】
ＣＰＵ１０は、全てのサブモジュール２（１）〜２（ｎ）から準備完了フラグを受信したら（ステップＳ１１のＹｅｓ）、各サブモジュール２（１）〜２（ｎ）から順次、ＩＤ番号を読み出して、制御装置におけるサブモジュールの配置構成を把握する（ステップＳ１２）。より詳しくは、各サブモジュール２（１）〜２（ｎ）におけるＣＰＵ１６（１）〜１６（ｎ）が、ＣＰＵ１０からＩＤ番号取得指令を受けて、ＩＤ番号設定部２２（１）〜２２（ｎ）に保有されたＩＤ番号を取得し、取得したＩＤ番号をＣＰＵ１０に送出する。ＩＤ番号を取得したＣＰＵ１０は、取得したＩＤ番号に基づき、サブモジュールの配置構成を把握する。
【００３２】
ＣＰＵ１０は、サブモジュールの構成を把握したら、次に、メモリカード２４内の先頭ブロック（第１のブロック）（図２参照）内のデータを読み込む（ステップＳ１３）。
【００３３】
ＣＰＵ１０は、読み込んだ先頭ブロック内のデータがデータ終了記号“ＦＥＮＤ”（図２参照）であるかどうかを判断する（ステップＳ１４）。
【００３４】
ＣＰＵ１０は、読み込んだ先頭ブロック内のデータがデータ終了記号“ＦＥＮＤ”であると判断した場合は（ステップＳ１４のＹｅｓ）、プログラム書き込み処理を終了する。
【００３５】
一方、ＣＰＵ１０は、読み込んだ先頭のブロック内のデータがデータ終了記号“ＦＥＮＤ”（図２参照）でないと判断した場合は（ステップＳ１４のＮｏ）、つまり、その先頭ブロック内のデータはＩＤ番号であると判断した場合は（図２参照）、そのＩＤ番号を有するモジュール（メインモジュール１あるいはサブモジュール２（１）〜２（ｎ））が制御装置内に存在するかどうかを判断する（ステップＳ１５）。具体的には、ＣＰＵ１０は、上のステップＳ１２で取得したＩＤ番号の中に、この先頭ブロック内のＩＤ番号と同じものが存在するかどうかを判断する（ステップＳ１５）。
【００３６】
ＣＰＵ１０は、ステップＳ１２で取得したＩＤ番号の中に、先頭ブロック内のＩＤ番号と同じものが存在しないと判断した場合は（ステップＳ１５のＮｏ）、以下のステップＳ１６、Ｓ１７を飛ばして、続くステップＳ１８に進む。
【００３７】
一方、ＣＰＵ１０は、ステップＳ１２で取得したＩＤ番号の中に、先頭ブロック内のＩＤ番号と同じものが存在すると判断した場合は（ステップＳ１５のＹｅｓ）、この先頭ブロックに続くブロック（第２のブロック）内のデータ、つまり、データ数（ブロック数）（図２参照）を取得し、ＲＡＭ１２に格納する。さらに、ＣＰＵ１０は、この第２のブロックに続くブロック（第３のブロック）内のデータ、つまり、バージョン番号（図２参照）を取得し、書き換え対象となるプログラムのバージョン番号と比較する（ステップＳ１６）。より詳しくは、書き換え対象がメインモジュール１である場合は、ＣＰＵ１０は、第３のブロック内のバージョン番号を、フラッシュメモリ１３内の全体制御プログラムのバージョン番号（前述したように全体制御プログラム中に含まれる）と比較する。一方、書き換え対象が各サブモジュール２（１）〜２（ｎ）である場合は、ＣＰＵ１０は、第３のブロック内のバージョン番号を、書き込み対象となるサブモジュール２に設けられたフラッシュメモリ１９内の外部機器制御プログラムのバージョン番号（前述したように外部機器制御プログラム中に含まれる）と比較する。より詳しくは、ＣＰＵ１０は、書き込み対象となるサブモジュール２における各ＣＰＵ１６にバージョン番号取得指令を出し、このバージョン番号取得指令を受けたＣＰＵ１６が、フラッシュメモリ１９内の外部機器制御プログラムからバージョン番号を取得して、ＣＰＵ１０に送出する。ＣＰＵ１０は、第３のブロック内のバージョン番号と、受信したバージョン番号とを比較する。
【００３８】
比較の結果、ＣＰＵ１０が、第３のブロック内のバージョン番号が、書き換え対象となるプログラムのバージョン番号以下であると判断した場合は（ステップＳ１６のＮｏ）、以下のステップＳ１７を飛ばして、続くステップＳ１８に進む。
【００３９】
一方、比較の結果、ＣＰＵ１０が、第３のブロック内のバージョン番号が、書き換え対象となるプログラムのバージョン番号よりも大きいと判断した場合（つまり新たに格納するプログラムが最新のものである場合）は（ステップＳ１６のＹｅｓ）以下の処理を行う。まず、書き換え対象がメインモジュール１である場合は、ＣＰＵ１０は、フラッシュメモリ１３内のデータを全て消去し、１ユニット（１モジュール）分の本体データ（図２参照）をメモリカード２４から読み込み、読み込んだ本体データをフラッシュメモリ１３内に書き込む（ステップＳ１７）。１ユニット分の本体データの読み込みは、上のステップＳ１６において取得したブロック数分のデータを、上述のバージョン番号が格納された第３のブロックの次のブロック（第４のブロック）から読み込むことで行う（図２参照）。一方、書き換え対象が各サブモジュール２（１）〜２（ｎ）である場合は、ＣＰＵ１０は、該当するサブモジュール２のＣＰＵ１６に対してプログラム書き換えの指示を出す（ステップＳ１７）。この指示を受信したＣＰＵ１６は、ＲＡＭ１８上にロードされた個別書き込みプログラムを実行して以下の処理を行う（ステップＳ１７）。即ち、まず、ＣＰＵ１６は、フラッシュメモリ１９内のデータ（外部機器制御プログラム及び個別書き込みプログラム）を全て消去する（ステップＳ１７）。次いで、ＣＰＵ１０が、メモリカード２４内の本体データ（図２参照）をメモリカード２４から読み込み、読み込んだ本体データ（新たな外部機器制御プログラム）を通信入出力ドライバ８を介してＣＰＵ１６へ渡す。ＣＰＵ１６は、受け取った本体データをフラッシュメモリ１９に書き込む（ステップＳ１７）。この後、ＣＰＵ１６は、ＲＡＭ１８上にロードした個別書き込みプログラムをフラッシュメモリ１９内に書き込む（ステップＳ１７）。なお、個別書き込みプログラムによる書き込みは、予めこの個別書き込みプログラムを上述の本体データとしてメモリカード２４内に格納しておき、上述の新たな外部機器制御プログラムと共にフラッシュメモリ１９に書き込むようにしてよい。
【００４０】
ＣＰＵ１０は、フラッシュメモリ内へのプログラムの書き込みが終わったら、メモリカード２４のアクセスポインタを次のモジュールデータ（メインモジュールデータあるいはサブモジュールデータ）（図２参照）の先頭にセットし（ステップ１８）、上述のステップ１３〜Ｓ１７を、データ終了記号“ＦＥＮＤ”を読み込むまで（ステップＳ１４のＹｅｓ）、繰り返す。
【００４１】
ＣＰＵ１０は、データ終了記号“ＦＥＮＤ”を読み込んだら（ステップＳ１４のＹｅｓ）、書き込み制御プログラムを終了する。この後、制御装置を再起動させると、通常の動作モードとなり、新たにフラッシュメモリ１３に書き込まれた全体制御プログラム、及び新たに各フラッシュメモリ１９（１）〜１９（ｎ）に書き込まれた外部機器制御プログラムが実行される。
【００４２】
上述したプログラムの書き込み処理において新たな外部機器制御プログラムを書き込む際には、フラッシュメモリ１９内のデータを全消去するため、個別書き込みプログラムを一旦フラッシュメモリ１９からＲＡＭ１８上にロードして実行した。しかし、この個別書き込みプログラムを別のメモリ、例えばＥＰＲＯＭに格納し、このＥＰＲＯＭを各サブモジュール２（１）〜２（ｎ）に設けることで、このＥＰＲＯＭ内の個別書き込みプログラムをＲＡＭ１８上にロードすることなく、ＥＰＲＯＭ上で直接、実行してもよい。これによれば、ＲＡＭ１８上に個別書き込みプログラムをロードしたり、フラッシュメモリ１９に個別書き込みプログラムを書き込んだりする必要はないので、プログラムの書き込み処理を効率化できる。
【００４３】
また、上述のように、プログラムの書き込み処理においては、フラッシュメモリ内のデータを一旦全部消去して、新たにプログラムをフラッシュメモリに書き込むこととした。しかし、フラッシュメモリ内のプログラムの一部を書き換えたり、新たに差分プログラムを追加したりすることにより、プログラムを更新するようにしてもよい。この場合は、メモリカード２４内には、一部書き換え用のデータや追加分の差分データを用意すればよい。
【００４４】
また、当然ながら、１つの制御装置内に同じ種類のサブモジュールが複数装備されている場合もあり、そのような場合にも、すべてのサブモジュールについて、上述のプログラム書き込み処理を行うことができる。
【００４５】
ところで、制御装置は、例えば各サブモジュール２に接続された外部機器の表示部に、外部機器の操作の仕方を示すヘルプ画面としての操作画面データを表示して、作業者に対し操作のガイドする場合がある。この場合、例えば、この操作画面データは、上述したフラッシュメモリ１９内に格納される。このフラッシュメモリ１９内には、前述したように、個別書き込みプログラムも格納されている。このような状態において、フラッシュメモリ１９内に格納された個別書き込みプログラム及び操作画面データのうち、いずれか一方のみを更新したい場合もある。つまり、個別書き込みプログラム及び操作画面データをそれぞれ独立して更新したい場合がある。このためには、上述のサブモジュール２（１）〜２（ｎ）のうちの任意のサブモジュール２（ｍ）（ｍ＝１、２、３・・・ｎ）を示す図４から分かるように、例えば、フラッシュメモリ１９（ｍ）の領域を、個別書き込みプログラム及び外部機器制御プログラムを格納するプログラム領域１９ａと、画像データを格納するデータ領域１９ｂとに分割する。そして、上述のプログラム書き込み処理時において、プログラム領域１９ａ内のプログラムとデータ領域１９ｂ内の画像データのいずれか一方あるいは両方を書き換えるようにすればよい。これを実現するためのデータ構造を図５に示す。
【００４６】
図５に示すように、このデータ構造においては、ＩＤ番号の格納されたブロックの次のブロックに、書き換え対象がプログラムあるいは画像データであることを示す記号（データ種類）が格納される。この例では、プログラムの場合は“ｐ”、画像データの場合は“ｄ”が格納されている。上述した書き替え制御プログラムを実行するＣＰＵ１０は、このデータ種類“ｐ”あるいは“ｄ”が格納されたブロックを読み込み、このブロック内のデータが“ｐ”（プログラム）であると判断した場合は、本体データ（図５参照）をフラッシュメモリ２（ｍ）のプログラム領域１９ａに書き込む。一方、ＣＰＵ１０は、ブロック内のデータが、“ｄ”（画像データ）であると判断した場合は、本体データ（画像データ）をデータ領域１９ｂに書き込む。これにより、プログラムと画像データをそれぞれ独立して自動的に書き換えることができる。
【００４７】
図４及び図５に示す書き換え例では、サブモジュールを対象としたが、メインモジュールにおいても、同様に、プログラムと画像データとをそれぞれ独立に更新することができる。また、データ領域１９ｂには画像データを格納することとしたが、その他のデータ、例えば、プログラムのバージョン番号なども、プログラム領域１９ａでなく、このデータ領域１９ｂに格納してもよい。
【００４８】
以上のように本実施の形態によれば、容易にプログラムや画像データ等のデータを更新することができる。
【００４９】
即ち、サブモジュールの配置構成の違いにより多種の制御装置があるが、各制御装置のプログラム及びデータを更新する場合でも、各制御装置分の更新用のデータを１つにまとめ、１つにまとめられた更新用のデータを各制御装置に用いることができる。これは、１つにまとめられたデータのうち、ある制御装置にとって必要な更新用データのみが、前述したＩＤ番号に基づき抽出され、その制御装置に書き込まれるからである。
【００５０】
また、プログラムの書き込み処理時において、プログラムのバージョン番号も自動的にチェックし、最新のバージョン番号の方を優先するようにしたので、プログラムのバージョン管理も簡単になる。
【００５１】
また、更新用のデータを格納する媒体として汎用的なメモリカードを用いるようにしたので、特別な装置の開発は必要ない。これにより、例えば、制御装置の配置された現場と、プログラム等を開発する部署が離れていても、迅速に制御装置内のプログラム及びデータを更新することができる。つまり、書き込み用のデータを、制御装置の近くにあるパーソナルコンピュータに開発部署からネットワークを介して送出し、この書き込み用のデータをこのパーソナルコンピュータで受信する。次いで、この書き込み用のデータをこのパーソナルコンピュータから、このパーソナルコンピュータに差し込まれたメモリカードに転送し、書き込み用のデータが格納されたメモリカードをパーソナルコンピュータから抜いて、制御装置のコネクタに差し込む。この後、上述した本実施の形態を用いて、制御装置内に格納された各種のプログラム及びデータを更新する。これによれば、従来のように、新たなプログラムを格納したＥＰＲＯＭを現場に運んで交換するという作業は必要ないので、素早くプログラム及びデータの更新をすることができる。
【００５２】
以上に述べた本実施の形態では、ストレージ装置としてメモリカードを用いたが、その他、例えば、ハードディスクや、磁気ディスク、光ディスクを用いることもできる。
【００５３】
また、本実施の形態では、メモリカードを制御装置本体に直接差し込むことによりメモリカード内のデータを読み出したが、このメモリカード内のデータをインターネット等のネットワーク越しに読み出すようにしてもよい。
【００５４】
また、本実施の形態では、プログラムの更新対象として、全体制御プログラムと外部機器制御プログラムを選択したが、この他に、例えば、書き込み制御プログラムや、個別書き込みプログラム自体も更新の対象とすることができる。書き込み制御プログラムの更新では、例えば、書き換え対象となるプログラムを上述のＥＰＲＯＭではなく、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリに格納し、書き込み制御プログラムの実行時において、この書き込み制御プログラムをＲＡＭ上にロードして実行する。そして、新たな書き込み制御プログラムをストレージ装置から読み出し、上述のＥＥＰＲＯＭやフラッシュメモリに書き込む。一方、個別書き込みプログラムの更新の場合も、同様に、更新時において、個別書き込みプログラムをＲＡＭ上にロードして実行し、ストレージ装置から読み出した新たな個別書き込みプログラムをフラッシュメモリに書き込む。
【００５５】
また、本実施の形態では、各モジュールに対する書き込み用のプログラムを１つのファイルにまとめ、この１つのファイルを用いて、各モジュールに対し一括してプログラムを書き込むようにした。しかし、書き込み用のプログラムを格納したファイルをモジュールごとに作成し、マニュアルモードなどにより、書き換えるモジュールとそれに対応したファイルを選択するようにすることで、各モジュールに対してそれぞれ個別のファイルを用いてプログラムを書き込むようにしてもよい。
【００５６】
また、本実施の形態では、書き込むプログラムのバージョンが、書き換え対象となるプログラムのバージョンよりも古いときは、プログラムの書き換えを行わないようにしたが、書き換え制御プログラムのオプションとして、プログラムのバージョンにかかわらず（例えば古いバージョンのものであっても）書き込み可能とするモードを設けてもよい。これは、バージョンアップされたプログラムにおいて後から不具合な点などが発見された場合に、前のバージョンのプログラムに戻す処理を可能とするためである。
【００５７】
【発明の効果】
本発明によれば、ストレージ装置から読み出した更新用のプログラムを用いて、電気的に書き換え可能な不揮発性のメモリ内に格納された外部機器制御プログラムを書き換えるようにしたので、外部機器制御プログラムを容易に更新することができる。
【図面の簡単な説明】
【図１】本実施の形態としての制御装置の構成を示すブロック図である。
【図２】フラッシュメモリ内のプログラムを更新するためのデータ構造を示す図である。
【図３】書き込み制御プログラムの動作アルゴリズムを示すフローチャートである。
【図４】サブモジュールにおけるフラッシュメモリの領域をプログラム領域とデータ領域とに分けた状態を示す図である。
【図５】プログラムと画像データとをそれぞれ独立にデータ更新するためのデータ構造を示す図である。
【符号の説明】
１  メインモジュール
２  サブモジュール
３  メモリカードモジュール
５  データバス
６、８、９  通信入出力ドライバ
１０、１６  ＣＰＵ
１１  ＥＰＲＯＭ
１２、１８  ＲＡＭ
１３、１９  フラッシュメモリ
１４、２０  入出力ドライバ
１５  入出力端末機器
１９ａ  プログラム領域
１９ｂ  データ領域
２１  外部機器
２２  モジュール識別機構（ＩＤ番号）
２４  メモリカード
２５  コネクタ
【図１】
2004295589.tif 000003
【図２】
2004295589.tif 000004
【図３】
2004295589.tif 000005
【図４】
2004295589.tif 000006
【図５】
2004295589.tif 000007