(57)【特許請求の範囲】
【請求項１】
機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置と、認証サーバとを備える制御システムにおいて、
前記プログラム送信装置は、
前記制御装置を識別する機器識別子を取得する送信側取得部と、
前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する送信側通信部とを備え、
前記認証サーバは、
前記送信側通信部から前記編集用鍵と前記機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子と対応付けて記憶装置に記憶し、
前記制御装置は、
前記送信側通信部により送信された前記実行用鍵と前記暗号化実行用プログラムとを受信し、受信した前記実行用鍵と前記暗号化実行用プログラムとに基づいて前記機器の制御を実行する
ことを特徴とする制御システム。
【請求項２】
前記プログラム送信装置は、
ユーザから前記ユーザの認証に用いる認証情報を受け付ける送信側受付部を備え、
前記送信側通信部は、
前記送信側受付部が受け付けた前記認証情報を前記認証サーバに送信し、
前記認証サーバは、
前記送信側通信部から送信された前記認証情報を受信し、受信した前記認証情報に基づいて前記プログラム送信装置に対するアクセスの許否を処理装置により判定し、前記プログラム送信装置に対するアクセスを許可と判定した場合に認証許可情報を前記プログラム送信装置に送信する認証部を備え、
前記プログラム送信装置は、
前記認証サーバの前記認証部から前記認証許可情報を受信した場合に、前記暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムと前記実行用鍵とを前記制御装置に送信する
ことを特徴とする請求項１に記載の制御システム。
【請求項３】
前記制御装置から前記暗号化実行用プログラムを読み出す読み出し命令を前記制御装置に送信する受信側通信部を備えたプログラム受信装置を備え、
前記制御装置は、
前記受信側通信部から前記読み出し命令を受信すると、前記暗号化実行用プログラムを前記プログラム受信装置に送信し、
前記プログラム受信装置は、
前記機器識別子を取得する受信側取得部を備え、
前記受信側通信部は、
前記受信側取得部により取得された前記機器識別子を前記認証サーバに送信し、
前記認証サーバは、
前記受信側通信部から前記機器識別子を受信すると、受信した前記機器識別子に基づいて、受信した前記機器識別子に対応する前記編集用鍵を取得する編集用鍵取得部と、
前記編集用鍵取得部により取得された前記編集用鍵を前記プログラム受信装置に送信するサーバ側通信部と
を備え、
前記受信側通信部は、
前記サーバ側通信部から送信された前記編集用鍵を受信するとともに、前記読み出し命令に基づいて前記制御装置から送信された前記暗号化実行用プログラムを受信し、
前記プログラム受信装置は、
前記受信側通信部が受信した前記編集用鍵を用いて、前記受信側通信部が受信した前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号した前記実行用プログラムを前記ソースプログラムに変換する受信側変換部を備えることを特徴とする請求項１または２に記載の制御システム。
【請求項４】
前記プログラム受信装置は、
ユーザから前記ユーザの認証に用いる認証情報を受け付ける受信側受付部を備え、
前記受信側通信部は、
前記受信側受付部が受け付けた前記認証情報を前記認証サーバに送信するとともに、前記読み出し命令を前記制御装置に送信し、
前記認証サーバは、
前記受信側通信部から前記認証情報を受信し、受信した前記認証情報に基づいて前記プログラム受信装置に対するアクセスの許否を処理装置により判定し、前記プログラム受信装置に対するアクセスを許可と判定した場合に認証許可情報を前記プログラム受信装置に送信する認証部を備え
前記受信側通信部は、
前記認証サーバの前記認証部から前記認証許可情報を受信した場合に、前記機器識別子を前記認証サーバに送信する
ことを特徴とする請求項３に記載の制御システム。
【請求項５】
現在の時刻を管理する現在時刻管理サーバを備え、
前記プログラム送信装置は、
前記編集用鍵の有効期間の入力を受け付ける送信側受付部を備え、
前記送信側通信部は、さらに、
前記送信側受付部により受け付けられた前記有効期間を前記認証サーバに送信し、
前記認証サーバは、
前記送信側通信部から前記有効期間を受信すると、前記現在時刻管理サーバから現在時刻を取得し、取得した現在時刻に受信した前記有効期間を加算して有効期限とし、算出した前記有効期限と前記編集用鍵と前記機器識別子とを対応付けて記憶装置に記憶する
ことを特徴とする請求項３または４に記載の制御システム。
【請求項６】
前記認証サーバの前記編集用鍵取得部は、
前記受信側通信部から前記機器識別子を受信すると、受信した前記機器識別子に対応する前記有効期限を取得するとともに、前記現在時刻管理サーバから現在時刻を取得し、取得した現在時刻が前記有効期限を過ぎているか否かを処理装置により判定し、取得した現在時刻が前記有効期限を過ぎていると判定した場合には前記編集用鍵を消去し、取得した現在時刻が前記有効期限を過ぎていないと判定した場合には前記編集用鍵を取得し、
前記サーバ側通信部は、
前記編集用鍵取得部により取得された前記編集用鍵を前記プログラム受信装置に送信することを特徴とする請求項５に記載の制御システム。
【請求項７】
前記制御装置に接続される隣接接続装置を備え、
前記送信側取得部は、
前記機器識別子として、前記制御装置と前記隣接接続装置との接続関係を含む隣接情報を取得する
ことを特徴とする請求項１〜６のいずれかに記載の制御システム。
【請求項８】
機器の制御を実行する制御装置と、認証サーバとを備える制御システムに備えられ、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置において、
前記制御装置を識別する機器識別子を取得する送信側取得部と、
前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する送信側通信部と
を備えることを特徴とするプログラム送信装置。
【請求項９】
機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置とを備える制御システムに備えられる認証サーバにおいて、
前記プログラム送信装置から、前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記制御装置を識別する機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子とを対応付けて記憶装置に記憶することを特徴とする認証サーバ。
【請求項１０】
前記プログラム送信装置からユーザの認証に用いる認証情報を受信し、受信した前記認証情報に基づいて前記プログラム送信装置に対するアクセスの許否を処理装置により判定し、前記プログラム送信装置に対するアクセスを許可と判定した場合に認証許可情報を前記プログラム送信装置に送信する認証部を備えることを特徴とする請求項９に記載の認証サーバ。
【請求項１１】
機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置と、認証サーバとを備える制御システムのプログラム保護方法において、
（１）前記プログラム送信装置の送信側取得部が、前記制御装置を識別する機器識別子を取得し、
（２）前記プログラム送信装置の送信側通信部が、前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信し、
（３）前記認証サーバが、前記送信側通信部により送信された前記編集用鍵と前記機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子と対応付けて記憶装置に記憶し、
（４）前記制御装置が、前記送信側通信部により送信された前記実行用鍵と前記暗号化実行用プログラムとを受信し、受信した前記実行用鍵と前記暗号化実行用プログラムとに基づいて前記機器の制御を実行する
ことを特徴とするプログラム保護方法。
【請求項１２】
機器の制御を実行する制御装置と、認証サーバとを備える制御システムに備えられ、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置のプログラム送信方法において、
（１）送信側取得部が、前記制御装置を識別する機器識別子を取得し、
（２）送信側通信部が、前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する
ことを特徴とするプログラム送信方法。
【請求項１３】
機器の制御を実行する制御装置と、認証サーバとを備える制御システムに備えられ、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置のプログラムにおいて、
（１）送信側取得部が、前記制御装置を識別する機器識別子を取得し、
（２）送信側通信部が、前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する処理をコンピュータである前記プログラム送信装置に実行させることを特徴とするプログラム送信装置のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム及びプログラム送信装置プログラム及び認証サーバ及びプログラム保護方法及びプログラム送信方法に関する。
【背景技術】
【０００２】
ファクトリーオートメーション（Ｆａｃｔｏｒｙ・Ａｕｔｏｍａｔｉｏｎ：ＦＡ）システムでは、工場内の生産設備の動作を制御するためのコントローラが配置されている。このコントローラは、プログラマブルロジックコントローラ（Ｐｒｏｇｒａｍｍａｂｌｅ・Ｌｏｇｉｃ・Ｃｏｎｔｒｏｌｌｅｒ：ＰＬＣ）と呼ばれる。ＰＬＣを動作させるための制御プログラムはラダー等の言語を用いて設計される。設計された制御プログラムは、ラダープログラム開発環境を用いて実行用制御プログラムに変換され、通信ケーブルを介してＰＬＣに書き込まれる。このように、制御プログラムを開発し、ＰＬＣに書き込む装置を開発用コンピュータと呼ぶ。
【０００３】
ラダープログラム開発環境はＷｉｎｄｏｗｓ（登録商標）上で動作するソフトウェアとして広く市販されている。Ｗｉｎｄｏｗｓ（登録商標）が動作するコンピュータと、ラダープログラム開発環境があれば、ＰＬＣへの実行用制御プログラムの書き込みや、ＰＬＣからの実行用制御プログラムの読み出しがコンピュータを用いて容易に行える。このため、近年では既に工場での稼働実績のあるＰＬＣから実行用制御プログラムを抜き取り、このプログラムを模倣して別の生産設備の動作を制御するためのＰＬＣが作られるという問題が発生している。
【０００４】
このような問題に対処するため、ＦＡシステムにおいても模倣品への転用を防ぐための様々な対策が講じられてきている。一つの具体例として、特許文献１によれば、ＰＬＣに制御プログラムの実行用制御プログラムを書き込むとき、開発用コンピュータは、実行用制御プログラムを暗号化してＰＬＣに転送する。制御プログラムを実行するときには、ＰＬＣは、予め生成された暗号ルールを解析し、開発用コンピュータに登録された制御機器固有の情報を抽出する。そして、ＰＬＣは、抽出した制御機器固有の情報に基づいて、実行用制御プログラムが制御機器（ＰＬＣ）固有のプログラムか否かを確認し、固有のプログラムであればＰＬＣにて実行用制御プログラムを復号することで、ＰＬＣ内部のデータを保護する技術が紹介されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−６５６７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１で示された方式では、実行用制御プログラムの暗号化や復号化に必要な情報が開発用コンピュータで管理されているため、開発用コンピュータが盗難されると、実行用制御プログラムの復号に必要な鍵が容易に入手できてしまうことから、実行用制御プログラムを保護できないという課題がある。
【０００７】
また、ＦＡシステムを構築、運用するとき、ＰＬＣの制御プログラムの開発、設計を行う会社と、保守を行う会社は異なることが多い。この状況においては、実行用制御プログラムの復号に必要な鍵は、ＰＬＣの実行用制御プログラムを開発した会社のコンピュータにより作成される。しかし、この鍵も含めて開発物は機密情報として会社内で管理されるため、会社が異なった場合は、機密管理の観点から会社間のデータの受け渡しは容易でない。よって、保守する会社では、ＰＬＣの制御プログラムの復号に必要な鍵を入手することはできないため、特許文献１に示された方式では、保守する会社のコンピュータで制御プログラムの閲覧ができないという課題がある。
【０００８】
また、特許文献１で示された方式は、常にネットワークに接続された状態で実行用制御プログラム、及び実行用制御プログラムの暗号化や復号化に必要な情報を、開発用パソコンと制御機器との間で交換している。このため、特許文献１で示された方式では、ネットワーク上で転送されるデータ量は多くなる。このため、特許文献１で示された方式がネットワーク品質が悪い環境に適用されると、タイムアウトや通信回線障害が多く発生し、実行用制御プログラムの転送失敗が発生しやすくなるという課題がある。
【０００９】
これらの課題を解決する手段として、実行用制御プログラムを開発した会社のコンピュータで、実行用制御プログラムの復号に必要な鍵を生成し、生成した鍵を別の媒体（ＵＳＢメモリなど）に記録し、実行用制御プログラムを開発した会社から媒体を保守する会社に送付する方式が考えられる。そして、実行用制御プログラムを保守する会社は、媒体に記録された鍵を使って、実行用制御プログラムを保守する会社のコンピュータで制御プログラムの閲覧を可能とする。しかし、この方式でも媒体が盗難された場合は実行用制御プログラムの復号に必要な鍵が漏えいするため、制御プログラムを保護できないという課題が残る。
【００１０】
本発明は、上記に示した課題を解決するためになされたものであり、特定のユーザに対しては、ＰＬＣからの実行用制御プログラムの読出しや、ＰＬＣへの実行用制御プログラムの書き込みを容易にするとともに、実行用制御プログラムの閲覧や編集に必要な鍵の特定のユーザ以外への漏えいを防ぐことを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る制御システムは、機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置と、認証サーバとを備える制御システムにおいて、
前記プログラム送信装置は、
前記制御装置を識別する機器識別子を取得する送信側取得部と、
前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する送信側通信部とを備え、
前記認証サーバは、
前記送信側通信部から前記編集用鍵と前記機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子と対応付けて記憶装置に記憶し、
前記制御装置は、
前記送信側通信部により送信された前記実行用鍵と前記暗号化実行用プログラムとを受信し、受信した前記実行用鍵と前記暗号化実行用プログラムとに基づいて前記機器の制御を実行することを特徴とする。
【発明の効果】
【００１２】
本発明に係る制御システムによれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護できるとともに、ＰＬＣの制御プログラムを書き込む会社と、ＰＬＣの制御プログラムを読み出す会社が異なっても、ＰＬＣからの実行用制御プログラムの読出しや、ＰＬＣへの実行用制御プログラム書き込みの利便性を高くすることができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係る制御システム８００のブロック構成図である。
【図２】実施の形態１に係る開発用コンピュータ２００の詳細ブロック構成図である。
【図３】実施の形態１に係る管理サーバ１００が備えるユーザ管理テーブル１０１の構成図である。
【図４】実施の形態１に係る管理サーバ１００、開発用コンピュータ２００、コントローラ３００のハードウェア構成の一例を示す図である。
【図５】実施の形態１に係る制御システム８００において、開発用コンピュータ２００からコントローラ３００に暗号化実行用制御プログラム６５１ａを書き出す手順を示すシーケンス図である。
【図６】実施の形態１に係る管理サーバ１００のユーザ認証処理７１０の流れを示すフローチャートである。
【図７】実施の形態１に係る開発用コンピュータ２００の制御プログラム変換処理７２０の流れを示すフローチャートである。
【図８】実施の形態１に係る管理サーバ１００の編集用鍵登録処理７３０の流れを示すフローチャートである。
【図９】実施の形態２に係る制御システム８００において、コントローラ３００から保守用コンピュータ２５０に暗号化実行用制御プログラム６５１ａを読み出す手順を示すシーケンス図である。
【図１０】実施の形態２に係る管理サーバ１００の編集用鍵認証処理Ｓ７５０の流れを示すフローチャートである。
【図１１】実施の形態３に係る制御システム８０１のブロック構成図である。
【図１２】実施の形態３に係る制御システム８０１において、開発用コンピュータ２００からコントローラ３００，３００ａ，３００ｂに暗号化実行用制御プログラム６５１ａを書き出す手順を示すシーケンス図である。
【図１３】実施の形態３に係る開発用コンピュータ２００の制御プログラム変換処理７２０の流れを示すフローチャートである。
【図１４】実施の形態４に係る制御システム８０１において、コントローラ３００から保守用コンピュータ２５０に暗号化実行用制御プログラム６５１ａを読み出す手順を示すシーケンス図である。
【図１５】実施の形態５に係る制御システム８０２のブロック構成図である。
【図１６】実施の形態５に係る管理サーバ１００が備える機器識別ＩＤテーブル１１２の構成図である。
【図１７】実施の形態５に係る開発用コンピュータ２００の詳細ブロック構成図である。
【図１８】実施の形態５に係る制御システム８０２において、開発用コンピュータ２００からコントローラ３００に暗号化実行用制御プログラム６５１ａを書き出す手順を示すシーケンス図である。
【図１９】実施の形態５に係る開発用コンピュータ２００の有効期限設定処理Ｓ８１０の流れを示すフローチャートである。
【図２０】実施の形態５に係る管理サーバ１００の編集用鍵登録処理Ｓ７７０の流れを示すフローチャートである。
【図２１】実施の形態５に係る管理サーバ１００の有効期限確認処理Ｓ７９０の流れを示すフローチャートである。
【図２２】実施の形態６に係る制御システム８０２において、保守用コンピュータ２５０にコントローラ３００から暗号化実行用制御プログラム６５１ａを読み出す手順を示すシーケンス図である。
【図２３】実施の形態６に係る管理サーバ１００の編集用鍵認証処理Ｓ７８０の流れを示すフローチャートである。
【発明を実施するための形態】
【００１４】
実施の形態１．
図１は、本実施の形態に係る制御システム８００のブロック構成図である。
本実施の形態に係る制御システム８００は、例えば、工場内の生産機器５００の動作を制御するためのシステムである。
図１に示すように、制御システム８００は、管理サーバ１００、開発用コンピュータ２００、コントローラ３００を備える。管理サーバ１００と開発用コンピュータ２００とは、通信回線４００により接続されている。また、開発用コンピュータ２００とコントローラ３００とは、通信回線４０１により接続されている。
【００１５】
管理サーバ１００は、制御システム８００において、制御プログラムの設計、保守等を行うユーザを管理する。管理サーバ１００は、ユーザの認証処理等を実行する認証サーバの一例である。
コントローラ３００は、機器の制御を実行する制御装置の一例である。
【００１６】
開発用コンピュータ２００は、ユーザによる操作を受け付け、受け付けた操作の内容に基づいて、制御プログラムの設計、開発などの処理を実行する。
制御プログラムは、コントローラ３００で実行される生産機器５００の制御が記述されたソースプログラムである。
【００１７】
開発用コンピュータ２００は、制御プログラムを、コントローラ３００で実行できる実行用制御プログラムに変換し、変換した実行用制御プログラムを暗号化して、暗号化された実行用制御プログラム（暗号化実行用プログラムの一例）を生成する。
また、開発用コンピュータ２００は、暗号化された実行用制御プログラム（以下、暗号化実行用制御プログラム６５１ａとする）を実行用制御プログラムに復号し、かつ、復号された実行用制御プログラムを制御プログラムに変換する際に用いる編集用鍵と、暗号化実行用制御プログラム６５１ａを実行用制御プログラムに復号する際に用いる実行用鍵とを生成する。
【００１８】
開発用コンピュータ２００は、暗号化実行用制御プログラム６５１ａをコントローラ３００に書き出すプログラム送信装置の一例である。
暗号化実行用制御プログラム６５１ａをコントローラ３００に書き出すとは、通信回線４０１を介して、暗号化実行用制御プログラム６５１ａをコントローラ３００に送信することである。
【００１９】
開発用コンピュータ２００は、ユーザからコントローラ３００への実行用制御プログラムの書き出し要求を受け付け、コントローラ３００に暗号化実行用制御プログラム６５１ａと実行用鍵とを書き出し、管理サーバ１００に制御プログラムを閲覧するための編集用鍵を登録する。
【００２０】
制御システム８００は、保守用コンピュータ２５０が接続されていてもよい。
保守用コンピュータ２５０は、コントローラ３００から実行用制御プログラムの読み出し要求を受け付け、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出す。
【００２１】
保守用コンピュータ２５０は、ユーザの認証処理時に管理サーバ１００から編集用鍵を取得する。
保守用コンピュータ２５０では、読み出した暗号化実行用制御プログラム６５１ａを編集用鍵を用いて閲覧可能な制御プログラム２２０に変換する。
【００２２】
開発用コンピュータ２００と保守用コンピュータ２５０とは、内部構成は同一である。１つのコンピュータで開発用コンピュータ２００と保守用コンピュータ２５０との両方の機能を有するものでもよい。あるいは、開発用コンピュータ２００と保守用コンピュータ２５０とのいずれかの機能のみを有する１つのコンピュータであってもよい。
例えば、開発用コンピュータ２００は開発会社が使用するコンピュータであり、保守用コンピュータ２５０は保守会社が利用するコンピュータである。
【００２３】
コントローラ３００は、制御プログラムを実行することにより、生産機器５００の制御を実行する。コントローラ３００は、開発用コンピュータ２００から送信された実行用鍵と暗号化実行用制御プログラム６５１ａとを受信し、受信した実行用鍵と暗号化実行用制御プログラム６５１ａとに基づいて生産機器５００の制御を実行する。
【００２４】
図１を用いて、コントローラ３００の機能について説明する。
コントローラ３００は、通信制御部３０１、実行用制御プログラム保管部３０２、内部バス３０３、機器識別ＩＤ管理部３０４、制御プログラム実行部３０５、復号部３０６を備える。
コントローラ３００の内部は、内部バス３０３を介して通信制御部３０１、実行用制御プログラム保管部３０２、機器識別ＩＤ管理部３０４、制御プログラム実行部３０５、復号部３０６が接続された構成となっている。
【００２５】
通信制御部３０１は、通信回線４０１を介して、開発用コンピュータ２００のコントローラ通信部２０１と接続されている。
通信回線４０１は、例えば、ＵＳＢケーブル、Ｅｔｈｅｒｎｅｔ（登録商標）に対応したＬＡＮケーブル等である。
【００２６】
実行用制御プログラム保管部３０２は、暗号化実行用制御プログラム６５１ａをコントローラ３００の備える記憶装置に記憶する。
機器識別ＩＤ管理部３０４は、コントローラ３００の機器識別ＩＤをコントローラ３００の備える記憶装置に記憶する。
【００２７】
復号部３０６は、実行用制御プログラム保管部３０２により保管されている暗号化実行用制御プログラムを復号する。
制御プログラム実行部３０５は、生産機器５００に接続される。制御プログラム実行部３０５は、復号部３０６により復号された実行用制御プログラムを実行することにより、生産機器５００の動作を制御する。
制御プログラム実行部３０５は、実行用制御プログラム保管部３０２から逐次コードを読み出し、生産機器５００の制御に必要なプログラムを実行する。
【００２８】
図２は、本実施の形態に係る開発用コンピュータ２００の詳細ブロック構成図である。
次に、図１及び図２を用いて、開発用コンピュータ２００の機能について説明する。
図１に示すように、開発用コンピュータ２００は、コントローラ通信部２０１（送信側通信部、受信側通信部）、制御プログラム管理部２０２、サーバ通信部２０３（送信側通信部、受信側通信部）を備える。
【００２９】
コントローラ通信部２０１は、通信回線４０１を介して、コントローラ３００との通信を行う。
制御プログラム管理部２０２は、制御プログラム２２０を管理する。また、制御プログラム管理部２０２は、制御プログラム２２０を実行用制御プログラムに変換する。制御プログラム２２０を実行用制御プログラムに変換するとは、制御プログラム２２０に対し、コントローラ３００（ＰＬＣの一例）において実行するために必要な処理を施して、実行用制御プログラムを生成することである。
サーバ通信部２０３は、通信回線４００を介して、管理サーバ１００との間で通信を行う。
【００３０】
また、図２に示すように、制御プログラム管理部２０２は、制御プログラム記憶部２２７、実行用プログラム変換部２２１、暗号鍵生成部２２３、復号部２２４、ユーザ操作受付部２２２、会社管理部２２６を備える。
制御プログラム記憶部２２７は、制御プログラム２２０を開発用コンピュータ２００の備える記憶装置に記憶する。
【００３１】
実行用プログラム変換部２２１は、制御プログラム２２０を実行用制御プログラムに変換する。また、実行用プログラム変換部２２１は、実行用制御プログラムを制御プログラム２２０に変換する。
【００３２】
暗号鍵生成部２２３は、制御プログラム２２０の閲覧、制御プログラム２２０の実行に必要な鍵を生成する。
復号部２２４は、制御プログラム２２０の閲覧に必要な鍵を用いて、暗号化実行用制御プログラムを実行用制御プログラムに復号する。
【００３３】
ユーザ操作受付部２２２（送信側受付部、受信側受付部）は、ユーザの操作を受け付け、実行用プログラム変換部２２１で行う処理を決定する。
会社管理部２２６は、開発用コンピュータ２００の所属会社を管理する。
【００３４】
図３は、本実施の形態に係る管理サーバ１００が備えるユーザ管理テーブル１０１の構成図である。
次に、図１及び図３を用いて、管理サーバ１００の機能について説明する。
図１に示すように、管理サーバ１００は、ユーザ管理テーブル１０１、ユーザ通信部１０２（サーバ側通信部）を備える。
【００３５】
ユーザ管理テーブル１０１は、制御システム８００を利用するユーザであって、例えば、制御プログラム２２０の開発、保守等を行うユーザに関する情報を管理するテーブルである。
ユーザ通信部１０２は、通信回線４００を介して、開発用コンピュータ２００と通信を行う。
【００３６】
図３に示すように、ユーザ管理テーブル１０１は、ユーザテーブル１１０、所属会社テーブル１１１、機器識別ＩＤテーブル１１２を備える。
ユーザテーブル１１０は、ユーザを識別するユーザＩＤ１５０に対し、所属会社情報、パスワード等を対応付けたテーブルである。所属会社情報とは、ユーザＩＤ１５０により識別されるユーザが所属している会社を識別するための情報である。所属会社情報には、開発会社情報６５３と保守会社情報６６１とがある。
【００３７】
所属会社テーブル１１１は、所属会社情報（開発会社情報６５３，保守会社情報６６１）と機器識別ＩＤ６０４とを対応付けて管理する。
機器識別ＩＤ６０４は、コントローラ３００（制御装置）を識別するための識別子である。機器識別ＩＤに対応する所属会社情報は、その機器識別ＩＤにより識別されるコントローラ３００（制御装置、制御機器）により実行される制御プログラムの開発・保守等を行う会社の情報である。
【００３８】
機器識別ＩＤテーブル１１２は、機器識別ＩＤ６０４と、機器識別ＩＤ６０４に対応する編集用鍵６５０とを管理する。機器識別ＩＤ６０４に対応する編集用鍵６５０には、機器識別ＩＤ６０４により識別されるコントローラ３００に書き出された制御プログラムを閲覧するために必要な情報が含まれる。
【００３９】
図３では、ユーザテーブル１１０、所属会社テーブル１１１、および機器識別ＩＤテーブル１１２の構成例を示している。図３を用いて、ユーザテーブル１１０、所属会社テーブル１１１、および機器識別ＩＤテーブル１１２の構成についてさらに詳しく説明する。
【００４０】
ユーザテーブル１１０には、制御プログラムを開発した会社のユーザＩＤ１５０と対応する開発会社情報６５３、パスワード１５２、ログイン情報１５１が登録されている。また、制御プログラムを保守する会社のユーザＩＤ１６０と対応する保守会社情報６６１、パスワード１６２、ログイン情報１６１が登録されている。
【００４１】
所属会社テーブル１１１には、開発会社情報６５３及び保守会社情報６６１と、これらの各々に対応する機器識別ＩＤ６０４とが登録される。機器識別ＩＤ６０４とは、開発会社情報６５３、あるいは保守会社情報６６１の開発あるいは保守の対象となるコントローラ３００を識別する識別子である。
【００４２】
機器識別ＩＤテーブル１１２には、機器識別ＩＤ６０４と、それに対応する編集用鍵６５０が登録されている。
【００４３】
管理サーバ１００と開発用コンピュータ２００とは、通信回線４００を介して接続される。管理サーバ１００と開発用コンピュータ２００とは、通信回線４００を介して、制御プログラム２２０を設計、保守するユーザの認証処理のための情報の送受信、あるいは編集用鍵の送受信等を行う。
【００４４】
管理サーバ１００は、工場内もしくは遠隔地に設置された管理センター内に設置される。工場内に管理サーバ１００が設置された場合、通信回線４００はＬＡＮケーブルおよび付随する通信機器で構成される。
管理サーバ１００が管理センター内に設置された場合は、通信回線４００は通信事業会社が提供する電話回線、光ケーブル、ＬＡＮケーブルおよびこれらに付随する通信機器で構成される。
【００４５】
図４は、本実施の形態に係る管理サーバ１００、開発用コンピュータ２００、コントローラ３００のハードウェア構成の一例を示す図である。
【００４６】
図４において、管理サーバ１００、開発用コンピュータ２００、コントローラ３００は、コンピュータであり、ＬＣＤ９０１（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ９０６といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。ＬＣＤ９０１の代わりに、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置が用いられてもよい。マウス９０３の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【００４７】
管理サーバ１００、開発用コンピュータ２００、コントローラ３００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、処理装置の一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、ＬＣＤ９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ９０６、ＨＤＤ９２０（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９２０の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
【００４８】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、ＨＤＤ９２０は、不揮発性メモリの一例である。これらは、記憶装置、記憶部の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５は、入力装置の一例である。また、通信ボード９１５、ＬＣＤ９０１、プリンタ９０６は、出力装置の一例である。
【００４９】
通信ボード９１５は、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等に接続されている。通信ボード９１５は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【００５０】
ＨＤＤ９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、ＣＰＵ９１１により読み出され実行される。ファイル群９２４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ＲＡＭ９１４やＨＤＤ９２０等の記録媒体に記憶される。ＲＡＭ９１４やＨＤＤ９２０等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理（動作）に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００５１】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、ＲＡＭ９１４等のメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、ＨＤＤ９２０の磁気ディスク、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）、あるいは、その他の記録媒体に記録される。また、データや信号は、バス９１２、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【００５２】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００５３】
図５は、本実施の形態に係る制御システム８００において、開発用コンピュータ２００からコントローラ３００に暗号化実行用制御プログラム６５１ａを書き出す手順を示すシーケンス図である。
図５を用いて、開発用コンピュータ２００からコントローラ３００に暗号化実行用制御プログラム６５１ａを書き出す手順について説明する。
【００５４】
図５に示す処理は、開発用コンピュータ２００が、ユーザがコントローラ３００への実行用制御プログラムの書き出し実行を指示してから、コントローラ３００に暗号化実行用制御プログラム６５１ａを書き出し、管理サーバ１００に制御プログラムを閲覧するための編集用鍵を登録するまでの処理の流れを示したものである。
【００５５】
開発用コンピュータ２００は、ユーザからコントローラ３００への実行用制御プログラム書き出し指示の操作を受け付ける。
例えば、ユーザ操作受付部２２２は、開発用コンピュータ２００の表示装置にユーザ入力画面などを表示する。ユーザ操作受付部２２２は、ユーザ入力画面に入力された操作の内容を受け付ける。
【００５６】
このとき、ユーザ操作受付部２２２（送信側受付部）は、ユーザによりユーザ入力画面へ入力されたユーザＩＤ６０１、パスワード６０２、開発会社情報６５３を入力する。
ユーザ入力画面に入力された操作の内容は、例えば、コントローラ３００へ実行用制御プログラムを書き出す指示（以下、実行用制御プログラム書き出し指示とする）である。
ユーザＩＤ６０１、パスワード６０２、開発会社情報６５３は、ユーザの認証処理に用いる認証情報の一例である。
【００５７】
ユーザ操作受付部２２２は、入力したユーザＩＤ６０１、パスワード６０２、開発会社情報６５３をユーザ通信部１０２に入力する。
図５のＳ１０１において、ユーザ通信部１０２は、ユーザ操作受付部２２２から入力したユーザＩＤ６０１、パスワード６０２、開発会社情報６５３を、通信回線４００を介して、認証要求として管理サーバ１００に送信する。
【００５８】
管理サーバ１００のユーザ通信部１０２は、開発用コンピュータ２００のサーバ通信部２０３から認証要求を受信する。管理サーバ１００は、認証要求を受信すると、認証要求に含まれるユーザＩＤ６０１、パスワード６０２、開発会社情報６５３を用いて、ユーザ認証処理Ｓ７１０を処理装置により実行する。管理サーバ１００は、認証サーバの一例である。また、管理サーバ１００は、ユーザの認証処理を実行する認証部の一例である。
【００５９】
図６は、実施の形態１に係る管理サーバ１００のユーザ認証処理Ｓ７１０の流れを示すフローチャートである。
図６を用いて、管理サーバ１００のユーザ認証処理Ｓ７１０について説明する。
【００６０】
管理サーバ１００は、開発用コンピュータ２００から通知されたユーザＩＤ６０１、パスワード６０２、開発会社情報６５３が、ユーザテーブル１１０に登録されたユーザＩＤ１５０、パスワード１５２、開発会社情報６５３と一致しているか否かを処理装置により確認する。
【００６１】
Ｓ７１１において、管理サーバ１００は、入力したユーザＩＤ６０１を用いて、ユーザテーブル１１０を検索する。
管理サーバ１００は、入力したユーザＩＤ６０１と同一のユーザＩＤがユーザテーブル１１０に存在すると確認した場合（Ｓ７１１でＹＥＳ）、処理をＳ７１２に進める。このとき、管理サーバ１００は、入力したユーザＩＤ６０１と同一のユーザＩＤ１５０に対応する開発会社情報６５３と、パスワード１５２とをユーザテーブル１１０から抽出し、記憶装置に記憶する。
【００６２】
管理サーバ１００は、入力したユーザＩＤ６０１と同一のユーザＩＤがユーザテーブル１１０に存在しない（確認できない）場合（Ｓ７１１でＮＯ）、処理をＳ７１５に進める。
Ｓ７１５において、管理サーバ１００は、認証結果６０３に「認証不可」を設定する。
【００６３】
Ｓ７１２において、管理サーバ１００は、入力した開発会社情報６５３が、ユーザテーブル１１０から抽出した開発会社情報６５３（ユーザＩＤ６０１（１５０）に対応する開発会社情報６５３）と一致するか否かについて処理装置により確認する。
管理サーバ１００は、入力した開発会社情報６５３が、ユーザテーブル１１０から抽出した開発会社情報６５３と一致すると確認した場合（Ｓ７１２でＹＥＳ）、処理をＳ７１３に進める。
【００６４】
管理サーバ１００は、入力した開発会社情報６５３が、ユーザテーブル１１０から抽出した開発会社情報６５３と一致することが確認できない場合（Ｓ７１２でＮＯ）、処理をＳ７１５に進める。
Ｓ７１５において、管理サーバ１００は、認証結果６０３に「認証不可」を設定する。
【００６５】
Ｓ７１３において、管理サーバ１００は、入力したパスワード６０２が、ユーザテーブル１１０から抽出したパスワード１５２（ユーザＩＤ６０１（１５０）に対応するパスワード）と一致するか否かについて処理装置により確認する。
管理サーバ１００は、入力したパスワード６０２が、ユーザテーブル１１０から抽出したパスワード１５２と一致すると確認した場合（Ｓ７１３でＹＥＳ）、処理をＳ７１４に進める。
Ｓ７１４において、管理サーバ１００は、認証結果６０３に「認証許可」を設定する。
【００６６】
管理サーバ１００は、入力したパスワード６０２が、ユーザテーブル１１０から抽出したパスワード１５２と一致することが確認できない場合（Ｓ７１３でＮＯ）、処理をＳ７１５に進める。
Ｓ７１５において、管理サーバ１００は、認証結果６０３に「認証不可」を設定する。
以上で、図６に説明を終了する。
【００６７】
図５のＳ１０２において、管理サーバ１００のユーザ通信部１０２は、ユーザ認証処理Ｓ７１０を完了すると、通信回線４００を介して認証結果６０３を開発用コンピュータ２００に送信する。
【００６８】
以上のように、管理サーバ１００は、入力したユーザＩＤ６０１、パスワード６０２、開発会社情報６５３のうち一個でもユーザテーブル１１０と不一致があった場合は、Ｓ７１５のように認証不可応答を送信する。管理サーバ１００は、入力したユーザＩＤ６０１、パスワード６０２、開発会社情報６５３のすべてが一致した場合は、Ｓ７１４のように認証許可応答を認証結果６０３に設定し、開発用コンピュータ２００に対して認証結果６０３を通知する。
【００６９】
図５のＳ１０２において、開発用コンピュータ２００のサーバ通信部２０３は、管理サーバ１００のユーザ通信部１０２から認証結果６０３を受信する。
制御プログラム管理部２０２は、受け取った認証結果６０３に設定された認証応答を処理装置により判定する。
【００７０】
制御プログラム管理部２０２は、認証結果６０３に設定された認証応答が「認証不可」であると判定した場合、処理を終了する。この場合、例えば、制御プログラム管理部２０２は、表示装置に「認証不可」のエラーメッセージ等を表示する。
【００７１】
制御プログラム管理部２０２は、認証結果６０３に設定された認証応答が「認証許可」であると判定した場合、制御プログラム変換処理Ｓ７２０を実行する。
【００７２】
図７は、本実施の形態に係る開発用コンピュータ２００の制御プログラム変換処理Ｓ７２０の流れを示すフローチャートである。
図７を用いて、開発用コンピュータ２００の制御プログラム変換処理Ｓ７２０について説明する。
制御プログラム管理部２０２の実行用プログラム変換部２２１は、制御プログラム変換処理Ｓ７２０を実行する。
【００７３】
Ｓ７２１において、実行用プログラム変換部２２１は、コントローラ３００の機器識別ＩＤを取得するための機器識別ＩＤ問合せメッセージ６０５をコントローラ３００に対して送信する。
【００７４】
コントローラ３００は、機器識別ＩＤ問合せメッセージ６０５を受信すると、機器識別ＩＤ管理部３０４から、コントローラ３００を識別する機器識別ＩＤ６０４を取得する。コントローラ３００の通信制御部３０１は、通信回線４０１を介して、取得した機器識別ＩＤ６０４を開発用コンピュータ２００に送信する。
【００７５】
Ｓ７２２において、開発用コンピュータ２００のコントローラ通信部２０１は、コントローラ３００の機器識別ＩＤ６０４を受信する。開発用コンピュータ２００のコントローラ通信部２０１は、受信した機器識別ＩＤ６０４を制御プログラム管理部２０２に入力する。以上のように、制御プログラム管理部２０２は、機器識別ＩＤ６０４を取得する。制御プログラム管理部２０２は、コントローラ３００を識別する機器識別ＩＤ６０４（機器識別子）を取得する送信側取得部の一例である。
【００７６】
Ｓ７２３において、制御プログラム管理部２０２の実行用プログラム変換部２２１は、制御プログラム２２０を入力する。制御プログラム２２０は、コントローラ３００において実行される生産機器５００の制御が記述されたソースプログラムである。制御プログラム２２０は、例えば、ラダー言語により記述されたラダープログラムである。
【００７７】
実行用プログラム変換部２２１は、入力した制御プログラム２２０をコントローラ３００において実行できる実行用制御プログラム６５１に変換する。実行用制御プログラム６５１は、例えば、コントローラ３００において実行可能なオブジェクトプログラム（実行用プログラムの一例）である。
【００７８】
Ｓ７２４において、暗号鍵生成部２２３は、実行用プログラム変換部２２１により変換された実行用制御プログラム６５１と、コントローラ３００から取得した機器識別ＩＤ６０４とを入力する。暗号鍵生成部２２３は、入力した実行用制御プログラム６５１を用いて、実行用制御プログラム６５１が暗号化された暗号化実行用制御プログラム６５１ａを実行用制御プログラム６５１に復号する際に用いられる編集用鍵を生成する。編集用鍵は、暗号化実行用制御プログラム６５１ａを実行用制御プログラム６５１に復号する際に用いられると共に、復号された実行用制御プログラム６５１を制御プログラム２２０に変換する際に用いられる。また、暗号鍵生成部２２３は、暗号化実行用制御プログラム６５１ａを実行用制御プログラム６５１に復号する際に用いる実行用鍵を生成する。暗号鍵生成部２２３は、鍵生成部の一例である。
【００７９】
暗号鍵生成部２２３は、機器識別ＩＤ６０４を受信（入力）すると、制御プログラム２２０の閲覧に必要な編集用鍵６５０と、コントローラ３００の実行用制御プログラム６５１を実行するために必要な実行用鍵６５２とを生成し、実行用プログラム変換部２２１に通知する。
【００８０】
Ｓ７２５において、実行用プログラム変換部２２１は、編集用鍵６５０と実行用鍵６５２とを受信し、制御プログラム変換処理Ｓ７２０が完了する。
【００８１】
Ｓ１０３〜Ｓ１０４において、制御プログラム管理部２０２は、暗号鍵生成部２２３により生成された実行用鍵６５２と暗号化実行用制御プログラム６５１ａとをコントローラ通信部２０１に出力する。
コントローラ通信部２０１は、制御プログラム管理部２０２から実行用鍵６５２と暗号化実行用制御プログラム６５１ａとを入力する。コントローラ通信部２０１は、入力した実行用鍵６５２と暗号化実行用制御プログラム６５１ａとを、コントローラ３００に対して通信回線４０１を介して送信する。コントローラ通信部２０１は、送信側通信部の一例である。
【００８２】
コントローラ３００の通信制御部３０１は、開発用コンピュータ２００から送信された暗号化実行用制御プログラム６５１ａと実行用鍵６５２とを実行用制御プログラム保管部３０２に書き込む。
【００８３】
開発用コンピュータ２００の実行用プログラム変換部２２１は、会社管理部２２６に予め登録された開発用コンピュータ２００の所属会社情報を取得する。開発用コンピュータ２００の場合は、開発会社情報６５３が登録されており、保守用コンピュータ２５０の場合は、保守会社情報６６１が登録されている。
【００８４】
あるいは、開発用コンピュータ２００の会社管理部２２６には開発用コンピュータ２００の開発会社情報６５３と、その後の保守を担当する保守会社情報６６１とが登録されていてもよい。また、保守用コンピュータ２５０の会社管理部２２６には自保守用コンピュータ２５０の保守会社情報６６１と、保守の対象となる制御プログラムの開発を担当した開発会社情報６５３とが登録されていてもよい。
【００８５】
Ｓ１０５〜Ｓ１０７において、開発用コンピュータ２００のサーバ通信部２０３は、管理サーバ１００に対して、編集用鍵６５０、機器識別ＩＤ６０４、開発会社情報６５３、保守会社情報６６１を、通信回線４００を介して送信する。
サーバ通信部２０３は、暗号鍵生成部２２３により生成された編集用鍵６５０とコントローラ３００から取得した機器識別ＩＤ６０４とを管理サーバ１００に送信する送信側通信部の一例である。
【００８６】
管理サーバ１００のユーザ通信部１０２（サーバ側通信部）は、開発用コンピュータ２００から編集用鍵６５０、機器識別ＩＤ６０４、開発会社情報６５３、保守会社情報６６１を受信する。管理サーバ１００は、編集用鍵登録処理Ｓ７３０によって、ユーザ管理テーブル１０１に編集用鍵６５０、機器識別ＩＤ６０４、開発会社情報６５３、保守会社情報６６１を登録する。
【００８７】
図８は、実施の形態１に係る管理サーバ１００の編集用鍵登録処理Ｓ７３０の流れを示すフローチャートである。
図８を用いて、管理サーバ１００の編集用鍵登録処理Ｓ７３０の流れについて説明する。
【００８８】
Ｓ７３１において、管理サーバ１００は、開発会社情報６５３と機器識別ＩＤ６０４とを対応付けて所属会社テーブル１１１に登録する。
Ｓ７３２において、管理サーバ１００は、保守会社情報６６１と機器識別ＩＤ６０４とを対応付けて所属会社テーブル１１１に登録する。
Ｓ７３３において、管理サーバ１００は、機器識別ＩＤ６０４と編集用鍵６５０とを対応付けて機器識別ＩＤテーブル１１２に登録する。
【００８９】
以上で、開発用コンピュータ２００が、ユーザがコントローラ３００への実行用制御プログラムの書き出し実行を指示してから、コントローラ３００に暗号化実行用制御プログラム６５１ａを書き出し、管理サーバ１００に制御プログラムを閲覧するための編集用鍵６５０を登録するまでの処理の流れについての説明を終わる。
【００９０】
以上のように、本実施の形態に係る制御システム８００は、設備の制御システムであって、前記設備の動作を制御するコントローラ３００と、第一の通信回線（通信回線４０１）によって前記コントローラ３００に接続され、前記コントローラ３００との間で、制御プログラム２２０を読み書きする第一のコンピュータ（開発用コンピュータ２００）と、第二の通信回線（通信回線４００）によって前記第一のコンピュータに接続されるサーバ（管理サーバ１００）を備える。
【００９１】
また、本実施の形態に係る制御システム８００は、前記第一のコンピュータから制御プログラムを前記コントローラに書き込むときに使用する、以下のような手段を備える。
【００９２】
まず、前記サーバは、前記第一のコンピュータを使って書き込むユーザと所属会社を認証し、前記第一のコンピュータに対して書き込みの許可を判断する認証手段を備える。
また、前記第一のコンピュータは、前記コントローラから機器識別ＩＤを読み込み、前記制御プログラムの閲覧を可能とするための暗号鍵（編集用鍵６５０）と、前記制御プログラムの実行を可能とするための暗号鍵（実行用鍵６５２）とを作成する鍵生成手段を備える。
また、前記鍵生成手段によって生成された、制御プログラムの閲覧と制御プログラムの実行を可能とするための暗号鍵（実行用鍵６５２）を前記コントローラに書き込む書込手段を備える。
また、前記サーバは、前記第一のコンピュータの所属会社と前記コントローラの機器識別ＩＤと前記制御プログラムの閲覧を可能とするための暗号鍵（編集用鍵６５０）とを保管する手段を備える。
【００９３】
以上のように、本実施の形態に係る制御システム８００によれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護することができる。
【００９４】
実施の形態２．
本実施の形態では、実施の形態１と異なる点について説明する。本実施の形態では、実施の形態１で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【００９５】
本実施の形態では、実施の形態１で説明した制御システム８００において、保守用コンピュータ２５０により、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出し、閲覧・編集可能な制御プログラム２２０に変換するまでの処理について説明する。
【００９６】
図９は、本実施の形態に係る制御システム８００において、コントローラ３００から保守用コンピュータ２５０に暗号化実行用制御プログラム６５１ａを読み出す手順を示すシーケンス図である。
図９を用いて、コントローラ３００から保守用コンピュータ２５０に暗号化実行用制御プログラム６５１ａを読み出し、読み出した暗号化実行用制御プログラム６５１ａを閲覧可能な制御プログラム２２０に変換する手順について説明する。
【００９７】
保守用コンピュータ２５０のユーザ操作受付部２２２は、ユーザから暗号化実行用制御プログラム６５１ａの読み出し要求を受け付ける。
保守用コンピュータ２５０は、暗号化実行用制御プログラム６５１ａの読み出し要求を受け付けると、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出し、管理サーバ１００から制御プログラム２２０の閲覧に必要な編集用鍵を入手する。
そして、保守用コンピュータ２５０は、入手した編集用鍵６５０を用いて、暗号化実行用制御プログラム６５１ａを閲覧可能な制御プログラム２２０に変換する。
【００９８】
保守用コンピュータ２５０は、ユーザから、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出す要求である読み出し指示の操作を受け付ける。
例えば、ユーザ操作受付部２２２は、保守用コンピュータ２５０の表示装置にユーザ入力画面などを表示する。ユーザ操作受付部２２２は、ユーザ入力画面に入力された操作の内容を受け付ける。
【００９９】
このとき、ユーザ操作受付部２２２は、ユーザによりユーザ入力画面へ入力されたユーザＩＤ６０１、パスワード６０２、保守会社情報６６１を入力する。
ユーザ入力画面に入力された操作の内容は、例えば、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出す指示（以下、実行用制御プログラム読み出し指示とする）である。
【０１００】
ユーザ操作受付部２２２は、入力したユーザＩＤ６０１、パスワード６０２、保守会社情報６６１をユーザ通信部１０２に入力する。ユーザ操作受付部２２２は、受信側受付部の一例である。
図９のＳ１０１において、ユーザ通信部１０２は、ユーザ操作受付部２２２から入力したユーザＩＤ６０１、パスワード６０２、保守会社情報６６１を、通信回線４００を介して、認証要求として管理サーバ１００に送信する。
【０１０１】
管理サーバ１００のユーザ通信部１０２は、保守用コンピュータ２５０のユーザ通信部１０２から認証要求を受信する。管理サーバ１００は、認証要求を受信すると、認証要求に含まれるユーザＩＤ６０１、パスワード６０２、保守会社情報６６１を用いて、ユーザ認証処理Ｓ７１０を処理装置により実行する。
【０１０２】
実施の形態１で説明したように、保守用コンピュータ２５０の内部構成は、図２に示した開発用コンピュータ２００の内部構成と同じであるが、会社管理部２２６の設定値が開発用コンピュータ２００の設定値と異なる。すなわち、開発用コンピュータ２００を所有している会社と保守用コンピュータ２５０を所有している会社とが異なる点に留意する必要がある。
【０１０３】
保守用コンピュータ２５０は、ユーザによる実行用制御プログラム読み出し操作を受け付けることにより、コントローラ３００から実行用制御プログラム読み出し処理を実行する。このとき、保守用コンピュータ２５０は、ユーザＩＤ６１１、パスワード６１２、保守会社情報６６１を管理サーバ１００に通知する。管理サーバ１００は、ユーザ認証処理Ｓ７１０を実行する。
【０１０４】
ユーザ認証処理Ｓ７１０については、実施の形態１で説明したものと同様である。ただし、開発会社情報６５３が保守会社情報６６１となる点が異なる。
【０１０５】
図９に示すように、管理サーバ１００は、ユーザ認証処理Ｓ７１０において、受信したユーザＩＤ６１１、パスワード６１２、保守会社情報６６１が、ユーザテーブル１１０に登録されたユーザＩＤ１６０、パスワード１６２、保守会社情報６６１と一致しているか否かを処理装置により判定する（図６のＳ７１１〜Ｓ７１３を参照）。
【０１０６】
管理サーバ１００は、ユーザＩＤ１６０、パスワード１６２、保守会社情報６６１のうち一個でも不一致があった場合は認証不可応答を認証結果６０３に設定し、認証結果６０３を保守用コンピュータ２５０に送信する（図９のＳ１０２）。
また、管理サーバ１００は、ユーザＩＤ１６０、パスワード１６２、保守会社情報６６１のすべてが一致した場合は認証許可応答を認証結果６０３に設定し、認証結果６０３を保守用コンピュータ２５０に送信する（図９のＳ１０２）。
【０１０７】
保守用コンピュータ２５０の制御プログラム管理部２０２は、管理サーバ１００から受信した認証結果６０３を処理装置により確認する。制御プログラム管理部２０２は、認証結果６０３が認証許可であれば、コントローラ３００に対して機器識別ＩＤ問合せメッセージ６０５を送信する（Ｓ２０１）。
【０１０８】
コントローラ３００は、機器識別ＩＤ問合せメッセージ６０５を受信すると、コントローラ３００の機器識別ＩＤ６０４を制御プログラム管理部２０２に通知する（Ｓ２０２）。
【０１０９】
制御プログラム管理部２０２は、取得した機器識別ＩＤ６０４と保守会社情報６６１とを管理サーバ１００に送信する（Ｓ２０３）。管理サーバ１００は、機器識別ＩＤ６０４と保守会社情報６６１を受信すると、編集用鍵認証処理Ｓ７５０を実行し、編集用鍵６５０を保守用コンピュータ２５０に対して送信する（Ｓ２０４）。制御プログラム管理部２０２は、受信側取得部の一例である。
【０１１０】
図１０は、本実施の形態に係る管理サーバ１００の編集用鍵認証処理Ｓ７５０の流れを示すフローチャートである。
図１０を用いて、管理サーバ１００の編集用鍵認証処理Ｓ７５０の流れについて説明する。
【０１１１】
Ｓ７５１において、管理サーバ１００は、受信した機器識別ＩＤ６０４が機器識別ＩＤテーブル１１２（図３参照）に登録されているか否かを処理装置により確認する。
管理サーバ１００は、入力した機器識別ＩＤ６０４が機器識別ＩＤテーブル１１２に登録されていると確認した場合（Ｓ７５１でＹＥＳ）、処理をＳ７５２に進める。
【０１１２】
管理サーバ１００は、受信した機器識別ＩＤ６０４が機器識別ＩＤテーブル１１２に登録されていることが確認できない場合（Ｓ７５１でＮＯ）、処理をＳ７５５に進める。
【０１１３】
Ｓ７５２において、管理サーバ１００は、受信した保守会社情報６６１が、所属会社テーブル１１１に登録され、かつ、受信した機器識別ＩＤ６０４に対応しているか否かについて処理装置により確認する。
管理サーバ１００は、受信した保守会社情報６６１が、所属会社テーブル１１１に登録され、かつ、受信した機器識別ＩＤ６０４に対応していると確認した場合（Ｓ７５２でＹＥＳ）、処理をＳ７５３に進める。
管理サーバ１００は、受信した保守会社情報６６１が、所属会社テーブル１１１に登録されていると確認されない場合、あるいは、受信した機器識別ＩＤ６０４に対応していると確認されない場合（Ｓ７５２でＮＯ）、処理をＳ７５５に進める。
【０１１４】
Ｓ７５３において、管理サーバ１００は、機器識別ＩＤ６０４に対応する編集用鍵６５０を機器識別ＩＤテーブル１１２から取得する。
Ｓ７５４において、管理サーバ１００は、取得した編集用鍵６５０を鍵認証応答に設定する。
一方、Ｓ７５５において、管理サーバ１００は、鍵認証応答に「認証不可」を設定する。すなわち、管理サーバ１００は、機器識別ＩＤ６０４が機器識別ＩＤテーブル１１２に存在しない場合、あるいは存在していても所属会社テーブル１１１において機器識別ＩＤ６０４と保守会社情報６６１とが対応していない場合は、鍵認証応答に「認証不可」を設定する。
【０１１５】
以上で、管理サーバ１００の編集用鍵認証処理Ｓ７５０の説明を終わる。
【０１１６】
図９のＳ２０４において、管理サーバ１００のユーザ通信部１０２は、通信回線４００を介して、鍵認証応答を保守用コンピュータ２５０に送信する。
このとき、編集用鍵認証が成功（認証許可）していれば鍵認証応答には編集用鍵６５０が設定されており、編集用鍵認証が失敗（認証不可）であれば鍵認証応答には認証不可が設定されている。
【０１１７】
図９のＳ２０５において、保守用コンピュータ２５０は、鍵認証応答として編集用鍵６５０を受信すると、コントローラ３００に対して暗号化実行用制御プログラム６５１ａの読み出しを要求する実行用制御プログラム読み出しメッセージ６４０（読み出し命令の一例）を送信する。保守用コンピュータ２５０は、プログラム受信装置の一例である。また、コントローラ通信部２０１は、受信側通信部の一例である。
【０１１８】
コントローラ３００は、保守用コンピュータ２５０から実行用制御プログラム読み出しメッセージ６４０を受信する。コントローラ３００は、実行用制御プログラム保管部３０２から暗号化実行用制御プログラム６５１ａを読み出す。
【０１１９】
このとき、コントローラ３００は、実行用制御プログラム保管部３０２から暗号化実行用制御プログラム６５１ａと実行用鍵６５２とを読み出し、復号部３０６に入力してもよい。復号部３０６は、暗号化実行用制御プログラム６５１ａと実行用鍵６５２とに基づいて、暗号化実行用制御プログラム６５１ａを実行用制御プログラム６５１に復号する。コントローラ３００の通信制御部３０１は、復号部３０６により復号された実行用制御プログラム６５１を保守用コンピュータ２５０に送信するとしてもよい。
ただし、本実施の形態では、コントローラ３００は、実行用制御プログラム保管部３０２から暗号化実行用制御プログラム６５１ａを読み出し、通信制御部３０１は、暗号化実行用制御プログラム６５１ａを保守用コンピュータ２５０に送信するものとする。
【０１２０】
保守用コンピュータ２５０のコントローラ通信部２０１は、コントローラ３００から暗号化実行用制御プログラム６５１ａを受信する。
保守用コンピュータ２５０のコントローラ通信部２０１は、受信した暗号化実行用制御プログラム６５１ａを制御プログラム管理部２０２に入力する。
保守用コンピュータ２５０は、管理サーバ１００から受信した編集用鍵６５０とコントローラ３００から受信した暗号化実行用制御プログラム６５１ａとに基づいて、暗号化実行用制御プログラム６５１ａを閲覧可能な制御プログラム２２０に変換する制御プログラム変換処理Ｓ７６０を実行する。
【０１２１】
以下に、保守用コンピュータ２５０における制御プログラム変換処理Ｓ７６０について説明する。
制御プログラム管理部２０２の復号部２２４は、編集用鍵６５０と暗号化実行用制御プログラム６５１ａとを入力し、暗号化実行用制御プログラム６５１ａを実行用制御プログラム６５１に復号する。
また、制御プログラム管理部２０２の実行用プログラム変換部２２１は、編集用鍵６５０と実行用制御プログラム６５１とを入力し、実行用制御プログラム６５１を閲覧・編集が可能な制御プログラム２２０に変換する。
【０１２２】
保守用コンピュータ２５０は、ログイン（Ｓ１０１〜Ｓ１０２）したユーザによる制御プログラムの読み出し要求を受け付ける。保守用コンピュータ２５０は、制御プログラム変換処理Ｓ７６０を実行し、閲覧・編集が可能な制御プログラム２２０を取得する。その後、保守用コンピュータ２５０は、ユーザの操作により、例えば、制御プログラム２２０の保守・編集・変更・修正等の処理を実行する。
【０１２３】
保守用コンピュータ２５０は、ユーザによる要求に基づいて、閲覧可能な制御プログラム２２０に対して保守・編集・変更・修正等の処理を施し、変更後制御プログラム２２０ａを生成する。
【０１２４】
図５のＳ７２０の処理により、保守用コンピュータ２５０は、変更後制御プログラム２２０ａを実行用のプログラムに変換し、さらに、変換した変更後制御プログラム２２０ａを暗号化し、暗号化実行用変更後制御プログラム２２１ａを生成する。保守用コンピュータ２５０は、このとき、新たに編集用鍵６５０、実行用鍵６５２を生成する。
Ｓ１０３〜Ｓ１０７の処理により、保守用コンピュータ２５０は、新たな編集用鍵６５０を管理サーバ１００に登録する。また、保守用コンピュータ２５０は、新たな実行用鍵６５２と、暗号化実行用変更後制御プログラム２２１ａとをコントローラ３００に送信する。
【０１２５】
以上のように、本実施の形態に係る保守用コンピュータ２５０は、編集用鍵６５０を受けるとコントローラ３００から実行用制御プログラム６５１を読み出し、編集用鍵６５０を復号部２２４に入力して実行用制御プログラムの閲覧に必要な情報を復号し、実行用制御プログラム６５１を閲覧可能な制御プログラム２２０に変換する。
【０１２６】
以上のように、本実施の形態に係る制御システム８００は、コントローラ（コントローラ３００）との間で制御プログラムを読み書きする第二のコンピュータ（保守用コンピュータ２５０）により、コントローラから制御プログラムを読み込むときに使用する、以下のような手段を備える。
【０１２７】
前記サーバ（管理サーバ１００）は、前記制御プログラムを読み込むユーザと所属会社とを認証し、前記第二のコンピュータに対して読み込みの許可を判断する認証手段を備える。
前記第二のコンピュータは、前記コントローラから機器識別ＩＤを読み込み、前記サーバに通知する手段を備える。
前記サーバは、前記第二のコンピュータから前記機器識別ＩＤを受信すると、前記機器識別ＩＤに対応する前記制御プログラムの閲覧を可能とするための暗号鍵（編集用鍵６５０）を前記第二のコンピュータに送信する手段を備える。
前記第二のコンピュータは、前記サーバから前記暗号鍵（編集用鍵６５０）を受信すると、前記コントローラから制御プログラム（暗号化実行用制御プログラム６５１ａ、あるいは、実行用制御プログラム６５１）を読み込み、前記暗号鍵を用いて、前記制御プログラムの閲覧ができるようにする手段を備える。
【０１２８】
以上のように、本実施の形態に係る制御システム８００によれば、ＰＬＣ（例えば、コントローラ３００）の制御プログラムを書き込む会社と、ＰＬＣの制御プログラムを読み出す会社が異なっても、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護しつつ、ＰＬＣからの実行用制御プログラムの読出しや、ＰＬＣへの実行用制御プログラム書き込みの利便性を高くすることができる。
【０１２９】
実施の形態３．
本実施の形態では、実施の形態１と異なる点について説明する。本実施の形態では、実施の形態１で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【０１３０】
図１１は、本実施の形態に係る制御システム８０１のブロック構成図である。図１２は、本実施の形態に係る制御システム８０１において、開発用コンピュータ２００からコントローラ３００，３００ａ，３００ｂに対し暗号化実行用制御プログラム６５１ａを書き出す手順を示すシーケンス図である。
図１１及び図１２を用いて、本実施の形態に係る制御システム８０１において、開発用コンピュータ２００からコントローラ３００，３００ａ，３００ｂに対し暗号化実行用制御プログラム６５１ａを書き出す手順について説明する。
【０１３１】
図１１は、実施の形態１で説明した図１に対応する図であり、図１と同様の機能構成については同一の符号を付し、その説明を省略する。図１２は、実施の形態１で説明した図５に対応する図であり、図５と同様の機能構成については同一の符号を付し、その説明を省略する。
【０１３２】
図１１に示すように、制御システム８０１において、実施の形態１で説明した制御システム８００と異なる点は、複数のコントローラ３００，３００ａ，３００ｂが通信回線４０２，４０３，４０４を介して各コントローラと接続された構成になっている点である。
【０１３３】
図１１に示すように、コントローラ３００は、通信回線４０２を介してコントローラ３００ａと接続される。また、コントローラ３００は、通信回線４０３を介してコントローラ３００ｂと接続される。コントローラ３００ａとコントローラ３００ｂとは、通信回線４０４を介して接続されている。
コントローラ３００ａとコントローラ３００ｂとは、コントローラ３００（制御装置）に接続される隣接接続装置の一例である。
【０１３４】
図１２では、制御システム８０１において、開発用コンピュータ２００が、ユーザによる実行用制御プログラム書き出し要求を受けて、コントローラ３００への実行用制御プログラム書き出し処理を実行し、コントローラ３００に暗号化実行用制御プログラム６５１ａを書き出すまでの処理の流れを示したものである。
【０１３５】
図１２に示した手順について説明する。
図１２のＳ１０１〜Ｓ１０２は、図５のＳ１０１〜Ｓ１０２と同様の処理である。
開発用コンピュータ２００は、コントローラ３００への実行用制御プログラム書き出し処理を実行するとき、まず、ユーザＩＤ６０１、パスワード６０２、開発会社情報６５３を管理サーバ１００に通知する（Ｓ１０１）。
管理サーバ１００は、通知を受けるとユーザ認証処理Ｓ７１０を実行し、認証結果６０３を開発用コンピュータ２００に対して応答する（Ｓ１０２）。
【０１３６】
図１２の制御プログラム変換処理Ｓ７２０は、図５の制御プログラム変換処理Ｓ７２０と同様の処理である。
開発用コンピュータ２００の制御プログラム管理部２０２は、管理サーバ１００から認証結果６０３をサーバ通信部２０３経由で受け取る。そして、制御プログラム管理部２０２は、受け取った認証結果６０３を確認し、認証許可であれば、制御プログラム変換処理Ｓ７２０を実行する。
【０１３７】
図１３は、本実施の形態に係る開発用コンピュータ２００の制御プログラム変換処理７２０の流れを示すフローチャートである。
図１２及び図１３を用いて、開発用コンピュータ２００の制御プログラム管理部２０２による制御プログラム変換処理Ｓ７２０について説明する。
【０１３８】
図１２のＳ７２１は、図５及び図７のＳ７２１と同様の処理である。
図１２のＳ７２１において、開発用コンピュータ２００の制御プログラム管理部２０２は、コントローラ３００に対して機器識別ＩＤ問合せメッセージ６０５をコントローラ３００に対して送信する（Ｓ７２１）。
【０１３９】
コントローラ３００は、機器識別ＩＤ問合せメッセージ６０５を受信すると、コントローラ３００ａとコントローラ３００ｂに対して、それぞれ機器識別ＩＤ問合せメッセージ６０６、６０８を送信する（Ｓ７２１−１，Ｓ７２１−３）。
【０１４０】
コントローラ３００ａは、機器識別ＩＤ問合せメッセージ６０６を受信すると、コントローラ３００ａの機器識別ＩＤ６０７をコントローラ３００に通知する（Ｓ７２１−２）。コントローラ３００ｂは、機器識別ＩＤ問合せメッセージ６０８を受信すると、コントローラ３００ｂの機器識別ＩＤ６０９をコントローラ３００に通知する（Ｓ７２１−４）。
【０１４１】
コントローラ３００は、コントローラ３００ａ，３００ｂから機器識別ＩＤ６０７，６０９を受信すると、受信した機器識別ＩＤ６０７，６０９をもとにコントローラ３００と隣接しているコントローラ３００ａ，３００ｂ（ＰＬＣ）の情報を隣接ＰＬＣ情報６１４として作成する。
【０１４２】
隣接ＰＬＣ情報６１４は、コントローラ３００（制御装置）とコントローラ３００ａ，３００ｂ（隣接接続装置）との接続関係を含む隣接情報の一例である。
コントローラ３００は、機器識別ＩＤ６０４と隣接ＰＬＣ情報６１４とを、開発用コンピュータ２００の制御プログラム管理部２０２に通知する。
【０１４３】
なお、本実施の形態では、隣接ＰＬＣ情報６１４は、コントローラ３００において作成される例を示した。しかし、開発用コンピュータ２００でも、コントローラ３００ａの機器識別ＩＤ６０７とコントローラ３００ｂの機器識別ＩＤ６０９とを取得することによって作成することができる。
【０１４４】
図１３のＳ７２６において、開発用コンピュータ２００の制御プログラム管理部２０２は、コントローラ３００から機器識別ＩＤ６０４と隣接ＰＬＣ情報６１４を受信する。
【０１４５】
図１３のＳ７２３は、図７のＳ７２３と同様の処理である。
Ｓ７２３において、制御プログラム管理部２０２は、制御プログラム２２０をコントローラ３００において実行可能な実行用制御プログラム６５１に変換する。
【０１４６】
図１３のＳ７２７において、制御プログラム管理部２０２は、隣接ＰＬＣ情報６１４と機器識別ＩＤ６０４とを暗号鍵生成部２２３に入力する。暗号鍵生成部２２３は、隣接ＰＬＣ情報６１４と機器識別ＩＤ６０４とに基づいて、実行用制御プログラム６５１を暗号化し、暗号化実行用制御プログラム６５１ａを生成するとともに、制御プログラム２２０の閲覧に必要な編集用鍵６５０と、コントローラ３００の実行用制御プログラムを実行するために必要な実行用鍵６５２とを生成する。
【０１４７】
図１３のＳ７２５は、図７のＳ７２５と同様の処理であるため説明を省略する。
【０１４８】
図１２のＳ１０３〜Ｓ１０４は、図５のＳ１０３〜Ｓ１０４と同様の処理である。
開発用コンピュータ２００のコントローラ通信部２０１は、暗号化実行用制御プログラム６５１ａと実行用鍵６５２とをコントローラ３００に送信する（Ｓ１０３，Ｓ１０４）。
【０１４９】
また、開発用コンピュータ２００のサーバ通信部２０３は、管理サーバ１００に対して、編集用鍵６５０と隣接ＰＬＣ情報６１４とを送信する。
【０１５０】
図１２のＳ１０５ａ〜Ｓ１０７において、開発用コンピュータ２００のサーバ通信部２０３は、管理サーバ１００に対して、編集用鍵６５０、隣接ＰＬＣ情報６１４、開発会社情報６５３、保守会社情報６６１を、通信回線４００を介して送信する。
図１２のＳ１０５ａ〜Ｓ１０７は、図５のＳ１０５〜Ｓ１０７と同様の処理であるが、機器識別ＩＤ６０４に替えて隣接ＰＬＣ情報６１４を管理サーバ１００に送信する点が異なる。
【０１５１】
管理サーバ１００のユーザ通信部１０２は、開発用コンピュータ２００から編集用鍵６５０、隣接ＰＬＣ情報６１４、開発会社情報６５３、保守会社情報６６１を受信する。管理サーバ１００は、編集用鍵登録処理Ｓ７３０によって、ユーザ管理テーブル１０１に編集用鍵６５０隣接ＰＬＣ情報６１４、開発会社情報６５３、保守会社情報６６１を登録する。
【０１５２】
管理サーバ１００の編集用鍵登録処理Ｓ７３０は、図８で説明した管理サーバ１００の編集用鍵登録処理Ｓ７３０と同様であるが、機器識別ＩＤ６０４に替えて隣接ＰＬＣ情報６１４を機器識別ＩＤテーブル１１２に登録する点が異なっている。
【０１５３】
以上のように、本実施の形態に係る制御システム８０１は、第一のコントローラ（コントローラ３００）と、第三の通信回線（通信回線４０２）によって第一のコントローラに接続された第二のコントローラ（コントローラ３００ａ）と、第一のコントローラとの間で制御プログラムの読み書きを行う第一のコンピュータ（開発用コンピュータ２００）と、第二の通信回線（通信回線４００）によって前記第一のコンピュータに接続されるサーバ（管理サーバ１００）とを備えた制御システムである。
【０１５４】
本実施の形態に係る制御システム８０１は、前記第一のコンピュータから制御プログラムを前記第一のコントローラに書き込むとき、以下の処理を行う手段を備える。
前記サーバは、前記第一のコンピュータを使って書き込むユーザと所属会社を認証し、前記コンピュータに対して書き込みの許可を判断する認証手段を備える。
前記第一のコントローラは、通信回線を通じて接続されている第二のコントローラに関する識別情報を読み込み、第一および第二のコントローラが隣接していることを示す隣接情報（隣接ＰＬＣ情報６１４）を作成する手段を備える。
前記第一のコンピュータは、前記第一のコントローラから前記隣接情報を読み込み、前記制御プログラムの閲覧を可能とするための暗号鍵（編集用鍵６５０）と、前記制御プログラムの実行を可能とするための暗号鍵（実行用鍵６５２）とを作成する鍵生成手段を備える。
前記第一のコンピュータは、さらに、前記鍵生成手段によって生成された、制御プログラムの閲覧と制御プログラムの実行を可能とするための暗号鍵を前記第一のコントローラに書き込む手段を備える。
前記サーバは、前記第一のコンピュータの所属会社情報と、前記隣接情報と、前記制御プログラムの閲覧を可能とするための暗号鍵とを保管する手段を備える。
【０１５５】
以上のように、本実施の形態に係る制御システム８０１によれば、複数のコントローラ（ＰＬＣ）間の組み合わせ及び接続関係を示す隣接ＰＬＣ情報が管理サーバに登録されている隣接ＰＬＣ情報と一致したときに限り、制御プログラムの閲覧に必要な編集用鍵を取得することができ、制御プログラムの実行が許可されるようになり、制御プログラムの機密性を向上させることが可能になる。
【０１５６】
実施の形態４．
本実施の形態では、実施の形態１〜３と異なる点について説明する。本実施の形態では、実施の形態１〜３で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【０１５７】
本実施の形態では、実施の形態３で説明した制御システム８０１において、保守用コンピュータ２５０により、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出し、閲覧・編集可能な制御プログラム２２０に変換するまでの処理について説明する。
【０１５８】
図１４は、本実施の形態に係る制御システム８０１において、コントローラ３００から保守用コンピュータ２５０に暗号化実行用制御プログラム６５１ａを読み出す手順を示すシーケンス図である。
図１４を用いて、保守用コンピュータ２５０が、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出し、読み出した暗号化実行用制御プログラム６５１ａを閲覧可能な制御プログラム２２０に変換するまでの手順について説明する。
【０１５９】
図１４のＳ１０１〜Ｓ１０２は、図９のＳ１０１〜Ｓ１０２と同様の処理である。
図１４のＳ１０１において、ユーザにより、保守用コンピュータ２５０にてコントローラ３００からの実行用制御プログラム読み出し操作を実行したとき、保守用コンピュータ２５０は、ユーザＩＤ６１１、パスワード６１２、保守会社情報６６１を管理サーバ１００に通知し、管理サーバ１００にてユーザ認証処理Ｓ７１０を実行する。
【０１６０】
図１４のＳ２０１は、図９のＳ２０１と同様の処理である。
保守用コンピュータ２５０の制御プログラム管理部２０２は、受け取った認証結果６０３を確認し、認証許可であれば、コントローラ３００に対して機器識別ＩＤ問合せメッセージ６０５を送信する（Ｓ２０１）。
【０１６１】
コントローラ３００は、機器識別ＩＤ問合せメッセージ６０５を受信すると、コントローラ３００ａとコントローラ３００ｂに対して、それぞれ機器識別ＩＤ問合せメッセージ６０６，６０８を送信する（Ｓ２０１−１，Ｓ２０１−３）。
【０１６２】
コントローラ３００ａは、機器識別ＩＤ問合せメッセージ６０６を受信すると、コントローラ３００ａの機器識別ＩＤ６０７をコントローラ３００に通知する（Ｓ２０１−２）。
コントローラ３００ｂは、機器識別ＩＤ問合せメッセージ６０８を受信すると、コントローラ３００ｂの機器識別ＩＤ６０９をコントローラ３００に通知する（Ｓ２０１−４）。
【０１６３】
コントローラ３００は、コントローラ３００ａ，３００ｂから機器識別ＩＤ６０７，６０９を受信すると、受信した機器識別ＩＤ６０７，６０９をもとにコントローラ３００と隣接しているコントローラ３００ａ，３００ｂの情報を隣接ＰＬＣ情報６１４として作成する。
図１４のＳ２０２ａにおいて、コントローラ３００は、コントローラ３００の機器識別ＩＤ６０４とともに、隣接ＰＬＣ情報６１４を開発用コンピュータ２００の制御プログラム管理部２０２に通知する。
【０１６４】
図１４のＳ２０３ａにおいて、保守用コンピュータ２５０の制御プログラム管理部２０２は、取得した隣接ＰＬＣ情報６１４と保守会社情報６６１とを管理サーバ１００に通知する。
【０１６５】
管理サーバ１００は、保守用コンピュータ２５０から隣接ＰＬＣ情報６１４と保守会社情報６６１とを受信すると、編集用鍵認証処理Ｓ７５０を実行する。
管理サーバ１００による編集用鍵認証処理Ｓ７５０は、図９及び図１０で説明した編集用鍵認証処理Ｓ７５０と同様の処理である。ただし、本実施の形態では、管理サーバ１００は、機器識別ＩＤ６０４に替えて、隣接ＰＬＣ情報６１４により機器識別ＩＤテーブル１１２を検索して、編集用鍵６５０を取得する。
【０１６６】
図１４のＳ２０４〜Ｓ２０６及び制御プログラム変換処理Ｓ７６０の処理は、図９のＳ２０４〜Ｓ２０６及び制御プログラム変換処理Ｓ７６０の処理と同様である。
本実施の形態に係る管理サーバ１００による編集用鍵認証処理Ｓ７５０では、管理サーバ１００は、隣接ＰＬＣ情報６１４と保守会社情報６６１とを確認し、合致するものがあれば隣接ＰＬＣ情報６１４に対応する編集用鍵６５０を検索し、得られた編集用鍵６５０を保守用コンピュータ２５０に送信する（Ｓ２０４）。
【０１６７】
保守用コンピュータ２５０は、編集用鍵６５０を受信すると、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出す（Ｓ２０５，Ｓ２０６）。
保守用コンピュータ２５０は、編集用鍵６５０を復号部２２４に入力して暗号化実行用制御プログラム６５１ａの閲覧に必要な情報を復号し、実行用制御プログラム６５１を閲覧可能な制御プログラム２２０に変換する。
【０１６８】
図１４の制御プログラム変換処理Ｓ７６０は、図９の制御プログラム変換処理Ｓ７６０と同様であるため説明を省略する。
【０１６９】
以上のように、本実施の形態に係る制御システム８０１は、前記コンピュータ（保守用コンピュータ２５０）にて前記第一のコントローラ（コントローラ３００）から制御プログラム２２０を読み込むときに使用する、以下の手段を備える。
前記サーバ（管理サーバ１００）は、前記コンピュータを使って書き込む操作を実行するユーザのユーザＩＤと所属会社とを認証し、前記コンピュータに対して書き込みの許可を判断する認証手段を備える。
前記第一のコントローラは、通信回線を通じて接続されている第二のコントローラ（コントローラ３００ａ）に関する識別情報（機器識別ＩＤ）を読み込み、第一および第二のコントローラが隣接していることを示す隣接情報（隣接ＰＬＣ情報６１４）を作成する手段を備える。
前記コンピュータは、前記第一のコントローラから、前記隣接情報を前記サーバに通知する手段を備える。
前記サーバは、前記コンピュータから前記隣接情報を受信すると、前記隣接情報に対応する前記制御プログラムの閲覧を可能とするための暗号鍵（編集用鍵６５０）を前記コンピュータに送信する手段を備える。
前記コンピュータは、前記サーバから前記暗号鍵を受信すると、前記第一のコントローラから制御プログラムを読み込み、前記暗号鍵を用いて、前記制御プログラムの閲覧できるようにする手段を備える。
【０１７０】
以上のように、本実施の形態に係る制御システム８０１によれば、複数のコントローラ（ＰＬＣ）間の組み合わせ及び接続関係を示す隣接ＰＬＣ情報が管理サーバに登録されている隣接ＰＬＣ情報と一致したときに限り、制御プログラムの閲覧に必要な編集用鍵の取得や、制御プログラムの実行が許可されるようになり、制御プログラムの機密性を向上させることが可能になる。
【０１７１】
本実施の形態に係る制御システム８０１によれば、ＰＬＣの制御プログラムを書き込む会社と、ＰＬＣの制御プログラムを読み出す会社が異なっても、ＰＬＣからの実行用制御プログラムの読出しや、ＰＬＣへの実行用制御プログラムの書き込みの利便性を高くすることができる。
【０１７２】
実施の形態５．
本実施の形態では、主に、実施の形態１〜４と異なる点について説明する。特に、本実施の形態では、実施の形態１と異なる点について説明する。本実施の形態では、実施の形態１で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【０１７３】
図１５は、本実施の形態に係る制御システム８０２のブロック構成図である。図１６は、本実施の形態に係る管理サーバ１００が備える機器識別ＩＤテーブル１１２の構成図である。図１７は、本実施の形態に係る開発用コンピュータ２００の詳細ブロック構成図である。図１８は、本実施の形態に係る制御システム８０２において、開発用コンピュータ２００からコントローラ３００に対し暗号化実行用制御プログラム６５１ａを書き出す手順を示すシーケンス図である。
【０１７４】
図１５〜図１７は、実施の形態１で説明した図１〜図３に対応し、図１〜図３に記載した機能構成と同様の機能構成には同一の符号を付し、その説明を省略する場合もあるものとする。また、図１８は、実施の形態１で説明した図５に対応し、図５に記載した機能構成と同様の機能構成には同一の符号を付し、その説明を省略する場合もあるものとする。
【０１７５】
図１５に示すように、管理サーバ１００は、時刻管理部１０３を備える。
時刻管理部１０３は、暗号鍵（編集用鍵６５０）の有効期限を管理する。時刻管理部１０３は、通信回線４０５を介して、時刻管理サーバ７００（現在時刻管理サーバ）と接続されている。
【０１７６】
図１６に示すように、管理サーバ１００の機器識別ＩＤテーブル１１２は、機器識別ＩＤ６０４に対応する情報として、編集用鍵６５０に加え、有効期限情報６７０を備えている。有効期限情報６７０は、対応する編集用鍵６５０の有効期限を示す情報である。
【０１７７】
図１７に示すように、制御プログラム管理部２０２は、実施の形態１で説明した機能構成に加え、有効期限管理部２２８を備える。
有効期限管理部２２８は、ユーザが設定した有効期限を管理する。
【０１７８】
図１８では、制御システム８０２において、開発用コンピュータ２００がコントローラ３００へ実行用制御プログラム書き出し処理を実行してから、コントローラ３００に暗号化実行用制御プログラム６５１ａが書き出されるまでの処理の流れを示したものである。
まず、開発用コンピュータ２００から制御プログラムの暗号化実行用制御プログラム６５１ａを書き込む手順について、図１８を用いて説明する。
【０１７９】
図１８のＳ１０１〜Ｓ１０２は、図５のＳ１０１〜Ｓ１０２と同様の処理である。
開発用コンピュータ２００は、ユーザからコントローラ３００への実行用制御プログラム書き出し要求を受け付けるとき、まず、ユーザにより入力されたユーザＩＤ６０１、パスワード６０２、開発会社情報６５３を管理サーバ１００に通知する（Ｓ１０１）。
管理サーバ１００は、通知を受けるとユーザ認証処理Ｓ７１０を実行し、認証結果６０３を開発用コンピュータ２００に対して応答する（Ｓ１０２）。
【０１８０】
開発用コンピュータ２００は、管理サーバ１００から認証結果６０３を受け取り、認証結果６０３の内容が認証許可であれば、有効期限設定処理Ｓ８１０を実行する。
図１９は、本実施の形態に係る開発用コンピュータ２００の有効期限設定処理Ｓ８１０の流れを示すフローチャートである。
図１９を用いて、開発用コンピュータ２００の有効期限設定処理Ｓ８１０について説明する。
【０１８１】
Ｓ８１１において、実行用プログラム変換部２２１は、ユーザ操作受付部２２２に有効期限の入力を求めるメッセージを通知する。ユーザ操作受付部２２２は、開発用コンピュータ２００の表示画面に有効期限の入力を促すメッセージ（有効期限設定画面）を表示する。
【０１８２】
Ｓ８１２において、ユーザ操作受付部２２２は、ユーザにより有効期限設定画面に入力された入力値を実行用プログラム変換部２２１へ通知する。実行用プログラム変換部２２１は、入力値の通知を受けると、有効期限管理部２２８の設定値を入力値に更新することで、有効期間６７３が設定される。
ユーザ操作受付部２２２は、編集用鍵６５０の有効期間の入力を受け付ける送信側受付部の一例である。
【０１８３】
次に、開発用コンピュータ２００は、制御プログラム変換処理Ｓ７２０を実行する。図１８の制御プログラム変換処理Ｓ７２０は、図５の制御プログラム変換処理Ｓ７２０と同様の処理であるため、その説明を省略する。
【０１８４】
次に、開発用コンピュータ２００は、Ｓ１０３〜Ｓ１０８の処理を実行する。図１８のＳ１０３〜Ｓ１０７の処理は、図５のＳ１０３〜Ｓ１０７の処理と同様の処理である。
制御プログラム変換処理Ｓ７２０が完了すると、開発用コンピュータ２００のサーバ通信部２０３は、編集用鍵６５０、開発会社情報６５３（保守会社情報６６１）、機器識別ＩＤ６０４を管理サーバ１００に送信する（Ｓ１０５〜Ｓ１０７）。
また、開発用コンピュータ２００のサーバ通信部２０３は、暗号化実行用制御プログラム６５１ａと実行用鍵６５２とをコントローラ３００に送信する（Ｓ１０３〜Ｓ１０４）。
【０１８５】
Ｓ１０８において、開発用コンピュータ２００のサーバ通信部２０３は、編集用鍵６５０、開発会社情報６５３（保守会社情報６６１）、機器識別ＩＤ６０４に加え、有効期間６７３を管理サーバ１００に送信する。
【０１８６】
管理サーバ１００は、開発用コンピュータ２００から、編集用鍵６５０、開発会社情報６５３（保守会社情報６６１）、機器識別ＩＤ６０４、有効期間６７３を受信する。管理サーバ１００は、開発用コンピュータ２００から、編集用鍵６５０、開発会社情報６５３（保守会社情報６６１）、機器識別ＩＤ６０４、有効期間６７３を受信すると、編集用鍵登録処理Ｓ７７０を実行する。
【０１８７】
図２０は、本実施の形態に係る管理サーバ１００の編集用鍵登録処理Ｓ７７０の流れを示すフローチャートである。
図２０を用いて管理サーバ１００の編集用鍵登録処理Ｓ７７０について説明する。
【０１８８】
Ｓ７７１〜Ｓ７７２において、管理サーバ１００は、ユーザテーブル１１０に基づいて、ログインしているユーザＩＤと、受信した開発会社情報６５３と保守会社情報６６１とが対応しているか否かを処理装置により確認する。
【０１８９】
管理サーバ１００は、ユーザＩＤと、受信した開発会社情報６５３と保守会社情報６６１とが対応していると判定した場合には、処理をＳ７７３に進める。
管理サーバ１００は、ユーザＩＤと、受信した開発会社情報６５３と保守会社情報６６１とが対応していないと判定した場合には、処理を終了する。
【０１９０】
Ｓ７７３において、管理サーバ１００は、開発会社情報６５３と機器識別ＩＤ６０４とを対応付けて所属会社テーブル１１１に登録する。この処理は、図８のＳ７３１の処理と同様である。
Ｓ７７４において、管理サーバ１００は、保守会社情報６６１と機器識別ＩＤ６０４とを対応付けて所属会社テーブル１１１に登録する。この処理は、図８のＳ７３２の処理と同様である。
【０１９１】
Ｓ７７５において、管理サーバ１００は、時刻管理サーバ７００に対して現在時刻問合せメッセージ６７１を送信する（Ｓ７７５ａ）。時刻管理サーバ７００は、管理サーバ１００から現在時刻問合せメッセージ６７１を受信すると、現在時刻６７２を管理サーバ１００に送信する（Ｓ７７５ｂ）。
【０１９２】
Ｓ７７６において、管理サーバ１００は、時刻管理サーバ７００から取得した現在時刻６７２に、開発用コンピュータ２００から受信した有効期間６７３を処理装置により加算し、有効期限情報６７０（有効期限）とする。
【０１９３】
管理サーバ１００は、開発用コンピュータ２００から受信した機器識別ＩＤ６０４に対し、開発用コンピュータ２００から受信した編集用鍵６５０と、算出した有効期限情報６７０とを対応付けて機器識別ＩＤテーブル１１２に設定する。管理サーバ１００は、機器識別ＩＤテーブル１１２に、既に受信した機器識別ＩＤ６０４のレコードが設定されている場合には、編集用鍵６５０と有効期限情報６７０とを更新する。
【０１９４】
図２１は、本実施の形態に係る管理サーバ１００の有効期限確認処理Ｓ７９０の流れを示すフローチャートである。
管理サーバ１００は、定期的にあるいは不定期に、図２１に示す有効期限確認処理Ｓ７９０を実行する。
【０１９５】
Ｓ７９１において、管理サーバ１００は、時刻管理サーバ７００に対して現在時刻問合せメッセージ６７１を送信し、時刻管理サーバ７００から現在時刻６７２を取得する。
Ｓ７９２において、管理サーバ１００は、取得した現在時刻６７２が、有効期限情報６７０に示される有効期限に到達したか否かについて処理装置により判定する。
【０１９６】
管理サーバ１００は、現在時刻６７２が有効期限情報６７０に示される有効期限に到達していると判定した場合（Ｓ７９２にてＹＥＳ）、処理をＳ７９３に進める。
Ｓ７９３において、管理サーバ１００は、現在時刻６７２が有効期限情報６７０に示される有効期限に到達しているレコードの編集用鍵６５０を無効化する。管理サーバ１００は、例えば、機器識別ＩＤテーブル１１２の編集用鍵６５０の欄に、「ＮＵＬＬ」を設定することにより、編集用鍵６５０を無効化する。
【０１９７】
管理サーバ１００は、現在時刻６７２が有効期限情報６７０に示される有効期限に到達していないと判定した場合（Ｓ７９２にてＮＯ）、処理を終了する。管理サーバ１００は、この有効期限確認処理Ｓ７９０を、機器識別ＩＤテーブル１１２のすべてのレコードに対して実行する。
【０１９８】
以上のように、本実施の形態に係る制御システム８０２は、サーバ（管理サーバ１００）と第四の通信回線（通信回線４０５）で接続された時刻管理サーバ７００を備えている。
【０１９９】
また、本実施の形態に係る制御システム８０２は、以下の手段を備える。
前記サーバは、時刻サーバ（時刻管理サーバ７００）から現在時刻を取得し、前記現在時刻に前記第一のコンピュータ（開発用コンピュータ２００）から通知された時間（有効期間６７３）を加算することで、前記暗号鍵（編集用鍵６５０）に関する有効期限を設定する手段を備える。
前記サーバは、設定された有効期限を経過すると、前記暗号鍵を消去する手段を備える。
【０２００】
以上のように、本実施の形態に係る制御システム８０２によれば、制御プログラムの閲覧、実行に必要な鍵に対して有効期限を制御できることから、ネットワーク品質が悪く、制御プログラムを閲覧、編集するコンピュータを常時ネットワークに接続できない環境において、コンピュータの不正操作から制御プログラムを守るのに有効な手段となる。
【０２０１】
また、本実施の形態に係る制御システム８０２によれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぐことができる。
【０２０２】
実施の形態６．
本実施の形態では、主に、実施の形態１〜５と異なる点について説明する。特に、本実施の形態では、実施の形態２，５と異なる点について説明する。本実施の形態では、実施の形態２，５で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【０２０３】
図２２は、本実施の形態に係る制御システム８０２において、コントローラ３００から保守用コンピュータ２５０に暗号化実行用制御プログラム６５１ａを読み出す手順を示すシーケンス図である。図２３は、本実施の形態に係る管理サーバ１００の編集用鍵認証処理Ｓ７８０の流れを示すフローチャートである。
【０２０４】
本実施の形態では、実施の形態５で説明した制御システム８０２において、保守用コンピュータ２５０により、コントローラ３００から暗号化実行用制御プログラム６５１ａを読み出し、閲覧・編集可能な制御プログラム２２０に変換するまでの処理について説明する。
【０２０５】
本実施の形態に係る制御システム８０２は、実施の形態５で説明した制御システム８０２に加えて、保守用コンピュータ２５０を備える。
保守用コンピュータ２５０の内部構成は、実施の形態５で説明した開発用コンピュータ２００と同様の内部構成である。
また、本実施の形態に係る管理サーバ１００に記憶されている機器識別ＩＤテーブル１１２は、実施の形態５の図１６で説明した機器識別ＩＤテーブル１１２である。
【０２０６】
図２２のＳ２５１において、保守用コンピュータ２５０は、管理サーバ１００に対して、現在時刻問合せメッセージ６７１を送信する。
図２２のＳ２５２において、管理サーバ１００は、現在時刻問合せメッセージ６７１を受信すると、現在時刻６７２を保守用コンピュータ２５０に対して送信する。
保守用コンピュータ２５０は、管理サーバ１００から現在時刻６７２を受信すると、自保守用コンピュータ２５０の時刻を現在時刻６７２に合わせる。これにより、仮に保守用コンピュータ２５０で独自に時刻が変更されていても、有効期限までの差分を正しく制御することが可能となる。
【０２０７】
図２２のＳ１０１〜Ｓ１０２の処理、ユーザ認証処理Ｓ７１０、及びＳ２０１〜２０６の処理は、図９のＳ１０１〜Ｓ１０２の処理、ユーザ認証処理Ｓ７１０、及びＳ２０１〜２０６の処理と同様である。
【０２０８】
現在時刻の設定が完了すると、保守用コンピュータ２５０は、ユーザＩＤ６１１、パスワード６１２、保守会社情報６６１を管理サーバ１００に通知する（Ｓ１０１）。
管理サーバ１００は、ユーザ認証処理Ｓ７１０を実行する。保守用コンピュータ２５０は、管理サーバ１００から認証結果６０３を受信し（Ｓ１０２）、認証結果６０３が認証許可応答であれば、コントローラ３００から機器識別ＩＤ６０４を取得する（Ｓ２０１〜Ｓ２０２）。
【０２０９】
保守用コンピュータ２５０は、機器識別ＩＤ６０４を取得すると、機器識別ＩＤ６０４、保守会社情報６６１とを管理サーバ１００に送信する（Ｓ２０３）。管理サーバ１００は、保守用コンピュータ２５０から機器識別ＩＤ６０４と保守会社情報６６１とを受信すると、編集用鍵認証処理Ｓ７８０を実行する。
【０２１０】
図２３は、本実施の形態に係る管理サーバ１００の編集用鍵認証処理Ｓ７８０の流れを示すフローチャートである。
図２３を用いて、管理サーバ１００の編集用鍵認証処理Ｓ７８０について説明する。
【０２１１】
Ｓ７８１において、管理サーバ１００は、受信した機器識別ＩＤ６０４が機器識別ＩＤテーブル１１２（図３参照）に登録されているか否かを処理装置により確認する。
管理サーバ１００は、入力した機器識別ＩＤ６０４が機器識別ＩＤテーブル１１２に登録されていると確認した場合（Ｓ７８１でＹＥＳ）、処理をＳ７８２に進める。
【０２１２】
管理サーバ１００は、受信した機器識別ＩＤ６０４が機器識別ＩＤテーブル１１２に登録されていないと確認した場合（Ｓ７８１でＮＯ）、処理をＳ７８７に進める。
【０２１３】
Ｓ７８２において、管理サーバ１００は、受信した保守会社情報６６１が、所属会社テーブル１１１に登録され、かつ、受信した機器識別ＩＤ６０４に対応しているか否かについて処理装置により判定する。
管理サーバ１００は、受信した保守会社情報６６１が、所属会社テーブル１１１に登録され、かつ、受信した機器識別ＩＤ６０４に対応していると確認した場合（Ｓ７８２でＹＥＳ）、処理をＳ７８３に進める。
管理サーバ１００は、受信した保守会社情報６６１が、所属会社テーブル１１１に登録されていない、あるいは、受信した機器識別ＩＤ６０４に対応していないことを確認した場合（Ｓ７８２でＮＯ）、処理をＳ７８７に進める。
【０２１４】
Ｓ７８３において、管理サーバ１００は、時刻管理サーバ７００に対して現在時刻問合せメッセージ６７１を送信する（Ｓ７８３ａ）。時刻管理サーバ７００は、管理サーバ１００から現在時刻問合せメッセージ６７１を受信すると、現在時刻６７２を管理サーバ１００に送信する（Ｓ７８３ｂ）。
【０２１５】
Ｓ７８４において、管理サーバ１００は、受信した機器識別ＩＤ６０４に基づいて、機器識別ＩＤテーブル１１２を処理装置により検索し、有効期限情報６７０を取得する。管理サーバ１００は、取得した有効期限情報６７０を確認し、現在時刻が有効期限情報６７０により示される有効期限に到達しているか否かについて処理装置により判定する。
【０２１６】
管理サーバ１００は、現在時刻が有効期限に到達していると判定した場合（Ｓ７８４にてＮＯ）、処理をＳ７８７に進める。
管理サーバ１００は、現在時刻が有効期限に到達していないと判定した場合（Ｓ７８４にてＹＥＳ）、処理をＳ７８５に進める。
【０２１７】
Ｓ７８５において、管理サーバ１００は、受信した機器識別ＩＤ６０４に基づいて、機器識別ＩＤテーブル１１２を処理装置により検索する。管理サーバ１００は、機器識別ＩＤ６０４に対応する編集用鍵６５０を、機器識別ＩＤテーブル１１２から取得する。
Ｓ７８６において、管理サーバ１００は、取得した編集用鍵６５０を鍵認証応答に設定する。
【０２１８】
図２２のＳ２０４において、管理サーバ１００は、編集用鍵６５０を設定した鍵認証応答を保守用コンピュータ２５０に送信する。
【０２１９】
一方、Ｓ７８７において、管理サーバ１００は、鍵認証応答に「認証不可」を設定する。すなわち、管理サーバ１００は、機器識別ＩＤ６０４が機器識別ＩＤテーブル１１２に存在しない、所属会社テーブル１１１において機器識別ＩＤ６０４と保守会社情報６６１との対応が一致しない、あるいは、現在時刻が機器識別ＩＤテーブルに記憶されている有効期限に到達しているなどの場合は、鍵認証応答に「認証不可」を設定する。
以上で、管理サーバ１００の編集用鍵認証処理Ｓ７８０の説明を終わる。
【０２２０】
以上のように、管理サーバ１００は、サーバ側通信部（受信側通信部）から機器識別ＩＤを受信すると、受信した機器識別ＩＤに対応する有効期限を取得するとともに、時刻管理サーバ７００から現在時刻を取得し、取得した現在時刻が有効期限を過ぎているか否かを処理装置により判定する。管理サーバ１００は、取得した現在時刻が有効期限を過ぎていると判定した場合には編集用鍵を消去し、取得した現在時刻が有効期限を過ぎていないと判定した場合には編集用鍵を取得する。管理サーバ１００は、編集用鍵取得部の一例である。
【０２２１】
ユーザ通信部１０２（サーバ側通信部）は、管理サーバ１００（編集用鍵取得部）により取得された編集用鍵を保守用コンピュータ（プログラム受信装置）に送信する。
【０２２２】
以上のように、本実施の形態に係る制御システム８０２は、前記サーバ（管理サーバ１００）と第四の通信回線（通信回線４０５）で接続された時刻管理サーバ７００を備える。
【０２２３】
また、本実施の形態に係る制御システム８０２は、以下の手段を備える。
前記第二のコンピュータ（保守用コンピュータ２５０）は、前記サーバから現在時刻を取得し、前記サーバの現在時刻と合わせる手段を備える。
前記サーバは、時刻管理サーバから現在時刻を取得し、前記暗号鍵（編集用鍵）に関する有効期限を確認する手段を備える。
前記サーバは、前記現在時刻よりも前記有効期限の方が先であれば、前記暗号鍵の送信を許可する手段を備える。
【０２２４】
以上のように、本実施の形態に係る制御システム８０２によれば、制御プログラムの閲覧、実行に必要な鍵に対して有効期限を制御できることから、ネットワーク品質が悪く、制御プログラムを閲覧、編集するコンピュータを常時ネットワークに接続できない環境において、コンピュータの不正操作から制御プログラムを守るのに有効な手段となる。また、この手法によっても、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ、制御プログラムを安全に保護できるとともに、ＰＬＣの制御プログラムを書き込む会社と、ＰＬＣの制御プログラムを読み出す会社が異なっても、ＰＬＣからの実行用制御プログラムの読出しや、ＰＬＣへの実行用制御プログラム書き込みの利便性を高くすることができる。
【０２２５】
以上、実施の形態１〜６について説明したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【０２２６】
上記実施の形態１〜６の説明では、「コントローラ通信部」、「制御プログラム管理部」、「サーバ通信部」、「実行用プログラム変換部」、「ユーザ操作受付部」、「暗号鍵生成部」、「復号部」、「会社管理部」がそれぞれ独立した機能ブロックとして開発用コンピュータ２００を構成している。しかし、これに限られるわけではなく、例えば、「コントローラ通信部」と「サーバ通信部」とをひとつの機能ブロックで実現し、「実行用プログラム変換部」と「暗号鍵生成部」とをひとつの機能ブロックで実現しても良い。あるいは、これらの機能ブロックを、他のどのような組み合わせで開発用コンピュータ２００を構成しても構わない。
また、管理サーバ１００、保守用コンピュータ２５０、コントローラ３００についても同様に、機能ブロックをどのような組み合わせで構成しても構わない。
【符号の説明】
【０２２７】
１００  管理サーバ、１０１  ユーザ管理テーブル、１０２  ユーザ通信部、１０３  時刻管理部、１１０  ユーザテーブル、１１１  所属会社テーブル、１１２  機器識別ＩＤテーブル、１５０  ユーザＩＤ、１５１  ログイン情報、１５２  パスワード、１６０
ユーザＩＤ、１６１  ログイン情報、１６２  パスワード、２００  開発用コンピュータ、２０１  コントローラ通信部、２０２  制御プログラム管理部、２０３  サーバ通信部、２２０  制御プログラム、２２１  実行用プログラム変換部、２２２  ユーザ操作受付部、２２３  暗号鍵生成部、２２４  復号部、２２６  会社管理部、２２７  制御プログラム記憶部、２２８  有効期限管理部、２５０  保守用コンピュータ、３００，３００ａ，３００ｂ  コントローラ、３０１  通信制御部、３０２  実行用制御プログラム保管部、３０３  内部バス、３０４  機器識別ＩＤ管理部、３０５  制御プログラム実行部、３０６  復号部、４００，４０１，４０２，４０３，４０４  通信回線、５００  生産機器、６０１  ユーザＩＤ、６０２  パスワード、６０３  認証結果、６０４，６０７，６０９  機器識別ＩＤ、６０５，６０６，６０８  機器識別ＩＤ問合せメッセージ、６１１
ユーザＩＤ、６１２  パスワード、６１４  隣接ＰＬＣ情報、６４０  実行用制御プログラム読み出しメッセージ、６５０  編集用鍵、６５１  実行用制御プログラム、６５１ａ  暗号化実行用制御プログラム、６５２  実行用鍵、６５３  開発会社情報、６６１  保守会社情報、６７０  有効期限情報、６７１  現在時刻問合せメッセージ、６７３  有効期間、７００  時刻管理サーバ、８００，８０１，８０２  制御システム、９０１  ＬＣＤ、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６
プリンタ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５
通信ボード、９２０  ＨＤＤ、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
0005836504.tif 000002
【図２】
0005836504.tif 000003
【図３】
0005836504.tif 000004
【図４】
0005836504.tif 000005
【図５】
0005836504.tif 000006
【図６】
0005836504.tif 000007
【図７】
0005836504.tif 000008
【図８】
0005836504.tif 000009
【図９】
0005836504.tif 000010
【図１０】
0005836504.tif 000011
【図１１】
0005836504.tif 000012
【図１２】
0005836504.tif 000013
【図１３】
0005836504.tif 000014
【図１４】
0005836504.tif 000015
【図１５】
0005836504.tif 000016
【図１６】
0005836504.tif 000017
【図１７】
0005836504.tif 000018
【図２０】
0005836504.tif 000019
【図２１】
0005836504.tif 000020
【図１８】
0005836504.tif 000021
【図１９】
0005836504.tif 000022
【図２２】
0005836504.tif 000023
【図２３】
0005836504.tif 000024