(57)【要約】【課題】  複数のプログラム編集支援装置から書き込み可能なＰＬＣ内のプログラムについて、その最終更新者が自身であるか、他人であるのかを判別可能にする。【解決手段】  識別データ生成部２２は、ＰＬＣ１用のプログラム５が変更されるとプログラム５内に格納されている識別データを更新する。この識別データは、プログラム５のＰＬＣ１へのアップロード時に前回データ記憶部２０２に格納される。従って、プログラム照合部２８が、ＰＬＣ１からダウンロードされた識別データと、前回データ記憶部２０２に格納されている識別データとを比較すれば、上記アップロード後に、ＰＬＣ１内のプログラム５が他人によって更新されたか否かを判別することができる。【選択図】  図３
2008282362.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルコントローラ用のプログラムを保持するプログラム記憶手段と、
ユーザ操作に基づいて上記プログラムを編集するプログラム編集手段と、
上記プログラム編集手段により上記プログラムが編集された場合に、当該編集に固有の識別データを生成する識別データ生成手段と、
上記プログラム及び上記識別データをプログラマブルコントローラへ書き込むＰＬＣデータ書込手段と、
上記プログラマブルコントローラへ書き込まれる上記識別データを保持する第１識別データ記憶手段と、
上記プログラマブルコントローラから識別データを取得するＰＬＣデータ取得手段と、
上記プログラマブルコントローラから取得した識別データを第１識別データ記憶手段が保持する識別データと比較する第１比較手段と、
上記第１比較手段の比較結果に基づいて表示を行う表示手段とを備えたことを特徴とするプログラム編集支援装置。
【請求項２】
上記ＰＬＣデータ取得手段は、上記プログラマブルコントローラからプログラム及び識別データを取得し、
上記プログラム記憶手段は、上記プログラマブルコントローラから取得した上記プログラムを格納し、
上記第１識別データ記憶手段は、上記プログラマブルコントローラから取得した上記プログラムが上記プログラム記憶手段に格納される場合に、上記プログラマブルコントローラから取得した上記識別データを格納することを特徴とする請求項１に記載のプログラム編集支援装置。
【請求項３】
上記ＰＬＣデータ取得手段は、ユーザが上記プログラム記憶手段に保持されているプログラムの上記プログラマブルコントローラへの書き込みを指示した場合に、当該プログラマブルコントローラから識別データを取得し、
上記表示手段は、上記第１比較手段の比較結果に基づいて、上記プログラムの上記プログラマブルコントローラへの書き込み前に警告表示を行うことを特徴とする請求項１又は２に記載のプログラム編集支援装置。
【請求項４】
上記識別データ生成手段によって生成された最新の識別データを記憶する第２識別データ記憶手段と、
上記第１及び第２識別データ記憶手段が保持する識別データを比較する第２比較手段とを備え、
上記表示手段が、上記第１及び第２の比較手段の比較結果に基づいて表示を行うことを特徴とする請求項１又は２に記載のプログラム編集支援装置。
【請求項５】
上記プログラムは、２以上のモジュールからなり、
上記プログラム編集手段は、上記モジュールを編集することができ、
上記識別データ生成手段は、上記モジュールが編集された場合に、当該編集に固有の識別データを生成し、
上記ＰＬＣデータ書込手段は、上記モジュール及び上記識別データを上記プログラマブルコントローラへ書き込み、
上記第１比較手段は、同一のモジュールについて、上記プログラマブルコントローラから読み出された識別データを第１識別データ記憶手段が保持する識別データと比較し、
上記第２比較手段は、同一のモジュールについて、第１及び第２識別データ記憶手段が保持する識別データを比較することを特徴とする請求項４に記載のプログラム編集支援装置。
【請求項６】
上記表示手段は、同一のモジュールに関する上記第１比較手段及び第２比較手段の比較結果を互いに対応づけ、かつ、同時に閲覧可能となるように表示することを特徴とする請求項４に記載のプログラム編集支援装置。
【請求項７】
上記プログラム記憶手段に保持されているプログラムを複製するプログラム複製手段を備え、
上記プログラム複製手段は、プログラムを複製する際、上記第２識別データ記憶手段に保持されている当該プログラムの識別データも複製することを特徴とする請求項４に記載のプログラム編集支援装置。
【請求項８】
コンピュータをプログラム編集支援装置として機能させるためのコンピュータプログラムであって、
プログラマブルコントローラ用の制御プログラムを保持するプログラム記憶手段と、
ユーザ操作に基づいて上記制御プログラムを編集するプログラム編集手段と、
上記プログラム編集手段により上記制御プログラムが編集された場合に、当該編集に固有の識別データを生成する識別データ生成手段と、
上記制御プログラム及び上記識別データをプログラマブルコントローラへ書き込むＰＬＣデータ書込手段と、
上記プログラマブルコントローラへ書き込まれる上記識別データを保持する識別データ記憶手段と、
上記プログラマブルコントローラから識別データを取得するＰＬＣデータ取得手段と、
上記プログラマブルコントローラから取得した識別データを識別データ記憶手段が保持する識別データと比較する比較手段とを備えたプログラム編集支援装置としてコンピュータを機能させることを特徴とするコンピュータプログラム。
【請求項９】
ユーザ操作に基づいて、プログラム記憶手段が保持するプログラマブルコントローラ用のプログラムを編集するプログラム編集ステップと、
上記プログラム編集ステップにより上記プログラムが編集された場合に、当該編集に固有の識別データを生成する識別データ生成ステップと、
上記プログラム及び上記識別データをプログラマブルコントローラへ書き込むＰＬＣデータ書込ステップと、
上記プログラマブルコントローラへ書き込まれる上記識別データを識別データ記憶手段に格納する識別データ格納ステップと、
上記プログラマブルコントローラから識別データを取得するＰＬＣデータ取得ステップと、
上記プログラマブルコントローラから取得した識別データを識別データ記憶手段が保持する識別データと比較する比較ステップと、
上記比較ステップの比較結果に基づいて表示を行う表示ステップとを備えたことを特徴とするプログラム編集支援方法。
【請求項１０】
プログラマブルコントローラ及び複数のプログラム編集支援装置からなるＰＬＣシステムであって、
上記プログラマブルコントローラが、プログラム及び識別データを保持する記憶手段を備え、
上記プログラム編集支援装置が、
プログラマブルコントローラ用のプログラムを保持するプログラム記憶手段と、
ユーザ操作に基づいて上記プログラムを編集するプログラム編集手段と、
上記プログラム編集手段により上記プログラムが編集された場合に、当該編集に固有の識別データを生成する識別データ生成手段と、
上記プログラム及び上記識別データをプログラマブルコントローラへ書き込むＰＬＣデータ書込手段と、
上記プログラマブルコントローラへ書き込まれる上記識別データを保持する識別データ記憶手段と、
上記プログラマブルコントローラから識別データを取得するＰＬＣデータ取得手段と、
上記プログラマブルコントローラから取得した識別データを識別データ記憶手段が保持する識別データと比較する比較手段と、
上記比較手段の比較結果に基づいて表示を行う表示手段とを備えたことを特徴とするＰＬＣシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム編集支援装置に係り、更に詳しくは、プログラマブルコントローラ用のプログラムを編集し、プログラマブルコントローラへ書き込むためのプログラム編集支援装置、当該装置をコンピュータ上で実現するためのコンピュータソフトウエア、当該装置を用いて実現される方法、並びに、当該装置を含むＰＬＣシステムの改良に関する。
【背景技術】
【０００２】
プログラマブルコントローラ（適宜、ＰＬＣと略す）は、ＦＡ（Factory Automation）制御システムにおいて広く使用されているシーケンス制御装置であり、ラダープログラムと呼ばれる専用プログラムに従って動作する。このため、ＰＬＣ内のプログラムを書き換えることによって、所望のシーケンス制御装置を実現することができる。ＰＬＣ用のプログラムは、通常、パーソナルコンピュータを利用したプログラム編集支援装置を用いてユーザが作成する。プログラム編集支援装置を用いて作成されたプログラムのソースコードは、当該プログラム編集支援装置において実行形式のオブジェクトコードへコンパイルされた後、通信ケーブルを介してＰＬＣへ転送（アップロード）される。
【０００３】
ＰＬＣ用のプログラムは、通常、デバッグや改良のためのバージョンアップが繰り返し行われている。つまり、プログラム編集支援装置上において繰り返し変更され、バージョンアップされた新たなプログラムとしてＰＬＣへ繰り返しアップロードされる。しかしながら、ＰＬＣへ古いバージョンのプログラムをアップロードするような場合もあり、プログラム編集支援装置とＰＬＣとの間でプログラムのバージョンが一致せず、どちらが最新バージョンであるのかがユーザ自身にも分からなくなってしまう場合があった。このため、ユーザは適切なバージョン管理を行っておく必要があり、この様なバージョン管理のためのユーザ負荷を軽減するために、従来から様々な提案が行われている（例えば、特許文献１〜特許文献４）。
【０００４】
特許文献１には、ＰＬＣ用のプログラムに関するものではないが、プログラムのバージョン管理を行うバージョン管理装置が記載されている。このバージョン情報は、ファイル名やバージョン数からなり、プログラムのインストール先である外部記憶装置内に格納されており、インストール元の外部記憶装置から新たなプログラムをインストールする場合に、両プログラムのバージョン情報を比較して警告表示が行われる。
【０００５】
特許文献２には、プログラムプロパティを含むプログラムを生成するプログラム編集支援装置が記載されている。このプログラムプロパティは、プログラム名称やプログラム作成日時であり、プログラムを比較する際、プログラムプロパティが比較される。
【０００６】
特許文献３には、シーケンサー用プログラムのオブジェクトコード内に管理情報を格納することができる計算機システムが記載されている。この管理情報は文字列からなり、オブジェクトコードを文字列情報として表示させることにより、当該オブジェクトコードに含まれる管理情報を文字列として確認できるようになっている。
【０００７】
特許文献４には、プログラムを格納する領域と、当該プログラムのプロパティを格納する領域を有するプログラムコントローラが記載されている。このプロパティは、プログラムの名称、バージョン、更新日時からなり、プログラム作成支援装置のディスプレイに表示される。
【０００８】
要するに、特許文献１〜４に記載された従来技術によれば、ＰＬＣ内にプログラムのバージョン情報を予め格納しておき、このバージョン情報をＰＬＣからプログラム編集支援装置へダウンロードすることによって、バージョン情報を画面表示したり、他のプログラムのバージョン情報と比較したりすることができる。
【０００９】
ところが、ＰＬＣの高速化、高機能化にともなって、ＰＬＣ用のプログラムも大型で複雑なものとなり、１つのプログラムの開発を複数の設計者が共同で行うというケースが増えているが、このようなケースでは、上述した従来技術によって十分なバージョン管理を行うことが難しくなってきた。つまり、従来技術では、１人の設計者がプログラムを開発していることを前提としていることから、１つのプログラムを複数人で開発する共同開発にそのまま利用することができないという問題があった。
【００１０】
大規模なプログラムを複数の設計者で開発する場合、プロジェクトと呼ばれる１つのプログラムを複数のモジュールに分割し、これらの各モジュールに設計者が割り当てられる。この場合、各設計者は、それぞれの端末装置において自らが担当しているモジュールのみを作成し、そのモジュールのみを共通のＰＬＣへそれぞれアップロードするという方法が採用される。
【００１１】
ここで、各モジュールが、他のモジュールから完全に独立して動作するものであるとすれば、各設計者は、自らが担当しているモジュール以外のモジュールを全く気にする必要はない。しかしながら、実際には、各モジュールに共通のグローバル変数を利用していたり、また、他のモジュール内の変数を参照していたりする場合が少なくない。従って、各モジュールは、完全に独立ではなく、最小限の連携を行いながら動作するものとならざるを得ない。
【００１２】
また、各モジュールは、プログラム編集支援装置内においてシミュレーションを行ってその動作を事前に確認した上で、ＰＬＣへアップロードされる。このシミュレーションを行うためには、他の設計者が担当しているモジュールも必要となるため、各設計者の端末装置内には、他の設計者が担当しているモジュールも格納されている。
【００１３】
このような開発環境下において、ある設計者Ａが、他の設計者Ｂの担当しているモジュールが先にＰＬＣへアップロードされていることに気づかずに、自らが担当しているモジュールをアップロードした場合、ＰＬＣ内にはシミュレーションが行われていないモジュールの組み合わせが格納された状態となる。このため、両モジュール間に不整合が生じていれば、ＰＬＣは正常に動作しなくなる。
【００１４】
また、ある設計者Ａがアップロードを行った際、誤って他の設計者Ｂが担当しているモジュールを上書きしてしまう可能性がある。この場合、他の設計者Ｂがアップロードしていた最新のモジュールが、古いモジュール又は全く別のモジュールによって上書きされれば、ＰＬＣは正常に動作しなくなってしまう。しかしながら、その原因を発見するのは容易ではなく、デバッグに時間がかかるという問題があった。
【００１５】
また、ある設計者Ａが、他の設計者Ｂが担当するモジュール内の記述であって、設計者Ａの担当するモジュールと連携する部分を変更しなければならない場合に、意図的に設計者Ｂのモジュールを上書きすることも考えられる。この様な場合、設計者Ｂがそのことに気づかず、その後にモジュールの更新を行ったとすれば、設計者Ａによる更新を元に戻してしまう結果となる。
【００１６】
つまり、プログラムを共同開発する場合、ＰＬＣ内のモジュールは、複数の設計者によって更新されるため、自分が担当するモジュールを自分自身で更新する場合と、他人が担当するモジュールを他人が更新する場合と、自分が担当するモジュールを他人が更新する場合がそれぞれ考えられ、これらを区別して把握することが必要となる。
【００１７】
しかしながら、上述した従来のバージョン管理方法は、ＰＬＣ内のプログラムと、端末装置内のプログラムとを比較し、両者の一致又は不一致を判別しているだけであった。このため、両者が一致しなかった場合、ＰＬＣ及び端末装置のどちらのプログラムが変更されたのかを区別することはできない。また、ＰＬＣ内のプログラムが更新されていた場合であれば、それが自分自身による更新の結果であるのか、あるいは、他人による更新の結果であるのかを区別することはできないという問題があった。
【特許文献１】特開平１０−２１０５８号公報
【特許文献２】特開平１１−３３８５１９号公報
【特許文献３】特開２００１−９２６４４号公報
【特許文献４】特開２００６−２６８４８５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は、上記の事情に鑑みてなされたものであり、複数のプログラム編集支援装置から書き込み可能なＰＬＣ内のプログラムについて、その最終更新者が自身であるのか、あるいは、他のプログラム編集支援装置であるのかを上記プログラム編集支援装置において判別可能にすることを目的とする。また、プログラム編集支援装置からＰＬＣへのプログラムの書き込みによって、他人が作成したＰＬＣ内のプログラムが不用意に上書きされるのを抑制することを目的とする。
【課題を解決するための手段】
【００１９】
第１の本発明によるプログラム編集支援装置は、プログラマブルコントローラ用のプログラムを保持するプログラム記憶手段と、ユーザ操作に基づいて上記プログラムを編集するプログラム編集手段と、上記プログラム編集手段により上記プログラムが編集された場合に、当該編集に固有の識別データを生成する識別データ生成手段と、上記プログラム及び上記識別データをプログラマブルコントローラへ書き込むＰＬＣデータ書込手段と、上記プログラマブルコントローラへ書き込まれる上記識別データを保持する第１識別データ記憶手段と、上記プログラマブルコントローラから識別データを取得するＰＬＣデータ取得手段と、上記プログラマブルコントローラから取得した識別データを第１識別データ記憶手段が保持する識別データと比較する第１比較手段と、上記第１比較手段の比較結果に基づいて表示を行う表示手段とを備えて構成される。
【００２０】
第２の本発明によるプログラム編集支援装置は、上記構成に加えて、上記ＰＬＣデータ取得手段が、上記プログラマブルコントローラからプログラム及び識別データを取得し、上記プログラム記憶手段が、上記プログラマブルコントローラから取得した上記プログラムを格納し、上記第１識別データ記憶手段が、上記プログラマブルコントローラから取得した上記プログラムが上記プログラム記憶手段に格納される場合に、上記プログラマブルコントローラから取得した上記識別データを格納するように構成される。
【００２１】
第３の本発明によるプログラム編集支援装置は、上記構成に加えて、上記ＰＬＣデータ取得手段が、ユーザが上記プログラム記憶手段に保持されているプログラムの上記プログラマブルコントローラへの書き込みを指示した場合に、当該プログラマブルコントローラから識別データを取得し、上記表示手段が、上記第１比較手段の比較結果に基づいて、上記プログラムの上記プログラマブルコントローラへの書き込み前に警告表示を行うように構成される。
【００２２】
第４の本発明によるプログラム編集支援装置は、上記構成に加えて、上記識別データ生成手段によって生成された最新の識別データを記憶する第２識別データ記憶手段と、上記第１及び第２識別データ記憶手段が保持する識別データを比較する第２比較手段とを備え、上記表示手段が、上記第１及び第２の比較手段の比較結果に基づいて表示を行うように構成される。
【００２３】
第５の本発明によるプログラム編集支援装置は、上記構成に加えて、上記プログラム編集手段は、上記モジュールを編集することができ、上記識別データ生成手段は、上記モジュールが編集された場合に、当該編集に固有の識別データを生成し、上記ＰＬＣデータ書込手段は、上記モジュール及び上記識別データを上記プログラマブルコントローラへ書き込み、上記第１比較手段は、同一のモジュールについて、上記プログラマブルコントローラから読み出された識別データを第１識別データ記憶手段が保持する識別データと比較し、上記第２比較手段は、同一のモジュールについて、第１及び第２識別データ記憶手段が保持する識別データを比較するように構成される。
【００２４】
第６の本発明によるプログラム編集支援装置は、上記構成に加えて、上記表示手段が、同一のモジュールに関する上記第１比較手段及び第２比較手段の比較結果を互いに対応づけ、かつ、同時に閲覧可能となるように表示するように構成される。
【００２５】
第７の本発明によるプログラム編集支援装置は、上記構成に加えて、上記表示手段が、上記プログラム記憶手段に保持されているプログラムを複製するプログラム複製手段を備え、上記プログラム複製手段が、プログラムを複製する際、上記第２識別データ記憶手段に保持されている当該プログラムの識別データも複製するように構成される。
【００２６】
第８の本発明によるコンピュータプログラムは、コンピュータをプログラム編集支援装置として機能させるためのコンピュータプログラムであって、プログラマブルコントローラ用の制御プログラムを保持するプログラム記憶手段と、ユーザ操作に基づいて上記制御プログラムを編集するプログラム編集手段と、上記プログラム編集手段により上記制御プログラムが編集された場合に、当該編集に固有の識別データを生成する識別データ生成手段と、上記制御プログラム及び上記識別データをプログラマブルコントローラへ書き込むＰＬＣデータ書込手段と、上記プログラマブルコントローラへ書き込まれる上記識別データを保持する識別データ記憶手段と、上記プログラマブルコントローラから識別データを取得するＰＬＣデータ取得手段と、上記プログラマブルコントローラから取得した識別データを識別データ記憶手段が保持する識別データと比較する比較手段とを備えたプログラム編集支援装置としてコンピュータを機能させるように構成される。
【００２７】
第９の本発明によるプログラム編集支援方法は、ユーザ操作に基づいて、プログラム記憶手段が保持するプログラマブルコントローラ用のプログラムを編集するプログラム編集ステップと、上記プログラム編集ステップにより上記プログラムが編集された場合に、当該編集に固有の識別データを生成する識別データ生成ステップと、上記プログラム及び上記識別データをプログラマブルコントローラへ書き込むＰＬＣデータ書込ステップと、上記プログラマブルコントローラへ書き込まれる上記識別データを識別データ記憶手段に格納する識別データ格納ステップと、上記プログラマブルコントローラから識別データを取得するＰＬＣデータ取得ステップと、上記プログラマブルコントローラから取得した識別データを識別データ記憶手段が保持する識別データと比較する比較ステップと、上記比較ステップの比較結果に基づいて表示を行う表示ステップとを備えて構成される。
【００２８】
第１０の本発明によるＰＬＣシステムは、プログラマブルコントローラ及びプログラム編集支援装置からなるＰＬＣシステムであって、上記プログラマブルコントローラが、プログラム及び識別データを保持する記憶手段を備えている。また、上記プログラム編集支援装置は、プログラマブルコントローラ用のプログラムを保持するプログラム記憶手段と、ユーザ操作に基づいて上記プログラムを編集するプログラム編集手段と、上記プログラム編集手段により上記プログラムが編集された場合に、当該編集に固有の識別データを生成する識別データ生成手段と、上記プログラム及び上記識別データをプログラマブルコントローラへ書き込むＰＬＣデータ書込手段と、上記プログラマブルコントローラへ書き込まれる上記識別データを保持する識別データ記憶手段と、上記プログラマブルコントローラから識別データを取得するＰＬＣデータ取得手段と、上記プログラマブルコントローラから取得した識別データを識別データ記憶手段が保持する識別データと比較する比較手段と、上記比較手段の比較結果に基づいて表示を行う表示手段とを備えて構成される。
【発明の効果】
【００２９】
本発明によれば、複数のプログラム編集支援装置から書き込み可能なＰＬＣ内のプログラムについて、その最終更新者が自分自身であるのか、あるいは、他のプログラム編集支援装置であるのかを各プログラム編集支援装置において判別することができる。また、プログラム編集支援装置からＰＬＣへのプログラムの書き込みによって、他人が作成したＰＬＣ内のプログラムが不用意に上書きされるのを抑制することができる。
【発明を実施するための最良の形態】
【００３０】
実施の形態１．
［システムの概略構成］
図１は、本発明の実施の形態１によるＰＬＣ（Programable Logic Controller）システムの概略構成の一例を示した図である。このシステムは、１つのＰＬＣ１、当該ＰＬＣ１に接続された複数のプログラム編集支援装置２、入力装置３及び出力装置４によって構成される。
【００３１】
ＰＬＣ１は、センサーなどの入力装置３と、モータなどの出力装置４が接続され、入力装置３からの検出信号に基づいて、出力装置４への制御信号を生成する小型コントローラであり、その動作は、ＰＬＣ１内に保持しているプログラムによって決定される。
【００３２】
プログラム編集支援装置２は、ユーザがＰＬＣ１用のプログラムを作成するための端末装置であり、専用の端末装置であってもよいが、通常は、パーソナルコンピュータに専用ソフトウエアをインストールすることによって実現される。ユーザは、このプログラム編集支援装置２上において、プログラムを作成し、作成されたプログラムのシミュレーションを行ってその動作を検証し、検証後のプログラムをコンパイルしてソースコードからオブジェクトコード（実行コード）へ変換する。この様にして生成されたプログラムのオブジェクトコードが、プログラム編集支援装置２からＰＬＣ１へアップロードされる。また、アップロードだけでなく、ＰＬＣ１内のプログラムをプログラム編集支援装置２へダウンロードして編集することもできる。
【００３３】
図示したＰＬＣシステムは、１つのプログラムを複数の設計者が共同で開発するためのものである。各プログラム編集支援装置２は、それぞれ異なる設計者が利用している端末装置であり、複数のプログラム編集支援装置２が、通信ケーブルを介して、１つのＰＬＣ１にネットワーク接続されている。従って、各設計者は、独自にプログラムの編集、検証、コンパイル及びアップロードをそれぞれ行うことができる。
【００３４】
なお、複数のプログラム編集支援装置２は、それぞれが異なるハードウエア上で実現されるものであってもよいし、同一のハードウエア上で実現されるものであってもよい。同一のハードウエア上において複数のプログラム編集支援装置２が実現される場合とは、例えば、複数の設計者が同一の端末装置を使用しているが、互いに異なるログイン名でログインして編集作業を行っており、編集対象となるデータはログイン名ごとに異なっているような場合である。
【００３５】
図２は、ＰＬＣ１用のプログラム５の概略について説明するための図である。本実施の形態では、１つのプログラム５、つまり、ＰＬＣ１内において同時に実行することができるプログラム５を「プロジェクト」と呼ぶことにする。ＰＬＣ１内には、複数のプロジェクトＰｊ１〜Ｐｊ３を保持することができるが、これらのプログラム５は選択的にしか実行することができず、ユーザは、いずれか１つのプロジェクトＰｊ１〜Ｐｊ３を実行対象としてプログラム実行前に指定しなければならない。同様にして、プログラム編集支援装置２内にも複数のプロジェクトＰｊ１〜Ｐｊ３を保持することができるが、編集、動作検証、コンパイル等は各プロジェクトＰｊ１〜Ｐｊ３ごとに行われる。
【００３６】
１つのプロジェクトＰｊ１は、１又は２以上のモジュールｍｏｄＡ〜ｍｏｄＤによって構成される。１つのプロジェクトＰｊ１を複数の設計者で共同開発する場合、プロジェクトＰｊ１を複数のモジュールｍｏｄＡ〜ｍｏｄＤに分割し、各モジュールｍｏｄＡ〜ｍｏｄＤに異なる設計者が割り当てられる。つまり、各モジュールｍｏｄＡ〜ｍｏｄＤは、図１に示された異なるプログラム編集支援装置２において、それぞれ作成され、共通のＰＬＣ１へアップロードされる。ただし、動作検証のためのシミュレーションを行うためには、他の設計者が担当しているモジュールも必要となるため、これらのモジュールは、シミュレーション実行前に、ＰＬＣ１からダウンロードし、あるいは、他のプログラム編集支援装置２から受信しておく。一方、全てのモジュールｍｏｄＡ〜ｍｏｄＤがアップロードされたＰＬＣ１は、予め指定されている実行順序に従って、これらのモジュールｍｏｄＡ〜ｍｏｄＤを順次に実行していく。
【００３７】
また、各モジュールｍｏｄＡ〜ｍｏｄＤには、識別データｉｄＡ〜ｉｄＤがそれぞれ含まれている。識別データｉｄＡ〜ｉｄＤは、モジュールの新規作成時に生成され、その後もモジュールが変更されるたびに更新されるデータであり、異なるモジュールｍｏｄＡ〜ｍｏｄＤには異なる識別データｉｄＡ〜ｉｄＤが格納されており、同じモジュールｍｏｄＡ〜ｍｏｄＤであっても、バージョンが異なれば、異なる識別データｉｄＡ〜ｉｄＤが格納されている。ただし、複製されたモジュールには、複製前のモジュールと同じ識別データが格納されている。つまり、識別データｉｄＡ〜ｉｄＤは、モジュールｍｏｄＡ〜ｍｏｄＤの編集に固有のデータである。
【００３８】
［プログラム編集支援装置２の詳細構成］
図３は、図１のプログラム編集支援装置２の一構成例を示したブロック図である。このプログラム編集支援装置２は、プログラム記憶部２０１、前回データ記憶部２０２、プログラム編集部２１、識別データ生成部２２、シミュレーション部２３、コンパイル部２４、データ出力部２５、データ入力部２６、通信Ｉ／Ｆ（Interface）部２７、プログラム照合部２８及び照合結果出力部２９により構成される。
【００３９】
プログラム記憶部２０１は、ＰＬＣ１用のプログラム５を記憶する記憶手段である。プログラム５は、複数の設計者で共同開発されるプログラムであり、複数のモジュールｍｏｄＡ〜ｍｏｄＤからなり、各モジュールｍｏｄＡ〜ｍｏｄＤ内には、識別データｉｄＡ〜ｉｄＤがそれぞれ格納されている。
【００４０】
このプログラム編集支援装置２を利用している設計者は、モジュールｍｏｄＡの作成を担当しているものとする。つまり、プログラム記憶部２０１内に保持されているモジュールｍｏｄＡ〜ｍｏｄＤのうち、モジュールｍｏｄＡのみが当該プログラム編集支援装置２内で作成されたモジュールであり、他のモジュールｍｏｄＢ〜ｍｏｄＤは、他のプログラム編集支援装置２において作成されたモジュールであり、ＰＬＣ１からダウンロードされたものである。
【００４１】
前回データ記憶部２０２は、識別データｉｄＡ〜ｉｄＤを記憶する記憶手段であり、プログラム５のアップロード時及びダウンロード時に更新される。当該プログラム編集支援装置２における編集対象はモジュールｍｏｄＡであるため、前回データ記憶部２０２内に保持されている識別データｉｄＡは、モジュールｍｏｄＡのＰＬＣ１へのアップロード時に更新され、その他の識別データｉｄＢ〜ｉｄＤは、モジュールｍｏｄＢ〜ｍｏｄＤのＰＬＣ１からのダウンロード時に更新される。従って、前回データ記憶部２０２には、ＰＬＣ１内に保持されていると推定される識別データｉｄＡ〜ｉｄＤが保持されており、他のプログラム編集支援装置２からＰＬＣ１へモジュールｍｏｄＡ〜ｍｏｄＤのアップロードが行われない限り、前回データ記憶部２０２内及びＰＬＣ１内に保持されている識別データｉｄＡ〜ｉｄＤは一致する。
【００４２】
プログラム編集部２１は、ユーザがプログラム５を新規に作成し、あるいは、既に作成されているプログラム５を変更するための手段である。本明細書では「プログラムの編集」をプログラムの新規作成及びその後の変更を含む語として使用する。プログラムの編集は、例えば、ユーザが画面表示を見ながら操作入力を行い、新たなデバイスシンボルを画面上に配置し、そのデバイス名などのパラメータを定義したり、あるいは、不要になった配置済みのデバイスシンボルを削除することによって行われる。また、デバイスシンボルについて置換、コピー又はペーストなどを行うこともできる。さらに、プログラムには、これらのデバイスシンボルから生成される命令コード以外に、ＰＬＣ内の各種パラメータを設定するための設定データも含まれており、これらの設定データを編集することもできる。ここでは、プログラム５が複数のモジュールｍｏｄＡ〜ｍｏｄＤで構成されているため、モジュールｍｏｄＡ〜ｍｏｄＤごとに編集が行われ、編集後のモジュールｍｏｄＡ〜ｍｏｄＤには、識別データｉｄＡ〜ｉｄＤ及び更新時刻データ（例えば更新日時）が加えられて、プログラム記憶部２０１へ書き込まれる。
【００４３】
識別データ生成部２２は、プログラム編集部２１による編集終了時に、編集後のプログラム５に基づいて、識別データを生成する。ここでは、プログラム編集部２１による編集対象がモジュールｍｏｄＡであるため、編集後のモジュールｍｏｄＡに基づいて、識別データｉｄＡを生成している。この識別データは、編集処理ごとに固有のデータとして生成される。例えば、予め定められたハッシュ関数を用いて、編集後のモジュールｍｏｄＡから求められるハッシュ値を識別データｉｄＡとして利用することができる。また、モジュールｍｏｄＡの編集が行われた日時や、編集を行った設計者の識別情報や、端末装置の識別情報などに基づいて識別データを生成することもできる。
【００４４】
なお、プログラム５又はモジュールｍｏｄＡ〜ｍｏｄＤを複製する場合には、識別データも含めて複製される。つまり、プログラム記憶部２０１内に保持されているモジュールを複製する場合、同じ識別データをもつ別のモジュールとして、プログラム記憶部２０１へ書き込まれる。
【００４５】
シミュレーション部２３は、プログラム記憶部２０１内に保持されているプログラム５のシミュレーションを行う。ユーザは、このシミュレーション結果を見て、プログラム５が所望の動作を行うものであることを確認する。このシミュレーションは、プログラム５が複数のモジュールｍｏｄＡ〜ｍｏｄＤで構成される場合であっても、モジュール単位ではなく、プログラム５単位で行われ、１つのプログラム５を構成している複数のモジュールｍｏｄＡ〜ｍｏｄＤ間の連携を含めた動作検証が行われる。
【００４６】
コンパイル部２４は、プログラム記憶部２０１に記憶されているプログラム５のソースコードをオブジェクトコードに変換する処理を行う。プログラム５が複数のモジュールｍｏｄＡ〜ｍｏｄＤで構成される場合、このコンパイル処理によって、モジュールｍｏｄＡ〜ｍｏｄＤごとのオブジェクトコードを生成することができる。なお、生成されたオブジェクトコード内には、ソースコードに含まれていた識別データと同じデータが格納されており、コンパイル処理によって識別データｉｄＡ〜ｉｄＤは変更されない。
【００４７】
データ出力部２５は、通信Ｉ／Ｆ部２７を介して、ＰＬＣ１へのプログラム５の書き込み（アップロード）を行っている。また、プログラム５のアップロード時には、当該プログラム５に含まれる識別データが前回データ記憶部２０２に書き込まれる。プログラム５が複数のモジュールｍｏｄＡ〜ｍｏｄＤで構成されている場合には、モジュールｍｏｄＡ〜ｍｏｄＤごとにアップロードすることができる。このプログラム編集支援装置２の場合、プログラム記憶部２０１からモジュールｍｏｄＡが読み出され、当該モジュールｍｏｄＡに含まれる識別データｉｄＡが前回データ記憶部２０２に書き込まれ、その後に、当該識別データを含むモジュールｍｏｄＡがＰＬＣ１へアップロードされる。
【００４８】
データ入力部２６は、通信Ｉ／Ｆ部２７を介して、ＰＬＣ１からのプログラム５の取得（ダウンロード）を行っている。また、プログラム５のダウンロード時には、ダウンロードしたプログラム５に含まれる識別データが前回データ記憶部２０２にも書き込まれる。プログラム５が複数のモジュールｍｏｄＡ〜ｍｏｄＤで構成されている場合には、モジュールごとにダウンロードすることができる。このプログラム編集支援装置２の場合、他のプログラム編集支援装置２で生成され、ＰＬＣ１へアップロードされたモジュールｍｏｄＢ〜ｍｏｄＤが、ＰＬＣ１からダウンロードされる。ダウンロードされたモジュールｍｏｄＢ〜ｍｏｄＤは、プログラム記憶部２０１へ書き込まれるとともに、当該モジュールｍｏｄＢ〜ｍｏｄＤから識別データｉｄＢ〜ｉｄＤが抽出され、前回データ記憶部２０２に書き込まれる。
【００４９】
ＰＬＣ１に対するアップロード及びダウンロード時に前回データ記憶部２０２を更新することによって、前回データ記憶部２０２内には、常に、ＰＬＣ１に最後にアクセスした時点における識別データが保持されている。つまり、モジュールｍｏｄＡについては、最後のアップロード時における識別データｉｄＡが保持されており、モジュールｍｏｄＢ〜ｍｏｄＤについては、最後のダウンロード時における識別データｉｄＢ〜ｉｄＤが保持されている。
【００５０】
また、データ入力部２６は、ＰＬＣ１からプログラム５又はモジュールｍｏｄＡ〜ｍｏｄＤをダウンロードすることなく、識別データｉｄＡ〜ｉｄＤのみを取得することもできる。この様にしてＰＬＣ１からダウンロードされた識別データｉｄＡ〜ｉｄＤは、プログラム照合部２８へ出力される。
【００５１】
プログラム照合部２８は、注目しているプログラム５について最後のアップロード又はダウンロードが行われた後に、当該プログラム編集支援装置２内又はＰＬＣ１内のいずれかで当該プログラム５が更新されたか否かを判別する。この判別処理は、プログラム記憶部２０１内、前回データ記憶部２０２内及びＰＬＣ１内に保持されている識別データを比較することによって行われる。ここでは、ユーザによってプロジェクトＰｊ１が予め指定されており、当該プロジェクトＰｊ１に属する各モジュールｍｏｄＡ〜ｍｏｄＤの識別情報ｉｄＡ〜ｉｄＤについて比較が行われる。
【００５２】
ＰＬＣ１内のモジュールｍｏｄＡ〜ｍｏｄＤを他人が更新したか否かは、前回データ記憶部２０２内に保持されている識別データｉｄＡ〜ｉｄＤと、ＰＬＣ１からダウンロードした識別データｉｄＡ〜ｉｄＤとを比較することによって判別できる。両者が一致しなければ、前回データ記憶部２０２の更新後に、ＰＬＣ１内のモジュールｍｏｄＡ〜ｍｏｄＤが、他のプログラム編集支援装置２からのアップロードによって更新されたと判別することができる。
【００５３】
また、プログラム記憶部２０１内のモジュールｍｏｄＡ〜ｍｏｄＤが編集されたか否かは、前回データ記憶部２０２内の識別データｉｄＡ〜ｉｄＤと、プログラム記憶部２０１内の識別データｉｄＡ〜ｉｄＤとを比較することによって判別できる。両者が一致しなければ、前回データ記憶部２０２の更新後に、ＰＬＣ１内のモジュールｍｏｄＡ〜ｍｏｄＤが、プログラム編集部２１によって更新されたと判別することができる。
【００５４】
照合結果出力部２９は、プログラム照合部２８の照合結果に基づいて出力動作を行っている。例えば、ユーザがプログラム照合処理を指示した場合であれば、上記照合結果が画面表示される。また、ユーザがモジュールのアップロードを指示した場合であって、当該アップロードによって更新されるＰＬＣ１内のモジュールが他のプログラム編集支援装置２によって先に更新されていた場合には、警告メッセージを画面表示し、ユーザに確認のための操作入力を行わせたり、あるいは、ダウンロード処理を禁止する。
【００５５】
［ＰＬＣ１の詳細構成］
図４は、図１のＰＬＣ１の一構成例を示したブロック図である。このＰＬＣ１は、通信Ｉ／Ｆ部１１、データ入力部１２、データ出力部１３、プログラム記憶部１４、プログラム実行部１５、入力装置Ｉ／Ｆ部１６及び出力装置Ｉ／Ｆ部１７により構成される。
【００５６】
プログラム記憶部１４は、プログラム５を記憶する記憶手段であり、プログラム編集支援装置２からアップロードされたプログラム５が保持されている。このプログラム５は、プログラム編集支援装置２のプログラム記憶部２０１と同様、複数のモジュールｍｏｄＡ〜ｍｏｄＤからなり、各モジュールｍｏｄＡ〜ｍｏｄＤ内には、識別データｉｄＡ〜ｉｄＤ及び更新時刻データがそれぞれ格納されている。
【００５７】
通信Ｉ／Ｆ部１１は、有線又は無線の通信回線を介して、各プログラム編集支援装置２と接続され、双方向のデータ通信を行っている。データ入力部１２は、プログラム編集支援装置２からアップロードされたモジュールｍｏｄＡ〜ｍｏｄＤをプログラム記憶部１４へ書き込む。一方、データ出力部１３は、いずれかのプログラム編集支援装置２からモジュールｍｏｄＡ〜ｍｏｄＤ又は識別データｉｄＡ〜ｉｄＤのダウンロード要求があった場合に、要求されたデータをプログラム記憶部１４から読み出し、要求元のプログラム編集支援装置２へ送信する。
【００５８】
プログラム実行部１５は、プログラム記憶部１４内のプログラム５に基づいて制御を行うプロセッサである。例えば、入力装置Ｉ／Ｆ部１６を介して、入力装置３から入力される検出信号に基づいて制御信号を生成し、出力装置Ｉ／Ｆ部１７を介して、上記制御信号を出力装置４へ出力している。
【００５９】
［プログラム編集支援装置２の動作］
図５は、本発明の実施の形態１によるプログラム照合処理を簡略化して示した説明図である。プログラム編集支援装置２内のプログラム記憶部２０１には、複数のモジュールＡ〜Ｄにより構成されるプログラム５が格納されている。同様にして、ＰＬＣ１内のプログラム記憶部１４にも、複数のモジュールＡ〜Ｄにより構成されるプログラム５が格納されている。これらの各モジュール内には、識別データがそれぞれ格納されている。また、  プログラム編集支援装置２内の前回データ記憶部２０２には、プログラム記憶部２０１及びプログラム記憶部１４間における最後のアップロード又はダウンロード時における識別データが格納されている。
【００６０】
従って、プログラム記憶部１４及び前回データ記憶部２０２内の識別データを対応するモジュールごとに比較すれば、ＰＬＣ１への最後のアクセス後に、他のプログラム編集支援装置２によってＰＬＣ１内のモジュールが更新されたか否かを判別することができる。また、プログラム記憶部２０１及び前回データ記憶部２０２内の識別データを対応するモジュールごとに比較すれば、ＰＬＣ１への最後のアクセス後に、プログラム編集支援装置２内のモジュールが編集されたか否かを判別することができる。
【００６１】
図６のステップＳ１０１〜Ｓ１０３は、図３のプログラム編集支援装置２の動作の一例を示したフローチャートであり、モジュールのアップロード時におけるデータ出力部２５の動作が示されている。
【００６２】
モジュールｍｏｄＡをアップロードする場合、モジュールｍｏｄＡが、転送対象としてユーザによって指定され、プログラム記憶部２０１から読み出される（ステップＳ１０１）。データ出力部２５は、読み出されたモジュールｍｏｄＡから識別データｉｄＡを抽出し、前回データ記憶部２０２内の識別データｉｄＡを更新する（ステップＳ１０２）。この前回データ記憶部２０２の更新後に、上記モジュールｍｏｄＡは、通信Ｉ／Ｆ部２７からＰＬＣ１へ送信される（ステップＳ１０３）。
【００６３】
図７のステップＳ２０１〜Ｓ２０４は、図３のプログラム編集支援装置２の動作の一例を示したフローチャートであり、モジュールのダウンロード時におけるデータ入力部２６の動作が示されている。
【００６４】
モジュールｍｏｄＢ〜ｍｏｄＤをダウンロードする場合、まずＰＬＣ１へダウンロード要求を送信した後（ステップＳ２０１）、ＰＬＣ１からモジュールｍｏｄＢ〜ｍｏｄＤを受信する（ステップＳ２０２）。データ入力部２６は、受信したモジュールｍｏｄＢ〜ｍｏｄＤから識別データｉｄＢ〜ｉｄＤを抽出し、前回データ記憶部２０２内の識別データｉｄＢ〜ｉｄＤを更新する（ステップＳ２０３）。この前回データ記憶部２０２の更新後に、上記モジュールｍｏｄＢ〜ｍｏｄＤは、プログラム記憶部２０１に書き込まれる（ステップＳ２０４）。
【００６５】
図８のステップＳ３０１〜Ｓ３０６は、図３のプログラム編集支援装置２の動作の一例を示したフローチャートであり、プログラム照合処理が示されている。このプログラム照合処理は、プログラム編集支援装置２において、ユーザがプログラム照合を指示した場合に、プログラム照合部２８によって実行される。
【００６６】
ユーザがプロジェクトＰｊ１を指定してプログラム照合を指示すると、プログラム照合部２８は、当該プロジェクトＰｊ１に属する全てのモジュールｍｏｄＡ〜ｍｏｄＤについて、その識別データｉｄＡ〜ｉｄＤ及び更新時刻データをＰＬＣ１からダウンロードする（ステップＳ３０１）。このとき、モジュールｍｏｄＡ〜ｍｏｄＤ自体をダウンロードしてもよいが、プログラム照合に必要となる識別データｉｄＡ〜ｉｄＤ及び更新時刻データのみをダウンロードすれば、ダウンロード時間を大幅に短縮することができる。
【００６７】
次に、前回データ記憶部２０２から識別データｉｄＡ〜ｉｄＤが読み出され（ステップＳ３０２）、ダウンロードされた識別データｉｄＡ〜ｉｄＤとの比較が行われる（ステップＳ３０３）。つまり、照合対象となる各モジュールｍｏｄＡ〜ｍｏｄＤごとに、前回データ記憶部２０２内に保持されている識別データと、ＰＬＣ１のプログラム記憶部１４内に保持されている識別データとの比較が行われる。
【００６８】
同様にして、プログラム記憶部２０１から識別データｉｄＡ〜ｉｄＤ及び更新時刻データが読み出され（ステップＳ３０４）、ダウンロードされた識別データｉｄＡ〜ｉｄＤとの比較が行われる（ステップＳ３０５）。つまり、照合対象となる各モジュールｍｏｄＡ〜ｍｏｄＤごとに、プログラム編集支援装置２のプログラムデータ記憶部２０１内に保持されている識別データと、ＰＬＣ１のプログラム記憶部１４内に保持されている識別データとの比較が行われる。
【００６９】
照合結果出力部２９は、ステップＳ３０３及びＳ３０５の比較結果を画面表示してユーザに知らせる（ステップＳ３０６）。例えば、ステップＳ３０３及びＳ３０５における各比較結果が、モジュールｍｏｄＡ〜ｍｏｄＤごとに対応づけられて画面表示される。
【００７０】
なお、このプログラム照合処理では、プログラム編集支援装置２及びＰＬＣ１間で、識別データのダウンロードが行われているが、モジュールのアップロード及びダウンロードは行われていない。このため、前回データ記憶部２０２は更新されない。
【００７１】
図９は、プログラム照合部２８による比較結果についての説明図である。プログラム照合部２８では、プログラム照合処理の結果として、モジュールごとに２つの比較結果が得られる（図８のステップＳ３０３及びＳ３０５）。従って、これらの比較結果を組み合わせることによって、図示した４通りの照合結果（ａ）〜（ｄ）が得られる。
【００７２】
照合結果（ａ）は、注目しているモジュールｍｏｄＡに関する識別データの比較結果として、ステップＳ３０３及びＳ３０５のいずれにおいても一致するという結果が出た場合である。つまり、モジュールｍｏｄＡの識別データとして、プログラム記憶部２０１、前回データ記憶部２０２及びプログラム記憶部１４のいずれにも同じデータが保持されていた場合である。この場合、モジュールｍｏｄＡに関する最後のアクセス（アップロード又はダウンロード）後に、ＰＬＣ１内のモジュールｍｏｄＡは他人によって更新されておらず、また、当該プログラム編集支援装置２内のモジュールｍｏｄＡも編集されていないことがわかる。
【００７３】
照合結果（ｂ）は、注目しているモジュールｍｏｄＡに関する識別データの比較結果として、ステップＳ３０３では一致するという結果が出る一方、ステップＳ３０５では一致しないという結果が出た場合である。この場合、モジュールｍｏｄＡに関する最後のアクセス（アップロード又はダウンロード）後に、ＰＬＣ１内のモジュールｍｏｄＡは他人によって更新されていないが、当該プログラム編集支援装置２内のモジュールｍｏｄＡは編集されていることがわかる。
【００７４】
照合結果（ｃ）は、注目しているモジュールｍｏｄＡに関する識別データの比較結果として、ステップＳ３０３では一致しないという結果が出る一方、ステップＳ３０５では一致するという結果が出た場合である。この場合、モジュールｍｏｄＡに関する最後のアクセス（アップロード又はダウンロード）後に、ＰＬＣ１内のモジュールｍｏｄＡが他人によって更新されているが、当該プログラム編集支援装置２内のモジュールｍｏｄＡは編集されていないことがわかる。
【００７５】
照合結果（ｄ）は、注目しているモジュールｍｏｄＡに関する識別データの比較結果として、ステップＳ３０３及びＳ３０５のいずれにおいても一致しないという結果が出た場合である。この場合、モジュールｍｏｄＡに関する最後のアクセス（アップロード又はダウンロード）後に、ＰＬＣ１内のモジュールｍｏｄＡが他人によって更新されており、当該プログラム編集支援装置２内のモジュールｍｏｄＡも編集されていることがわかる。
【００７６】
図１０は、照合結果出力部２９によって表示されるＰＬＣ照合／同期画面６の一例を示した図である。ユーザは、いずれかのプロジェクトを指定した後に、ＰＬＣ照合／同期画面６を表示させることができる。このＰＬＣ照合／同期画面６上には、照合ボタン６１、ＰＬＣ書込ボタン６２、ＰＬＣ読出ボタン６３及び照合結果表示エリア６４が設けられている。これらのボタン６１〜６３は、マウスなどのポインティング入力手段を用いて操作することができ、ユーザは、プログラム照合処理、アップロード処理又はダウンロード処理を指示することができる。
【００７７】
ユーザが照合ボタン６１を操作すれば、図８に示したプログラム照合処理が実行され、その照合結果が照合結果表示エリア６４に表示される。図示した照合結果表示エリア６４内には、指定されたプロジェクトに属するモジュールＡ〜Ｄが異なる行にそれぞれ表示される例が示されている。
【００７８】
各行の左側のエリアは、当該プログラム編集支援装置２のプログラム記憶部２０１内に保持されているモジュール名と、その更新時刻データが表示されるエディタ表示欄６４１である。同様にして、各行の右側のエリアは、ＰＬＣ１のプログラム記憶部１４内に保持されているモジュール名と、その更新時刻データが表示されるＰＬＣ表示欄６４３である。
【００７９】
各行の中央のエリアは、プログラム照合部２８による照合結果を文字で表示する照合結果表示欄６４２である。ステップＳ３０３及びＳ３０５による照合結果が、ともに一致であったモジュールについては、照合結果表示欄６４２に「ＯＫ」が表示される。一方、いずれかが不一致であったモジュールについては、照合結果表示欄６４２には何も表示されず、エディタ表示欄６４１又はＰＬＣ表示欄６４３内の当該モジュールがハイライト（強調）表示される。つまり、ステップＳ３０３で不一致であった場合には、ＰＬＣ表示欄６４３内の当該モジュールがハイライト表示６６となり、ステップＳ３０５で不一致であった場合には、エディタ表示欄６４１内の当該モジュールがハイライト表示６６となる。この様にして、ステップＳ３０３及びＳ３０５の比較結果をモジュールごとに対応づけて表示している。
【００８０】
チェックボックス６５は、アップロード又はダウンロードの対象となるモジュールをユーザが指定するためのチェックボックスであり、各行の左端に設けられている。ユーザは、このチェックボックス６５をクリック操作し、アップロード又はダウンロードするモジュールを選択する。
【００８１】
ＰＬＣ書込ボタン６２は、ＰＬＣ１へのアップロードを指示するための操作ボタンである。ユーザがＰＬＣ書込ボタン６２を操作すれば、図６に示したアップロード処理が実行される。アップロードされるモジュールは、チェックボックス６５のユーザ操作によって選択されたモジュールである。
【００８２】
ＰＬＣ読出ボタン６３は、ＰＬＣ１からのダウンロードを指示するための操作ボタンである。ユーザがＰＬＣ読出ボタン６３を操作すれば、図７に示したダウンロード処理が実行される。ダウンロードされるモジュールは、チェックボックス６５のユーザ操作によって選択されたモジュールである。
【００８３】
図１０に示された各モジュールＡ〜Ｄの照合結果の例について説明する。プログラム編集支援装置２内のモジュールＡは編集済みであるが、この編集はＰＬＣ１内のモジュールＡには反映されておらず、モジュールＡをＰＬＣ１へアップロードしておく必要があることがわかる。また、ＰＬＣ１内のモジュールＡは他人によって更新されておらず、上記アップロードは安全に行うことができる。
【００８４】
プログラム編集支援装置２内のモジュールＢは編集されていないが、ＰＬＣ１内のモジュールＢは、他のプログラム編集支援装置２によって更新されている。このため、シミュレーションを正しく行うためには、モジュールＢをＰＬＣ１からダウンロードしておく必要があることがわかる。
【００８５】
モジュールＣについては「ＯＫ」が表示されており、プログラム編集支援装置２内及びＰＬＣ１内のモジュールが一致していることが示されている。この場合、モジュールＣについてはアップロード及びダウンロードのいずれも行う必要がないことがわかる。
【００８６】
プログラム編集支援装置２内のモジュールＤは編集済みであるが、この編集はＰＬＣ１内のモジュールＤには反映されていない。一方、ＰＬＣ１内のモジュールＤは他のプログラム編集支援装置２によって先に更新されている。この場合、モジュールＤのＰＬＣ１へのアップロードは、他人が先に更新したＰＬＣ１内のモジュールＤを上書きすることになるため、慎重に行わなければならないことがわかる。
【００８７】
本実施の形態によれば、プログラム照合処理によって、プログラム５の最後のアップロード又はダウンロード後に、プログラム編集支援装置２内の当該プログラムが編集されたか否かを判別することができる。また、プログラム５の最後のアップロード又はダウンロード後に、ＰＬＣ１内の当該プログラムが更新されたか否かを判別することができる。従って、ＰＬＣ１用のプログラム５を複数の設計者が共同で開発している場合に、自分自身によるプログラム５の変更と、他人によるプログラム５の変更とを区別して適切なバージョン管理を行うことができ、開発効率を向上させることができる。
【００８８】
実施の形態２．
実施の形態１では、プログラム照合処理を行って照合結果を表示するプログラム編集支援装置２の例について説明した。これに対し、実施の形態２では、プログラム５のアップロード時に、プログラム照合結果に基づいて警告表示を行うプログラム編集支援装置２の動作について説明する。なお、本実施の形態では、実施の形態１との相違点を中心に説明し、その他の点については実施の形態１及び２と同様であるものとする。
【００８９】
図１１のステップＳ４０１〜Ｓ４０９は、本発明の実施の形態２によるプログラム編集支援装置２の動作の一例を示したフローチャートであり、モジュールのアップロード処理の例が示されている。このアップロード処理は、図１０のＰＬＣ照合／同期画面６において、いずれかのモジュールが選択された後にＰＬＣ書込ボタン６２が操作された場合に実行される。なお、２以上のモジュールが選択されている場合には、各モジュールごとに実行される。
【００９０】
ステップＳ４０１〜Ｓ４０３では、アップロード対象に指定されたモジュールについて、図８のプログラム照合処理の一部（Ｓ３０１〜Ｓ３０３）と同様の処理が行われる。すなわち、指定されたモジュールの識別データが、ＰＬＣ１からダウンロードされるとともに（ステップＳ４０１）、これに対応する識別データが、前回データ記憶部２０２から読み出され（ステップＳ４０１）、これらの識別データが比較される（ステップＳ４０３）。
【００９１】
この結果、識別データが一致していれば、指定されたモジュールがＰＬＣ１へアップロードされる（ステップＳ４０７〜Ｓ４０９）。このアップロード処理は、図６のアップロード処理（Ｓ１０１〜Ｓ１０３）と同様である。
【００９２】
一方、ステップＳ４０３における比較の結果、識別データが一致していなかった場合には、画面上に警告メッセージが表示される（ステップＳ４０４，Ｓ４０５）。例えば「他人による更新済みモジュールに上書きしますか？」と表示され、安全なアップロードではないことをユーザに知らせて特段の注意を払うように促す。その後に、ユーザが、アップロードを了承する操作を行えば、アップロード処理（ステップＳ４０７〜Ｓ４０９）が行われ、アップロードを中止する操作を行えば、アップロード処理は行われない。
【００９３】
図１２のステップＳ４０１〜Ｓ４０９は、モジュールのアップロード処理の他の例を示したフローチャートである。このフローチャートを図１１と比較すれば、ユーザの意思確認のためのステップＳ４０６が省略され、ステップＳ４０５からステップＳ４０７へ遷移することができない点で異なる。つまり、アップロードが安全でない場合には、ユーザの意思にかかわらずアップロード処理が禁止されている。従って、他人が先に更新したＰＬＣ１内のモジュールを更新しようとすれば、そのモジュールを一旦ダウンロードしなければならない。
【００９４】
本実施の形態によれば、プログラム編集支援装置２からＰＬＣ１へプログラム５をアップロードする際、アップロード前にプログラム照合を行って、ＰＬＣ１内のプログラムが他人によって先に更新されていれば警告表示が行われる。従って、複数の設計者がプログラムを共同開発している場合、ＰＬＣ１内のプログラムが不用意に上書きされるのを防止することができ、開発効率を向上させることができる。
【００９５】
実施の形態３．
実施の形態１では、１つのＰＬＣ１に対し、複数のプログラム編集支援装置２が接続され、各プログラム編集支援装置２を用いて、同じＰＬＣ１のプログラム５を共同で開発するＰＬＣシステムの例について説明した。これに対し、本実施の形態では、複数のプログラム編集支援装置２と、複数のＰＬＣ１ａ〜１ｃとが互いに接続されたＰＬＣシステムの場合について説明する。なお、本実施の形態では、実施の形態１及び２との相違点を中心に説明し、その他の点については実施の形態１と同様であるものとする。
【００９６】
図１３は、本発明の実施の形態３によるＰＬＣシステムの概略構成の一例を示した図である。このＰＬＣシステムは、複数のＰＬＣ１ａ〜１ｃと、複数のプログラム編集支援装置２ａ〜２ｄによって構成される。なお、図１に示された入力装置３及び出力装置４は省略している。
【００９７】
各ＰＬＣ１ａ〜１ｃは、いずれも同じプログラム５を内蔵し、同じ制御動作を行っている。また、このプログラム５は、複数のプログラム編集支援装置２ａ〜２ｄを用いて、複数の設計者によって共同開発されている。つまり、実施の形態１の場合と同様、プログラム５は複数のモジュールからなり、各モジュールが、プログラム編集支援装置２ａ〜２ｄにおいて作成されている。ただし、作成されたモジュールが１つのプログラム編集支援装置から全てのＰＬＣ１ａ〜１ｃへアップロードされる点において、実施の形態１の場合とは異なっている。
【００９８】
図１４は、本発明の実施の形態３によるプログラム照合処理を簡略化して示した説明図である。この図では、説明の都合上、照合対象となっている１種類のモジュールのみについて識別データが表示されている。プログラム記憶部２０１及び前回データ記憶部２０２間における識別データの比較は、図８のステップＳ３０２、３０５及びＳ３０６（実施の形態１）と同様である。
【００９９】
一方、ＰＬＣ１ａ〜１ｃ及び前回データ記憶部２０２間における識別データの比較は、前回データ記憶部２０２から読み出された同じ識別データを各ＰＬＣ１ａ〜１ｃ内の識別データと順次に比較することによって行われる。つまり、図８のステップＳ３０１及びＳ３０３が、ＰＬＣ１ａ〜１ｃの数だけ繰り返され、ＰＬＣ１ａ〜１ｃごとの比較結果が得られる。そして、いずれかのＰＬＣ１ａ〜１ｃとの比較において、不一致という結果が得られた場合には、当該モジュールは、他人によって先に更新されたモジュールであると判断され、図１０のＰＬＣ表示欄６４３にハイライト６６が表示される。なお、この様な表示に代えて、照合結果として、ＰＬＣ１ａ〜１ｃごとの比較結果をそれぞれ表示してもよい。
【０１００】
実施の形態４．
実施の形態３では、プログラム編集支援装置２ａ〜２ｄが、前回データ記憶部２０２内に複数のＰＬＣ１ａ〜１ｃに共通の識別データを保持している例について説明した。これに対し、本実施の形態では、プログラム編集支援装置２が、前回データ記憶部２０２内に、複数のＰＬＣ１ａ〜１ｃごとに識別データを保持している場合について説明する。なお、本実施の形態では、実施の形態１〜３との相違点を中心に説明し、その他の点については実施の形態１〜３と同様であるものとする。
【０１０１】
図１５は、本発明の実施の形態４によるプログラム照合処理を簡略化して示した説明図である。この図では、説明の都合上、照合対象となっている１種類のモジュールのみについて識別データが表示されいている。
【０１０２】
前回データ記憶部２０２内には、同じモジュールについて、各ＰＬＣ１ａ〜１ｃごとの識別データが記憶されている。これらの識別データは、それぞれが対応するＰＬＣ１ａ〜１ｃへの最後のアップロード又はダウンロード時に更新されている。従って、同じモジュールの識別データであっても、各ＰＬＣ１ａ〜１ｃ内に保持されている当該モジュールのバージョンが異なっていれば、異なる識別データとなる。
【０１０３】
プログラム記憶部２０１及び前回データ記憶部２０２間における識別データの比較は、プログラム記憶部２０１から読み出された同じ識別データを前回データ記憶部２０２から読み出されたＰＬＣ１ａ〜１ｃごとの識別データと順次に比較することによって行われる。つまり、図８のステップＳ３０２及びＳ３０５が、ＰＬＣ１ａ〜１ｃの数だけ繰り返され、ＰＬＣ１ａ〜１ｃごとの比較結果が得られる。そして、いずれかの比較において、不一致という結果が得られた場合には、当該モジュールは、いずれかのＰＬＣ１ａ〜１ｃとの関係において、アップロード後に編集されたモジュールであると判断され、図１０のエディタ表示欄６４１にハイライト６６が表示される。なお、この様な表示に代えて、照合結果として、ＰＬＣ１ａ〜１ｃごとの比較結果をそれぞれ表示してもよい。
【０１０４】
一方、ＰＬＣ１ａ〜１ｃ及び前回データ記憶部２０２間における識別データの比較は、各ＰＬＣ１ａ〜１ｃからダウンロードされた識別データが、当該ＰＬＣ１ａ〜１ｃに対応づけられた前回データ記憶部２０２内の識別データと順次に比較することによって行われる。つまり、図８のステップＳ３０１〜Ｓ３０３が、ＰＬＣ１ａ〜１ｃの数だけ繰り返される。そして、いずれかのＰＬＣ１ａ〜１ｃとの比較において、不一致という結果が得られた場合には、当該モジュールは、他人によって先に更新されたモジュールであると判断され、図１０のＰＬＣ表示欄６４３にハイライト６６が表示される。なお、この様な表示に代えて、照合結果として、ＰＬＣ１ａ〜１ｃごとの比較結果をそれぞれ表示してもよい。
【０１０５】
なお、上記の各実施の形態では、主として、プログラム５が複数のモジュールにより構成される場合の例について説明したが、本発明は、このような場合には限定されない。すなわち、モジュールに分割されていないプログラム５（１つのモジュールで構成されるプログラム）についても本発明を適用することができる。
【０１０６】
また、上記の各実施の形態では、プログラム編集支援装置２及びＰＬＣ１内において、識別データがモジュール内に格納されている場合の例について説明したが、本発明は、このような場合には限定されない。すなわち、モジュールと、その識別データとが対応づけて保持されていればよく、識別データがモジュール内に格納されている必要は必ずしもない。
【図面の簡単な説明】
【０１０７】
【図１】本発明の実施の形態１によるＰＬＣシステムの概略構成の一例を示した図である。
【図２】ＰＬＣ用プログラム５の概略について説明するための図である。
【図３】図１のプログラム編集支援装置２の一構成例を示したブロック図である。
【図４】図１のＰＬＣ１の一構成例を示したブロック図である。
【図５】本発明の実施の形態１によるプログラム照合処理を簡略化して示した説明図である。
【図６】モジュールのアップロード時におけるデータ出力部２５の動作を示したフローチャートである。
【図７】モジュールのダウンロード時におけるデータ入力部２６の動作を示したフローチャートである。
【図８】プログラム照合処理を示したフローチャートである。
【図９】プログラム照合部２８による比較結果についての説明図である。
【図１０】照合結果出力部２９によって表示されるＰＬＣ照合／同期画面６の一例を示した図である。
【図１１】モジュールのアップロード処理の一例をを示したフローチャートである（実施の形態２）。
【図１２】モジュールのアップロード処理の他の例を示したフローチャートである。
【図１３】本発明の実施の形態３によるＰＬＣシステムの概略構成の一例を示した図である。
【図１４】プログラム照合処理を簡略化して示した説明図である。
【図１５】プログラム照合処理を簡略化して示した説明図である（実施の形態４）。
【符号の説明】
【０１０８】
ｉｄＡ〜ｉｄＤ  識別データ
ｍｏｄＡ〜ｍｏｄＤ  モジュール
Ｐｊ１〜Ｐｊ３  プロジェクト
１，１ａ〜１ｃ  ＰＬＣ
１１  通信Ｉ／Ｆ部
１２  データ入力部
１３  データ出力部
１４  プログラム記憶部
１５  プログラム実行部
２，２ａ〜２ｄ  プログラム編集支援装置
２０１  プログラム記憶部
２０２  前回データ記憶部
２１  プログラム編集部
２２  識別データ生成部
２３  シミュレーション部
２４  コンパイル部
２５  データ出力部
２６  データ入力部
２７  通信Ｉ／Ｆ部
２８  プログラム照合部
２９  照合結果出力部
５  プログラム
６  ＰＬＣ照合／同期画面
６１  照合ボタン
６２  書込ボタン
６３  読出ボタン
６４  照合結果表示エリア
６４１  エディタ表示欄
６４２  照合結果表示欄
６４３  ＰＬＣ表示欄
６５  チェックボックス
６６  ハイライト表示
【図１】
2008282362.tif 000003
【図２】
2008282362.tif 000004
【図３】
2008282362.tif 000005
【図４】
2008282362.tif 000006
【図５】
2008282362.tif 000007
【図６】
2008282362.tif 000008
【図７】
2008282362.tif 000009
【図８】
2008282362.tif 000010
【図９】
2008282362.tif 000011
【図１０】
2008282362.tif 000012
【図１１】
2008282362.tif 000013
【図１２】
2008282362.tif 000014
【図１３】
2008282362.tif 000015
【図１４】
2008282362.tif 000016
【図１５】
2008282362.tif 000017