(57)【特許請求の範囲】
【請求項１】
プログラムを実行して制御対象機器を制御するプロセッサユニットと、
前記プロセッサユニットを監視する監視ユニットと、を有し、
前記プロセッサユニットと前記監視ユニットは、同一のプログラマブルロジックコントローラに含まれ、互いに同じ情報を共有するための共有メモリを有し、
前記プロセッサユニットが、前記プログラムの実行に伴って、自装置と制御対象機器の少なくとも一方の状態情報を、前記共有メモリを介して前記監視ユニットに通知し、
前記監視ユニットが、前記プロセッサユニットから通知された前記状態情報が所定の更新条件と一致すると、前記状態情報に応じて更新するプログラムを選択し、選択したプログラムを、前記共有メモリを介して前記プロセッサユニットに送り、前記プロセッサユニットと連携し、前記プロセッサユニットが実行するシーケンスプログラムを更新する、
コントローラ。
【請求項２】
前記コントローラはシーケンスプログラムを実行することによって前記制御対象機器に対するシーケンス制御を行うプログラマブルロジックコントローラであり、前記状態情報を前記共有メモリへ書き込む処理が前記シーケンス制御と共に前記プログラムに組み込まれている、請求項１に記載のコントローラ。
【請求項３】
前記監視ユニットは、前記共有メモリの前記状態情報の領域を定期的に読み出して前記更新条件と一致するか否か判定する、請求項２に記載のコントローラ。
【請求項４】
前記プログラムの更新を行うべき状態の状態情報を前記共有メモリに書き込むときに、プログラム更新を要求する要求フラグを前記共有メモリに設定する処理が前記プログラムに組み込まれており、
前記監視ユニットは、前記共有メモリの前記要求フラグの領域を定期的に読み出し、プログラム更新を要求する要求フラグが設定されていたら、前記状態情報の領域を読み出す、請求項２に記載のコントローラ。
【請求項５】
前記監視ユニットは、前記プロセッサユニットから要求されたプログラム更新を行うか否か判定し、行わないと判断したとき、要求されたプログラム更新を行わない旨を表示部に表示すること、または外部端末に通知することの少なくとも一方を行う、請求項３または４に記載のコントローラ。
【請求項６】
制御対象機器を制御するコントローラにおいて、プログラムを実行して前記制御対象機器を制御するプロセッサユニットと共に備えられ、前記プロセッサユニットを監視する監視ユニットにおいて、
前記プロセッサユニットと同一のプログラマブルロジックコントローラに含まれ、前記プロセッサユニットと互いに同じ情報を共有するための共有メモリを有し、
前記プロセッサユニットから、前記プログラムの実行に伴う、前記プロセッサユニットと前記制御対象機器の少なくとも一方の状態情報が、前記共有メモリを介して通知され、前記状態情報が所定の更新条件と一致すると、前記状態情報に応じて更新するプログラムを選択し、選択したプログラムを、前記共有メモリを介して前記プロセッサユニットに送り、前記プロセッサユニットと連携し、前記プロセッサユニットが実行するシーケンスプログラムを更新することを特徴とする監視ユニット。
【請求項７】
前記コントローラはシーケンスプログラムを実行することによって前記制御対象機器に対するシーケンス制御を行うプログラマブルロジックコントローラであり、前記状態情報を前記共有メモリへ書き込む処理が前記シーケンス制御と共に前記プログラムに組み込まれている、請求項６に記載の監視ユニット。
【請求項８】
前記監視ユニットは、前記共有メモリの前記状態情報の領域を定期的に読み出して前記更新条件と一致するか否か判定する、請求項７に記載の監視ユニット。
【請求項９】
前記プログラムの更新を行うべき状態の状態情報を前記共有メモリに書き込むときに、プログラム更新を要求する要求フラグを前記共有メモリに設定する処理が前記プログラムに組み込まれており、
前記監視ユニットは、前記共有メモリの前記要求フラグの領域を定期的に読み出し、プログラム更新を要求する要求フラグが設定されていたら、前記状態情報の領域を読み出す、請求項７に記載の監視ユニット。
【請求項１０】
前記監視ユニットは、前記プロセッサユニットから要求されたプログラム更新を行うか否か判定し、行わないと判断したとき、要求されたプログラム更新を行わない旨を表示部に表示すること、または外部端末に通知することの少なくとも一方を行う、請求項８または９に記載の監視ユニット。
【請求項１１】
コントローラにおいてシーケンスプログラムを実行して前記制御対象機器を制御するプロセッサユニットの前記シーケンスプログラムを更新するためのシーケンスプログラム更新方法であって、
前記プロセッサユニットが、前記プログラムの実行に伴って、自装置と制御対象機器の少なくとも一方の状態情報を、前記プロセッサユニットと同一のプログラマブルロジックコントローラに含まれ前記プロセッサユニットを監視する監視ユニットと互いに同じ情報を共有するための共有メモリを介して、前記監視ユニットに通知するステップと、
前記監視ユニットが、前記プロセッサユニットから通知された前記状態情報が所定の更新条件と一致すると、前記状態情報に応じて更新するプログラムを選択し、選択したプログラムを、前記共有メモリを介して前記プロセッサユニットに送り、前記プロセッサユニットと連携し、前記プロセッサユニットが実行するシーケンスプログラムを更新するステップと、を有するシーケンスプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シーケンスプログラムに従って制御対象機器を制御するコントローラにおけるシーケンスプログラムの管理に関する。
【背景技術】
【０００２】
制御シーケンスを規定したソフトウェア(以下、シーケンスプログラムと呼ぶ)を実行し、制御対象機器を制御するプログラマブルロジックコントローラ(以下、ＰＬＣと呼ぶ)という装置がある。ＰＬＣは、例えば、シーケンスプログラムを実行するＣＰＵユニットおよびＩ／Ｏユニットを含む複数ユニットで構成されている。各ユニットは共有メモリを利用することにより相互にデータ通信を行う。
【０００３】
制御対象機器(以下、制御機器と呼ぶ)として、例えば、インバータ、圧縮機、サーボモータがあり、これら複数の制御機器がそれぞれＩ／Ｏユニットに接続される。ＣＰＵユニットはＩ／Ｏユニットを介して制御機器に対して制御要求を送信する。制御機器は、制御要求に応じて動作するとともに、制御要求に対する応答を、Ｉ／Ｏユニットを介してＣＰＵユニットに送信する。
【０００４】
また、ＰＬＣはシーケンスプログラムを切り替えることにより、制御機器に対する制御方法を変更することが可能である。例えば、複数種類の製品を製造する製造ラインに設置されているＰＬＣは、製造ラインに流れる製品の種類に応じてシーケンスプログラムを切り替えることにより、制御方法を変更することができる。これにより、一つの製造ラインで複数の製品を製造することが可能となり、製造する製品の種類毎に製造ラインを設ける必要がなくなる。
【０００５】
しかしながら、シーケンスプログラムを変更するときには、一般的に、システムへの影響を最小限に抑えるため、ＰＬＣを含め製造ラインに設置してある多くの機器を停止させる。そのため、製造ラインで製造する製品を変更するたびに、製造ラインに設置してある機器を一旦停止させる必要が生じる。ひとつの製造ラインで多種多様な製品を製造する場合、頻繁に機器を停止させることになり、製造ラインにおける製品の製造効率が低下してしまう。
【０００６】
このような問題の対策として、システムが動作している途中でも、システムに影響を与えずにシーケンスプログラムを変更できるようにする技術が提案されている（特許文献１、２参照）。
【０００７】
特許文献１の技術は、シーケンスプログラムの変更で必要となる全てのシーケンスプログラムをコントローラのＣＰＵで予め管理しておき、上位装置からの要求にしたがってシーケンスプログラムを切り替えるというものである。
【０００８】
特許文献２の技術は、シーケンスプログラムの変更で必要となる全てのシーケンスプログラムをコントローラのＣＰＵで予め管理しておき、予め設定された実行順序定義にしたがってシーケンスプログラムを切り替えるというものである。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−２６５０９４
【特許文献２】特開平５−３０７４０３
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１、２の技術には以下のような問題がある。
【００１１】
上述の通り、特許文献１の技術は、シーケンスプログラムの変更で必要となる全てのシーケンスプログラムをコントローラのＣＰＵで予め管理しておき、上位装置からの要求にしたがってシーケンスプログラムを切り替えるというものである。そして、上位装置はコントローラや制御機器の状態とは関係なく、シーケンスプログラムの切り替えを要求する。
【００１２】
また上述の通り、特許文献２の技術は、シーケンスプログラムの変更で必要となる全てのシーケンスプログラムをコントローラのＣＰＵで予め管理しておき、予め設定された実行順序定義にしたがってシーケンスプログラムを切り替えるというものである。そして、実行順序定義は、コントローラや制御機器の状態とは関係なく定義される。
【００１３】
そのため、特許文献１、２の技術では、コントローラや制御機器の状態に合わせてシーケンスプログラムを適応的に切り替えるというような変更処理を行うことができなかった。
【００１４】
本発明の目的は、コントローラまたは制御機器の状態に合わせてシーケンスプログラムを適応的に切り替えることを可能にする技術を提供することである。
【課題を解決するための手段】
【００１５】
本発明の一態様によるコントローラは、プログラムを実行して制御対象機器を制御するプロセッサユニットと、前記プロセッサユニットを監視する監視ユニットと、を有し、前記プロセッサユニットが、前記プログラムの実行に伴って、自装置と制御対象機器の少なくとも一方の状態情報を前記監視ユニットに通知し、前記監視ユニットが、前記プロセッサユニットから通知された前記状態情報が所定の更新条件と一致すると、前記プロセッサユニットと連携し、前記プロセッサユニットが実行するシーケンスプログラムを更新するものである。
【００１６】
また、前記プロセッサユニットと前記監視ユニットは互いに同じ情報を共有するための共有メモリをそれぞれ有し、前記プロセッサユニットは前記共有メモリを介して前記監視ユニットに前記状態情報を通知し、前記監視ユニットは、前記プロセッサユニットから通知された前記状態情報に応じて更新するプログラムを選択し、選択したプログラムを、前記共有メモリを介して前記プロセッサユニットに送ることにしてもよい。
【００１７】
また、前記コントローラはシーケンスプログラムを実行することによって前記制御対象機器に対するシーケンス制御を行うプログラマブルロジックコントローラであり、前記状態情報を前記共有メモリへ書き込む処理が前記シーケンス制御と共に前記プログラムに組み込まれている、としてもよい。
【００１８】
また、前記監視ユニットは、前記共有メモリの前記状態情報の領域を定期的に読み出して前記更新条件と一致するか否か判定するものであってもよい。
【００１９】
また、前記プログラムの更新を行うべき状態の状態情報を前記共有メモリに書き込むときに、プログラム更新を要求する要求フラグを前記共有メモリに設定する処理が前記プログラムに組み込まれており、前記監視ユニットは、前記共有メモリの前記要求フラグの領域を定期的に読み出し、プログラム更新を要求する要求フラグが設定されていたら、前記状態情報の領域を読み出すことにしてもよい。
【００２０】
また、前記監視ユニットは、前記プロセッサユニットから要求されたプログラム更新を行うか否か判定し、行わないと判断したとき、要求されたプログラム更新を行わない旨を表示部に表示することにしてもよい。
【発明の効果】
【００２１】
本発明によれば、コントローラまたは制御対象機器の状態に合わせてシーケンスプログラムを適応的に切り替えることが可能になる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態における制御システムの一例を示したブロック図である。
【図２Ａ】ＣＰＵユニット１１４の構成例を示したブロック図である。
【図２Ｂ】監視ユニット１１６の構成例を示したブロック図である。
【図３Ａ】状態テーブル２７４の一例を詳細に示した図である。
【図３Ｂ】管理テーブル２７６の一例を詳細に示した図である。
【図４】共有メモリのメモリ構成を詳細に示した図である。
【図５】ＰＬＣ１１０の初期起動時に、ＰＣ１００から監視ユニット１１６に、シーケンスプログラム２７２、状態テーブル２７４、管理テーブル２７６転送するシーケンス図である。
【図６】ＣＰＵユニット１１４のシーケンスプログラムを更新するときの監視ユニット１１６の動作を示すフローチャートである。
【図７】ＣＰＵユニット１１４のシーケンスプログラムを更新するときのＣＰＵユニット１１４の動作を示すフローチャートである。
【図８】ＣＰＵユニット１１４のシーケンスプログラムを更新するときの監視ユニット１１６の動作の変形例を示すフローチャートである。
【図９】ＣＰＵユニット１１４のシーケンスプログラムを更新するときのＣＰＵユニット１１４の動作の変形例を示すフローチャートである。
【図１０】ＰＣ１００から監視ユニット１１６へ新たなシーケンスプログラムを配送するときのシーケンス図である。
【図１１】ＰＣ１００から監視ユニット１１６へ新たなシーケンスプログラムを配送するときの変形例のシーケンス図である。
【図１２】ステップ１１１８に示したプログラム更新処理における監視ユニット１１６の詳細な動作を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、本発明の実施形態を説明するための図において同一の部分には同一の符号を付し、その繰り返しの説明を省略する。
【００２４】
図１は、本実施形態における制御システムの一例を示したブロック図である。
【００２５】
本実施形態の制御システムは、ＰＣ（パーソナルコンピュータ）１００、ＰＬＣ(プログラマブルロジックコントローラ)１１０、インバータ１２０、圧縮機１２２、およびサーボモータ１２４を有する。インバータ１２０、圧縮機１２２、サーボモータ１２４は、ＰＬＣ１１０による制御の対象となる制御機器の例である。例えば、ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）ネットワークシステムが本制御システムに該当する。
【００２６】
ＰＬＣ１１０と、これら制御機器（インバータ１２０、圧縮機１２２、サーボモータ１２４）とのデータの送受信には、シリアル通信向けの通信プロトコルが利用される。特に、ＦＡ（Ｆｕｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）ネットワークにおけるシリアル通信に利用される通信プロトコルの規格として、Modbus(登録商標)やCC-Link(登録商標)等がある。
【００２７】
ＰＬＣ１１０は、電源ユニット１１２、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）ユニット１１４、監視ユニット１１６、および複数のＩ／Ｏユニット１１８を含んでいる。
【００２８】
ＣＰＵユニット１１４、監視ユニット１１６、およびＩ／Ｏユニット１１８はそれぞれが共有メモリを有している。それらの共有メモリはバスで相互に接続されており、データを互いに同期させ、共通のデータを保持するメモリである。ＣＰＵユニット１１４、監視ユニット１１６、Ｉ／Ｏユニット１１８は、その共有メモリにデータを書き込んだり、そこからデータを読み出したりすることにより、ユニット間でデータ通信を行うことができる。
【００２９】
Ｉ／Ｏユニット１１８は、本制御システムに制御機器を接続するためのユニットである。複数のＩ／Ｏユニット１１８に、インバータ１２０、圧縮機１２２、サーボモータ１２４といった制御機器がそれぞれ接続される。
【００３０】
なお、本実施形態のＰＬＣ１１０は、通信ユニットやカウンタユニットといった他のユニットを更に有してもよい。その場合には、通信ユニットやカウンタユニットも共有メモリを有し、ＣＰＵユニット１１４や監視ユニット１１６とデータ通信を行うことにしてもよい。
【００３１】
ＣＰＵユニット１１４は、制御シーケンスを規定したシーケンスプログラムを格納しており、そのシーケンスプログラムを実行することにより、Ｉ／Ｏユニット１１８に接続された制御機器に対して、シーケンス制御を実行する。
【００３２】
監視ユニット１１６は、ＣＰＵユニット１１４の状態に合わせて、シーケンスプログラムをＣＰＵユニット１１４に送り、ＣＰＵユニット１１４内のシーケンスプログラムを更新する。その際、監視ユニット１１６は、ＣＰＵユニット１１４が共有メモリに設定する設定値を監視する。この設定値は、ＣＰＵユニット１１４が制御シーケンスの実行に伴って設定するものであり、その値によってシーケンスプログラムの更新や更新すべきシーケンスプログラムが決まる。監視ユニット１１６は、保持している複数のシーケンスプログラムの中から、ＣＰＵユニット１１４が設定した設定値に応じたシーケンスプログラムを選択し、そのシーケンスプログラムを、共有メモリを利用して、ＣＰＵユニット１１４に転送する。
【００３３】
図２ＡはＣＰＵユニット１１４の構成例を示したブロック図である。
【００３４】
図２Ａを参照すると、ＣＰＵユニット１１４は、ハードウェア構成としてはハードウェアモジュール２００と記憶装置２２０を有する。
【００３５】
ハードウェアモジュール２００は、ＣＰＵユニット１１４の動作に必要なハードウェアであり、マイコン２０１、バスＡＳＩＣ２１０、表示部２１２を有する。
【００３６】
マイコン２０１はＣＰＵ２０２、入出力ポート２０３、外部Ｉ／Ｆ２０４、ＲＯＭ２０５、ＲＡＭ２０６、不揮発性メモリ２０７を有する。
【００３７】
バスＡＳＩＣ２１０は、ＰＬＣ１１０に搭載されている各ユニットの共有メモリを構成するモジュールであり、相互にデータを同期化する。これによりユニット間のデータ通信が可能となる。共有メモリのメモリ構成に関しては後に述べる。
【００３８】
表示部２１２は、ユーザに視覚的に情報を表示するモジュールであり、ユーザがＣＰＵユニット１１４に対して情報を入力するときや、ＣＰＵユニット１１４からの情報をユーザに通知するときの表示に利用される。
【００３９】
記憶装置２２０は、例えば不揮発性の半導体メモリや磁気記憶媒体などで構成される記憶装置であり、ＣＰＵユニット１１４の動作に必要なプログラムやデータを保存する。例えば、シーケンスプログラム２２２や、ハードウェアモジュール２００内のメモリにシーケンスプログラム２２２を転送するロードプログラム２２４が記憶装置２２０に保存される。
【００４０】
また、ＣＰＵユニット１１４は、ＣＰＵ２０２がソフトウェアプログラムを実行することによって実現される機能的な構成として、ＯＳ機能部２３０、プログラム更新アプリケーション機能部２４０、制御アプリケーション機能部２４６を有する。
【００４１】
ＯＳ機能部２３０は、基本ソフトウェアによって実現され、ＣＰＵユニット１１４の動作を統括的に制御する。
【００４２】
プログラム更新アプリケーション機能部２４０は、アプリケーションソフトウェアで実現され、監視ユニット１１６と連携してシーケンスプログラムの更新を行う。プログラム更新アプリケーション機能部２４０の機能としてプログラム更新機能２４２とプログラムロード機能２４４が含まれる。
【００４３】
プログラム更新機能２４２は、監視ユニット１１６がシーケンスプログラムの更新をＣＰＵユニット１１４に要求する際に値を設定する共有メモリ内のアドレスのデータを監視し、更新を要求する値を検出すると、後に述べるシーケンスプログラム更新に向けた準備を行う機能である。
【００４４】
プログラムロード機能２４４は、監視ユニット１１６が共有メモリに設定したシーケンスプログラムを、ＣＰＵユニット１１４自身のメモリの所定のアドレスに保存する機能である。
【００４５】
制御アプリケーション機能部２４６は、アプリケーションソフトウェアで実現され、シーケンスプログラム２２２を実行する。
【００４６】
図２Ｂは監視ユニット１１６の構成例を示したブロック図である。
【００４７】
監視ユニット１１６は、ハードウェア構成として、ハードウェアモジュール２５０と記憶装置２７０とを有している。
【００４８】
ハードウェアモジュール２５０は、ＣＰＵユニット１１４のハードウェアモジュール２００と同様の構成であるため説明は省略する。
【００４９】
記憶装置２７０は、ＣＰＵユニット１１４に保存されているシーケンスプログラムを更新するために必要な複数のシーケンスプログラム２７２、状態テーブル２７４、および管理テーブル２７６を保持する。尚、記憶装置２７０にはＣＰＵユニット１１４の状態ならびに制御機器の状態に合わせて、柔軟にシーケンスプログラムの切り替えが出来るように、異なる機能を持った複数のシーケンスプログラムが保持される。
【００５０】
図３Ａは状態テーブル２７４の一例を詳細に示した図である。
【００５１】
状態テーブル２７４とは、ＣＰＵユニット１１４が実行しているシーケンスプログラムに関する情報を示すテーブルであり、実行している各シーケンスプログラムのアドレス３１０、プログラムＩＤ３１２、およびプログラムサイズ３１４が含まれる。
【００５２】
アドレス３１０は、プログラムＩＤ３１２によって示されたシーケンスプログラムが格納されているメモリのアドレスを示す。
【００５３】
プログラムＩＤ３１２は、実行しているシーケンスプログラムを一意に識別する識別情報である。
【００５４】
プログラムサイズ３１４は、プログラムＩＤ３１２が示すシーケンスプログラムのサイズを示す。
【００５５】
以上が状態テーブル２７４の説明である。尚、アドレス３１０、プログラムＩＤ３１２、プログラムサイズ３１４の他に、プログラムＩＤ３１２を示すシーケンスプログラム実行後に実行されるシーケンスプログラムの格納先アドレスなどテーブル２７４に更に含んでもよい。
【００５６】
図３Ｂは管理テーブル２７６の一例を詳細に示した図である。
【００５７】
管理テーブル２７６とは、監視ユニット１１６が記憶装置２７０に格納している複数のシーケンスプログラムに関する情報を示すテーブルであり、各シーケンスプログラムのプログラムＩＤ３１２、プログラム名３２０、プログラムサイズ３１４、格納先アドレス３２２、更新条件３２４、バージョン３２６が含まれる。
【００５８】
管理テーブル２７６のプログラムＩＤ３１２は、監視ユニット１１６が格納している各シーケンスプログラムを一意に識別する識別情報である。
【００５９】
プログラム名３２０は、プログラムＩＤ３１２によって示されるシーケンスプログラムの名称である。
【００６０】
格納先アドレス３２２は、シーケンスプログラム更新時にプログラムＩＤ３１２が示すシーケンスプログラムを格納するアドレスを示す。
【００６１】
更新条件３２４は、プログラムＩＤ３１２が示すシーケンスプログラムを更新する条件を示す。この更新条件３２４が満たされたときにシーケンスプログラムの更新を行う。
【００６２】
バージョン３２６は、プログラムＩＤ３１２によって示されたシーケンスプログラムのバージョンであり、シーケンスプログラムの管理に使用される。
【００６３】
以上が管理テーブル２７６の説明である。尚、プログラムＩＤ３１２、プログラム名３２０、プログラムサイズ３１４、格納先アドレス３２２、更新条件３２４、バージョン３２６の他に、例えば、プログラムＩＤ３１２が示すシーケンスプログラムと同時に実行すると不具合が生じる等の関係性が悪いシーケンスプログラムのプログラムＩＤや、記憶装置２７０にシーケンスプログラムを格納した日時などを管理テーブル２７６に更に含んでもよい。
【００６４】
また、監視ユニット１１６は、ＣＰＵ２５２がソフトウェアプログラムを実行することによって実現される機能的な構成として、ＯＳ機能部２８０と監視アプリケーション機能部２９０を有する。
【００６５】
ＯＳ機能部２８０は、基本ソフトウェアによって実現され、監視ユニット１１６の動作を統括的に制御する。
【００６６】
監視アプリケーション機能部２９０は、アプリケーションソフトウェアによって実現され、共有メモリを利用して、ＣＰＵユニット１１４の状態ならびに制御機器の状態を監視し、得た状態に応じてシーケンスプログラムを選択する。監視アプリケーション機能部２９０の機能として、ＣＰＵユニット状態監視機能２９２、シーケンスプログラム選択機能２９４、およびシーケンスプログラム転送機能２９６が含まれる。
【００６７】
ＣＰＵユニット状態監視機能２９２とは、ＣＰＵユニット１１４がＣＰＵユニット１１４の状態ならびに制御機器の状態を設定する共有メモリ内のアドレス(プログラム更新条件４０６)のデータを監視することにより、ＣＰＵユニット１１４ならびに制御機器の状態変化を検出する機能である。このプログラム更新条件４０６は、ＣＰＵユニット１１４が共有メモリを利用して監視ユニット１１６に通知する、ＣＰＵユニット１１４あるいは制御機器の状態を示す状態情報である。
【００６８】
シーケンスプログラム選択機能２９４とは、ＣＰＵユニット状態監視機能２９２が検出したＣＰＵユニット１１４ならびに制御機器の状態変化と管理テーブル２７６の更新条件３２４とが一致するシーケンスプログラムを選択する機能である。
【００６９】
シーケンスプログラム転送機能２９６とは、シーケンスプログラム選択機能２９４が選択したシーケンスプログラムを、共有メモリ利用してＣＰＵユニット１１４に転送する機能である。
【００７０】
以上が、ＣＰＵユニット１１４ならびに監視ユニット１１６の説明である。
【００７１】
図４は共有メモリのメモリ構成を詳細に示した図である。バスＡＳＩＣ２１０，２６０の機能によって共有メモリ同士がデータを同期させているので、ＣＰＵユニット１１４の共有メモリと監視ユニット１１６の共有メモリは同じデータを保持した状態に維持されている。例えば、ＣＰＵユニット１１４が自身の共有メモリに書き込んだデータは、監視ユニット１１６の共有メモリにも書き込まれる。
【００７２】
共有メモリには、プログラム更新管理領域４００、プログラムは更新領域４１０、システム領域４２０が含まれる。
【００７３】
プログラム更新管理領域４００とは、制御システムに影響を与えずにシーケンスプログラムを変更するために必要な情報を格納するための領域である。プログラム更新管理領域４００には、プログラム更新準備フラグ４０２、プログラム更新完了フラグ４０４、プログラム更新条件４０６が含まれる。
【００７４】
プログラム更新準備フラグ４０２とは、通常は「０」に設定されており、監視ユニット１１６がシーケンスプログラムを変更する準備が完了したときに「１」を設定するフラグである。監視ユニット１１６がフラグに「１」を設定することにより、ＣＰＵユニット１１４に対してシーケンスプログラムを更新することが通知される。
【００７５】
プログラム更新完了フラグ４０４は、通常は「０」に設定されており、ＣＰＵユニット１１４がシーケンスプログラムの更新を完了したときに「１」を設定するフラグである。ＣＰＵユニット１１４がフラグに「１」を設定することにより、監視ユニット１１６に対してシーケンスプログラムの更新が完了したことが通知される。
【００７６】
プログラム更新条件４０６は、シーケンスプログラムを更新する条件を示す情報である。ＣＰＵユニット１１４が、シーケンス制御の実行中に、ここに更新条件の値を設定する。そして、監視ユニット１１６は、ＣＰＵユニット状態監視機能２９２を利用して、この領域を監視しており、この領域の値に基づいてシーケンスプログラムを更新することを判断する。尚、図４に示したプログラム更新条件４０６の配置は一例であり、プログラム更新条件４０６はプログラム更新管理領域４００以外の領域にあってもよい。
【００７７】
プログラム更新領域４１０とは、監視ユニット１１６がＣＰＵユニット１１４へシーケンスプログラムを転送するときに使用する領域であり、更新先アドレス４１２、プログラムサイズ４１４、および更新プログラム４１６が含まれる。
【００７８】
格納先アドレス４１２は、更新するシーケンスプログラムの格納先アドレスを示す。
【００７９】
プログラムサイズ４１４は、更新するシーケンスプログラムのプログラムサイズを示す。
【００８０】
更新プログラム４１６は、更新するシーケンスプログラムを格納する領域である。
【００８１】
システム領域４２０は、ＰＬＣ１１０に搭載されている各ユニットが動作するために必要な情報を格納する領域である。
【００８２】
以上が、共有メモリの説明である。
【００８３】
図５は、ＰＬＣ１１０の初期起動時に、ＰＣ１００から監視ユニット１１６に、シーケンスプログラム２７２、状態テーブル２７４、管理テーブル２７６を転送するシーケンス図である。
【００８４】
ＰＣ１００ならびに監視ユニット１１６が起動した後、ＰＣ１００は制御システムを動作させるために必要な複数のシーケンスプログラムと各種テーブルの情報とを監視ユニット１１６に送信する(ステップ５００)。
【００８５】
監視ユニット１１６は、シーケンスプログラムと各種テーブルの情報とを受信すると（ステップ５１０）、シーケンスプログラムを記憶装置２７０に保存し（ステップ５２０）、また受信した各種テーブルの情報を基に、状態テーブル２７４ならびに管理テーブル２７６を作成する(ステップ５３０)。
【００８６】
それらの処理を完了すると、監視ユニット１１６はＰＣ１００に対して情報設定完了を送信する(ステップ５４０)。
【００８７】
ＰＣ１００が情報設定完了を受信すると、初期起動シーケンスを終了する(ステップ５５０)。
【００８８】
以上が監視ユニット１１６における初期起動時のシーケンスの説明である。
【００８９】
尚、ＰＣ１００は、この初期起動シーケンスを実行するために専用のアプリケーションを利用しても良い。
【００９０】
また、監視ユニット１１６に、既にシーケンスプログラムならびに各テーブルが設定されている場合、ステップ５００でＰＣ１００が送信したシーケンスプログラム等に対する応答として、監視ユニット１１６は既に設定済みである旨の情報をＰＣ１００に返送することにしてもよい。また、監視ユニット１１６は表示部２６４を利用して、既に設定済みであることをユーザに通知してもよく、既に設定済みの情報に対して上書きを行うかどうかをユーザに選択させてもよい。更に、監視ユニット１１６より情報設定完了の通知を受信できないとき、ＰＣ１００は、シーケンスプログラムおよびテーブル情報を再送してもよい。
【００９１】
図５の説明では、事前にＣＰＵユニット１１４にシーケンスプログラムが設定されていることを前提に、ＰＣ１００から監視ユニット１１６だけにシーケンスプログラムを送信する例を示した。しかし、事前にＣＰＵユニット１１４にシーケンスプログラムが設定されていない場合、ＰＣ１００は、ＣＰＵ１１４に設定するシーケンスプログラムと、監視ユニット１１６に保存するシーケンスプログラムとを、それらを区別できるように監視ユニット１１６に送信する。
【００９２】
図６は、ＣＰＵユニット１１４のシーケンスプログラムを更新するときの監視ユニット１１６の動作を示すフローチャートである。図７は、ＣＰＵユニット１１４のシーケンスプログラムを更新するときのＣＰＵユニット１１４の動作を示すフローチャートである。図６に示した監視ユニット１１６の動作と、図７に示したＣＰＵユニット１１４の動作とは連携している。
【００９３】
監視ユニット１１６はＣＰＵユニット状態監視機能２９２を利用して、プログラム更新条件４０６の値を確認する(ステップ６００)。
【００９４】
プログラム更新条件４０６の値に変化があったら、監視ユニット１１６は、シーケンスプログラム選択機能２９４を利用して、変化したプログラム更新条件４０６が管理テーブル２７６の更新条件３２４と一致するか否か判定する（ステップ６０２）。プログラム更新条件４０６が更新条件３２４と一致しなければ、監視ユニット４１６はそのまま処理を終了する。
【００９５】
プログラム更新条件４０６が更新条件３２７と一致すれば、監視ユニット１１６は、更に状態テーブル２７４を参照し（ステップ６０４）、更新が要求されているシーケンスプログラムについて、その更新が必要か否か確認する(ステップ６０６)。
【００９６】
確認した結果、シーケンスプログラムの更新が必要な場合、監視ユニット１１６は、シーケンスプログラム選択機能２９４を利用して管理テーブル２７６を参照し、更新するシーケンスプログラムのプログラムサイズ３１４ならびに格納先アドレス３２２を取得する。そして、監視ユニット１１６は、状態テーブル２７４に格納されている実行中のシーケンスプログラムのプログラムサイズ３１４と、管理テーブル２７６に格納されている更新するシーケンスプログラムのプログラムサイズ３１４とを比較することにより、更新が他のシーケンスプログラムに影響するか否か判定する（ステップ６０８）。
【００９７】
例えば、管理テーブル２７６に格納されている更新するシーケンスプログラムのプログラムサイズ３１４が、状態テーブル２７４に格納されている実行中のシーケンスプログラムのプログラムサイズ３１４を超えていなければ、更新が他のシーケンスプログラムへ影響することは無いと判断する。
【００９８】
他のシーケンスプログラムに影響がないことを確認できたら、監視ユニット１１６は、シーケンスプログラム転送機能２９６を利用して、シーケンスプログラムの更新を行う。
【００９９】
他のシーケンスプログラムに影響がある場合には、監視ユニット１１６は、他のシーケンスプログラムに影響を与えるため更新できない旨を表示部２６４に表示する(ステップ６２０)。更に、監視ユニット１１６は、更新できない旨を外部Ｉ／Ｆ２５４を通じてＰＣ１００にも通知してよい(ステップ６２２)。
【０１００】
以下、監視ユニット１１６におけるシーケンスプログラムの更新処理について述べる。
【０１０１】
ステップ６０８で、シーケンスプログラムの更新が可能と判定されると、監視ユニット１１６は、シーケンスプログラム転送機能２９６を利用して、共有メモリのプログラム更新領域４１０に更新するシーケンスプログラムの更新先アドレス、データサイズ、シーケンスプログラム自体をそれぞれ設定する（ステップ６１０）。更に、監視ユニット１１６は、シーケンスプログラムの更新準備が完了した旨をＣＰＵユニット１１４に通知するため、プログラム更新準備フラグ４０２に「１」を設定する(ステップ６１２)。
【０１０２】
図７を参照すると、ＣＰＵユニット１１４は、プログラム更新機能２４２を利用して、プログラム更新準備フラグ４０２の値を一定間隔で確認し（ステップ７０２）、プログラム更新準備フラグ４０２の値が「１」か否か判定する（ステップ７０４）。プログラム更新準備フラグ４０２が「１」であることは、監視ユニット１１６にて更新の準備ができたことを示している。
【０１０３】
プログラム更新準備フラグ４０２の値が「１」である場合、ＣＰＵユニット１１４はシーケンスプログラムの更新処理を実行する(ステップ７０４)。プログラム更新準備フラグ４０２の値が「１」以外の場合、シーケンスプログラムの更新処理は実行せず、通常処理を実行する(ステップ７１０)。
【０１０４】
以下にＣＰＵユニット１１４におけるシーケンスプログラムの更新処理について述べる。尚、ＣＰＵユニット１１４に格納してあるシーケンスプログラムには、プログラム更新準備フラグ４０２を格納するメモリアドレスに「１」が設定されていることを検知すると、更新する可能性があるメモリアドレスにアクセスしないという動作モード(以下、更新状態と呼ぶ)に遷移する機能が組み込まれているものとする。
【０１０５】
ＣＰＵユニット１１４は、プログラム更新機能２４２を利用して、プログラム更新準備フラグ４０２に「１」が設定されたことを検出すると、シーケンスプログラムを上記の更新状態に遷移させる。その後、ＣＰＵユニット１１４はプログラムロード機能２４４を利用して、プログラム更新領域４１０の更新先アドレス４１２に示されたメモリアドレスに、更新プログラム４１６をプログラムサイズ４１４分だけロードする(ステップ７０６)。
【０１０６】
更新プログラム４１６のロードが終了すると、ＣＰＵユニット１１４は、プログラムロード機能２４４を利用して、プログラム更新完了フラグ４０４に「１」を設定する(ステップ７０８)。
【０１０７】
図６に戻り、監視ユニット１１６は、ＣＰＵモジュール状態監視機能２９２を利用して、プログラム更新完了フラグ４０４が「１」に設定されたか否かの判定を、それが「１」に設定されるまで繰り返す（ステップ６１４）。
【０１０８】
監視ユニット１１６は、プログラム更新完了フラグ４０４に「１」が設定されたことを確認すると、ＣＰＵユニット１１４におけるシーケンスプログラムの更新が完了したと判断し、プログラム更新完了フラグ４０４ならびにプログラム更新準備フラグ４０２にそれぞれ「０」を設定する(ステップ６１６、６１８)。
【０１０９】
図７に戻り、ＣＰＵユニット１１４は、プログラム更新準備フラグ４０２の値が「０」に設定されたことを検知すると（ステップ７０４）、更新状態から通常処理を実行する状態に遷移し（ステップ７１０）、シーケンスプログラムの実行を再開する。
【０１１０】
以上がシーケンスプログラムの更新を行う場合のシーケンスである。本実施形態によれば、ＣＰＵユニット１１４から監視ユニット１１６にＣＰＵユニット１１４あるいは制御機器の状態を示す状態情報を通知し、監視ユニット１１６は、その状態情報に応じてシーケンスプログラムの更新を判断する。そのため、ＣＰＵユニット１１４あるいは制御機器の状態に合わせるように適応的にシーケンスプログラムを適応的に切り替えることができる。
【０１１１】
尚、ここでは、プログラム更新準備フラグ４０２に「１」が設定されるとＣＰＵユニット１１４に格納されたシーケンスプログラムが更新状態に遷移することを前提条件とした。しかし、他の例として、プログラム更新準備フラグ４０２に設定される値に応じて、特定のメモリアドレスにのみアクセスしないようなシーケンスプロフラムを予めＣＰＵユニット１１４に格納しておいてもよい。
【０１１２】
また、ステップ６１４において、シーケンスプログラムの更新が完了したことを、監視ユニット１１６はプログラム更新完了フラグ４０４の値を定期的に参照することにより、確認することにした。しかし、他の例として、監視ユニット１１６は、一定期間参照してもプログラム更新完了フラグ４０４の値が「１」にならない場合、ステップ６２０、６２２と同様に、表示部２６４に更新が完了しない旨を表示し、ＰＣ１００に外部Ｉ／Ｆ２５４を通じて通知してもよい。
【０１１３】
図６、７に示したように、本実施形態では、プログラムを更新する際、監視ユニット１１６がプログラム更新条件を確認し、プログラムの更新を行うか否か判断している。しかし、本発明がこの例に限定されることは無い。他の例として、ＣＰＵユニット１１４が主体的に監視ユニット１１６にプログラムの更新を要求することにしてもよい。
【０１１４】
図８は、ＣＰＵユニット１１４のシーケンスプログラムを更新するときの監視ユニット１１６の動作の変形例を示すフローチャートである。図９は、ＣＰＵユニット１１４のシーケンスプログラムを更新するときのＣＰＵユニット１１４の動作の変形例を示すフローチャートである。図８に示した監視ユニット１１６の動作と、図９に示したＣＰＵユニット１１４の動作とは連携している。
【０１１５】
図９を参照すると、ＣＰＵユニット１１４は、シーケンスプログラムの実行中に、シーケンスプログラムの更新が必要になると、その更新の更新条件をプログラム更新条件４０６に設定した後、プログラム更新準備フラグ４０２に「１」を設定する(ステップ９０２)。
【０１１６】
尚、この例では、シーケンスプログラムには、シーケンスプログラムの更新の要否を認識し、シーケンスプログラムの更新が必要なときにプログラム更新条件４０６ならびにプログラム更新準備フラグ４０２を設定する処理が予め組み込まれているものとする。
【０１１７】
図８を参照すると、監視ユニット１１６は、ＣＰＵユニット状態監視機能２９２を利用して、プログラム更新準備フラグ４０２の値を定期的に確認する（ステップ８０２）。そして、監視ユニット１１６は、プログラム更新準備フラグ４０２が「１」になったか否か判定する（ステップ８０３）。
【０１１８】
プログラム更新準備フラグ４０２が「１」になったら、監視ユニット１１６は、シーケンスプログラム選択機能２９４を利用して、プログラム更新条件４０６を確認する(ステップ８０４)。更に、監視ユニット１１６は、そのプログラム更新条件と、管理テーブル２７６の更新条件３２４とを比較する（ステップ８０６）。
【０１１９】
プログラム更新条件４０６に、管理テーブル２７６の更新条件３２４と同じプログラム更新条件があった場合、監視ユニット１１６は、シーケンスプログラム選択機能２９４を利用して状態テーブル２７４を参照し（ステップ８０８）、シーケンスプログラムの更新が必要か否か判定する(ステップ８１０)。例えば、更新が要求されているバージョンのシーケンスプログラムが既に実行されていれば、更新は必要ない。
【０１２０】
確認した結果、シーケンスプログラムの更新が必要であれば、監視ユニット１１６は、シーケンスプログラム選択機能２９４を利用して状態テーブル２７４を参照し、更新するシーケンスプログラムのプログラムサイズ３１４と格納先アドレス３２２を取得する。そして、監視ユニット１１６は、更新するシーケンスプログラムのプログラムサイズ３１４と、状態テーブル２７４に格納されているプログラムサイズ３１４とを比較することにより、他のシーケンスプログラムに影響があるか否か判断する。
【０１２１】
他のシーケンスプログラムに影響がないことを確認できたら、監視ユニット１１６は、シーケンスプログラム転送機能２９６を利用して、シーケンスプログラムの更新が可能と判断する（ステップ８１２）。
【０１２２】
ステップ８１２により、シーケンスプログラムの更新が可能であることが確認できた場合、監視ユニット１１６はシーケンスプログラム転送機能２９６を利用して、共有メモリのプログラム更新領域４１０に、更新するシーケンスプログラムの更新先アドレス、データサイズ、およびシーケンスプログラムをそれぞれ設定する（ステップ８１４）。
【０１２３】
更に、監視ユニット１１６は、シーケンスプログラムの更新準備が完了したことをＣＰＵユニット１１４に通知するため、プログラム更新完了フラグ４０４に「１」を設定する(ステップ８１６)。
【０１２４】
図９に戻り、ＣＰＵユニット１１４は、プログラム更新機能２４２を利用して、プログラム更新完了フラグ４０４の値が「１」か否か定期的に判定する（ステップ９０４）。プログラム更新完了フラグ４０４が「１」であれば、ＣＰＵユニット１１４は、シーケンスプログラムの更新処理を実行する。
【０１２５】
プログラム更新完了フラグ４０４が「１」であることを検知すると、ＣＰＵユニット１１４は、プログラム更新機能２４２を利用して、ＣＰＵユニット１１４に格納されてあるシーケンスプログラムを更新状態に遷移させる。その後、ＣＰＵユニット１１４はプログラムロード機能２４４を利用して、プログラム更新領域４１０に設定されている更新先アドレス４１２に示すメモリアドレスに、更新プログラム４１６をプログラムサイズ４１４分だけ設定する(ステップ９０６)。
【０１２６】
更新プログラム４１６の設定が終了すると、監視ユニット１１６は、プログラム更新完了フラグ４０４とプログラム更新準備フラグ４０２にそれぞれ「０」を設定する(ステップ９０８、９１０)。
【０１２７】
図８に戻り、監視ユニット１１６は、プログラム更新完了フラグ４０４に「０」が設定されているか否かを定期的に確認し（ステップ８１８）、それを確認すると、シーケンスプログラムの更新が完了したと判断して処理を終了する。
【０１２８】
また、ステップ８０６、ステップ８１０、ステップ８１２においてシーケンスプログラムの更新を行うことが出来ないと判断された場合、監視ユニット１１６は、表示部２６４に更新が出来ない旨を表示し（ステップ８２０）、またその旨をＰＣ１００に外部Ｉ／Ｆ２５４を通じて通知する（ステップ８２２）。そして、監視ユニット１１６は、プログラム更新完了フラグ４０４に「２」を設定し(ステップ８２４)、ステップ８１８に進む。
【０１２９】
図９に戻り、ステップ９０４においてプログラム更新完了フラグが「１」以外であれば、ＣＰＵユニット１１４は、プログラム更新完了フラグ４０４に「２」が設定されているか否か判断する（ステップ９１２）。
【０１３０】
プログラム更新完了フラグ４０４に「２」が設定された場合、ＣＰＵユニット１１４は、何かの理由でシーケンスプログラムの更新が出来ないことを認識し、プログラム更新準備フラグ４０２だけに「０」を設定する(ステップ９１４)。また他の例として、ＣＰＵユニット１１４はプログラム更新完了フラグ４０４に「２」が設定されたら、ＣＰＵユニット１１４は何かシーケンスプログラムに異常があると判断し、安全な動作のみを実行する安全状態に遷移してもよい。
【０１３１】
尚、図８には示していないが、監視ユニット１１６は、シーケンスプログラムを更新できなくても、ＣＰＵユニット１１４が問題なく動作できるのであれば、プログラム更新完了フラグ４０４に「２」以外の値を設定してもよい。
【０１３２】
その場合、監視ユニット１１６は、ステップ９１２にて、プログラム更新完了フラグに「２」以外の値が設定されていることから、ＣＰＵユニット１１４はシーケンスプログラムを更新することはできないが、ＣＰＵユニット１１４の動作は問題なく継続されると判断し、プログラム更新完了フラグ４０４とプログラム更新準備フラグ４０２にそれぞれ「０」を設定し（ステップ９１６、９１８）、通常動作を継続してもよい（ステップ９２０）。
【０１３３】
以上が、ＣＰＵユニット１１４がシーケンスプログラムの更新を要求する場合の監視ユニット１６およびＣＰＵユニット１１４の動作である。
【０１３４】
尚、ここではステップ８１８において、シーケンスプログラムの更新が完了したことを、監視ユニット１１６はプログラム更新準備フラグ４０２の値を定期的に参照することにより、確認している。しかし、他の例として、監視ユニット１１６は一定期間プログラム更新準備フラグ４０２を監視してもその値が「０」にならない場合、ステップ８２０、ステップ８２２と同様に、表示部２６４に更新が完了しない旨を表示し、その旨をＰＣ１００に外部Ｉ／Ｆ２５４を通じて通知してもよい。
【０１３５】
また、ステップ８２２において、監視ユニット１１６は、外部Ｉ／Ｆ２５４を通じてＰＣ１００に更新を行うことが出来ないことを通知する際に、ＰＣ１００より新しいシーケンスプログラムを取得しても良い。以下に、ＰＣ１００より監視ユニット１１６へ新しいシーケンスプログラムを転送するシーケンスを説明する。
【０１３６】
図１０は、ＰＣ１００から監視ユニット１１６へ新たなシーケンスプログラムを配送するときのシーケンス図である。
【０１３７】
監視ユニット１１６は、図８のステップ８０６、ステップ８１０、ステップ８１２においてシーケンスプログラムの更新を行うことが出来ない場合、格納している状態テーブル２７４の情報、管理テーブル２７６の情報、およびプログラム更新条件４０６を外部Ｉ／Ｆ２５４を通じてＰＣ１００に送信する(ステップ１００２)。
【０１３８】
状態テーブル２７４の情報、管理テーブル２７６の情報、およびプログラム更新条件４０６を受信すると（ステップ１００４）、ＰＣ１００は、それらの受信したデータを解析し、更新を行うことが出来ない原因を究明する（ステップ１００６）。そして、ＰＣ１００は、新しいシーケンスプログラム、状態テーブルの情報、管理テーブルの情報、ならびにプログラム更新条件を作成し（ステップ１００８）、それらを監視ユニット１１６に送信する(ステップ１０１０)。
【０１３９】
新しいシーケンスプログラム、状態テーブルの情報、管理テーブルの情報、ならびにプログラム更新条件を受信すると（ステップ１０１２）、監視ユニット１１６は、受信したデータを状態テーブル２７４、管理テーブル２７６、ならびにプログラム更新条件４０６等にそれぞれ設定する(ステップ１０１４)。
【０１４０】
以上が、ＰＣ１００から監視ユニット１１６へ新しいシーケンスプログラムを転送する場合のシーケンスである。
【０１４１】
尚、ステップ１０１４の後、監視ユニット１１６はステップ８０４に進み、プログラム更新条件４０６の確認から処理を進めてもよい。
【０１４２】
上述の通り、図１０では、監視ユニット１１６よりＰＣ１００に対して新しいシーケンスプログラムを転送する処理を実行した。しかし、本発明がこの動作に限定されることはない。
【０１４３】
図１１は、ＰＣ１００から監視ユニット１１６へ新たなシーケンスプログラムを配送するときの変形例のシーケンス図である。
【０１４４】
ＰＣ１００は、プログラムＩＤが示すシーケンスプログラムのバージョンを確認するため、監視ユニット１１６に対してプログラムバージョン要求を送信する(ステップ１１０２)。
【０１４５】
プログラムバージョン要求を受信すると（ステップ１１０４）、監視ユニット１１６は、管理テーブル２７６を参照し（ステップ１１０６）、プログラムバージョン要求に含まれるプログラムＩＤが示すプログラムのバージョンを、プログラムバージョン要求の応答として、ＰＣ１００に送信する(ステップ１１０８)。
【０１４６】
応答を受信すると（ステップ１１１０）、ＰＣ１００は、その応答に含まれるプログラムバージョンからプログラムの更新が必要か否か判断する(ステップ１１１２)。
【０１４７】
プログラムの更新が必要の場合、ＰＣ１００は、新しいシーケンスプログラム、ならびにプログラムバージョンを、監視ユニット１１６に送信する(ステップ１１１４)。尚、プログラムの更新が必要ない場合は、ＰＣ１００はここでは何もしない。
【０１４８】
新しいシーケンスプログラム、ならびにプログラムバージョンを受信した監視ユニット１１６は、プログラム更新処理を実行する(ステップ１１１８)。
【０１４９】
図１２は、ステップ１１１８に示したプログラム更新処理における監視ユニット１１６の詳細な動作を示すフローチャートである。
【０１５０】
監視ユニット１１６は、受信した情報に基づいて管理テーブル２７６を更新し、共有メモリのプログラム更新領域４１０に更新するシーケンスプログラムの更新先アドレス、データサイズ、シーケンスプログラムをそれぞれ設定する（ステップ１２０２）。更に、監視ユニット１１６は、シーケンスプログラムの更新準備が完了したことをＣＰＵユニット１１４に通知するため、プログラム更新準備フラグ４０２に「３」を設定する(ステップ１２０４)。それ以降のシーケンス（ステップ１２０６〜１２１０）は、図６に示したステップ６１４〜６１８と同様であるため、ここでは説明を省略する。
【０１５１】
以上がＰＣ１００より監視ユニット１１６に新しいシーケンスプログラムを転送する処理のシーケンスである。
【０１５２】
以上、本発明の実施形態について具体的に説明したが、本発明が上記開示に限定されるものでなく、本発明の趣旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【０１５３】
１００…ＰＣ、１１０…ＰＬＣ、１１２…電源ユニット、１１４…ＣＰＵユニット、１１６…監視ユニット、１１８…Ｏユニット、１２０…インバータ、１２２…圧縮機、１２４…サーボモータ、２００…ハードウェアモジュール、２０１…マイコン、２０２…ＣＰＵ、２０３…入出力ポート、２０４…外部Ｉ／Ｆ、２０５…ＲＯＭ、２０６…ＲＡＭ、２０７…不揮発性メモリ、２１０…バスＡＳＩＣ、２１２…表示部、２２０…記憶装置、２２２…シーケンスプログラム、２２４…ロードプログラム、２３０…ＯＳ機能部、２４０…プログラム更新アプリケーション機能部、２４６…制御アプリケーション機能部、２５０…ハードウェアモジュール、２５１…マイコン、２５２…ＣＰＵ、２５３…入出力ポート、２５４…外部Ｉ／Ｆ、２５５…ＲＯＭ、２５６…ＲＡＭ、２５７…不揮発性メモリ、２６０…バスＡＳＩＣ、２６４…表示部、２７０…記憶装置、２８０…ＯＳ機能部、２９０…監視アプリケーション機能部、
【図１】
0005687171.tif 000002
【図２Ａ】
0005687171.tif 000003
【図２Ｂ】
0005687171.tif 000004
【図３Ａ】
0005687171.tif 000005
【図３Ｂ】
0005687171.tif 000006
【図４】
0005687171.tif 000007
【図５】
0005687171.tif 000008
【図６】
0005687171.tif 000009
【図７】
0005687171.tif 000010
【図８】
0005687171.tif 000011
【図９】
0005687171.tif 000012
【図１０】
0005687171.tif 000013
【図１１】
0005687171.tif 000014
【図１２】
0005687171.tif 000015