(57)【要約】【課題】  プログラムを更新するためのモジュールがアップロードされＰＬＣにおいて、上記プログラムを変更することなく、アップロードされたモジュールのエラーチェックを行うことを目的とする。【解決手段】  ＰＬＣ１が、複数のモジュールからなるプログラム５を記憶するプログラム記憶部１５と、プログラム作成支援装置２からアップロードされたモジュールｍｏｄＡを記憶する更新データ記憶部１２と、モジュールｍｏｄＡについてエラーチェックを行うエラーチェック部１３と、モジュールｍｏｄＡをプログラム記憶部１５へ書き込むプログラム変更部１４とを備え、モジュールｍｏｄＡのアップロード時に、そのエラーチェックを行い、エラーチェック結果に基づいてプログラム５の更新を行う。【選択図】  図３
2008282363.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムを繰り返し実行する運用モード及び上記制御プログラムの実行を停止する非運用モードを切り替え可能なプログラマブルコントローラにおいて、
上記制御プログラムを記憶する第１プログラム記憶部と、
外部装置から新たなプログラムを受信するデータ受信手段と、
上記新たなプログラムを記憶する第２プログラム記憶部と、
上記新たなプログラムについてエラーチェックを行うエラーチェック手段と、
上記エラーチェックの結果に基づいて、上記新たなプログラムを上記第１プログラム記憶部へ書き込むプログラム変更手段とを備えたことを特徴とするプログラマブルコントローラ。
【請求項２】
上記データ受信手段は、上記新たなプログラムを運用モード中に受信可能であり、
上記プログラム変更手段は、運用モード中に、上記新たなプログラムを上記第１プログラム記憶部へ書き込み可能であることを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
上記第１プログラム記憶部が、上記制御プログラムとして複数のモジュールを保持し、
上記データ受信手段が、新たなモジュールを受信し、
上記第２プログラム記憶部が、上記新たなモジュールを記憶し、
上記エラーチェック手段が、上記第１プログラム記憶部及び上記第２プログラム記憶部を参照して上記新たなモジュールのエラーチェックを行い、
上記プログラム変更手段は、上記エラーチェックの結果に基づいて、上記新たなモジュールを上記第１記憶部へ書き込むことを特徴とする請求項１又は２に記載のプログラマブルコントローラ。
【請求項４】
制御プログラムを繰り返し実行する運用モード及び上記制御プログラムの実行を停止する非運用モードを切り替え可能なプログラマブルコントローラに対し、上記制御プログラムを更新するための新たなプログラムを送信するプログラム作成支援装置において、
上記プログラマブルコントローラ内において行われるエラーチェックの結果に基づいて上記制御プログラムを更新するためのプログラムとして、上記新たなプログラムを上記プログラマブルコントローラへ送信するプログラム送信手段と、
上記エラーチェックの結果を上記プログラマブルコントローラから受信するエラー情報受信手段と、
受信した上記エラーチェック結果を表示する表示手段とを備えたことを特徴とするプログラム作成支援装置。
【請求項５】
上記エラー情報受信手段が、上記プログラマブルコントローラから、上記制御プログラムの更新が上記エラーチェックの結果に基づき行われなかった旨の通知を受信することを特徴とする請求項４に記載のプログラム作成支援装置。
【請求項６】
上記プログラム送信手段が、運用モード中の上記プログラマブルコントローラに対し、上記新たなプログラムを送信することができ、
上記エラー情報受信手段が、運用モード中の上記プログラマブルコントローラから、上記制御プログラムの更新が上記エラーチェックの結果に基づき行われなかった旨の通知を受信することを特徴とする請求項４に記載のプログラム作成支援装置。
【請求項７】
上記エラーチェックの結果に基づいて上記制御プログラムの変更についてユーザの意思確認を行うプログラム変更確認手段と、
非運用モード中の上記プログラマブルコントローラに対し、上記意思確認の結果を送信する意思確認結果送信手段とを備えたことを特徴とする請求項４に記載のプログラム作成支援装置。
【請求項８】
上記制御プログラムが、複数のモジュールからなり、
上記プログラム送信手段が、上記プログラマブルコントローラ内において行われるエラーチェックの結果に基づいて上記制御プログラムを更新するためのモジュールとして、新たなモジュールを上記プログラマブルコントローラへ送信することを特徴とする請求項４、６又は７に記載のプログラム作成支援装置。
【請求項９】
上記エラーチェックの結果に基づいて、上記制御プログラムを構成するモジュールを上記プログラマブルコントローラから受信するプログラム受信手段とを備え、
上記表示手段が、上記プログラム受信手段が受信した上記モジュールを表示することを特徴とする請求項８に記載のプログラム作成支援装置。
【請求項１０】
制御プログラムを繰り返し実行する運用モード及び上記制御プログラムの実行を停止する非運用モードを切り替え可能なプログラマブルコントローラに対し、上記制御プログラムを更新するための新たなプログラムを送信するプログラム作成支援装置としてコンピュータを機能させるためのコンピュータプログラムであって、
上記プログラマブルコントローラ内において行われるエラーチェックの結果に基づいて上記制御プログラムを更新するためのプログラムとして、上記新たなプログラムを上記プログラマブルコントローラへ送信するプログラム送信手段と、
上記エラーチェックの結果を上記プログラマブルコントローラから受信するエラー情報受信手段と、
受信した上記エラーチェック結果を表示する表示手段として機能させることを特徴とするコンピュータプログラム。
【請求項１１】
上記エラーチェックの結果に基づいて上記制御プログラムの変更についてユーザの意思確認を行うプログラム変更確認手段と、
非運用モード中の上記プログラマブルコントローラに対し、上記意思確認の結果を送信する意思確認結果送信手段として機能させることを特徴とする請求項１０に記載のコンピュータプログラム。
【請求項１２】
制御プログラムを繰り返し実行する運用モード及び上記制御プログラムの実行を停止する非運用モードを切り替え可能なプログラマブルコントローラと、プログラム作成支援装置からなるＰＬＣシステムにおいて、
上記プログラム作成支援装置は、新たなプログラムを上記プログラマブルコントローラへ送信するプログラム送信手段を有し、
上記プログラマブルコントローラは、上記制御プログラムを記憶する第１プログラム記憶部と、上記新たなプログラムを受信するデータ受信手段と、上記新たなプログラムを記憶する第２プログラム記憶部と、上記新たなプログラムについてエラーチェックを行うエラーチェック手段と、上記エラーチェックの結果に基づいて、上記新たなプログラムを上記第１プログラム記憶部へ書き込むプログラム変更手段とを有することを特徴とするＰＬＣシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムマブルコントローラに係り、更に詳しくは、制御プログラムを繰り返し実行する運用モードと、上記制御プログラムの実行を停止する非運用モードとを切り替え可能なプログラマブルコントローラ、当該プログラマブルコントローラ用のプログラムを作成し、当該プログラマブルコントローラへ書き込むためのプログラム作成支援装置、当該プログラム作成支援装置をコンピュータ上で実現するためのコンピュータプログラム、並びに、上記プログラムマブルコントローラ及びプログラム作成支援装置を含むＰＬＣシステムに関する。
【背景技術】
【０００２】
プログラマブルコントローラ（以下、ＰＬＣと略す）は、ＦＡ（Factory Automation）制御システムにおいて広く使用されているシーケンス制御装置であり、ラダープログラムと呼ばれる専用プログラムに従って動作する。このため、ＰＬＣ内のラダープログラムを書き換えることによって、所望のシーケンス制御装置を実現することができる。このラダープログラムは、通常、パーソナルコンピュータに専用プログラムをインストールしたプログラム作成支援装置を用いて作成され、通信ケーブルを介してＰＬＣへ転送（アップロード）される。
【０００３】
この様にしてアップロードされたラダープログラムがエラーを含んでいる場合、当該ＰＬＣは正常に動作することができないため、予めラダープログラムのエラーチェックを行っておく必要がある。通常は、ラダープログラムのアップロード前にプログラム作成支援装置内においてエラーチェックが行われるが、ラダープログラムのアップロード後にＰＬＣ内において簡単なエラーチェックを行うものもあった。
【０００４】
一般に、ＰＬＣは、ラダープログラムを実行している運用モード（いわゆるＲＵＮモード）と、ラダープログラムを実行していない非運用モード（いわゆるＰＲＯＧＲＡＭモード）とがあり、両モードはユーザ操作によって切り替えられる。ＰＬＣ内でのエラーチェックは、ラダープログラムの実行前、つまり、非運用モード中に行わなければ意味がないことから、エラーチェックを行っている従来のＰＬＣでは、ラダープログラムのアップロードを非運用モード中のみに制限し、運用モードへ切り替えられる前にエラーチェックを実行している。このエラーチェックの結果、エラーが発見された場合には、警告メッセージが出力されるとともに、誤って実行されることがないように当該ラダープログラムは消去される。
【０００５】
しかしながら、システムの一時停止及び再開による影響が大きく、ＰＬＣを頻繁に非運用モードへ切り替えることが許されない制御システムもある。このような制御システムのために、運用モード時にもラダープログラムをアップロードできるＰＬＣもある。ただし、このようなＰＬＣでは、運用モード中であるが故に、アップロードされたラダープログラムについてエラーチェックを行うことができず、エラーを含むプログラムをアップロードすれば、ＰＬＣが正常に動作しなくなる。
【０００６】
つまり、非運用モード時にアップロードされたラダープログラムについては、ＰＬＣ内でエラーチェックを行うことができるが、運用モード時にアップロードされたラダープログラムについては、ＰＬＣ内でエラーチェックを行うことはできない。従って、ラダープログラムを運用モード中にアップロードする場合には、プログラム作成支援装置内において十分なエラーチェックを行っておく必要がある。
【０００７】
また、最近のＰＬＣの高速化、高機能化にともなって、ラダープログラムは大型で複雑なものとなり、１つのラダープログラムの開発を複数の設計者が共同で行うというケースが増えてきた。大規模なラダープログラムを複数の設計者で開発する場合、１つのラダープログラムを複数のモジュールに分割し、これらのモジュールごとに設計者が割り当てられる。各設計者は、それぞれの端末装置において自らが担当しているモジュールを作成し、異なる端末装置において作成された各モジュールをマージ（結合）することによって１つのラダープログラムが得られる。
【０００８】
このマージ処理をいずれかの端末装置において行う場合、端末装置間におけるモジュールを受け渡しが必要となる。このようなマージ処理が１回限りであれば問題ないが、いずれかの設計者がモジュールを編集するたびにマージ処理が必要になることから、通常は、モジュールの受け渡しが頻繁に発生し、そのバージョン管理も必要となり、共同開発にともなって煩雑で非効率的な作業が発生していた。このため、各端末装置からＰＬＣへモジュールをアップロードし、ＰＬＣ内でマージ処理を行うという設計手法を採用することが望ましい。
【０００９】
しかしながら、モジュール間の整合性を含む十分なエラーチェックを行うためには、マージ処理後にエラーチェックを実行する必要があり、ＰＬＣ内でマージ処理を行うとすれば、エラーチェックもＰＬＣ内で行わなければならない。そうすると、運用モードのＰＬＣに対し、各端末装置からモジュールをアップロードすることはできないという問題があった。
【００１０】
また、エラーチェックを行っているＰＬＣは、エラーが発見されたラダープログラムを消去することにより、誤って運用モードへ切り替えられ、エラーを含むラダープログラムが実行されるのを防止している。しかしながら、エラー内容を詳細に解析するためには、エラーチェックの対象となったラダープログラムを入手する必要があり、ＰＬＣ内で行われたマージ処理をいずれかの端末装置において再現しなければならない。そのためには、端末装置間でモジュールの受け渡しを行う必要があり、煩雑であるという問題があった。
【００１１】
なお、特許文献１には、ＰＬＣ内のラダープログラムを解析するための従来技術が開示されている。この従来技術は、ラダープログラムの実行結果をＰＬＣから出力し、デバッグ装置に取り込んで解析するというものであり、ラダープログラムの実行後にデバッグを行うことを目的とするものである。
【特許文献１】特開２００３−１２２４０５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、上記の事情に鑑みてなされたものであり、運用モード時の実行対象となるプログラムを変更することなく、アップロードされたプログラムのエラーチェックを行うことができるＰＬＣを提供することを目的とする。特に、運用モード中にアップロードされたプログラムのエラーチェック結果に基づいて実行対象となる制御プログラムを変更するＰＬＣを提供することを目的とする。
【００１３】
また、運用モード時の実行対象となるプログラムが複数のモジュールで構成され、このプログラムを更新するためのモジュールがアップロードされた場合に、実行対象としての上記プログラムを変更することなく、アップロードされたモジュールのエラーチェックを行うＰＬＣを提供することを目的とする。特に、運用モード中にアップロードされたモジュールについてのエラーチェック結果に基づいて実行対象となるプログラムを変更するＰＬＣを提供することを目的とする。
【００１４】
また、上記ＰＬＣへプログラムを送信するためのプログラム作成支援装置、及び、コンピュータを上記プログラム作成支援装置として機能させるためのコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
第１の本発明によるプログラマブルコントローラは、制御プログラムを繰り返し実行する運用モード及び上記制御プログラムの実行を停止する非運用モードを切り替え可能なプログラマブルコントローラであって、上記制御プログラムを記憶する第１プログラム記憶部と、外部装置から新たなプログラムを受信するデータ受信手段と、上記新たなプログラムを記憶する第２プログラム記憶部と、上記新たなプログラムについてエラーチェックを行うエラーチェック手段と、上記エラーチェックの結果に基づいて、上記新たなプログラムを上記第１プログラム記憶部へ書き込むプログラム変更手段とを備えて構成される。
【００１６】
第２の本発明によるプログラマブルコントローラは、上記構成に加えて、上記データ受信手段は、上記新たなプログラムを運用モード中に受信可能であり、上記プログラム変更手段は、運用モード中に、上記新たなプログラムを上記第１プログラム記憶部へ書き込み可能となるように構成される。
【００１７】
第３の本発明によるプログラマブルコントローラは、上記構成に加えて、上記第１プログラム記憶部が、上記制御プログラムとして複数のモジュールを保持し、上記データ受信手段が、新たなモジュールを受信し、上記第２プログラム記憶部が、上記新たなモジュールを記憶し、上記エラーチェック手段が、上記第１プログラム記憶部及び上記第２プログラム記憶部を参照して上記新たなモジュールのエラーチェックを行い、上記プログラム変更手段は、上記エラーチェックの結果に基づいて、上記新たなモジュールを上記第１記憶部へ書き込むように構成される。
【００１８】
第４の本発明によるプログラム作成支援装置は、制御プログラムを繰り返し実行する運用モード及び上記制御プログラムの実行を停止する非運用モードを切り替え可能なプログラマブルコントローラに対し、上記制御プログラムを更新するための新たなプログラムを送信するプログラム作成支援装置であって、上記プログラマブルコントローラ内において行われるエラーチェックの結果に基づいて上記制御プログラムを更新するためのプログラムとして、上記新たなプログラムを上記プログラマブルコントローラへ送信するプログラム送信手段と、上記エラーチェックの結果を上記プログラマブルコントローラから受信するエラー情報受信手段と、受信した上記エラーチェック結果を表示する表示手段とを備えて構成される。
【００１９】
第５の本発明によるプログラム作成支援装置は、上記構成に加えて、上記エラー情報受信手段が、上記プログラマブルコントローラから、上記制御プログラムの更新が上記エラーチェックの結果に基づき行われなかった旨の通知を受信するように構成される。
【００２０】
第６の本発明によるプログラム作成支援装置は、上記構成に加えて、上記プログラム送信手段が、運用モード中の上記プログラマブルコントローラに対し、上記新たなプログラムを送信することができ、上記エラー情報受信手段が、運用モード中の上記プログラマブルコントローラから、上記制御プログラムの更新が上記エラーチェックの結果に基づき行われなかった旨の通知を受信するように構成される。
【００２１】
第７の本発明によるプログラム作成支援装置は、上記構成に加えて、上記エラーチェックの結果に基づいて上記制御プログラムの変更についてユーザの意思確認を行うプログラム変更確認手段と、非運用モード中の上記プログラマブルコントローラに対し、上記意思確認の結果を送信する意思確認結果送信手段とを備えて構成される。
【００２２】
第８の本発明によるプログラム作成支援装置は、上記構成に加えて、上記制御プログラムが、複数のモジュールからなり、上記プログラム送信手段が、上記プログラマブルコントローラ内において行われるエラーチェックの結果に基づいて上記制御プログラムを更新するためのプログラムとして、新たなモジュールを上記プログラマブルコントローラへ送信するように構成される。
【００２３】
第９の本発明によるプログラム作成支援装置は、上記構成に加えて、上記エラーチェックの結果に基づいて、上記制御プログラムを構成するモジュールを上記プログラマブルコントローラから受信するプログラム受信手段とを備え、上記表示手段が、上記プログラム受信手段が受信した上記モジュールを表示するように構成される。
【００２４】
第１０の本発明によるコンピュータプログラムは、制御プログラムを繰り返し実行する運用モード及び上記制御プログラムの実行を停止する非運用モードを切り替え可能なプログラマブルコントローラに対し、上記制御プログラムを更新するための新たなプログラムを送信するプログラム作成支援装置としてコンピュータを機能させるためのコンピュータプログラムであって、上記プログラマブルコントローラ内において行われるエラーチェックの結果に基づいて上記制御プログラムを更新するためのプログラムとして、上記新たなプログラムを上記プログラマブルコントローラへ送信するプログラム送信手段と、上記エラーチェックの結果を上記プログラマブルコントローラから受信するエラー情報受信手段と、受信した上記エラーチェック結果を表示する表示手段として機能させるように構成される。
【００２５】
第１１の本発明によるコンピュータプログラムは、上記構成に加えて、上記エラーチェックの結果に基づいて上記制御プログラムの変更についてユーザの意思確認を行うプログラム変更確認手段と、非運用モード中の上記プログラマブルコントローラに対し、上記意思確認の結果を送信する意思確認結果送信手段として機能させるように構成される。
【００２６】
第１２の本発明によるＰＬＣシステムは、制御プログラムを繰り返し実行する運用モード及び上記制御プログラムの実行を停止する非運用モードを切り替え可能なプログラマブルコントローラと、プログラム作成支援装置からなるＰＬＣシステムであって、上記プログラム作成支援装置が、新たなプログラムを上記プログラマブルコントローラへ送信するプログラム送信手段を有し、上記プログラマブルコントローラが、上記制御プログラムを記憶する第１プログラム記憶部と、上記新たなプログラムを受信するデータ受信手段と、上記新たなプログラムを記憶する第２プログラム記憶部と、上記新たなプログラムについてエラーチェックを行うエラーチェック手段と、上記エラーチェックの結果に基づいて、上記新たなプログラムを上記第１プログラム記憶部へ書き込むプログラム変更手段とを有する。
【発明の効果】
【００２７】
本発明によれば、運用モード時の実行対象となるプログラムを変更することなく、アップロードされたプログラムのエラーチェックを行うＰＬＣを提供することができる。特に、運用モード中にアップロードされたプログラムのエラーチェック結果に基づいて実行対象となる制御プログラムを変更するＰＬＣを提供することができる。
【００２８】
また、運用モード時の実行対象となるプログラムが複数のモジュールで構成され、このプログラムを更新するためのモジュールがアップロードされた場合に、実行対象としての上記プログラムを変更することなく、アップロードされたモジュールのエラーチェックを行うＰＬＣを提供することができる。特に、運用モード中にアップロードされたモジュールについてのエラーチェック結果に基づいて実行対象となるプログラムを変更するＰＬＣを提供することができる。
【発明を実施するための最良の形態】
【００２９】
実施の形態１．
［システムの概略構成］
図１は、本発明の実施の形態１によるＰＬＣ（Programable Logic Controller）システムの概略構成の一例を示した図である。このシステムは、１つのＰＬＣ１、当該ＰＬＣ１に接続された複数のプログラム作成支援装置２、入力装置３及び出力装置４によって構成される。
【００３０】
ＰＬＣ１は、センサーなどの入力装置３と、モータなどの出力装置４が接続され、入力装置３からの検出信号に基づいて、出力装置４への制御信号を生成する小型コントローラであり、その動作は、ＰＬＣ１内に保持しているプログラムによって決定される。このＰＬＣ１は、運用モード及び非運用モードがユーザによって切り替えられ、運用モード時には、上記プログラムが繰り返し実行され、非運用モード時には、上記プログラムの実行を停止している。
【００３１】
プログラム作成支援装置２は、ユーザがＰＬＣ１用のプログラムを作成するための端末装置であり、専用の端末装置であってもよいが、通常は、パーソナルコンピュータに専用ソフトウエアをインストールすることによって実現される。ユーザは、このプログラム作成支援装置２上において、プログラムを作成し、作成されたプログラムのエラーチェックを行い、エラーチェック後のプログラムをコンパイルしてソースコードからオブジェクトコード（実行コード）へ変換する。この様にして生成されたプログラムのオブジェクトコードが、プログラム作成支援装置２からＰＬＣ１へアップロードされる。また、アップロードだけでなく、ＰＬＣ１内のプログラムをプログラム作成支援装置２へダウンロードして編集することもできる。
【００３２】
図示したＰＬＣシステムは、１つのプログラムを複数の設計者が共同で開発するためのものである。各プログラム作成支援装置２は、それぞれ異なる設計者が利用している端末装置であり、複数のプログラム作成支援装置２が、通信ケーブルを介して、１つのＰＬＣ１にネットワーク接続されている。従って、各設計者は、独自にプログラムの編集、エラーチェック、コンパイル及びアップロードをそれぞれ行うことができる。
【００３３】
図２は、ＰＬＣ１用のプログラム５の概略について説明するための図である。プログラム５は、ＰＬＣ１によって順次に実行される多数の命令コードによって構成されている。また、１つのプログラム５を複数の設計者で共同開発する場合、プログラム５は、複数のモジュールｍｏｄＡ〜ｍｏｄＤに分割され、各モジュールｍｏｄＡ〜ｍｏｄＤに異なる設計者が割り当てられる。つまり、各モジュールｍｏｄＡ〜ｍｏｄＤは、図１に示された異なるプログラム作成支援装置２において、それぞれ作成され、共通のＰＬＣ１へそれぞれアップロードされる。これらのモジュールｍｏｄＡ〜ｍｏｄＤは、ＰＬＣ１内でマージ（結合）され、ＰＬＣ１内で実行されるプログラム５となる。
【００３４】
各モジュールｍｏｄＡ〜ｍｏｄＤは、モジュール単独でのエラーチェックが各プログラム作成支援装置２内において行われ、各モジュールｍｏｄＡ〜ｍｏｄＤをマージして得られるプログラム５全体についてのエラーチェックは、ＰＬＣ１内において行われる。
【００３５】
また、各モジュールｍｏｄＡ〜ｍｏｄＤには、識別データｉｄＡ〜ｉｄＤがそれぞれ含まれている。識別データｉｄＡ〜ｉｄＤは、モジュールの新規作成時に生成され、その後もモジュールが変更されるたびに更新されるデータであり、異なるモジュールｍｏｄＡ〜ｍｏｄＤには異なる識別データｉｄＡ〜ｉｄＤが格納されており、同じモジュールであっても、バージョンが異なれば、異なる識別データが格納されている。ただし、複製されたモジュールには、複製前のモジュールと同じ識別データが格納されている。つまり、識別データｉｄＡ〜ｉｄＤは、モジュールの編集に固有のデータである。
【００３６】
［ＰＬＣ１の詳細構成］
図３は、図１のＰＬＣ１の一構成例を示したブロック図である。このＰＬＣ１は、データ入出力部１１、更新データ記憶部１２、エラーチェック部１３、プログラム更新部１４、プログラム記憶部１５、プログラム実行部１６、入力装置Ｉ／Ｆ（interface）部１７及び出力装置Ｉ／Ｆ部１８によって構成される。
【００３７】
データ入出力部１１は、有線又は無線の通信回線を介して、各プログラム作成支援装置２と接続され、双方向のデータ通信を行っている。プログラム作成支援装置２からアップロードされたプログラム５は、データ入出力部１１によって受信され、更新データ記憶部１３に格納される。また、プログラム作成支援装置２からプログラム５のダウンロード要求を受信した場合には、更新データ記憶部１２又はプログラム記憶部１５に格納されているプログラムを要求元のプログラム作成支援装置２へ送信する。
【００３８】
更新データ記憶部１２は、プログラム作成支援装置２からアップロードされたプログラム５が格納される記憶手段である。プログラム５が複数のモジュールで構成され、プログラム５を更新するためのモジュールがアップロードされた場合には、当該アップロードされたモジュールが更新データ記憶部１２に格納される。
【００３９】
プログラム記憶部１５は、運用モード時に実行対象となるプログラム５を記憶する記憶手段である。ここでは、実行対象となるプログラム５が、複数のモジュールｍｏｄＡ〜ｍｏｄＤからなるものとする。なお、各モジュールｍｏｄＡ〜ｍｏｄＤ内には、識別データｉｄＡ〜ｉｄＤ及び更新時刻データがそれぞれ格納されている。このプログラム記憶部１５に書き込まれるのは、更新データ記憶部１２に一旦格納され、エラーチェックが行われたプログラム５であるが、例外的な場合、例えばモジュールｍｏｄＡ〜ｍｏｄＤがＰＬＣ１に最初に書き込まれるような場合には、エラーチェックを行うことなく、プログラム作成支援装置２からプログラム記憶部１５へ直接書き込むこともできる。
【００４０】
プログラム実行部１６は、プログラム記憶部１５内のプログラム５に基づいて動作するプロセッサである。例えば、入力装置Ｉ／Ｆ部１７を介して、入力装置３から入力される検出信号に基づいて制御信号を生成し、出力装置Ｉ／Ｆ部１７を介して、上記制御信号を出力装置４へ出力している。このプログラム実行部１６は、運用モード中には上記プログラムを繰り返し実行しているが、非運用モード中には、上記制御プログラムの実行を停止している。
【００４１】
エラーチェック部１３は、更新データ記憶部１２及びプログラム記憶部１５に格納されているプログラム又はモジュールに基づいて、エラーチェックを行っている。このエラーチェック処理は、プログラム又はモジュールがＰＬＣ１へアップロードされた場合に実行される。エラーチェック処理の対象は、実行対象のプログラム５を更新データ記憶部１２内のデータによって更新したプログラムである。つまり、プログラム５がアップロードされ、更新データ記憶部１２に書き込まれた場合には、当該プログラム５についてエラーチェックが行われる。一方、モジュールｍｏｄＡがアップロードされ、更新データ記憶部１２に書き込まれた場合には、実行対象のプログラム５をアップロードされた新たなモジュールｍｏｄＡで更新したプログラムについてエラーチェックが行われる。
【００４２】
ただし、新たなモジュールｍｏｄＡによるプログラム５の更新は、エラーチェック部１３が仮想的に行っており、更新データ記憶部１２及びプログラム記憶部１５に保持されているデータは、エラーチェック処理によって変更されない。すなわち、エラーチェック部１３は、モジュールｍｏｄＡ以外のモジュールについてはプログラム記憶部１５を参照し、モジュールｍｏｄＡについては更新データ記憶部１２を参照することにより、実行対象のプログラムを変更することなく、更新後のプログラムについてエラーチェックを行っている。
【００４３】
プログラム更新部１４は、エラーチェック部１３によりエラーが発見されなかった場合に更新データ記憶部１２に格納されているデータをプログラム記憶部１５に書き込み、実行対象のプログラム５を更新する。すなわち、更新データ記憶部１２内にプログラム５が保持されている場合には、当該プログラム５がプログラム記憶部１５内に書き込まれ、実行対象であったプログラム５は消去される。また、更新データ記憶部１２内にモジュールｍｏｄＡが保持されている場合には、当該モジュールｍｏｄＡがプログラム記憶部１５に書き込まれる。このとき、プログラム記憶部１５内にモジュールｍｏｄＡが存在していれば、新たなモジュールｍｏｄＡによって上書きされる。
【００４４】
なお、このプログラム更新部１４は、運用モード中であってもプログラム記憶部１６内のプログラム５を更新することができる。つまり、プログラム実行部１６が実行中のプログラムを更新することができる。例えば、プログラム実行部１６がプログラム５を繰り返し実行している周期に同期して、プログラム更新部１４が当該プログラム５を更新することによって、制御動作に支障をきたすことなく、実行対象のプログラム５を更新している。
【００４５】
［プログラム作成支援装置２の詳細構成］
図４は、図１のプログラム作成支援装置２の一構成例を示したブロック図である。このプログラム作成支援装置２は、プログラム記憶部２０１、前回データ記憶部２０２、プログラム編集部２１、識別データ生成部２２、エラーチェック部２３、コンパイル部２４、プログラム照合部２５、データ入出力部２６、エラー情報出力部２７及びプログラム変更確認部２８により構成される。
【００４６】
プログラム記憶部２０１は、ＰＬＣ１用のプログラム５を記憶する記憶手段である。プログラム５は、複数の設計者で共同開発されるプログラムであり、複数のモジュールｍｏｄＡ〜ｍｏｄＤからなり、このプログラム作成支援装置２を利用している設計者は、モジュールｍｏｄＡの作成を担当しているものとする。この場合、プログラム記憶部２０１内に保持されているモジュールｍｏｄＡは、当該プログラム作成支援装置２内で作成されたモジュールであり、他のモジュールｍｏｄＢ〜ｍｏｄＤは、他のプログラム作成支援装置２において作成され、ＰＬＣ１からダウンロードされたモジュールである。
【００４７】
前回データ記憶部２０２は、識別データｉｄＡ〜ｉｄＤを記憶する記憶手段であり、プログラム５のアップロード時及びダウンロード時に更新される。例えば、当該プログラム作成支援装置２における編集対象がモジュールｍｏｄＡであれば、前回データ記憶部２０２内に保持されている識別データｉｄＡは、モジュールｍｏｄＡのＰＬＣ１へのアップロード時に更新され、その他の識別データｉｄＢ〜ｉｄＤは、モジュールｍｏｄＢ〜ｍｏｄＤのＰＬＣ１からのダウンロード時に更新される。従って、前回データ記憶部２０２内には、常に、ＰＬＣ１に最後にアクセスした時点における識別データが保持されている。
【００４８】
プログラム編集部２１は、ユーザがプログラム５を新規に作成し、あるいは、既に作成したプログラム５を変更するための手段である。プログラムの編集は、例えば、ユーザが画面表示を見ながら操作入力を行い、新たなデバイスシンボルを画面上に配置し、そのデバイス名などのパラメータを定義したり、あるいは、不要になった配置済みのデバイスシンボルを削除することによって行われる。ここでは、プログラム５が複数のモジュールで構成されているため、モジュールごとに編集が行われ、編集後のモジュールには、識別データ及び更新時刻データ（例えば更新日時）が加えられて、プログラム記憶部２０１へ書き込まれる。
【００４９】
識別データ生成部２２は、プログラム編集部２１による編集終了時に、編集後のプログラム５に基づいて識別データを生成する。モジュールｍｏｄＡを編集した場合であれば、編集後のモジュールｍｏｄＡに基づいて、識別データｉｄＡが生成される。この識別データは、編集処理ごとに固有のデータとして生成される。例えば、予め定められたハッシュ関数を用いて、編集後のモジュールｍｏｄＡから求められるハッシュ値を識別データｉｄＡとして利用することができる。また、モジュールｍｏｄＡの編集が行われた日時や、編集を行った設計者の識別情報や、端末装置の識別情報などに基づいて識別データを生成することもできる。
【００５０】
エラーチェック部２３は、プログラム記憶部２０１内に保持されているプログラム５のエラーチェックを行う。ユーザは、このエラーチェック結果を見て、プログラム５にエラーが含まれていないことを確認することができる。プログラム５が複数のモジュールで構成される場合には、エラーチェック部２３により、モジュール単体についてのエラーチェックが行われる。
【００５１】
コンパイル部２４は、プログラム記憶部２０１に記憶されているプログラム５のソースコードをオブジェクトコードに変換する処理を行う。プログラム５が複数のモジュールで構成される場合、このコンパイル処理によって、モジュールごとのオブジェクトコードを生成することができる。
【００５２】
データ入出力部２６は、ＰＬＣ１との間でデータ入出力を行っている。ここでは、ＰＬＣ１に対するプログラム５のアップロード及びダウンロード、ＰＬＣ１からの識別データ及びエラー情報の取得、並びに、ＰＬＣ１への強制更新指示の送出を行っている。
【００５３】
ＰＬＣ１へのプログラム５の書き込み（アップロード）時には、プログラム記憶部２０１内のプログラム５がＰＬＣ１へアップロードされる。また、このプログラムがＰＬＣ１内のプログラム記憶部１５に格納された場合には、当該プログラム５に含まれる識別データが前回データ記憶部２０２に書き込まれる。プログラム５が複数のモジュールで構成されている場合には、全く同様にして、モジュールごとにアップロードすることができる。
【００５４】
ＰＬＣ１からのプログラム５の取得（ダウンロード）時には、取得したプログラム５がプログラム記憶部２０１に格納される。また、このプログラム５がＰＬＣ１内のプログラム記憶部１５からダウンロードされた場合には、当該プログラム５に含まれる識別データが前回データ記憶部２０２にも書き込まれる。プログラム５が複数のモジュールで構成されている場合には、全く同様にして、モジュールごとにダウンロードすることができる。
【００５５】
プログラム照合時には、ＰＬＣ１からプログラム５及びモジュールｍｏｄＡ〜ｍｏｄＤをダウンロードすることなく、識別データｉｄＡ〜ｉｄＤのみを取得している。この様にしてＰＬＣ１からダウンロードされた識別データｉｄＡ〜ｉｄＤは、プログラム照合部２５へ出力される。
【００５６】
プログラム又はモジュールのアップロード後は、ＰＬＣ１からエラー情報を取得する。このエラー情報は、ＰＬＣ１内において行われたプログラム５のエラーチェック結果である。ＰＬＣ１から取得したエラー情報は、エラー情報出力部２７及びプログラム変更確認部２８へ出力される。
【００５７】
プログラム照合部２５は、注目しているプログラム又はモジュールについて最後のアップロード又はダウンロードが行われた後に、当該プログラム作成支援装置２内又はＰＬＣ１内のいずれかで当該プログラム又はモジュールが更新されたか否かを判別する。この判別処理は、プログラム記憶部２０１内、前回データ記憶部２０２内及びＰＬＣ１内に保持されている識別データを比較することによって行われる。
【００５８】
ＰＬＣ１内のモジュールｍｏｄＡ〜ｍｏｄＤを他人が更新したか否かは、前回データ記憶部２０２内に保持されている識別データｉｄＡ〜ｉｄＤと、ＰＬＣ１内のプログラム記憶部１５からダウンロードした識別データｉｄＡ〜ｉｄＤとを比較することによって判別できる。両者が一致しなければ、前回データ記憶部２０２の更新後に、ＰＬＣ１内の実行対象のプログラムを構成するモジュールｍｏｄＡ〜ｍｏｄＤが、他のプログラム作成支援装置２からのアップロードによって更新されたと判別することができる。
【００５９】
また、プログラム記憶部２０１内のモジュールｍｏｄＡ〜ｍｏｄＤが編集されたか否かは、前回データ記憶部２０２内の識別データｉｄＡ〜ｉｄＤと、プログラム記憶部２０１内の識別データｉｄＡ〜ｉｄＤとを比較することによって判別できる。両者が一致しなければ、前回データ記憶部２０２の更新後に、ＰＬＣ１内のモジュールｍｏｄＡ〜ｍｏｄＤが、プログラム編集部２１によって更新されたと判別することができる。
【００６０】
エラー情報出力部２７は、プログラム照合部２５の照合結果と、ＰＬＣ１から取得したエラー情報とに基づいて出力動作を行っている。ユーザがプログラム照合処理を指示すれば、上記照合結果が画面表示される。また、ユーザがモジュールのアップロードを指示した場合であって、当該アップロードによって更新されるＰＬＣ１のプログラム記憶部１５内のモジュールが他のプログラム作成支援装置２によって先に更新されていた場合には、警告メッセージを画面表示し、ユーザに確認のための操作入力を行わせ、あるいは、当該アップロード処理を禁止する。
【００６１】
さらに、ＰＬＣ１からエラー情報を取得した場合には、当該エラー情報を画面表示する。このエラー情報は、プログラム又はモジュールをＰＬＣ１へアップロードした場合にＰＬＣ１内で行われるエラーチェックの結果である。エラーが発見されれば、エラーの内容と、エラーの発見されたプログラム又はモジュール中の位置が表示される。一方、エラーが発見されなかった場合には、その旨が表示される。
【００６２】
プログラム変更確認部２８は、ＰＬＣ１内の実行対象のプログラム５を強制的に変更するか否かについて、ユーザの意思を確認する手段である。ＰＬＣ１は、運用モード中のアップロードにより起動されたエラーチェックにおいてエラーが発見されれば、実行対象となるプログラム５の更新を行わない。一方、非運用モード中のアップロードにより起動されたエラーチェックにおいてエラーが発見された場合、ＰＬＣ１は、実行対象のプログラム５を更新するか否かをプログラム作成支援装置２に照会する。この照会を受信すると、プログラム変更確認部２８は、ユーザの意思確認を行って、その結果をＰＬＣ１へ送信する。つまり、非運用モード中にアップロードされたプログラム又はモジュールであれば、ＰＬＣ１内のエラーチェックにおいてエラー発見されても、ユーザが承認すれば、ＰＬＣ１のプログラム記憶部１５内のプログラム５が更新される。
【００６３】
［モジュールのアップロード］
図５〜図７のステップＳ１０１〜Ｓ１２０は、図１のＰＬＣシステムの動作の一例を示したフローチャートであり、プログラム作成支援装置２からＰＬＣ１へのアップロード処理が示されている。このアップロード処理は、ユーザがプログラム記憶部２０１に格納されているモジュールｍｏｄＡを指定し、ＰＬＣ１へのアップロードを指示したときに開始される。なお、このアップロード処理は、ＰＬＣ１の動作モードが、運用モード及び非運用モードのいずれの場合であっても実行することができる。
【００６４】
まず、プログラム作成支援装置２内において、エラーチェック部２３によるエラーチェックが行われる（図５のステップＳ１０１）。このエラーチェックでは、少なくとも指定されたモジュールｍｏｄＡ単体についてのエラーチェックが行われる。これに加えて、プログラム作成支援装置２内に保持されている他のモジュールｍｏｄＢ〜ｍｏｄＤを用いて、最終的にプログラム５を構成する各モジュールｍｏｄＡ〜ｍｏｄＤ間の整合性に関するエラーチェックを行ってもよい。このエラーチェックにおいてエラーが発見された場合、エラー情報出力部２７により、エラー情報と「アップロード失敗」のメッセージからなるエラー終了画面が表示され、アップロードを行うことなく、当該アップロード処理を終了する（ステップＳ１０２，Ｓ１０３）。
【００６５】
一方、モジュール単体のエラーチェック（ステップＳ１０１）において、エラーが発見されなかった場合には、モジュールｍｏｄＡが、ＰＬＣ１へアップロードされる（ステップＳ１０４）。アップロードされたモジュールｍｏｄＡは、ＰＬＣ１内の更新データ記憶部１２に一旦格納され、プログラム記憶部１５内のプログラムは更新されない。
【００６６】
更新データ記憶部１２に新たなモジュールｍｏｄＡが格納されると、エラーチェック部１３によるエラーチェックが開始される（ステップＳ１０５）。このエラーチェック処理の対象は、実行対象のプログラム５を新たなモジュールｍｏｄＡで更新した場合の更新後のプログラム５であるが、プログラム記憶部１５内のプログラム５を変更することなく、更新データ記憶部１２及びプログラム記憶部１５を参照してエラーチェックが行われる。つまり、エラーチェック部１３は、新たなモジュールｍｏｄＡについては、更新データ記憶部１２を参照し、その他のモジュールｍｏｄＢ〜ｍｏｄＤについてはプログラム記憶部１５を参照することによって、これらのモジュールｍｏｄＡ〜ｏｄＤを仮想的にマージし、エラーチェックを行う。このエラーチェック（ステップＳ１０５）は、仮想マージ後のプログラム５についてのエラーチェックであり、モジュール単体のエラーチェック（ステップＳ１０１）とは異なり、モジュールｍｏｄＡ〜ｍｏｄＤ間の整合性に関してもチェックすることができる。
【００６７】
ステップＳ１０５のエラーチェックにおいてエラーが発見されなかった場合、実行対象のプログラム５が、アップロードされたモジュールによって更新される（図６のステップＳ１０６，Ｓ１０７）。すなわち、プログラム更新部１４が、更新データ記憶部１２内の新しいモジュールｍｏｄＡをプログラム記憶部１５へ書き込む。また、アップロードの正常終了がプログラム作成支援装置２へ通知される。プログラム作成支援装置２内では、この通知に基づいて、アップロードしたモジュールｍｏｄＡの識別データが、前回データ記憶部２０２に書き込まれる（ステップＳ１０８）。また、上記通知に基づいて、「アップロード成功」のメッセージからなる正常終了画面が、エラー情報出力部２７によって表示され（ステップＳ１０９）、当該アップロード処理は終了する。
【００６８】
一方、ステップＳ１０５のエラーチェックにおいてエラーが発見された場合、当該エラーが致命的であるか否か、また、ＰＬＣ１の動作モードが運用中であるか否かによって、その後の動作は異なる（ステップＳ１１０〜Ｓ１１４）。
【００６９】
発見されたエラーが、実行対象のプログラム５を更新することができない致命的なエラーであった場合、プログラム作成支援装置２において、エラー情報と「アップロード失敗」のメッセージからなるエラー終了画面が表示され、当該アップロード処理を終了する（ステップＳ１１０，Ｓ１１１）。エラー情報が致命的である場合とは、例えば、更新後のプログラムのサイズが、プログラム記憶部１５の容量を超えてしまう場合や、モジュールの追加によってＰＬＣ１が許容している最大モジュール数を超えてしまう場合である。
【００７０】
また、上記エラー情報が致命的でない場合であっても、ＰＬＣ１の動作モードが運用モードである場合には、プログラム作成支援装置２において、エラー情報と「アップロード失敗」のメッセージからなるエラー終了画面が表示され、当該アップロード処理を終了する（ステップＳ１１２，Ｓ１１３）。運用モード中は、実行対象のプログラムをエラーが発見されたプログラムへ更新するのは危険であることから、この様なプログラムの更新を禁止している。
【００７１】
上記エラー情報が致命的でなく、かつ、ＰＬＣ１の動作モードが非運用モードである場合には、プログラム作成支援装置２において、エラー情報が表示されるとともに（ステップＳ１１４）、「プログラムを強制的に更新しますか」というメッセージが画面表示され、ユーザの意思確認が行われる（図７のステップＳ１１５）。ユーザは、マウスなどのポインティング入力手段を用いて、プログラムを強制的に更新するか否かを選択する。
【００７２】
このとき、ユーザが強制更新を了承しなければ、プログラム作成支援装置２において「プログラムを更新せずに終了します」というメッセージが画面表示され、当該アップロード処理を終了する（ステップＳ１１６，Ｓ１１７）。一方、ユーザが更新を了承すれば、実行対象のプログラム５が、アップロードされたモジュールによって更新され、更新完了がプログラム作成支援装置２へ通知される（ステップＳ１１８）。プログラム作成支援装置２内では、この通知に基づいて、アップロードしたモジュールｍｏｄＡの識別データが、前回データ記憶部２０２に書き込まれる（ステップＳ１１９）。また、上記通知に基づいて「プログラム強制的に更新しました」のメッセージが画面表示され（ステップＳ１２０）、当該アップロード処理が終了する。
【００７３】
［モジュールのダウンロード］
図８のステップＳ２０１〜Ｓ２０４は、図１のＰＬＣシステムの動作の一例を示したフローチャートであり、ＰＬＣ１からプログラム作成支援装置２へのモジュールのダウンロード処理が示されている。このダウンロード処理は、ユーザが、ＰＬＣ１内のプログラム記憶部１５に格納されているモジュール、例えばモジュールｍｏｄＢを指定し、プログラム作成支援装置２へのダウンロードを指示したときに開始される。なお、このアップロード処理は、ＰＬＣ１の動作モードが、運用モード及び非運用モードのいずれの場合であっても実行することができる。
【００７４】
まず、モジュールｍｏｄＢを指定したダウンロード要求が、プログラム作成支援装置２からＰＬＣ１へ送信される（ステップＳ２０１）。このダウンロード要求を受信したＰＬＣ１は、プログラム記憶部１５に保持されているモジュールｍｏｄＢを読み出して要求元のプログラム作成支援装置２へ送信する。このモジュールは、プログラム作成支援装置２内のデータ入出力部２６によって受信される（ステップＳ２０２）。データ入出力部２６は、受信したモジュールｍｏｄＢから識別データｉｄＢを抽出し、前回データ記憶部２０２内の識別データを更新する（ステップＳ２０３）。この前回データ記憶部２０２の更新後に、上記モジュールｍｏｄＢは、プログラム記憶部２０１に書き込まれる（ステップＳ２０４）。なお、ＰＬＣ１内の更新データ記憶部１２に保持されているモジュールをダウンロードする場合には、上記ステップのうち、ステップＳ２０３が省略される。
【００７５】
［プログラム照合］
図９のステップＳ３０１〜Ｓ３０６は、図３のプログラム作成支援装置２の動作の一例を示したフローチャートであり、プログラム照合処理が示されている。このプログラム照合処理は、プログラム作成支援装置２において、ユーザがプログラム照合を指示した場合に、プログラム照合部２５によって実行される。
【００７６】
ユーザがプログラム５を指定してプログラム照合を指示すると、プログラム照合部２５は、当該プログラムに属する全てのモジュールｍｏｄＡ〜ｍｏｄＤについて、その識別データｉｄＡ〜ｉｄＤ及び更新時刻データをＰＬＣ１内のプログラム記憶部１５からダウンロードする（ステップＳ３０１）。このとき、モジュールｍｏｄＡ〜ｍｏｄＤ自体をダウンロードしてもよいが、プログラム照合に必要となる識別データｉｄＡ〜ｉｄＤ及び更新時刻データのみをダウンロードすれば、ダウンロード時間を大幅に短縮することができる。
【００７７】
次に、前回データ記憶部２０２から識別データｉｄＡ〜ｉｄＤが読み出され（ステップＳ３０２）、ダウンロードされた識別データｉｄＡ〜ｉｄＤとの比較が行われる（ステップＳ３０３）。つまり、照合対象となる各モジュールｍｏｄＡ〜ｍｏｄＤごとに、前回データ記憶部２０２内に保持されている識別データと、ＰＬＣ１のプログラム記憶部１５内に保持されている識別データとの比較が行われる。
【００７８】
同様にして、プログラム記憶部２０１から識別データｉｄＡ〜ｉｄＤ及び更新時刻データが読み出され（ステップＳ３０４）、照合対象となる各モジュールｍｏｄＡ〜ｍｏｄＤごとに、前回データ記憶部２０２内の識別データｉｄＡ〜ｉｄＤとの比較が行われる（ステップＳ３０５）。
【００７９】
エラー情報出力部２７は、ステップＳ３０３及びＳ３０５の比較結果を画面表示してユーザに知らせる（ステップＳ３０６）。例えば、ステップＳ３０３及びＳ３０５における各比較結果が、モジュールｍｏｄＡ〜ｍｏｄＤごとに対応づけられて画面表示される。
【００８０】
なお、このプログラム照合処理では、プログラム作成支援装置２及びＰＬＣ１間で、識別データのダウンロードが行われているが、モジュールのアップロード及びダウンロードは行われていない。このため、前回データ記憶部２０２は更新されない。
【００８１】
［エラー情報出力例１］
図１０は、プログラム作成支援装置２におけるエラー情報出力の一例を示した図であり、エラー情報出力部２７による画面表示の一例が示されている。この表示画面には、プログラム表示エリア３０及びエラー情報表示エリア３１が含まれている。プログラム表示エリア３０は、プログラム編集時における表示と同様、プログラム５がグラフィカルに表示される領域であり、複数のデバイスシンボル３２の結合状態としてプログラム５が表示されている。
【００８２】
エラー情報表示エリア３１は、ＰＬＣ１から受信したエラー情報を表示するエリアである。この図では、２つのエラー情報３３が行を異ならせて表示されている。ここでは、エラー情報３３として、エラー発生箇所３４、エラー番号３５、エラーメッセージ３６及び命令語３７が表示されている。エラー発生箇所３４は、エラー発生位置の情報であり、例えば、モジュール名「cp053」、行番号「00019」及び列番号「02」によって特定される。エラー番号は、予め定められているエラーの種類を示すコード番号である。エラーメッセージ３６は、コード番号に予め対応づけられている文字列である。命令語３７はエラーが発見された命令語である。
【００８３】
図１１は、エラー発生箇所をプログラム上で示した画面表示の一例である。図１０の表示画面上において、エラー情報表示エリア３１に表示されているエラー情報３３のいずれかをユーザが選択すれば、エラー発生箇所を含むモジュールがプログラム表示エリア３０に表示され、エラー発生箇所のデバイスシンボルがハイライト（強調）表示６８となる。例えば、マウスなどのポインティングデバイスを用いて、エラー情報表示エリア３１内をユーザがクリックすれば、クリックされた行に対応するエラー情報が選択され、プログラム表示エリア３０に当該エラー情報に係るデバイスが表示される。
【００８４】
ただし、ユーザが選択したエラー情報が、プログラム作成支援装置２内に保持されていないモジュールｍｏｄＢ〜ｍｏｄＤである場合には、当該モジュールｍｏｄＢ〜ｍｏｄＤがＰＬＣ１内のプログラム記憶部１５からダウンロードされ、プログラム表示エリア３０に表示される。なお、エラー情報に係るモジュールは、ＰＬＣ１からエラー情報を取得する際に取得しておくことが望ましい。例えば、ＰＬＣ１が、エラー情報とともに、当該エラー情報に係るモジュールもプログラム作成支援装置２へ送出するように構成してもよいし、あるいは、プログラム作成支援装置２が、ＰＬＣ１から取得したエラー情報に基づいて、ＰＬＣ１に対し、当該エラー情報に係るモジュールのダウンロードを要求するように構成することもできる。
【００８５】
［エラー情報出力例２］
図１２は、プログラム作成支援装置２におけるエラー情報出力の他の例を示した図であり、プログラム照合結果及びエラー情報が同時に表示されるＰＬＣ照合／同期画面６が示されている。
【００８６】
ＰＬＣ照合／同期画面６は、エラー情報出力部２７によって表示される。このＰＬＣ照合／同期画面６上には、照合ボタン６１、ＰＬＣ書込ボタン６２、ＰＬＣ読出ボタン６３及び照合結果表示エリア６４が設けられている。これらのボタン６１〜６３は、マウスなどのポインティング入力手段を用いて操作することができ、ユーザは、プログラム照合処理、アップロード処理又はダウンロード処理を指示することができる。
【００８７】
ユーザが照合ボタン６１を操作すれば、図９に示したプログラム照合処理が実行され、その照合結果が照合結果表示エリア６４に表示される。図示した照合結果表示エリア６４内には、ユーザが指定したプログラム５に含まれる各モジュールＡ〜Ｄが異なる行にそれぞれ表示された例が示されている。
【００８８】
各行の左側のエリアは、当該プログラム作成支援装置２のプログラム記憶部２０１に保持されているモジュール名と、その更新時刻データが表示されるエディタ表示欄６４１である。同様にして、各行の右側のエリアは、ＰＬＣ１内のプログラム記憶部１５に保持されているモジュール名と、その更新時刻データが表示されるＰＬＣ表示欄６４３である。
【００８９】
各行の中央のエリアは、プログラム照合部２５による照合結果を文字で表示する照合結果表示欄６４２である。ステップＳ３０３及びＳ３０５による照合結果が、ともに一致であったモジュールについては、照合結果表示欄６４２に「ＯＫ」が表示される。一方、いずれかが不一致であったモジュールについては、照合結果表示欄６４２には何も表示されず、エディタ表示欄６４１又はＰＬＣ表示欄６４３内の当該モジュールがハイライト（強調）表示６６となる。つまり、ステップＳ３０３で不一致であった場合には、ＰＬＣ表示欄６４３内の当該モジュールがハイライト表示６６となり、ステップＳ３０５で不一致であった場合には、エディタ表示欄６４１内の当該モジュールがハイライト表示６６となる。この様にして、ステップＳ３０３及びＳ３０５の比較結果をモジュールごとに対応づけて表示している。
【００９０】
図中でハッチングにより示されたハイライト表示６７は、図５〜図７のアップロード処理中においてエラーが発生したモジュールを表示している。このハイライト表示６７の更新は、プログラムのアップロード時に行われる。なお、図示しないが、実行対象となるプログラムの更新に失敗した「アップロード失敗」と、エラー検出後のプログラム強制更新とが区別可能となるように、両者をそれぞれ表示することもできる。
【００９１】
チェックボックス６５は、アップロード又はダウンロードの対象となるモジュールをユーザが指定するためのチェックボックスであり、各行の左端に設けられている。ユーザは、このチェックボックス６５をクリック操作し、アップロード又はダウンロードするモジュールを選択する。
【００９２】
ＰＬＣ書込ボタン６２は、ＰＬＣ１へのアップロードを指示するための操作ボタンである。ユーザがＰＬＣ書込ボタン６２を操作すれば、図５〜７に示したアップロード処理が実行される。アップロードされるモジュールは、チェックボックス６５のユーザ操作によって選択されたモジュールである。
【００９３】
ＰＬＣ読出ボタン６３は、ＰＬＣ１からのダウンロードを指示するための操作ボタンである。ユーザがＰＬＣ読出ボタン６３を操作すれば、図８に示したダウンロード処理が実行される。ダウンロードされるモジュールは、チェックボックス６５のユーザ操作によって選択されたモジュールである。
【００９４】
図１２に示された各モジュールＡ〜Ｄの照合結果の例について説明する。プログラム作成支援装置２内のモジュールＡは編集済みであるが、この編集はＰＬＣ１内のモジュールＡには反映されておらず、モジュールＡをＰＬＣ１へアップロードしておく必要があることがわかる。また、ＰＬＣ１内のモジュールＡは他人によって更新されておらず、上記アップロードは安全に行うことができる状態であることがわかる。ただし、この例では、モジュールＡが、アップロード失敗を示すハイライト表示６７になっている。つまり、編集済みのモジュールのアップロードを既に試みており、その結果、アップロード時のエラーチェックでエラーが発見され、実行対象のプログラムを更新できなかったことがわかる。
【００９５】
プログラム作成支援装置２内のモジュールＢは編集されていないが、ＰＬＣ１内のモジュールＢは、他のプログラム作成支援装置２によって更新されている。このため、シミュレーションを正しく行うためには、モジュールＢをＰＬＣ１からダウンロードしておく必要があることがわかる。
【００９６】
モジュールＣについては「ＯＫ」が表示されており、プログラム作成支援装置２内及びＰＬＣ１内のモジュールが一致していることが示されている。この場合、モジュールＣについてはアップロード及びダウンロードのいずれも行う必要がないことがわかる。
【００９７】
プログラム作成支援装置２内のモジュールＤは編集済みであるが、この編集はＰＬＣ１内のモジュールＤには反映されていない。一方、ＰＬＣ１内のモジュールＤは他のプログラム作成支援装置２によって先に更新されている。この場合、モジュールＤのＰＬＣ１へのアップロードは、他人が先に更新したＰＬＣ１内のモジュールＤを上書きすることになるため、慎重に行わなければならないことがわかる。
【００９８】
なお、上記実施の形態における更新データ記憶部１２及びプログラム記憶部１５は、物理的に区分され、あるいは、固定的に区分された記憶装置である必要はない。これらの記憶部１２及び１５は、例えば、次のように実現することができる。
【００９９】
図１３は、更新データ記憶部１２及びプログラム記憶部１５の具体的な構成例を示した図である。図中の（ａ）は、ＰＬＣ１内に備えられた記憶装置のメモリ空間を示した図であり、複数のメモリ領域Ａ１〜Ａ８に予め分割されている。図中の（ｂ）は、これらの各メモリ領域Ａ１〜Ａ８を更新データ記憶部１２又はプログラム記憶手段１５へ動的に割り当てるための割当テーブルである。
【０１００】
ここでは、実行対象となるプログラム５を構成しているモジュールＡ〜Ｄが、メモリ領域Ａ１〜Ａ４及びＡ７に格納されており、これらのメモリ領域Ａ１〜Ａ４及びＡ７が、割当テーブルによってプログラム記憶部１５に割り当てられている。なお、モジュールＢは、メモリ領域Ａ２のサイズよりも大きいため、２つのメモリ領域Ａ２及びＡ３にわたって格納されている。また、アップロードされたモジュールＡ’が、メモリ領域Ａ６に格納されており、このメモリ領域Ａ６が、（ｂ）の割当テーブルよって更新データ記憶部１２に割り当てられている。
【０１０１】
このため、プログラム実行部１６は、メモリ領域Ａ１〜Ａ４及びＡ７を参照して動作し、エラーチェック部１３は、メモリ領域Ａ２〜Ａ４、Ａ６及びＡ７を参照してエラーチェックを行う。また、モジュールＡをモジュールＡ’で置き換えることにより、実行対象となるプログラム５を更新する場合には、プログラム更新部１４が、メモリ領域Ａ６がプログラム記憶部１５に割り当てられ、メモリ領域Ａ１が未使用となるように、割当テーブルを変更すればよく、モジュールＡ’をメモリ空間内で移動させる必要はない。
【０１０２】
なお、上記実施の形態では、主として、プログラム５が複数のモジュールにより構成される場合の例について説明したが、本発明は、このような場合には限定されない。すなわち、モジュールに分割されていないプログラム５（１つのモジュールで構成されるプログラム）についても本発明を適用することができる。
【図面の簡単な説明】
【０１０３】
【図１】本発明の実施の形態１によるＰＬＣシステムの概略構成の一例を示した図である。
【図２】ＰＬＣ用プログラム５の概略について説明するための図である。
【図３】図１のＰＬＣ１の一構成例を示したブロック図である。
【図４】図１のプログラム作成支援装置２の一構成例を示したブロック図である。
【図５】モジュールのアップロード処理の一例を示したフローチャートである（その１）。
【図６】アップロード処理の一例を示したフローチャートである（その２）。
【図７】アップロード処理の一例を示したフローチャートである（その３）。
【図８】ダウンロード処理の一例を示したフローチャートである。
【図９】プログラム照合処理の一例を示したフローチャートである。
【図１０】プログラム作成支援装置２におけるエラー情報出力の一例を示した図である。
【図１１】エラー発生箇所をプログラム上で示した画面表示の一例である。
【図１２】プログラム作成支援装置２におけるエラー情報出力の他の例を示した図である。
【図１３】更新データ記憶部１２及びプログラム記憶部１５の具体的な構成例を示した図である。
【符号の説明】
【０１０４】
２  プログラム作成支援装置
３  入力装置
４  出力装置
５  プログラム
６  ＰＬＣ照合／同期画面
１１  データ入出力部
１２  更新データ記憶部
１３  エラーチェック部
１３  更新データ記憶部
１３  エラーチェック部
１４  プログラム更新部
１５  プログラム記憶部
１６  プログラム実行部
１７  入力装置Ｉ／Ｆ部
１８  出力装置Ｉ／Ｆ部
２１  プログラム編集部
２２  識別データ生成部
２３  エラーチェック部
２４  コンパイル部
２５  プログラム照合部
２６  データ入出力部
２７  エラー情報出力部
２８  プログラム変更確認部
２９  照合結果出力部
３０  プログラム表示エリア
３１  エラー情報表示エリア
３２  デバイスシンボル
３３  エラー情報
３４  エラー発生箇所
３５  エラー番号
３６  エラーメッセージ
３７  命令語
６１  プログラム照合ボタン
６２  ＰＬＣ書込ボタン
６３  ＰＬＣ読出ボタン
６４  照合結果表示エリア
６５  チェックボックス
６６，６７，６８  ハイライト表示
２０１  プログラム記憶部
２０２  前回データ記憶部
６４１  エディタ表示欄
６４２  照合結果表示欄
６４３  ＰＬＣ表示欄
ｉｄＡ〜ｉｄＤ  識別データ
ｍｏｄＡ〜ｍｏｄＤ  モジュール
【図１】
2008282363.tif 000003
【図２】
2008282363.tif 000004
【図３】
2008282363.tif 000005
【図４】
2008282363.tif 000006
【図５】
2008282363.tif 000007
【図６】
2008282363.tif 000008
【図７】
2008282363.tif 000009
【図８】
2008282363.tif 000010
【図９】
2008282363.tif 000011
【図１２】
2008282363.tif 000012
【図１３】
2008282363.tif 000013
【図１０】
2008282363.tif 000014
【図１１】
2008282363.tif 000015