"プログラムを実行して制御対象機器を制御するプロセッサユニットと、前記プロセッサユニットを監視する監視ユニットと、を有し、前記プロセッサユニットが、前記プログラムの実行に伴って、自装置と制御対象機器の少なくとも一方の状態情報を前記監視ユニットに通知し、前記監視ユニットが、前記プロセッサユニットから通知された前記状態情報が所定の更新条件と一致すると、前記プロセッサユニットと連携し、前記プロセッサユニットが実行するシーケンスプログラムを更新する、コントローラ。前記プロセッサユニットと前記監視ユニットは互いに同じ情報を共有するための共有メモリをそれぞれ有し、前記プロセッサユニットは前記共有メモリを介して前記監視ユニットに前記状態情報を通知し、前記監視ユニットは、前記プロセッサユニットから通知された前記状態情報に応じて更新するプログラムを選択し、選択したプログラムを、前記共有メモリを介して前記プロセッサユニットに送る、請求項1に記載のコントローラ。前記コントローラはシーケンスプログラムを実行することによって前記制御対象機器に対するシーケンス制御を行うプログラマブルロジックコントローラであり、前記状態情報を前記共有メモリへ書き込む処理が前記シーケンス制御と共に前記プログラムに組み込まれている、請求項2に記載のコントローラ。前記監視ユニットは、前記共有メモリの前記状態情報の領域を定期的に読み出して前記更新条件と一致するか否か判定する、請求項3に記載のコントローラ。前記プログラムの更新を行うべき状態の状態情報を前記共有メモリに書き込むときに、プログラム更新を要求する要求フラグを前記共有メモリに設定する処理が前記プログラムに組み込まれており、前記監視ユニットは、前記共有メモリの前記要求フラグの領域を定期的に読み出し、プログラム更新を要求する要求フラグが設定されていたら、前記状態情報の領域を読み出す、請求項3に記載のコントローラ。前記監視ユニットは、前記プロセッサユニットから要求されたプログラム更新を行うか否か判定し、行わないと判断したとき、要求されたプログラム更新を行わない旨を表示部に表示すること、または外部端末に通知することの少なくとも一方を行う、請求項4または5に記載のコントローラ。制御対象機器を制御するコントローラにおいて、プログラムを実行して前記制御対象機器を制御するプロセッサユニットと共に備えられ、前記プロセッサユニットを監視する監視ユニットにおいて、前記プロセッサユニットから、前記プログラムの実行に伴う、前記プロセッサユニットと前記制御対象機器の少なくとも一方の状態情報が通知され、前記状態情報が所定の更新条件と一致すると、前記プロセッサユニットと連携し、前記プロセッサユニットが実行するシーケンスプログラムを更新することを特徴とする監視ユニット。前記プロセッサユニットと前記監視ユニットは互いに同じ情報を共有するための共有メモリをそれぞれ有し、前記プロセッサユニットは前記共有メモリを介して前記監視ユニットに前記状態情報を通知し、前記監視ユニットは、前記プロセッサユニットから通知された前記状態情報に応じて更新するプログラムを選択し、選択したプログラムを、前記共有メモリを介して前記プロセッサユニットに送る、請求項7に記載の監視ユニット。前記コントローラはシーケンスプログラムを実行することによって前記制御対象機器に対するシーケンス制御を行うプログラマブルロジックコントローラであり、前記状態情報を前記共有メモリへ書き込む処理が前記シーケンス制御と共に前記プログラムに組み込まれている、請求項8に記載の監視ユニット。前記監視ユニットは、前記共有メモリの前記状態情報の領域を定期的に読み出して前記更新条件と一致するか否か判定する、請求項9に記載の監視ユニット。前記プログラムの更新を行うべき状態の状態情報を前記共有メモリに書き込むときに、プログラム更新を要求する要求フラグを前記共有メモリに設定する処理が前記プログラムに組み込まれており、前記監視ユニットは、前記共有メモリの前記要求フラグの領域を定期的に読み出し、プログラム更新を要求する要求フラグが設定されていたら、前記状態情報の領域を読み出す、請求項9に記載の監視ユニット。前記監視ユニットは、前記プロセッサユニットから要求されたプログラム更新を行うか否か判定し、行わないと判断したとき、要求されたプログラム更新を行わない旨を表示部に表示すること、または外部端末に通知することの少なくとも一方を行う、請求項10または11に記載の監視ユニット。コントローラにおいてシーケンスプログラムを実行して前記制御対象機器を制御するプロセッサユニットの前記シーケンスプログラムを更新するためのシーケンスプログラム更新方法であって、前記プロセッサユニットが、前記プログラムの実行に伴って、自装置と制御対象機器の少なくとも一方の状態情報を、前記プロセッサユニットを監視する監視ユニットに通知するステップと、前記監視ユニットが、前記プロセッサユニットから通知された前記状態情報が所定の更新条件と一致すると、前記プロセッサユニットと連携し、前記プロセッサユニットが実行するシーケンスプログラムを更新するステップと、を有するシーケンスプログラム更新方法。しかしながら、特許文献1、2の技術には以下のような問題がある。上述の通り、特許文献1の技術は、シーケンスプログラムの変更で必要となる全てのシーケンスプログラムをコントローラのCPUで予め管理しておき、上位装置からの要求にしたがってシーケンスプログラムを切り替えるというものである。そして、上位装置はコントローラや制御機器の状態とは関係なく、シーケンスプログラムの切り替えを要求する。また上述の通り、特許文献2の技術は、シーケンスプログラムの変更で必要となる全てのシーケンスプログラムをコントローラのCPUで予め管理しておき、予め設定された実行順序定義にしたがってシーケンスプログラムを切り替えるというものである。そして、実行順序定義は、コントローラや制御機器の状態とは関係なく定義される。そのため、特許文献1、2の技術では、コントローラや制御機器の状態に合わせてシーケンスプログラムを適応的に切り替えるというような変更処理を行うことができなかった。本発明の目的は、コントローラまたは制御機器の状態に合わせてシーケンスプログラムを適応的に切り替えることを可能にする技術を提供することである。本発明の一態様によるコントローラは、プログラムを実行して制御対象機器を制御するプロセッサユニットと、前記プロセッサユニットを監視する監視ユニットと、を有し、前記プロセッサユニットが、前記プログラムの実行に伴って、自装置と制御対象機器の少なくとも一方の状態情報を前記監視ユニットに通知し、前記監視ユニットが、前記プロセッサユニットから通知された前記状態情報が所定の更新条件と一致すると、前記プロセッサユニットと連携し、前記プロセッサユニットが実行するシーケンスプログラムを更新するものである。また、前記プロセッサユニットと前記監視ユニットは互いに同じ情報を共有するための共有メモリをそれぞれ有し、前記プロセッサユニットは前記共有メモリを介して前記監視ユニットに前記状態情報を通知し、前記監視ユニットは、前記プロセッサユニットから通知された前記状態情報に応じて更新するプログラムを選択し、選択したプログラムを、前記共有メモリを介して前記プロセッサユニットに送ることにしてもよい。また、前記コントローラはシーケンスプログラムを実行することによって前記制御対象機器に対するシーケンス制御を行うプログラマブルロジックコントローラであり、前記状態情報を前記共有メモリへ書き込む処理が前記シーケンス制御と共に前記プログラムに組み込まれている、としてもよい。また、前記監視ユニットは、前記共有メモリの前記状態情報の領域を定期的に読み出して前記更新条件と一致するか否か判定するものであってもよい。また、前記プログラムの更新を行うべき状態の状態情報を前記共有メモリに書き込むときに、プログラム更新を要求する要求フラグを前記共有メモリに設定する処理が前記プログラムに組み込まれており、前記監視ユニットは、前記共有メモリの前記要求フラグの領域を定期的に読み出し、プログラム更新を要求する要求フラグが設定されていたら、前記状態情報の領域を読み出すことにしてもよい。また、前記監視ユニットは、前記プロセッサユニットから要求されたプログラム更新を行うか否か判定し、行わないと判断したとき、要求されたプログラム更新を行わない旨を表示部に表示することにしてもよい。本発明によれば、コントローラまたは制御対象機器の状態に合わせてシーケンスプログラムを適応的に切り替えることが可能になる。以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、本発明の実施形態を説明するための図において同一の部分には同一の符号を付し、その繰り返しの説明を省略する。図1は、本実施形態における制御システムの一例を示したブロック図である。本実施形態の制御システムは、PCパーソナルコンピュータ100、PLC110、インバータ120、圧縮機122、およびサーボモータ124を有する。インバータ120、圧縮機122、サーボモータ124は、PLC110による制御の対象となる制御機器の例である。例えば、FAFactoryAutomationネットワークシステムが本制御システムに該当する。PLC110と、これら制御機器インバータ120、圧縮機122、サーボモータ124とのデータの送受信には、シリアル通信向けの通信プロトコルが利用される。特に、FAFuctoryAutomationネットワークにおけるシリアル通信に利用される通信プロトコルの規格として、ModbusやCCLink等がある。PLC110は、電源ユニット112、CPUCentralProcessingUnitユニット114、監視ユニット116、および複数のI/Oユニット118を含んでいる。CPUユニット114、監視ユニット116、およびI/Oユニット118はそれぞれが共有メモリを有している。それらの共有メモリはバスで相互に接続されており、データを互いに同期させ、共通のデータを保持するメモリである。CPUユニット114、監視ユニット116、I/Oユニット118は、その共有メモリにデータを書き込んだり、そこからデータを読み出したりすることにより、ユニット間でデータ通信を行うことができる。I/Oユニット118は、本制御システムに制御機器を接続するためのユニットである。複数のI/Oユニット118に、インバータ120、圧縮機122、サーボモータ124といった制御機器がそれぞれ接続される。なお、本実施形態のPLC110は、通信ユニットやカウンタユニットといった他のユニットを更に有してもよい。その場合には、通信ユニットやカウンタユニットも共有メモリを有し、CPUユニット114や監視ユニット116とデータ通信を行うことにしてもよい。CPUユニット114は、制御シーケンスを規定したシーケンスプログラムを格納しており、そのシーケンスプログラムを実行することにより、I/Oユニット118に接続された制御機器に対して、シーケンス制御を実行する。監視ユニット116は、CPUユニット114の状態に合わせて、シーケンスプログラムをCPUユニット114に送り、CPUユニット114内のシーケンスプログラムを更新する。その際、監視ユニット116は、CPUユニット114が共有メモリに設定する設定値を監視する。この設定値は、CPUユニット114が制御シーケンスの実行に伴って設定するものであり、その値によってシーケンスプログラムの更新や更新すべきシーケンスプログラムが決まる。監視ユニット116は、保持している複数のシーケンスプログラムの中から、CPUユニット114が設定した設定値に応じたシーケンスプログラムを選択し、そのシーケンスプログラムを、共有メモリを利用して、CPUユニット114に転送する。図2AはCPUユニット114の構成例を示したブロック図である。図2Aを参照すると、CPUユニット114は、ハードウェア構成としてはハードウェアモジュール200と記憶装置220を有する。ハードウェアモジュール200は、CPUユニット114の動作に必要なハードウェアであり、マイコン201、バスASIC210、表示部212を有する。マイコン201はCPU202、入出力ポート203、外部I/F204、ROM205、RAM206、不揮発性メモリ207を有する。バスASIC210は、PLC110に搭載されている各ユニットの共有メモリを構成するモジュールであり、相互にデータを同期化する。これによりユニット間のデータ通信が可能となる。共有メモリのメモリ構成に関しては後に述べる。表示部212は、ユーザに視覚的に情報を表示するモジュールであり、ユーザがCPUユニット114に対して情報を入力するときや、CPUユニット114からの情報をユーザに通知するときの表示に利用される。記憶装置220は、例えば不揮発性の半導体メモリや磁気記憶媒体などで構成される記憶装置であり、CPUユニット114の動作に必要なプログラムやデータを保存する。例えば、シーケンスプログラム222や、ハードウェアモジュール200内のメモリにシーケンスプログラム222を転送するロードプログラム224が記憶装置220に保存される。また、CPUユニット114は、CPU202がソフトウェアプログラムを実行することによって実現される機能的な構成として、OS機能部230、プログラム更新アプリケーション機能部240、制御アプリケーション機能部246を有する。OS機能部230は、基本ソフトウェアによって実現され、CPUユニット114の動作を統括的に制御する。プログラム更新アプリケーション機能部240は、アプリケーションソフトウェアで実現され、監視ユニット116と連携してシーケンスプログラムの更新を行う。プログラム更新アプリケーション機能部240の機能としてプログラム更新機能242とプログラムロード機能244が含まれる。プログラム更新機能242は、監視ユニット116がシーケンスプログラムの更新をCPUユニット114に要求する際に値を設定する共有メモリ内のアドレスのデータを監視し、更新を要求する値を検出すると、後に述べるシーケンスプログラム更新に向けた準備を行う機能である。プログラムロード機能244は、監視ユニット116が共有メモリに設定したシーケンスプログラムを、CPUユニット114自身のメモリの所定のアドレスに保存する機能である。制御アプリケーション機能部246は、アプリケーションソフトウェアで実現され、シーケンスプログラム222を実行する。図2Bは監視ユニット116の構成例を示したブロック図である。監視ユニット116は、ハードウェア構成として、ハードウェアモジュール250と記憶装置270とを有している。ハードウェアモジュール250は、CPUユニット114のハードウェアモジュール200と同様の構成であるため説明は省略する。記憶装置270は、CPUユニット114に保存されているシーケンスプログラムを更新するために必要な複数のシーケンスプログラム272、状態テーブル274、および管理テーブル276を保持する。尚、記憶装置270にはCPUユニット114の状態ならびに制御機器の状態に合わせて、柔軟にシーケンスプログラムの切り替えが出来るように、異なる機能を持った複数のシーケンスプログラムが保持される。図3Aは状態テーブル274の一例を詳細に示した図である。状態テーブル274とは、CPUユニット114が実行しているシーケンスプログラムに関する情報を示すテーブルであり、実行している各シーケンスプログラムのアドレス310、プログラムID312、およびプログラムサイズ314が含まれる。アドレス310は、プログラムID312によって示されたシーケンスプログラムが格納されているメモリのアドレスを示す。プログラムID312は、実行しているシーケンスプログラムを一意に識別する識別情報である。プログラムサイズ314は、プログラムID312が示すシーケンスプログラムのサイズを示す。以上が状態テーブル274の説明である。尚、アドレス310、プログラムID312、プログラムサイズ314の他に、プログラムID312を示すシーケンスプログラム実行後に実行されるシーケンスプログラムの格納先アドレスなどテーブル274に更に含んでもよい。図3Bは管理テーブル276の一例を詳細に示した図である。管理テーブル276とは、監視ユニット116が記憶装置270に格納している複数のシーケンスプログラムに関する情報を示すテーブルであり、各シーケンスプログラムのプログラムID312、プログラム名320、プログラムサイズ314、格納先アドレス322、更新条件324、バージョン326が含まれる。管理テーブル276のプログラムID312は、監視ユニット116が格納している各シーケンスプログラムを一意に識別する識別情報である。プログラム名320は、プログラムID312によって示されるシーケンスプログラムの名称である。格納先アドレス322は、シーケンスプログラム更新時にプログラムID312が示すシーケンスプログラムを格納するアドレスを示す。更新条件324は、プログラムID312が示すシーケンスプログラムを更新する条件を示す。この更新条件324が満たされたときにシーケンスプログラムの更新を行う。バージョン326は、プログラムID312によって示されたシーケンスプログラムのバージョンであり、シーケンスプログラムの管理に使用される。以上が管理テーブル276の説明である。尚、プログラムID312、プログラム名320、プログラムサイズ314、格納先アドレス322、更新条件324、バージョン326の他に、例えば、プログラムID312が示すシーケンスプログラムと同時に実行すると不具合が生じる等の関係性が悪いシーケンスプログラムのプログラムIDや、記憶装置270にシーケンスプログラムを格納した日時などを管理テーブル276に更に含んでもよい。また、監視ユニット116は、CPU252がソフトウェアプログラムを実行することによって実現される機能的な構成として、OS機能部280と監視アプリケーション機能部290を有する。OS機能部280は、基本ソフトウェアによって実現され、監視ユニット116の動作を統括的に制御する。監視アプリケーション機能部290は、アプリケーションソフトウェアによって実現され、共有メモリを利用して、CPUユニット114の状態ならびに制御機器の状態を監視し、得た状態に応じてシーケンスプログラムを選択する。監視アプリケーション機能部290の機能として、CPUユニット状態監視機能292、シーケンスプログラム選択機能294、およびシーケンスプログラム転送機能296が含まれる。CPUユニット状態監視機能292とは、CPUユニット114がCPUユニット114の状態ならびに制御機器の状態を設定する共有メモリ内のアドレスのデータを監視することにより、CPUユニット114ならびに制御機器の状態変化を検出する機能である。このプログラム更新条件406は、CPUユニット114が共有メモリを利用して監視ユニット116に通知する、CPUユニット114あるいは制御機器の状態を示す状態情報である。シーケンスプログラム選択機能294とは、CPUユニット状態監視機能292が検出したCPUユニット114ならびに制御機器の状態変化と管理テーブル276の更新条件324とが一致するシーケンスプログラムを選択する機能である。シーケンスプログラム転送機能296とは、シーケンスプログラム選択機能294が選択したシーケンスプログラムを、共有メモリ利用してCPUユニット114に転送する機能である。以上が、CPUユニット114ならびに監視ユニット116の説明である。図4は共有メモリのメモリ構成を詳細に示した図である。バスASIC210,260の機能によって共有メモリ同士がデータを同期させているので、CPUユニット114の共有メモリと監視ユニット116の共有メモリは同じデータを保持した状態に維持されている。例えば、CPUユニット114が自身の共有メモリに書き込んだデータは、監視ユニット116の共有メモリにも書き込まれる。共有メモリには、プログラム更新管理領域400、プログラムは更新領域410、システム領域420が含まれる。プログラム更新管理領域400とは、制御システムに影響を与えずにシーケンスプログラムを変更するために必要な情報を格納するための領域である。プログラム更新管理領域400には、プログラム更新準備フラグ402、プログラム更新完了フラグ404、プログラム更新条件406が含まれる。プログラム更新準備フラグ402とは、通常は0に設定されており、監視ユニット116がシーケンスプログラムを変更する準備が完了したときに1を設定するフラグである。監視ユニット116がフラグに1を設定することにより、CPUユニット114に対してシーケンスプログラムを更新することが通知される。プログラム更新完了フラグ404は、通常は0に設定されており、CPUユニット114がシーケンスプログラムの更新を完了したときに1を設定するフラグである。CPUユニット114がフラグに1を設定することにより、監視ユニット116に対してシーケンスプログラムの更新が完了したことが通知される。プログラム更新条件406は、シーケンスプログラムを更新する条件を示す情報である。CPUユニット114が、シーケンス制御の実行中に、ここに更新条件の値を設定する。そして、監視ユニット116は、CPUユニット状態監視機能292を利用して、この領域を監視しており、この領域の値に基づいてシーケンスプログラムを更新することを判断する。尚、図4に示したプログラム更新条件406の配置は一例であり、プログラム更新条件406はプログラム更新管理領域400以外の領域にあってもよい。プログラム更新領域410とは、監視ユニット116がCPUユニット114へシーケンスプログラムを転送するときに使用する領域であり、更新先アドレス412、プログラムサイズ414、および更新プログラム416が含まれる。格納先アドレス412は、更新するシーケンスプログラムの格納先アドレスを示す。プログラムサイズ414は、更新するシーケンスプログラムのプログラムサイズを示す。更新プログラム416は、更新するシーケンスプログラムを格納する領域である。システム領域420は、PLC110に搭載されている各ユニットが動作するために必要な情報を格納する領域である。以上が、共有メモリの説明である。図5は、PLC110の初期起動時に、PC100から監視ユニット116に、シーケンスプログラム272、状態テーブル274、管理テーブル276を転送するシーケンス図である。PC100ならびに監視ユニット116が起動した後、PC100は制御システムを動作させるために必要な複数のシーケンスプログラムと各種テーブルの情報とを監視ユニット116に送信する。監視ユニット116は、シーケンスプログラムと各種テーブルの情報とを受信するとステップ510、シーケンスプログラムを記憶装置270に保存しステップ520、また受信した各種テーブルの情報を基に、状態テーブル274ならびに管理テーブル276を作成する。それらの処理を完了すると、監視ユニット116はPC100に対して情報設定完了を送信する。PC100が情報設定完了を受信すると、初期起動シーケンスを終了する。以上が監視ユニット116における初期起動時のシーケンスの説明である。尚、PC100は、この初期起動シーケンスを実行するために専用のアプリケーションを利用しても良い。また、監視ユニット116に、既にシーケンスプログラムならびに各テーブルが設定されている場合、ステップ500でPC100が送信したシーケンスプログラム等に対する応答として、監視ユニット116は既に設定済みである旨の情報をPC100に返送することにしてもよい。また、監視ユニット116は表示部264を利用して、既に設定済みであることをユーザに通知してもよく、既に設定済みの情報に対して上書きを行うかどうかをユーザに選択させてもよい。更に、監視ユニット116より情報設定完了の通知を受信できないとき、PC100は、シーケンスプログラムおよびテーブル情報を再送してもよい。図5の説明では、事前にCPUユニット114にシーケンスプログラムが設定されていることを前提に、PC100から監視ユニット116だけにシーケンスプログラムを送信する例を示した。しかし、事前にCPUユニット114にシーケンスプログラムが設定されていない場合、PC100は、CPU114に設定するシーケンスプログラムと、監視ユニット116に保存するシーケンスプログラムとを、それらを区別できるように監視ユニット116に送信する。図6は、CPUユニット114のシーケンスプログラムを更新するときの監視ユニット116の動作を示すフローチャートである。図7は、CPUユニット114のシーケンスプログラムを更新するときのCPUユニット114の動作を示すフローチャートである。図6に示した監視ユニット116の動作と、図7に示したCPUユニット114の動作とは連携している。監視ユニット116はCPUユニット状態監視機能292を利用して、プログラム更新条件406の値を確認する。プログラム更新条件406の値に変化があったら、監視ユニット116は、シーケンスプログラム選択機能294を利用して、変化したプログラム更新条件406が管理テーブル276の更新条件324と一致するか否か判定するステップ602。プログラム更新条件406が更新条件324と一致しなければ、監視ユニット416はそのまま処理を終了する。プログラム更新条件406が更新条件327と一致すれば、監視ユニット116は、更に状態テーブル274を参照しステップ604、更新が要求されているシーケンスプログラムについて、その更新が必要か否か確認する。確認した結果、シーケンスプログラムの更新が必要な場合、監視ユニット116は、シーケンスプログラム選択機能294を利用して管理テーブル276を参照し、更新するシーケンスプログラムのプログラムサイズ314ならびに格納先アドレス322を取得する。そして、監視ユニット116は、状態テーブル274に格納されている実行中のシーケンスプログラムのプログラムサイズ314と、管理テーブル276に格納されている更新するシーケンスプログラムのプログラムサイズ314とを比較することにより、更新が他のシーケンスプログラムに影響するか否か判定するステップ608。例えば、管理テーブル276に格納されている更新するシーケンスプログラムのプログラムサイズ314が、状態テーブル274に格納されている実行中のシーケンスプログラムのプログラムサイズ314を超えていなければ、更新が他のシーケンスプログラムへ影響することは無いと判断する。他のシーケンスプログラムに影響がないことを確認できたら、監視ユニット116は、シーケンスプログラム転送機能296を利用して、シーケンスプログラムの更新を行う。他のシーケンスプログラムに影響がある場合には、監視ユニット116は、他のシーケンスプログラムに影響を与えるため更新できない旨を表示部264に表示する。更に、監視ユニット116は、更新できない旨を外部I/F254を通じてPC100にも通知してよい。以下、監視ユニット116におけるシーケンスプログラムの更新処理について述べる。ステップ608で、シーケンスプログラムの更新が可能と判定されると、監視ユニット116は、シーケンスプログラム転送機能296を利用して、共有メモリのプログラム更新領域410に更新するシーケンスプログラムの更新先アドレス、データサイズ、シーケンスプログラム自体をそれぞれ設定するステップ610。更に、監視ユニット116は、シーケンスプログラムの更新準備が完了した旨をCPUユニット114に通知するため、プログラム更新準備フラグ402に1を設定する。図7を参照すると、CPUユニット114は、プログラム更新機能242を利用して、プログラム更新準備フラグ402の値を一定間隔で確認しステップ702、プログラム更新準備フラグ402の値が1か否か判定するステップ704。プログラム更新準備フラグ402が1であることは、監視ユニット116にて更新の準備ができたことを示している。プログラム更新準備フラグ402の値が1である場合、CPUユニット114はシーケンスプログラムの更新処理を実行する。プログラム更新準備フラグ402の値が1以外の場合、シーケンスプログラムの更新処理は実行せず、通常処理を実行する。以下にCPUユニット114におけるシーケンスプログラムの更新処理について述べる。尚、CPUユニット114に格納してあるシーケンスプログラムには、プログラム更新準備フラグ402を格納するメモリアドレスに1が設定されていることを検知すると、更新する可能性があるメモリアドレスにアクセスしないという動作モードに遷移する機能が組み込まれているものとする。CPUユニット114は、プログラム更新機能242を利用して、プログラム更新準備フラグ402に1が設定されたことを検出すると、シーケンスプログラムを上記の更新状態に遷移させる。その後、CPUユニット114はプログラムロード機能244を利用して、プログラム更新領域410の更新先アドレス412に示されたメモリアドレスに、更新プログラム416をプログラムサイズ414分だけロードする。更新プログラム416のロードが終了すると、CPUユニット114は、プログラムロード機能244を利用して、プログラム更新完了フラグ404に1を設定する。図6に戻り、監視ユニット116は、CPUモジュール状態監視機能292を利用して、プログラム更新完了フラグ404が1に設定されたか否かの判定を、それが1に設定されるまで繰り返すステップ614。監視ユニット116は、プログラム更新完了フラグ404に1が設定されたことを確認すると、CPUユニット114におけるシーケンスプログラムの更新が完了したと判断し、プログラム更新完了フラグ404ならびにプログラム更新準備フラグ402にそれぞれ0を設定する。図7に戻り、CPUユニット114は、プログラム更新準備フラグ402の値が0に設定されたことを検知するとステップ704、更新状態から通常処理を実行する状態に遷移しステップ710、シーケンスプログラムの実行を再開する。以上がシーケンスプログラムの更新を行う場合のシーケンスである。本実施形態によれば、CPUユニット114から監視ユニット116にCPUユニット114あるいは制御機器の状態を示す状態情報を通知し、監視ユニット116は、その状態情報に応じてシーケンスプログラムの更新を判断する。そのため、CPUユニット114あるいは制御機器の状態に合わせるように適応的にシーケンスプログラムを適応的に切り替えることができる。尚、ここでは、プログラム更新準備フラグ402に1が設定されるとCPUユニット114に格納されたシーケンスプログラムが更新状態に遷移することを前提条件とした。しかし、他の例として、プログラム更新準備フラグ402に設定される値に応じて、特定のメモリアドレスにのみアクセスしないようなシーケンスプロフラムを予めCPUユニット114に格納しておいてもよい。また、ステップ614において、シーケンスプログラムの更新が完了したことを、監視ユニット116はプログラム更新完了フラグ404の値を定期的に参照することにより、確認することにした。しかし、他の例として、監視ユニット116は、一定期間参照してもプログラム更新完了フラグ404の値が1にならない場合、ステップ620、622と同様に、表示部264に更新が完了しない旨を表示し、PC100に外部I/F254を通じて通知してもよい。図6、7に示したように、本実施形態では、プログラムを更新する際、監視ユニット116がプログラム更新条件を確認し、プログラムの更新を行うか否か判断している。しかし、本発明がこの例に限定されることは無い。他の例として、CPUユニット114が主体的に監視ユニット116にプログラムの更新を要求することにしてもよい。図8は、CPUユニット114のシーケンスプログラムを更新するときの監視ユニット116の動作の変形例を示すフローチャートである。図9は、CPUユニット114のシーケンスプログラムを更新するときのCPUユニット114の動作の変形例を示すフローチャートである。図8に示した監視ユニット116の動作と、図9に示したCPUユニット114の動作とは連携している。図9を参照すると、CPUユニット114は、シーケンスプログラムの実行中に、シーケンスプログラムの更新が必要になると、その更新の更新条件をプログラム更新条件406に設定した後、プログラム更新準備フラグ402に1を設定する。尚、この例では、シーケンスプログラムには、シーケンスプログラムの更新の要否を認識し、シーケンスプログラムの更新が必要なときにプログラム更新条件406ならびにプログラム更新準備フラグ402を設定する処理が予め組み込まれているものとする。図8を参照すると、監視ユニット116は、CPUユニット状態監視機能292を利用して、プログラム更新準備フラグ402の値を定期的に確認するステップ802。そして、監視ユニット116は、プログラム更新準備フラグ402が1になったか否か判定するステップ803。プログラム更新準備フラグ402が1になったら、監視ユニット116は、シーケンスプログラム選択機能294を利用して、プログラム更新条件406を確認する。更に、監視ユニット116は、そのプログラム更新条件と、管理テーブル276の更新条件324とを比較するステップ806。プログラム更新条件406に、管理テーブル276の更新条件324と同じプログラム更新条件があった場合、監視ユニット116は、シーケンスプログラム選択機能294を利用して状態テーブル274を参照しステップ808、シーケンスプログラムの更新が必要か否か判定する。例えば、更新が要求されているバージョンのシーケンスプログラムが既に実行されていれば、更新は必要ない。確認した結果、シーケンスプログラムの更新が必要であれば、監視ユニット116は、シーケンスプログラム選択機能294を利用して状態テーブル274を参照し、更新するシーケンスプログラムのプログラムサイズ314と格納先アドレス322を取得する。そして、監視ユニット116は、更新するシーケンスプログラムのプログラムサイズ314と、状態テーブル274に格納されているプログラムサイズ314とを比較することにより、他のシーケンスプログラムに影響があるか否か判断する。他のシーケンスプログラムに影響がないことを確認できたら、監視ユニット116は、シーケンスプログラム転送機能296を利用して、シーケンスプログラムの更新が可能と判断するステップ812。ステップ812により、シーケンスプログラムの更新が可能であることが確認できた場合、監視ユニット116はシーケンスプログラム転送機能296を利用して、共有メモリのプログラム更新領域410に、更新するシーケンスプログラムの更新先アドレス、データサイズ、およびシーケンスプログラムをそれぞれ設定するステップ814。更に、監視ユニット116は、シーケンスプログラムの更新準備が完了したことをCPUユニット114に通知するため、プログラム更新完了フラグ404に1を設定する。図9に戻り、CPUユニット114は、プログラム更新機能242を利用して、プログラム更新完了フラグ404の値が1か否か定期的に判定するステップ904。プログラム更新完了フラグ404が1であれば、CPUユニット114は、シーケンスプログラムの更新処理を実行する。プログラム更新完了フラグ404が1であることを検知すると、CPUユニット114は、プログラム更新機能242を利用して、CPUユニット114に格納されてあるシーケンスプログラムを更新状態に遷移させる。その後、CPUユニット114はプログラムロード機能244を利用して、プログラム更新領域410に設定されている更新先アドレス412に示すメモリアドレスに、更新プログラム416をプログラムサイズ414分だけ設定する。更新プログラム416の設定が終了すると、監視ユニット116は、プログラム更新完了フラグ404とプログラム更新準備フラグ402にそれぞれ0を設定する。図8に戻り、監視ユニット116は、プログラム更新完了フラグ404に0が設定されているか否かを定期的に確認しステップ818、それを確認すると、シーケンスプログラムの更新が完了したと判断して処理を終了する。また、ステップ806、ステップ810、ステップ812においてシーケンスプログラムの更新を行うことが出来ないと判断された場合、監視ユニット116は、表示部264に更新が出来ない旨を表示しステップ820、またその旨をPC100に外部I/F254を通じて通知するステップ822。そして、監視ユニット116は、プログラム更新完了フラグ404に2を設定し、ステップ818に進む。図9に戻り、ステップ904においてプログラム更新完了フラグが1以外であれば、CPUユニット114は、プログラム更新完了フラグ404に2が設定されているか否か判断するステップ912。プログラム更新完了フラグ404に2が設定された場合、CPUユニット114は、何かの理由でシーケンスプログラムの更新が出来ないことを認識し、プログラム更新準備フラグ402だけに0を設定する。また他の例として、CPUユニット114はプログラム更新完了フラグ404に2が設定されたら、CPUユニット114は何かシーケンスプログラムに異常があると判断し、安全な動作のみを実行する安全状態に遷移してもよい。尚、図8には示していないが、監視ユニット116は、シーケンスプログラムを更新できなくても、CPUユニット114が問題なく動作できるのであれば、プログラム更新完了フラグ404に2以外の値を設定してもよい。その場合、監視ユニット116は、ステップ912にて、プログラム更新完了フラグに2以外の値が設定されていることから、CPUユニット114はシーケンスプログラムを更新することはできないが、CPUユニット114の動作は問題なく継続されると判断し、プログラム更新完了フラグ404とプログラム更新準備フラグ402にそれぞれ0を設定しステップ916、918、通常動作を継続してもよいステップ920。以上が、CPUユニット114がシーケンスプログラムの更新を要求する場合の監視ユニット16およびCPUユニット114の動作である。尚、ここではステップ818において、シーケンスプログラムの更新が完了したことを、監視ユニット116はプログラム更新準備フラグ402の値を定期的に参照することにより、確認している。しかし、他の例として、監視ユニット116は一定期間プログラム更新準備フラグ402を監視してもその値が0にならない場合、ステップ820、ステップ822と同様に、表示部264に更新が完了しない旨を表示し、その旨をPC100に外部I/F254を通じて通知してもよい。また、ステップ822において、監視ユニット116は、外部I/F254を通じてPC100に更新を行うことが出来ないことを通知する際に、PC100より新しいシーケンスプログラムを取得しても良い。以下に、PC100より監視ユニット116へ新しいシーケンスプログラムを転送するシーケンスを説明する。図10は、PC100から監視ユニット116へ新たなシーケンスプログラムを配送するときのシーケンス図である。監視ユニット116は、図8のステップ806、ステップ810、ステップ812においてシーケンスプログラムの更新を行うことが出来ない場合、格納している状態テーブル274の情報、管理テーブル276の情報、およびプログラム更新条件406を外部I/F254を通じてPC100に送信する。状態テーブル274の情報、管理テーブル276の情報、およびプログラム更新条件406を受信するとステップ1004、PC100は、それらの受信したデータを解析し、更新を行うことが出来ない原因を究明するステップ1006。そして、PC100は、新しいシーケンスプログラム、状態テーブルの情報、管理テーブルの情報、ならびにプログラム更新条件を作成しステップ1008、それらを監視ユニット116に送信する。新しいシーケンスプログラム、状態テーブルの情報、管理テーブルの情報、ならびにプログラム更新条件を受信するとステップ1012、監視ユニット116は、受信したデータを状態テーブル274、管理テーブル276、ならびにプログラム更新条件406等にそれぞれ設定する。以上が、PC100から監視ユニット116へ新しいシーケンスプログラムを転送する場合のシーケンスである。尚、ステップ1014の後、監視ユニット116はステップ804に進み、プログラム更新条件406の確認から処理を進めてもよい。上述の通り、図10では、監視ユニット116よりPC100に対して新しいシーケンスプログラムを転送する処理を実行した。しかし、本発明がこの動作に限定されることはない。図11は、PC100から監視ユニット116へ新たなシーケンスプログラムを配送するときの変形例のシーケンス図である。PC100は、プログラムIDが示すシーケンスプログラムのバージョンを確認するため、監視ユニット116に対してプログラムバージョン要求を送信する。プログラムバージョン要求を受信するとステップ1104、監視ユニット116は、管理テーブル276を参照しステップ1106、プログラムバージョン要求に含まれるプログラムIDが示すプログラムのバージョンを、プログラムバージョン要求の応答として、PC100に送信する。応答を受信するとステップ1110、PC100は、その応答に含まれるプログラムバージョンからプログラムの更新が必要か否か判断する。プログラムの更新が必要の場合、PC100は、新しいシーケンスプログラム、ならびにプログラムバージョンを、監視ユニット116に送信する。尚、プログラムの更新が必要ない場合は、PC100はここでは何もしない。新しいシーケンスプログラム、ならびにプログラムバージョンを受信した監視ユニット116は、プログラム更新処理を実行する。図12は、ステップ1118に示したプログラム更新処理における監視ユニット116の詳細な動作を示すフローチャートである。監視ユニット116は、受信した情報に基づいて管理テーブル276を更新し、共有メモリのプログラム更新領域410に更新するシーケンスプログラムの更新先アドレス、データサイズ、シーケンスプログラムをそれぞれ設定するステップ1202。更に、監視ユニット116は、シーケンスプログラムの更新準備が完了したことをCPUユニット114に通知するため、プログラム更新準備フラグ402に3を設定する。それ以降のシーケンスステップ1206~1210は、図6に示したステップ614~618と同様であるため、ここでは説明を省略する。以上がPC100より監視ユニット116に新しいシーケンスプログラムを転送する処理のシーケンスである。以上、本発明の実施形態について具体的に説明したが、本発明が上記開示に限定されるものでなく、本発明の趣旨を逸脱しない範囲において種々変更可能であることは言うまでもない。"