(57)【特許請求の範囲】
【請求項１】
支援装置とプログラマブルコントロール装置とがネットワークに接続されており、該支援装置が、相互に連携して動作する複数のプログラマブルコントロール装置用の各プログラムを纏めて１つのプロジェクトとして管理するシステムであって、
前記支援装置は、
管理するプロジェクトを識別するための一意のプロジェクト識別情報の履歴をプロジェクト履歴として記憶するプロジェクト履歴記憶手段と、
前記プログラマブルコントロール装置毎に、該プログラマブルコントロール装置を識別するための一意のコントローラ識別情報の履歴をコントローラ履歴として記憶するコントローラ履歴記憶手段と、
前記プロジェクトに係わる前記各プログラムの更新版が作成される毎に、該プロジェクトを識別するための一意のプロジェクト識別情報を生成して前記プロジェクト履歴に追加登録すると共に、前記各更新版プログラムに係わる各プログラマブルコントロール装置毎に、該プログラマブルコントロール装置を識別するための一意のコントローラ識別情報を生成して、対応する前記コントローラ履歴に追加登録するコンパイル手段と、
前記各プログラマブルコントロール装置に対して、そのプログラマブルコントロール装置用の前記更新版プログラムをダウンロードする手段であって、そのプログラマブルコントロール装置のプログラムを更新する権利を有すると判定した場合に、そのプログラマブルコントロール装置に対して、該プログラマブルコントロール装置に対応する前記生成されたコントローラ識別情報と、前記生成したプロジェクト識別情報と、前記更新版プログラムとをダウンロードするダウンロード手段とを有し、
前記各プログラマブルコントロール装置は、
自装置用の前記プログラムを記憶するプログラム記憶手段と、
コントローラ識別情報を記憶するコントローラ識別情報記憶手段と、
プロジェクト識別情報を記憶するプロジェクト識別情報記憶手段と、
前記ダウンロード手段によってダウンロードされた前記更新版プログラムと前記コントローラ識別情報と前記プロジェクト識別情報とによって、前記プログラム記憶手段と前記コントローラ識別情報記憶手段と前記プロジェクト識別情報記憶手段の各記憶内容を更新する管理手段とを有し、
前記支援装置の前記ダウンロード手段は、ダウンロード対象のプログラマブルコントロール装置における前記コントローラ識別情報記憶手段及び前記プロジェクト識別情報記憶手段にそれぞれ記憶された前記コントローラ識別情報及び前記プロジェクト識別情報と、前記プロジェクト履歴記憶手段及び前記コントローラ履歴記憶手段にそれぞれ記憶された前記プロジェクト履歴及び前記コントローラ履歴とに基づいて、前記プログラムを更新する権利の有無の判定を行うことを特徴とするコントロールシステム。
【請求項２】
前記支援装置の前記ダウンロード手段は、前記ダウンロード対象のプログラマブルコントロール装置における前記コントローラ識別情報記憶手段に記憶されているコントローラ識別情報が、そのプログラマブルコントロール装置に対応する前記コントローラ履歴に存在し、且つ、全てのプログラマブルコントロール装置の現在の前記プロジェクト識別情報が前記プロジェクト履歴に存在すると判定した場合に、そのプログラマブルコントロール装置のプログラムを更新する権利を有すると判定することを特徴とする請求項１記載のコントロールシステム。
【請求項３】
前記プロジェクト識別情報記憶手段には、前記プロジェクトに係わる複数のプログラマブルコントロール装置全てについての前記ダウンロードされたプロジェクト識別情報が、プロジェクト識別情報群として記憶されており、
前記支援装置の前記ダウンロード手段は、前記ダウンロード対象のプログラマブルコントロール装置における前記プロジェクト識別情報記憶手段を参照することで、前記全てのプログラマブルコントロール装置の現在の前記プロジェクト識別情報が前記プロジェクト履歴に存在するか否かの判定を行うことを特徴とする請求項２記載のコントロールシステム。
【請求項４】
前記プロジェクト識別情報記憶手段には、コモンメモリ方式によって、前記プロジェクト識別情報群が格納・更新されることを特徴とする請求項３記載のコントロールシステム。
【請求項５】
前記支援装置は、前記各プログラムを任意に作成させる手段であって、既存のプログラムを編集させることで該プログラムの更新版を作成させるプログラム作成支援手段を、更に有することを特徴とする請求項１〜４の何れかに記載のコントロールシステム。
【請求項６】
支援装置とプログラマブルコントロール装置とがネットワークに接続されており、該支援装置が、相互に連携して動作する複数のプログラマブルコントロール装置用の各プログラムを纏めて１つのプロジェクトとして管理するシステムにおける前記支援装置であって、
管理するプロジェクトを識別するための一意のプロジェクト識別情報の履歴をプロジェクト履歴として記憶するプロジェクト履歴記憶手段と、
前記プログラマブルコントロール装置毎に、該プログラマブルコントロール装置を識別するための一意のコントローラ識別情報の履歴をコントローラ履歴として記憶するコントローラ履歴記憶手段と、
前記プロジェクトに係わる前記各プログラムの更新版が作成される毎に、該プロジェクトを識別するための一意のプロジェクト識別情報を生成して前記プロジェクト履歴に追加登録すると共に、前記各更新版プログラムに係わる各プログラマブルコントロール装置毎に、該プログラマブルコントロール装置を識別するための一意のコントローラ識別情報を生成して対応する前記コントローラ履歴に追加登録するコンパイル手段と、
前記各プログラマブルコントロール装置に対して、そのプログラマブルコントロール装置用の前記更新版プログラムをダウンロードする手段であって、そのプログラマブルコントロール装置のプログラムを更新する権利を有すると判定した場合に、そのプログラマブルコントロール装置に対して、該プログラマブルコントロール装置に対応する前記生成されたコントローラ識別情報と、前記生成したプロジェクト識別情報と、前記更新版プログラムとをダウンロードするダウンロード手段とを有し、
該ダウンロード手段は、ダウンロード対象のプログラマブルコントロール装置側で保持している前記コントローラ識別情報及び前記プロジェクト識別情報と、前記プロジェクト履歴及び前記コントローラ履歴とに基づいて、前記ダウンロード対象のプログラマブルコントロール装置のプログラムを更新する権利の有無の判定を行うことを特徴とするコントロールシステムの支援装置。
【請求項７】
支援装置とプログラマブルコントロール装置とがネットワークに接続されており、該支援装置が、相互に連携して動作する複数のプログラマブルコントロール装置用の各プログラムを纏めて１つのプロジェクトとして管理するシステムにおける前記プログラマブルコントロール装置であって、
自装置用の前記プログラムを記憶するプログラム記憶手段と、
自装置を識別するための一意のコントローラ識別情報を記憶するコントローラ識別情報記憶手段と、
前記支援装置が管理するプロジェクトを識別するための一意のプロジェクト識別情報を記憶するプロジェクト識別情報記憶手段と、
前記支援装置側で前記コントローラ識別情報記憶手段と前記プロジェクト識別情報記憶手段の記憶内容に基づいて前記プログラムを更新する権利を有すると判定された場合に該支援装置からダウンロードされる、更新版プログラムと新たなコントローラ識別情報と新たなプロジェクト識別情報とによって、前記プログラム記憶手段と前記コントローラ識別情報記憶手段と前記プロジェクト識別情報記憶手段の各記憶内容を更新する管理手段と、
を有することを特徴とするプログラマブルコントロール装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、稼働中のコントローラに対して、コントローラを停止することなくプログラムの更新を行うことができるコントロールシステムに関する。
【背景技術】
【０００２】
オンライン変更によるプログラム更新を安全に行うことができるようにするシステムが、特許文献１で提案されている。オンライン変更によるプログラム更新は、支援装置等が、稼働中のコントローラに対して、コントローラを停止することなくプログラムの更新を行うことができるものである。
【０００３】
特許文献１に記載の従来技術では、支援装置側は、識別情報を世代を含めた履歴（以下、履歴情報と記す場合もある）として管理し、オンライン変更時、コントローラ側にダウンロードされている識別情報が、支援装置側の上記履歴情報内に存在するか否かによって、コントローラがプログラム更新の対象か否かの判別を行っている。尚、上記履歴情報は、特許文献１に記載の識別情報管理テーブルに相当する。
【０００４】
特許文献１の発明では、コンパイル毎に生成される固有の識別情報を世代として管理することにより、稼働中のコントローラを停止することなくプログラムの更新を行えるオンライン更新機能を提供する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１６８０３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１の方法では、更新版プログラムのダウンロードを許可するか否かの判定を、コントローラ単位で行っている。そのため、支援装置で複数のコントローラを纏めてひとつのプロジェクトとして管理するシステム構成においては、プロジェクト内の各コントローラに対応するオンライン変更可能なプロジェクト（以下、マスタプロジェクトと記述）が、コントローラ毎に別々になってしまう場合があるという課題がある。これについて、以下、図７、図８を参照して詳しく説明する。
【０００７】
図７に、上記特許文献１の手法を、支援装置がプロジェクトに係わる複数台のコントローラを管理する上記システムに適用した場合を示す。
尚、本説明では、プログラマブルコントローラを、単にコントローラと記す場合やＰＬＣ等と記す場合もあるものとする。
【０００８】
図７に示すシステムは、複数台のコントローラ１００（コントローラ１００ａ、１００ｂ、・・・１００ｎ；ＰＬＣ１、ＰＬＣ２、・・・、ＰＬＣｎ）が、ネットワークに接続されている。また、１台以上の支援装置１１０が、ネットワークに接続し得る。ここでは、この複数台のコントローラ１００全てが、任意の支援装置１１０で管理する１つのプロジェクトに係わるコントローラであるものとする。
【０００９】
ここで、従来、プログラマブルコントローラの動作は、１つのコントローラで完結する場合もあれば、複数のコントローラで連携して動作する場合もある。例えば、複数のコントローラで相互にデータの読み書き等を行いながら、動作する場合もある。この様に相互に関連する（協調動作する）複数のコントローラのプログラムを更新する場合、ある１つのコントローラのプログラムを更新すると、他のコントローラのプログラムも更新する必要が生じる場合が少なくない。
【００１０】
そして、本出願人は、従来より、上記のように相互に関連する複数のコントローラ（またはこれらのコントローラのプログラム）を、まとめて“プロジェクト”と呼んでいる。
上記のことから、支援装置１１０は、プロジェクト単位でプログラムの管理を行っている。基本的には、任意のプロジェクトのプログラム更新の際には、このプロジェクトに係わる全てのコントローラ１００のプログラムの更新を行う。例えば、この様なシステムにおいて上記特許文献１の手法を適用した場合、図７に示すように支援装置１１０は、各コントローラ１００（ＰＬＣ１、ＰＬＣ２、・・・、ＰＬＣｎ）毎に識別情報管理テーブルを設けて管理する。すなわち、図示の各履歴情報１１１（履歴情報１１１ａ。１１１ｂ、・・・、１１１ｎ）を記憶・管理する。
【００１１】
これより、基本的には、任意の１つのプロジェクトに係わる全てのコントローラ１００の最新の識別情報は、同じ世代となる。つまり、あるコントローラ１００の識別情報の履歴が、世代１、世代２、世代３であり、よって最新の識別情報が世代３である場合、他のコントローラ１００全てが最新の識別情報が世代３となっている。
【００１２】
また、上記特許文献１に記載の処理によって、各コントローラ１００には、任意のプログラムが格納されていると共に、このプログラムに対応する世代の識別情報が格納されている。図示の例では、全てのコントローラ１００に世代１の識別情報が格納されており以って世代１のプログラムが格納されていることになる。
【００１３】
この状態で、仮に、支援装置１１０において、全てのコントローラ１００に関して各々のプログラムの更新版がプログラマ等によって作成されて、これに対応する固有の識別情報（世代２）が生成されて各識別情報管理テーブル（各履歴情報１１１）に追加登録された場合、各識別情報管理テーブル（履歴情報１１１ａ、１１１ｂ、・・・、１１１ｎ）のデータ格納状態は、例えば図７に示す通りとなる。
【００１４】
この状態で、支援装置１１０が、上記作成された各更新版プログラムを、それぞれ、該当するコントローラ１００にダウンロードしようとする際、上記特許文献１に記載の手法により、各コントローラ１００が保持する識別情報と、上記自己が保持する識別情報管理テーブルとを用いて、チェック処理が行われることになる。例えば、ＰＬＣ１に関しては、その識別情報１０１ａ（＝CID1-1）が、これに対応する履歴情報１１１ａ内に存在するか否かを判定し、存在する場合にはＰＬＣ１に関してはオンライン更新が許可されることになる。
【００１５】
図７に示す例では、全てのコントローラ（１００ａ、１００ｂ、・・・、１００ｎ）に関して、それが保持する識別情報が、対応する識別情報管理テーブル内に存在する（世代１として存在する）。よって、全てのコントローラに関して、オンライン更新が許可されることになる。よって、この例では、支援装置１１０は、全てのコントローラ（１００ａ、１００ｂ、・・・、１００ｎ）に対して、その更新版プログラムをこれに対応する識別情報（世代２）と共にダウンロードして保持させることになる。この様にして、各コントローラ１００毎に、それぞれ、更新プログラムの継続性を保証することができる。
【００１６】
ここで、上記図７のシステムに関して、例えば特許文献１の図３の説明にあるような、プログラムや履歴情報（識別情報管理テーブル）を別の支援装置にコピーして、別の支援装置においてもその続き（更新版）を作成する状況を想定する。
【００１７】
例えば図８に示す例では、まず、任意の支援装置１１０において、任意のプロジェクト“PRJ”に係わるプログラムを作成・更新・管理するものとする。そして、最初に、支援装置１１０において、各コントローラ１００（１００ａ、１００ｂ、・・・１００ｎ）の各プログラム(ソースコード)が、プログラマ等によって任意に新規作成されたものとする。そして、支援装置１１０において、これら各新規プログラムをコンパイルする際に、上記特許文献１の処理によって上記固有の識別情報が生成される。これは各コントローラ１００毎に図示の各識別情報（CID1-1、CID2-1、…、CIDn-1）が生成される。そして、これら各識別情報が各履歴情報１１１（１１１ａ、１１１ｂ、・・・、１１１ｎ）に世代１として保存される。
【００１８】
そして、支援装置１１０は、上記各新規プログラム（コンパイル後）とそれに対応する上記識別情報とを、各コントローラ１００に新規ダウンロードすることで、これらを各コントローラ１００に保持させる。これより、図７に示すように、各コントローラ１００には上記世代１の識別情報が保持された状態となっている。
【００１９】
この様な状態において、上記プロジェクト“PRJ”に係わる履歴情報やプログラムを、別の支援装置１１０’にコピーしてコピープロジェクト“PRJ’”としたものとする。尚、このコピーによって別の支援装置１１０’側で保持・管理されることになる履歴情報を、履歴情報１１１’（１１１ａ’、１１１ｂ’、・・・、１１１ｎ’）と記すものとする。
【００２０】
これより、当該別の支援装置１１０’において、別のプログラマ等が、コピーしたプログラムに基づいて、その更新版等を作成する。尚、別の支援装置１１０’も上記支援装置１１０と同様の機能を有しているものとする。これより、別の支援装置１１０’において、上記作成された更新版プログラムのコンパイル処理に伴って、新たな世代の識別情報が生成されてこれが上記履歴情報１１１’（１１１ａ’、１１１ｂ’、・・・、１１１ｎ’）に追加されることになる。
【００２１】
これより、図示のように、履歴情報（１１１ａ’、１１１ｂ’、・・・、１１１ｎ’）には、生成された各識別情報（CID1-2’、CID2-2’、…、CIDn-2’）が世代２として追加されることになる。
【００２２】
一方、元の支援装置１１０においても、プロジェクト“PRJ”に係わる各プログラムの更新版の作成がプログラマ等によって行われたものとし、そのコンパイル処理に伴ってコントローラ毎に、前回と異なる固有の識別情報（CID1-2、CID2-2、…、CIDn-2）が生成される。そして、これら生成された各識別情報が、各履歴情報（１１１ａ、１１１ｂ、・・・、１１１ｎ）に図示のように世代２として追加保存されているものとする。
【００２３】
尚、この時点では、全てのＰＬＣ１００について、上記プロジェクト“PRJ”とコピープロジェクト“PRJ’”の両方ともが、マスタプロジェクトの候補となっている。
尚、ここでは、“マスタプロジェクト”とは、上記特許文献１や本手法等のオンライン更新において、そのコントローラに対して継続してプログラム更新を行う権利を有するプロジェクトと意味するものとする。
【００２４】
そして、上記支援装置１１０と別に支援装置１１０’は、上記更新版のプログラムを、順次、各ＰＬＣ１００ａ〜１００ｎにダウンロードしようと試みることになる。つまり、プログラムのオンライン変更を試みることになる。そして、ここでは仮に、支援装置１１０は最初にＰＬＣ１００ａにダウンロードを試み、別の支援装置１１０’は最初にＰＬＣ１００ｂにダウンロードを試みたものとする。
【００２５】
支援装置１１０は、ＰＬＣ１００ａにプログラムのオンライン変更を行う為に上記特許文献１の手法により上記識別情報を用いたチェックを行う。この例では、ＰＬＣ１００ａが保持している識別情報（CID1-1）が、これに対応する履歴情報である履歴情報１１１ａに存在するか否かを判定する。この例では、図示の通り、識別情報CID1-1が、履歴情報１１１ａ内に存在するので、支援装置１１０は、ＰＬＣ１００ａのプログラムを更新する権利があると判定する。そして、ＰＬＣ１００ａのプログラムの更新版と、これに対応する識別情報CID1-2を、ＰＬＣ１００ａにダウンロードして更新させる。
【００２６】
これより、図８に示すように、ＰＬＣ１００ａが保持する識別情報が、CID1-1からCID1-2に変更されることになる。よって、その後に別の支援装置１１０’がＰＬＣ１００ａにプログラムのオンライン変更を試みても、そのときにＰＬＣ１００ａが保持する識別情報（＝CID1-2）は、履歴情報１１１ａ’内に存在しないので、オンライン変更は許可されないことになる。
【００２７】
一方、ＰＬＣ１００ｂに対しては、上記の通り、別の支援装置１１０’がプログラムのオンライン変更を行う為に上記特許文献１の手法により上記識別情報を用いたチェックを行う。この例では、ＰＬＣ１００ｂが保持している識別情報（CID2-1）が、これに対応する履歴情報である履歴情報１１１ｂ’に存在するか否かを判定する。この例では、図示の通り、識別情報CID2-1が、履歴情報１１１ｂ’内に存在するので、別の支援装置１１０’は、ＰＬＣ１００ｂのプログラムを更新する権利があると判定する。そして、ＰＬＣ１００ｂのプログラムの更新版と、これに対応する識別情報CID2-2’を、ＰＬＣ１００ｂにダウンロードして保持させる。
【００２８】
これより、図８に示すように、ＰＬＣ１００ｂが保持する識別情報が、CID2-1からCID2-2’に変更されることになる。よって、その後に支援装置１１０がＰＬＣ１００ｂにプログラムのオンライン変更を試みても、そのときにＰＬＣ１００ｂが保持する識別情報（＝CID2-2’）は、履歴情報１１１ｂ内に存在しないので、オンライン変更は許可されないことになる。
【００２９】
上記のようにして、ＰＬＣ１００ａ、ＰＬＣ１００ｂのプログラムの継続性を保証することはできる（特許文献１と同様）。
しかしながら、上述した例では、プロジェクト“PRJ”がＰＬＣ１００ａのマスタプロジェクトとなり、コピープロジェクト“PRJ’”がＰＬＣ１００ｂのマスタプロジェクトとなるものと言える。ＰＬＣ１００ａとＰＬＣ１００ｂとが何等関係がないものであるならば、この様な状態になっても問題はない。しかしながら、上述したように、ＰＬＣ１００ａとＰＬＣ１００ｂは同じプロジェクトに係わるコントローラであり、両者の動作は相互に何等かの関係がある場合が多い。従って、この様な場合には、任意のプロジェクトに係わる全てのコントローラ１００が、マスタプロジェクトが同一であることが必要となり、上述したようなＰＬＣ１００ａとＰＬＣ１００ｂとでマスタプロジェクトが異なる状態となることは、問題である。
【００３０】
このように、複数のコントローラを纏めてひとつのプロジェクトとして管理するシステムに上記特許文献１の手法を適用しようとした場合、プロジェクトに係わる各コントローラのマスタプロジェクトが、全て同一とならない場合があるという問題が生じることになる。
【００３１】
本発明の課題は、複数のプログラマブルコントロール装置を纏めてひとつのプロジェクトとして管理した場合においても、マスタプロジェクトがプログラマブルコントロール装置毎に別々にならず、プロジェクト単位でプログラム更新を行うことが保証できるコントロールシステム等を提供することである。
【課題を解決するための手段】
【００３２】
本発明のコントロールシステムは、支援装置とプログラマブルコントロール装置とがネットワークに接続されており、該支援装置が、相互に連携して動作する複数のプログラマブルコントロール装置用の各プログラムを纏めて１つのプロジェクトとして管理するシステムであって、下記の各構成を有する。
【００３３】
前記支援装置は、下記の各構成を有する。
・管理するプロジェクトを識別するための一意のプロジェクト識別情報の履歴をプロジェクト履歴として記憶するプロジェクト履歴記憶手段；
・前記プログラマブルコントロール装置毎に、該プログラマブルコントロール装置を識別するための一意のコントローラ識別情報の履歴をコントローラ履歴として記憶するコントローラ履歴記憶手段；
・前記プロジェクトに係わる前記各プログラムの更新版が作成される毎に、該プロジェクトを識別するための一意のプロジェクト識別情報を生成して前記プロジェクト履歴に追加登録すると共に、前記各更新版プログラムに係わる各プログラマブルコントロール装置毎に、該プログラマブルコントロール装置を識別するための一意のコントローラ識別情報を生成して対応する前記コントローラ履歴に追加登録するコンパイル手段；
・前記各プログラマブルコントロール装置に対して、そのプログラマブルコントロール装置用の前記更新版プログラムをダウンロードする手段であって、そのプログラマブルコントロール装置のプログラムを更新する権利を有すると判定した場合に、そのプログラマブルコントロール装置に対して、該プログラマブルコントロール装置に対応する前記生成されたコントローラ識別情報と、前記生成したプロジェクト識別情報と、前記更新版プログラムとをダウンロードするダウンロード手段：
【００３４】
前記各プログラマブルコントロール装置は、下記の各構成を有する。
・自装置用の前記プログラムを記憶するプログラム記憶手段；
・コントローラ識別情報を記憶するコントローラ識別情報記憶手段；
・プロジェクト識別情報を記憶するプロジェクト識別情報記憶手段；
・前記ダウンロード手段によってダウンロードされた前記更新版プログラムと前記コントローラ識別情報と前記プロジェクト識別情報とによって、前記プログラム記憶手段と前記コントローラ識別情報記憶手段と前記プロジェクト識別情報記憶手段の各記憶内容を更新する管理手段：
【００３５】
そして、前記支援装置の前記ダウンロード手段は、ダウンロード対象のプログラマブルコントロール装置における前記コントローラ識別情報記憶手段及び前記プロジェクト識別情報記憶手段にそれぞれ記憶された前記コントローラ識別情報及び前記プロジェクト識別情報と、前記プロジェクト履歴記憶手段及び前記コントローラ履歴記憶手段にそれぞれ記憶された前記プロジェクト履歴及び前記コントローラ履歴とに基づいて、前記プログラムを更新する権利の有無の判定を行う。
【発明の効果】
【００３６】
本発明のコントロールシステム等によれば、複数のプログラマブルコントロール装置を纏めてひとつのプロジェクトとして管理した場合においても、マスタプロジェクトがプログラマブルコントロール装置毎に別々にならず、プロジェクト単位でプログラム更新を行うことが保証できる。
【図面の簡単な説明】
【００３７】
【図１】本例のプログラマブルコントローラシステムの構成図である。
【図２】図１のシステムの動作例を説明する為の図である。
【図３】支援装置のコンパイル時の処理フローチャート図である。
【図４】支援装置のダウンロード時の処理フローチャート図である。
【図５】（ａ）、（ｂ）は、各コントローラ側におけるプロジェクト識別情報の格納例である。
【図６】本例のプログラマブルコントローラシステムの機能ブロック図である。
【図７】既存技術を適用したプログラマブルコントローラシステムの構成図である。
【図８】図７のシステムの動作例を説明する為の図である。
【発明を実施するための形態】
【００３８】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本例のプログラマブルコントローラシステムの構成図である。
尚、本説明では、プログラマブルコントローラを、単にコントローラと記す場合やＰＬＣ等と記す場合もあるものとする。
【００３９】
図示のプログラマブルコントローラシステムは、複数台のコントローラ１０（コントローラ１０ａ、１０ｂ、・・・１０ｎ；ＰＬＣ１，ＰＬＣ２，・・・ＰＬＣｎ）が、ネットワーク１に接続されている。また、１台以上の支援装置２０が、ネットワーク１に接続し得る。ここでは、この複数台のコントローラ１０全てが、支援装置２０が管理する１つのプロジェクトに係わるコントローラであるものとする。このように、本例のプログラマブルコントローラシステムは、上記図７と同様、支援装置２０は、複数のコントローラ１０を纏めてひとつのプロジェクトとして管理するものである。
【００４０】
尚、コントローラ１０と支援装置２０との接続方法は、上記ネットワーク１を介する構成に限らない。例えば、ＵＳＢケーブル等によって、支援装置２０を各コントローラ１０と直接接続する構成等であっても構わない。
【００４１】
ここで、本例では、２種類の識別情報を用いるので、それらを区別する為に、一方をコントローラ識別情報、他方をプロジェクト識別情報と記すものとする。コントローラ識別情報は、上記特許文献１や図７等で用いた既存の識別情報に相当する。
【００４２】
一方、プロジェクト識別情報は、本手法による新規の識別情報であり、各プロジェクト毎に対応付けられる固有の（一意の）識別情報である。そして、上記プロジェクト“PRJ”のプロジェクト識別情報と、コピープロジェクト“PRJ’”のプロジェクト識別情報とは、必ず異なるように、プロジェクト識別情報が生成されるようにしている。この様な生成方法は、上記コントローラ識別情報の生成方法と略同様であってよい。
【００４３】
また、コントローラ１０のプログラムの更新は、プロジェクト単位で行われる。つまり、基本的には、任意のプロジェクトの更新の際には、このプロジェクトに係わる全てのコントローラ１０のプログラムの更新が、行われることになる。そして、これに伴って新たなプロジェクト識別情報が生成されて、後述する履歴情報（プロジェクト）２２に追加登録され、更に許可される場合には更新版プログラムと一緒にコントローラ１０にダウンロードされる。勿論、これに伴って、各コントローラ１０毎に、新たなコントローラ識別情報も生成されて、上記更新版プログラムと一緒に該当するコントローラ１０にダウンロードされる。
【００４４】
そして、支援装置２０は、上記コントローラ識別情報、プロジェクト識別情報の履歴管理を行う。コントローラ識別情報については、上記図７等と同様、各コントローラ１０毎に対応する履歴情報を記憶・管理する。すなわち、図示の履歴情報（PLC）２１（２１ａ、２１ｂ、・・・、２１ｎ）を、記憶・管理する。上記各コントローラ１０毎に生成された新たな固有の（一意の）コントローラ識別情報は、そのコントローラ１０に対応する履歴情報（ＰＬＣ）に追加登録される。その際、特許文献１と同様にして、生成した新たな世代と一緒に追加登録するようにしてもよいが、この例に限らない。例えば、コントローラ１０ａに対応する新たなコントローラ識別情報は、図示の履歴情報（ＰＬＣ）２１ａに追加登録されることになる。
【００４５】
また、支援装置２０は、プロジェクト識別情報に係わる履歴情報である図示の履歴情報（プロジェクト）２２を、記憶管理する。上記プロジェクト更新に伴って新たに生成されたプロジェクト識別情報は、この履歴情報（プロジェクト）２２に追加登録される。尚、その際、生成した新たな世代と一緒に追加登録するようにしてもよいが、この例に限らない。
【００４６】
尚、支援装置２０が有する不図示のメモリ領域に、上述した履歴情報（PLC）２１や履歴情報（プロジェクト）２２が記憶される。
一方、各コントローラ１０は、それぞれ、自装置が現在保持しているプログラムに係わるコントローラ識別情報１１を保持している。これは、例えばプログラムの更新が行われると、支援装置２０から、更新版プログラムと共にこれに対応するコントローラ識別情報がダウンロードされてくるので、この更新版プログラムを記憶すると共に、このコントローラ識別情報を新たな上記コントローラ識別情報１１として記憶する。その後は、更新版プログラムを実行することで、制御動作を行うことになる。
【００４７】
また、各コントローラ１０は、自装置及び他の各コントローラ１０が現在保持しているプログラムに係わるプロジェクト識別情報を、図示のプロジェクト識別情報群１２として保持している。自装置が保持しているプログラムに係わるプロジェクト識別情報は、上記更新版プログラムと共にダウンロードされてくるので、これを保持する。尚、当然ながら、各コントローラは、上記プロジェクト識別情報群１２を記憶するメモリ領域を有しており、その一例がコモンメモリであるが、この例に限らない。
【００４８】
一方、他の各コントローラ１０が現在保持しているプログラムに係わるプロジェクト識別情報は、図示の例ではコモンメモリ方式により上記コモンメモリに格納されるものである。コモンメモリ方式は、例えば参考文献（特開２００２−２９７２１０号公報）に記載の通信方式である。これより、各コントローラ１０は、それぞれ、上記参考文献に記載のコモンメモリを備えており（不図示）、全てのコントローラ１０のコモンメモリに同一のデータ群（図示のプロジェクト識別情報群１２）が格納された状態となるように制御している。つまり、各コントローラ１０のプロジェクト識別情報が、相互参照可能な仕組みとなっている。
【００４９】
プロジェクト識別情報群１２は、全てのコントローラ１０のプロジェクト識別情報である。つまり、各コントローラ１０がそれぞれ現在保持しているプログラムに対応するプロジェクト識別情報が、プロジェクト識別情報群１２である。これより、支援装置２０は、任意の１台のコントローラ１０のプロジェクト識別情報群１２（コモンメモリ）を参照すれば、上記プロジェクトに係わる全てのコントローラ１０の現在のプロジェクト識別情報を、知ることができるようになっている。
【００５０】
そして、上記図７等で説明した既存手法適用システムでは、上記コントローラ識別情報のみを用いてダウンロード許可されるか否かを判定していたのに対して、本手法では上記２種類の識別情報を用いて、この判定を行っている。
【００５１】
コントローラ識別情報１１を用いた判定処理は、既存手法と同じであってよい（第１の判定処理とする）。一方、プロジェクト識別情報群１２を用いた判定処理は、プロジェクト識別情報群１２の全てのプロジェクト識別情報が、履歴情報（プロジェクト）２２内に存在するか否かを判定するものである（第２の判定処理とする）。上記の通り、プロジェクト識別情報群１２には、任意のプロジェクトに係わる全てのコントローラのプロジェクト識別情報が格納されている。よって、上記第２の判定処理は、任意のプロジェクトに係わる全てのコントローラのプロジェクト識別情報が、履歴情報（プロジェクト）２２内に存在するか否かを判定するものと言える。
【００５２】
そして、上記第１の判定処理と第２の判定処理の両方の判定結果がＯＫ（存在する）である場合に、ダウンロード許可されるものと判定し、更新版プログラムとこれに係わるコントローラ識別情報とプロジェクト識別情報とを、対象のコントローラ１０へダウンロードする。
【００５３】
上記の処理では、全てのコントローラ１０（１０ａ、１０ｂ、・・・、１０ｎ）の中で一台でも既に他のプロジェクトがマスタプロジェクトとなっているものがある場合には、この一台だけでなく他のコントローラ１０全てに関して、ダウンロード許可されないことになる。これによって、コントローラ１０（１０ａ、１０ｂ、・・・、１０ｎ）のなかにマスタプロジェクトが異なるものが存在する事態となることを防止できる。
【００５４】
上記判定処理に係わる具体例について、図２を参照して説明する。
図２は、図１のシステムにおいて、上記図７、図８と同様に、図１の支援装置２０が任意のプロジェクト“PRJ”に係わるプログラムを作成・更新・管理するものとする。そして、最初に、各コントローラ１０（１０ａ、１０ｂ、・・・１０ｎ）の各プログラム(ソースコード)が、支援装置２０上でプログラマ等によって任意に新規作成されたものとする。支援装置２０は、この新規プログラム（ソースコード）をコンパイルする際に上記特許文献１の処理によって上記固有の識別情報を生成する。これは各コントローラ１０毎に図示の各コントローラ識別情報（CID1-1、CID2-1、…、CIDn-1）が生成される。そして、これら各識別情報が各履歴情報（ＰＬＣ）２１（２１ａ、２１ｂ、・・・、２１ｎ）に世代１として保存される。更に、プロジェクト“PRJ”のプロジェクト識別情報として最初は“PID-1”が生成されてこれが図示のように履歴情報（プロジェクト）２２に世代１として登録される。
【００５５】
そして、支援装置２０は、上記各新規プログラム（コンパイル後）とそれに対応する上記２種類の識別情報とを、各コントローラ１０に新規ダウンロードすることで、これらを各コントローラ１０に保持させる。これより、図１に示すように、各コントローラ１０には上記世代１の２種類の識別情報が保持された状態となる。例えば、コントローラ１０ａは、上記世代１のCID1-1を自己のコントローラ識別情報１１ａとして保持する。
【００５６】
尚、当然ながら、各コントローラ１０は、各々、自己のコントローラ識別情報１１を記憶する為のメモリ領域を有している。
また、コントローラ１０ａは、上記プロジェクト“PRJ”に応じた世代１のプロジェクト識別情報“PID-1”を、自己のコモンメモリの該当記憶領域に保持する。尚、上記参考文献に開示されていることと同様にして、予め各コントローラ１０に対してコモンメモリの任意の記憶領域が割当てられている。そして、自己に割当てられている記憶領域に、例えば上記プロジェクト識別情報“PID-1”を上書き記憶することになる。
【００５７】
更に、上記の通り、コモンメモリ方式により、この“PID-1”は他の全てのコントローラ１０のコモンメモリに転送・格納されることになる。
他の各コントローラ１０においても、上記コントローラ１０ａと略同様にして、上記世代１の各コントローラ識別情報の中で自装置に対応するものを保持すると共に、上記“PID-1”を自己のコモンメモリの該当記憶領域に保持する。これによって、図１に示すように、全てのコントローラ１０の全てのコモンメモリにおいて、その全ての記憶領域に“PID-1”が格納された状態となる。
【００５８】
尚、図１は、上記の状態となった後に支援装置２０側でプログラム更新やこれに応じた世代２の識別情報の生成・格納が行われたが、未だコントローラ１０には一切ダウンロードしていない状態を示しているものと見做してよい。
【００５９】
ここでは、未だ、この様なプログラム更新や世代２の識別情報の生成が行われる前の状態、すなわち支援装置２０側でも未だ上記世代１のみが存在している状態において、上記プロジェクト“PRJ”に係わる履歴情報やプログラムを、別の支援装置２０’にコピーしてコピープロジェクト“PRJ’”としたものとする。尚、別の支援装置２０’側では、コピーした履歴情報を、図示の履歴情報（プロジェクト）２２’、各履歴情報２１’（２１ａ’、２１ｂ’、・・・、２１ｎ’）として記憶・管理する。
【００６０】
また、この時点では、全てのコントローラ１０ａ〜１０ｎに関して、PRJとPRJ’が次のマスタプロジェクトの候補となる。
その後、当該別の支援装置２０’において、別のプログラマ等が、コピーしたプログラムに基づいて、その更新版等を作成する。尚、別の支援装置２０’も上記支援装置２０と同様の機能を有しているものとする。これより、別の支援装置２０’において、上記作成された更新版プログラムのコンパイル処理に伴って、新たな世代のコントローラ識別情報が生成されてこれが上記履歴情報（ＰＬＣ）２１’（２１ａ’、２１ｂ’、・・・、２１ｎ’）に追加されることになる。
【００６１】
これより、図示のように、履歴情報（ＰＬＣ）２１（２１ａ’、２１ｂ’、・・・、２１ｎ’）には、生成された各識別情報（CID1-2’、CID2-2’、…、CIDn-2’）が世代２として追加されることになる。また、コピープロジェクト“PRJ’”に係わる識別情報として“PID-2’”が新たに生成されて、これが世代２として履歴情報（プロジェクト）２２’に追加登録される。これより、別の支援装置２０’における各履歴情報は、図２に示す状態となっている。
【００６２】
一方、元の支援装置２０においても、任意のプログラム更新が行われて、これに応じた世代２の識別情報が生成されて各履歴情報に追加される。すなわち、支援装置２０側では、プロジェクト“PRJ”に係わる各プログラムの更新版の作成がプログラマ等によって行われたものとし、そのコンパイル処理に伴ってコントローラ毎に前回と異なる固有の識別情報（CID1-2、CID2-2、…、CIDn-2）が生成される。そして、これら生成された各識別情報が、各履歴情報（ＰＬＣ）２１（２１ａ、２１ｂ、・・・、２１ｎ）に図示のように世代２として追加保存されているものとする。
【００６３】
尚、この時点では、全てのＰＬＣ１０について、上記プロジェクト“PRJ”とコピープロジェクト“PRJ’”の両方ともが、次のマスタプロジェクトの候補となっている。
そして、上記支援装置２０と別に支援装置２０’は、各々、自装置における上記更新版のプログラムを、順次、各ＰＬＣ１０ａ〜１０ｎにダウンロードしようと試みることになる。つまり、プログラムのオンライン変更を試みることになる。そして、ここでは仮に、支援装置２０は最初にＰＬＣ１０ａにダウンロードを試み、別の支援装置２０’は最初にＰＬＣ１０ｂにダウンロードを試みたものとする。
【００６４】
支援装置２０は、ＰＬＣ１０ａにプログラムのオンライン変更を行う為に上記特許文献１の手法により上記識別情報を用いたチェックを行う。この例では、ＰＬＣ１０ａが保持している識別情報（CID1-1）が、これに対応する履歴情報である履歴情報（ＰＬＣ）２１ａに存在するか否かを判定する。この例では、図示の通り、識別情報CID1-1が、履歴情報（ＰＬＣ）２１ａ内に存在する。
【００６５】
支援装置２０は、更に、ＰＬＣ１０ａのプロジェクト識別情報群１２ａを取得して、これら全てが履歴情報（プロジェクト）２２内に存在するか否かを判定する。換言すれば、全コントローラ１０（１０ａ、１０ｂ、・・・、１０ｎ）のプロジェクト識別情報が、全て、履歴情報（プロジェクト）２２内に存在するか否かを判定する。このときには、全コントローラ１０（１０ａ、１０ｂ、・・・、１０ｎ）のプロジェクト識別情報全てが上記“PID-1”となっているので、全てが、履歴情報（プロジェクト）２２内に存在することになる。
【００６６】
支援装置２０は、上記コントローラ識別情報を用いた判定とプロジェクト識別情報を用いた判定の両方で、ＯＫ（存在する）と判定された場合に、ＰＬＣ１０ａのプログラムを更新する権利があると判定する。この判定によって、支援装置２０は、ＰＬＣ１０ａのプログラムの更新版と、これに対応する最新世代のコントローラ識別情報“CID1-2”と、最新世代のプロジェクト識別情報“PID-2”とを、ＰＬＣ１０ａにダウンロードして保持させる。
【００６７】
これより、図２に示すように、ＰＬＣ１０ａが保持するコントローラ識別情報１１ａが、CID1-1からCID1-2に変更されると共に、コモンメモリの該当領域の記憶内容が“PID-1”から“PID-2”に変更されることになる。そして、上記の通り、このＰＬＣ１０ａのコモンメモリの記憶内容の変更は、他の全てのコントローラ１０のコモンメモリにも反映されることになる。
【００６８】
これより、図２に示すように、全てのコモンメモリにおいて、上記ＰＬＣ１０ａに対して割当てられている記憶領域の格納内容が、“PID-2”となることになる。
よって、その後に別の支援装置２０’がＰＬＣ１０ａにプログラムのオンライン変更を試みても、そのときにＰＬＣ１０ａが保持するコントローラ識別情報１１ａ（＝CID1-2）は、履歴情報（ＰＬＣ）２１ａ’内に存在しないので、オンライン変更は許可されないことになる。尚、本例の場合、プロジェクト識別情報に関しても、上記“PID-2”は図示のように支援装置２０’の履歴情報（プロジェクト）２２’には存在しないので、プロジェクト識別情報を用いた判定によってもオンライン変更は許可されないことになる。
【００６９】
一方、ＰＬＣ１０ｂに対しては、上記の通り、別の支援装置２０’がプログラムのオンライン変更を行う為に上記特許文献１の手法により上記識別情報を用いたチェックを行う。この例では、ＰＬＣ１０ｂが保持しているコントローラ識別情報１１ｂ（＝CID2-1）が、これに対応する履歴情報である履歴情報（ＰＬＣ）２１ｂ’に存在するか否かを判定する。この例では、図示の通り、コントローラ識別情報“CID2-1”が、履歴情報（ＰＬＣ）２１ｂ’内に存在する。
【００７０】
一方で、このときにはＰＬＣ１０ｂのプロジェクト識別情報群１２ｂにも、上記“PID-2”が含まれていることになる（他は全て“PID-１”のままの状態である）。よって、“PID-１”は履歴情報（プロジェクト）２２’内に存在すると判定されるが、“PID-2”は履歴情報（プロジェクト）２２’内に存在しないと判定され、ＮＧ判定となる。
【００７１】
上記のように、２つの判定のうちの一方はＯＫ判定であるが他方はＮＧ判定となる。２つの判定の何れか一方でもＮＧ判定となった場合、全体としてＮＧ判定となり、従ってこの例では、別の支援装置２０’は、ＰＬＣ１０ｂに対してはプログラムを更新する権利が無いと判定することになる。つまり、別の支援装置２０’によるコントローラ１０ｂのプログラムのオンライン変更は、許可されないことになる。これより、別の支援装置２０’は、ＰＬＣ１０ｂに対して更新版プログラムのダウンロード等は行わない。
【００７２】
更に、別の支援装置２０’は、上記ＰＬＣ１０ａ、１０ｂ以外の他のコントローラ１０全てに関しても、上記ＮＧ判定となり、プログラムを更新する権利が無いと判定することになる。このようにして、例えば支援装置２０の方が先に全コントローラ１０の中で１台でもプログラムのオンライン変更を行った場合には、別の支援装置２０’は、全てのコントローラ１０に関してオンライン変更ができないように制御されることになる。
【００７３】
一方、支援装置２０は、上記ＰＬＣ１０ａ以外の他のコントローラ１０全てに関して、上記ＰＬＣ１０ａの場合と同様に、プログラムを更新する権利があると判定することになる。そして、更新版プログラムや上記２種類の識別情報を、他のコントローラ１０にもダウンロードして保持させることになる。
【００７４】
この様にして、全てのコントローラ１０のマスタプロジェクトが、上記プロジェクト“PRJ”（支援装置２０）となることになる。
尚、上記の一例とは逆に、別の支援装置２０’の方が支援装置２０よりも先にプログラム更新を試みた場合には、その対象が複数のコントローラ１０の何れであっても、プログラムを更新する権利があると判定することになる。そして、更新版プログラムや２種類の識別情報を、ダウンロードして保持させることになる。この為、その後に支援装置２０が、何れかのコントローラ１０に対してプログラム更新を試みても、プログラムを更新する権利が無いと判定することになる。
【００７５】
この様に、任意のプロジェクトに係わる複数台のコントローラ１０に対して、１台であっても最初にプログラム更新を試みた支援装置（そのプロジェクト）のみが、このプロジェクトに係わる全てのコントローラ１０のマスタプロジェクトとなるように制御される。
【００７６】
このように、プロジェクト識別情報を利用することで、任意のプロジェクトに係わる複数のコントローラを管理する場合において、最も最初にオンライン変更を行ったプロジェクトを全コントローラのマスタプロジェクトすることができる。よって、コントローラによってマスタプロジェクトが異なる事態が生じることを防止できる。
【００７７】
支援装置２０、２０’は、各々、自装置が管理するプロジェクトに係わる全てのプログラム（ソースコード）の新規版や更新版等が、プログラマによって作成されると、これら各プログラム(ソースコード)をコンパイルして、コントローラ１０で実行可能な形式に変換する。そして、このコンパイル処理の際に上記各種識別情報を生成して履歴情報に登録する。
【００７８】
このコンパイル処理の際には、図１、図２で説明の通り、固有の識別情報を生成し、それらを世代を含めた履歴情報として管理する処理を、各コントローラに関して行うだけでなく、プロジェクトに関しても行う。
【００７９】
図３に、この様な支援装置におけるコンパイル処理のフローチャート図を示す。
尚、ここでは支援装置２０で実行される場合を例にして説明するが、支援装置２０’においても略同様の処理が実行されることになる。
【００８０】
上記の通り、自装置が管理するプロジェクトに係わる複数のコントローラ全てのプログラム（新規または更新版）を、プログラマが作成したら、図３の処理を実行する。
これより、まず、自装置が管理するプロジェクトのプロジェクト識別情報（固有の識別情報）を、新たに生成する（ステップＳ１１）。そして、新規のプロジェクトであるか否かを判定する。これは、例えば、このプロジェクトの履歴情報（プロジェクト）２２が既に存在するか否かにより判定する。
【００８１】
もし、このプロジェクトの履歴情報（プロジェクト）２２が既に存在する場合には（ステップＳ１２，ＮＯ）、この履歴情報（プロジェクト）２２に、上記ステップＳ１１で生成したプロジェクト識別情報を追加することで、履歴情報（プロジェクト）２２を更新する（ステップＳ１４）。尚、その際、新たな世代を生成して一緒に登録してもよいが、この例に限らない。
【００８２】
一方、もし、このプロジェクトの履歴情報（プロジェクト）２２が無い場合には（ステップＳ１２，ＹＥＳ）、このプロジェクトに応じた履歴情報（プロジェクト）２２を新規作成する（ステップＳ１３）。勿論、この新規作成された履歴（プロジェクト）２２には上記ステップＳ１１で生成したプロジェクト識別情報が、世代１として登録される。
【００８３】
その後は、このプロジェクトに係わる全てのコントローラ１０を順次処理対象として、対象コントローラのプログラムのコンパイルと固有のコントローラ識別情報の生成を、繰り返し実行する。すなわち、まず、対象コントローラのプログラムをコンパイルする（ステップＳ１５）。続いて、対象コントローラに対応する固有のコントローラ識別情報を新たに生成すると共に（ステップＳ１６）、このコントローラ識別情報が新規のもの（世代１）であるか否かを判定する（ステップＳ１７）。ステップＳ１７の判定は、例えば、対象コントローラに対応する履歴情報（ＰＬＣ）２１が既に存在するか否かにより判定する。
【００８４】
もし、対象コントローラに対応する履歴情報（ＰＬＣ）２１が存在しないならば（ステップＳ１７，ＹＥＳ）、対象コントローラに対応する履歴情報（ＰＬＣ）２１を新規作成する（ステップＳ１８）。その際、新規作成した履歴情報（ＰＬＣ）２１には、上記ステップＳ１６で生成したコントローラ識別情報を、世代１として登録する。
【００８５】
一方、対象コントローラに対応する履歴情報（ＰＬＣ）２１が既に存在するならば（ステップＳ１７，ＮＯ）、新たな世代を決定して、上記ステップＳ１６で生成したコントローラ識別情報を、決定した世代と共に履歴情報（ＰＬＣ）２１に追加することで、履歴情報（ＰＬＣ）２１を更新する（ステップＳ１９）。尚、世代の決定方法は、例えば、履歴情報（ＰＬＣ）２１に登録済みの世代の中で最も大きい世代を判別して、この世代に＋インクリメントすることで、決定する。例えば、世代１と世代２と世代３が既に登録済みであるならば、世代４に決定されることになる。
【００８６】
そして、上記ステップＳ１５〜ステップＳ１９の処理を、上記プロジェクトに係わる全てのコントローラについて実行したか否かを判定し、未実行のコントローラがある場合には（ステップＳ２０，ＮＯ）、ステップＳ１５に戻る。全てのコントローラに関して処理実行完了したら（ステップＳ２０，ＹＥＳ）、本処理を終了する。
【００８７】
以上、図３について説明した。
以下、図４について説明する。
図４の処理は、任意のコントローラ１０に対して、このコントローラ１０のプログラムを当該コントローラ１０へダウンロードする際に、実行される処理であり、上記のように、ダウンロード許可されない場合もある。
【００８８】
図４は、支援装置におけるダウンロード処理のフローチャート図である。
まず、最初に、新規ダウンロードであるか否かを判定する（ステップＳ３１）。これは、システムの立ち上げ時等であり、未だコントローラ１０にはプログラムが格納されていない状態（よって、識別情報も記憶されていない状態）である場合には、判定結果がＹＥＳとなるものである。
【００８９】
新規ダウンロードであると判定された場合には（ステップＳ３１，ＹＥＳ）、この対象コントローラ１０に対して、この対象コントローラ１０用のプログラムをダウンロードして保持させる（ステップＳ３７）。更に、各履歴情報２２，２１から最新世代の識別情報を取得して、これらを対象コントローラ１０にダウンロードして保持させる（ステップＳ３８）。すなわち、履歴情報（プロジェクト）２２から最新世代のプロジェクト識別情報を取得すると共に、対象コントローラ１０に対応する履歴情報（ＰＬＣ）２１から最新世代のコントローラ識別情報を取得して、これらを対象コントローラ１０にダウンロードして保持させる。
【００９０】
尚、ステップＳ３１がＹＥＳの場合に実行されるステップＳ３８の処理では、上記最新世代は世代１となる。ステップＳ３６がＹＥＳの場合に実行されるステップＳ３８の処理では、基本的には世代１以外の任意の世代が、そのときの最新世代となっている。
【００９１】
一方、新規ダウンロードではない場合（ステップＳ３１，ＮＯ）、すなわち対象コントローラ１０には既に何等かのプログラムが格納されており、これに応じた識別情報１１、１２が保持されている場合には、ステップＳ３２の処理へ移行する。尚、この場合には、基本的には、更新版のプログラムが作成されて、これに応じた図３の処理が既に実行済みの状態であることになる。
【００９２】
ステップＳ３２では、対象コントローラ１０からコントローラ識別情報１１を読み出す。そして、読み出したコントローラ識別情報１１が、対象コントローラ１０に対応する履歴情報（ＰＬＣ）２１に存在するか否かを判定する（ステップＳ３３）。そして、存在しない場合には（ステップＳ３３，ＮＯ）、自装置は、対象コントローラ１０のプログラムを更新する権利が無いと判定することになり、そのまま本処理を終了する。
【００９３】
一方、コントローラ識別情報１１が履歴情報（ＰＬＣ）２１に存在する場合には（ステップＳ３３，ＹＥＳ）、更に、対象コントローラ１０に記憶されているプロジェクト識別情報群１２を取得する。そして、このプロジェクト識別情報群１２に含まれる各プロジェクト識別情報を順次読み出して（ステップＳ３４）、当該読み出したプロジェクト識別情報が履歴情報（プロジェクト）２２に存在するか否かを判定する（ステップＳ３５）。もし、存在しないならば（ステップＳ３５，ＮＯ）、自装置は、対象コントローラ１０のプログラムを更新する権利が無いと判定することになり、そのまま本処理を終了する。一方、存在するならば（ステップＳ３５，ＹＥＳ）、上記プロジェクト識別情報群１２に含まれる全てのプロジェクト識別情報についてステップＳ３５の判定処理を実行したか否かを判定し（ステップＳ３６）、未処理のプロジェクト識別情報が残っている場合には（ステップＳ３６，ＮＯ）ステップＳ３４に戻る。
【００９４】
一方、上記プロジェクト識別情報群１２に含まれる全てのプロジェクト識別情報についてステップＳ３５の判定処理を実行した場合には（ステップＳ３６，ＹＥＳ）、これは当該全てのプロジェクト識別情報が、履歴情報（プロジェクト）２２に存在したことになる。従って、上記ステップＳ３３の判定がＹＥＳとなったことと併せて、自装置は、対象コントローラ１０のプログラムを更新する権利が有ると判定する。よって、この場合には、上記ステップＳ３７、Ｓ３８の処理を実行することになる。
【００９５】
この場合には、ステップＳ３７では、上記作成された更新版のプログラムを対象コントローラ１０にダウンロードしてプログラム更新させることになる。また、ステップＳ３８では、履歴情報（プロジェクト）２２から最新世代のプロジェクト識別情報を取得すると共に、対象コントローラ１０に関する履歴情報（ＰＬＣ）２１から最新世代のコントローラ識別情報を取得して、これらを対象コントローラ１０にダウンロードすることになる。
【００９６】
この様にして、コントローラのプログラムのオンライン変更を実現する。
ここで、図５（ａ）、（ｂ）を参照して、上記プロジェクト識別情報群１２の格納・管理方法について説明する。
【００９７】
既に上述した一例ではコモンメモリ方式を用いる例を説明しており、図５（ａ）はコモンメモリ方式について説明する為の図である。但し、これについては上記参考文献等で説明されているので、ここでは簡単に説明する。
【００９８】
図５（ａ）に示すように、コモンメモリのメモリ空間には、予め各コントローラ１０毎に固有の記憶領域が割当てられている。ここでは、簡単の為に、図示のＰＬＣ１とＰＬＣ２とを例にし、図示のようにコモンメモリにおいてＰＬＣ１用の記憶領域、ＰＬＣ２用の記憶領域が割当てられているものとする。
【００９９】
ＰＬＣ１は、自己のコモンメモリにおける上記ＰＬＣ１用の記憶領域の格納データを、随時、任意に更新できる。また、ＰＬＣ１が備えるコモンメモリ方式に係わる通信機能は、例えば定期的に、自己のコモンメモリの上記ＰＬＣ１用の記憶領域の格納データを、ネットワーク上にブロードキャスト送信する。これより、このデータを受信したＰＬＣ２の通信機能は、この受信データを自己のコモンメモリの上記ＰＬＣ１用の記憶領域に上書き記憶する。
【０１００】
ＰＬＣ２も、自己のコモンメモリにおける上記ＰＬＣ２用の記憶領域の格納データを、随時、任意に更新できる。また、ＰＬＣ２が備えるコモンメモリ方式に係わる通信機能は、例えば定期的に、自己のコモンメモリの上記ＰＬＣ２用の記憶領域の格納データを、ネットワーク上にブロードキャスト送信する。これより、このデータを受信したＰＬＣ１の通信機能は、この受信データを自己のコモンメモリの上記ＰＬＣ２用の記憶領域に上書き記憶する。
【０１０１】
この様にしてコントローラ１０間で相互にデータ交換を行うことで、全てのコントローラ１０のコモンメモリの格納内容が、同じとなるように制御できる。つまり、全てのコモンメモリには、その時点での全てのコントローラ１０が各々保持するプロジェクト識別情報が、格納された状態となる。
【０１０２】
上記のように、コモンメモリのメモリ空間を分割し、コントローラ毎に占有する領域が定義されている。そして、自コントローラが占有する領域に対しては読み書きが可能であり、その他の領域に対しては読出しのみ可能な構成となっている。
【０１０３】
尚、例えば、各コントローラのコモンメモリ上の記憶領域（割当領域）の先頭アドレスを、コモンメモリの先頭領域からのオフセットの形で支援装置側に予め登録しておくことも可能である。これより、支援装置は、上記オフセットを指定することで、ダウンロード対象のコントローラ１０のコモンメモリから、所望のコントローラ１０のプロジェクト識別情報を取得することができる。
【０１０４】
上記図５（ａ）は、各コントローラ１０がネットワークに接続された構成を前提とするが、例えば同一バス上に複数のコントローラが存在する場合もある。つまり、例えば図５（ｂ）に示すように、複数のコントローラ（そのＣＰＵモジュール）が１つのユニット内に設けられており、このユニット内の同一バス上に上記複数のＣＰＵモジュールが設けられた構成が、従来より知られている。そして、従来より、この様なユニット内で、各ＣＰＵモジュールは、自己のメモリ領域は当然として、他のＣＰＵモジュールのメモリ領域にもバスを介してアクセスできる。これは、予め決められているコントローラ番号を用いて、任意のＣＰＵモジュールのメモリ領域にアクセスできる。
【０１０５】
上記図５（ｂ）の構成の場合、各コントローラ（ＣＰＵモジュール）は、支援装置からダウンロードされた更新版プログラム、プロジェクト識別情報等を、自己のメモリ領域に格納する。支援装置は、上記各コントローラ番号を用いて、各コントローラのメモリ領域からプロジェクト識別情報等を読み出すことができる。
【０１０６】
但し、本手法では、支援装置が、全てのコントローラ１０が現在保持しているプロジェクト識別情報を取得できればよいので、必ずしも上記図５（ａ）、（ｂ）等のように構成する必要はない。例えば、各コントローラ１０は、コントローラ識別情報と同じく、単に自装置にダウンロードされたプロジェクト識別情報のみを記憶するようにしてもよい。但し、この場合には、支援装置２０は、上記ステップＳ３４〜Ｓ３６の処理を行う為には、全てのコントローラ１０と通信して、そのコントローラ１０が現在保持しているプロジェクト識別情報を取得することになる。つまり、支援装置２０の通信処理負荷等が増大することになる。しかし、例えばこの様な方法であっても上記ステップＳ３４〜Ｓ３６の処理を実現出来るので、必ずしもコモンメモリ方式を用いる必要はない。
【０１０７】
以上説明したように、本例のプログラマブルコントローラシステムは、支援装置で、複数のコントローラをまとめてひとつのプロジェクトとして管理するシステムにおいて、各コントローラでマスタプロジェクトが異なることになる事態となることを防止できる。これによって、オンライン変更によるプログラム更新を正常に継続させることができる。プロジェクトの管理の効率化とそれによる操作ミスの防止が期待できるという効果を有する。
【０１０８】
本例のプログラマブルコントローラシステム等によれば、複数のコントローラを纏めてひとつのプロジェクトとして管理した場合においても、マスタプロジェクトがコントローラ毎に別々にならず、プロジェクト単位でプログラム更新を行うことが保証できる。
【０１０９】
図６は、本例のプログラマブルコントローラシステムの機能ブロック図である。
本例のプログラマブルコントローラシステムは、支援装置２０（２０’）とプログラマブルコントローラ１０とがネットワークに接続されており、該支援装置２０（２０’）が、任意のプロジェクトに係わる複数のプログラマブルコントローラ１０用の各プログラムを管理するシステムであって、図示の各構成を有する。尚、以下の説明では、支援装置２０を例にするが、他の支援装置（２０’）等も支援装置２０と同様の処理動作を行うものである。
【０１１０】
支援装置２０は、プロジェクト履歴を記憶するプロジェクト履歴記憶部５１、プログラマブルコントローラ１０毎に対応するコントローラ履歴を記憶するコントローラ履歴記憶部５２を有する。支援装置２０は、更に、コンパイル部５３、ダウンロード部５４の各種機能部も有する。
【０１１１】
コンパイル部５３は、任意のプロジェクトに係わる上記各プログラムの更新版が作成される毎に、一意のプロジェクト識別情報を生成して上記プロジェクト履歴に追加登録する。更に、上記各更新版プログラムに係わる各プログラマブルコントローラ１０毎に、一意のコントローラ識別情報を生成して対応する上記コントローラ履歴に追加登録する。
【０１１２】
尚、コンパイル部５３は、上記各プログラム（ソースコード）をコンパイルしてプログラマブルコントローラ１０で実行可能な形式（機械語オブジェクト）に変換する処理も行う。逐一述べないが、プログラマブルコントローラ１０にダウンロードするプログラムは、ソースコードではなく、機械語オブジェクトである。
【０１１３】
ダウンロード部５４は、各プログラマブルコントローラ１０に対して、そのプログラマブルコントローラ１０用の上記更新版プログラムをダウンロードする機能部であって、そのプログラマブルコントローラ１０のプログラムを更新する権利を有すると判定した場合に、そのプログラマブルコントローラ１０に対して、該プログラマブルコントローラ１０に対応する上記生成されたコントローラ識別情報と、上記生成したプロジェクト識別情報と、上記更新版プログラムとをダウンロードする。
【０１１４】
各プログラマブルコントローラ１０は、自装置用のプログラムを記憶するプログラム記憶部６１、コントローラ識別情報を記憶するコントローラ識別情報記憶部６２、プロジェクト識別情報を記憶するプロジェクト識別情報記憶部６３を有する。
【０１１５】
各プログラマブルコントローラ１０は、更に、上記ダウンロード部５４によってダウンロードされた上記更新版プログラムとコントローラ識別情報とプロジェクト識別情報とによって、上記プログラム記憶部６１と上記コントローラ識別情報記憶部６２と上記プロジェクト識別情報記憶部６３の各記憶内容を更新する管理部６４も有する。
【０１１６】
そして、支援装置２０の上記ダウンロード部５４は、ダウンロード対象のプログラマブルコントローラ１０における上記コントローラ識別情報記憶部６２と上記プロジェクト識別情報記憶部６３と、上記プロジェクト履歴とコントローラ履歴とに基づいて、ダウンロード対象のプログラマブルコントローラ１０のプログラムを更新する権利の有無の判定を行う。
【０１１７】
そして、例えば、支援装置２０の上記ダウンロード部５４は、上記ダウンロード対象のプログラマブルコントローラ１０における上記コントローラ識別情報記憶部６２に記憶されているコントローラ識別情報が、そのプログラマブルコントローラに対応する上記コントローラ履歴に存在し、且つ、全てのプログラマブルコントローラの現在のプロジェクト識別情報が上記プロジェクト履歴に存在すると判定した場合に、そのプログラマブルコントローラのプログラムを更新する権利を有すると判定する。
【０１１８】
また、例えば、上記プロジェクト識別情報記憶部６３には、任意のプロジェクトに係わる複数のプログラマブルコントローラ１０全てについての上記ダウンロードされたプロジェクト識別情報が、プロジェクト識別情報群として記憶されている。そして、支援装置２０の上記ダウンロード部５４は、上記ダウンロード対象のプログラマブルコントローラ１０における上記プロジェクト識別情報記憶部６３を参照することで、上記全てのプログラマブルコントローラ１０の現在のプロジェクト識別情報が上記プロジェクト履歴に存在するか否かの判定を行うものである。
【０１１９】
例えば、上記プロジェクト識別情報記憶部６３には、コモンメモリ方式によって、上記プロジェクト識別情報群が格納・更新されるものである。この例については、図１、図２等で説明してある。
【０１２０】
また、支援装置２０は、上記各プログラムを任意に作成させる機能部であって、特に既存のプログラムを編集させることで該プログラムの更新版を作成させるプログラム作成支援部５５を、更に有する。
【０１２１】
但し、これらの例に限らない。
ここで、支援装置２０は例えばパソコン等であり、特に図示しないが例えば一般的なパソコンの構成を有している。すなわち、不図示のＣＰＵ／ＭＰＵ等の演算プロセッサ、ハードディスク／メモリ等の記憶装置、通信機能部などを有している。上記記憶装置には、予め所定のアプリケーションプログラムが格納されている。このアプリケーションプログラムを、上記演算プロセッサが実行することで、上記図１、図２で説明した支援装置２０（２０’）の動作、図３や図４のフローチャート図の処理、図６に示す支援装置２０の各種機能部の処理機能等が、実現される。
【０１２２】
また、コントローラ１０も、一般的なプログラマブルコントローラ（ＰＬＣ）の構成を有している。すなわち、不図示のＣＰＵ／ＭＰＵ等の演算プロセッサ、メモリ等の記憶部、通信機能部などを有している。上記記憶部には、予め所定のアプリケーションプログラムが格納されている。このアプリケーションプログラムを、上記演算プロセッサが実行することで、上記図１、図２で説明したコントローラ１０の動作、図６に示すコントローラ１０の各種機能部の処理機能等が、実現される。
【０１２３】
なお、以上の説明ではコントロールシステムの中核機能（プログラマブルコントロール装置）を実現するものとしてプログラマブルコントローラ（ＰＬＣ）を例に説明したが、それに限ることはなく、例えばＤＣＳ（Distributed Control System：分散型制御システム或いは分散型制御装置）で実現してもよい。一般的なＦＡ（Factory Automation）システムではＰＬＣが用いられることが多く、さらに高信頼性を要求されるプラント設備ではＤＣＳが用いられることが多い。本発明のプログラマブルコントロール装置は、ＰＬＣであってもよく、ＤＣＳであってもよい。
【０１２４】
上記のように、本発明は、プログラマブルコントロール装置を有するコントロールシステムに係わるものであり、上記プログラマブルコントローラ（コントローラ１０）を有するプログラマブルコントローラシステムは、その一例であり、この例に限らない。プログラマブルコントロール装置を有するコントロールシステムの他の例として、ＤＣＳを有するシステム等であってよい。
【０１２５】
この例に限らず、プログラマブルコントロール装置は、所定の制御ロジックをプログラマブルに構成できる装置であれば何でも良く、一例がＰＬＣやＤＣＳであるが、それ以外でも例えばパソコンでも実現可能である。
【符号の説明】
【０１２６】
１  ネットワーク
１０  コントローラ（ＰＬＣ）
１１  コントローラ識別
１２  プロジェクト識別情報群
２０  支援装置
２１  履歴情報（プロジェクト）
２２  履歴情報（ＰＬＣ）
５１  プロジェクト履歴記憶部
５２  コントローラ履歴記憶部
５３  コンパイル部
５４  ダウンロード部
５５  プログラム作成支援部
６１  プログラム記憶部
６２  コントローラ識別情報記憶部
６３  プロジェクト識別情報記憶部
６４  管理部
【図１】
0006455096.tif 000002
【図２】
0006455096.tif 000003
【図３】
0006455096.tif 000004
【図４】
0006455096.tif 000005
【図５】
0006455096.tif 000006
【図６】
0006455096.tif 000007
【図７】
0006455096.tif 000008
【図８】
0006455096.tif 000009