特表-14097444IP Force 特許公報掲載プロジェクト 2015.5.11 β版

▶ 三菱電機株式会社の特許一覧
再表2014-97444制御システム及びプログラム送信装置及び認証サーバ及びプログラム保護方法及びプログラム送信方法及びプログラム送信装置のプログラム
(19)【発行国】日本国特許庁(JP)
【公報種別】再公表特許(A1)
(11)【国際公開番号】WO/0
(43)【国際公開日】2014年6月26日
【発行日】2017年1月12日
(54)【発明の名称】制御システム及びプログラム送信装置及び認証サーバ及びプログラム保護方法及びプログラム送信方法及びプログラム送信装置のプログラム
(51)【国際特許分類】
   G05B 19/05 20060101AFI20161216BHJP
   H04L 9/08 20060101ALI20161216BHJP
【FI】
   G05B19/05 Z
   H04L9/00 601E
   H04L9/00 601B
【審査請求】有
【予備審査請求】未請求
【全頁数】113
【出願番号】特願2014-552831(P2014-552831)
(21)【国際出願番号】PCT/0/0
(22)【国際出願日】2012年12月20日
(11)【特許番号】特許第5836504号(P5836504)
(45)【特許公報発行日】2015年12月24日
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IS,JP,KE,KG,KM,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US,UZ,VC
(71)【出願人】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
【住所又は居所】東京都千代田区丸の内二丁目7番3号
(74)【代理人】
【識別番号】100099461
【弁理士】
【氏名又は名称】溝井 章司
(74)【代理人】
【識別番号】100187300
【弁理士】
【氏名又は名称】長谷川 靖子
(72)【発明者】
【氏名】勝田 喬雄
【住所又は居所】日本国東京都千代田区丸の内二丁目7番3号 三菱電機株式会社内
【テーマコード(参考)】
5H220
5J104
【Fターム(参考)】
5H220AA06
5H220BB09
5H220CC07
5H220CC09
5H220CX09
5H220HH01
5H220JJ12
5H220JJ19
5H220JJ24
5H220JJ28
5H220JJ29
5H220KK08
5J104EA04
5J104EA16
5J104NA02
5J104NA37
5J104PA07
(57)【要約】
制御プログラムを安全に保護するとともに、特定のユーザに対しては、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くする制御システムを提供することを目的とする。制御システムは、生産機器500を制御するコントローラ300と、生産機器500の制御が記述された制御プログラムをコントローラ300で実行できる実行用制御プログラムに変換するとともに暗号化し、編集用の編集用鍵と実行用の実行用鍵を生成する開発用コンピュータ200と、ユーザの情報を管理する管理サーバ100とを備え、開発用コンピュータ200は、編集用鍵を管理サーバ100のユーザ管理テーブル101に登録するとともに、実行用鍵と実行用制御プログラムとをコントローラ300に送信する。
【特許請求の範囲】
【請求項1】
機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置と、認証サーバとを備える制御システムにおいて、
前記プログラム送信装置は、
前記制御装置を識別する機器識別子を取得する送信側取得部と、
前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する送信側通信部とを備え、
前記認証サーバは、
前記送信側通信部から前記編集用鍵と前記機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子と対応付けて記憶装置に記憶し、
前記制御装置は、
前記送信側通信部により送信された前記実行用鍵と前記暗号化実行用プログラムとを受信し、受信した前記実行用鍵と前記暗号化実行用プログラムとに基づいて前記機器の制御を実行する
ことを特徴とする制御システム。
【請求項2】
前記プログラム送信装置は、
ユーザから前記ユーザの認証に用いる認証情報を受け付ける送信側受付部を備え、
前記送信側通信部は、
前記送信側受付部が受け付けた前記認証情報を前記認証サーバに送信し、
前記認証サーバは、
前記送信側通信部から送信された前記認証情報を受信し、受信した前記認証情報に基づいて前記プログラム送信装置に対するアクセスの許否を処理装置により判定し、前記プログラム送信装置に対するアクセスを許可と判定した場合に認証許可情報を前記プログラム送信装置に送信する認証部を備え、
前記プログラム送信装置は、
前記認証サーバの前記認証部から前記認証許可情報を受信した場合に、前記暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムと前記実行用鍵とを前記制御装置に送信する
ことを特徴とする請求項1に記載の制御システム。
【請求項3】
前記制御装置から前記暗号化実行用プログラムを読み出す読み出し命令を前記制御装置に送信する受信側通信部を備えたプログラム受信装置を備え、
前記制御装置は、
前記受信側通信部から前記読み出し命令を受信すると、前記暗号化実行用プログラムを前記プログラム受信装置に送信し、
前記プログラム受信装置は、
前記機器識別子を取得する受信側取得部を備え、
前記受信側通信部は、
前記受信側取得部により取得された前記機器識別子を前記認証サーバに送信し、
前記認証サーバは、
前記受信側通信部から前記機器識別子を受信すると、受信した前記機器識別子に基づいて、受信した前記機器識別子に対応する前記編集用鍵を取得する編集用鍵取得部と、
前記編集用鍵取得部により取得された前記編集用鍵を前記プログラム受信装置に送信するサーバ側通信部と
を備え、
前記受信側通信部は、
前記サーバ側通信部から送信された前記編集用鍵を受信するとともに、前記読み出し命令に基づいて前記制御装置から送信された前記暗号化実行用プログラムを受信し、
前記プログラム受信装置は、
前記受信側通信部が受信した前記編集用鍵を用いて、前記受信側通信部が受信した前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号した前記実行用プログラムを前記ソースプログラムに変換する受信側変換部を備えることを特徴とする請求項1または2に記載の制御システム。
【請求項4】
前記プログラム受信装置は、
ユーザから前記ユーザの認証に用いる認証情報を受け付ける受信側受付部を備え、
前記受信側通信部は、
前記受信側受付部が受け付けた前記認証情報を前記認証サーバに送信するとともに、前記読み出し命令を前記制御装置に送信し、
前記認証サーバは、
前記受信側通信部から前記認証情報を受信し、受信した前記認証情報に基づいて前記プログラム受信装置に対するアクセスの許否を処理装置により判定し、前記プログラム受信装置に対するアクセスを許可と判定した場合に認証許可情報を前記プログラム受信装置に送信する認証部を備え
前記受信側通信部は、
前記認証サーバの前記認証部から前記認証許可情報を受信した場合に、前記機器識別子を前記認証サーバに送信する
ことを特徴とする請求項3に記載の制御システム。
【請求項5】
現在の時刻を管理する現在時刻管理サーバを備え、
前記プログラム送信装置は、
前記編集用鍵の有効期間の入力を受け付ける送信側受付部を備え、
前記送信側通信部は、さらに、
前記送信側受付部により受け付けられた前記有効期間を前記認証サーバに送信し、
前記認証サーバは、
前記送信側通信部から前記有効期間を受信すると、前記現在時刻管理サーバから現在時刻を取得し、取得した現在時刻に受信した前記有効期間を加算して有効期限とし、算出した前記有効期限と前記編集用鍵と前記機器識別子とを対応付けて記憶装置に記憶する
ことを特徴とする請求項3または4に記載の制御システム。
【請求項6】
前記認証サーバの前記編集用鍵取得部は、
前記受信側通信部から前記機器識別子を受信すると、受信した前記機器識別子に対応する前記有効期限を取得するとともに、前記現在時刻管理サーバから現在時刻を取得し、取得した現在時刻が前記有効期限を過ぎているか否かを処理装置により判定し、取得した現在時刻が前記有効期限を過ぎていると判定した場合には前記編集用鍵を消去し、取得した現在時刻が前記有効期限を過ぎていないと判定した場合には前記編集用鍵を取得し、
前記サーバ側通信部は、
前記編集用鍵取得部により取得された前記編集用鍵を前記プログラム受信装置に送信することを特徴とする請求項5に記載の制御システム。
【請求項7】
前記制御装置に接続される隣接接続装置を備え、
前記送信側取得部は、
前記機器識別子として、前記制御装置と前記隣接接続装置との接続関係を含む隣接情報を取得する
ことを特徴とする請求項1〜6のいずれかに記載の制御システム。
【請求項8】
機器の制御を実行する制御装置と、認証サーバとを備える制御システムに備えられ、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置において、
前記制御装置を識別する機器識別子を取得する送信側取得部と、
前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する送信側通信部と
を備えることを特徴とするプログラム送信装置。
【請求項9】
機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置とを備える制御システムに備えられる認証サーバにおいて、
前記プログラム送信装置から、前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記制御装置を識別する機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子とを対応付けて記憶装置に記憶することを特徴とする認証サーバ。
【請求項10】
前記プログラム送信装置からユーザの認証に用いる認証情報を受信し、受信した前記認証情報に基づいて前記プログラム送信装置に対するアクセスの許否を処理装置により判定し、前記プログラム送信装置に対するアクセスを許可と判定した場合に認証許可情報を前記プログラム送信装置に送信する認証部を備えることを特徴とする請求項9に記載の認証サーバ。
【請求項11】
機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置と、認証サーバとを備える制御システムのプログラム保護方法において、
(1)前記プログラム送信装置の送信側取得部が、前記制御装置を識別する機器識別子を取得し、
(2)前記プログラム送信装置の送信側通信部が、前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信し、
(3)前記認証サーバが、前記送信側通信部により送信された前記編集用鍵と前記機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子と対応付けて記憶装置に記憶し、
(4)前記制御装置が、前記送信側通信部により送信された前記実行用鍵と前記暗号化実行用プログラムとを受信し、受信した前記実行用鍵と前記暗号化実行用プログラムとに基づいて前記機器の制御を実行する
ことを特徴とするプログラム保護方法。
【請求項12】
機器の制御を実行する制御装置と、認証サーバとを備える制御システムに備えられ、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置のプログラム送信方法において、
(1)送信側取得部が、前記制御装置を識別する機器識別子を取得し、
(2)送信側通信部が、前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する
ことを特徴とするプログラム送信方法。
【請求項13】
機器の制御を実行する制御装置と、認証サーバとを備える制御システムに備えられ、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置のプログラムにおいて、
(1)送信側取得部が、前記制御装置を識別する機器識別子を取得し、
(2)送信側通信部が、前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する処理をコンピュータである前記プログラム送信装置に実行させることを特徴とするプログラム送信装置のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御システム及びプログラム送信装置プログラム及び認証サーバ及びプログラム保護方法及びプログラム送信方法に関する。
【背景技術】
【0002】
ファクトリーオートメーション(Factory・Automation:FA)システムでは、工場内の生産設備の動作を制御するためのコントローラが配置されている。このコントローラは、プログラマブルロジックコントローラ(Programmable・Logic・Controller:PLC)と呼ばれる。PLCを動作させるための制御プログラムはラダー等の言語を用いて設計される。設計された制御プログラムは、ラダープログラム開発環境を用いて実行用制御プログラムに変換され、通信ケーブルを介してPLCに書き込まれる。このように、制御プログラムを開発し、PLCに書き込む装置を開発用コンピュータと呼ぶ。
【0003】
ラダープログラム開発環境はWindows(登録商標)上で動作するソフトウェアとして広く市販されている。Windows(登録商標)が動作するコンピュータと、ラダープログラム開発環境があれば、PLCへの実行用制御プログラムの書き込みや、PLCからの実行用制御プログラムの読み出しがコンピュータを用いて容易に行える。このため、近年では既に工場での稼働実績のあるPLCから実行用制御プログラムを抜き取り、このプログラムを模倣して別の生産設備の動作を制御するためのPLCが作られるという問題が発生している。
【0004】
このような問題に対処するため、FAシステムにおいても模倣品への転用を防ぐための様々な対策が講じられてきている。一つの具体例として、特許文献1によれば、PLCに制御プログラムの実行用制御プログラムを書き込むとき、開発用コンピュータは、実行用制御プログラムを暗号化してPLCに転送する。制御プログラムを実行するときには、PLCは、予め生成された暗号ルールを解析し、開発用コンピュータに登録された制御機器固有の情報を抽出する。そして、PLCは、抽出した制御機器固有の情報に基づいて、実行用制御プログラムが制御機器(PLC)固有のプログラムか否かを確認し、固有のプログラムであればPLCにて実行用制御プログラムを復号することで、PLC内部のデータを保護する技術が紹介されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−65678号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1で示された方式では、実行用制御プログラムの暗号化や復号化に必要な情報が開発用コンピュータで管理されているため、開発用コンピュータが盗難されると、実行用制御プログラムの復号に必要な鍵が容易に入手できてしまうことから、実行用制御プログラムを保護できないという課題がある。
【0007】
また、FAシステムを構築、運用するとき、PLCの制御プログラムの開発、設計を行う会社と、保守を行う会社は異なることが多い。この状況においては、実行用制御プログラムの復号に必要な鍵は、PLCの実行用制御プログラムを開発した会社のコンピュータにより作成される。しかし、この鍵も含めて開発物は機密情報として会社内で管理されるため、会社が異なった場合は、機密管理の観点から会社間のデータの受け渡しは容易でない。よって、保守する会社では、PLCの制御プログラムの復号に必要な鍵を入手することはできないため、特許文献1に示された方式では、保守する会社のコンピュータで制御プログラムの閲覧ができないという課題がある。
【0008】
また、特許文献1で示された方式は、常にネットワークに接続された状態で実行用制御プログラム、及び実行用制御プログラムの暗号化や復号化に必要な情報を、開発用パソコンと制御機器との間で交換している。このため、特許文献1で示された方式では、ネットワーク上で転送されるデータ量は多くなる。このため、特許文献1で示された方式がネットワーク品質が悪い環境に適用されると、タイムアウトや通信回線障害が多く発生し、実行用制御プログラムの転送失敗が発生しやすくなるという課題がある。
【0009】
これらの課題を解決する手段として、実行用制御プログラムを開発した会社のコンピュータで、実行用制御プログラムの復号に必要な鍵を生成し、生成した鍵を別の媒体(USBメモリなど)に記録し、実行用制御プログラムを開発した会社から媒体を保守する会社に送付する方式が考えられる。そして、実行用制御プログラムを保守する会社は、媒体に記録された鍵を使って、実行用制御プログラムを保守する会社のコンピュータで制御プログラムの閲覧を可能とする。しかし、この方式でも媒体が盗難された場合は実行用制御プログラムの復号に必要な鍵が漏えいするため、制御プログラムを保護できないという課題が残る。
【0010】
本発明は、上記に示した課題を解決するためになされたものであり、特定のユーザに対しては、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラムの書き込みを容易にするとともに、実行用制御プログラムの閲覧や編集に必要な鍵の特定のユーザ以外への漏えいを防ぐことを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る制御システムは、機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置と、認証サーバとを備える制御システムにおいて、
前記プログラム送信装置は、
前記制御装置を識別する機器識別子を取得する送信側取得部と、
前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する送信側通信部とを備え、
前記認証サーバは、
前記送信側通信部から前記編集用鍵と前記機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子と対応付けて記憶装置に記憶し、
前記制御装置は、
前記送信側通信部により送信された前記実行用鍵と前記暗号化実行用プログラムとを受信し、受信した前記実行用鍵と前記暗号化実行用プログラムとに基づいて前記機器の制御を実行することを特徴とする。
【発明の効果】
【0012】
本発明に係る制御システムによれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護できるとともに、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【図面の簡単な説明】
【0013】
図1】実施の形態1に係る制御システム800のブロック構成図である。
図2】実施の形態1に係る開発用コンピュータ200の詳細ブロック構成図である。
図3】実施の形態1に係る管理サーバ100が備えるユーザ管理テーブル101の構成図である。
図4】実施の形態1に係る管理サーバ100、開発用コンピュータ200、コントローラ300のハードウェア構成の一例を示す図である。
図5】実施の形態1に係る制御システム800において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図6】実施の形態1に係る管理サーバ100のユーザ認証処理710の流れを示すフローチャートである。
図7】実施の形態1に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図8】実施の形態1に係る管理サーバ100の編集用鍵登録処理730の流れを示すフローチャートである。
図9】実施の形態2に係る制御システム800において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図10】実施の形態2に係る管理サーバ100の編集用鍵認証処理S750の流れを示すフローチャートである。
図11】実施の形態3に係る制御システム801のブロック構成図である。
図12】実施の形態3に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図13】実施の形態3に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図14】実施の形態4に係る制御システム801において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図15】実施の形態5に係る制御システム802のブロック構成図である。
図16】実施の形態5に係る管理サーバ100が備える機器識別IDテーブル112の構成図である。
図17】実施の形態5に係る開発用コンピュータ200の詳細ブロック構成図である。
図18】実施の形態5に係る制御システム800において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図19】実施の形態5に係る開発用コンピュータ200の有効期限設定処理S810の流れを示すフローチャートである。
図20】実施の形態5に係る管理サーバ100の編集用鍵登録処理S770の流れを示すフローチャートである。
図21】実施の形態5に係る管理サーバ100の有効期限確認処理S790の流れを示すフローチャートである。
図22】実施の形態6に係る制御システム802において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図23】実施の形態6に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
【発明を実施するための形態】
【0014】
実施の形態1.
図1は、本実施の形態に係る制御システム800のブロック構成図である。
本実施の形態に係る制御システム800は、例えば、工場内の生産機器500の動作を制御するためのシステムである。
図1に示すように、制御システム800は、管理サーバ100、開発用コンピュータ200、コントローラ300を備える。管理サーバ100と開発用コンピュータ200とは、通信回線400により接続されている。また、開発用コンピュータ200とコントローラ300とは、通信回線401により接続されている。
【0015】
管理サーバ100は、制御システム800において、制御プログラムの設計、保守等を行うユーザを管理する。管理サーバ100は、ユーザの認証処理等を実行する認証サーバの一例である。
コントローラ300は、機器の制御を実行する制御装置の一例である。
【0016】
開発用コンピュータ200は、ユーザによる操作を受け付け、受け付けた操作の内容に基づいて、制御プログラムの設計、開発などの処理を実行する。
制御プログラムは、コントローラ300で実行される生産機器500の制御が記述されたソースプログラムである。
【0017】
開発用コンピュータ200は、制御プログラムを、コントローラ300で実行できる実行用制御プログラムに変換し、変換した実行用制御プログラムを暗号化して、暗号化された実行用制御プログラム(暗号化実行用プログラムの一例)を生成する。
また、開発用コンピュータ200は、暗号化された実行用制御プログラム(以下、暗号化実行用制御プログラム651aとする)を実行用制御プログラムに復号し、かつ、復号された実行用制御プログラムを制御プログラムに変換する際に用いる編集用鍵と、暗号化実行用制御プログラム651aを実行用制御プログラムに復号する際に用いる実行用鍵とを生成する。
【0018】
開発用コンピュータ200は、暗号化実行用制御プログラム651aをコントローラ300に書き出すプログラム送信装置の一例である。
暗号化実行用制御プログラム651aをコントローラ300に書き出すとは、通信回線401を介して、暗号化実行用制御プログラム651aをコントローラ300に送信することである。
【0019】
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラムの書き出し要求を受け付け、コントローラ300に実行用制御プログラムと実行用鍵とを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録する。
【0020】
制御システム800は、保守用コンピュータ250が接続されていてもよい。
保守用コンピュータ250は、コントローラ300から実行用制御プログラムの読み出し要求を受け付け、コントローラ300から暗号化実行用制御プログラム651aを読み出す。
【0021】
保守用コンピュータ250は、ユーザの認証処理時に管理サーバ100から編集用鍵を取得する。
保守用コンピュータ250では、読み出した暗号化実行用制御プログラム651aを編集用鍵を用いて閲覧可能な制御プログラム220に変換する。
【0022】
開発用コンピュータ200と保守用コンピュータ250とは、内部構成は同一である。1つのコンピュータで開発用コンピュータ200と保守用コンピュータ250との両方の機能を有するものでもよい。あるいは、開発用コンピュータ200と保守用コンピュータ250とのいずれかの機能のみを有する1つのコンピュータであってもよい。
例えば、開発用コンピュータ200は開発会社が使用するコンピュータであり、保守用コンピュータ250は保守会社が利用するコンピュータである。
【0023】
コントローラ300は、制御プログラムを実行することにより、生産機器500の制御を実行する。コントローラ300は、開発用コンピュータ200から送信された実行用鍵と暗号化実行用制御プログラム651aとを受信し、受信した実行用鍵と暗号化実行用制御プログラム651aとに基づいて生産機器500の制御を実行する。
【0024】
図1を用いて、コントローラ300の機能について説明する。
コントローラ300は、通信制御部301、実行用制御プログラム保管部302、内部バス303、機器識別ID管理部304、制御プログラム実行部305、復号部306を備える。
コントローラ300の内部は、内部バス303を介して通信制御部301、実行用制御プログラム保管部302、機器識別ID管理部304、制御プログラム実行部305、復号部306が接続された構成となっている。
【0025】
通信制御部301は、通信回線401を介して、開発用コンピュータ200のコントローラ通信部201と接続されている。
通信回線401は、例えば、USBケーブル、Ethernet(登録商標)に対応したLANケーブル等である。
【0026】
実行用制御プログラム保管部302は、実行用制御プログラムをコントローラ300の備える記憶装置に記憶する。
機器識別ID管理部304は、コントローラ300の機器識別IDをコントローラ300の備える記憶装置に記憶する。
【0027】
復号部306は、実行用制御プログラム保管部302により保管されている実行用制御プログラムを復号する。
制御プログラム実行部305は、生産機器500に接続される。制御プログラム実行部305は、復号部306により復号された実行用制御プログラムを実行することにより、生産機器500の動作を制御する。
制御プログラム実行部305は、実行用制御プログラム保管部302から逐次コードを読み出し、生産機器500の制御に必要なプログラムを実行する。
【0028】
図2は、本実施の形態に係る開発用コンピュータ200の詳細ブロック構成図である。
次に、図1及び図2を用いて、開発用コンピュータ200の機能について説明する。
図1に示すように、開発用コンピュータ200は、コントローラ通信部201(送信側通信部、受信側通信部)、制御プログラム管理部202、サーバ通信部203(送信側通信部、受信側通信部)を備える。
【0029】
コントローラ通信部201は、通信回線401を介して、コントローラ300との通信を行う。
制御プログラム管理部202は、制御プログラム220を管理する。また、制御プログラム管理部202は、制御プログラム220を実行用制御プログラムに変換する。制御プログラム220を実行用制御プログラムに変換するとは、制御プログラム220に対し、コントローラ300(PLCの一例)において実行するために必要な処理を施して、実行用制御プログラムを生成することである。
サーバ通信部203は、通信回線400を介して、管理サーバ100との間で通信を行う。
【0030】
また、図2に示すように、制御プログラム管理部202は、制御プログラム記憶部227、実行用プログラム変換部221、暗号鍵生成部223、復号部224、ユーザ操作受付部222、会社管理部226を備える。
制御プログラム記憶部227は、制御プログラム220を開発用コンピュータ200の備える記憶装置に記憶する。
【0031】
実行用プログラム変換部221は、制御プログラム220を実行用制御プログラムに変換する。また、実行用プログラム変換部221は、実行用制御プログラムを制御プログラム220に変換する。
【0032】
暗号鍵生成部223は、制御プログラム220の閲覧、制御プログラム220の実行に必要な鍵を生成する。
復号部224は、制御プログラム220の閲覧、制御プログラム220の実行に必要な鍵を復号する。
【0033】
ユーザ操作受付部222(送信側受付部、受信側受付部)は、ユーザの操作を受け付け、実行用プログラム変換部221で行う処理を決定する。
会社管理部226は、開発用コンピュータ200の所属会社を管理する。
【0034】
図3は、本実施の形態に係る管理サーバ100が備えるユーザ管理テーブル101の構成図である。
次に、図1及び図3を用いて、管理サーバ100の機能について説明する。
図1に示すように、管理サーバ100は、ユーザ管理テーブル101、ユーザ通信部102(サーバ側通信部)を備える。
【0035】
ユーザ管理テーブル101は、制御システム800を利用するユーザであって、例えば、制御プログラム220の開発、保守等を行うユーザに関する情報を管理するテーブルである。
ユーザ通信部102は、通信回線400を介して、開発用コンピュータ200と通信を行う。
【0036】
図3に示すように、ユーザ管理テーブル101は、ユーザテーブル110、所属会社テーブル111、機器識別IDテーブル112を備える。
ユーザテーブル110は、ユーザを識別するユーザID150に対し、所属会社情報、パスワード等を対応付けたテーブルである。所属会社情報とは、ユーザID150により識別されるユーザが所属している会社を識別するための情報である。所属会社情報には、開発会社情報653と保守会社情報661とがある。
【0037】
所属会社テーブル111は、所属会社情報(開発会社情報653,保守会社情報661)と機器識別ID604とを対応付けて管理する。
機器識別ID604は、コントローラ300(制御装置)を識別するための識別子である。機器識別IDに対応する所属会社情報は、その機器識別IDにより識別されるコントローラ300(制御装置、制御機器)により実行される制御プログラムの開発・保守等を行う会社の情報である。
【0038】
機器識別IDテーブル112は、機器識別ID604と、機器識別ID604に対応する編集用鍵650とを管理する。機器識別ID604に対応する編集用鍵650には、機器識別ID604により識別されるコントローラ300に書き出された制御プログラムを閲覧するために必要な情報が含まれる。
【0039】
図3では、ユーザテーブル110、所属会社テーブル111、および機器識別IDテーブル112の構成例を示している。図3を用いて、ユーザテーブル110、所属会社テーブル111、および機器識別IDテーブル112の構成についてさらに詳しく説明する。
【0040】
ユーザテーブル110には、制御プログラムを開発した会社のユーザID150と対応する開発会社情報653、パスワード152、ログイン情報151が登録されている。また、制御プログラムを保守する会社のユーザID160と対応する保守会社情報661、パスワード162、ログイン情報161が登録されている。
【0041】
所属会社テーブル111には、開発会社情報653及び保守会社情報661と、これらの各々に対応する機器識別ID604とが登録される。機器識別ID604とは、開発会社情報653、あるいは保守会社情報661の開発あるいは保守の対称となるコントローラ300を識別する識別子である。
【0042】
機器識別IDテーブル112には、機器識別ID604と、それに対応する編集用鍵650が登録されている。
【0043】
管理サーバ100と開発用コンピュータ200とは、通信回線400を介して接続される。管理サーバ100と開発用コンピュータ200とは、通信回線400を介して、制御プログラム220を設計、保守するユーザの認証処理のための情報の送受信、あるいは編集用鍵の送受信等を行う。
【0044】
管理サーバ100は、工場内もしくは遠隔地に設置された管理センター内に設置される。工場内に管理サーバ100が設置された場合、通信回線400はLANケーブルおよび付随する通信機器で構成される。
管理サーバ100が管理センター外に設置された場合は、通信回線400は通信事業会社が提供する電話回線、光ケーブル、LANケーブルおよびこれらに付随する通信機器で構成される。
【0045】
図4は、本実施の形態に係る管理サーバ100、開発用コンピュータ200、コントローラ300のハードウェア構成の一例を示す図である。
【0046】
図4において、管理サーバ100、開発用コンピュータ200、コントローラ300は、コンピュータであり、LCD901(Liquid・Crystal・Display)、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【0047】
管理サーバ100、開発用コンピュータ200、コントローラ300は、プログラムを実行するCPU911(Central・Processing・Unit)を備えている。CPU911は、処理装置の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920(Hard・Disk・Drive)と接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
【0048】
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、HDD920は、不揮発性メモリの一例である。これらは、記憶装置、記憶部の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置の一例である。
【0049】
通信ボード915は、LAN(Local・Area・Network)等に接続されている。通信ボード915は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
【0050】
HDD920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU911により読み出され実行される。ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM914やHDD920等の記録媒体に記憶される。RAM914やHDD920等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0051】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM914等のメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、HDD920の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【0052】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【0053】
図5は、本実施の形態に係る制御システム800において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図5を用いて、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順について説明する。
【0054】
図5に示す処理は、開発用コンピュータ200が、ユーザがコントローラ300への実行用制御プログラムの書き出し実行を指示してから、コントローラ300に実行用制御プログラムを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録するまでの処理の流れを示したものである。
【0055】
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラム書き出し指示の操作を受け付ける。
例えば、ユーザ操作受付部222は、開発用コンピュータ200の表示装置にユーザ入力画面などを表示する。ユーザ操作受付部222は、ユーザ入力画面に入力された操作の内容を受け付ける。
【0056】
このとき、ユーザ操作受付部222(送信側受付部)は、ユーザによりユーザ入力画面へ入力されたユーザID601、パスワード602、開発会社情報653を入力する。
ユーザ入力画面に入力された操作の内容は、例えば、コントローラ300へ実行用制御プログラムを書き出す指示(以下、実行用制御プログラム書き出し指示とする)である。
ユーザID601、パスワード602、開発会社情報653は、ユーザの認証処理に用いる認証情報の一例である。
【0057】
ユーザ操作受付部222は、入力したユーザID601、パスワード602、開発会社情報653をユーザ通信部102に入力する。
図5のS101において、ユーザ通信部102は、ユーザ操作受付部222から入力したユーザID601、パスワード602、開発会社情報653を、通信回線400を介して、認証要求として管理サーバ100に送信する。
【0058】
管理サーバ100のユーザ通信部102は、開発用コンピュータ200のユーザ通信部102から認証要求を受信する。管理サーバ100は、認証要求を受信すると、認証要求に含まれるユーザID601、パスワード602、開発会社情報653を用いて、ユーザ認証処理S710を処理装置により実行する。管理サーバ100は、認証サーバの一例である。また、管理サーバ100は、ユーザの認証処理を実行する認証部の一例である。
【0059】
図6は、実施の形態1に係る管理サーバ100のユーザ認証処理S710の流れを示すフローチャートである。
図6を用いて、管理サーバ100のユーザ認証処理S710について説明する。
【0060】
管理サーバ100は、開発用コンピュータ200から通知されたユーザID601、パスワード602、開発会社情報653が、ユーザテーブル110に登録されたユーザID150、パスワード152、開発会社情報653と一致しているか否かを処理装置により確認する。
【0061】
S711において、管理サーバ100は、入力したユーザID601を用いて、ユーザテーブル110を検索する。
管理サーバ100は、入力したユーザID601と同一のユーザIDがユーザテーブル110に存在すると確認した場合(S711でYES)、処理をS712に進める。このとき、管理サーバ100は、入力したユーザID601と同一のユーザID150に対応する開発会社情報653と、パスワード152とをユーザテーブル110から抽出し、記憶装置に記憶する。
【0062】
管理サーバ100は、入力したユーザID601と同一のユーザIDがユーザテーブル110に存在しない(確認できない)場合(S711でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
【0063】
S712において、管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653(ユーザID601(150)に対応する開発会社情報653)と一致するか否かについて処理装置により確認する。
管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653と一致すると確認した場合(S712でYES)、処理をS713に進める。
【0064】
管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653と一致することが確認できない場合(S712でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
【0065】
S713において、管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152(ユーザID601(150)に対応するパスワード)と一致するか否かについて処理装置により確認する。
管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152と一致すると確認した場合(S713でYES)、処理をS714に進める。
S714において、管理サーバ100は、認証結果603に「認証許可」を設定する。
【0066】
管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152と一致することが確認できない場合(S713でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
以上で、図6に説明を終了する。
【0067】
図5のS102において、管理サーバ100のユーザ通信部102は、ユーザ認証処理S710を完了すると、通信回線400を介して認証結果603を開発用コンピュータ200に送信する。
【0068】
以上のように、管理サーバ100は、入力したユーザID601、パスワード602、開発会社情報653のうち一個でもユーザテーブル110と不一致があった場合は、S715のように認証不可応答を送信する。管理サーバ100は、入力したユーザID601、パスワード602、開発会社情報653のすべてが一致した場合は、S714のように認証許可応答を認証結果603に設定し、開発用コンピュータ200に対して認証結果603を通知する。
【0069】
図5のS102において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100のユーザ通信部102から認証結果603を受信する。
制御プログラム管理部202は、受け取った認証結果603に設定された認証応答を処理装置により判定する。
【0070】
制御プログラム管理部202は、認証結果603に設定された認証応答が「認証不可」であると判定した場合、処理を終了する。この場合、例えば、制御プログラム管理部202は、表示装置に「認証不可」のエラーメッセージ等を表示する。
【0071】
制御プログラム管理部202は、認証結果603に設定された認証応答が「認証許可」であると判定した場合、制御プログラム変換処理S720を実行する。
【0072】
図7は、本実施の形態に係る開発用コンピュータ200の制御プログラム変換処理S720の流れを示すフローチャートである。
図7を用いて、開発用コンピュータ200の制御プログラム変換処理S720について説明する。
制御プログラム管理部202の実行用プログラム変換部221は、制御プログラム変換処理S720を実行する。
【0073】
S721において、実行用プログラム変換部221は、コントローラ300の機器識別IDを取得するための機器識別ID問合せメッセージ605をコントローラ300に対して送信する。
【0074】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、機器識別ID304から、コントローラ300を識別する機器識別ID604を取得する。コントローラ300の通信制御部301は、通信回線401を介して、取得した機器識別ID604を開発用コンピュータ200に送信する。
【0075】
S722において、開発用コンピュータ200のコントローラ通信部201は、コントローラ300の機器識別ID604を受信する。開発用コンピュータ200のコントローラ通信部201は、受信した機器識別ID604を制御プログラム管理部202に入力する。以上のように、制御プログラム管理部202は、機器識別ID604を取得する。制御プログラム管理部202は、コントローラ300を識別する機器識別ID604(機器識別子)を取得する送信側取得部の一例である。
【0076】
S723において、制御プログラム管理部202の実行用プログラム変換部221は、制御プログラム220を入力する。制御プログラム220は、コントローラ300において実行される生産機器500の制御が記述されたソースプログラムである。制御プログラム220は、例えば、ラダー言語により記述されたラダープログラムである。
【0077】
実行用プログラム変換部221は、入力した制御プログラム220をコントローラ300において実行できる実行用制御プログラム651に変換する。実行用制御プログラム651は、例えば、コントローラ300において実行可能なオブジェクトプログラム(実行用プログラムの一例)である。
【0078】
S724において、暗号鍵生成部223は、実行用プログラム変換部221により変換された実行用制御プログラム651と、コントローラ300から取得した機器識別ID604とを入力する。暗号鍵生成部223は、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号し、かつ、復号された実行用制御プログラム651を制御プログラム220に変換する際に用いる編集用鍵を生成する。また、暗号鍵生成部223は、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する際に用いる実行用鍵を生成する。暗号鍵生成部223は、鍵生成部の一例である。
【0079】
暗号鍵生成部223は、機器識別ID604を受信(入力)すると、制御プログラム220の閲覧に必要な編集用鍵650と、コントローラ300の実行用制御プログラム651を実行するために必要な実行用鍵652とを生成し、実行用プログラム変換部221に通知する。
【0080】
S725において、実行用プログラム変換部221は、編集用鍵650と実行用鍵652とを受信し、制御プログラム変換処理S720が完了する。
【0081】
S103〜S104において、制御プログラム管理部202は、暗号鍵生成部223により生成された実行用鍵652と暗号化実行用制御プログラム651aとをコントローラ通信部201に出力する。
コントローラ通信部201は、制御プログラム管理部202から実行用鍵652と暗号化実行用制御プログラム651aとを入力する。コントローラ通信部201は、入力した実行用鍵652と暗号化実行用制御プログラム651aとを、コントローラ300に対して通信回線401を介して送信する。コントローラ通信部201は、送信側通信部の一例である。
【0082】
コントローラ300の通信制御部301は、開発用コンピュータ200から送信された暗号化実行用制御プログラム651a651aと実行用鍵652とを実行用制御プログラム保管部302に書き込む。
【0083】
開発用コンピュータ200の実行用プログラム変換部221は、会社管理部226に予め登録された開発用コンピュータ200の所属会社を取得する。開発用コンピュータ200の場合は、開発会社情報653が登録されており、保守用コンピュータ250の場合は、保守会社情報661が登録されている。
【0084】
あるいは、開発用コンピュータ200の会社管理部226には開発用コンピュータ200の開発会社情報653と、その後の保守を担当する保守会社情報661とが登録されていてもよい。また、保守用コンピュータ250の会社管理部226には自保守用コンピュータ250の保守会社情報661と、保守の対称となる制御プログラムの開発を担当した保守会社情報661とが登録されていてもよい。
【0085】
S105〜S107において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を、通信回線400を介して送信する。
サーバ通信部203は、暗号鍵生成部223により生成された編集用鍵650とコントローラ300から取得した機器識別ID604とを管理サーバ100に送信する送信側通信部の一例である。
【0086】
管理サーバ100のユーザ通信部102(サーバ側通信部)は、開発用コンピュータ200から編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を受信する。管理サーバ100は、編集用鍵登録処理S730によって、ユーザ管理テーブル101に編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を登録する。
【0087】
図8は、実施の形態1に係る管理サーバ100の編集用鍵登録処理S730の流れを示すフローチャートである。
図8を用いて、管理サーバ100の編集用鍵登録処理S730の流れについて説明する。
【0088】
S731において、管理サーバ100は、開発会社情報653と機器識別ID604とを対応付けて所属会社テーブル111に登録する。
S732において、管理サーバ100は、保守会社情報661と機器識別ID604とを対応付けて所属会社テーブル111に登録する。
S733において、管理サーバ100は、機器識別ID604と編集用鍵650とを対応付けて機器識別IDテーブル112に登録する。
【0089】
以上で、開発用コンピュータ200が、ユーザがコントローラ300への実行用制御プログラムの書き出し実行を指示してから、コントローラ300に実行用制御プログラムを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録するまでの処理の流れについての説明を終わる。
【0090】
以上のように、本実施の形態に係る制御システム800は、設備の制御システムであって、前記設備の動作を制御するコントローラ300と、第一の通信回線(通信回線401)によって前記コントローラ300に接続され、前記コントローラ300との間で、制御プログラム220を読み書きする第一のコンピュータ(開発用コンピュータ200)と、第二の通信回線(通信回線400)によって前記第一のコンピュータに接続されるサーバ(管理サーバ100)を備える。
【0091】
また、本実施の形態に係る制御システム800は、前記第一のコンピュータから制御プログラムを前記コントローラに書き込むときに使用する、以下のような手段を備える。
【0092】
まず、前記サーバは、前記第一のコンピュータを使って書き込むユーザと所属会社を認証し、前記第一のコンピュータに対して書き込みの許可を判断する認証手段を備える。
また、前記第一のコンピュータは、前記コントローラから機器識別IDを読み込み、前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)と、前記制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)とを作成する鍵生成手段を備える。
また、前記鍵生成手段によって生成された、制御プログラムの閲覧と制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)を前記コントローラに書き込む書込手段を備える。
また、前記サーバは、前記第一のコンピュータの所属会社と前記コントローラの機器識別IDと前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)とを保管する手段を備える。
【0093】
以上のように、本実施の形態に係る制御システム800によれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護することができる。
【0094】
実施の形態2.
本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0095】
本実施の形態では、実施の形態1で説明した制御システム800において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0096】
図9は、本実施の形態に係る制御システム800において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図9を用いて、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出し、読み出した暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する手順について説明する。
【0097】
保守用コンピュータ250のユーザ操作受付部222は、ユーザから暗号化実行用制御プログラム651aの読み出し要求を受け付ける。
保守用コンピュータ250は、暗号化実行用制御プログラム651aの読み出し要求を受け付けると、コントローラ300から暗号化実行用制御プログラム651aを読み出し、管理サーバ100から制御プログラム220の閲覧に必要な編集用鍵を入手する。
そして、保守用コンピュータ250は、入手した編集用鍵650を用いて、暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する。
【0098】
保守用コンピュータ250は、ユーザから、コントローラ300から暗号化実行用制御プログラム651aを読み出す要求である読み出し指示の操作を受け付ける。
例えば、ユーザ操作受付部222は、保守用コンピュータ250の表示装置にユーザ入力画面などを表示する。ユーザ操作受付部222は、ユーザ入力画面に入力された操作の内容を受け付ける。
【0099】
このとき、ユーザ操作受付部222は、ユーザによりユーザ入力画面へ入力されたユーザID601、パスワード602、保守会社情報661を入力する。
ユーザ入力画面に入力された操作の内容は、例えば、コントローラ300から暗号化実行用制御プログラム651aを読み出す指示(以下、実行用制御プログラム読み出し指示とする)である。
【0100】
ユーザ操作受付部222は、入力したユーザID601、パスワード602、保守会社情報661をユーザ通信部102に入力する。ユーザ操作受付部222は、受信側受付部の一例である。
図9のS101において、ユーザ通信部102は、ユーザ操作受付部222から入力したユーザID601、パスワード602、保守会社情報661を、通信回線400を介して、認証要求として管理サーバ100に送信する。
【0101】
管理サーバ100のユーザ通信部102は、保守用コンピュータ250のユーザ通信部102から認証要求を受信する。管理サーバ100は、認証要求を受信すると、認証要求に含まれるユーザID601、パスワード602、保守会社情報661を用いて、ユーザ認証処理S710を処理装置により実行する。
【0102】
実施の形態1で説明したように、保守用コンピュータ250の内部構成は、図2に示した開発用コンピュータ200の内部構成と同じであるが、会社管理部226の設定値が開発用コンピュータ200の設定値と異なる。すなわち、開発用コンピュータ200を所有している会社と保守用コンピュータ250を所有している会社とが異なる点に留意する必要がある。
【0103】
保守用コンピュータ250は、ユーザによる実行用制御プログラム読み出し操作を受け付けることにより、コントローラ300から実行用制御プログラム読み出し処理を実行する。このとき、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知する。管理サーバ100は、ユーザ認証処理710を実行する。
【0104】
ユーザ認証処理S710については、実施の形態1で説明したものと同様である。ただし、開発会社情報653が保守会社情報661となる点が異なる。
【0105】
図9に示すように、管理サーバ100は、ユーザ認証処理S710において、受信したユーザID611、パスワード612、保守会社情報661が、ユーザテーブル110に登録されたユーザID160、パスワード162、保守会社情報661と一致しているか否かを処理装置により判定する(図6のS711〜S713を参照)。
【0106】
管理サーバ100は、ユーザID160、パスワード162、保守会社情報661のうち一個でも不一致があった場合は認証不可応答を認証結果603に設定し、認証結果603を保守用コンピュータ250に送信する(図9のS102)。
また、管理サーバ100は、ユーザID160、パスワード162、保守会社情報661のすべてが一致した場合は認証許可応答を認証結果603に設定し、認証結果603を保守用コンピュータ250に送信する(図9のS102)。
【0107】
保守用コンピュータ250の制御プログラム管理部202は、管理サーバ100から受信した認証結果603を処理装置により確認する。制御プログラム管理部202は、認証結果603が認証許可であれば、コントローラ300に対して機器識別ID問合せメッセージ605を送信する(S201)。
【0108】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300の機器識別ID604を制御プログラム管理部202に通知する(S202)。
【0109】
制御プログラム管理部202は、取得した機器識別ID604と保守会社情報661とを管理サーバ100に送信する(S203)。管理サーバ100は、機器識別ID604と保守会社情報661を受信すると、編集用鍵認証処理S750を実行し、編集用鍵650を保守用コンピュータ250に対して送信する(S204)。制御プログラム管理部202は、受信側取得部の一例である。
【0110】
図10は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S750の流れを示すフローチャートである。
図10を用いて、管理サーバ100の編集用鍵認証処理S750の流れについて説明する。
【0111】
S751において、管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112(図3参照)に登録されているか否かを処理装置により確認する。
管理サーバ100は、入力した機器識別ID604が機器識別IDテーブル112に登録されていると確認した場合(S751でYES)、処理をS752に進める。
【0112】
管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112に登録されていることが確認できない場合(S751でNO)、処理をS755に進める。
【0113】
S752において、管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応しているか否かについて処理装置により確認する。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応していると確認した場合(S752でYES)、処理をS753に進める。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録されていると確認されない場合、あるいは、受信した機器識別ID604に対応していると確認されない場合(S752でNO)、処理をS755に進める。
【0114】
S753において、管理サーバ100は、機器識別ID604に対応する編集用鍵650を機器識別IDテーブル112から取得する。
S754において、管理サーバ100は、取得した編集用鍵650を鍵認証応答に設定する。
一方、S755において、管理サーバ100は、鍵認証応答に「認証不可」を設定する。すなわち、管理サーバ100は、機器識別ID604が機器識別IDテーブル112に存在しない場合、あるいは存在していても所属会社テーブル111において機器識別ID604と保守会社情報661とが対応していない場合は、鍵認証応答に「認証不可」を設定する。
【0115】
以上で、管理サーバ100の編集用鍵認証処理S750の説明を終わる。
【0116】
図9のS204において、管理サーバ100のユーザ通信部102は、通信回線400を介して、鍵認証応答を保守用コンピュータ250に送信する。
このとき、編集用鍵認証が成功(認証許可)していれば鍵認証応答には編集用鍵650が設定されており、編集用鍵認証が失敗(認証不可)であれば鍵認証応答には認証不可が設定されている。
【0117】
図9のS205において、保守用コンピュータ250は、鍵認証応答として編集用鍵650を受信すると、コントローラ300に対して暗号化実行用制御プログラム651aの読み出しを要求する実行用制御プログラム読み出しメッセージ640(読み出し命令の一例)を送信する。保守用コンピュータ250は、プログラム受信装置の一例である。また、コントローラ通信部201は、受信側通信部の一例である。
【0118】
コントローラ300は、保守用コンピュータ250から実行用制御プログラム読み出しメッセージ640を受信する。コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aを読み出す。
【0119】
このとき、コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aと実行用鍵652とを読み出し、復号部306に入力してもよい。復号部306は、暗号化実行用制御プログラム651aと実行用鍵652とに基づいて、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する。コントローラ300の通信制御部301は、復号部306により復号された実行用制御プログラム651を保守用コンピュータ250に送信するとしてもよい。
ただし、本実施の形態では、コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aを読み出し、通信制御部301は、暗号化実行用制御プログラム651aを保守用コンピュータ250に送信するものとする。
【0120】
保守用コンピュータ250のコントローラ通信部201は、コントローラ300から暗号化実行用制御プログラム651aを受信する。
保守用コンピュータ250のコントローラ通信部201は、受信した暗号化実行用制御プログラム651aを制御プログラム管理部202に入力する。
保守用コンピュータ250は、管理サーバ100から受信した編集用鍵650とコントローラ300から受信した暗号化実行用制御プログラム651aとに基づいて、暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する制御プログラム変換処理S760を実行する。
【0121】
以下に、保守用コンピュータ250における制御プログラム変換処理S760について説明する。
制御プログラム管理部202の復号部224は、編集用鍵650と暗号化実行用制御プログラム651aとを入力し、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する。
また、制御プログラム管理部202の実行用プログラム変換部221は、編集用鍵650と実行用制御プログラム651とを入力し、実行用制御プログラム651を閲覧・編集が可能な制御プログラム220に変換する。
【0122】
保守用コンピュータ250は、ログイン(S101〜S102)したユーザによる制御プログラムの読み出し要求を受け付ける。保守用コンピュータ250は、制御プログラム変換処理S760を実行し、閲覧・編集が可能な制御プログラム220を取得する。その後、保守用コンピュータ250は、ユーザの操作により、例えば、制御プログラム220の保守・編集・変更・修正等の処理を実行する。
【0123】
保守用コンピュータ250は、ユーザによる要求に基づいて、閲覧可能な制御プログラム220に対して保守・編集・変更・修正等の処理を施し、変更後制御プログラム220aを生成する。
【0124】
図5のS720の処理により、保守用コンピュータ250は、変更後制御プログラム220aを実行用のプログラムに変換し、さらに、変換した変更後制御プログラム220aを暗号化し、暗号化実行用変更後制御プログラム221aを生成する。保守用コンピュータ250は、このとき、新たに編集用鍵650、実行用鍵652を生成する。
S103〜S107の処理により、保守用コンピュータ250は、新たな編集用鍵650を管理サーバ100に登録する。また、保守用コンピュータ250は、新たな実行用鍵652と、暗号化実行用変更後制御プログラム221aとをコントローラ300に送信する。
【0125】
以上のように、本実施の形態に係る保守用コンピュータ250は、編集用鍵650を受けるとコントローラ300から実行用制御プログラム651を読み出し、編集用鍵650を復号部224に入力して実行用制御プログラムの閲覧に必要な情報を復号し、実行用制御プログラム651を閲覧可能な制御プログラム220に変換する。
【0126】
以上のように、本実施の形態に係る制御システム800は、コントローラ(コントローラ300)との間で制御プログラムを読み書きする第二のコンピュータ(保守用コンピュータ250)により、コントローラから制御プログラムを読み込むときに使用する、以下のような手段を備える。
【0127】
前記サーバ(管理サーバ100)は、前記制御プログラムを読み込むユーザと所属会社とを認証し、前記第二のコンピュータに対して読み込みの許可を判断する認証手段を備える。
前記第二のコンピュータは、前記コントローラから機器識別IDを読み込み、前記サーバに通知する手段を備える。
前記サーバは、前記第二のコンピュータから前記機器識別IDを受信すると、前記機器識別IDに対応する前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)を前記第二のコンピュータに送信する手段を備える。
前記第二のコンピュータは、前記サーバから前記暗号鍵(編集用鍵650)を受信すると、前記コントローラから制御プログラム(暗号化実行用制御プログラム651a、あるいは、実行用制御プログラム651)を読み込み、前記暗号鍵を用いて、前記制御プログラムの閲覧ができるようにする手段を備える。
【0128】
以上のように、本実施の形態に係る制御システム800によれば、PLC(例えば、コントローラ300)の制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護しつつ、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【0129】
実施の形態3.
本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0130】
図11は、本実施の形態に係る制御システム801のブロック構成図である。図12は、本実施の形態に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに対し暗号化実行用制御プログラム651aを書き出す手順を示すシーケンス図である。
図11及び図12を用いて、本実施の形態に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに対し実行用制御プログラム651を書き出す手順について説明する。
【0131】
図11は、実施の形態1で説明した図1に対応する図であり、図1と同様の機能構成については同一の符号を付し、その説明を省略する。図12は、実施の形態1で説明した図5に対応する図であり、図5と同様の機能構成については同一の符号を付し、その説明を省略する。
【0132】
図11に示すように、制御システム801において、実施の形態1で説明した制御システム800と異なる点は、複数のコントローラ300a,300bが通信回線402、402,403、404を介してコントローラ300と接続された構成になっている点である。
【0133】
図11に示すように、コントローラ300は、通信回線402を介してコントローラ300aと接続される。また、コントローラ300は、通信回線403を介してコントローラ300bと接続される。コントローラ300aとコントローラ300bとは、通信回線404を介して接続されている。
コントローラ300aとコントローラ300bとは、コントローラ300(制御装置)に接続される隣接接続装置の一例である。
【0134】
図12では、制御システム801において、開発用コンピュータ200が、ユーザによる実行用制御プログラム書き出し要求を受けて、コントローラ300への実行用制御プログラム書き出し処理を実行し、コントローラ300に実行用制御プログラムを書き出すまでの処理の流れを示したものである。
【0135】
図12に示した手順について説明する。
図12のS101〜S102は、図5のS101〜S102と同様の処理である。
開発用コンピュータ200は、コントローラ300への実行用制御プログラム書き出し処理を実行するとき、まず、ユーザID601、パスワード602、開発会社情報653を管理サーバ100に通知する(S101)。
管理サーバ100は、通知を受けるとユーザ認証処理S710を実行し、認証結果603を開発用コンピュータ200に対して応答する(S102)。
【0136】
図12の制御プログラム変換処理S720は、図5の制御プログラム変換処理S720と同様の処理である。
開発用コンピュータ200の制御プログラム管理部202は、管理サーバ100から認証結果603をサーバ通信部203経由で受け取る。そして、制御プログラム管理部202は、受け取った認証結果603を確認し、認証許可であれば、制御プログラム変換処理S720を実行する。
【0137】
図13は、本実施の形態に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図12及び図13を用いて、開発用コンピュータ200の制御プログラム管理部202による制御プログラム変換処理S720について説明する。
【0138】
図12のS721は、図5及び図7のS721と同様の処理である。
図12のS721において、開発用コンピュータ200の制御プログラム管理部202は、コントローラ300に対して機器識別ID問合せメッセージ605をコントローラ300に対して送信する(S721)。
【0139】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300aとコントローラ300bに対して、それぞれ機器識別ID問合せメッセージ606、608を送信する(S721−1,S721−3)。
【0140】
コントローラ300aは、機器識別ID問合せメッセージ606を受信すると、コントローラ300aの機器識別ID607をコントローラ300に通知する(S721−2)。コントローラ300bは、機器識別ID問合せメッセージ608を受信すると、コントローラ300bの機器識別ID609をコントローラ300に通知する(S721−4)。
【0141】
コントローラ300は、コントローラ300a,300bから機器識別ID607,609を受信すると、受信した機器識別ID607,609をもとにコントローラ300と隣接しているコントローラ300a,300b(PLC)の情報を隣接PLC情報614として作成する。
【0142】
隣接PLC情報614は、コントローラ300(制御装置)とコントローラ300a,300b(隣接接続装置)との接続関係を含む隣接情報の一例である。
コントローラ300は、機器識別ID604と隣接PLC情報614とを、開発用コンピュータ200の制御プログラム管理部204に通知する。
【0143】
なお、本実施の形態では、隣接PLC情報614は、コントローラ300において作成される例を示した。しかし、開発用コンピュータ200でも、コントローラ300aの機器識別ID607とコントローラ300bの機器識別ID609とを取得することによって作成することができる。
【0144】
図13のS726において、開発用コンピュータ200の制御プログラム管理部202は、コントローラ300から機器識別ID604と隣接PLC情報614を受信する。
【0145】
図13のS723は、図7のS723と同様の処理である。
S723において、制御プログラム管理部202は、制御プログラム220をコントローラ300において実行可能な実行用制御プログラム651に変換する。
【0146】
図13のS727において、制御プログラム管理部202は、隣接PLC情報614と機器識別ID604とを暗号鍵生成部223に入力する。暗号鍵生成部223は、隣接PLC情報614と機器識別ID604とに基づいて、実行用制御プログラム651を暗号化し、暗号化実行用制御プログラム651aを生成するとともに、制御プログラム220の閲覧に必要な編集用鍵650と、コントローラ300の実行用制御プログラムを実行するために必要な実行用鍵652とを生成する。
【0147】
図13のS725は、図7のS725と同様の処理であるため説明を省略する。
【0148】
図12のS103〜S104は、図5のS103〜S104と同様の処理である。
開発用コンピュータ200のコントローラ通信部201は、暗号化実行用制御プログラム651aと実行用鍵652とをコントローラ300に送信する(S103,S104)。
【0149】
また、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650と隣接PLC情報614とを送信する。
【0150】
図12のS105a〜S107において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650、隣接PLC情報614、開発会社情報653、保守会社情報661を、通信回線400を介して送信する。
図12のS105a〜S107は、図5のS105〜S107と同様の処理であるが、機器識別ID604に替えて隣接PLC情報614を管理サーバ100に送信する点が異なる。
【0151】
管理サーバ100のユーザ通信部102は、開発用コンピュータ200から編集用鍵650、隣接PLC情報614、開発会社情報653、保守会社情報661を受信する。管理サーバ100は、編集用鍵登録処理S730によって、ユーザ管理テーブル101に編集用鍵650隣接PLC情報614、開発会社情報653、保守会社情報661を登録する。
【0152】
管理サーバ100の編集用鍵登録処理S730は、図8で説明した。管理サーバ100の編集用鍵登録処理S730と同様であるが、機器識別ID604に替えて隣接PLC情報614を機器識別IDテーブル112に登録する点が異なっている。
【0153】
以上のように、本実施の形態に係る制御システム801は、第一のコントローラ(コントローラ300)と、第三の通信回線(通信回線402)によって第一のコントローラに接続された第二のコントローラ(コントローラ300a)と、第一のコントローラとの間で制御プログラムの読み書きを行う第一のコンピュータ(開発用コンピュータ200)と、第二の通信回線(通信回線40)によって前記第一のコンピュータに接続されるサーバ(管理サーバ100)とを備えた制御システムである。
【0154】
本実施の形態に係る制御システム801は、前記第一のコンピュータから制御プログラムを前記第一のコントローラに書き込むとき、以下の処理を行う手段を備える。
前記サーバは、前記第一のコンピュータを使って書き込むユーザと所属会社を認証し、前記コンピュータに対して書き込みの許可を判断する認証手段を備える。
前記第一のコントローラは、通信回線を通じて接続されている第二のコントローラに関する識別情報を読み込み、第一および第二のコントローラが隣接していることを示す隣接情報(隣接PLC情報614)を作成する手段を備える。
前記第一のコンピュータは、前記第一のコントローラから前記隣接情報を読み込み、前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)と、前記制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)とを作成する鍵生成手段を備える。
前記第一のコンピュータは、さらに、前記鍵生成手段によって生成された、制御プログラムの閲覧と制御プログラムの実行を可能とするための暗号鍵を前記第一のコントローラに書き込む手段を備える。
前記サーバは、前記第一のコンピュータの所属会社情報と、前記隣接情報と、前記制御プログラムの閲覧を可能とするための暗号鍵とを保管する手段を備える。
【0155】
以上のように、本実施の形態に係る制御システム801によれば、複数のコントローラ(PLC)間の組み合わせ及び接続関係を示す隣接PLC情報が管理サーバに登録されている隣接PLC情報と一致したときに限り、制御プログラムの閲覧に必要な編集用鍵を取得することができ、制御プログラムの実行が許可されるようになり、制御プログラムの機密性を向上させることが可能になる。
【0156】
実施の形態4.
本実施の形態では、実施の形態1〜3と異なる点について説明する。本実施の形態では、実施の形態1〜3で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0157】
本実施の形態では、実施の形態3で説明した制御システム801において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0158】
図14は、本実施の形態に係る制御システム801において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図14を用いて、保守用コンピュータ250が、コントローラ300から暗号化実行用制御プログラム651aを読み出し、読み出した暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換するまでの手順について説明する。
【0159】
図14のS101〜S102は、図9のS101〜S102と同様の処理である。
図14のS101において、ユーザにより、保守用コンピュータ250にてコントローラ300からの実行用制御プログラム読み出し操作を実行したとき、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知し、管理サーバ100にてユーザ認証処理S710を実行する。
【0160】
図14のS201は、図9のS201と同様の処理である。
保守用コンピュータ250の制御プログラム管理部202は、受け取った認証結果603を確認し、認証許可であれば、コントローラ300に対して機器識別ID問合せメッセージ605を送信する(S201)。
【0161】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300aとコントローラ300bに対して、それぞれ機器識別ID問合せメッセージ606,608を送信する(S201−1,S201−3)。
【0162】
コントローラ300aは、機器識別ID問合せメッセージ606を受信すると、コントローラ300aの機器識別ID607をコントローラ300に通知する(S201−2)。
コントローラ300bは、機器識別ID問合せメッセージ608を受信すると、コントローラ300bの機器識別ID609をコントローラ300に通知する(S201−4)。
【0163】
コントローラ300は、コントローラ300a,300bから機器識別ID607,609を受信すると、受信した機器識別ID607,609をもとにコントローラ300と隣接しているコントローラ300a,300bの情報を隣接PLC情報614として作成する。
図14のS202aにおいて、コントローラ300は、コントローラ300の機器識別ID604とともに、隣接PLC情報614を開発用コンピュータ200の制御プログラム管理部204に通知する。
【0164】
図14のS203aにおいて、保守用コンピュータ250の制御プログラム管理部202は、取得した隣接PLC情報614と保守会社情報661とを管理サーバ100に通知する。
【0165】
管理サーバ100は、保守用コンピュータ250から隣接PLC情報614と保守会社情報661とを受信すると、編集用鍵認証処理S750を実行する。
管理サーバ100による編集用鍵認証処理S750は、図9及び図10で説明した編集用鍵認証処理S750と同様の処理である。ただし、本実施の形態では、管理サーバ100は、機器識別ID604に替えて、隣接PLC情報614により機器識別IDテーブル112を検索して、編集用鍵650を取得する。
【0166】
図14のS204〜S206及び制御プログラム変換処理S760の処理は、図9のS204〜S206及び制御プログラム変換処理S760の処理と同様である。
本実施の形態に係る管理サーバ100による編集用鍵認証処理750では、管理サーバ100は、隣接PLC情報614と保守会社情報661とを確認し、合致するものがあれば隣接PLC情報614に対応する編集用鍵650を検索し、得られた編集用鍵650を保守用コンピュータ250に送信する(S204)。
【0167】
保守用コンピュータ250は、編集用鍵650を受信すると、コントローラ300から暗号化実行用制御プログラム651aを読み出す(S205,S206)。
保守用コンピュータ250は、編集用鍵650を復号部224に入力して暗号化実行用制御プログラム651aの閲覧に必要な情報を復号し、実行用制御プログラム651を閲覧可能な制御プログラム220に変換する。
【0168】
図14の制御プログラム変換処理S760は、図9の制御プログラム変換処理S760と同様であるため説明を省略する。
【0169】
以上のように、本実施の形態に係る制御システム801は、前記コンピュータ(保守用コンピュータ250)にて前記第一のコントローラ(コントローラ300)から制御プログラム220を読み込むときに使用する、以下の手段を備える。
前記サーバ(管理サーバ100)は、前記コンピュータを使って書き込む操作を実行するユーザのユーザIDと所属会社とを認証し、前記コンピュータに対して書き込みの許可を判断する認証手段を備える。
前記第一のコントローラは、通信回線を通じて接続されている第二のコントローラ(コントローラ300a)に関する識別情報(機器識別ID)を読み込み、第一および第二のコントローラが隣接していることを示す隣接情報(隣接PLC情報614)を作成する手段を備える。
前記コンピュータは、前記第一のコントローラから、前記隣接情報を前記サーバに通知する手段を備える。
前記サーバは、前記コンピュータから前記隣接情報を受信すると、前記隣接情報に対応する前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)を前記コンピュータに送信する手段を備える。
前記コンピュータは、前記サーバから前記暗号鍵を受信すると、前記第一のコントローラから制御プログラムを読み込み、前記暗号鍵を用いて、前記制御プログラムの閲覧できるようにする手段を備える。
【0170】
以上のように、本実施の形態に係る制御システム801によれば、複数のコントローラ(PLC)間の組み合わせ及び接続関係を示す隣接PLC情報が管理サーバに登録されている隣接PLC情報と一致したときに限り、制御プログラムの閲覧に必要な編集用鍵の取得や、制御プログラムの実行が許可されるようになり、制御プログラムの機密性を向上させることが可能になる。
【0171】
本実施の形態に係る制御システム801によれば、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラムの書き込みの利便性を高くすることができる。
【0172】
実施の形態5.
本実施の形態では、主に、実施の形態1〜4と異なる点について説明する。特に、本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0173】
図15は、本実施の形態に係る制御システム802のブロック構成図である。図16は、本実施の形態に係る管理サーバ100が備える機器識別IDテーブル112の構成図である。図17は、本実施の形態に係る開発用コンピュータ200の詳細ブロック構成図である。図18は、本実施の形態に係る制御システム800において、開発用コンピュータ200からコントローラ300に対し実行用制御プログラム651を書き出す手順を示すシーケンス図である。
【0174】
図15図17は、実施の形態1で説明した図1図3に対応し、図1図3に記載した機能構成と同様の機能構成には同一の符号を付し、その説明を省略する場合もあるものとする。また、図18は、実施の形態1で説明した図5に対応し、図5に記載した機能構成と同様の機能構成には同一の符号を付し、その説明を省略する場合もあるものとする。
【0175】
図15に示すように、管理サーバ100は、時刻管理部103を備える。
時刻管理部103は、暗号鍵(編集用鍵650)の有効期限を管理する。時刻管理部103は、通信回線405を介して、時刻管理サーバ700(現在時刻管理サーバ)と接続されている。
【0176】
図16に示すように、管理サーバ100の機器識別IDテーブル112は、機器識別ID604に対応する情報として、編集用鍵650に加え、有効期限情報670を備えている。有効期限情報670は、対応する編集用鍵650の有効期限を示す情報である。
【0177】
図17に示すように、制御プログラム管理部202は、実施の形態1で説明した機能構成に加え、有効期限管理部228を備える。
有効期限管理部228は、ユーザが設定した有効期限を管理する。
【0178】
図18では、制御システム802において、開発用コンピュータ200がコントローラ300へ実行用制御プログラム書き出し処理を実行してから、コントローラ300に実行用制御プログラムが書き出されるまでの処理の流れを示したものである。
まず、開発用コンピュータ200から制御プログラムの実行用制御プログラムを書き込む手順について、図18を用いて説明する。
【0179】
図18のS101〜S102は、図5のS101〜S102と同様の処理である。
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラム書き出し要求を受け付けるとき、まず、ユーザにより入力されたユーザID601、パスワード602、開発会社情報653を管理サーバ100に通知する(S101)。
管理サーバ100は、通知を受けるとユーザ認証処理S710を実行し、認証結果603を開発用コンピュータ200に対して応答する(S102)。
【0180】
開発用コンピュータ200は、管理サーバ100から認証結果603を受け取り、認証結果603の内容が認証許可であれば、有効期限設定処理S810を実行する。
図19は、本実施の形態に係る開発用コンピュータ200の有効期限設定処理S810の流れを示すフローチャートである。
図19を用いて、開発用コンピュータ200の有効期限設定処理S810について説明する。
【0181】
S811において、実行用プログラム変換部221は、ユーザ操作受付部222に有効期限の入力を求めるメッセージを通知する。ユーザ操作受付部222は、開発用コンピュータ200の表示画面に有効期限の入力を促すメッセージ(有効期限設定画面)を表示する。
【0182】
S812において、ユーザ操作受付部222は、ユーザにより有効期限設定画面に入力された入力値を実行用プログラム変換部221へ通知する。実行用プログラム変換部221は、入力値の通知を受けると、有効期限管理部228の設定値を入力値に更新することで、有効期間673が設定される。
ユーザ操作受付部222は、編集用鍵650の有効期間の入力を受け付ける送信側受付部の一例である。
【0183】
次に、開発用コンピュータ200は、制御プログラム変換処理S720を実行する。図18の制御プログラム変換処理S720は、図5の制御プログラム変換処理S720と同様の処理であるため、その説明を省略する。
【0184】
次に、開発用コンピュータ200は、S103〜S108の処理を実行する。図18のS103〜S107の処理は、図5のS103〜S107の処理と同様の処理である。
制御プログラム変換処理720が完了すると、開発用コンピュータ200のサーバ通信部203は、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604を管理サーバ100に送信する(S105〜S107)。
また、開発用コンピュータ200のサーバ通信部203は、暗号化実行用制御プログラム651aと実行用鍵652とをコントローラ300に送信する(S103〜S104)。
【0185】
S108において、開発用コンピュータ200のサーバ通信部203は、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604に加え、有効期間673を管理サーバ100に送信する。
【0186】
管理サーバ100は、開発用コンピュータ200から、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604、有効期間673を受信する。管理サーバ100は、開発用コンピュータ200から、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604、有効期間673を受信すると、編集用鍵登録処理S770を実行する。
【0187】
図20は、本実施の形態に係る管理サーバ100の編集用鍵登録処理S770の流れを示すフローチャートである。
図19を用いて管理サーバ100の編集用鍵登録処理S770について説明する。
【0188】
S771〜S772において、管理サーバ100は、ユーザテーブル110に基づいて、ログインしているユーザIDと、受信した開発会社情報653と保守会社情報661とが対応しているか否かを処理装置により確認する。
【0189】
管理サーバ100は、ユーザIDと、受信した開発会社情報653と保守会社情報661とが対応していると判定した場合には、処理をS773に進める。
管理サーバ100は、ユーザIDと、受信した開発会社情報653と保守会社情報661とが対応していないと判定した場合には、処理を終了する。
【0190】
S773において、管理サーバ100は、開発会社情報653と機器識別ID604とを対応付けて所属会社テーブル111に登録する。この処理は、図8のS731の処理と同様である。
S774において、管理サーバ100は、保守会社情報661と機器識別ID604とを対応付けて所属会社テーブル111に登録する。この処理は、図8のS732の処理と同様である。
【0191】
S775において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信する(S775a)。時刻管理サーバ700は、管理サーバ100から現在時刻問合せメッセージ671を受信すると、現在時刻672を管理サーバ100に送信する(S775b)。
【0192】
S776において、管理サーバ100は、時刻管理サーバ600から取得した現在時刻672に、開発用コンピュータ200から受信した有効期間673を処理装置により加算し、有効期限情報670(有効期限)とする。
【0193】
管理サーバ100は、開発用コンピュータ200から受信した機器識別ID604に対し、開発用コンピュータ200から受信した編集用鍵650と、算出した有効期限情報670とを対応付けて機器識別IDテーブル112に設定する。管理サーバ100は、機器識別IDテーブル112に、既に受信した機器識別ID604のレコードが設定されている場合には、編集用鍵650と有効期限情報670とを更新する。
【0194】
図21は、本実施の形態に係る管理サーバ100の有効期限確認処理S790の流れを示すフローチャートである。
管理サーバ100は、定期的にあるいは不定期に、図21に示す有効期限確認処理S790を実行する。
【0195】
S791において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信し、時刻管理サーバ700から現在時刻672を取得する。
S792において、管理サーバ100は、取得した現在時刻672が、有効期限情報670に示される有効期限に到達したか否かについて処理装置により判定する。
【0196】
管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達している判定した場合(S792にてYES)、処理をS793に進める。
S793において、管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達しているレコードの編集用鍵650を無効化する。管理サーバ100は、例えば、機器識別IDテーブル112の編集用鍵650の欄に、「NULL」を設定することにより、編集用鍵650を無効化する。
【0197】
管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達していないと判定した場合(S792にてNO)、処理を終了する。管理サーバ100は、この有効期限確認処理S790を、機器識別IDテーブル112のすべてのレコードに対して実行する。
【0198】
以上のように、本実施の形態に係る制御システム802は、サーバ(管理サーバ100)と第四の通信回線(通信回線405)で接続された時刻管理サーバ600を備えている。
【0199】
また、本実施の形態に係る制御システム802は、以下の手段を備える。
前記サーバは、時刻サーバ(時刻管理サーバ700)から現在時刻を取得し、前記現在時刻に前記第一のコンピュータ(開発用コンピュータ200)から通知された時間(有効期間673)を加算することで、前記暗号鍵(編集用鍵650)に関する有効期限を設定する手段を備える。
前記サーバは、設定された有効期限を経過すると、前記暗号鍵を消去する手段を備える。
【0200】
以上のように、本実施の形態に係る制御システム802によれば、制御プログラムの閲覧、実行に必要な鍵に対して有効期限を制御できることから、ネットワーク品質が悪く、制御プログラムを閲覧、編集するコンピュータを常時ネットワークに接続できない環境において、コンピュータの不正操作から制御プログラムを守るのに有効な手段となる。
【0201】
また、本実施の形態に係る制御システム802によれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぐことができる。
【0202】
実施の形態6.
本実施の形態では、主に、実施の形態1〜5と異なる点について説明する。特に、本実施の形態では、実施の形態2,5と異なる点について説明する。本実施の形態では、実施の形態2,5で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0203】
図22は、本実施の形態に係る制御システム802において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。図23は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
【0204】
本実施の形態では、実施の形態5で説明した制御システム802において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0205】
本実施の形態に係る制御システム802は、実施の形態5で説明した制御システム802に加えて、保守用コンピュータ250を備える。
保守用コンピュータ250の内部構成は、実施の形態5で説明した開発用コンピュータ200と同様の内部構成である。
また、本実施の形態に係る管理サーバ100に記憶されている機器識別IDテーブル112は、実施の形態5の図16で説明した機器識別IDテーブル112である。
【0206】
図22のS251において、保守用コンピュータ250は、管理サーバ100に対して、現在時刻問合せメッセージ671を送信する。
図22のS252において、管理サーバ100は、現在時刻問合せメッセージ671を受信すると、現在時刻672を保守用コンピュータ250に対して送信する。
保守用コンピュータ250は、管理サーバ100から現在時刻672を受信すると、自保守用コンピュータ250の時刻を現在時刻672に合わせる。これにより、仮に保守用コンピュータ250で独自に時刻が変更されていても、有効期限までの差分を正しく制御することが可能となる。
【0207】
図22のS101〜S102の処理、ユーザ認証処理S710、及びS201〜206の処理は、図5のS101〜S102の処理、ユーザ認証処理S710、及びS201〜206の処理と同様である。
【0208】
現在時刻の設定が完了すると、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知する(S101)。
管理サーバ100は、ユーザ認証処理710を実行する。保守用コンピュータ250は、管理サーバ100から認証結果603を受信し(S102)、認証結果603が認証許可応答であれば、コントローラ300から機器識別ID604を取得する(S201〜S202)。
【0209】
保守用コンピュータ250は、機器識別ID604を取得すると、機器識別ID604、保守会社情報661とを管理サーバ100に送信する(S203)。管理サーバ100は、保守用コンピュータ250から機器識別ID604と保守会社情報661とを受信すると、編集用鍵認証処理S780を実行する。
【0210】
図23は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
図23を用いて、管理サーバ100の編集用鍵認証処理S780について説明する。
【0211】
S781において、管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112(図3参照)に登録されているか否かを処理装置により確認する。
管理サーバ100は、入力した機器識別ID604が機器識別IDテーブル112に登録されていると確認した場合(S781でYES)、処理をS782に進める。
【0212】
管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112に登録されていないと確認した場合(S781でNO)、処理をS787に進める。
【0213】
S782において、管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応しているか否かについて処理装置により判定する。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応していると確認した場合(S782でYES)、処理をS783に進める。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録されていない、あるいは、受信した機器識別ID604に対応していないことを確認した場合(S782でNO)、処理をS787に進める。
【0214】
S783において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信する(S781a)。時刻管理サーバ700は、管理サーバ100から現在時刻問合せメッセージ671を受信すると、現在時刻672を管理サーバ100に送信する(S781b)。
【0215】
S784において、管理サーバ100は、受信した機器識別ID604に基づいて、機器識別IDテーブル112を処理装置により検索し、有効期限情報170を取得する。管理サーバ100は、取得した有効期限情報670を確認し、現在時刻が有効期限情報670により示される有効期限に到達しているか否かについて処理装置により判定する。
【0216】
管理サーバ100は、現在時刻が有効期限に到達していると判定した場合(S784にてNO)、処理をS787に進める。
管理サーバ100は、現在時刻が有効期限に到達していないと判定した場合(S784にてYES)、処理をS785に進める。
【0217】
S785において、管理サーバ100は、受信した機器識別ID604に基づいて、機器識別IDテーブル112を処理装置により検索する。管理サーバ100は、機器識別ID604に対応する編集用鍵650を、機器識別IDテーブル112から取得する。
S786において、管理サーバ100は、取得した編集用鍵650を鍵認証応答に設定する。
【0218】
図22のS204において、管理サーバ100は、編集用鍵650を設定した鍵認証応答を保守用コンピュータ250に送信する。
【0219】
一方、S787において、管理サーバ100は、鍵認証応答に「認証不可」を設定する。すなわち、管理サーバ100は、機器識別ID604が機器識別IDテーブル112に存在しない、所属会社テーブル111において機器識別ID604と保守会社情報661との対応が一致しない、あるいは、現在時刻が機器識別IDテーブルに記憶されている有効期限に到達しているなどの場合は、鍵認証応答に「認証不可」を設定する。
以上で、管理サーバ100の編集用鍵認証処理S780の説明を終わる。
【0220】
以上のように、管理サーバ100は、サーバ側通信部(受信側通信部)から機器識別IDを受信すると、受信した機器識別IDに対応する有効期限を取得するとともに、時刻管理サーバ700から現在時刻を取得し、取得した現在時刻が有効期限を過ぎているか否かを処理装置により判定する。管理サーバ100は、取得した現在時刻が有効期限を過ぎていると判定した場合には編集用鍵を消去し、取得した現在時刻が有効期限を過ぎていないと判定した場合には編集用鍵を取得する。管理サーバ100は、編集用鍵取得部の一例である。
【0221】
ユーザ通信部102(サーバ側通信部)は、管理サーバ100(編集用鍵取得部)により取得された編集用鍵を保守用コンピュータ(プログラム受信装置)に送信する。
【0222】
以上のように、本実施の形態に係る制御システム802は、前記サーバ(管理サーバ100)と第四の通信回線(通信回線405)で接続された時刻管理サーバ600を備える。
【0223】
また、本実施の形態に係る制御システム802は、以下の手段を備える。
前記第二のコンピュータ(保守用コンピュータ250)は、前記サーバから現在時刻を取得し、前記サーバの現在時刻と合わせる手段を備える。
前記サーバは、時刻管理サーバから現在時刻を取得し、前記暗号鍵(編集用鍵)に関する有効期限を確認する手段を備える。
前記サーバは、前記現在時刻よりも前記有効期限の方が先であれば、前記暗号鍵の送信を許可する手段を備える。
【0224】
以上のように、本実施の形態に係る制御システム802によれば、制御プログラムの閲覧、実行に必要な鍵に対して有効期限を制御できることから、ネットワーク品質が悪く、制御プログラムを閲覧、編集するコンピュータを常時ネットワークに接続できない環境において、コンピュータの不正操作から制御プログラムを守るのに有効な手段となる。また、この手法によっても、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ、制御プログラムを安全に保護できるとともに、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【0225】
以上、実施の形態1〜6について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【0226】
上記実施の形態1〜6の説明では、「コントローラ通信部」、「制御プログラム管理部」、「サーバ通信部」、「実行用プログラム変換部」、「ユーザ操作受付部」、「暗号鍵生成部」、「復号部」、「会社管理部」がそれぞれ独立した機能ブロックとして開発用コンピュータ200を構成している。しかし、これに限られるわけではなく、例えば、「コントローラ通信部」と「サーバ通信部」とをひとつの機能ブロックで実現し、「実行用プログラム変換部」と「暗号鍵生成部」とをひとつの機能ブロックで実現しても良い。あるいは、これらの機能ブロックを、他のどのような組み合わせで開発用コンピュータ200を構成しても構わない。
また、管理サーバ100、保守用コンピュータ250、コントローラ300についても同様に、機能ブロックをどのような組み合わせで構成しても構わない。
【符号の説明】
【0227】
100 管理サーバ、101 ユーザ管理テーブル、102 ユーザ通信部、103 時刻管理部、110 ユーザテーブル、111 所属会社テーブル、112 機器識別IDテーブル、150 ユーザID、151 ログイン情報、152 パスワード、160 ユーザID、161 ログイン情報、162 パスワード、200 開発用コンピュータ、201 コントローラ通信部、202 制御プログラム管理部、203 サーバ通信部、220 制御プログラム、221 実行用プログラム変換部、222 ユーザ操作受付部、223 暗号鍵生成部、224 復号部、226 会社管理部、227 制御プログラム記憶部、228 有効期限管理部、250 保守用コンピュータ、300,300a,300b コントローラ、301 通信制御部、302 実行用制御プログラム保管部、303 内部バス、304 機器識別ID管理部、305 制御プログラム実行部、306 復号部、400,401,402,403,404 通信回線、500 生産機器、601 ユーザID、602 パスワード、603 認証結果、604,607,604 機器識別ID、605,606,608 機器識別ID問合せメッセージ、611 ユーザID、612 パスワード、614 隣接PLC情報、640 実行用制御プログラム読み出しメッセージ、650 編集用鍵、651 実行用制御プログラム、651a 暗号化実行用制御プログラム、652 実行用鍵、653 開発会社情報、661 保守会社情報、670 有効期限情報、671 現在時刻問合せメッセージ、673 有効期間、700 時刻管理サーバ、800,801,802 制御システム、901 LCD、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 HDD、921 オペレーティングシステム、922 ウィンドウシステム、923 プログラム群、924 ファイル群。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23

【手続補正書】
【提出日】2014年8月1日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御システム及びプログラム送信装置プログラム及び認証サーバ及びプログラム保護方法及びプログラム送信方法に関する。
【背景技術】
【0002】
ファクトリーオートメーション(Factory・Automation:FA)システムでは、工場内の生産設備の動作を制御するためのコントローラが配置されている。このコントローラは、プログラマブルロジックコントローラ(Programmable・Logic・Controller:PLC)と呼ばれる。PLCを動作させるための制御プログラムはラダー等の言語を用いて設計される。設計された制御プログラムは、ラダープログラム開発環境を用いて実行用制御プログラムに変換され、通信ケーブルを介してPLCに書き込まれる。このように、制御プログラムを開発し、PLCに書き込む装置を開発用コンピュータと呼ぶ。
【0003】
ラダープログラム開発環境はWindows(登録商標)上で動作するソフトウェアとして広く市販されている。Windows(登録商標)が動作するコンピュータと、ラダープログラム開発環境があれば、PLCへの実行用制御プログラムの書き込みや、PLCからの実行用制御プログラムの読み出しがコンピュータを用いて容易に行える。このため、近年では既に工場での稼働実績のあるPLCから実行用制御プログラムを抜き取り、このプログラムを模倣して別の生産設備の動作を制御するためのPLCが作られるという問題が発生している。
【0004】
このような問題に対処するため、FAシステムにおいても模倣品への転用を防ぐための様々な対策が講じられてきている。一つの具体例として、特許文献1によれば、PLCに制御プログラムの実行用制御プログラムを書き込むとき、開発用コンピュータは、実行用制御プログラムを暗号化してPLCに転送する。制御プログラムを実行するときには、PLCは、予め生成された暗号ルールを解析し、開発用コンピュータに登録された制御機器固有の情報を抽出する。そして、PLCは、抽出した制御機器固有の情報に基づいて、実行用制御プログラムが制御機器(PLC)固有のプログラムか否かを確認し、固有のプログラムであればPLCにて実行用制御プログラムを復号することで、PLC内部のデータを保護する技術が紹介されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−65678号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1で示された方式では、実行用制御プログラムの暗号化や復号化に必要な情報が開発用コンピュータで管理されているため、開発用コンピュータが盗難されると、実行用制御プログラムの復号に必要な鍵が容易に入手できてしまうことから、実行用制御プログラムを保護できないという課題がある。
【0007】
また、FAシステムを構築、運用するとき、PLCの制御プログラムの開発、設計を行う会社と、保守を行う会社は異なることが多い。この状況においては、実行用制御プログラムの復号に必要な鍵は、PLCの実行用制御プログラムを開発した会社のコンピュータにより作成される。しかし、この鍵も含めて開発物は機密情報として会社内で管理されるため、会社が異なった場合は、機密管理の観点から会社間のデータの受け渡しは容易でない。よって、保守する会社では、PLCの制御プログラムの復号に必要な鍵を入手することはできないため、特許文献1に示された方式では、保守する会社のコンピュータで制御プログラムの閲覧ができないという課題がある。
【0008】
また、特許文献1で示された方式は、常にネットワークに接続された状態で実行用制御プログラム、及び実行用制御プログラムの暗号化や復号化に必要な情報を、開発用パソコンと制御機器との間で交換している。このため、特許文献1で示された方式では、ネットワーク上で転送されるデータ量は多くなる。このため、特許文献1で示された方式がネットワーク品質が悪い環境に適用されると、タイムアウトや通信回線障害が多く発生し、実行用制御プログラムの転送失敗が発生しやすくなるという課題がある。
【0009】
これらの課題を解決する手段として、実行用制御プログラムを開発した会社のコンピュータで、実行用制御プログラムの復号に必要な鍵を生成し、生成した鍵を別の媒体(USBメモリなど)に記録し、実行用制御プログラムを開発した会社から媒体を保守する会社に送付する方式が考えられる。そして、実行用制御プログラムを保守する会社は、媒体に記録された鍵を使って、実行用制御プログラムを保守する会社のコンピュータで制御プログラムの閲覧を可能とする。しかし、この方式でも媒体が盗難された場合は実行用制御プログラムの復号に必要な鍵が漏えいするため、制御プログラムを保護できないという課題が残る。
【0010】
本発明は、上記に示した課題を解決するためになされたものであり、特定のユーザに対しては、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラムの書き込みを容易にするとともに、実行用制御プログラムの閲覧や編集に必要な鍵の特定のユーザ以外への漏えいを防ぐことを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る制御システムは、機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置と、認証サーバとを備える制御システムにおいて、
前記プログラム送信装置は、
前記制御装置を識別する機器識別子を取得する送信側取得部と、
前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する送信側通信部とを備え、
前記認証サーバは、
前記送信側通信部から前記編集用鍵と前記機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子と対応付けて記憶装置に記憶し、
前記制御装置は、
前記送信側通信部により送信された前記実行用鍵と前記暗号化実行用プログラムとを受信し、受信した前記実行用鍵と前記暗号化実行用プログラムとに基づいて前記機器の制御を実行することを特徴とする。
【発明の効果】
【0012】
本発明に係る制御システムによれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護できるとともに、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【図面の簡単な説明】
【0013】
図1】実施の形態1に係る制御システム800のブロック構成図である。
図2】実施の形態1に係る開発用コンピュータ200の詳細ブロック構成図である。
図3】実施の形態1に係る管理サーバ100が備えるユーザ管理テーブル101の構成図である。
図4】実施の形態1に係る管理サーバ100、開発用コンピュータ200、コントローラ300のハードウェア構成の一例を示す図である。
図5】実施の形態1に係る制御システム800において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図6】実施の形態1に係る管理サーバ100のユーザ認証処理710の流れを示すフローチャートである。
図7】実施の形態1に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図8】実施の形態1に係る管理サーバ100の編集用鍵登録処理730の流れを示すフローチャートである。
図9】実施の形態2に係る制御システム800において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図10】実施の形態2に係る管理サーバ100の編集用鍵認証処理S750の流れを示すフローチャートである。
図11】実施の形態3に係る制御システム801のブロック構成図である。
図12】実施の形態3に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図13】実施の形態3に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図14】実施の形態4に係る制御システム801において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図15】実施の形態5に係る制御システム802のブロック構成図である。
図16】実施の形態5に係る管理サーバ100が備える機器識別IDテーブル112の構成図である。
図17】実施の形態5に係る開発用コンピュータ200の詳細ブロック構成図である。
図18】実施の形態5に係る制御システム800において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図19】実施の形態5に係る開発用コンピュータ200の有効期限設定処理S810の流れを示すフローチャートである。
図20】実施の形態5に係る管理サーバ100の編集用鍵登録処理S770の流れを示すフローチャートである。
図21】実施の形態5に係る管理サーバ100の有効期限確認処理S790の流れを示すフローチャートである。
図22】実施の形態6に係る制御システム802において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図23】実施の形態6に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
【発明を実施するための形態】
【0014】
実施の形態1.
図1は、本実施の形態に係る制御システム800のブロック構成図である。
本実施の形態に係る制御システム800は、例えば、工場内の生産機器500の動作を制御するためのシステムである。
図1に示すように、制御システム800は、管理サーバ100、開発用コンピュータ200、コントローラ300を備える。管理サーバ100と開発用コンピュータ200とは、通信回線400により接続されている。また、開発用コンピュータ200とコントローラ300とは、通信回線401により接続されている。
【0015】
管理サーバ100は、制御システム800において、制御プログラムの設計、保守等を行うユーザを管理する。管理サーバ100は、ユーザの認証処理等を実行する認証サーバの一例である。
コントローラ300は、機器の制御を実行する制御装置の一例である。
【0016】
開発用コンピュータ200は、ユーザによる操作を受け付け、受け付けた操作の内容に基づいて、制御プログラムの設計、開発などの処理を実行する。
制御プログラムは、コントローラ300で実行される生産機器500の制御が記述されたソースプログラムである。
【0017】
開発用コンピュータ200は、制御プログラムを、コントローラ300で実行できる実行用制御プログラムに変換し、変換した実行用制御プログラムを暗号化して、暗号化された実行用制御プログラム(暗号化実行用プログラムの一例)を生成する。
また、開発用コンピュータ200は、暗号化された実行用制御プログラム(以下、暗号化実行用制御プログラム651aとする)を実行用制御プログラムに復号し、かつ、復号された実行用制御プログラムを制御プログラムに変換する際に用いる編集用鍵と、暗号化実行用制御プログラム651aを実行用制御プログラムに復号する際に用いる実行用鍵とを生成する。
【0018】
開発用コンピュータ200は、暗号化実行用制御プログラム651aをコントローラ300に書き出すプログラム送信装置の一例である。
暗号化実行用制御プログラム651aをコントローラ300に書き出すとは、通信回線401を介して、暗号化実行用制御プログラム651aをコントローラ300に送信することである。
【0019】
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラムの書き出し要求を受け付け、コントローラ300に実行用制御プログラムと実行用鍵とを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録する。
【0020】
制御システム800は、保守用コンピュータ250が接続されていてもよい。
保守用コンピュータ250は、コントローラ300から実行用制御プログラムの読み出し要求を受け付け、コントローラ300から暗号化実行用制御プログラム651aを読み出す。
【0021】
保守用コンピュータ250は、ユーザの認証処理時に管理サーバ100から編集用鍵を取得する。
保守用コンピュータ250では、読み出した暗号化実行用制御プログラム651aを編集用鍵を用いて閲覧可能な制御プログラム220に変換する。
【0022】
開発用コンピュータ200と保守用コンピュータ250とは、内部構成は同一である。1つのコンピュータで開発用コンピュータ200と保守用コンピュータ250との両方の機能を有するものでもよい。あるいは、開発用コンピュータ200と保守用コンピュータ250とのいずれかの機能のみを有する1つのコンピュータであってもよい。
例えば、開発用コンピュータ200は開発会社が使用するコンピュータであり、保守用コンピュータ250は保守会社が利用するコンピュータである。
【0023】
コントローラ300は、制御プログラムを実行することにより、生産機器500の制御を実行する。コントローラ300は、開発用コンピュータ200から送信された実行用鍵と暗号化実行用制御プログラム651aとを受信し、受信した実行用鍵と暗号化実行用制御プログラム651aとに基づいて生産機器500の制御を実行する。
【0024】
図1を用いて、コントローラ300の機能について説明する。
コントローラ300は、通信制御部301、実行用制御プログラム保管部302、内部バス303、機器識別ID管理部304、制御プログラム実行部305、復号部306を備える。
コントローラ300の内部は、内部バス303を介して通信制御部301、実行用制御プログラム保管部302、機器識別ID管理部304、制御プログラム実行部305、復号部306が接続された構成となっている。
【0025】
通信制御部301は、通信回線401を介して、開発用コンピュータ200のコントローラ通信部201と接続されている。
通信回線401は、例えば、USBケーブル、Ethernet(登録商標)に対応したLANケーブル等である。
【0026】
実行用制御プログラム保管部302は、実行用制御プログラムをコントローラ300の備える記憶装置に記憶する。
機器識別ID管理部304は、コントローラ300の機器識別IDをコントローラ300の備える記憶装置に記憶する。
【0027】
復号部306は、実行用制御プログラム保管部302により保管されている実行用制御プログラムを復号する。
制御プログラム実行部305は、生産機器500に接続される。制御プログラム実行部305は、復号部306により復号された実行用制御プログラムを実行することにより、生産機器500の動作を制御する。
制御プログラム実行部305は、実行用制御プログラム保管部302から逐次コードを読み出し、生産機器500の制御に必要なプログラムを実行する。
【0028】
図2は、本実施の形態に係る開発用コンピュータ200の詳細ブロック構成図である。
次に、図1及び図2を用いて、開発用コンピュータ200の機能について説明する。
図1に示すように、開発用コンピュータ200は、コントローラ通信部201(送信側通信部、受信側通信部)、制御プログラム管理部202、サーバ通信部203(送信側通信部、受信側通信部)を備える。
【0029】
コントローラ通信部201は、通信回線401を介して、コントローラ300との通信を行う。
制御プログラム管理部202は、制御プログラム220を管理する。また、制御プログラム管理部202は、制御プログラム220を実行用制御プログラムに変換する。制御プログラム220を実行用制御プログラムに変換するとは、制御プログラム220に対し、コントローラ300(PLCの一例)において実行するために必要な処理を施して、実行用制御プログラムを生成することである。
サーバ通信部203は、通信回線400を介して、管理サーバ100との間で通信を行う。
【0030】
また、図2に示すように、制御プログラム管理部202は、制御プログラム記憶部227、実行用プログラム変換部221、暗号鍵生成部223、復号部224、ユーザ操作受付部222、会社管理部226を備える。
制御プログラム記憶部227は、制御プログラム220を開発用コンピュータ200の備える記憶装置に記憶する。
【0031】
実行用プログラム変換部221は、制御プログラム220を実行用制御プログラムに変換する。また、実行用プログラム変換部221は、実行用制御プログラムを制御プログラム220に変換する。
【0032】
暗号鍵生成部223は、制御プログラム220の閲覧、制御プログラム220の実行に必要な鍵を生成する。
復号部224は、制御プログラム220の閲覧、制御プログラム220の実行に必要な鍵を復号する。
【0033】
ユーザ操作受付部222(送信側受付部、受信側受付部)は、ユーザの操作を受け付け、実行用プログラム変換部221で行う処理を決定する。
会社管理部226は、開発用コンピュータ200の所属会社を管理する。
【0034】
図3は、本実施の形態に係る管理サーバ100が備えるユーザ管理テーブル101の構成図である。
次に、図1及び図3を用いて、管理サーバ100の機能について説明する。
図1に示すように、管理サーバ100は、ユーザ管理テーブル101、ユーザ通信部102(サーバ側通信部)を備える。
【0035】
ユーザ管理テーブル101は、制御システム800を利用するユーザであって、例えば、制御プログラム220の開発、保守等を行うユーザに関する情報を管理するテーブルである。
ユーザ通信部102は、通信回線400を介して、開発用コンピュータ200と通信を行う。
【0036】
図3に示すように、ユーザ管理テーブル101は、ユーザテーブル110、所属会社テーブル111、機器識別IDテーブル112を備える。
ユーザテーブル110は、ユーザを識別するユーザID150に対し、所属会社情報、パスワード等を対応付けたテーブルである。所属会社情報とは、ユーザID150により識別されるユーザが所属している会社を識別するための情報である。所属会社情報には、開発会社情報653と保守会社情報661とがある。
【0037】
所属会社テーブル111は、所属会社情報(開発会社情報653,保守会社情報661)と機器識別ID604とを対応付けて管理する。
機器識別ID604は、コントローラ300(制御装置)を識別するための識別子である。機器識別IDに対応する所属会社情報は、その機器識別IDにより識別されるコントローラ300(制御装置、制御機器)により実行される制御プログラムの開発・保守等を行う会社の情報である。
【0038】
機器識別IDテーブル112は、機器識別ID604と、機器識別ID604に対応する編集用鍵650とを管理する。機器識別ID604に対応する編集用鍵650には、機器識別ID604により識別されるコントローラ300に書き出された制御プログラムを閲覧するために必要な情報が含まれる。
【0039】
図3では、ユーザテーブル110、所属会社テーブル111、および機器識別IDテーブル112の構成例を示している。図3を用いて、ユーザテーブル110、所属会社テーブル111、および機器識別IDテーブル112の構成についてさらに詳しく説明する。
【0040】
ユーザテーブル110には、制御プログラムを開発した会社のユーザID150と対応する開発会社情報653、パスワード152、ログイン情報151が登録されている。また、制御プログラムを保守する会社のユーザID160と対応する保守会社情報661、パスワード162、ログイン情報161が登録されている。
【0041】
所属会社テーブル111には、開発会社情報653及び保守会社情報661と、これらの各々に対応する機器識別ID604とが登録される。機器識別ID604とは、開発会社情報653、あるいは保守会社情報661の開発あるいは保守の対となるコントローラ300を識別する識別子である。
【0042】
機器識別IDテーブル112には、機器識別ID604と、それに対応する編集用鍵650が登録されている。
【0043】
管理サーバ100と開発用コンピュータ200とは、通信回線400を介して接続される。管理サーバ100と開発用コンピュータ200とは、通信回線400を介して、制御プログラム220を設計、保守するユーザの認証処理のための情報の送受信、あるいは編集用鍵の送受信等を行う。
【0044】
管理サーバ100は、工場内もしくは遠隔地に設置された管理センター内に設置される。工場内に管理サーバ100が設置された場合、通信回線400はLANケーブルおよび付随する通信機器で構成される。
管理サーバ100が管理センターに設置された場合は、通信回線400は通信事業会社が提供する電話回線、光ケーブル、LANケーブルおよびこれらに付随する通信機器で構成される。
【0045】
図4は、本実施の形態に係る管理サーバ100、開発用コンピュータ200、コントローラ300のハードウェア構成の一例を示す図である。
【0046】
図4において、管理サーバ100、開発用コンピュータ200、コントローラ300は、コンピュータであり、LCD901(Liquid・Crystal・Display)、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【0047】
管理サーバ100、開発用コンピュータ200、コントローラ300は、プログラムを実行するCPU911(Central・Processing・Unit)を備えている。CPU911は、処理装置の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920(Hard・Disk・Drive)と接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
【0048】
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、HDD920は、不揮発性メモリの一例である。これらは、記憶装置、記憶部の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置の一例である。
【0049】
通信ボード915は、LAN(Local・Area・Network)等に接続されている。通信ボード915は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
【0050】
HDD920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU911により読み出され実行される。ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM914やHDD920等の記録媒体に記憶される。RAM914やHDD920等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0051】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM914等のメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、HDD920の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【0052】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【0053】
図5は、本実施の形態に係る制御システム800において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図5を用いて、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順について説明する。
【0054】
図5に示す処理は、開発用コンピュータ200が、ユーザがコントローラ300への実行用制御プログラムの書き出し実行を指示してから、コントローラ300に実行用制御プログラムを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録するまでの処理の流れを示したものである。
【0055】
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラム書き出し指示の操作を受け付ける。
例えば、ユーザ操作受付部222は、開発用コンピュータ200の表示装置にユーザ入力画面などを表示する。ユーザ操作受付部222は、ユーザ入力画面に入力された操作の内容を受け付ける。
【0056】
このとき、ユーザ操作受付部222(送信側受付部)は、ユーザによりユーザ入力画面へ入力されたユーザID601、パスワード602、開発会社情報653を入力する。
ユーザ入力画面に入力された操作の内容は、例えば、コントローラ300へ実行用制御プログラムを書き出す指示(以下、実行用制御プログラム書き出し指示とする)である。
ユーザID601、パスワード602、開発会社情報653は、ユーザの認証処理に用いる認証情報の一例である。
【0057】
ユーザ操作受付部222は、入力したユーザID601、パスワード602、開発会社情報653をユーザ通信部102に入力する。
図5のS101において、ユーザ通信部102は、ユーザ操作受付部222から入力したユーザID601、パスワード602、開発会社情報653を、通信回線400を介して、認証要求として管理サーバ100に送信する。
【0058】
管理サーバ100のユーザ通信部102は、開発用コンピュータ200のユーザ通信部102から認証要求を受信する。管理サーバ100は、認証要求を受信すると、認証要求に含まれるユーザID601、パスワード602、開発会社情報653を用いて、ユーザ認証処理S710を処理装置により実行する。管理サーバ100は、認証サーバの一例である。また、管理サーバ100は、ユーザの認証処理を実行する認証部の一例である。
【0059】
図6は、実施の形態1に係る管理サーバ100のユーザ認証処理S710の流れを示すフローチャートである。
図6を用いて、管理サーバ100のユーザ認証処理S710について説明する。
【0060】
管理サーバ100は、開発用コンピュータ200から通知されたユーザID601、パスワード602、開発会社情報653が、ユーザテーブル110に登録されたユーザID150、パスワード152、開発会社情報653と一致しているか否かを処理装置により確認する。
【0061】
S711において、管理サーバ100は、入力したユーザID601を用いて、ユーザテーブル110を検索する。
管理サーバ100は、入力したユーザID601と同一のユーザIDがユーザテーブル110に存在すると確認した場合(S711でYES)、処理をS712に進める。このとき、管理サーバ100は、入力したユーザID601と同一のユーザID150に対応する開発会社情報653と、パスワード152とをユーザテーブル110から抽出し、記憶装置に記憶する。
【0062】
管理サーバ100は、入力したユーザID601と同一のユーザIDがユーザテーブル110に存在しない(確認できない)場合(S711でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
【0063】
S712において、管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653(ユーザID601(150)に対応する開発会社情報653)と一致するか否かについて処理装置により確認する。
管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653と一致すると確認した場合(S712でYES)、処理をS713に進める。
【0064】
管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653と一致することが確認できない場合(S712でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
【0065】
S713において、管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152(ユーザID601(150)に対応するパスワード)と一致するか否かについて処理装置により確認する。
管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152と一致すると確認した場合(S713でYES)、処理をS714に進める。
S714において、管理サーバ100は、認証結果603に「認証許可」を設定する。
【0066】
管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152と一致することが確認できない場合(S713でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
以上で、図6に説明を終了する。
【0067】
図5のS102において、管理サーバ100のユーザ通信部102は、ユーザ認証処理S710を完了すると、通信回線400を介して認証結果603を開発用コンピュータ200に送信する。
【0068】
以上のように、管理サーバ100は、入力したユーザID601、パスワード602、開発会社情報653のうち一個でもユーザテーブル110と不一致があった場合は、S715のように認証不可応答を送信する。管理サーバ100は、入力したユーザID601、パスワード602、開発会社情報653のすべてが一致した場合は、S714のように認証許可応答を認証結果603に設定し、開発用コンピュータ200に対して認証結果603を通知する。
【0069】
図5のS102において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100のユーザ通信部102から認証結果603を受信する。
制御プログラム管理部202は、受け取った認証結果603に設定された認証応答を処理装置により判定する。
【0070】
制御プログラム管理部202は、認証結果603に設定された認証応答が「認証不可」であると判定した場合、処理を終了する。この場合、例えば、制御プログラム管理部202は、表示装置に「認証不可」のエラーメッセージ等を表示する。
【0071】
制御プログラム管理部202は、認証結果603に設定された認証応答が「認証許可」であると判定した場合、制御プログラム変換処理S720を実行する。
【0072】
図7は、本実施の形態に係る開発用コンピュータ200の制御プログラム変換処理S720の流れを示すフローチャートである。
図7を用いて、開発用コンピュータ200の制御プログラム変換処理S720について説明する。
制御プログラム管理部202の実行用プログラム変換部221は、制御プログラム変換処理S720を実行する。
【0073】
S721において、実行用プログラム変換部221は、コントローラ300の機器識別IDを取得するための機器識別ID問合せメッセージ605をコントローラ300に対して送信する。
【0074】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、機器識別ID304から、コントローラ300を識別する機器識別ID604を取得する。コントローラ300の通信制御部301は、通信回線401を介して、取得した機器識別ID604を開発用コンピュータ200に送信する。
【0075】
S722において、開発用コンピュータ200のコントローラ通信部201は、コントローラ300の機器識別ID604を受信する。開発用コンピュータ200のコントローラ通信部201は、受信した機器識別ID604を制御プログラム管理部202に入力する。以上のように、制御プログラム管理部202は、機器識別ID604を取得する。制御プログラム管理部202は、コントローラ300を識別する機器識別ID604(機器識別子)を取得する送信側取得部の一例である。
【0076】
S723において、制御プログラム管理部202の実行用プログラム変換部221は、制御プログラム220を入力する。制御プログラム220は、コントローラ300において実行される生産機器500の制御が記述されたソースプログラムである。制御プログラム220は、例えば、ラダー言語により記述されたラダープログラムである。
【0077】
実行用プログラム変換部221は、入力した制御プログラム220をコントローラ300において実行できる実行用制御プログラム651に変換する。実行用制御プログラム651は、例えば、コントローラ300において実行可能なオブジェクトプログラム(実行用プログラムの一例)である。
【0078】
S724において、暗号鍵生成部223は、実行用プログラム変換部221により変換された実行用制御プログラム651と、コントローラ300から取得した機器識別ID604とを入力する。暗号鍵生成部223は、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号し、かつ、復号された実行用制御プログラム651を制御プログラム220に変換する際に用いる編集用鍵を生成する。また、暗号鍵生成部223は、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する際に用いる実行用鍵を生成する。暗号鍵生成部223は、鍵生成部の一例である。
【0079】
暗号鍵生成部223は、機器識別ID604を受信(入力)すると、制御プログラム220の閲覧に必要な編集用鍵650と、コントローラ300の実行用制御プログラム651を実行するために必要な実行用鍵652とを生成し、実行用プログラム変換部221に通知する。
【0080】
S725において、実行用プログラム変換部221は、編集用鍵650と実行用鍵652とを受信し、制御プログラム変換処理S720が完了する。
【0081】
S103〜S104において、制御プログラム管理部202は、暗号鍵生成部223により生成された実行用鍵652と暗号化実行用制御プログラム651aとをコントローラ通信部201に出力する。
コントローラ通信部201は、制御プログラム管理部202から実行用鍵652と暗号化実行用制御プログラム651aとを入力する。コントローラ通信部201は、入力した実行用鍵652と暗号化実行用制御プログラム651aとを、コントローラ300に対して通信回線401を介して送信する。コントローラ通信部201は、送信側通信部の一例である。
【0082】
コントローラ300の通信制御部301は、開発用コンピュータ200から送信された暗号化実行用制御プログラム651aと実行用鍵652とを実行用制御プログラム保管部302に書き込む。
【0083】
開発用コンピュータ200の実行用プログラム変換部221は、会社管理部226に予め登録された開発用コンピュータ200の所属会社を取得する。開発用コンピュータ200の場合は、開発会社情報653が登録されており、保守用コンピュータ250の場合は、保守会社情報661が登録されている。
【0084】
あるいは、開発用コンピュータ200の会社管理部226には開発用コンピュータ200の開発会社情報653と、その後の保守を担当する保守会社情報661とが登録されていてもよい。また、保守用コンピュータ250の会社管理部226には自保守用コンピュータ250の保守会社情報661と、保守の対となる制御プログラムの開発を担当した開発会社情報653とが登録されていてもよい。
【0085】
S105〜S107において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を、通信回線400を介して送信する。
サーバ通信部203は、暗号鍵生成部223により生成された編集用鍵650とコントローラ300から取得した機器識別ID604とを管理サーバ100に送信する送信側通信部の一例である。
【0086】
管理サーバ100のユーザ通信部102(サーバ側通信部)は、開発用コンピュータ200から編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を受信する。管理サーバ100は、編集用鍵登録処理S730によって、ユーザ管理テーブル101に編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を登録する。
【0087】
図8は、実施の形態1に係る管理サーバ100の編集用鍵登録処理S730の流れを示すフローチャートである。
図8を用いて、管理サーバ100の編集用鍵登録処理S730の流れについて説明する。
【0088】
S731において、管理サーバ100は、開発会社情報653と機器識別ID604とを対応付けて所属会社テーブル111に登録する。
S732において、管理サーバ100は、保守会社情報661と機器識別ID604とを対応付けて所属会社テーブル111に登録する。
S733において、管理サーバ100は、機器識別ID604と編集用鍵650とを対応付けて機器識別IDテーブル112に登録する。
【0089】
以上で、開発用コンピュータ200が、ユーザがコントローラ300への実行用制御プログラムの書き出し実行を指示してから、コントローラ300に実行用制御プログラムを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録するまでの処理の流れについての説明を終わる。
【0090】
以上のように、本実施の形態に係る制御システム800は、設備の制御システムであって、前記設備の動作を制御するコントローラ300と、第一の通信回線(通信回線401)によって前記コントローラ300に接続され、前記コントローラ300との間で、制御プログラム220を読み書きする第一のコンピュータ(開発用コンピュータ200)と、第二の通信回線(通信回線400)によって前記第一のコンピュータに接続されるサーバ(管理サーバ100)を備える。
【0091】
また、本実施の形態に係る制御システム800は、前記第一のコンピュータから制御プログラムを前記コントローラに書き込むときに使用する、以下のような手段を備える。
【0092】
まず、前記サーバは、前記第一のコンピュータを使って書き込むユーザと所属会社を認証し、前記第一のコンピュータに対して書き込みの許可を判断する認証手段を備える。
また、前記第一のコンピュータは、前記コントローラから機器識別IDを読み込み、前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)と、前記制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)とを作成する鍵生成手段を備える。
また、前記鍵生成手段によって生成された、制御プログラムの閲覧と制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)を前記コントローラに書き込む書込手段を備える。
また、前記サーバは、前記第一のコンピュータの所属会社と前記コントローラの機器識別IDと前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)とを保管する手段を備える。
【0093】
以上のように、本実施の形態に係る制御システム800によれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護することができる。
【0094】
実施の形態2.
本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0095】
本実施の形態では、実施の形態1で説明した制御システム800において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0096】
図9は、本実施の形態に係る制御システム800において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図9を用いて、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出し、読み出した暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する手順について説明する。
【0097】
保守用コンピュータ250のユーザ操作受付部222は、ユーザから暗号化実行用制御プログラム651aの読み出し要求を受け付ける。
保守用コンピュータ250は、暗号化実行用制御プログラム651aの読み出し要求を受け付けると、コントローラ300から暗号化実行用制御プログラム651aを読み出し、管理サーバ100から制御プログラム220の閲覧に必要な編集用鍵を入手する。
そして、保守用コンピュータ250は、入手した編集用鍵650を用いて、暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する。
【0098】
保守用コンピュータ250は、ユーザから、コントローラ300から暗号化実行用制御プログラム651aを読み出す要求である読み出し指示の操作を受け付ける。
例えば、ユーザ操作受付部222は、保守用コンピュータ250の表示装置にユーザ入力画面などを表示する。ユーザ操作受付部222は、ユーザ入力画面に入力された操作の内容を受け付ける。
【0099】
このとき、ユーザ操作受付部222は、ユーザによりユーザ入力画面へ入力されたユーザID601、パスワード602、保守会社情報661を入力する。
ユーザ入力画面に入力された操作の内容は、例えば、コントローラ300から暗号化実行用制御プログラム651aを読み出す指示(以下、実行用制御プログラム読み出し指示とする)である。
【0100】
ユーザ操作受付部222は、入力したユーザID601、パスワード602、保守会社情報661をユーザ通信部102に入力する。ユーザ操作受付部222は、受信側受付部の一例である。
図9のS101において、ユーザ通信部102は、ユーザ操作受付部222から入力したユーザID601、パスワード602、保守会社情報661を、通信回線400を介して、認証要求として管理サーバ100に送信する。
【0101】
管理サーバ100のユーザ通信部102は、保守用コンピュータ250のユーザ通信部102から認証要求を受信する。管理サーバ100は、認証要求を受信すると、認証要求に含まれるユーザID601、パスワード602、保守会社情報661を用いて、ユーザ認証処理S710を処理装置により実行する。
【0102】
実施の形態1で説明したように、保守用コンピュータ250の内部構成は、図2に示した開発用コンピュータ200の内部構成と同じであるが、会社管理部226の設定値が開発用コンピュータ200の設定値と異なる。すなわち、開発用コンピュータ200を所有している会社と保守用コンピュータ250を所有している会社とが異なる点に留意する必要がある。
【0103】
保守用コンピュータ250は、ユーザによる実行用制御プログラム読み出し操作を受け付けることにより、コントローラ300から実行用制御プログラム読み出し処理を実行する。このとき、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知する。管理サーバ100は、ユーザ認証処理710を実行する。
【0104】
ユーザ認証処理S710については、実施の形態1で説明したものと同様である。ただし、開発会社情報653が保守会社情報661となる点が異なる。
【0105】
図9に示すように、管理サーバ100は、ユーザ認証処理S710において、受信したユーザID611、パスワード612、保守会社情報661が、ユーザテーブル110に登録されたユーザID160、パスワード162、保守会社情報661と一致しているか否かを処理装置により判定する(図6のS711〜S713を参照)。
【0106】
管理サーバ100は、ユーザID160、パスワード162、保守会社情報661のうち一個でも不一致があった場合は認証不可応答を認証結果603に設定し、認証結果603を保守用コンピュータ250に送信する(図9のS102)。
また、管理サーバ100は、ユーザID160、パスワード162、保守会社情報661のすべてが一致した場合は認証許可応答を認証結果603に設定し、認証結果603を保守用コンピュータ250に送信する(図9のS102)。
【0107】
保守用コンピュータ250の制御プログラム管理部202は、管理サーバ100から受信した認証結果603を処理装置により確認する。制御プログラム管理部202は、認証結果603が認証許可であれば、コントローラ300に対して機器識別ID問合せメッセージ605を送信する(S201)。
【0108】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300の機器識別ID604を制御プログラム管理部202に通知する(S202)。
【0109】
制御プログラム管理部202は、取得した機器識別ID604と保守会社情報661とを管理サーバ100に送信する(S203)。管理サーバ100は、機器識別ID604と保守会社情報661を受信すると、編集用鍵認証処理S750を実行し、編集用鍵650を保守用コンピュータ250に対して送信する(S204)。制御プログラム管理部202は、受信側取得部の一例である。
【0110】
図10は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S750の流れを示すフローチャートである。
図10を用いて、管理サーバ100の編集用鍵認証処理S750の流れについて説明する。
【0111】
S751において、管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112(図3参照)に登録されているか否かを処理装置により確認する。
管理サーバ100は、入力した機器識別ID604が機器識別IDテーブル112に登録されていると確認した場合(S751でYES)、処理をS752に進める。
【0112】
管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112に登録されていることが確認できない場合(S751でNO)、処理をS755に進める。
【0113】
S752において、管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応しているか否かについて処理装置により確認する。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応していると確認した場合(S752でYES)、処理をS753に進める。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録されていると確認されない場合、あるいは、受信した機器識別ID604に対応していると確認されない場合(S752でNO)、処理をS755に進める。
【0114】
S753において、管理サーバ100は、機器識別ID604に対応する編集用鍵650を機器識別IDテーブル112から取得する。
S754において、管理サーバ100は、取得した編集用鍵650を鍵認証応答に設定する。
一方、S755において、管理サーバ100は、鍵認証応答に「認証不可」を設定する。すなわち、管理サーバ100は、機器識別ID604が機器識別IDテーブル112に存在しない場合、あるいは存在していても所属会社テーブル111において機器識別ID604と保守会社情報661とが対応していない場合は、鍵認証応答に「認証不可」を設定する。
【0115】
以上で、管理サーバ100の編集用鍵認証処理S750の説明を終わる。
【0116】
図9のS204において、管理サーバ100のユーザ通信部102は、通信回線400を介して、鍵認証応答を保守用コンピュータ250に送信する。
このとき、編集用鍵認証が成功(認証許可)していれば鍵認証応答には編集用鍵650が設定されており、編集用鍵認証が失敗(認証不可)であれば鍵認証応答には認証不可が設定されている。
【0117】
図9のS205において、保守用コンピュータ250は、鍵認証応答として編集用鍵650を受信すると、コントローラ300に対して暗号化実行用制御プログラム651aの読み出しを要求する実行用制御プログラム読み出しメッセージ640(読み出し命令の一例)を送信する。保守用コンピュータ250は、プログラム受信装置の一例である。また、コントローラ通信部201は、受信側通信部の一例である。
【0118】
コントローラ300は、保守用コンピュータ250から実行用制御プログラム読み出しメッセージ640を受信する。コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aを読み出す。
【0119】
このとき、コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aと実行用鍵652とを読み出し、復号部306に入力してもよい。復号部306は、暗号化実行用制御プログラム651aと実行用鍵652とに基づいて、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する。コントローラ300の通信制御部301は、復号部306により復号された実行用制御プログラム651を保守用コンピュータ250に送信するとしてもよい。
ただし、本実施の形態では、コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aを読み出し、通信制御部301は、暗号化実行用制御プログラム651aを保守用コンピュータ250に送信するものとする。
【0120】
保守用コンピュータ250のコントローラ通信部201は、コントローラ300から暗号化実行用制御プログラム651aを受信する。
保守用コンピュータ250のコントローラ通信部201は、受信した暗号化実行用制御プログラム651aを制御プログラム管理部202に入力する。
保守用コンピュータ250は、管理サーバ100から受信した編集用鍵650とコントローラ300から受信した暗号化実行用制御プログラム651aとに基づいて、暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する制御プログラム変換処理S760を実行する。
【0121】
以下に、保守用コンピュータ250における制御プログラム変換処理S760について説明する。
制御プログラム管理部202の復号部224は、編集用鍵650と暗号化実行用制御プログラム651aとを入力し、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する。
また、制御プログラム管理部202の実行用プログラム変換部221は、編集用鍵650と実行用制御プログラム651とを入力し、実行用制御プログラム651を閲覧・編集が可能な制御プログラム220に変換する。
【0122】
保守用コンピュータ250は、ログイン(S101〜S102)したユーザによる制御プログラムの読み出し要求を受け付ける。保守用コンピュータ250は、制御プログラム変換処理S760を実行し、閲覧・編集が可能な制御プログラム220を取得する。その後、保守用コンピュータ250は、ユーザの操作により、例えば、制御プログラム220の保守・編集・変更・修正等の処理を実行する。
【0123】
保守用コンピュータ250は、ユーザによる要求に基づいて、閲覧可能な制御プログラム220に対して保守・編集・変更・修正等の処理を施し、変更後制御プログラム220aを生成する。
【0124】
図5のS720の処理により、保守用コンピュータ250は、変更後制御プログラム220aを実行用のプログラムに変換し、さらに、変換した変更後制御プログラム220aを暗号化し、暗号化実行用変更後制御プログラム221aを生成する。保守用コンピュータ250は、このとき、新たに編集用鍵650、実行用鍵652を生成する。
S103〜S107の処理により、保守用コンピュータ250は、新たな編集用鍵650を管理サーバ100に登録する。また、保守用コンピュータ250は、新たな実行用鍵652と、暗号化実行用変更後制御プログラム221aとをコントローラ300に送信する。
【0125】
以上のように、本実施の形態に係る保守用コンピュータ250は、編集用鍵650を受けるとコントローラ300から実行用制御プログラム651を読み出し、編集用鍵650を復号部224に入力して実行用制御プログラムの閲覧に必要な情報を復号し、実行用制御プログラム651を閲覧可能な制御プログラム220に変換する。
【0126】
以上のように、本実施の形態に係る制御システム800は、コントローラ(コントローラ300)との間で制御プログラムを読み書きする第二のコンピュータ(保守用コンピュータ250)により、コントローラから制御プログラムを読み込むときに使用する、以下のような手段を備える。
【0127】
前記サーバ(管理サーバ100)は、前記制御プログラムを読み込むユーザと所属会社とを認証し、前記第二のコンピュータに対して読み込みの許可を判断する認証手段を備える。
前記第二のコンピュータは、前記コントローラから機器識別IDを読み込み、前記サーバに通知する手段を備える。
前記サーバは、前記第二のコンピュータから前記機器識別IDを受信すると、前記機器識別IDに対応する前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)を前記第二のコンピュータに送信する手段を備える。
前記第二のコンピュータは、前記サーバから前記暗号鍵(編集用鍵650)を受信すると、前記コントローラから制御プログラム(暗号化実行用制御プログラム651a、あるいは、実行用制御プログラム651)を読み込み、前記暗号鍵を用いて、前記制御プログラムの閲覧ができるようにする手段を備える。
【0128】
以上のように、本実施の形態に係る制御システム800によれば、PLC(例えば、コントローラ300)の制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護しつつ、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【0129】
実施の形態3.
本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0130】
図11は、本実施の形態に係る制御システム801のブロック構成図である。図12は、本実施の形態に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに対し暗号化実行用制御プログラム651aを書き出す手順を示すシーケンス図である。
図11及び図12を用いて、本実施の形態に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに対し実行用制御プログラム651を書き出す手順について説明する。
【0131】
図11は、実施の形態1で説明した図1に対応する図であり、図1と同様の機能構成については同一の符号を付し、その説明を省略する。図12は、実施の形態1で説明した図5に対応する図であり、図5と同様の機能構成については同一の符号を付し、その説明を省略する。
【0132】
図11に示すように、制御システム801において、実施の形態1で説明した制御システム800と異なる点は、複数のコントローラ300a,300bが通信回線402、402,403、404を介してコントローラ300と接続された構成になっている点である。
【0133】
図11に示すように、コントローラ300は、通信回線402を介してコントローラ300aと接続される。また、コントローラ300は、通信回線403を介してコントローラ300bと接続される。コントローラ300aとコントローラ300bとは、通信回線404を介して接続されている。
コントローラ300aとコントローラ300bとは、コントローラ300(制御装置)に接続される隣接接続装置の一例である。
【0134】
図12では、制御システム801において、開発用コンピュータ200が、ユーザによる実行用制御プログラム書き出し要求を受けて、コントローラ300への実行用制御プログラム書き出し処理を実行し、コントローラ300に実行用制御プログラムを書き出すまでの処理の流れを示したものである。
【0135】
図12に示した手順について説明する。
図12のS101〜S102は、図5のS101〜S102と同様の処理である。
開発用コンピュータ200は、コントローラ300への実行用制御プログラム書き出し処理を実行するとき、まず、ユーザID601、パスワード602、開発会社情報653を管理サーバ100に通知する(S101)。
管理サーバ100は、通知を受けるとユーザ認証処理S710を実行し、認証結果603を開発用コンピュータ200に対して応答する(S102)。
【0136】
図12の制御プログラム変換処理S720は、図5の制御プログラム変換処理S720と同様の処理である。
開発用コンピュータ200の制御プログラム管理部202は、管理サーバ100から認証結果603をサーバ通信部203経由で受け取る。そして、制御プログラム管理部202は、受け取った認証結果603を確認し、認証許可であれば、制御プログラム変換処理S720を実行する。
【0137】
図13は、本実施の形態に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図12及び図13を用いて、開発用コンピュータ200の制御プログラム管理部202による制御プログラム変換処理S720について説明する。
【0138】
図12のS721は、図5及び図7のS721と同様の処理である。
図12のS721において、開発用コンピュータ200の制御プログラム管理部202は、コントローラ300に対して機器識別ID問合せメッセージ605をコントローラ300に対して送信する(S721)。
【0139】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300aとコントローラ300bに対して、それぞれ機器識別ID問合せメッセージ606、608を送信する(S721−1,S721−3)。
【0140】
コントローラ300aは、機器識別ID問合せメッセージ606を受信すると、コントローラ300aの機器識別ID607をコントローラ300に通知する(S721−2)。コントローラ300bは、機器識別ID問合せメッセージ608を受信すると、コントローラ300bの機器識別ID609をコントローラ300に通知する(S721−4)。
【0141】
コントローラ300は、コントローラ300a,300bから機器識別ID607,609を受信すると、受信した機器識別ID607,609をもとにコントローラ300と隣接しているコントローラ300a,300b(PLC)の情報を隣接PLC情報614として作成する。
【0142】
隣接PLC情報614は、コントローラ300(制御装置)とコントローラ300a,300b(隣接接続装置)との接続関係を含む隣接情報の一例である。
コントローラ300は、機器識別ID604と隣接PLC情報614とを、開発用コンピュータ200の制御プログラム管理部204に通知する。
【0143】
なお、本実施の形態では、隣接PLC情報614は、コントローラ300において作成される例を示した。しかし、開発用コンピュータ200でも、コントローラ300aの機器識別ID607とコントローラ300bの機器識別ID609とを取得することによって作成することができる。
【0144】
図13のS726において、開発用コンピュータ200の制御プログラム管理部202は、コントローラ300から機器識別ID604と隣接PLC情報614を受信する。
【0145】
図13のS723は、図7のS723と同様の処理である。
S723において、制御プログラム管理部202は、制御プログラム220をコントローラ300において実行可能な実行用制御プログラム651に変換する。
【0146】
図13のS727において、制御プログラム管理部202は、隣接PLC情報614と機器識別ID604とを暗号鍵生成部223に入力する。暗号鍵生成部223は、隣接PLC情報614と機器識別ID604とに基づいて、実行用制御プログラム651を暗号化し、暗号化実行用制御プログラム651aを生成するとともに、制御プログラム220の閲覧に必要な編集用鍵650と、コントローラ300の実行用制御プログラムを実行するために必要な実行用鍵652とを生成する。
【0147】
図13のS725は、図7のS725と同様の処理であるため説明を省略する。
【0148】
図12のS103〜S104は、図5のS103〜S104と同様の処理である。
開発用コンピュータ200のコントローラ通信部201は、暗号化実行用制御プログラム651aと実行用鍵652とをコントローラ300に送信する(S103,S104)。
【0149】
また、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650と隣接PLC情報614とを送信する。
【0150】
図12のS105a〜S107において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650、隣接PLC情報614、開発会社情報653、保守会社情報661を、通信回線400を介して送信する。
図12のS105a〜S107は、図5のS105〜S107と同様の処理であるが、機器識別ID604に替えて隣接PLC情報614を管理サーバ100に送信する点が異なる。
【0151】
管理サーバ100のユーザ通信部102は、開発用コンピュータ200から編集用鍵650、隣接PLC情報614、開発会社情報653、保守会社情報661を受信する。管理サーバ100は、編集用鍵登録処理S730によって、ユーザ管理テーブル101に編集用鍵650隣接PLC情報614、開発会社情報653、保守会社情報661を登録する。
【0152】
管理サーバ100の編集用鍵登録処理S730は、図8で説明した。管理サーバ100の編集用鍵登録処理S730と同様であるが、機器識別ID604に替えて隣接PLC情報614を機器識別IDテーブル112に登録する点が異なっている。
【0153】
以上のように、本実施の形態に係る制御システム801は、第一のコントローラ(コントローラ300)と、第三の通信回線(通信回線402)によって第一のコントローラに接続された第二のコントローラ(コントローラ300a)と、第一のコントローラとの間で制御プログラムの読み書きを行う第一のコンピュータ(開発用コンピュータ200)と、第二の通信回線(通信回線40)によって前記第一のコンピュータに接続されるサーバ(管理サーバ100)とを備えた制御システムである。
【0154】
本実施の形態に係る制御システム801は、前記第一のコンピュータから制御プログラムを前記第一のコントローラに書き込むとき、以下の処理を行う手段を備える。
前記サーバは、前記第一のコンピュータを使って書き込むユーザと所属会社を認証し、前記コンピュータに対して書き込みの許可を判断する認証手段を備える。
前記第一のコントローラは、通信回線を通じて接続されている第二のコントローラに関する識別情報を読み込み、第一および第二のコントローラが隣接していることを示す隣接情報(隣接PLC情報614)を作成する手段を備える。
前記第一のコンピュータは、前記第一のコントローラから前記隣接情報を読み込み、前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)と、前記制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)とを作成する鍵生成手段を備える。
前記第一のコンピュータは、さらに、前記鍵生成手段によって生成された、制御プログラムの閲覧と制御プログラムの実行を可能とするための暗号鍵を前記第一のコントローラに書き込む手段を備える。
前記サーバは、前記第一のコンピュータの所属会社情報と、前記隣接情報と、前記制御プログラムの閲覧を可能とするための暗号鍵とを保管する手段を備える。
【0155】
以上のように、本実施の形態に係る制御システム801によれば、複数のコントローラ(PLC)間の組み合わせ及び接続関係を示す隣接PLC情報が管理サーバに登録されている隣接PLC情報と一致したときに限り、制御プログラムの閲覧に必要な編集用鍵を取得することができ、制御プログラムの実行が許可されるようになり、制御プログラムの機密性を向上させることが可能になる。
【0156】
実施の形態4.
本実施の形態では、実施の形態1〜3と異なる点について説明する。本実施の形態では、実施の形態1〜3で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0157】
本実施の形態では、実施の形態3で説明した制御システム801において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0158】
図14は、本実施の形態に係る制御システム801において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図14を用いて、保守用コンピュータ250が、コントローラ300から暗号化実行用制御プログラム651aを読み出し、読み出した暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換するまでの手順について説明する。
【0159】
図14のS101〜S102は、図9のS101〜S102と同様の処理である。
図14のS101において、ユーザにより、保守用コンピュータ250にてコントローラ300からの実行用制御プログラム読み出し操作を実行したとき、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知し、管理サーバ100にてユーザ認証処理S710を実行する。
【0160】
図14のS201は、図9のS201と同様の処理である。
保守用コンピュータ250の制御プログラム管理部202は、受け取った認証結果603を確認し、認証許可であれば、コントローラ300に対して機器識別ID問合せメッセージ605を送信する(S201)。
【0161】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300aとコントローラ300bに対して、それぞれ機器識別ID問合せメッセージ606,608を送信する(S201−1,S201−3)。
【0162】
コントローラ300aは、機器識別ID問合せメッセージ606を受信すると、コントローラ300aの機器識別ID607をコントローラ300に通知する(S201−2)。
コントローラ300bは、機器識別ID問合せメッセージ608を受信すると、コントローラ300bの機器識別ID609をコントローラ300に通知する(S201−4)。
【0163】
コントローラ300は、コントローラ300a,300bから機器識別ID607,609を受信すると、受信した機器識別ID607,609をもとにコントローラ300と隣接しているコントローラ300a,300bの情報を隣接PLC情報614として作成する。
図14のS202aにおいて、コントローラ300は、コントローラ300の機器識別ID604とともに、隣接PLC情報614を開発用コンピュータ200の制御プログラム管理部204に通知する。
【0164】
図14のS203aにおいて、保守用コンピュータ250の制御プログラム管理部202は、取得した隣接PLC情報614と保守会社情報661とを管理サーバ100に通知する。
【0165】
管理サーバ100は、保守用コンピュータ250から隣接PLC情報614と保守会社情報661とを受信すると、編集用鍵認証処理S750を実行する。
管理サーバ100による編集用鍵認証処理S750は、図9及び図10で説明した編集用鍵認証処理S750と同様の処理である。ただし、本実施の形態では、管理サーバ100は、機器識別ID604に替えて、隣接PLC情報614により機器識別IDテーブル112を検索して、編集用鍵650を取得する。
【0166】
図14のS204〜S206及び制御プログラム変換処理S760の処理は、図9のS204〜S206及び制御プログラム変換処理S760の処理と同様である。
本実施の形態に係る管理サーバ100による編集用鍵認証処理750では、管理サーバ100は、隣接PLC情報614と保守会社情報661とを確認し、合致するものがあれば隣接PLC情報614に対応する編集用鍵650を検索し、得られた編集用鍵650を保守用コンピュータ250に送信する(S204)。
【0167】
保守用コンピュータ250は、編集用鍵650を受信すると、コントローラ300から暗号化実行用制御プログラム651aを読み出す(S205,S206)。
保守用コンピュータ250は、編集用鍵650を復号部224に入力して暗号化実行用制御プログラム651aの閲覧に必要な情報を復号し、実行用制御プログラム651を閲覧可能な制御プログラム220に変換する。
【0168】
図14の制御プログラム変換処理S760は、図9の制御プログラム変換処理S760と同様であるため説明を省略する。
【0169】
以上のように、本実施の形態に係る制御システム801は、前記コンピュータ(保守用コンピュータ250)にて前記第一のコントローラ(コントローラ300)から制御プログラム220を読み込むときに使用する、以下の手段を備える。
前記サーバ(管理サーバ100)は、前記コンピュータを使って書き込む操作を実行するユーザのユーザIDと所属会社とを認証し、前記コンピュータに対して書き込みの許可を判断する認証手段を備える。
前記第一のコントローラは、通信回線を通じて接続されている第二のコントローラ(コントローラ300a)に関する識別情報(機器識別ID)を読み込み、第一および第二のコントローラが隣接していることを示す隣接情報(隣接PLC情報614)を作成する手段を備える。
前記コンピュータは、前記第一のコントローラから、前記隣接情報を前記サーバに通知する手段を備える。
前記サーバは、前記コンピュータから前記隣接情報を受信すると、前記隣接情報に対応する前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)を前記コンピュータに送信する手段を備える。
前記コンピュータは、前記サーバから前記暗号鍵を受信すると、前記第一のコントローラから制御プログラムを読み込み、前記暗号鍵を用いて、前記制御プログラムの閲覧できるようにする手段を備える。
【0170】
以上のように、本実施の形態に係る制御システム801によれば、複数のコントローラ(PLC)間の組み合わせ及び接続関係を示す隣接PLC情報が管理サーバに登録されている隣接PLC情報と一致したときに限り、制御プログラムの閲覧に必要な編集用鍵の取得や、制御プログラムの実行が許可されるようになり、制御プログラムの機密性を向上させることが可能になる。
【0171】
本実施の形態に係る制御システム801によれば、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラムの書き込みの利便性を高くすることができる。
【0172】
実施の形態5.
本実施の形態では、主に、実施の形態1〜4と異なる点について説明する。特に、本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0173】
図15は、本実施の形態に係る制御システム802のブロック構成図である。図16は、本実施の形態に係る管理サーバ100が備える機器識別IDテーブル112の構成図である。図17は、本実施の形態に係る開発用コンピュータ200の詳細ブロック構成図である。図18は、本実施の形態に係る制御システム800において、開発用コンピュータ200からコントローラ300に対し実行用制御プログラム651を書き出す手順を示すシーケンス図である。
【0174】
図15図17は、実施の形態1で説明した図1図3に対応し、図1図3に記載した機能構成と同様の機能構成には同一の符号を付し、その説明を省略する場合もあるものとする。また、図18は、実施の形態1で説明した図5に対応し、図5に記載した機能構成と同様の機能構成には同一の符号を付し、その説明を省略する場合もあるものとする。
【0175】
図15に示すように、管理サーバ100は、時刻管理部103を備える。
時刻管理部103は、暗号鍵(編集用鍵650)の有効期限を管理する。時刻管理部103は、通信回線405を介して、時刻管理サーバ700(現在時刻管理サーバ)と接続されている。
【0176】
図16に示すように、管理サーバ100の機器識別IDテーブル112は、機器識別ID604に対応する情報として、編集用鍵650に加え、有効期限情報670を備えている。有効期限情報670は、対応する編集用鍵650の有効期限を示す情報である。
【0177】
図17に示すように、制御プログラム管理部202は、実施の形態1で説明した機能構成に加え、有効期限管理部228を備える。
有効期限管理部228は、ユーザが設定した有効期限を管理する。
【0178】
図18では、制御システム802において、開発用コンピュータ200がコントローラ300へ実行用制御プログラム書き出し処理を実行してから、コントローラ300に実行用制御プログラムが書き出されるまでの処理の流れを示したものである。
まず、開発用コンピュータ200から制御プログラムの実行用制御プログラムを書き込む手順について、図18を用いて説明する。
【0179】
図18のS101〜S102は、図5のS101〜S102と同様の処理である。
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラム書き出し要求を受け付けるとき、まず、ユーザにより入力されたユーザID601、パスワード602、開発会社情報653を管理サーバ100に通知する(S101)。
管理サーバ100は、通知を受けるとユーザ認証処理S710を実行し、認証結果603を開発用コンピュータ200に対して応答する(S102)。
【0180】
開発用コンピュータ200は、管理サーバ100から認証結果603を受け取り、認証結果603の内容が認証許可であれば、有効期限設定処理S810を実行する。
図19は、本実施の形態に係る開発用コンピュータ200の有効期限設定処理S810の流れを示すフローチャートである。
図19を用いて、開発用コンピュータ200の有効期限設定処理S810について説明する。
【0181】
S811において、実行用プログラム変換部221は、ユーザ操作受付部222に有効期限の入力を求めるメッセージを通知する。ユーザ操作受付部222は、開発用コンピュータ200の表示画面に有効期限の入力を促すメッセージ(有効期限設定画面)を表示する。
【0182】
S812において、ユーザ操作受付部222は、ユーザにより有効期限設定画面に入力された入力値を実行用プログラム変換部221へ通知する。実行用プログラム変換部221は、入力値の通知を受けると、有効期限管理部228の設定値を入力値に更新することで、有効期間673が設定される。
ユーザ操作受付部222は、編集用鍵650の有効期間の入力を受け付ける送信側受付部の一例である。
【0183】
次に、開発用コンピュータ200は、制御プログラム変換処理S720を実行する。図18の制御プログラム変換処理S720は、図5の制御プログラム変換処理S720と同様の処理であるため、その説明を省略する。
【0184】
次に、開発用コンピュータ200は、S103〜S108の処理を実行する。図18のS103〜S107の処理は、図5のS103〜S107の処理と同様の処理である。
制御プログラム変換処理720が完了すると、開発用コンピュータ200のサーバ通信部203は、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604を管理サーバ100に送信する(S105〜S107)。
また、開発用コンピュータ200のサーバ通信部203は、暗号化実行用制御プログラム651aと実行用鍵652とをコントローラ300に送信する(S103〜S104)。
【0185】
S108において、開発用コンピュータ200のサーバ通信部203は、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604に加え、有効期間673を管理サーバ100に送信する。
【0186】
管理サーバ100は、開発用コンピュータ200から、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604、有効期間673を受信する。管理サーバ100は、開発用コンピュータ200から、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604、有効期間673を受信すると、編集用鍵登録処理S770を実行する。
【0187】
図20は、本実施の形態に係る管理サーバ100の編集用鍵登録処理S770の流れを示すフローチャートである。
20を用いて管理サーバ100の編集用鍵登録処理S770について説明する。
【0188】
S771〜S772において、管理サーバ100は、ユーザテーブル110に基づいて、ログインしているユーザIDと、受信した開発会社情報653と保守会社情報661とが対応しているか否かを処理装置により確認する。
【0189】
管理サーバ100は、ユーザIDと、受信した開発会社情報653と保守会社情報661とが対応していると判定した場合には、処理をS773に進める。
管理サーバ100は、ユーザIDと、受信した開発会社情報653と保守会社情報661とが対応していないと判定した場合には、処理を終了する。
【0190】
S773において、管理サーバ100は、開発会社情報653と機器識別ID604とを対応付けて所属会社テーブル111に登録する。この処理は、図8のS731の処理と同様である。
S774において、管理サーバ100は、保守会社情報661と機器識別ID604とを対応付けて所属会社テーブル111に登録する。この処理は、図8のS732の処理と同様である。
【0191】
S775において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信する(S775a)。時刻管理サーバ700は、管理サーバ100から現在時刻問合せメッセージ671を受信すると、現在時刻672を管理サーバ100に送信する(S775b)。
【0192】
S776において、管理サーバ100は、時刻管理サーバ00から取得した現在時刻672に、開発用コンピュータ200から受信した有効期間673を処理装置により加算し、有効期限情報670(有効期限)とする。
【0193】
管理サーバ100は、開発用コンピュータ200から受信した機器識別ID604に対し、開発用コンピュータ200から受信した編集用鍵650と、算出した有効期限情報670とを対応付けて機器識別IDテーブル112に設定する。管理サーバ100は、機器識別IDテーブル112に、既に受信した機器識別ID604のレコードが設定されている場合には、編集用鍵650と有効期限情報670とを更新する。
【0194】
図21は、本実施の形態に係る管理サーバ100の有効期限確認処理S790の流れを示すフローチャートである。
管理サーバ100は、定期的にあるいは不定期に、図21に示す有効期限確認処理S790を実行する。
【0195】
S791において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信し、時刻管理サーバ700から現在時刻672を取得する。
S792において、管理サーバ100は、取得した現在時刻672が、有効期限情報670に示される有効期限に到達したか否かについて処理装置により判定する。
【0196】
管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達している判定した場合(S792にてYES)、処理をS793に進める。
S793において、管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達しているレコードの編集用鍵650を無効化する。管理サーバ100は、例えば、機器識別IDテーブル112の編集用鍵650の欄に、「NULL」を設定することにより、編集用鍵650を無効化する。
【0197】
管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達していないと判定した場合(S792にてNO)、処理を終了する。管理サーバ100は、この有効期限確認処理S790を、機器識別IDテーブル112のすべてのレコードに対して実行する。
【0198】
以上のように、本実施の形態に係る制御システム802は、サーバ(管理サーバ100)と第四の通信回線(通信回線405)で接続された時刻管理サーバ00を備えている。
【0199】
また、本実施の形態に係る制御システム802は、以下の手段を備える。
前記サーバは、時刻サーバ(時刻管理サーバ700)から現在時刻を取得し、前記現在時刻に前記第一のコンピュータ(開発用コンピュータ200)から通知された時間(有効期間673)を加算することで、前記暗号鍵(編集用鍵650)に関する有効期限を設定する手段を備える。
前記サーバは、設定された有効期限を経過すると、前記暗号鍵を消去する手段を備える。
【0200】
以上のように、本実施の形態に係る制御システム802によれば、制御プログラムの閲覧、実行に必要な鍵に対して有効期限を制御できることから、ネットワーク品質が悪く、制御プログラムを閲覧、編集するコンピュータを常時ネットワークに接続できない環境において、コンピュータの不正操作から制御プログラムを守るのに有効な手段となる。
【0201】
また、本実施の形態に係る制御システム802によれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぐことができる。
【0202】
実施の形態6.
本実施の形態では、主に、実施の形態1〜5と異なる点について説明する。特に、本実施の形態では、実施の形態2,5と異なる点について説明する。本実施の形態では、実施の形態2,5で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0203】
図22は、本実施の形態に係る制御システム802において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。図23は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
【0204】
本実施の形態では、実施の形態5で説明した制御システム802において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0205】
本実施の形態に係る制御システム802は、実施の形態5で説明した制御システム802に加えて、保守用コンピュータ250を備える。
保守用コンピュータ250の内部構成は、実施の形態5で説明した開発用コンピュータ200と同様の内部構成である。
また、本実施の形態に係る管理サーバ100に記憶されている機器識別IDテーブル112は、実施の形態5の図16で説明した機器識別IDテーブル112である。
【0206】
図22のS251において、保守用コンピュータ250は、管理サーバ100に対して、現在時刻問合せメッセージ671を送信する。
図22のS252において、管理サーバ100は、現在時刻問合せメッセージ671を受信すると、現在時刻672を保守用コンピュータ250に対して送信する。
保守用コンピュータ250は、管理サーバ100から現在時刻672を受信すると、自保守用コンピュータ250の時刻を現在時刻672に合わせる。これにより、仮に保守用コンピュータ250で独自に時刻が変更されていても、有効期限までの差分を正しく制御することが可能となる。
【0207】
図22のS101〜S102の処理、ユーザ認証処理S710、及びS201〜206の処理は、図5のS101〜S102の処理、ユーザ認証処理S710、及びS201〜206の処理と同様である。
【0208】
現在時刻の設定が完了すると、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知する(S101)。
管理サーバ100は、ユーザ認証処理710を実行する。保守用コンピュータ250は、管理サーバ100から認証結果603を受信し(S102)、認証結果603が認証許可応答であれば、コントローラ300から機器識別ID604を取得する(S201〜S202)。
【0209】
保守用コンピュータ250は、機器識別ID604を取得すると、機器識別ID604、保守会社情報661とを管理サーバ100に送信する(S203)。管理サーバ100は、保守用コンピュータ250から機器識別ID604と保守会社情報661とを受信すると、編集用鍵認証処理S780を実行する。
【0210】
図23は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
図23を用いて、管理サーバ100の編集用鍵認証処理S780について説明する。
【0211】
S781において、管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112(図3参照)に登録されているか否かを処理装置により確認する。
管理サーバ100は、入力した機器識別ID604が機器識別IDテーブル112に登録されていると確認した場合(S781でYES)、処理をS782に進める。
【0212】
管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112に登録されていないと確認した場合(S781でNO)、処理をS787に進める。
【0213】
S782において、管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応しているか否かについて処理装置により判定する。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応していると確認した場合(S782でYES)、処理をS783に進める。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録されていない、あるいは、受信した機器識別ID604に対応していないことを確認した場合(S782でNO)、処理をS787に進める。
【0214】
S783において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信する(S781a)。時刻管理サーバ700は、管理サーバ100から現在時刻問合せメッセージ671を受信すると、現在時刻672を管理サーバ100に送信する(S781b)。
【0215】
S784において、管理サーバ100は、受信した機器識別ID604に基づいて、機器識別IDテーブル112を処理装置により検索し、有効期限情報70を取得する。管理サーバ100は、取得した有効期限情報670を確認し、現在時刻が有効期限情報670により示される有効期限に到達しているか否かについて処理装置により判定する。
【0216】
管理サーバ100は、現在時刻が有効期限に到達していると判定した場合(S784にてNO)、処理をS787に進める。
管理サーバ100は、現在時刻が有効期限に到達していないと判定した場合(S784にてYES)、処理をS785に進める。
【0217】
S785において、管理サーバ100は、受信した機器識別ID604に基づいて、機器識別IDテーブル112を処理装置により検索する。管理サーバ100は、機器識別ID604に対応する編集用鍵650を、機器識別IDテーブル112から取得する。
S786において、管理サーバ100は、取得した編集用鍵650を鍵認証応答に設定する。
【0218】
図22のS204において、管理サーバ100は、編集用鍵650を設定した鍵認証応答を保守用コンピュータ250に送信する。
【0219】
一方、S787において、管理サーバ100は、鍵認証応答に「認証不可」を設定する。すなわち、管理サーバ100は、機器識別ID604が機器識別IDテーブル112に存在しない、所属会社テーブル111において機器識別ID604と保守会社情報661との対応が一致しない、あるいは、現在時刻が機器識別IDテーブルに記憶されている有効期限に到達しているなどの場合は、鍵認証応答に「認証不可」を設定する。
以上で、管理サーバ100の編集用鍵認証処理S780の説明を終わる。
【0220】
以上のように、管理サーバ100は、サーバ側通信部(受信側通信部)から機器識別IDを受信すると、受信した機器識別IDに対応する有効期限を取得するとともに、時刻管理サーバ700から現在時刻を取得し、取得した現在時刻が有効期限を過ぎているか否かを処理装置により判定する。管理サーバ100は、取得した現在時刻が有効期限を過ぎていると判定した場合には編集用鍵を消去し、取得した現在時刻が有効期限を過ぎていないと判定した場合には編集用鍵を取得する。管理サーバ100は、編集用鍵取得部の一例である。
【0221】
ユーザ通信部102(サーバ側通信部)は、管理サーバ100(編集用鍵取得部)により取得された編集用鍵を保守用コンピュータ(プログラム受信装置)に送信する。
【0222】
以上のように、本実施の形態に係る制御システム802は、前記サーバ(管理サーバ100)と第四の通信回線(通信回線405)で接続された時刻管理サーバ00を備える。
【0223】
また、本実施の形態に係る制御システム802は、以下の手段を備える。
前記第二のコンピュータ(保守用コンピュータ250)は、前記サーバから現在時刻を取得し、前記サーバの現在時刻と合わせる手段を備える。
前記サーバは、時刻管理サーバから現在時刻を取得し、前記暗号鍵(編集用鍵)に関する有効期限を確認する手段を備える。
前記サーバは、前記現在時刻よりも前記有効期限の方が先であれば、前記暗号鍵の送信を許可する手段を備える。
【0224】
以上のように、本実施の形態に係る制御システム802によれば、制御プログラムの閲覧、実行に必要な鍵に対して有効期限を制御できることから、ネットワーク品質が悪く、制御プログラムを閲覧、編集するコンピュータを常時ネットワークに接続できない環境において、コンピュータの不正操作から制御プログラムを守るのに有効な手段となる。また、この手法によっても、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ、制御プログラムを安全に保護できるとともに、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【0225】
以上、実施の形態1〜6について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【0226】
上記実施の形態1〜6の説明では、「コントローラ通信部」、「制御プログラム管理部」、「サーバ通信部」、「実行用プログラム変換部」、「ユーザ操作受付部」、「暗号鍵生成部」、「復号部」、「会社管理部」がそれぞれ独立した機能ブロックとして開発用コンピュータ200を構成している。しかし、これに限られるわけではなく、例えば、「コントローラ通信部」と「サーバ通信部」とをひとつの機能ブロックで実現し、「実行用プログラム変換部」と「暗号鍵生成部」とをひとつの機能ブロックで実現しても良い。あるいは、これらの機能ブロックを、他のどのような組み合わせで開発用コンピュータ200を構成しても構わない。
また、管理サーバ100、保守用コンピュータ250、コントローラ300についても同様に、機能ブロックをどのような組み合わせで構成しても構わない。
【符号の説明】
【0227】
100 管理サーバ、101 ユーザ管理テーブル、102 ユーザ通信部、103 時刻管理部、110 ユーザテーブル、111 所属会社テーブル、112 機器識別IDテーブル、150 ユーザID、151 ログイン情報、152 パスワード、160 ユーザID、161 ログイン情報、162 パスワード、200 開発用コンピュータ、201 コントローラ通信部、202 制御プログラム管理部、203 サーバ通信部、220 制御プログラム、221 実行用プログラム変換部、222 ユーザ操作受付部、223 暗号鍵生成部、224 復号部、226 会社管理部、227 制御プログラム記憶部、228 有効期限管理部、250 保守用コンピュータ、300,300a,300b コントローラ、301 通信制御部、302 実行用制御プログラム保管部、303 内部バス、304 機器識別ID管理部、305 制御プログラム実行部、306 復号部、400,401,402,403,404 通信回線、500 生産機器、601 ユーザID、602 パスワード、603 認証結果、604,607,60 機器識別ID、605,606,608 機器識別ID問合せメッセージ、611 ユーザID、612 パスワード、614 隣接PLC情報、640 実行用制御プログラム読み出しメッセージ、650 編集用鍵、651 実行用制御プログラム、651a 暗号化実行用制御プログラム、652 実行用鍵、653 開発会社情報、661 保守会社情報、670 有効期限情報、671 現在時刻問合せメッセージ、673 有効期間、700 時刻管理サーバ、800,801,802 制御システム、901 LCD、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 HDD、921 オペレーティングシステム、922 ウィンドウシステム、923 プログラム群、924 ファイル群。
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】図18
【補正方法】変更
【補正の内容】
図18
【手続補正3】
【補正対象書類名】図面
【補正対象項目名】図19
【補正方法】変更
【補正の内容】
図19
【手続補正4】
【補正対象書類名】図面
【補正対象項目名】図22
【補正方法】変更
【補正の内容】
図22
【手続補正5】
【補正対象書類名】図面
【補正対象項目名】図23
【補正方法】変更
【補正の内容】
図23

【手続補正書】
【提出日】2014年8月25日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御システム及びプログラム送信装置プログラム及び認証サーバ及びプログラム保護方法及びプログラム送信方法に関する。
【背景技術】
【0002】
ファクトリーオートメーション(Factory・Automation:FA)システムでは、工場内の生産設備の動作を制御するためのコントローラが配置されている。このコントローラは、プログラマブルロジックコントローラ(Programmable・Logic・Controller:PLC)と呼ばれる。PLCを動作させるための制御プログラムはラダー等の言語を用いて設計される。設計された制御プログラムは、ラダープログラム開発環境を用いて実行用制御プログラムに変換され、通信ケーブルを介してPLCに書き込まれる。このように、制御プログラムを開発し、PLCに書き込む装置を開発用コンピュータと呼ぶ。
【0003】
ラダープログラム開発環境はWindows(登録商標)上で動作するソフトウェアとして広く市販されている。Windows(登録商標)が動作するコンピュータと、ラダープログラム開発環境があれば、PLCへの実行用制御プログラムの書き込みや、PLCからの実行用制御プログラムの読み出しがコンピュータを用いて容易に行える。このため、近年では既に工場での稼働実績のあるPLCから実行用制御プログラムを抜き取り、このプログラムを模倣して別の生産設備の動作を制御するためのPLCが作られるという問題が発生している。
【0004】
このような問題に対処するため、FAシステムにおいても模倣品への転用を防ぐための様々な対策が講じられてきている。一つの具体例として、特許文献1によれば、PLCに制御プログラムの実行用制御プログラムを書き込むとき、開発用コンピュータは、実行用制御プログラムを暗号化してPLCに転送する。制御プログラムを実行するときには、PLCは、予め生成された暗号ルールを解析し、開発用コンピュータに登録された制御機器固有の情報を抽出する。そして、PLCは、抽出した制御機器固有の情報に基づいて、実行用制御プログラムが制御機器(PLC)固有のプログラムか否かを確認し、固有のプログラムであればPLCにて実行用制御プログラムを復号することで、PLC内部のデータを保護する技術が紹介されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−65678号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1で示された方式では、実行用制御プログラムの暗号化や復号化に必要な情報が開発用コンピュータで管理されているため、開発用コンピュータが盗難されると、実行用制御プログラムの復号に必要な鍵が容易に入手できてしまうことから、実行用制御プログラムを保護できないという課題がある。
【0007】
また、FAシステムを構築、運用するとき、PLCの制御プログラムの開発、設計を行う会社と、保守を行う会社は異なることが多い。この状況においては、実行用制御プログラムの復号に必要な鍵は、PLCの実行用制御プログラムを開発した会社のコンピュータにより作成される。しかし、この鍵も含めて開発物は機密情報として会社内で管理されるため、会社が異なった場合は、機密管理の観点から会社間のデータの受け渡しは容易でない。よって、保守する会社では、PLCの制御プログラムの復号に必要な鍵を入手することはできないため、特許文献1に示された方式では、保守する会社のコンピュータで制御プログラムの閲覧ができないという課題がある。
【0008】
また、特許文献1で示された方式は、常にネットワークに接続された状態で実行用制御プログラム、及び実行用制御プログラムの暗号化や復号化に必要な情報を、開発用パソコンと制御機器との間で交換している。このため、特許文献1で示された方式では、ネットワーク上で転送されるデータ量は多くなる。このため、特許文献1で示された方式がネットワーク品質が悪い環境に適用されると、タイムアウトや通信回線障害が多く発生し、実行用制御プログラムの転送失敗が発生しやすくなるという課題がある。
【0009】
これらの課題を解決する手段として、実行用制御プログラムを開発した会社のコンピュータで、実行用制御プログラムの復号に必要な鍵を生成し、生成した鍵を別の媒体(USBメモリなど)に記録し、実行用制御プログラムを開発した会社から媒体を保守する会社に送付する方式が考えられる。そして、実行用制御プログラムを保守する会社は、媒体に記録された鍵を使って、実行用制御プログラムを保守する会社のコンピュータで制御プログラムの閲覧を可能とする。しかし、この方式でも媒体が盗難された場合は実行用制御プログラムの復号に必要な鍵が漏えいするため、制御プログラムを保護できないという課題が残る。
【0010】
本発明は、上記に示した課題を解決するためになされたものであり、特定のユーザに対しては、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラムの書き込みを容易にするとともに、実行用制御プログラムの閲覧や編集に必要な鍵の特定のユーザ以外への漏えいを防ぐことを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る制御システムは、機器の制御を実行する制御装置と、前記制御装置で実行される前記機器の制御が記述されたソースプログラムを前記制御装置で実行できる実行用プログラムに変換し、変換した前記実行用プログラムを暗号化して暗号化実行用プログラムを生成し、生成した前記暗号化実行用プログラムを前記制御装置に送信するプログラム送信装置と、認証サーバとを備える制御システムにおいて、
前記プログラム送信装置は、
前記制御装置を識別する機器識別子を取得する送信側取得部と、
前記暗号化実行用プログラムを前記実行用プログラムに復号するとともに復号された前記実行用プログラムを前記ソースプログラムに変換する際に用いる編集用鍵と前記送信側取得部により取得された前記機器識別子とを前記認証サーバに送信するとともに、前記暗号化実行用プログラムを前記実行用プログラムに復号する際に用いる実行用鍵と前記暗号化実行用プログラムとを前記制御装置に送信する送信側通信部とを備え、
前記認証サーバは、
前記送信側通信部から前記編集用鍵と前記機器識別子とを受信し、受信した前記編集用鍵と前記機器識別子と対応付けて記憶装置に記憶し、
前記制御装置は、
前記送信側通信部により送信された前記実行用鍵と前記暗号化実行用プログラムとを受信し、受信した前記実行用鍵と前記暗号化実行用プログラムとに基づいて前記機器の制御を実行することを特徴とする。
【発明の効果】
【0012】
本発明に係る制御システムによれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護できるとともに、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【図面の簡単な説明】
【0013】
図1】実施の形態1に係る制御システム800のブロック構成図である。
図2】実施の形態1に係る開発用コンピュータ200の詳細ブロック構成図である。
図3】実施の形態1に係る管理サーバ100が備えるユーザ管理テーブル101の構成図である。
図4】実施の形態1に係る管理サーバ100、開発用コンピュータ200、コントローラ300のハードウェア構成の一例を示す図である。
図5】実施の形態1に係る制御システム800において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図6】実施の形態1に係る管理サーバ100のユーザ認証処理710の流れを示すフローチャートである。
図7】実施の形態1に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図8】実施の形態1に係る管理サーバ100の編集用鍵登録処理730の流れを示すフローチャートである。
図9】実施の形態2に係る制御システム800において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図10】実施の形態2に係る管理サーバ100の編集用鍵認証処理S750の流れを示すフローチャートである。
図11】実施の形態3に係る制御システム801のブロック構成図である。
図12】実施の形態3に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図13】実施の形態3に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図14】実施の形態4に係る制御システム801において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図15】実施の形態5に係る制御システム802のブロック構成図である。
図16】実施の形態5に係る管理サーバ100が備える機器識別IDテーブル112の構成図である。
図17】実施の形態5に係る開発用コンピュータ200の詳細ブロック構成図である。
図18】実施の形態5に係る制御システム80において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図19】実施の形態5に係る開発用コンピュータ200の有効期限設定処理S810の流れを示すフローチャートである。
図20】実施の形態5に係る管理サーバ100の編集用鍵登録処理S770の流れを示すフローチャートである。
図21】実施の形態5に係る管理サーバ100の有効期限確認処理S790の流れを示すフローチャートである。
図22】実施の形態6に係る制御システム802において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図23】実施の形態6に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
【発明を実施するための形態】
【0014】
実施の形態1.
図1は、本実施の形態に係る制御システム800のブロック構成図である。
本実施の形態に係る制御システム800は、例えば、工場内の生産機器500の動作を制御するためのシステムである。
図1に示すように、制御システム800は、管理サーバ100、開発用コンピュータ200、コントローラ300を備える。管理サーバ100と開発用コンピュータ200とは、通信回線400により接続されている。また、開発用コンピュータ200とコントローラ300とは、通信回線401により接続されている。
【0015】
管理サーバ100は、制御システム800において、制御プログラムの設計、保守等を行うユーザを管理する。管理サーバ100は、ユーザの認証処理等を実行する認証サーバの一例である。
コントローラ300は、機器の制御を実行する制御装置の一例である。
【0016】
開発用コンピュータ200は、ユーザによる操作を受け付け、受け付けた操作の内容に基づいて、制御プログラムの設計、開発などの処理を実行する。
制御プログラムは、コントローラ300で実行される生産機器500の制御が記述されたソースプログラムである。
【0017】
開発用コンピュータ200は、制御プログラムを、コントローラ300で実行できる実行用制御プログラムに変換し、変換した実行用制御プログラムを暗号化して、暗号化された実行用制御プログラム(暗号化実行用プログラムの一例)を生成する。
また、開発用コンピュータ200は、暗号化された実行用制御プログラム(以下、暗号化実行用制御プログラム651aとする)を実行用制御プログラムに復号し、かつ、復号された実行用制御プログラムを制御プログラムに変換する際に用いる編集用鍵と、暗号化実行用制御プログラム651aを実行用制御プログラムに復号する際に用いる実行用鍵とを生成する。
【0018】
開発用コンピュータ200は、暗号化実行用制御プログラム651aをコントローラ300に書き出すプログラム送信装置の一例である。
暗号化実行用制御プログラム651aをコントローラ300に書き出すとは、通信回線401を介して、暗号化実行用制御プログラム651aをコントローラ300に送信することである。
【0019】
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラムの書き出し要求を受け付け、コントローラ300に実行用制御プログラムと実行用鍵とを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録する。
【0020】
制御システム800は、保守用コンピュータ250が接続されていてもよい。
保守用コンピュータ250は、コントローラ300から実行用制御プログラムの読み出し要求を受け付け、コントローラ300から暗号化実行用制御プログラム651aを読み出す。
【0021】
保守用コンピュータ250は、ユーザの認証処理時に管理サーバ100から編集用鍵を取得する。
保守用コンピュータ250では、読み出した暗号化実行用制御プログラム651aを編集用鍵を用いて閲覧可能な制御プログラム220に変換する。
【0022】
開発用コンピュータ200と保守用コンピュータ250とは、内部構成は同一である。1つのコンピュータで開発用コンピュータ200と保守用コンピュータ250との両方の機能を有するものでもよい。あるいは、開発用コンピュータ200と保守用コンピュータ250とのいずれかの機能のみを有する1つのコンピュータであってもよい。
例えば、開発用コンピュータ200は開発会社が使用するコンピュータであり、保守用コンピュータ250は保守会社が利用するコンピュータである。
【0023】
コントローラ300は、制御プログラムを実行することにより、生産機器500の制御を実行する。コントローラ300は、開発用コンピュータ200から送信された実行用鍵と暗号化実行用制御プログラム651aとを受信し、受信した実行用鍵と暗号化実行用制御プログラム651aとに基づいて生産機器500の制御を実行する。
【0024】
図1を用いて、コントローラ300の機能について説明する。
コントローラ300は、通信制御部301、実行用制御プログラム保管部302、内部バス303、機器識別ID管理部304、制御プログラム実行部305、復号部306を備える。
コントローラ300の内部は、内部バス303を介して通信制御部301、実行用制御プログラム保管部302、機器識別ID管理部304、制御プログラム実行部305、復号部306が接続された構成となっている。
【0025】
通信制御部301は、通信回線401を介して、開発用コンピュータ200のコントローラ通信部201と接続されている。
通信回線401は、例えば、USBケーブル、Ethernet(登録商標)に対応したLANケーブル等である。
【0026】
実行用制御プログラム保管部302は、実行用制御プログラムをコントローラ300の備える記憶装置に記憶する。
機器識別ID管理部304は、コントローラ300の機器識別IDをコントローラ300の備える記憶装置に記憶する。
【0027】
復号部306は、実行用制御プログラム保管部302により保管されている実行用制御プログラムを復号する。
制御プログラム実行部305は、生産機器500に接続される。制御プログラム実行部305は、復号部306により復号された実行用制御プログラムを実行することにより、生産機器500の動作を制御する。
制御プログラム実行部305は、実行用制御プログラム保管部302から逐次コードを読み出し、生産機器500の制御に必要なプログラムを実行する。
【0028】
図2は、本実施の形態に係る開発用コンピュータ200の詳細ブロック構成図である。
次に、図1及び図2を用いて、開発用コンピュータ200の機能について説明する。
図1に示すように、開発用コンピュータ200は、コントローラ通信部201(送信側通信部、受信側通信部)、制御プログラム管理部202、サーバ通信部203(送信側通信部、受信側通信部)を備える。
【0029】
コントローラ通信部201は、通信回線401を介して、コントローラ300との通信を行う。
制御プログラム管理部202は、制御プログラム220を管理する。また、制御プログラム管理部202は、制御プログラム220を実行用制御プログラムに変換する。制御プログラム220を実行用制御プログラムに変換するとは、制御プログラム220に対し、コントローラ300(PLCの一例)において実行するために必要な処理を施して、実行用制御プログラムを生成することである。
サーバ通信部203は、通信回線400を介して、管理サーバ100との間で通信を行う。
【0030】
また、図2に示すように、制御プログラム管理部202は、制御プログラム記憶部227、実行用プログラム変換部221、暗号鍵生成部223、復号部224、ユーザ操作受付部222、会社管理部226を備える。
制御プログラム記憶部227は、制御プログラム220を開発用コンピュータ200の備える記憶装置に記憶する。
【0031】
実行用プログラム変換部221は、制御プログラム220を実行用制御プログラムに変換する。また、実行用プログラム変換部221は、実行用制御プログラムを制御プログラム220に変換する。
【0032】
暗号鍵生成部223は、制御プログラム220の閲覧、制御プログラム220の実行に必要な鍵を生成する。
復号部224は、制御プログラム220の閲覧、制御プログラム220の実行に必要な鍵を復号する。
【0033】
ユーザ操作受付部222(送信側受付部、受信側受付部)は、ユーザの操作を受け付け、実行用プログラム変換部221で行う処理を決定する。
会社管理部226は、開発用コンピュータ200の所属会社を管理する。
【0034】
図3は、本実施の形態に係る管理サーバ100が備えるユーザ管理テーブル101の構成図である。
次に、図1及び図3を用いて、管理サーバ100の機能について説明する。
図1に示すように、管理サーバ100は、ユーザ管理テーブル101、ユーザ通信部102(サーバ側通信部)を備える。
【0035】
ユーザ管理テーブル101は、制御システム800を利用するユーザであって、例えば、制御プログラム220の開発、保守等を行うユーザに関する情報を管理するテーブルである。
ユーザ通信部102は、通信回線400を介して、開発用コンピュータ200と通信を行う。
【0036】
図3に示すように、ユーザ管理テーブル101は、ユーザテーブル110、所属会社テーブル111、機器識別IDテーブル112を備える。
ユーザテーブル110は、ユーザを識別するユーザID150に対し、所属会社情報、パスワード等を対応付けたテーブルである。所属会社情報とは、ユーザID150により識別されるユーザが所属している会社を識別するための情報である。所属会社情報には、開発会社情報653と保守会社情報661とがある。
【0037】
所属会社テーブル111は、所属会社情報(開発会社情報653,保守会社情報661)と機器識別ID604とを対応付けて管理する。
機器識別ID604は、コントローラ300(制御装置)を識別するための識別子である。機器識別IDに対応する所属会社情報は、その機器識別IDにより識別されるコントローラ300(制御装置、制御機器)により実行される制御プログラムの開発・保守等を行う会社の情報である。
【0038】
機器識別IDテーブル112は、機器識別ID604と、機器識別ID604に対応する編集用鍵650とを管理する。機器識別ID604に対応する編集用鍵650には、機器識別ID604により識別されるコントローラ300に書き出された制御プログラムを閲覧するために必要な情報が含まれる。
【0039】
図3では、ユーザテーブル110、所属会社テーブル111、および機器識別IDテーブル112の構成例を示している。図3を用いて、ユーザテーブル110、所属会社テーブル111、および機器識別IDテーブル112の構成についてさらに詳しく説明する。
【0040】
ユーザテーブル110には、制御プログラムを開発した会社のユーザID150と対応する開発会社情報653、パスワード152、ログイン情報151が登録されている。また、制御プログラムを保守する会社のユーザID160と対応する保守会社情報661、パスワード162、ログイン情報161が登録されている。
【0041】
所属会社テーブル111には、開発会社情報653及び保守会社情報661と、これらの各々に対応する機器識別ID604とが登録される。機器識別ID604とは、開発会社情報653、あるいは保守会社情報661の開発あるいは保守の対象となるコントローラ300を識別する識別子である。
【0042】
機器識別IDテーブル112には、機器識別ID604と、それに対応する編集用鍵650が登録されている。
【0043】
管理サーバ100と開発用コンピュータ200とは、通信回線400を介して接続される。管理サーバ100と開発用コンピュータ200とは、通信回線400を介して、制御プログラム220を設計、保守するユーザの認証処理のための情報の送受信、あるいは編集用鍵の送受信等を行う。
【0044】
管理サーバ100は、工場内もしくは遠隔地に設置された管理センター内に設置される。工場内に管理サーバ100が設置された場合、通信回線400はLANケーブルおよび付随する通信機器で構成される。
管理サーバ100が管理センター内に設置された場合は、通信回線400は通信事業会社が提供する電話回線、光ケーブル、LANケーブルおよびこれらに付随する通信機器で構成される。
【0045】
図4は、本実施の形態に係る管理サーバ100、開発用コンピュータ200、コントローラ300のハードウェア構成の一例を示す図である。
【0046】
図4において、管理サーバ100、開発用コンピュータ200、コントローラ300は、コンピュータであり、LCD901(Liquid・Crystal・Display)、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【0047】
管理サーバ100、開発用コンピュータ200、コントローラ300は、プログラムを実行するCPU911(Central・Processing・Unit)を備えている。CPU911は、処理装置の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920(Hard・Disk・Drive)と接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
【0048】
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、HDD920は、不揮発性メモリの一例である。これらは、記憶装置、記憶部の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置の一例である。
【0049】
通信ボード915は、LAN(Local・Area・Network)等に接続されている。通信ボード915は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
【0050】
HDD920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU911により読み出され実行される。ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM914やHDD920等の記録媒体に記憶される。RAM914やHDD920等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0051】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM914等のメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、HDD920の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【0052】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【0053】
図5は、本実施の形態に係る制御システム800において、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図5を用いて、開発用コンピュータ200からコントローラ300に実行用制御プログラム651を書き出す手順について説明する。
【0054】
図5に示す処理は、開発用コンピュータ200が、ユーザがコントローラ300への実行用制御プログラムの書き出し実行を指示してから、コントローラ300に実行用制御プログラムを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録するまでの処理の流れを示したものである。
【0055】
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラム書き出し指示の操作を受け付ける。
例えば、ユーザ操作受付部222は、開発用コンピュータ200の表示装置にユーザ入力画面などを表示する。ユーザ操作受付部222は、ユーザ入力画面に入力された操作の内容を受け付ける。
【0056】
このとき、ユーザ操作受付部222(送信側受付部)は、ユーザによりユーザ入力画面へ入力されたユーザID601、パスワード602、開発会社情報653を入力する。
ユーザ入力画面に入力された操作の内容は、例えば、コントローラ300へ実行用制御プログラムを書き出す指示(以下、実行用制御プログラム書き出し指示とする)である。
ユーザID601、パスワード602、開発会社情報653は、ユーザの認証処理に用いる認証情報の一例である。
【0057】
ユーザ操作受付部222は、入力したユーザID601、パスワード602、開発会社情報653をユーザ通信部102に入力する。
図5のS101において、ユーザ通信部102は、ユーザ操作受付部222から入力したユーザID601、パスワード602、開発会社情報653を、通信回線400を介して、認証要求として管理サーバ100に送信する。
【0058】
管理サーバ100のユーザ通信部102は、開発用コンピュータ200のサーバ通信部203から認証要求を受信する。管理サーバ100は、認証要求を受信すると、認証要求に含まれるユーザID601、パスワード602、開発会社情報653を用いて、ユーザ認証処理S710を処理装置により実行する。管理サーバ100は、認証サーバの一例である。また、管理サーバ100は、ユーザの認証処理を実行する認証部の一例である。
【0059】
図6は、実施の形態1に係る管理サーバ100のユーザ認証処理S710の流れを示すフローチャートである。
図6を用いて、管理サーバ100のユーザ認証処理S710について説明する。
【0060】
管理サーバ100は、開発用コンピュータ200から通知されたユーザID601、パスワード602、開発会社情報653が、ユーザテーブル110に登録されたユーザID150、パスワード152、開発会社情報653と一致しているか否かを処理装置により確認する。
【0061】
S711において、管理サーバ100は、入力したユーザID601を用いて、ユーザテーブル110を検索する。
管理サーバ100は、入力したユーザID601と同一のユーザIDがユーザテーブル110に存在すると確認した場合(S711でYES)、処理をS712に進める。このとき、管理サーバ100は、入力したユーザID601と同一のユーザID150に対応する開発会社情報653と、パスワード152とをユーザテーブル110から抽出し、記憶装置に記憶する。
【0062】
管理サーバ100は、入力したユーザID601と同一のユーザIDがユーザテーブル110に存在しない(確認できない)場合(S711でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
【0063】
S712において、管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653(ユーザID601(150)に対応する開発会社情報653)と一致するか否かについて処理装置により確認する。
管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653と一致すると確認した場合(S712でYES)、処理をS713に進める。
【0064】
管理サーバ100は、入力した開発会社情報653が、ユーザテーブル110から抽出した開発会社情報653と一致することが確認できない場合(S712でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
【0065】
S713において、管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152(ユーザID601(150)に対応するパスワード)と一致するか否かについて処理装置により確認する。
管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152と一致すると確認した場合(S713でYES)、処理をS714に進める。
S714において、管理サーバ100は、認証結果603に「認証許可」を設定する。
【0066】
管理サーバ100は、入力したパスワード602が、ユーザテーブル110から抽出したパスワード152と一致することが確認できない場合(S713でNO)、処理をS715に進める。
S715において、管理サーバ100は、認証結果603に「認証不可」を設定する。
以上で、図6に説明を終了する。
【0067】
図5のS102において、管理サーバ100のユーザ通信部102は、ユーザ認証処理S710を完了すると、通信回線400を介して認証結果603を開発用コンピュータ200に送信する。
【0068】
以上のように、管理サーバ100は、入力したユーザID601、パスワード602、開発会社情報653のうち一個でもユーザテーブル110と不一致があった場合は、S715のように認証不可応答を送信する。管理サーバ100は、入力したユーザID601、パスワード602、開発会社情報653のすべてが一致した場合は、S714のように認証許可応答を認証結果603に設定し、開発用コンピュータ200に対して認証結果603を通知する。
【0069】
図5のS102において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100のユーザ通信部102から認証結果603を受信する。
制御プログラム管理部202は、受け取った認証結果603に設定された認証応答を処理装置により判定する。
【0070】
制御プログラム管理部202は、認証結果603に設定された認証応答が「認証不可」であると判定した場合、処理を終了する。この場合、例えば、制御プログラム管理部202は、表示装置に「認証不可」のエラーメッセージ等を表示する。
【0071】
制御プログラム管理部202は、認証結果603に設定された認証応答が「認証許可」であると判定した場合、制御プログラム変換処理S720を実行する。
【0072】
図7は、本実施の形態に係る開発用コンピュータ200の制御プログラム変換処理S720の流れを示すフローチャートである。
図7を用いて、開発用コンピュータ200の制御プログラム変換処理S720について説明する。
制御プログラム管理部202の実行用プログラム変換部221は、制御プログラム変換処理S720を実行する。
【0073】
S721において、実行用プログラム変換部221は、コントローラ300の機器識別IDを取得するための機器識別ID問合せメッセージ605をコントローラ300に対して送信する。
【0074】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、機器識別ID管理部304から、コントローラ300を識別する機器識別ID604を取得する。コントローラ300の通信制御部301は、通信回線401を介して、取得した機器識別ID604を開発用コンピュータ200に送信する。
【0075】
S722において、開発用コンピュータ200のコントローラ通信部201は、コントローラ300の機器識別ID604を受信する。開発用コンピュータ200のコントローラ通信部201は、受信した機器識別ID604を制御プログラム管理部202に入力する。以上のように、制御プログラム管理部202は、機器識別ID604を取得する。制御プログラム管理部202は、コントローラ300を識別する機器識別ID604(機器識別子)を取得する送信側取得部の一例である。
【0076】
S723において、制御プログラム管理部202の実行用プログラム変換部221は、制御プログラム220を入力する。制御プログラム220は、コントローラ300において実行される生産機器500の制御が記述されたソースプログラムである。制御プログラム220は、例えば、ラダー言語により記述されたラダープログラムである。
【0077】
実行用プログラム変換部221は、入力した制御プログラム220をコントローラ300において実行できる実行用制御プログラム651に変換する。実行用制御プログラム651は、例えば、コントローラ300において実行可能なオブジェクトプログラム(実行用プログラムの一例)である。
【0078】
S724において、暗号鍵生成部223は、実行用プログラム変換部221により変換された実行用制御プログラム651と、コントローラ300から取得した機器識別ID604とを入力する。暗号鍵生成部223は、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号し、かつ、復号された実行用制御プログラム651を制御プログラム220に変換する際に用いる編集用鍵を生成する。また、暗号鍵生成部223は、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する際に用いる実行用鍵を生成する。暗号鍵生成部223は、鍵生成部の一例である。
【0079】
暗号鍵生成部223は、機器識別ID604を受信(入力)すると、制御プログラム220の閲覧に必要な編集用鍵650と、コントローラ300の実行用制御プログラム651を実行するために必要な実行用鍵652とを生成し、実行用プログラム変換部221に通知する。
【0080】
S725において、実行用プログラム変換部221は、編集用鍵650と実行用鍵652とを受信し、制御プログラム変換処理S720が完了する。
【0081】
S103〜S104において、制御プログラム管理部202は、暗号鍵生成部223により生成された実行用鍵652と暗号化実行用制御プログラム651aとをコントローラ通信部201に出力する。
コントローラ通信部201は、制御プログラム管理部202から実行用鍵652と暗号化実行用制御プログラム651aとを入力する。コントローラ通信部201は、入力した実行用鍵652と暗号化実行用制御プログラム651aとを、コントローラ300に対して通信回線401を介して送信する。コントローラ通信部201は、送信側通信部の一例である。
【0082】
コントローラ300の通信制御部301は、開発用コンピュータ200から送信された暗号化実行用制御プログラム651aと実行用鍵652とを実行用制御プログラム保管部302に書き込む。
【0083】
開発用コンピュータ200の実行用プログラム変換部221は、会社管理部226に予め登録された開発用コンピュータ200の所属会社情報を取得する。開発用コンピュータ200の場合は、開発会社情報653が登録されており、保守用コンピュータ250の場合は、保守会社情報661が登録されている。
【0084】
あるいは、開発用コンピュータ200の会社管理部226には開発用コンピュータ200の開発会社情報653と、その後の保守を担当する保守会社情報661とが登録されていてもよい。また、保守用コンピュータ250の会社管理部226には自保守用コンピュータ250の保守会社情報661と、保守の対象となる制御プログラムの開発を担当した開発会社情報653とが登録されていてもよい。
【0085】
S105〜S107において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を、通信回線400を介して送信する。
サーバ通信部203は、暗号鍵生成部223により生成された編集用鍵650とコントローラ300から取得した機器識別ID604とを管理サーバ100に送信する送信側通信部の一例である。
【0086】
管理サーバ100のユーザ通信部102(サーバ側通信部)は、開発用コンピュータ200から編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を受信する。管理サーバ100は、編集用鍵登録処理S730によって、ユーザ管理テーブル101に編集用鍵650、機器識別ID604、開発会社情報653、保守会社情報661を登録する。
【0087】
図8は、実施の形態1に係る管理サーバ100の編集用鍵登録処理S730の流れを示すフローチャートである。
図8を用いて、管理サーバ100の編集用鍵登録処理S730の流れについて説明する。
【0088】
S731において、管理サーバ100は、開発会社情報653と機器識別ID604とを対応付けて所属会社テーブル111に登録する。
S732において、管理サーバ100は、保守会社情報661と機器識別ID604とを対応付けて所属会社テーブル111に登録する。
S733において、管理サーバ100は、機器識別ID604と編集用鍵650とを対応付けて機器識別IDテーブル112に登録する。
【0089】
以上で、開発用コンピュータ200が、ユーザがコントローラ300への実行用制御プログラムの書き出し実行を指示してから、コントローラ300に実行用制御プログラムを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録するまでの処理の流れについての説明を終わる。
【0090】
以上のように、本実施の形態に係る制御システム800は、設備の制御システムであって、前記設備の動作を制御するコントローラ300と、第一の通信回線(通信回線401)によって前記コントローラ300に接続され、前記コントローラ300との間で、制御プログラム220を読み書きする第一のコンピュータ(開発用コンピュータ200)と、第二の通信回線(通信回線400)によって前記第一のコンピュータに接続されるサーバ(管理サーバ100)を備える。
【0091】
また、本実施の形態に係る制御システム800は、前記第一のコンピュータから制御プログラムを前記コントローラに書き込むときに使用する、以下のような手段を備える。
【0092】
まず、前記サーバは、前記第一のコンピュータを使って書き込むユーザと所属会社を認証し、前記第一のコンピュータに対して書き込みの許可を判断する認証手段を備える。
また、前記第一のコンピュータは、前記コントローラから機器識別IDを読み込み、前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)と、前記制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)とを作成する鍵生成手段を備える。
また、前記鍵生成手段によって生成された、制御プログラムの閲覧と制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)を前記コントローラに書き込む書込手段を備える。
また、前記サーバは、前記第一のコンピュータの所属会社と前記コントローラの機器識別IDと前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)とを保管する手段を備える。
【0093】
以上のように、本実施の形態に係る制御システム800によれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護することができる。
【0094】
実施の形態2.
本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0095】
本実施の形態では、実施の形態1で説明した制御システム800において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0096】
図9は、本実施の形態に係る制御システム800において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図9を用いて、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出し、読み出した暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する手順について説明する。
【0097】
保守用コンピュータ250のユーザ操作受付部222は、ユーザから暗号化実行用制御プログラム651aの読み出し要求を受け付ける。
保守用コンピュータ250は、暗号化実行用制御プログラム651aの読み出し要求を受け付けると、コントローラ300から暗号化実行用制御プログラム651aを読み出し、管理サーバ100から制御プログラム220の閲覧に必要な編集用鍵を入手する。
そして、保守用コンピュータ250は、入手した編集用鍵650を用いて、暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する。
【0098】
保守用コンピュータ250は、ユーザから、コントローラ300から暗号化実行用制御プログラム651aを読み出す要求である読み出し指示の操作を受け付ける。
例えば、ユーザ操作受付部222は、保守用コンピュータ250の表示装置にユーザ入力画面などを表示する。ユーザ操作受付部222は、ユーザ入力画面に入力された操作の内容を受け付ける。
【0099】
このとき、ユーザ操作受付部222は、ユーザによりユーザ入力画面へ入力されたユーザID601、パスワード602、保守会社情報661を入力する。
ユーザ入力画面に入力された操作の内容は、例えば、コントローラ300から暗号化実行用制御プログラム651aを読み出す指示(以下、実行用制御プログラム読み出し指示とする)である。
【0100】
ユーザ操作受付部222は、入力したユーザID601、パスワード602、保守会社情報661をユーザ通信部102に入力する。ユーザ操作受付部222は、受信側受付部の一例である。
図9のS101において、ユーザ通信部102は、ユーザ操作受付部222から入力したユーザID601、パスワード602、保守会社情報661を、通信回線400を介して、認証要求として管理サーバ100に送信する。
【0101】
管理サーバ100のユーザ通信部102は、保守用コンピュータ250のユーザ通信部102から認証要求を受信する。管理サーバ100は、認証要求を受信すると、認証要求に含まれるユーザID601、パスワード602、保守会社情報661を用いて、ユーザ認証処理S710を処理装置により実行する。
【0102】
実施の形態1で説明したように、保守用コンピュータ250の内部構成は、図2に示した開発用コンピュータ200の内部構成と同じであるが、会社管理部226の設定値が開発用コンピュータ200の設定値と異なる。すなわち、開発用コンピュータ200を所有している会社と保守用コンピュータ250を所有している会社とが異なる点に留意する必要がある。
【0103】
保守用コンピュータ250は、ユーザによる実行用制御プログラム読み出し操作を受け付けることにより、コントローラ300から実行用制御プログラム読み出し処理を実行する。このとき、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知する。管理サーバ100は、ユーザ認証処理710を実行する。
【0104】
ユーザ認証処理S710については、実施の形態1で説明したものと同様である。ただし、開発会社情報653が保守会社情報661となる点が異なる。
【0105】
図9に示すように、管理サーバ100は、ユーザ認証処理S710において、受信したユーザID611、パスワード612、保守会社情報661が、ユーザテーブル110に登録されたユーザID160、パスワード162、保守会社情報661と一致しているか否かを処理装置により判定する(図6のS711〜S713を参照)。
【0106】
管理サーバ100は、ユーザID160、パスワード162、保守会社情報661のうち一個でも不一致があった場合は認証不可応答を認証結果603に設定し、認証結果603を保守用コンピュータ250に送信する(図9のS102)。
また、管理サーバ100は、ユーザID160、パスワード162、保守会社情報661のすべてが一致した場合は認証許可応答を認証結果603に設定し、認証結果603を保守用コンピュータ250に送信する(図9のS102)。
【0107】
保守用コンピュータ250の制御プログラム管理部202は、管理サーバ100から受信した認証結果603を処理装置により確認する。制御プログラム管理部202は、認証結果603が認証許可であれば、コントローラ300に対して機器識別ID問合せメッセージ605を送信する(S201)。
【0108】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300の機器識別ID604を制御プログラム管理部202に通知する(S202)。
【0109】
制御プログラム管理部202は、取得した機器識別ID604と保守会社情報661とを管理サーバ100に送信する(S203)。管理サーバ100は、機器識別ID604と保守会社情報661を受信すると、編集用鍵認証処理S750を実行し、編集用鍵650を保守用コンピュータ250に対して送信する(S204)。制御プログラム管理部202は、受信側取得部の一例である。
【0110】
図10は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S750の流れを示すフローチャートである。
図10を用いて、管理サーバ100の編集用鍵認証処理S750の流れについて説明する。
【0111】
S751において、管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112(図3参照)に登録されているか否かを処理装置により確認する。
管理サーバ100は、入力した機器識別ID604が機器識別IDテーブル112に登録されていると確認した場合(S751でYES)、処理をS752に進める。
【0112】
管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112に登録されていることが確認できない場合(S751でNO)、処理をS755に進める。
【0113】
S752において、管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応しているか否かについて処理装置により確認する。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応していると確認した場合(S752でYES)、処理をS753に進める。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録されていると確認されない場合、あるいは、受信した機器識別ID604に対応していると確認されない場合(S752でNO)、処理をS755に進める。
【0114】
S753において、管理サーバ100は、機器識別ID604に対応する編集用鍵650を機器識別IDテーブル112から取得する。
S754において、管理サーバ100は、取得した編集用鍵650を鍵認証応答に設定する。
一方、S755において、管理サーバ100は、鍵認証応答に「認証不可」を設定する。すなわち、管理サーバ100は、機器識別ID604が機器識別IDテーブル112に存在しない場合、あるいは存在していても所属会社テーブル111において機器識別ID604と保守会社情報661とが対応していない場合は、鍵認証応答に「認証不可」を設定する。
【0115】
以上で、管理サーバ100の編集用鍵認証処理S750の説明を終わる。
【0116】
図9のS204において、管理サーバ100のユーザ通信部102は、通信回線400を介して、鍵認証応答を保守用コンピュータ250に送信する。
このとき、編集用鍵認証が成功(認証許可)していれば鍵認証応答には編集用鍵650が設定されており、編集用鍵認証が失敗(認証不可)であれば鍵認証応答には認証不可が設定されている。
【0117】
図9のS205において、保守用コンピュータ250は、鍵認証応答として編集用鍵650を受信すると、コントローラ300に対して暗号化実行用制御プログラム651aの読み出しを要求する実行用制御プログラム読み出しメッセージ640(読み出し命令の一例)を送信する。保守用コンピュータ250は、プログラム受信装置の一例である。また、コントローラ通信部201は、受信側通信部の一例である。
【0118】
コントローラ300は、保守用コンピュータ250から実行用制御プログラム読み出しメッセージ640を受信する。コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aを読み出す。
【0119】
このとき、コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aと実行用鍵652とを読み出し、復号部306に入力してもよい。復号部306は、暗号化実行用制御プログラム651aと実行用鍵652とに基づいて、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する。コントローラ300の通信制御部301は、復号部306により復号された実行用制御プログラム651を保守用コンピュータ250に送信するとしてもよい。
ただし、本実施の形態では、コントローラ300は、実行用制御プログラム保管部302から暗号化実行用制御プログラム651aを読み出し、通信制御部301は、暗号化実行用制御プログラム651aを保守用コンピュータ250に送信するものとする。
【0120】
保守用コンピュータ250のコントローラ通信部201は、コントローラ300から暗号化実行用制御プログラム651aを受信する。
保守用コンピュータ250のコントローラ通信部201は、受信した暗号化実行用制御プログラム651aを制御プログラム管理部202に入力する。
保守用コンピュータ250は、管理サーバ100から受信した編集用鍵650とコントローラ300から受信した暗号化実行用制御プログラム651aとに基づいて、暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換する制御プログラム変換処理S760を実行する。
【0121】
以下に、保守用コンピュータ250における制御プログラム変換処理S760について説明する。
制御プログラム管理部202の復号部224は、編集用鍵650と暗号化実行用制御プログラム651aとを入力し、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する。
また、制御プログラム管理部202の実行用プログラム変換部221は、編集用鍵650と実行用制御プログラム651とを入力し、実行用制御プログラム651を閲覧・編集が可能な制御プログラム220に変換する。
【0122】
保守用コンピュータ250は、ログイン(S101〜S102)したユーザによる制御プログラムの読み出し要求を受け付ける。保守用コンピュータ250は、制御プログラム変換処理S760を実行し、閲覧・編集が可能な制御プログラム220を取得する。その後、保守用コンピュータ250は、ユーザの操作により、例えば、制御プログラム220の保守・編集・変更・修正等の処理を実行する。
【0123】
保守用コンピュータ250は、ユーザによる要求に基づいて、閲覧可能な制御プログラム220に対して保守・編集・変更・修正等の処理を施し、変更後制御プログラム220aを生成する。
【0124】
図5のS720の処理により、保守用コンピュータ250は、変更後制御プログラム220aを実行用のプログラムに変換し、さらに、変換した変更後制御プログラム220aを暗号化し、暗号化実行用変更後制御プログラム221aを生成する。保守用コンピュータ250は、このとき、新たに編集用鍵650、実行用鍵652を生成する。
S103〜S107の処理により、保守用コンピュータ250は、新たな編集用鍵650を管理サーバ100に登録する。また、保守用コンピュータ250は、新たな実行用鍵652と、暗号化実行用変更後制御プログラム221aとをコントローラ300に送信する。
【0125】
以上のように、本実施の形態に係る保守用コンピュータ250は、編集用鍵650を受けるとコントローラ300から実行用制御プログラム651を読み出し、編集用鍵650を復号部224に入力して実行用制御プログラムの閲覧に必要な情報を復号し、実行用制御プログラム651を閲覧可能な制御プログラム220に変換する。
【0126】
以上のように、本実施の形態に係る制御システム800は、コントローラ(コントローラ300)との間で制御プログラムを読み書きする第二のコンピュータ(保守用コンピュータ250)により、コントローラから制御プログラムを読み込むときに使用する、以下のような手段を備える。
【0127】
前記サーバ(管理サーバ100)は、前記制御プログラムを読み込むユーザと所属会社とを認証し、前記第二のコンピュータに対して読み込みの許可を判断する認証手段を備える。
前記第二のコンピュータは、前記コントローラから機器識別IDを読み込み、前記サーバに通知する手段を備える。
前記サーバは、前記第二のコンピュータから前記機器識別IDを受信すると、前記機器識別IDに対応する前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)を前記第二のコンピュータに送信する手段を備える。
前記第二のコンピュータは、前記サーバから前記暗号鍵(編集用鍵650)を受信すると、前記コントローラから制御プログラム(暗号化実行用制御プログラム651a、あるいは、実行用制御プログラム651)を読み込み、前記暗号鍵を用いて、前記制御プログラムの閲覧ができるようにする手段を備える。
【0128】
以上のように、本実施の形態に係る制御システム800によれば、PLC(例えば、コントローラ300)の制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ制御プログラムを安全に保護しつつ、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【0129】
実施の形態3.
本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0130】
図11は、本実施の形態に係る制御システム801のブロック構成図である。図12は、本実施の形態に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに対し暗号化実行用制御プログラム651aを書き出す手順を示すシーケンス図である。
図11及び図12を用いて、本実施の形態に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに対し実行用制御プログラム651を書き出す手順について説明する。
【0131】
図11は、実施の形態1で説明した図1に対応する図であり、図1と同様の機能構成については同一の符号を付し、その説明を省略する。図12は、実施の形態1で説明した図5に対応する図であり、図5と同様の機能構成については同一の符号を付し、その説明を省略する。
【0132】
図11に示すように、制御システム801において、実施の形態1で説明した制御システム800と異なる点は、複数のコントローラ300a,300bが通信回線40、402,403、404を介してコントローラ300と接続された構成になっている点である。
【0133】
図11に示すように、コントローラ300は、通信回線402を介してコントローラ300aと接続される。また、コントローラ300は、通信回線403を介してコントローラ300bと接続される。コントローラ300aとコントローラ300bとは、通信回線404を介して接続されている。
コントローラ300aとコントローラ300bとは、コントローラ300(制御装置)に接続される隣接接続装置の一例である。
【0134】
図12では、制御システム801において、開発用コンピュータ200が、ユーザによる実行用制御プログラム書き出し要求を受けて、コントローラ300への実行用制御プログラム書き出し処理を実行し、コントローラ300に実行用制御プログラムを書き出すまでの処理の流れを示したものである。
【0135】
図12に示した手順について説明する。
図12のS101〜S102は、図5のS101〜S102と同様の処理である。
開発用コンピュータ200は、コントローラ300への実行用制御プログラム書き出し処理を実行するとき、まず、ユーザID601、パスワード602、開発会社情報653を管理サーバ100に通知する(S101)。
管理サーバ100は、通知を受けるとユーザ認証処理S710を実行し、認証結果603を開発用コンピュータ200に対して応答する(S102)。
【0136】
図12の制御プログラム変換処理S720は、図5の制御プログラム変換処理S720と同様の処理である。
開発用コンピュータ200の制御プログラム管理部202は、管理サーバ100から認証結果603をサーバ通信部203経由で受け取る。そして、制御プログラム管理部202は、受け取った認証結果603を確認し、認証許可であれば、制御プログラム変換処理S720を実行する。
【0137】
図13は、本実施の形態に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図12及び図13を用いて、開発用コンピュータ200の制御プログラム管理部202による制御プログラム変換処理S720について説明する。
【0138】
図12のS721は、図5及び図7のS721と同様の処理である。
図12のS721において、開発用コンピュータ200の制御プログラム管理部202は、コントローラ300に対して機器識別ID問合せメッセージ605をコントローラ300に対して送信する(S721)。
【0139】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300aとコントローラ300bに対して、それぞれ機器識別ID問合せメッセージ606、608を送信する(S721−1,S721−3)。
【0140】
コントローラ300aは、機器識別ID問合せメッセージ606を受信すると、コントローラ300aの機器識別ID607をコントローラ300に通知する(S721−2)。コントローラ300bは、機器識別ID問合せメッセージ608を受信すると、コントローラ300bの機器識別ID609をコントローラ300に通知する(S721−4)。
【0141】
コントローラ300は、コントローラ300a,300bから機器識別ID607,609を受信すると、受信した機器識別ID607,609をもとにコントローラ300と隣接しているコントローラ300a,300b(PLC)の情報を隣接PLC情報614として作成する。
【0142】
隣接PLC情報614は、コントローラ300(制御装置)とコントローラ300a,300b(隣接接続装置)との接続関係を含む隣接情報の一例である。
コントローラ300は、機器識別ID604と隣接PLC情報614とを、開発用コンピュータ200の制御プログラム管理部20に通知する。
【0143】
なお、本実施の形態では、隣接PLC情報614は、コントローラ300において作成される例を示した。しかし、開発用コンピュータ200でも、コントローラ300aの機器識別ID607とコントローラ300bの機器識別ID609とを取得することによって作成することができる。
【0144】
図13のS726において、開発用コンピュータ200の制御プログラム管理部202は、コントローラ300から機器識別ID604と隣接PLC情報614を受信する。
【0145】
図13のS723は、図7のS723と同様の処理である。
S723において、制御プログラム管理部202は、制御プログラム220をコントローラ300において実行可能な実行用制御プログラム651に変換する。
【0146】
図13のS727において、制御プログラム管理部202は、隣接PLC情報614と機器識別ID604とを暗号鍵生成部223に入力する。暗号鍵生成部223は、隣接PLC情報614と機器識別ID604とに基づいて、実行用制御プログラム651を暗号化し、暗号化実行用制御プログラム651aを生成するとともに、制御プログラム220の閲覧に必要な編集用鍵650と、コントローラ300の実行用制御プログラムを実行するために必要な実行用鍵652とを生成する。
【0147】
図13のS725は、図7のS725と同様の処理であるため説明を省略する。
【0148】
図12のS103〜S104は、図5のS103〜S104と同様の処理である。
開発用コンピュータ200のコントローラ通信部201は、暗号化実行用制御プログラム651aと実行用鍵652とをコントローラ300に送信する(S103,S104)。
【0149】
また、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650と隣接PLC情報614とを送信する。
【0150】
図12のS105a〜S107において、開発用コンピュータ200のサーバ通信部203は、管理サーバ100に対して、編集用鍵650、隣接PLC情報614、開発会社情報653、保守会社情報661を、通信回線400を介して送信する。
図12のS105a〜S107は、図5のS105〜S107と同様の処理であるが、機器識別ID604に替えて隣接PLC情報614を管理サーバ100に送信する点が異なる。
【0151】
管理サーバ100のユーザ通信部102は、開発用コンピュータ200から編集用鍵650、隣接PLC情報614、開発会社情報653、保守会社情報661を受信する。管理サーバ100は、編集用鍵登録処理S730によって、ユーザ管理テーブル101に編集用鍵650隣接PLC情報614、開発会社情報653、保守会社情報661を登録する。
【0152】
管理サーバ100の編集用鍵登録処理S730は、図8で説明した管理サーバ100の編集用鍵登録処理S730と同様であるが、機器識別ID604に替えて隣接PLC情報614を機器識別IDテーブル112に登録する点が異なっている。
【0153】
以上のように、本実施の形態に係る制御システム801は、第一のコントローラ(コントローラ300)と、第三の通信回線(通信回線402)によって第一のコントローラに接続された第二のコントローラ(コントローラ300a)と、第一のコントローラとの間で制御プログラムの読み書きを行う第一のコンピュータ(開発用コンピュータ200)と、第二の通信回線(通信回線400)によって前記第一のコンピュータに接続されるサーバ(管理サーバ100)とを備えた制御システムである。
【0154】
本実施の形態に係る制御システム801は、前記第一のコンピュータから制御プログラムを前記第一のコントローラに書き込むとき、以下の処理を行う手段を備える。
前記サーバは、前記第一のコンピュータを使って書き込むユーザと所属会社を認証し、前記コンピュータに対して書き込みの許可を判断する認証手段を備える。
前記第一のコントローラは、通信回線を通じて接続されている第二のコントローラに関する識別情報を読み込み、第一および第二のコントローラが隣接していることを示す隣接情報(隣接PLC情報614)を作成する手段を備える。
前記第一のコンピュータは、前記第一のコントローラから前記隣接情報を読み込み、前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)と、前記制御プログラムの実行を可能とするための暗号鍵(実行用鍵652)とを作成する鍵生成手段を備える。
前記第一のコンピュータは、さらに、前記鍵生成手段によって生成された、制御プログラムの閲覧と制御プログラムの実行を可能とするための暗号鍵を前記第一のコントローラに書き込む手段を備える。
前記サーバは、前記第一のコンピュータの所属会社情報と、前記隣接情報と、前記制御プログラムの閲覧を可能とするための暗号鍵とを保管する手段を備える。
【0155】
以上のように、本実施の形態に係る制御システム801によれば、複数のコントローラ(PLC)間の組み合わせ及び接続関係を示す隣接PLC情報が管理サーバに登録されている隣接PLC情報と一致したときに限り、制御プログラムの閲覧に必要な編集用鍵を取得することができ、制御プログラムの実行が許可されるようになり、制御プログラムの機密性を向上させることが可能になる。
【0156】
実施の形態4.
本実施の形態では、実施の形態1〜3と異なる点について説明する。本実施の形態では、実施の形態1〜3で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0157】
本実施の形態では、実施の形態3で説明した制御システム801において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0158】
図14は、本実施の形態に係る制御システム801において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図14を用いて、保守用コンピュータ250が、コントローラ300から暗号化実行用制御プログラム651aを読み出し、読み出した暗号化実行用制御プログラム651aを閲覧可能な制御プログラム220に変換するまでの手順について説明する。
【0159】
図14のS101〜S102は、図9のS101〜S102と同様の処理である。
図14のS101において、ユーザにより、保守用コンピュータ250にてコントローラ300からの実行用制御プログラム読み出し操作を実行したとき、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知し、管理サーバ100にてユーザ認証処理S710を実行する。
【0160】
図14のS201は、図9のS201と同様の処理である。
保守用コンピュータ250の制御プログラム管理部202は、受け取った認証結果603を確認し、認証許可であれば、コントローラ300に対して機器識別ID問合せメッセージ605を送信する(S201)。
【0161】
コントローラ300は、機器識別ID問合せメッセージ605を受信すると、コントローラ300aとコントローラ300bに対して、それぞれ機器識別ID問合せメッセージ606,608を送信する(S201−1,S201−3)。
【0162】
コントローラ300aは、機器識別ID問合せメッセージ606を受信すると、コントローラ300aの機器識別ID607をコントローラ300に通知する(S201−2)。
コントローラ300bは、機器識別ID問合せメッセージ608を受信すると、コントローラ300bの機器識別ID609をコントローラ300に通知する(S201−4)。
【0163】
コントローラ300は、コントローラ300a,300bから機器識別ID607,609を受信すると、受信した機器識別ID607,609をもとにコントローラ300と隣接しているコントローラ300a,300bの情報を隣接PLC情報614として作成する。
図14のS202aにおいて、コントローラ300は、コントローラ300の機器識別ID604とともに、隣接PLC情報614を開発用コンピュータ200の制御プログラム管理部20に通知する。
【0164】
図14のS203aにおいて、保守用コンピュータ250の制御プログラム管理部202は、取得した隣接PLC情報614と保守会社情報661とを管理サーバ100に通知する。
【0165】
管理サーバ100は、保守用コンピュータ250から隣接PLC情報614と保守会社情報661とを受信すると、編集用鍵認証処理S750を実行する。
管理サーバ100による編集用鍵認証処理S750は、図9及び図10で説明した編集用鍵認証処理S750と同様の処理である。ただし、本実施の形態では、管理サーバ100は、機器識別ID604に替えて、隣接PLC情報614により機器識別IDテーブル112を検索して、編集用鍵650を取得する。
【0166】
図14のS204〜S206及び制御プログラム変換処理S760の処理は、図9のS204〜S206及び制御プログラム変換処理S760の処理と同様である。
本実施の形態に係る管理サーバ100による編集用鍵認証処理750では、管理サーバ100は、隣接PLC情報614と保守会社情報661とを確認し、合致するものがあれば隣接PLC情報614に対応する編集用鍵650を検索し、得られた編集用鍵650を保守用コンピュータ250に送信する(S204)。
【0167】
保守用コンピュータ250は、編集用鍵650を受信すると、コントローラ300から暗号化実行用制御プログラム651aを読み出す(S205,S206)。
保守用コンピュータ250は、編集用鍵650を復号部224に入力して暗号化実行用制御プログラム651aの閲覧に必要な情報を復号し、実行用制御プログラム651を閲覧可能な制御プログラム220に変換する。
【0168】
図14の制御プログラム変換処理S760は、図9の制御プログラム変換処理S760と同様であるため説明を省略する。
【0169】
以上のように、本実施の形態に係る制御システム801は、前記コンピュータ(保守用コンピュータ250)にて前記第一のコントローラ(コントローラ300)から制御プログラム220を読み込むときに使用する、以下の手段を備える。
前記サーバ(管理サーバ100)は、前記コンピュータを使って書き込む操作を実行するユーザのユーザIDと所属会社とを認証し、前記コンピュータに対して書き込みの許可を判断する認証手段を備える。
前記第一のコントローラは、通信回線を通じて接続されている第二のコントローラ(コントローラ300a)に関する識別情報(機器識別ID)を読み込み、第一および第二のコントローラが隣接していることを示す隣接情報(隣接PLC情報614)を作成する手段を備える。
前記コンピュータは、前記第一のコントローラから、前記隣接情報を前記サーバに通知する手段を備える。
前記サーバは、前記コンピュータから前記隣接情報を受信すると、前記隣接情報に対応する前記制御プログラムの閲覧を可能とするための暗号鍵(編集用鍵650)を前記コンピュータに送信する手段を備える。
前記コンピュータは、前記サーバから前記暗号鍵を受信すると、前記第一のコントローラから制御プログラムを読み込み、前記暗号鍵を用いて、前記制御プログラムの閲覧できるようにする手段を備える。
【0170】
以上のように、本実施の形態に係る制御システム801によれば、複数のコントローラ(PLC)間の組み合わせ及び接続関係を示す隣接PLC情報が管理サーバに登録されている隣接PLC情報と一致したときに限り、制御プログラムの閲覧に必要な編集用鍵の取得や、制御プログラムの実行が許可されるようになり、制御プログラムの機密性を向上させることが可能になる。
【0171】
本実施の形態に係る制御システム801によれば、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラムの書き込みの利便性を高くすることができる。
【0172】
実施の形態5.
本実施の形態では、主に、実施の形態1〜4と異なる点について説明する。特に、本実施の形態では、実施の形態1と異なる点について説明する。本実施の形態では、実施の形態1で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0173】
図15は、本実施の形態に係る制御システム802のブロック構成図である。図16は、本実施の形態に係る管理サーバ100が備える機器識別IDテーブル112の構成図である。図17は、本実施の形態に係る開発用コンピュータ200の詳細ブロック構成図である。図18は、本実施の形態に係る制御システム80において、開発用コンピュータ200からコントローラ300に対し実行用制御プログラム651を書き出す手順を示すシーケンス図である。
【0174】
図15図17は、実施の形態1で説明した図1図3に対応し、図1図3に記載した機能構成と同様の機能構成には同一の符号を付し、その説明を省略する場合もあるものとする。また、図18は、実施の形態1で説明した図5に対応し、図5に記載した機能構成と同様の機能構成には同一の符号を付し、その説明を省略する場合もあるものとする。
【0175】
図15に示すように、管理サーバ100は、時刻管理部103を備える。
時刻管理部103は、暗号鍵(編集用鍵650)の有効期限を管理する。時刻管理部103は、通信回線405を介して、時刻管理サーバ700(現在時刻管理サーバ)と接続されている。
【0176】
図16に示すように、管理サーバ100の機器識別IDテーブル112は、機器識別ID604に対応する情報として、編集用鍵650に加え、有効期限情報670を備えている。有効期限情報670は、対応する編集用鍵650の有効期限を示す情報である。
【0177】
図17に示すように、制御プログラム管理部202は、実施の形態1で説明した機能構成に加え、有効期限管理部228を備える。
有効期限管理部228は、ユーザが設定した有効期限を管理する。
【0178】
図18では、制御システム802において、開発用コンピュータ200がコントローラ300へ実行用制御プログラム書き出し処理を実行してから、コントローラ300に実行用制御プログラムが書き出されるまでの処理の流れを示したものである。
まず、開発用コンピュータ200から制御プログラムの実行用制御プログラムを書き込む手順について、図18を用いて説明する。
【0179】
図18のS101〜S102は、図5のS101〜S102と同様の処理である。
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラム書き出し要求を受け付けるとき、まず、ユーザにより入力されたユーザID601、パスワード602、開発会社情報653を管理サーバ100に通知する(S101)。
管理サーバ100は、通知を受けるとユーザ認証処理S710を実行し、認証結果603を開発用コンピュータ200に対して応答する(S102)。
【0180】
開発用コンピュータ200は、管理サーバ100から認証結果603を受け取り、認証結果603の内容が認証許可であれば、有効期限設定処理S810を実行する。
図19は、本実施の形態に係る開発用コンピュータ200の有効期限設定処理S810の流れを示すフローチャートである。
図19を用いて、開発用コンピュータ200の有効期限設定処理S810について説明する。
【0181】
S811において、実行用プログラム変換部221は、ユーザ操作受付部222に有効期限の入力を求めるメッセージを通知する。ユーザ操作受付部222は、開発用コンピュータ200の表示画面に有効期限の入力を促すメッセージ(有効期限設定画面)を表示する。
【0182】
S812において、ユーザ操作受付部222は、ユーザにより有効期限設定画面に入力された入力値を実行用プログラム変換部221へ通知する。実行用プログラム変換部221は、入力値の通知を受けると、有効期限管理部228の設定値を入力値に更新することで、有効期間673が設定される。
ユーザ操作受付部222は、編集用鍵650の有効期間の入力を受け付ける送信側受付部の一例である。
【0183】
次に、開発用コンピュータ200は、制御プログラム変換処理S720を実行する。図18の制御プログラム変換処理S720は、図5の制御プログラム変換処理S720と同様の処理であるため、その説明を省略する。
【0184】
次に、開発用コンピュータ200は、S103〜S108の処理を実行する。図18のS103〜S107の処理は、図5のS103〜S107の処理と同様の処理である。
制御プログラム変換処理720が完了すると、開発用コンピュータ200のサーバ通信部203は、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604を管理サーバ100に送信する(S105〜S107)。
また、開発用コンピュータ200のサーバ通信部203は、暗号化実行用制御プログラム651aと実行用鍵652とをコントローラ300に送信する(S103〜S104)。
【0185】
S108において、開発用コンピュータ200のサーバ通信部203は、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604に加え、有効期間673を管理サーバ100に送信する。
【0186】
管理サーバ100は、開発用コンピュータ200から、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604、有効期間673を受信する。管理サーバ100は、開発用コンピュータ200から、編集用鍵650、開発会社情報653(保守会社情報661)、機器識別ID604、有効期間673を受信すると、編集用鍵登録処理S770を実行する。
【0187】
図20は、本実施の形態に係る管理サーバ100の編集用鍵登録処理S770の流れを示すフローチャートである。
図20を用いて管理サーバ100の編集用鍵登録処理S770について説明する。
【0188】
S771〜S772において、管理サーバ100は、ユーザテーブル110に基づいて、ログインしているユーザIDと、受信した開発会社情報653と保守会社情報661とが対応しているか否かを処理装置により確認する。
【0189】
管理サーバ100は、ユーザIDと、受信した開発会社情報653と保守会社情報661とが対応していると判定した場合には、処理をS773に進める。
管理サーバ100は、ユーザIDと、受信した開発会社情報653と保守会社情報661とが対応していないと判定した場合には、処理を終了する。
【0190】
S773において、管理サーバ100は、開発会社情報653と機器識別ID604とを対応付けて所属会社テーブル111に登録する。この処理は、図8のS731の処理と同様である。
S774において、管理サーバ100は、保守会社情報661と機器識別ID604とを対応付けて所属会社テーブル111に登録する。この処理は、図8のS732の処理と同様である。
【0191】
S775において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信する(S775a)。時刻管理サーバ700は、管理サーバ100から現在時刻問合せメッセージ671を受信すると、現在時刻672を管理サーバ100に送信する(S775b)。
【0192】
S776において、管理サーバ100は、時刻管理サーバ700から取得した現在時刻672に、開発用コンピュータ200から受信した有効期間673を処理装置により加算し、有効期限情報670(有効期限)とする。
【0193】
管理サーバ100は、開発用コンピュータ200から受信した機器識別ID604に対し、開発用コンピュータ200から受信した編集用鍵650と、算出した有効期限情報670とを対応付けて機器識別IDテーブル112に設定する。管理サーバ100は、機器識別IDテーブル112に、既に受信した機器識別ID604のレコードが設定されている場合には、編集用鍵650と有効期限情報670とを更新する。
【0194】
図21は、本実施の形態に係る管理サーバ100の有効期限確認処理S790の流れを示すフローチャートである。
管理サーバ100は、定期的にあるいは不定期に、図21に示す有効期限確認処理S790を実行する。
【0195】
S791において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信し、時刻管理サーバ700から現在時刻672を取得する。
S792において、管理サーバ100は、取得した現在時刻672が、有効期限情報670に示される有効期限に到達したか否かについて処理装置により判定する。
【0196】
管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達している判定した場合(S792にてYES)、処理をS793に進める。
S793において、管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達しているレコードの編集用鍵650を無効化する。管理サーバ100は、例えば、機器識別IDテーブル112の編集用鍵650の欄に、「NULL」を設定することにより、編集用鍵650を無効化する。
【0197】
管理サーバ100は、現在時刻672が有効期限情報670に示される有効期限に到達していないと判定した場合(S792にてNO)、処理を終了する。管理サーバ100は、この有効期限確認処理S790を、機器識別IDテーブル112のすべてのレコードに対して実行する。
【0198】
以上のように、本実施の形態に係る制御システム802は、サーバ(管理サーバ100)と第四の通信回線(通信回線405)で接続された時刻管理サーバ700を備えている。
【0199】
また、本実施の形態に係る制御システム802は、以下の手段を備える。
前記サーバは、時刻サーバ(時刻管理サーバ700)から現在時刻を取得し、前記現在時刻に前記第一のコンピュータ(開発用コンピュータ200)から通知された時間(有効期間673)を加算することで、前記暗号鍵(編集用鍵650)に関する有効期限を設定する手段を備える。
前記サーバは、設定された有効期限を経過すると、前記暗号鍵を消去する手段を備える。
【0200】
以上のように、本実施の形態に係る制御システム802によれば、制御プログラムの閲覧、実行に必要な鍵に対して有効期限を制御できることから、ネットワーク品質が悪く、制御プログラムを閲覧、編集するコンピュータを常時ネットワークに接続できない環境において、コンピュータの不正操作から制御プログラムを守るのに有効な手段となる。
【0201】
また、本実施の形態に係る制御システム802によれば、制御プログラム解読に必要な編集用鍵の漏えいを防ぐことができる。
【0202】
実施の形態6.
本実施の形態では、主に、実施の形態1〜5と異なる点について説明する。特に、本実施の形態では、実施の形態2,5と異なる点について説明する。本実施の形態では、実施の形態2,5で説明したものと同様の機能を有する構成、処理、手段、手順については同一の符号を付し、その説明を省略する場合もある。
【0203】
図22は、本実施の形態に係る制御システム802において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。図23は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
【0204】
本実施の形態では、実施の形態5で説明した制御システム802において、保守用コンピュータ250により、コントローラ300から暗号化実行用制御プログラム651aを読み出し、閲覧・編集可能な制御プログラム220に変換するまでの処理について説明する。
【0205】
本実施の形態に係る制御システム802は、実施の形態5で説明した制御システム802に加えて、保守用コンピュータ250を備える。
保守用コンピュータ250の内部構成は、実施の形態5で説明した開発用コンピュータ200と同様の内部構成である。
また、本実施の形態に係る管理サーバ100に記憶されている機器識別IDテーブル112は、実施の形態5の図16で説明した機器識別IDテーブル112である。
【0206】
図22のS251において、保守用コンピュータ250は、管理サーバ100に対して、現在時刻問合せメッセージ671を送信する。
図22のS252において、管理サーバ100は、現在時刻問合せメッセージ671を受信すると、現在時刻672を保守用コンピュータ250に対して送信する。
保守用コンピュータ250は、管理サーバ100から現在時刻672を受信すると、自保守用コンピュータ250の時刻を現在時刻672に合わせる。これにより、仮に保守用コンピュータ250で独自に時刻が変更されていても、有効期限までの差分を正しく制御することが可能となる。
【0207】
図22のS101〜S102の処理、ユーザ認証処理S710、及びS201〜206の処理は、図のS101〜S102の処理、ユーザ認証処理S710、及びS201〜206の処理と同様である。
【0208】
現在時刻の設定が完了すると、保守用コンピュータ250は、ユーザID611、パスワード612、保守会社情報661を管理サーバ100に通知する(S101)。
管理サーバ100は、ユーザ認証処理710を実行する。保守用コンピュータ250は、管理サーバ100から認証結果603を受信し(S102)、認証結果603が認証許可応答であれば、コントローラ300から機器識別ID604を取得する(S201〜S202)。
【0209】
保守用コンピュータ250は、機器識別ID604を取得すると、機器識別ID604、保守会社情報661とを管理サーバ100に送信する(S203)。管理サーバ100は、保守用コンピュータ250から機器識別ID604と保守会社情報661とを受信すると、編集用鍵認証処理S780を実行する。
【0210】
図23は、本実施の形態に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
図23を用いて、管理サーバ100の編集用鍵認証処理S780について説明する。
【0211】
S781において、管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112(図3参照)に登録されているか否かを処理装置により確認する。
管理サーバ100は、入力した機器識別ID604が機器識別IDテーブル112に登録されていると確認した場合(S781でYES)、処理をS782に進める。
【0212】
管理サーバ100は、受信した機器識別ID604が機器識別IDテーブル112に登録されていないと確認した場合(S781でNO)、処理をS787に進める。
【0213】
S782において、管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応しているか否かについて処理装置により判定する。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録され、かつ、受信した機器識別ID604に対応していると確認した場合(S782でYES)、処理をS783に進める。
管理サーバ100は、受信した保守会社情報661が、所属会社テーブル111に登録されていない、あるいは、受信した機器識別ID604に対応していないことを確認した場合(S782でNO)、処理をS787に進める。
【0214】
S783において、管理サーバ100は、時刻管理サーバ700に対して現在時刻問合せメッセージ671を送信する(S78a)。時刻管理サーバ700は、管理サーバ100から現在時刻問合せメッセージ671を受信すると、現在時刻672を管理サーバ100に送信する(S78b)。
【0215】
S784において、管理サーバ100は、受信した機器識別ID604に基づいて、機器識別IDテーブル112を処理装置により検索し、有効期限情報670を取得する。管理サーバ100は、取得した有効期限情報670を確認し、現在時刻が有効期限情報670により示される有効期限に到達しているか否かについて処理装置により判定する。
【0216】
管理サーバ100は、現在時刻が有効期限に到達していると判定した場合(S784にてNO)、処理をS787に進める。
管理サーバ100は、現在時刻が有効期限に到達していないと判定した場合(S784にてYES)、処理をS785に進める。
【0217】
S785において、管理サーバ100は、受信した機器識別ID604に基づいて、機器識別IDテーブル112を処理装置により検索する。管理サーバ100は、機器識別ID604に対応する編集用鍵650を、機器識別IDテーブル112から取得する。
S786において、管理サーバ100は、取得した編集用鍵650を鍵認証応答に設定する。
【0218】
図22のS204において、管理サーバ100は、編集用鍵650を設定した鍵認証応答を保守用コンピュータ250に送信する。
【0219】
一方、S787において、管理サーバ100は、鍵認証応答に「認証不可」を設定する。すなわち、管理サーバ100は、機器識別ID604が機器識別IDテーブル112に存在しない、所属会社テーブル111において機器識別ID604と保守会社情報661との対応が一致しない、あるいは、現在時刻が機器識別IDテーブルに記憶されている有効期限に到達しているなどの場合は、鍵認証応答に「認証不可」を設定する。
以上で、管理サーバ100の編集用鍵認証処理S780の説明を終わる。
【0220】
以上のように、管理サーバ100は、サーバ側通信部(受信側通信部)から機器識別IDを受信すると、受信した機器識別IDに対応する有効期限を取得するとともに、時刻管理サーバ700から現在時刻を取得し、取得した現在時刻が有効期限を過ぎているか否かを処理装置により判定する。管理サーバ100は、取得した現在時刻が有効期限を過ぎていると判定した場合には編集用鍵を消去し、取得した現在時刻が有効期限を過ぎていないと判定した場合には編集用鍵を取得する。管理サーバ100は、編集用鍵取得部の一例である。
【0221】
ユーザ通信部102(サーバ側通信部)は、管理サーバ100(編集用鍵取得部)により取得された編集用鍵を保守用コンピュータ(プログラム受信装置)に送信する。
【0222】
以上のように、本実施の形態に係る制御システム802は、前記サーバ(管理サーバ100)と第四の通信回線(通信回線405)で接続された時刻管理サーバ700を備える。
【0223】
また、本実施の形態に係る制御システム802は、以下の手段を備える。
前記第二のコンピュータ(保守用コンピュータ250)は、前記サーバから現在時刻を取得し、前記サーバの現在時刻と合わせる手段を備える。
前記サーバは、時刻管理サーバから現在時刻を取得し、前記暗号鍵(編集用鍵)に関する有効期限を確認する手段を備える。
前記サーバは、前記現在時刻よりも前記有効期限の方が先であれば、前記暗号鍵の送信を許可する手段を備える。
【0224】
以上のように、本実施の形態に係る制御システム802によれば、制御プログラムの閲覧、実行に必要な鍵に対して有効期限を制御できることから、ネットワーク品質が悪く、制御プログラムを閲覧、編集するコンピュータを常時ネットワークに接続できない環境において、コンピュータの不正操作から制御プログラムを守るのに有効な手段となる。また、この手法によっても、制御プログラム解読に必要な編集用鍵の漏えいを防ぎ、制御プログラムを安全に保護できるとともに、PLCの制御プログラムを書き込む会社と、PLCの制御プログラムを読み出す会社が異なっても、PLCからの実行用制御プログラムの読出しや、PLCへの実行用制御プログラム書き込みの利便性を高くすることができる。
【0225】
以上、実施の形態1〜6について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【0226】
上記実施の形態1〜6の説明では、「コントローラ通信部」、「制御プログラム管理部」、「サーバ通信部」、「実行用プログラム変換部」、「ユーザ操作受付部」、「暗号鍵生成部」、「復号部」、「会社管理部」がそれぞれ独立した機能ブロックとして開発用コンピュータ200を構成している。しかし、これに限られるわけではなく、例えば、「コントローラ通信部」と「サーバ通信部」とをひとつの機能ブロックで実現し、「実行用プログラム変換部」と「暗号鍵生成部」とをひとつの機能ブロックで実現しても良い。あるいは、これらの機能ブロックを、他のどのような組み合わせで開発用コンピュータ200を構成しても構わない。
また、管理サーバ100、保守用コンピュータ250、コントローラ300についても同様に、機能ブロックをどのような組み合わせで構成しても構わない。
【符号の説明】
【0227】
100 管理サーバ、101 ユーザ管理テーブル、102 ユーザ通信部、103 時刻管理部、110 ユーザテーブル、111 所属会社テーブル、112 機器識別IDテーブル、150 ユーザID、151 ログイン情報、152 パスワード、160
ユーザID、161 ログイン情報、162 パスワード、200 開発用コンピュータ、201 コントローラ通信部、202 制御プログラム管理部、203 サーバ通信部、220 制御プログラム、221 実行用プログラム変換部、222 ユーザ操作受付部、223 暗号鍵生成部、224 復号部、226 会社管理部、227 制御プログラム記憶部、228 有効期限管理部、250 保守用コンピュータ、300,300a,300b コントローラ、301 通信制御部、302 実行用制御プログラム保管部、303 内部バス、304 機器識別ID管理部、305 制御プログラム実行部、306 復号部、400,401,402,403,404 通信回線、500 生産機器、601 ユーザID、602 パスワード、603 認証結果、604,607,609 機器識別ID、605,606,608 機器識別ID問合せメッセージ、611
ユーザID、612 パスワード、614 隣接PLC情報、640 実行用制御プログラム読み出しメッセージ、650 編集用鍵、651 実行用制御プログラム、651a 暗号化実行用制御プログラム、652 実行用鍵、653 開発会社情報、661 保守会社情報、670 有効期限情報、671 現在時刻問合せメッセージ、673 有効期間、700 時刻管理サーバ、800,801,802 制御システム、901 LCD、902 キーボード、903 マウス、904 FDD、905 CDD、906
プリンタ、911 CPU、912 バス、913 ROM、914 RAM、915
通信ボード、920 HDD、921 オペレーティングシステム、922 ウィンドウシステム、923 プログラム群、924 ファイル群。
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】図12
【補正方法】変更
【補正の内容】
図12
【手続補正3】
【補正対象書類名】図面
【補正対象項目名】図14
【補正方法】変更
【補正の内容】
図14

【手続補正書】
【提出日】2015年9月7日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0013
【補正方法】変更
【補正の内容】
【0013】
図1】実施の形態1に係る制御システム800のブロック構成図である。
図2】実施の形態1に係る開発用コンピュータ200の詳細ブロック構成図である。
図3】実施の形態1に係る管理サーバ100が備えるユーザ管理テーブル101の構成図である。
図4】実施の形態1に係る管理サーバ100、開発用コンピュータ200、コントローラ300のハードウェア構成の一例を示す図である。
図5】実施の形態1に係る制御システム800において、開発用コンピュータ200からコントローラ300に暗号化実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図6】実施の形態1に係る管理サーバ100のユーザ認証処理710の流れを示すフローチャートである。
図7】実施の形態1に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図8】実施の形態1に係る管理サーバ100の編集用鍵登録処理730の流れを示すフローチャートである。
図9】実施の形態2に係る制御システム800において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図10】実施の形態2に係る管理サーバ100の編集用鍵認証処理S750の流れを示すフローチャートである。
図11】実施の形態3に係る制御システム801のブロック構成図である。
図12】実施の形態3に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに暗号化実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図13】実施の形態3に係る開発用コンピュータ200の制御プログラム変換処理720の流れを示すフローチャートである。
図14】実施の形態4に係る制御システム801において、コントローラ300から保守用コンピュータ250に暗号化実行用制御プログラム651aを読み出す手順を示すシーケンス図である。
図15】実施の形態5に係る制御システム802のブロック構成図である。
図16】実施の形態5に係る管理サーバ100が備える機器識別IDテーブル112の構成図である。
図17】実施の形態5に係る開発用コンピュータ200の詳細ブロック構成図である。
図18】実施の形態5に係る制御システム802において、開発用コンピュータ200からコントローラ300に暗号化実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図19】実施の形態5に係る開発用コンピュータ200の有効期限設定処理S810の流れを示すフローチャートである。
図20】実施の形態5に係る管理サーバ100の編集用鍵登録処理S770の流れを示すフローチャートである。
図21】実施の形態5に係る管理サーバ100の有効期限確認処理S790の流れを示すフローチャートである。
図22】実施の形態6に係る制御システム802において、保守用コンピュータ250コントローラ300から暗号化実行用制御プログラム651読み出す手順を示すシーケンス図である。
図23】実施の形態6に係る管理サーバ100の編集用鍵認証処理S780の流れを示すフローチャートである。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0019
【補正方法】変更
【補正の内容】
【0019】
開発用コンピュータ200は、ユーザからコントローラ300への実行用制御プログラムの書き出し要求を受け付け、コントローラ300に暗号化実行用制御プログラム651aと実行用鍵とを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0026
【補正方法】変更
【補正の内容】
【0026】
実行用制御プログラム保管部302は、暗号化実行用制御プログラム651aをコントローラ300の備える記憶装置に記憶する。
機器識別ID管理部304は、コントローラ300の機器識別IDをコントローラ300の備える記憶装置に記憶する。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0027
【補正方法】変更
【補正の内容】
【0027】
復号部306は、実行用制御プログラム保管部302により保管されている暗号化実行用制御プログラムを復号する。
制御プログラム実行部305は、生産機器500に接続される。制御プログラム実行部305は、復号部306により復号された実行用制御プログラムを実行することにより、生産機器500の動作を制御する。
制御プログラム実行部305は、実行用制御プログラム保管部302から逐次コードを読み出し、生産機器500の制御に必要なプログラムを実行する。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0032
【補正方法】変更
【補正の内容】
【0032】
暗号鍵生成部223は、制御プログラム220の閲覧、制御プログラム220の実行に必要な鍵を生成する。
復号部224は、制御プログラム220の閲覧に必要な鍵を用いて、暗号化実行用制御プログラムを実行用制御プログラムに復号する。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0053
【補正方法】変更
【補正の内容】
【0053】
図5は、本実施の形態に係る制御システム800において、開発用コンピュータ200からコントローラ300に暗号化実行用制御プログラム651を書き出す手順を示すシーケンス図である。
図5を用いて、開発用コンピュータ200からコントローラ300に暗号化実行用制御プログラム651を書き出す手順について説明する。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0054
【補正方法】変更
【補正の内容】
【0054】
図5に示す処理は、開発用コンピュータ200が、ユーザがコントローラ300への実行用制御プログラムの書き出し実行を指示してから、コントローラ300に暗号化実行用制御プログラム651aを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵を登録するまでの処理の流れを示したものである。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0078
【補正方法】変更
【補正の内容】
【0078】
S724において、暗号鍵生成部223は、実行用プログラム変換部221により変換された実行用制御プログラム651と、コントローラ300から取得した機器識別ID604とを入力する。暗号鍵生成部223は、入力した実行用制御プログラム651を用いて、実行用制御プログラム651が暗号化された暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する際に用いられる編集用鍵を生成する。編集用鍵は、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する際に用いられると共に、復号された実行用制御プログラム651を制御プログラム220に変換する際に用いられる。また、暗号鍵生成部223は、暗号化実行用制御プログラム651aを実行用制御プログラム651に復号する際に用いる実行用鍵を生成する。暗号鍵生成部223は、鍵生成部の一例である。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0089
【補正方法】変更
【補正の内容】
【0089】
以上で、開発用コンピュータ200が、ユーザがコントローラ300への実行用制御プログラムの書き出し実行を指示してから、コントローラ300に暗号化実行用制御プログラム651aを書き出し、管理サーバ100に制御プログラムを閲覧するための編集用鍵650を登録するまでの処理の流れについての説明を終わる。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】0130
【補正方法】変更
【補正の内容】
【0130】
図11は、本実施の形態に係る制御システム801のブロック構成図である。図12は、本実施の形態に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに対し暗号化実行用制御プログラム651aを書き出す手順を示すシーケンス図である。
図11及び図12を用いて、本実施の形態に係る制御システム801において、開発用コンピュータ200からコントローラ300,300a,300bに対し暗号化実行用制御プログラム651を書き出す手順について説明する。
【手続補正11】
【補正対象書類名】明細書
【補正対象項目名】0132
【補正方法】変更
【補正の内容】
【0132】
図11に示すように、制御システム801において、実施の形態1で説明した制御システム800と異なる点は、複数のコントローラ300,300a,300bが通信回線402,403,404を介してコントローラと接続された構成になっている点である。
【手続補正12】
【補正対象書類名】明細書
【補正対象項目名】0134
【補正方法】変更
【補正の内容】
【0134】
図12では、制御システム801において、開発用コンピュータ200が、ユーザによる実行用制御プログラム書き出し要求を受けて、コントローラ300への実行用制御プログラム書き出し処理を実行し、コントローラ300に暗号化実行用制御プログラム651aを書き出すまでの処理の流れを示したものである。
【手続補正13】
【補正対象書類名】明細書
【補正対象項目名】0173
【補正方法】変更
【補正の内容】
【0173】
図15は、本実施の形態に係る制御システム802のブロック構成図である。図16は、本実施の形態に係る管理サーバ100が備える機器識別IDテーブル112の構成図である。図17は、本実施の形態に係る開発用コンピュータ200の詳細ブロック構成図である。図18は、本実施の形態に係る制御システム802において、開発用コンピュータ200からコントローラ300に対し暗号化実行用制御プログラム651を書き出す手順を示すシーケンス図である。
【手続補正14】
【補正対象書類名】明細書
【補正対象項目名】0178
【補正方法】変更
【補正の内容】
【0178】
図18では、制御システム802において、開発用コンピュータ200がコントローラ300へ実行用制御プログラム書き出し処理を実行してから、コントローラ300に暗号化実行用制御プログラム651が書き出されるまでの処理の流れを示したものである。
まず、開発用コンピュータ200から制御プログラムの暗号化実行用制御プログラム651を書き込む手順について、図18を用いて説明する。
【国際調査報告】