プログラマブルロジックコントローラの実行環境をバージョンアップする方法であって、前記コントローラのコントローラ型式および前記コントローラのオペレーティングシステムのバージョン情報を読み出すステップと、前記コントローラ型式および前記バージョン情報に対応するバージョンアップ情報を読み出すステップと、前記バージョンアップ情報に基づいて前記実行環境の中でバージョンアップされるべき部分を判定するステップと、前記実行環境の中で前記判定された部分をバージョンアップするステップと、を備えることを特徴とする方法。前記バージョンアップ情報は、前記実行環境の中でバージョンアップされるべき部分を特定する情報を含む、ことを特徴とする請求項1に記載の方法。前記バージョンアップ情報は、バージョンアップ機能一覧を特定する情報を含み、前記バージョンアップ機能一覧は、前記実行環境に含まれる機能の中でバージョンアップされるべき機能に関する情報を含む、ことを特徴とする請求項1に記載の方法。前記コントローラのオペレーティングシステムの実行パラメータを読み出すことにより、前記実行環境に含まれる前記機能が前記コントローラのユーザによって使用されているかどうかを判定するステップと、前記実行環境中、前記ユーザによって使用されている実行環境の機能だけにバージョンアップを適用するステップと、をさらに備える、ことを特徴とする請求項3に記載の方法。前記バージョンアップ機能一覧の中の機能をバージョンアップするかどうかを選択するための選択肢を前記ユーザに提供するステップと、前記選択肢を用いて前記ユーザによって選択された機能だけをバージョンアップするステップと、をさらに備える、ことを特徴とする請求項3に記載の方法。前記バージョンアップ情報は、バージョンアップされるべき複数の命令を特定する情報を含む、ことを特徴とする請求項1に記載の方法。ユーザアプリケーションプログラムが前記複数の命令中の一つの命令を使用しているかどうかを判定するステップと、前記ユーザアプリケーションプログラムが前記複数の命令の中の少なくとも1つを使用していると判定された場合に前記ユーザアプリケーションプログラムをバージョンアップするステップと、をさらに備える、ことを特徴とする請求項6に記載の方法。プログラマブルロジックコントローラのソフトウェア保守を実行するシステムであって、プログラミングツールと、コントローラと、を備え、前記プログラミングツールは、前記コントローラの実行環境をバージョンアップするように操作可能であり、前記プログラミングツールは、前記コントローラのコントローラ型式および前記コントローラのオペレーティングシステムのバージョン情報を読み出すコントローラ型式判定ユニットと、前記コントローラ型式および前記バージョン情報に対応するバージョンアップ情報を読み出すバージョンアップ情報判定ユニットと、前記バージョンアップ情報に基づいて前記実行環境の中でバージョンアップされるべき部分を判定するバージョンアップエリア判定ユニットと、前記実行環境の中の前記判定された部分をバージョンアップするバージョンアップユニットと、を含む、ことを特徴とするシステム。前記バージョンアップ情報は、前記実行環境の中でバージョンアップされるべき部分を特定する情報を含む、ことを特徴とする請求項8に記載のシステム。前記バージョンアップ情報は、バージョンアップ機能一覧を特定する情報を含み、前記バージョンアップ機能一覧は、前記実行環境に含まれる機能の中でバージョンアップされるべき機能に関する情報を含む、ことを特徴とする請求項8に記載のシステム。前記バージョンアップエリア判定ユニットは、前記コントローラのオペレーティングシステムの実行パラメータを読み出すことにより、前記実行環境に含まれる前記機能が前記コントローラのユーザによって使用されているかどうかを判定し、前記バージョンアップユニットは、前記実行環境の中で、前記ユーザによって使用されている実行環境の機能だけにバージョンアップを適用する、ことを特徴とする請求項10に記載のシステム。前記システムでは、前記バージョンアップ機能一覧の中の機能をバージョンアップするかどうかを選択するための選択肢が前記ユーザに提供され、前記バージョンアップユニットは、前記ユーザによって選択された機能だけをバージョンアップする、ことを特徴とする請求項10に記載のシステム。前記バージョンアップ情報は、バージョンアップされるべき複数の命令を特定する情報を含む、ことを特徴とする請求項8に記載のシステム。前記バージョンアップエリア判定ユニットは、ユーザアプリケーションプログラムが前記複数の命令中の一つの命令を使用しているかどうかを判定し、前記バージョンアップユニットは、前記ユーザアプリケーションプログラムが前記複数の命令の中の少なくとも1つを使用していると判定された場合に、前記ユーザアプリケーションプログラムをバージョンアップする、ことを特徴とする請求項13に記載のシステム。コンピュータに、プログラマブルロジックコントローラの実行環境をバージョンアップする方法を実行させるためのプログラムであって、前記コンピュータに、前記コントローラのコントローラ型式およびオペレーティングシステムのバージョン情報を読み出すステップと、前記コントローラ型式および前記バージョン情報に対応するバージョンアップ情報を読み出すステップと、前記バージョンアップ情報に基づいて前記実行環境の中でバージョンアップされるべき部分を判定するステップと、前記実行環境の中で前記判定された部分をバージョンアップするステップと、を実行させることを特徴とするプログラム。前記バージョンアップ情報は、前記実行環境の中でバージョンアップされるべき部分を特定する情報を含む、ことを特徴とする請求項15に記載のプログラム。前記バージョンアップ情報は、バージョンアップ機能一覧を特定する情報を含み、前記バージョンアップ機能一覧は、前記実行環境に含まれる機能の中でバージョンアップされるべき機能に関する情報を含む、ことを特徴とする請求項15に記載のプログラム。前記コンピュータに、前記コントローラのオペレーティングシステムの実行パラメータを読み出すことにより、前記実行環境に含まれる前記機能が前記コントローラのユーザによって使用されているかどうかを判定するステップと、前記実行環境の中で前記ユーザによって使用されている実行環境の機能だけにバージョンアップを適用するステップと、をさらに実行させる、ことを特徴とする請求項17に記載のプログラム。前記コンピュータに、前記バージョンアップ機能一覧の中の機能をバージョンアップするかどうかを選択する余地を前記ユーザに提供するステップと、前記ユーザによって選択された機能だけをバージョンアップするステップと、をさらに実行させる、ことを特徴とする請求項17に記載のプログラム。前記バージョンアップ情報は、バージョンアップされるべき複数の命令を特定する情報を含む、ことを特徴とする請求項15に記載のプログラム。前記コンピュータに、ユーザアプリケーションプログラムが前記複数の命令中の一つの命令を使用しているかどうかを判定するステップと、前記ユーザアプリケーションプログラムが前記複数の命令の中の少なくとも1つを使用していると判定された場合に前記ユーザアプリケーションプログラムをバージョンアップするステップと、をさらに実行させる、ことを特徴とする請求項20に記載のプログラム。したがって、コントローラの実行環境の効率的なバージョンアップを可能にするためのシステムや方法が要求される。本発明の例示的な実施形態は、少なくとも上記した問題点や不都合な点及び前述されていないその他の不都合な点について言及するものである。本発明は上記不都合な点を克服することが要求されているものではなく、また本発明の実施形態によって必ずしも上記した不都合な点を克服するものでもない。本発明の第1の局面によって、プログラマブルロジックコントローラの実行環境をバージョンアップする方法が提供されている。この方法には、前記コントローラのコントローラ型式および前記コントローラのオペレーティングシステムのバージョン情報を読み出すステップと、前記コントローラ型式および前記バージョン情報に対応するバージョンアップ情報を読み出すステップと、前記バージョンアップ情報に基づいて前記実行環境の中でバージョンアップされるべき部分を判定するステップと、前記実行環境の中で前記判定された部分をバージョンアップするステップとが含まれている。本発明の第2の局面によってプログラマブルロジックコントローラのソフトウェア保守を実行するシステムが提供されている。このシステムには、プログラミングツールとコントローラとが備わっている。前記プログラミングツールは、前記コントローラの実行環境をバージョンアップするための操作が可能である。また、前記プログラミングツールは、該コントローラのコントローラ型式および前記コントローラのオペレーティングシステムのバージョン情報を読み出すコントローラ型式判定ユニットと、前記コントローラ型式および前記バージョン情報に対応するバージョンアップ情報を読み出すバージョンアップ情報判定ユニットと、前記バージョンアップ情報に基づいて前記実行環境の中でバージョンアップされるべき部分を判定するバージョンアップエリア判定ユニットと、前記実行環境の中の前記判定された部分をバージョンアップするバージョンアップユニットと、が含まれている。本発明の上記態様および/または他の態様は、添付図面を参照して本発明のいくつかの例示的な実施形態を説明することによってより一層明らかになるであろう。以下に本発明のいくつかの実施形態を添付図面を参照してより詳細に説明する。以下の説明では、異なる図面であっても類似した要素には類似の参照番号が使用される。発明の包括的な理解を助けるべく、詳細な構成や構成要素等が明細書中で例示されているが、しかしながら、本発明は具体的に例示されたこれらの事項なしに実施することも可能である。さらに、不必要な細部を記載することで発明を分かり難くすることがあるので、既知の機能または構成は詳細に説明されていない。実施の形態.図1は、本発明の例示的な実施形態によるシステム構成を示している。プログラミングツール1は、ユーザによって開発されたプログラムを制御シーケンサ2にインストールする。シーケンサ2は、ユーザの製造プロセスを制御する機器である。シーケンサ2はプログラマブルロジックコントローラPLCでもよい。シーケンサ2およびプログラミングツール1は、USBユニバーサルシリアルバスなどの手段によって互いに接続され得るものである。プログラミングツール1は、異なる機能を実行する別個の論理ユニットまたは処理ユニットを備えるプロセッサを含んでいてもよい。これらそれぞれ異なる論理ユニットは、プロセッサ上で具現化されるソフトウェアに組み込ませることができる。サーバ3はインターネット4を介してプログラミングツール1に接続され、シーケンサ2で使用されるソフトウェアを保守バージョンアップするために必要な情報やファイルを格納する。以下、シーケンサおよびコントローラの語が交互に用いられているが、それらはシーケンサ2を指すものである。サーバ3は、シーケンサ3の製造元またはシーケンサ2をサポートする別の保守会社によって管理されているコンピュータであってもよい。サーバ3はインターネット4と接続され、規定されたURLに基づく所定の要求を受け付ける。サーバ3は、ストレージユニットとしてハードディスクドライブユニットを有することができ、そのストレージユニット内にシーケンサ2の保守および交換のために準備された後述するバージョンアップソフトウェア52および後述するバージョンアップ情報53を格納することができる。次に、図2は、コントローラ2の実行環境例えば、オペレーティングシステムに対して、それによりバージョンアップが適用され得る手順を示している。ステップS201では、顧客が、自身が保守することを望む対象コントローラにプログラミングツールを接続する。ステップS202では、対象コントローラのOSオペレーティングシステムのバージョンを示すデータすなわち、バージョン情報及び他のデータがプログラミングツールによって読み出される。ステップS203では、プログラミングツールは、該コントローラから読み出されたOSバージョンバージョン情報に関してサーバ3に格納されているOSデータ情報を参照する。ステップS204では、プログラミングツールは、コントローラの実行環境例えば、オペレーティングシステムにバージョンアップを適用すべきかどうかを判定する。また、プログラミングツールは、プログラミングツールがコントローラから読み出したOSバージョンを示すデータすなわち、バージョン情報および他のデータに基づいて、バージョンアップの内容を決定する。プログラミングツールは、バージョンアップが適用されるべきでないと判定した場合ステップS204でNoの場合に、処理を終了し、バージョンアップが適用されるべきであると判定した場合ステップS204でYesの場合に、処理をステップS205へ進める。ステップS205では、プログラミングツールは、コントローラの実行環境にバージョンアップを適用する。上記手順は本発明によって想定され得る手順の一例についての概略的な記述であり、その詳細は、次にコントローラの構造を詳細に説明することにより明らかにされるであろう。図3Aは、シーケンサ2の構成を説明するための図である。シーケンサ2では、外部ユニット21および22がシステムバス24を介してコントローラモジュール23に接続される。外部ユニット21および22は、図示されていないセンサ、ランプ、アクチュエータおよびサーボ等の外部装置または外部機器に接続されるユニットであり、外部装置または外部機器に関するデータを格納している。これら外部装置または外部機器は、例えば外部ユニット21および22との間で情報や信号をやり取りすることなどにより、所定の製造プロセスを実行する。外部ユニット21および22は、ビット群に基づくデジタル情報やアナログ信号の入出力に用いることができる。コントローラモジュール23は、プロセッサ231と、メモリユニット232と、システムバスI/F233と、プログラミングツール接続ユニット234とを含む。コントローラモジュールはシステムバスI/F233を介してシステムバス24と通信する。プロセッサ231は、ユーザによって開発されたプログラムや、シーケンサ2のオペレーティングシステムOSを実行するMPUマイクロプロセッシングユニットである。以下、ユーザによって開発されたプログラムは、アプリケーションプログラムと称する。メモリユニット232は不揮発性メモリ232aおよび揮発性メモリ232bを備えている。不揮発性メモリ232aは、OS実行パラメータ31、OSプログラムファイル32、OSバージョン情報33、ユーザプログラム34、及びコントローラ情報35等を格納している。揮発性メモリ232bは、外部装置または外部機器に関するデータを外部ユニット21および22からシステムバス24経由で取得し格納している。しかしながら、不揮発性メモリ232aに格納された情報の全部または一部は高速アクセスの目的でさらに揮発性メモリ232bに格納することもできる。メモリユニット232の内容は、搬送波、RF信号、イーサネット登録商標Ethernet登録商標信号、TCP/IPなどの様々な手段を介してバージョンアップすることができる。そのすべてを網羅しているわけではないが、記憶媒体のリストには、1本またはそれ以上の配線を有する電気的接続、フロッピー登録商標ディスクもしくはフレキシブルディスクのような携帯用コンピュータディスケット、磁気テープもしくは他の磁気的媒体、ハードディスク、ランダムアクセスメモリRAM、リードオンリーメモリROM、消去可能プログラマブルリードオンリーメモリEPROMまたはフラッシュメモリ、メモリカード、その他のメモリチップもしくはカートリッジ、光ファイバ、携帯用コンパクトディスクリードオンリーメモリCD-ROM、その他の光学的媒体、パンチカード、紙テープ、その他穴パターンを備えた物理的媒体、コンピュータ/コントローラが読み出すことができるその他の媒体、またはこれらの適当な組み合わせが含まれる。プログラミングツール接続ユニット234は、シーケンサ2がネットワークインターフェイスモジュールを介してプログラミングツールと通信することができるようなネットワークインターフェイスモジュール104を含んでいてもよい。ネットワークインターフェイスモジュール104は、データバスに連結されたネットワークインターフェイスカードを含んでいてもよい。ネットワークインターフェイスモジュールは、ネットワークリンクへの双方向データ通信接続を提供する。そのような双方向データ通信接続は、ローカルエリアネットワークLANに接続されるものでもよい。たとえば、ネットワークインターフェイスモジュール104は、対応する型の電話回線へのデータ通信接続を提供する統合サービスデジタルネットワークISDNカードまたはモデムでもよい。また別の実施例として、ネットワークインターフェイスモジュール104は、互換性があるLANへのデータ通信接続を提供するローカルエリアネットワークインターフェイスカードLANNICでもよい。既知の802.11a、802.11b、802.11gおよびBluetooth等の無線リンクもネットワークの実装のために使用してもよい。このような実装においては、いずれもネットワークインターフェイスモジュール104が、様々なタイプの情報を示すデジタル/アナログデータストリームを搬送する電気的、電磁気的、または、光学的信号を送受信する。OS実行パラメータ31は、OSプログラム32の演算パラメータを含んでおり、たとえば、ウォッチドッグタイマWDTセッティングをOS実行パラメータ31として含めることができる。OSプログラム32は、ある一定の演算を実行するためにOS実行パラメータを利用する機能を参照する。たとえば、エラー処理用機能たとえば、ゼロ除算が生じたとき、または、ユーザのコード中の規定がコントローラによって実行できないときに何が起こるかを定義する機能がOSプログラム32として認識され得る。OSプログラム32は、OSプログラムの演算が各機能用の演算パラメータに基づいて変化するように設計される。OSプログラム32の別の例として、ウォッチドッグタイマWDTセッティングを監視し、ウォッチドッグタイマWDTセッティングがある一定の値たとえば、200ミリ秒を超えた場合、現在実行中のプログラムを停止するプログラムであってもよい。OSプログラム32は、コントローラの実行環境の全体的な機能を調整するプログラムコードを代表するものである。OSプログラム32はパーソナルコンピュータのOSのカーネルコードに類似している。OSのカーネルコードと同様に、OSプログラム32は特権モードで動き、ラダープログラム等のユーザプログラムは、OSプログラムを変更したり、またはOSプログラムを制御したりすることはできないが、OSプログラムはユーザプログラムの実行を制御する。さらに、OSプログラム32は、コントローラハードウェアの最適な実行、ユーザシーケンスプログラムの管理および実行、プログラミングツールとの通信、コントローラハードウェアの診断、及びハードウェア診断の結果の報告等の責任を負う。OSバージョン情報33は、現行のOSプログラム32のバージョンを識別するため使用される情報である。ユーザプログラム34はコントローラを制御するための命令のリストである。工場自動化の分野では、ラダーダイアグラムの形式のプログラムが使用されることが多い。コントローラ情報35は、コントローラの製造元、モデル名、型式などに関する情報に相当するものである。図3Bは、コントローラのソフトウェアの内部構造を示しており、図3Bの詳細な説明は図6の説明の後に行われる。図4Aおよび図4Bは、OS実行パラメータ31のいくつかの例をより詳細に示している。ウォッチドッグタイマWDTセッティング401は、OS実行パラメータ31の一例である。図4Aは、グラフィカルユーザインターフェイスを介して、複数のOS実行パラメータを示している。すなわち、複数のOS実行パラメータは、グラフィカルユーザインターフェイスを使用して構成することができる。図4Aは、OS実行パラメータ31の別の例であるエラーチェック402も示している。OS実行パラメータは、図4Bに示されているようにMPUレジスタのようなデータ構造として構成することができる。データ構造403は、WDTセッティング401を示しており、WDTセッティング401の様々な部分を指す複数のビットを含んでいる。たとえば、データ構造403のビット0は、初期実行監視時間がオンにされているか、または、オフにされているかを指定する。ビット1は、低速実行監視時間がオンにされているか、またはオフにされるかどうかを指定する。データ構造403の中の残りのビット群は、図4AでWDTセッティングフィールドに入力された値を指定することができる。同様に、データ構造404は、図4Aにおいてエラーチェック402のセッティングに関係した複数のビットを示している。たとえば、データ構造404中のビット0は、図4Aでバッテリチェック実行セッティングがユーザによりチェックされる場合に1である。図5は、OSプログラム32をより詳細に示したものである。図5に示されるように、OSプログラム32はさらに複数の実行モジュールに分割され得る。たとえば、実行モジュール32aはある一定のエラー処理を実施し、別の実行モジュール32bはウォッチドッグタイマWDTを実施し、さらに別の実行モジュール32cは、ラダープログラムで使用されるオペレータに対応する命令コードを実施することができる。たとえば、実行モジュール32は、LD、MOVなどの命令やそれらの定義を含むことができるのである。図6は、ユーザプログラム34に格納されたラダープログラムの一例を示している。ラダープログラムは、一種のユーザアプリケーションプログラムである。ラダープログラムの各ステップは、オペレータがそれに従って動作するオペランドで構成されている。オペレータは演算のタイプを示す識別子である。オペランドは、オペレータがそれに従って動作するデータまたは変数である。たとえば、コマンドLDSM400は、SM400と称するオペランドと、LDと称するオペレータとの組み合わせで構成される。オペレータLDは、SM400に格納された値をメモリにロードすることができる命令である。LD命令は、メモリに格納されたデータをSM400にロードするように定義され得る。このLD命令は、単なる一例であり、実行環境が異なればLDを異なるように定義し得る。図3Bは、コントローラのソフトウェアの内部構造を図示したものである。コントローラのソフトウェアの内部構造は、7つのレイヤ7つのソフトウェアレイヤに分割することが可能であり、OSプログラムファイル32は、この7つのレイヤのうちの5つのレイヤを含む。なお、図3Bには、7つのレイヤのうちの6つのレイヤが例示されている。ユーザレイヤ301は、OS実行パラメータ、ユーザシーケンスプログラム、及びI/Oデータを含んでいる。ユーザレイヤ301は、コントローラのOSプログラム32図3A参照のファイル中に含まれないが、コントローラのOSプログラム32のファイルと密接に関連している。OS実行パラメータは、OS実行パラメータ31図3A参照に対応し、ユーザシーケンスプログラムは、ユーザプログラム34図3A参照に対応している。I/Oデータは、ユーザシーケンスプログラムの実行のために使用される入力データおよび出力データを指す。コントローラは、外部ユニット21、22から入力データを取得し、ユーザシーケンスプログラムを実行してデータを外部ユニット21、22へ出力する。ユーザI/Fレイヤ302は、コントローラOSの一部である。より具体的には、ユーザI/Fレイヤ302は、OSプログラム32図3A参照のファイルの一部である。ユーザI/Fレイヤ302は、OS実行パラメータデコードおよびユーザシーケンスプログラムデコード等の機能を含んでいる。OS実行パラメータデコード機能は、OS実行パラメータ31図3A参照を読んで復号するための機能である。同様に、ユーザシーケンスプログラムデコード機能は、ユーザシーケンスプログラムを読んで復号するための機能である。アプリケーションレイヤ303は、OSプログラム32図3A参照のファイルの一部であり、ユーザシーケンスプログラムの実行を担っている。より具体的には、アプリケーションレイヤ303は、ユーザシーケンスプログラム命令実行、及び通信機能を含んでいる。ユーザシーケンスプログラム命令実行は、ユーザI/Fレイヤ302でユーザシーケンスプログラムデコード機能によって復号された命令を実行するための機能である。通信機能は、コントローラとプログラミングツールとの間の通信を取り扱うための機能である。診断レイヤ304もまた、OSプログラム32図3A参照のファイルの一部であり、コントローラ自体のチェックおよび診断を担っている。診断レイヤ304は、診断結果マネージメント、システムバス診断、モジュール診断、及びバッテリ診断を含んでいる。診断結果マネージメントは、システムバス診断機能、モジュール診断機能、および、バッテリ診断機能などの異なる診断機能から得られる診断結果を格納する。システムバス診断は、システムバスの状態のチェックを担う機能である。モジュール診断は、コントローラモジュール自体および外部ユニットの状態のチェックを担う機能である。バッテリ診断はバッテリの状態のチェックを担う機能である。抽象化レイヤ305は、ファイルアクセス、機器のメモリアクセス、モジュールアクセス、通信データバッファ、および動作マネージメントなどの機能を含んでいる。抽象化レイヤ305も同様に、OSプログラム32図3A参照のファイルの一部である。ファイルアクセス機能は、他のソフトウェアレイヤに対して、OS実行パラメータ31図3A参照のファイルまたはユーザシーケンスプログラムユーザプログラム34のファイルへのアクセスを制御する例えば、許容したり、禁止したりする。機器メモリアクセスは、他のレイヤに対して、機器メモリへのアクセスを制御する例えば、許容したり、禁止したりする。機器群は、例えば、プログラムを構成する構成要素たとえば、接点およびコイル群を含むと共に、コントローラのCPUにおけるプログラミング用の仮想要素を含む。仮想要素は、コントローラのCPUによって使用されるプログラミング言語の一部を含んでも良い。これら仮想要素は、ある機能を特定するとともに、ユーザプログラムで使用される基本的なビルディングブロックを表わしているものを含んでも良い。たとえば、仮想要素機器は、スイッチを示すものを含んでもよい。ユーザは、スイッチに対応する仮想要素を組み込むことにより、自分のプログラム中にスイッチを組み込むことができる。機器メモリは揮発性メモリ内にある。モジュールアクセスは、種々のソフトウェアレイヤに対して、外部ユニットのいくつかに理論的にアクセスすることを制御する例えば、許容したり、禁止したりする。通信データバッファは、通信プロトコルの使用を要求することなく、ソフトウェアレイヤに対して接続された機器と通信することを制御する例えば、許容したり、禁止したりする。動作マネージメントは、LED、スイッチ、および、バッテリを取り扱う。動作マネージメントは、ソフトウェアレイヤ群に対して、LEDやスイッチ、バッテリへの理論的なアクセスを制御する例えば、許容したり、禁止したりする。最後のレイヤは、ハードウェアI/Fハードウェアインターフェイスレイヤ306である。ハードウェアI/Fレイヤ306も同様にOSプログラム32図3A参照のファイルの一部であり、ハードウェア資源とのインターフェイス処理を行うドライバプログラムを含んでいる。ハードウェアI/Fレイヤ306は、シーケンス命令の実行に基づいて異なるモジュールの制御を担うシーケンス命令実行エンジンドライバを含んでいる。ハードウェアI/Fレイヤ306は、不揮発性メモリ用のドライバであるフラッシュROMドライバと、システムバス用のドライバであるシステムバス通信ドライバと、通信ポートを担う通信ドライバとをさらに含んでいる。次に、バージョンアップ情報53の詳細な説明が図7Aおよび図7Bに関して与えられる。バージョンアップ情報53およびバージョンアップ情報53に特有の構造は、本発明に対してコントローラのソフトウェアをバージョンアップする際の独自の柔軟性を提供する本発明の重要な特徴である。バージョンアップ情報53は、サーバ3図1参照に格納され、インターネット4を介してサーバ3からプログラミングツール1へ転送される。どのようなタイプのネットワークでもサーバ3からプログラミングツール1へバージョンアップ情報を転送するため使用できることに注目すべきである。バージョンアップソフトウェア52は、バージョンアップ情報53の内容に基づいてプログラミングツール1によってシーケンサ2にインストールされる。バージョンアップソフトウェア52は、バージョンアップ情報53に基づいて、OSプログラム32図3A参照を新しいバージョンのものに完全に置き換えるか、または、OSプログラム32の一部を新しいものに置き換える。バージョンアップ情報53は、最上位エントリがコントローラ型式であるツリー構造で図7Aおよび図7Bに示されている。コントローラ型式700は、バージョンアップソフトウェア52が対象とするコントローラのモデルを識別する情報である。コントローラに2つ以上のモデルがあるとき、モデル毎に異なるバージョンアップソフトウェア52が準備されることが可能であり、2つ以上のバージョンアップ情報53は同様に各バージョンアップ情報52に対応して準備され得るものである。コントローラ型式700が特定されると、OSバージョン701がバージョンアップソフトウェア52に対して特定される。バージョンアップ情報53はさらにハードウェア変更の要否702を含んでおり、ハードウェア変更の要否702は、コントローラが不具合のあるハードウェア設計を含んでいるかどうか、または、ハードウェアの変更が必要であるかどうかを示す。ハードウェア変更の要否702が1trueである場合、ハードウェアの交換が必要であるというメッセージがコントローラのユーザに対して表示され得る。このメッセージはプログラミングツール1を通じて表示されてもよい。次に、バージョンアップ要因703は、メジャーバージョンアップ情報と、マイナーバージョンアップ情報と、不具合情報とを含む。バージョンアップ要因703は、さらに保守の重要度、すなわち、緊急性を特定する情報も含む。バージョンアップソフトウェア52がコントローラの中に未だ存在しない新しい機能を含んでいる場合、メジャーバージョンアップは1trueである。たとえば、新しい機能が、インターネットを介して通信するコントローラのOS実行環境に組み込まれることがある。マイナーバージョンアップ情報には、既にコントローラOSの一部である、ある一定の機能が改良されるべきであり、かつ、バージョンアップソフトウェア52は改良点を含んでいることが示されている。たとえば、バージョンアップソフトウェア52には、拡張WDT機能を装備することもできる。マイナーバージョンアップフィールドが1trueである場合、アップグレードの重要度は低いことに注目すべきである。重要性が低である場合、ユーザに対して選択肢が提供され、その選択肢を用いてユーザは自分の判断でバージョンアップソフトウェア52をインストールすることを選択してもよい。バージョンアップ要因703中の不具合フィールド不具合情報は、コントローラの実行環境に不具合が存在するかどうかを示す。より具体体には、不具合フィールドは、OSプログラム32の中に不具合が存在するときに1trueとすることができる。たとえば、不具合フィールドは、WDT機能が働かないか、または、WDT機能がWDTデータ構造403からパラメータを取り出しそこなったときに1trueとすることができる。不具合フィールドが1trueである場合、アップグレードの重要度は高である。重要度が高である場合、バージョンアップソフトウェア52が本質的な問題の修正のため準備されているので、バージョンアップソフトウェア52が直ちに/強制的にコントローラシーケンサ2にインストールされ得る。しかしながら、コントローラシーケンサ2のユーザは、不具合を含む機能を使用していないことがあり、その場合、ユーザに対して選択肢が提供され、その選択肢を用いてユーザは、コントローラOSへのアップグレードの適用をスキップすることを選択してもよい。さらに、OSバージョンアップ箇所704は、バージョンアップが影響を及ぼすOSレイヤを指定することができる。たとえば、バージョンアップソフトウェア52は、診断レイヤのみ、または、OSプログラム32の診断レイヤおよび抽象化レイヤの両方に影響を及ぼすこともある。バージョンアップ情報705は、バージョンアップソフトウェア52に影響を受けるOSプログラム32の部分を特定する情報である。このエントリには従属エントリが存在している。たとえば、第1の従属エントリは、バージョンアップ機能一覧705-1であり得る。バージョンアップ機能一覧705-1はOSプログラム32に含まれている機能を特定する。たとえば、WDT機能が影響を受ける場合、バージョンアップ機能一覧705-1は、機能1の次のバージョンアップエントリに1trueを指定する。同様に、バージョンアップソフトウェア52が、初期実行監視、低速実行監視などの他のOS機能に影響を与える場合、バージョンアップエントリはこれらの機能毎に特定され得る。バージョンアップ情報705は、別の従属エントリとして、バージョンアップ命令リスト705-2をさらに含むこともできる。バージョンアップ命令リスト705-2は、バージョンアップがLD、MOVなど、異なる命令に適用されているかどうかを特定する。図7Bはバージョンアップソフトウェア52を図式的に示している。バージョンアップソフトウェア52は、コントローラの実行環境OSへのバージョンアップとして適用されるバイナリデータを含んでいる。例示的な実装によれば、図3Bで説明されたソフトウェアレイヤのいずれかがバージョンアップされるべき場合、バージョンアップソフトウェア52は、そのレイヤの特定の機能に対するバイナリデータを含んでいる。したがって、レイヤの1つがバージョンアップされる必要がない場合、OSデータ706はそのレイヤをバージョンアップするためのバイナリデータを含まない。さらに、バージョンアップソフトウェア52は、OSデータ706用のチェックサム707を含んでいてもよい。次に、図2に示す手順の詳細について、図8A及び図8Bを用いて説明される。ステップS801で、ユーザは、対象コントローラに関する保守を実行するため、プログラミングツールを対象コントローラに接続する。ステップS802-1では、プログラミングツールは、対象コントローラからコントローラ型式の情報を読み出す。ステップS802-2では、プログラミングツールは、対象コントローラからOSバージョン情報を読み出す。S803-1では、プログラミングツールは、対象コントローラをインターネットに接続する。S803-2では、プログラミングツールは、サーバからバージョンアップ情報を読み出すためサーバ3にアクセスする。サーバは2台以上のコントローラのためのバージョンアップ情報を格納していてもよい。したがって、ステップS804では、プログラミングツールは、対象コントローラに対応するバージョンアップ情報が存在するかどうかを判定する。存在しない場合、手順を終了させるか、もしくは、ユーザが次のコントローラに関する保守を実行することに決めることができる。図8Aでは、手順を終了させる場合を例示している。上記の各ステップはプログラミングツール1中の論理ユニット群によって実行できることに注目すべきである。すなわち、プログラミングツールは、サーバからデータを読み出す第1の論理ユニットと、OSバージョン型式を読み出す第2の論理ユニットとを有することができるのである。ステップS804では、プログラミングツールは、対象コントローラに対応するバージョンアップ情報がサーバから読み出されたバージョンアップ情報の中に存在すると判定された場合、手順をステップS806-1へ進める。ステップS806-1では、OSバージョンアップ情報例えば、図7Aに示すようなバージョンアップ情報53が対応する対象コントローラ用に読み出される。プログラミングツールは、対象コントローラに対応するバージョンアップ情報53を見つけ出すべくバージョンアップ情報を解析しなければならない場合もある。ステップS806-1でバージョンアップ情報が決定される、すなわち対象コントローラに対応するバージョンアップ情報53を見つけ出されると、ステップS806-2では、プログラミングツールは、バージョンアップ情報53におけるハードウェア変更の要否702を確認する。ステップS807では、プログラミングツールは、ハードウェア変更の要否702がバージョンアップ情報53中で1trueであるかどうかをチェックする。プログラミングツールは、1trueである場合ステップS807でYesの場合、手順をステップS808へ進める。ステップS808では、プログラミングツールは、管理者に、PLCに対してハードウェアの交換が必要であることを通知する。たとえば、プログラミングツールは、コントローラを交換する必要があることを通知する。プログラミングツールは、ステップS807で0falseである場合ステップS807でNoの場合、手順をS809ー1へ進める。ステップS809ー1では、プログラミングツールは、バージョンアップ情報53におけるOSバージョンアップ箇所704を確認する。ステップS809-2では、プログラミングツールは、このバージョンアップによって訂正されるべき不具合があるかどうかを判定する。これは、バージョンアップ情報53中のバージョンアップ要因703の下で不具合情報が1trueであるかどうかをチェックすることにより判定される。プログラミングツールは、不具合情報が1trueである場合ステップS809-2でYesの場合、アップグレードの重要度は高であるので、手順をステップS810-1へ進める。プログラミングツールは、不具合情報が0falseである場合ステップS809-2でNoの場合、手順を終了させる。ステップS810-1では、プログラミングツールは、バージョンアップ情報53におけるOSバージョンアップ箇所704を確認する。ステップS810-2では、プログラミングツールは、バージョンアップがコントローラのOSプログラム32の基本部分に影響を与えるかどうかをチェックする。すなわち、プログラミングツールは、OSバージョンアップ箇所704の下で診断レイヤ、抽象化レイヤ、ハードウェアI/Fレイヤのいずれか1つが1trueである場合、そのバージョンアップがコントローラのOSプログラム32の基本部分に影響を与えると判定する。プログラミングツールは、バージョンアップがコントローラのOSプログラム32の基本部分に影響を与えると判定した場合ステップS810-2でYesの場合、手順をステップS814ー1へそのまま進める。ステップ814ー1では、プログラミングツールは、インターネット経由でサポートサイトにアクセスし、サポートサイトからOSデータを読み出す。ステップS814ー2では、プログラミングツールは、バージョンアップソフトウェア52を用いて、コントローラのOSプログラム32の基本部分の中の様々なレイヤの対応する部分を差し替える。たとえば、抽象化レイヤ305に不具合がある場合、プログラミングツールは、バージョンアップソフトウェア52を用いて、OSプログラム32の中の抽象化レイヤ305を差し替える。一方、プログラミングツールは、バージョンアップがコントローラのOSプログラム32の基本部分に影響を与えないと判定した場合ステップS810でNoの場合、手順をステップS811-1へ進める。ステップS811-1では、プログラミングツールは、対象コントローラからOS実行パラメータ31およびOSプログラム32を読み出す。ステップS812ー1及びステップS812ー2では、プログラミングツールは、バージョンアップ情報53を参照することにより、OS実行パラメータおよびOSプログラムの中でバージョンアッププログラム52による影響を受ける部分を判定する。たとえば、ステップS812-1では、プログラミングツールは、OS実行パラメータ31を読み出すことにより、ユーザが使用しているOS機能を特定する。たとえば、データ構造403図4Bを参照のビット中で1つが設定される場合、これは、WDT機能がWDTセッティングを使用していることを示唆していると言える。さらに、ユーザによって使用されずにバージョンアップソフトウェア52による影響を受ける機能が存在する可能性がある。そこで、ステップS812-2では、プログラミングツールは、バージョンアップ情報53におけるバージョンアップ機能一覧705-1を確認する。バージョンアップ機能一覧705-1は、バージョンアップソフトウェア52による影響を受けている機能のリストを提供する。なお、ユーザによって使用される機能に基づいて、プログラミングツールは、これらの機能をバージョンアップすべきかどうかについての選択肢をユーザに提供してもよい。さらに、バージョンアップ機能一覧とユーザによって使用される機能との間に重複がない場合、OSプログラム32に対してバージョンアップが適用されなくてもよい可能性がある。これは、バージョンアップ機能一覧中に特定されたいくつかの機能に不具合があるが、これらの機能がユーザによって使用されていないときに起こり得る。したがって、OSプログラム32中のこれらの機能に対してはバージョンアップを行わなくてもよい可能性もある。そこで、ステップS810-3では、プログラミングツールは、バージョンアップの二次的な必要性を確認するために、次のチェックを行う。プログラミングツールは、バージョンアップ機能一覧とユーザによって使用される機能との間に重複があるかどうか、すなわち不具合対応のOSデータがユーザにより使用される機能を対象としているか否かをチェックする。プログラミングツールは、不具合対応のOSデータがユーザにより使用される機能を対象としている場合ステップS810-3でYesの場合、手順をステップS814-1へ進め、不具合対応のOSデータがユーザにより使用される機能を対象としていない場合ステップS810-3でNoの場合、手順をステップS811-2へ進める。なお、ステップS812-2でユーザに選択肢を提供したときは、ユーザがバージョンアップすべきとの選択肢を選択した場合がステップS810-3でYesの場合に対応し、ユーザがバージョンアップすべきでないとの選択肢を選択した場合がステップS810-3でNoの場合に対応する。さらに、プログラミングツールは、ラダープログラムまたはアプリケーションプログラムの中でユーザによって使用されている命令/オペレータを抽出することも可能である。プログラミングツールは、抽出された命令をバージョンアップ命令リスト705-2中の命令と比較し、それに応じてラダープログラムに対してバージョンアップを適用することができる。そこで、ステップS811-2では、プログラミングツールは、対象コントローラからOS実行パラメータ31およびOSプログラム32を読み出す。ステップS812ー3及びステップS812ー4では、プログラミングツールは、バージョンアップ情報53を参照することにより、OS実行パラメータおよびOSプログラムの中でバージョンアッププログラム52による影響を受ける部分を判定する。たとえば、ステップS812-3では、プログラミングツールは、OS実行パラメータ31を読み出すことにより、ユーザが使用している命令を特定する。さらに、ユーザによって使用されずにバージョンアップソフトウェア52による影響を受ける命令が存在する可能性がある。そこで、ステップS812-4では、プログラミングツールは、バージョンアップ情報53におけるバージョンアップ命令一覧705-2を確認する。バージョンアップ命令一覧705-2は、バージョンアップソフトウェア52による影響を受けている命令のリストを提供する。なお、ユーザによって使用される命令に基づいて、プログラミングツールは、これらの命令をバージョンアップすべきかどうかについての選択肢をユーザに提供してもよい。さらに、バージョンアップ命令一覧とユーザによって使用される機能との間に重複がない場合、OSプログラム32に対してバージョンアップが適用されなくてもよい可能性がある。これは、バージョンアップ命令一覧中に特定されたいくつかの命令に不具合があるが、これらの命令がユーザによって使用されていないときに起こり得る。したがって、OSプログラム32中のこれらの命令に対してはバージョンアップを行わなくてもよい可能性もある。そこで、ステップS810-4では、プログラミングツールは、バージョンアップの三次的な必要性を確認するために、次のチェックを行う。プログラミングツールは、バージョンアップ命令一覧とユーザによって使用される命令との間に重複があるかどうか、すなわち不具合対応のOSデータがユーザにより使用される命令を対象としているか否かをチェックする。プログラミングツールは、不具合対応のOSデータがユーザにより使用される機能を対象としている場合ステップS810-4でYesの場合、手順をステップS814-1へ進め、不具合対応のOSデータがユーザにより使用される機能を対象としていない場合ステップS810-4でNoの場合、手順を終了させる。なお、ステップS812-4でユーザに選択肢を提供したときは、ユーザがバージョンアップすべきとの選択肢を選択した場合がステップS810-4でYesの場合に対応し、ユーザがバージョンアップすべきでないとの選択肢を選択した場合がステップS810-4でNoの場合に対応する。上記のような手順によって、ユーザは、コントローラオペレーティングシステムのバージョンアップの手順に対してよりよい制御を供与され得るのであり、もしユーザがバージョンアップによる影響を受けるであろう、ある機能やプログラム群を使用していない場合、コントローラに対してバージョンアップは適用されないような制御を実現できる。次に、プログラミングツールの内部構造が図9を参照してより詳細に説明される。プログラミングツール1は、コントローラのコントローラ型式およびコントローラのオペレーティングシステムのバージョン情報を読み出すコントローラ型式判定ユニット901と、コントローラ型式およびバージョン情報に対応するバージョンアップ情報を読み出すバージョンアップ情報判定ユニット902と、バージョンアップ情報に基づいてオペレーティングシステム中でバージョンアップされるべき部分を判定するバージョンアップエリア判定ユニット903と、オペレーティングシステム中の判定された部分をバージョンアップするバージョンアップユニット904とを含む。バージョンアップ情報は、オペレーティングシステムの中でバージョンアップすべき部分を特定するための情報を含む。先に述べたように、バージョンアップ情報は、バージョンアップ機能一覧を特定する情報を含む。バージョンアップ機能一覧は、オペレーティングシステムに含まれる、バージョンアップされるべき機能に関する情報を含む。バージョンアップエリア判定ユニット903は、オペレーティングシステム実行パラメータを読み出すことにより、オペレーティングシステムに含まれる機能がコントローラのユーザによって使用されているかどうかを判定することができる。バージョンアップユニット904は、オペレーティングシステムの機能の中でユーザによって使用されている機能だけにバージョンアップを適用することができる。さらに、プログラミングツールは、バージョンアップ機能一覧から一つの機能をバージョンアップするかどうかを選択するための選択肢をユーザに提供することができる。バージョンアップユニット904は、それらの選択肢を用いてユーザによって選択された機能だけをバージョンアップする。バージョンアップエリア判定ユニット903は、ユーザアプリケーションプログラムがバージョンアップ情報53で特定された複数の命令から一つの命令を使用しているかどうかをさらに判定することができ、バージョンアップユニット904は、ユーザアプリケーションプログラムが複数の命令の中の少なくとも1個を使用していると判定された場合、このユーザアプリケーションプログラムをバージョンアップすることができる。フローチャートやブロック図の各ブロック、及びフローチャートやブロック図内のブロック群の組み合わせは、コンピュータプログラム命令群によって実施できることが理解されよう。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、または、他のプログラマブルデータ処理装置等のプロセッサに供給され、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令群がフローチャートやブロック図のブロックまたは複数のブロックで特定された機能/動作を実行する手段を生成するようにできる。さらに、図9におけるブロック群の各々は、FPGA、ASICなどのプロセッサによって実装可能である。これらのコンピュータプログラム命令群は、コンピュータ、あるいは他のプログラマブルデータ処理装置、または他の機器群に対してもそれらが特定の方法で機能するように指示できるコンピュータ読み取り可能な媒体、またはより具体的には、コンピュータ読み取り可能な記憶媒体に格納され、それによってコンピュータで読み取り可能な媒体に格納された命令群がフローチャートやブロック図のブロックまたはブロック群で特定される機能/動作を実施する命令群を含む物を製造できるようにすることが可能である。以上の実施形態群は、単なる例示であり、本発明を制限するように解釈されるべきでない。本教示は、他のタイプの装置に容易に適用可能である。同様に、本発明の実施形態の説明は、請求項の範囲を制限することなく、例示的であることが意図され、多数の代替、変更および変形が可能であることは当業者にとって明白であろう。