(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024065835
(43)【公開日】2024-05-15
(54)【発明の名称】開発装置、開発方法
(51)【国際特許分類】
G05B 19/05 20060101AFI20240508BHJP
G06F 21/51 20130101ALI20240508BHJP
【FI】
G05B19/05 D
G06F21/51
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022174895
(22)【出願日】2022-10-31
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100155712
【弁理士】
【氏名又は名称】村上 尚
(72)【発明者】
【氏名】杉山 明日香
(72)【発明者】
【氏名】藤村 亮輔
(72)【発明者】
【氏名】玉嶋 大輔
(72)【発明者】
【氏名】前川 典弘
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220BB09
5H220CC07
5H220CX01
5H220JJ02
5H220JJ12
5H220JJ28
5H220JJ53
5H220KK08
(57)【要約】
【課題】ユーザプログラムが特定のハードウェアでのみ実行できるようにする。
【解決手段】PLC(200)の動作を制御するプロジェクトファイル(120)を開発する開発装置であって、PLC(200)に書き換え不能に記録されている固有情報(210)を取得する固有情報取得部(111)と、取得された固有情報を固有情報リスト(124)に複数登録する固有情報登録部(113)と、PLCにおいて、固有情報リストに対応するハードウェアを検出した場合のみユーザプログラム(121)が実行されるように該プロジェクトファイルを設定するプロジェクトファイル設定部(114)と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プログラマブルコントローラの動作を制御するプログラムを含むプロジェクトファイルを開発する開発装置であって、
少なくとも1つのハードウェアに書き換え不能に記録されている固有情報を、ユーザからの指示に応じて取得する固有情報取得部と、
前記固有情報取得部によって取得された前記固有情報を前記プロジェクトファイルに複数登録する固有情報登録部と、
前記プログラマブルコントローラにおいて、前記固有情報登録部によって登録された前記固有情報に対応する前記ハードウェアを検出した場合のみ該プロジェクトファイルが実行されるように該プロジェクトファイルを設定するプロジェクトファイル設定部と、を備える開発装置。
【請求項2】
前記プロジェクトファイル設定部は、ユーザからの指示に応じて前記固有情報の登録が完了したことを示す登録完了フラグを前記プロジェクトファイルに設定し、
前記固有情報登録部は、前記登録完了フラグが前記プロジェクトファイルに設定されていない場合にのみ、前記固有情報を該プロジェクトファイルに登録する、請求項1に記載の開発装置。
【請求項3】
前記固有情報取得部は、当該開発装置と通信接続された前記ハードウェアから前記固有情報を取得する、請求項1に記載の開発装置。
【請求項4】
前記プロジェクトファイルを前記プログラマブルコントローラに通信によって転送する転送部をさらに備え、
前記転送部は、前記プロジェクトファイルに前記登録完了フラグが設定されている場合にのみ、該プロジェクトファイルを前記プログラマブルコントローラに転送する、請求項2に記載の開発装置。
【請求項5】
前記固有情報が、前記プログラマブルコントローラに書き換え不能に記録されている情報、または、前記プログラマブルコントローラに接続された記録媒体に書き換え不能に記録されている情報である、請求項1に記載の開発装置。
【請求項6】
少なくとも1つのハードウェアに書き換え不能に記録されている固有情報を、ユーザからの指示に応じて取得する固有情報取得ステップと、
前記固有情報取得ステップによって取得された前記固有情報を、プログラマブルコントローラの動作を制御するプログラムを含むプロジェクトファイルに、複数登録する固有情報登録ステップと、
前記プログラマブルコントローラにおいて、前記固有情報登録ステップによって登録された前記固有情報に対応する前記ハードウェアを検出した場合のみ該プロジェクトファイルが実行されるように該プロジェクトファイルを設定するプロジェクトファイル設定ステップと、を含む開発方法。
【請求項7】
請求項1~5のいずれか一項に記載の開発装置によって作成された前記プロジェクトファイルに含まれる前記プログラムを実行する実行部を備え、
前記実行部は、前記プロジェクトファイルに登録されている前記固有情報に対応する前記ハードウェアを検出した場合のみ該プロジェクトファイルを実行する、プログラマブルコントローラ。
【請求項8】
前記実行部は、当該プログラマブルコントローラに書き換え不能に記録されている情報、または、当該プログラマブルコントローラに接続された記録媒体に書き換え不能に記録されている情報を読み出すことによって、前記プロジェクトファイルに登録されている前記固有情報に対応する前記ハードウェアを検出したか否かを判定する、請求項7に記載のプログラマブルコントローラ。
【請求項9】
前記実行部は、前記プロジェクトファイルに登録されている前記固有情報を、当該プログラマブルコントローラに接続されている記録媒体、または、当該プログラマブルコントローラに通信接続されているサーバから読み出す、請求項7に記載のプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はPLC(プログラマブルコントローラ:Programmable Logic Controller)の開発装置に関する。
【背景技術】
【0002】
工場などで装置を制御するためにPLCが広く使われている。PLCを用いた装置は、装置ベンダーによって開発され、エンドユーザに販売されて、エンドユーザが該装置を使用する。PLCのユーザプログラムは、装置を所望の動作をするように作り込まれており、その中にはノウハウが多く含まれている。装置ベンダーが販売する装置には、改変できるPLCのプログラムも含まれている。
【0003】
悪意のあるエンドユーザが装置ベンダーから購入した装置のユーザプログラムを吸い出し、新規購入したPLCに書き込み(インストール)することで、該PLCによって、別の装置を稼働させる事態が発生している。このような事態が発生すると、多数のノウハウを含んだ技術情報が不正に流出していることになり、装置ベンダーは甚大な損害を被ることになる。
【0004】
これら事態に対応するために、特許文献1に示すように、ユーザプログラムが不正に流出した際に、パスワードによって実行を防ぐ仕組みが用意されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述のような従来技術では、ユーザプログラムと共に、パスワードも流出した際に、ユーザプログラムの不正実行を防ぐことはできない。
【0007】
そこで、本発明の一態様は、ユーザプログラムが特定のハードウェアでのみ実行できるようにする仕組みを実現することを目的とする。
【課題を解決するための手段】
【0008】
上記の課題を解決するために、本発明の一態様に係る開発装置は、プログラマブルコントローラの動作を制御するプログラムを含むプロジェクトファイルを開発する開発装置であって、少なくとも1つのハードウェアに書き換え不能に記録されている固有情報を、ユーザからの指示に応じて取得する固有情報取得部と、前記固有情報取得部によって取得された前記固有情報を前記プロジェクトファイルに複数登録する固有情報登録部と、前記プログラマブルコントローラにおいて、前記固有情報登録部によって登録された前記固有情報に対応する前記ハードウェアを検出した場合のみ該プロジェクトファイルが実行されるように該プロジェクトファイルを設定するプロジェクトファイル設定部と、を備える。
【0009】
上記の課題を解決するために、本発明の一態様に係る開発方法は、少なくとも1つのハードウェアに書き換え不能に記録されている固有情報を、ユーザからの指示に応じて取得する固有情報取得ステップと、前記固有情報取得ステップによって取得された前記固有情報を、プログラマブルコントローラの動作を制御するプログラムを含むプロジェクトファイルに、複数登録する固有情報登録ステップと、前記プログラマブルコントローラにおいて、前記固有情報登録ステップによって登録された前記固有情報に対応する前記ハードウェアを検出した場合のみ該プロジェクトファイルが実行されるように該プロジェクトファイルを設定するプロジェクトファイル設定ステップと、を含む。
【0010】
上記の構成によれば、ハードウェアに書き換え不能に記録されている固有情報を複数登録した、固有情報のリストに基づき、該ハードウェアにおけるユーザプログラムの実行を制限することができる。そのため、プロジェクトファイルが不正に流出したとしても、固有情報のリストに登録された該ハードウェアを入手しない限り、プロジェクトファイルのユーザプログラムを実行することができない。
【0011】
また、複数のハードウェアの固有情報を単一のプロジェクトファイルに登録することができるため、同一のプロジェクトファイルに関連づいた複数のハードウェアの保守・管理が容易になる。
【0012】
前記プロジェクトファイル設定部は、ユーザからの指示に応じて前記固有情報の登録が完了したことを示す登録完了フラグを前記プロジェクトファイルに設定し、前記固有情報登録部は、前記登録完了フラグが前記プロジェクトファイルに設定されていない場合にのみ、前記固有情報を該プロジェクトファイルに登録できてもよい。
【0013】
上記の構成によれば、登録完了フラグを設けることによって、固有情報を後から追加できなくすることができる。そのため、装置ベンダーに販売する際に引き渡すプロジェクトファイルでは、登録完了フラグをかけておくことによって、不正な技術流出を防ぐことができる。
【0014】
前記固有情報取得部は、当該開発装置と通信接続された前記ハードウェアから前記固有情報を取得してもよい。
【0015】
上記の構成によれば、手入力ではなく、ハードウェアから直接固有情報を取得することができるため、確実で効率的に固有情報を登録することができる。
【0016】
前記プロジェクトファイルを前記プログラマブルコントローラに通信によって転送する転送部をさらに備え、前記転送部は、前記プロジェクトファイルに前記登録完了フラグが設定されている場合にのみ、該プロジェクトファイルを前記プログラマブルコントローラに転送してもよい。
【0017】
上記の構成によれば、登録完了フラグが設定されていない場合には、プロジェクトファイルをプログラマブルコントローラに転送することができなくすることができる。そのため、プログラマブルコントローラから吸い出したプロジェクトファイルは必ず登録完了フラグが設定されている状態になり、不正利用することができないようにすることができる。
【0018】
前記固有情報が、前記プログラマブルコントローラに書き換え不能に記録されている情報、または、前記プログラマブルコントローラに接続された記録媒体に書き換え不能に記録されている情報であってもよい。
【0019】
上記の構成によれば、書き換え不能な情報である固有情報が記録されたハードウェアとして、プログラマブルコントローラまたはプログラマブルコントローラに接続された記録媒体を選択することができる。
【0020】
上記の課題を解決するために、本発明の一態様に係るプログラマブルコントローラは、開発装置によって作成された前記プロジェクトファイルに含まれる前記プログラムを実行する実行部を備え、前記実行部は、前記プロジェクトファイルに登録されている前記固有情報に対応する前記ハードウェアを検出した場合のみ該プロジェクトファイルを実行する。
【0021】
上記の構成によれば、実行部は、固有情報に対応したハードウェアを検出した場合のみ実行することができるようになる。そのため、プロジェクトファイルにおけるプログラムの不正利用を防ぐことができる。
【0022】
前記実行部は、当該プログラマブルコントローラに書き換え不能に記録されている情報、または、当該プログラマブルコントローラに接続された記録媒体に書き換え不能に記録されている情報を読み出すことによって、前記プロジェクトファイルに登録されている前記固有情報に対応する前記ハードウェアを検出したか否かを判定してもよい。
【0023】
上記の構成によれば、ハードウェアから固有情報を取得して、固有情報に対応したハードウェアを検出したか否かを判定することができる。そのため、自動的に処理をすることができる。
【0024】
前記実行部は、前記プロジェクトファイルに登録されている前記固有情報を、当該プログラマブルコントローラに接続されている記録媒体、または、当該プログラマブルコントローラに通信接続されているサーバから読み出してもよい。
【0025】
上記の構成によれば、プロジェクトファイルに登録されている固有情報は、プログラマブルコントローラに記録されてなくてもよく、プログラマブルコントローラが、接続されている記録媒体や、通信接続されているサーバから取得するシステムを構築することができる。
【0026】
本発明の各態様に係る開発装置は、コンピュータによって実現してもよく、この場合には、コンピュータを前記開発装置が備える各部(ソフトウェア要素)として動作させることにより前記開発装置をコンピュータにて実現させる開発装置の制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【発明の効果】
【0027】
本発明の一態様によれば、ハードウェアに依存した固有情報によって、ユーザプログラムの実行可否を判断することができる。
【図面の簡単な説明】
【0028】
【
図2】実施形態1に係るシステムにおける要部の構成を示すブロック図である。
【
図3】開発装置における、固有情報を固有情報リストに登録する処理の流れを示すフローチャートの一例である。
【
図4】登録完了フラグをセットする際の表示内容の一例である。
【
図5】登録完了フラグをセットする際の警告メッセージの一例である。
【
図6】登録完了フラグをセットしたことを示すメッセージである。
【
図7】ユーザプログラムの転送処理の動作例を示すフローチャートである。
【
図8】ユーザプログラムの実行処理の動作例を示すフローチャートである。
【
図9】実施形態2に係るシステムの要部の構成を示すブロック図である。
【
図10】実施形態3に係るシステムの要部の構成を示すブロック図である。
【
図11】実施形態4に係るシステムの要部の構成を示すブロック図である。
【
図12】実施形態5に係るシステムの要部の構成を示すブロック図である。
【発明を実施するための形態】
【0029】
〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【0030】
§1 適用例
図1は、本発明の概要を示す図である。パソコン(開発装置)100と、PLC200-1~200-3とを備えたシステムがある。PLC200-1~200-3にはそれぞれ固有情報210-1~210-3が書き換え不能に記録されている。固有情報210-1~210-3は、ハードウェアを一意に特定することができる任意のキーである。開発装置100で開発中のプロジェクトファイルは、複数の固有情報が登録されている固有情報リスト124を備える。プロジェクトファイルは、PLCにおいて、登録されている固有情報を検出した場合のみ実行されるように設定されている。
【0031】
固有情報リスト124には、固有情報210-1および固有情報210-2が登録されているが、固有情報210-3は記憶されていない。このシステムにおいて、固有情報リスト124を含む同一プロジェクトファイルが、各PLC200-1~200-3に転送され、各PLC200-1~200-3において該プロジェクトファイルが実行された場合を想定する。
【0032】
固有情報210-1および固有情報210-2は、固有情報リスト124に登録されているため、PLC200-1およびPLC200-2ではプロジェクトファイルにおけるユーザプログラムが実行可能である。対して、固有情報210-3は固有情報リスト124に登録されていないため、PLC200-3ではユーザプログラムを実行することができない。
【0033】
このように、システム上のハードウェアに依存した固有情報(ハードウェアキー)によって、ユーザプログラムの実行の可否を制御することによって、ユーザプログラムが不正に流出した際でも、ユーザプログラムの実行を制御することができる。そのため、装置ベンダーは甚大な損害を被ることを防ぐことができる。
【0034】
また単一のプロジェクトファイルに対して複数のハードウェアにおける固有情報を登録することができる。このため、同一のユーザプログラムを用いる複数台の設備において、単一のプロジェクトファイルで管理することができ、保守・管理にかかる手間を省力化することができる。
【0035】
§2 構成例
(システム構成)
図2は、実施形態1に係るシステム1における要部の構成を示すブロック図である。システム1は、開発装置100と、PLC200と、を備える。
【0036】
(開発装置100の構成)
開発装置100は、いわゆるパソコンであり、PLC200で動作するユーザプログラムを含むプロジェクトファイルを開発する装置である。開発装置100は、制御部110と、開発装置記憶部(図示省略)とを備える。開発装置記憶部には、プロジェクトファイル120が記憶されている。
【0037】
制御部110は、開発装置100の各部を統括的に制御する。制御部110は、固有情報取得部111と、固有情報登録部113と、プロジェクトファイル設定部114と、転送部115と、を備える。
【0038】
プロジェクトファイル120は、PLC200の動作を制御するプログラムを含んだ開発装置100におけるデータである。プロジェクトファイル120には、大きく分けてユーザプログラム121および設定情報122がある。設定情報122には、システム構成123、固有情報リスト124(固有情報)、および登録完了フラグ125が含まれる。
【0039】
固有情報取得部111は、PLC200の固有情報210をユーザからの指示に応じて取得する。固有情報取得部111は、PLC200から固有情報210を通信接続によって自動的に取得してもよいし、ユーザからの入力を受け付けてもよい。取得した固有情報を固有情報登録部113に出力する。
【0040】
固有情報登録部113は、登録完了フラグ125が、セットされていなかった場合にのみ、固有情報取得部111で取得した固有情報を、固有情報リスト124に複数登録する。また、登録完了フラグがセットされていない(登録許可状態)場合には、固有情報リスト124に登録されている固有情報を編集することができる。
【0041】
プロジェクトファイル設定部114は、ユーザプログラム実行プロテクト機能の状態またはユーザからの指示に応じて、登録完了フラグ125をプロジェクトファイル120に設定する。
【0042】
ユーザプログラム実行プロテクト機能は、ユーザプログラム121の実行に際し、固有情報210が固有情報リスト124に登録されているか否かを判断し、登録されている場合にだけ、ユーザプログラム121の実行を行う機能である。つまり、プロジェクトファイル設定部114は、PLC200において、固有情報リスト222に対応するハードウェアを検出した場合のみ、ユーザプログラム221が実行されるようにプロジェクトファイル120を設定する。したがって、ユーザプログラム実行プロテクト機能は、ユーザプログラム121の不正実行を防ぐ機能である。
【0043】
転送部115は、プロジェクトファイル120をPLC200に通信によって転送する。転送されたプロジェクトファイル120は、PLC200の記憶部220に、適切に配置されて記憶される。
【0044】
ユーザプログラム121は、ユーザ(装置ベンダー)が任意に編集することができる、PLC200の動作を制御するプログラムである。システム構成123は、システムを構成しているハードウェアの構成および設定、ならびにそれらの接続関係が記載されている。
【0045】
固有情報リスト124は、ユーザプログラム実行プロテクト機能によってユーザプログラム121のPLC200での実行を許可する固有情報210を記録したリストである。
【0046】
そのため、該固有情報リスト124にデータを追加することで、ユーザプログラム121のPLC200での実行が可能になるため、不正に固有情報リスト124を編集することはできないようになっている。すなわち、上述した登録完了フラグ125によって固有情報リスト124への追加登録の可否が管理されている。
【0047】
(PLC200の構成)
PLC200は、固有情報210と、記憶部220と、実行部230と、を備える。記憶部220は、ユーザプログラム221と、固有情報リスト222と、を記憶している。PLC200としては、装置を制御する制御装置または装置を制御するためのユニットであればよく、PLCに限定されず、例えばロボットコントローラ、画像処理コントローラなどであってもよい。
【0048】
固有情報210は、書き換え不能に記録されている、ハードウェアに紐づいた一意に特定できるハードウェアキー(情報)である。固有情報210としては、MACアドレス、シリアルナンバー、またはこれらを用いて生成されたハッシュ値などである。また、固有情報210は、これらに限定されず、その種類および記憶場所は限定されない。なお、本実施形態では、固有情報210はPLC200に書き換え不能に記録されているものとする。
【0049】
記憶部220は、転送部115によって、プロジェクトファイル120を転送する対象であり、PLC200を構成する部位である。ユーザプログラム221は、プロジェクトファイル120のユーザプログラム121をコピーしたものである。固有情報リスト222は、プロジェクトファイル120の固有情報リスト124をコピーしたものである。
【0050】
また、固有情報リスト222が記憶されている領域には、固有情報リスト222の中に、固有情報210が含まれているか否かを判断し、固有情報210が含まれている場合にのみ、ユーザプログラム221の実行を可能とする制御プログラムが含まれている。
【0051】
実行部230は、固有情報リスト222に登録されている固有情報に対応するハードウェアを検出(固有情報210を検出)した場合のみ、ユーザプログラム221を実行する。
【0052】
§3 動作例
(固有情報の登録処理)
図3は、開発装置100における、固有情報を固有情報リスト124に登録する処理の流れを示すフローチャートの一例である。
【0053】
固有情報取得部111は、登録完了フラグ125がセットされているか否かを判断する(S11)。登録完了フラグ125がセットされている場合(S11においてYes)は、処理を終了する。
【0054】
登録完了フラグ125がセットされていない場合(S11においてNo)は、S12に処理を進める。固有情報取得部111は、PLC200と通信を確立する(S12)。その後、固有情報取得部111は、PLC200の固有情報210を取得し(S13)、取得した固有情報を追加リストに記録する(S14)。
【0055】
固有情報取得部111は、ユーザからの指示入力に基づき、他に対象として追加するPLCがあるか否かを判断する(S15)。他に追加するPLCがある場合(S15においてYes)、S12に処理を戻す。他に追加するPLCがない場合(S15においてNo)、S16に処理を進める。
【0056】
固有情報登録部113は、追加リストにおける固有情報を固有情報リスト124に登録する(S16)。
【0057】
固有情報登録部113は、ユーザからの指示入力に基づき、対象とする固有情報を今後登録することがあるかを判断する(S17)。対象とする固有情報がある場合(S17においてYes)、処理を終了する。対象とする固有情報がない場合(S17においてNo)、プロジェクトファイル設定部114は、登録完了フラグ125をセットする(S18)。これ以降、固有情報を追加することができなくなる。その後、処理を終了する。
【0058】
(登録完了フラグ125のセット)
図4は、登録完了フラグ125をセットする際の表示内容710の一例である。表示内容710は、プロジェクトファイル設定部114において、登録完了フラグをセットする際に画面に表示される表示内容である。
【0059】
表示内容710は、固有情報を登録するハードウェア(ここではPLC200)を選択するコンボボックス711と、その固有情報を取得するボタン712と、既に固有情報を追加されているハードウェアの一覧を表示するリストビュー713と、ボタン714~717と、を備える。なお、コンボボックス711はコンボボックスでなくてもよく、コンボボックス711は、例えばPLCの構成図を表示し、その中から対象の機器を選択するボタン、と選択された機器の情報を示すテキストボックスであってもよい。つまり、コンボボックス711は固有情報を登録するハードウェアに関する情報を表示する部分であればよい。ボタン712を押すことによって、固有情報取得部111は通信によって自動的にPLC200の固有情報210を取得する。そのため、ユーザ入力を必要とせず、確実に登録することができる。
【0060】
リストビュー713には、既に登録されている固有情報のハードウェアに関する情報(例えば、PLC名称またはIPアドレス等)に加え、追加リストに追加してある固有情報のハードウェアに関する情報をも合わせて表示する。登録済みの固有情報に関する情報と追加リストの固有情報に関する情報との表示形態を異ならせることで、各ハードウェアの状態を明示的に示してもよい。
【0061】
ボタン714は、登録済みの「固有情報の削除」を行うボタンである。すなわち、既に追加された固有情報を削除することができる。なお、追加リストに入っている固有情報を追加しなくさせることもできる。
【0062】
ボタン715は、追加リストに入っている固有情報の固有情報リスト124への登録を「キャンセル」するボタンである。そのため、ボタン715を押すことによって、追加リストに入れて、固有情報リスト124に仮登録していた状態のハードウェアの登録をキャンセルすることができる。
【0063】
ボタン716は、追加リストに入っている固有情報を固有情報リスト124へ登録するボタンである。そのため、ボタン716を押すことによって、追加リストに入れている固有情報を固有情報リスト124に登録することができる。
【0064】
ボタン717は、固有情報リスト124への追加登録に対する「登録完了フラグのセット」をするボタンである。ボタン717を押すことによって、プロジェクトファイル設定部114は、登録完了フラグ125をセットし、これ以降、固有情報の追加をできなくする処理を行う。なお、登録完了フラグ125のセットを一度行うと、再度固有情報を追加できる状態にすることができないため、警告メッセージを表示してから、登録完了フラグ125をセットする。
【0065】
図5は、登録完了フラグ125をセットする際の警告メッセージ720の一例である。警告メッセージ720には、「登録完了フラグがセットされると、このプロジェクトに新たにハードウェアを追加することができません。宜しいですか?」などのように、再度固有情報を追加できなくなることを警告するメッセージが表示される。
【0066】
「No」と記載されたボタン722がユーザによって押された場合、プロジェクトファイル設定部114は登録完了フラグ125のセットを中止する。すなわち、この以降も固有情報の登録をすることができるままである。
【0067】
「Yes」と記載されたボタン721がユーザによって押された場合、プロジェクトファイル設定部114は、固有情報登録禁止部112に対して登録完了フラグ125をセットし、
図6のダイアログメッセージを表示する。
【0068】
図6は、登録完了フラグ125をセットしたことを示すメッセージ730である。
図6には、「登録完了フラグがセットされました。本プロジェクトは登録されたハードウェアでのみ動作します。」などのように、登録完了フラグ125がセットされ、ユーザプログラム実行プロテクト機能が有効化されたことを示すメッセージである。なお、メッセージ730には、「Close」と記載のボタン731があり、このボタン731がユーザによって押されることによって該メッセージが閉じられる。
【0069】
また、登録完了フラグ125をセットした場合、自動的に、ユーザプログラム実行プロテクト機能は有効化される。さらに、登録完了フラグ125をセットした以降であっても、固有情報リストに関する情報を確認する画面があってもよい。
【0070】
(ユーザプログラムの転送処理)
図7は、ユーザプログラム121の転送処理の動作例を示すフローチャートである。
【0071】
ユーザプログラム実行プロテクト機能が有効か否かを判断する(S21)。ユーザプログラム実行プロテクト機能が無効な場合(S21においてNo)、S24に処理を進める。
【0072】
なお、プロジェクトファイルを作成する際に、プロジェクトファイルの種類をユーザプログラム実行プロテクト機能に対応したものとする場合がある。この場合、ユーザプログラム実行プロテクト機能の有効・無効のフラグは存在せず、プロジェクトファイルの種類でもってS21の判断を行うことになる。
【0073】
ユーザプログラム実行プロテクト機能が有効な場合(S21においてYes)、転送部115は登録完了フラグ125がセットされているか否かを判断する(S22)。登録完了フラグ125がセットされていない場合(S22においてNo)、転送部115は、プロジェクトファイル120の転送を行わない(S23)。
【0074】
登録完了フラグ125がセットされている場合(S22においてYes)、転送部115は、プロジェクトファイル120の転送を行う(S24)。
【0075】
(ユーザプログラム221の実行)
図8は、ユーザプログラム221の実行処理の動作例を示すフローチャートである。
【0076】
ユーザプログラム実行プロテクト機能が有効か否かを判断する(S31)。ユーザプログラム実行プロテクト機能が無効な場合(S31においてNo)、S34に処理を進める。
【0077】
実行部230は、固有情報210を参照する(S32)。実行部230は、固有情報リスト222に、固有情報210が含まれているかを判断する(S33)。
【0078】
固有情報210が含まれていなかった場合(S33においてNo)、実行部230はユーザプログラム221の実行を不可能にする(S35)。
【0079】
固有情報210が含まれていた場合(S33においてYes)、実行部230はユーザプログラム221を実行する(S34)。
【0080】
§4 作用・効果
実行部230が、ユーザプログラム221の実行に際し、固有情報210が固有情報リスト222に含まれることを確認することで、ユーザプログラム221の不正利用を制限することができる。そのため、不正に流出したプロジェクトファイル120では、固有情報リスト222に登録された該ハードウェアを入手しない限り、該プロジェクトファイル120におけるユーザプログラム121は実行することができなくなる。
【0081】
また、複数のハードウェアの固有情報を単一のプロジェクトファイル120に登録することができるため、同一のプロジェクトファイルに関連づいた複数のハードウェアの保守・管理が容易になる。
【0082】
固有情報リスト124に対する固有情報210の登録に際し、登録完了フラグ125の状態を参照することによって、新規に追加しようとしている固有情報が不正利用を目的としたものか否かを判断することができる。そのため、不正な技術流出を防ぐことができ、甚大な損害を被ることを回避することができる。
【0083】
固有情報取得部111は、固有情報210をハードウェアから直接取得することで、正確な固有情報を登録することができ、確実で効率的に登録することができる。
【0084】
登録完了フラグ125が設定されていない際には、転送部115は、プロジェクトファイルをPLC200に転送しない。そのため、PLC200から吸い出したプロジェクトファイルは必ず登録完了フラグ125が設定されている状態になり、不正利用することができないようにすることができる。
【0085】
〔実施形態2〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0086】
図9は、実施形態2に係るシステム1aの要部の構成を示すブロック図である。実施形態2では、実施形態1とは異なり、システム1aは、外部記録媒体300を備える。また、PLC200aは、固有情報リスト222を備えず、代わりに、外部記録媒体300が固有情報リスト222を備える。
【0087】
(外部記録媒体300)
外部記録媒体300は、ユーザプログラム221を実行する権限を備えるか否かを示す情報を有するUSBメモリなどの記憶媒体である。開発装置100に外部記録媒体300を接続することで、転送部115によって、外部記録媒体300に固有情報リスト222を吸い出すことができる。
【0088】
実行部230は、外部記録媒体300に接続し、固有情報リスト222を取得し、該固有情報リスト222にPLC200aの固有情報210が含まれるか否かを判断する。実行部230は、固有情報210が含まれていた場合のみ、ユーザプログラム221を実行することができる。
【0089】
実施形態2では、外部記録媒体300を交換することで、固有情報リスト124の構成を変更することができる。そのために、PLC200aが壊れた場合であっても、新しいPLC200aの固有情報210を登録した外部記録媒体300を接続することで、ユーザプログラム221を実行することができる利点がある。
【0090】
なお、外部記録媒体300は、異なるプロジェクトファイル120では動作しないように、プロジェクトファイルごとの固有のキーを記憶していてもよい。そのため、該固有のキーでプロジェクトファイルの認証を行い、一致しなかった場合は、ユーザプログラムの実行を禁止してもよい。
【0091】
〔実施形態3〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0092】
図10は、実施形態3に係るシステム1bの要部の構成を示すブロック図である。実施形態3では、実施形態1とは異なり、システム1bは、識別装置400を備える。また、PLC200bは、固有情報210を備えず、代わりに、識別装置400が固有情報210を備える。
【0093】
(識別装置400)
識別装置400は、固有のハードウェアキーが記憶された書き換え不能な記憶媒体、いわゆるUSBドングルである。開発装置100に識別装置400を接続することで、固有情報取得部111によって固有情報210を取得し、固有情報登録部113によって固有情報リスト124に固有情報210を追加登録する。
【0094】
PLC200bは、接続されている識別装置400から固有情報210を取得し、固有情報リスト222の中に含まれるかを判断する。固有情報210が固有情報リスト222の中に含まれる場合、ユーザプログラム221を実行することができる。
【0095】
実施形態3では、PLC200bに固有情報が含まれていなくてよい。そのために、PLC200bが壊れた場合であっても、別のPLCに同じ識別装置400を接続することで、その別のPLCでユーザプログラム221を実行することができる利点がある。
【0096】
〔実施形態4〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0097】
図11は、実施形態4に係るシステム1cの要部の構成を示すブロック図である。実施形態4では、実施形態1とは異なり、システム1cは、サーバ500を備える。また、開発装置100cは、登録完了フラグ125および固有情報リスト124を備えず、PLC200cは固有情報リスト222を備えない。
【0098】
(サーバ500)
サーバ500は、ネットワーク経由で設備の動作許可を管理する、いわゆるライセンスサーバである。プロジェクトファイル設定部114cは、サーバ500と通信し、固有情報リスト124の更新および固有情報登録禁止部112の登録完了フラグ125の管理を行う。また、PLC200cは、ユーザプログラム221の実行時に、サーバ500に固有情報210で認証を行い、認証が成立した際にだけ、ユーザプログラム221の実行を許可する。
【0099】
実施形態4では、固有情報リスト124および登録完了フラグ125に関する処理がサーバ500にまとまっている。そのため、設備が後から増えていく工場などにおいて、同一のプロジェクトファイル120のまま、追加された設備でも動作させることができる。そのため、スケーラビリティが高い工場を構築することができる。また、同一のプロジェクトファイル120を採用した設備に対してまとめてユーザプログラム221をアップデートする機能などを備えることができる利点がある。
【0100】
〔実施形態5〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0101】
図12は、実施形態5に係るシステム1dの要部の構成を示すブロック図である。実施形態5では、実施形態1と異なり、開発装置100dは、転送部115に代えて、転送部115dを備える。また、PLC200dは固有情報リスト222を備えない。
【0102】
転送部115dは、PLC200dの固有情報210を参照し、固有情報210が固有情報リスト124に含まれるかを確認した上で、含まれる場合のみ、ユーザプログラム221の書き込みを行う。そのため、不正にコピーされたプロジェクトファイル120では、ハードウェア側(PLC200d)の固有情報210が一致しないためにユーザプログラム121の不正利用を防ぐことができる。また、PLC200d側に固有情報リストを有さなくてよい利点がある。
【0103】
なお、開発装置の転送部115dによるユーザプログラム121の書き込みだけではなく、フラッシュメモリを用いた書き込みに対応していてもよい。この場合、書き込みに際し、フラッシュメモリに記録された固有情報リストでもって、固有情報210を確認し、固有情報210が固有情報リストに含まれた場合のみユーザプログラムを更新する。多数の設備を立ち上げる際に、開発装置100を個別に接続する必要がなくなり、ユーザプログラムの更新作業が容易になる利点がある。
【0104】
〔ソフトウェアによる実現例〕
開発装置100(以下、「装置」と呼ぶ)の機能は、当該装置としてコンピュータを機能させるためのプログラムであって、当該装置の各制御ブロック(特に制御部110に含まれる各部)としてコンピュータを機能させるためのプログラムにより実現することができる。
【0105】
この場合、上記装置は、上記プログラムを実行するためのハードウェアとして、少なくとも1つの制御装置(例えばプロセッサ)と少なくとも1つの記憶装置(例えばメモリ)を有するコンピュータを備えている。この制御装置と記憶装置により上記プログラムを実行することにより、上記各実施形態で説明した各機能が実現される。
【0106】
上記プログラムは、一時的ではなく、コンピュータ読み取り可能な、1または複数の記録媒体に記録されていてもよい。この記録媒体は、上記装置が備えていてもよいし、備えていなくてもよい。後者の場合、上記プログラムは、有線または無線の任意の伝送媒体を介して上記装置に供給されてもよい。
【0107】
また、上記各制御ブロックの機能の一部または全部は、論理回路により実現することも可能である。例えば、上記各制御ブロックとして機能する論理回路が形成された集積回路も本発明の範疇に含まれる。この他にも、例えば量子コンピュータにより上記各制御ブロックの機能を実現することも可能である。
【0108】
〔付記事項〕
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0109】
1、1a、1b、1c、1d システム
100、100c、100d 開発装置
110 制御部
111 固有情報取得部
112 固有情報登録禁止部
113 固有情報登録部
114、114c プロジェクトファイル設定部
115、115d 転送部
120 プロジェクトファイル
121、221 ユーザプログラム
122 設定情報
123 システム構成
124、222 固有情報リスト
125 登録完了フラグ
200、200-1~3、200a~d PLC
210、210-1、210-2、210-3 固有情報
220 記憶部
230 実行部
300 外部記録媒体
400 識別装置
500 サーバ