説明

プログラマブルコントローラシステム、ツール装置、ツール用プログラム及び記録媒体並びにプログラマブルコントローラ

【課題】プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止するための利便性を向上させることができるプログラマブルコントローラシステム、ツール装置、ツール用プログラム及び記録媒体並びにプログラマブルコントローラを提供する。
【解決手段】プログラマブルコントローラシステムにおいて、ツール装置は、第1ユーザプログラム実行用ID10をCPUユニット110に設けられた第2不揮発性メモリ113に設定し、第2ユーザプログラム実行用IDをツール装置に設けられたプロジェクトPRに設定し、CPUユニット110は、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用IDとが一致しているか否かを照合し、不一致となった場合にユーザプログラムYPの実行を禁止する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブルコントローラと通信し、プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止する機能を有するツール装置を備えたプログラマブルコントローラシステム、ツール用プログラム、ツール装置及び記録媒体並びにプログラマブルコントローラに関する。
【背景技術】
【0002】
一般に、プログラマブルコントローラ(以下、「PLC」ということがある)は、PLCメーカーから出荷されたのち、ベンダーにより自動包装機や射出成型機などの各種産業用機械に組み込まれた状態でエンドユーザの工場に設置されたり、直接エンドユーザによりエンドユーザの工場の設備に組み込まれたりする。
【0003】
このうち、PLCがベンダーにより産業用機械に組み込まれた状態でエンドユーザの工場に設置される場合、ベンダーは、PLCによって制御動作する産業用機械を所望の動作仕様にするために、ユーザプログラム(制御プログラム)を作成し、作成したユーザプログラムをPLCに組み込む。
【0004】
このとき、ベンダーは、作成されたユーザプログラムが組み込まれたPLCの提供とは別に、作成されたユーザプログラムそれ自体も、例えばCD−ROM等の記録媒体に格納した形態で、参照用ユーザプログラムとして、エンドユーザに対して提供するのが通例である。
【0005】
こうしてベンダーから提供される参照用ユーザプログラムは、エンドユーザの側におけるプログラムの軽微なカスタマイズやデータ値の参照(I/Oモニタ)等に供される。そして、プログラムの軽微なカスタマイズやデータ値の参照(I/Oモニタ)等を目的としてエンドユーザに提供される参照用ユーザプログラムの内容は、エンドユーザ側における理解度を高めるべくコメントやラベル等が付されていることを除き、PLCに組み込まれている実稼働用ユーザプログラムと実質的に変わりはない。
【0006】
そのため、エンドユーザの側で、ユーザプログラムの組み込まれていない空のPLCを用意して、これに前記の参照用ユーザプログラムを組み込めば、労せずして、実稼働可能なPLCを何台でも無断複製することが可能となり、ベンダーの側において多大なる損害を被る虞がある。
【0007】
また、このような参照用ユーザプログラムが本来のエンドユーザ以外の他人の手に渡り、実稼働可能なPLCの同様な無断複製が行われれば、そのユーザプログラムに含まれる製造技術上のノウハウ等についても漏洩してしまい、技術流出により甚大なる被害を被る虞もある。
【0008】
この点に関し、特許文献1には、PLCのメモリ上に書き込まれた照合基準となる任意のハードウェアIDと、ユーザプログラムのオペランドで指定される照合対象となる任意のハードウェアIDとの照合を行うプログラミング方法が開示されている。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2009−70144号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、特許文献1に記載のPLCにおけるプログラミング方法では、ユーザがハードウェアIDの照合を行うためにユーザプログラムを作成しなければならず、プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止するための利便性が良くない。
【0011】
そこで、本発明は、プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止するための利便性を向上させることができるプログラマブルコントローラシステム、ツール装置、ツール用プログラム及び記録媒体並びにプログラマブルコントローラを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明は、前記課題を解決するために、次のプログラマブルコントローラシステム、ツール装置、ツール用プログラム及び記録媒体並びにプログラマブルコントローラを提供する。
【0013】
(1)プログラマブルコントローラシステム
プログラマブルコントローラと、前記プログラマブルコントローラと通信し、前記プログラマブルコントローラ上でユーザプログラムを実行させるためのツール装置とを備えたプログラマブルコントローラシステムであって、前記ツール装置は、前記ユーザプログラムの実行のために照合される第1ユーザプログラム実行用IDの入力情報を受け付ける第1受け付け手段と、前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信する送信手段と、前記ユーザプログラムの実行のために照合される第2ユーザプログラム実行用IDの入力情報を受け付ける第2受け付け手段と、前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定する第1設定手段とを備え、前記第2ユーザプログラム実行用IDが一旦設定されて以降は前記第2ユーザプログラム実行用IDを設定不能かつ消去不能な構成とされており、前記第1ユーザプログラム実行用IDを表示させる機能、及び、前記第2ユーザプログラム実行用IDを表示させる機能を何れも持たない構成とされており、前記プログラマブルコントローラは、前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する第2設定手段と、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが一致しているか否かを照合する照合手段と、前記照合手段にて照合した照合結果に基づいて、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段とを備え、前記第1ユーザプログラム実行用IDを設定可能かつ消去可能な構成とされていることを特徴とするプログラマブルコントローラシステム。
【0014】
(2)ツール装置
前記本発明に係るプログラマブルコントローラシステムに備えられるツール装置であって、前記ユーザプログラムの実行のために照合される第1ユーザプログラム実行用IDの入力情報を受け付ける第1受け付け手段と、前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信する送信手段と、前記ユーザプログラムの実行のために照合される第2ユーザプログラム実行用IDの入力情報を受け付ける第2受け付け手段と、前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定する第1設定手段とを備え、前記第2ユーザプログラム実行用IDが一旦設定されて以降は前記第2ユーザプログラム実行用IDを設定不能かつ消去不能な構成とされており、前記第1ユーザプログラム実行用IDを表示させる機能、及び、前記第2ユーザプログラム実行用IDを表示させる機能を何れも持たない構成とされていることを特徴とするツール装置。
【0015】
(3)ツール用プログラム
前記本発明に係るツール装置におけるにおける制御部を、前記第1受け付け手段と、前記送信手段と、前記第2受け付け手段と、前記第1設定手段とを含む手段として機能させるためのツール用プログラム。
【0016】
(4)記録媒体
前記本発明に係るツール用プログラムを記録したコンピュータ読み取り可能な記録媒体。
【0017】
(5)プログラマブルコントローラ
前記本発明に係るプログラマブルコントローラシステムに備えられるプログラマブルコントローラであって、前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する第2設定手段と、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが一致しているか否かを照合する照合手段と、前記照合手段にて照合した照合結果に基づいて、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段とを備え、前記第1ユーザプログラム実行用IDを設定可能かつ消去可能な構成とされていることを特徴とするプログラマブルコントローラ。
【0018】
なお、言うまでもないが、本発明にいう前記「ID」は「identification」の略であり、識別コードを意味する。
【0019】
本発明によれば、前記第1受け付け手段によって前記第1ユーザプログラム実行用IDの入力情報を受け付け、前記送信手段によって前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、前記第2設定手段によって前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定することに加えて、前記第2受け付け手段によって前記ユーザプログラムの実行のために照合される前記第2ユーザプログラム実行用IDの入力情報を受け付け、前記第1設定手段によって前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定するので、ユーザがIDの照合を行うためにユーザプログラムを作成しなくても、IDを入力するといった簡単な操作によって前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止することができ、これにより、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止するための利便性を向上させることが可能となる。
【0020】
本発明において、前記ツール装置は、複数の前記ユーザプログラムの情報を1つのプロジェクトとして管理する構成とされており、前記第1設定手段は、前記プロジェクトに対して前記第2ユーザプログラム実行用IDを設定する態様を例示できる。
【0021】
この特定事項では、前記ユーザプログラムが前記プロジェクトとして管理され、前記第1設定手段によって前記第2ユーザプログラム実行用IDを前記プロジェクトに設定するので、前記第2ユーザプログラム実行用IDと前記ユーザプログラムとの関連付けを容易に行うことができる。
【0022】
本発明において、前記ツール装置は、前記第1受け付け手段にて受け付けた前記第1ユーザプログラム実行用ID、及び、前記第2受け付け手段にて受け付けた前記第2ユーザプログラム実行用IDを暗号化する暗号化手段を備え、前記送信手段は、前記暗号化手段にて暗号化された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、前記第1設定手段は、前記暗号化手段にて暗号化された前記第2ユーザプログラム実行用IDを前記ツール装置に設定し、前記第2設定手段は、前記暗号化手段にて暗号化されて前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する態様を例示できる。
【0023】
この特定事項では、前記暗号化手段によって前記第1受け付け手段にて受け付けた前記第1ユーザプログラム実行用ID、及び、前記第2受け付け手段にて受け付けた前記第2ユーザプログラム実行用IDを暗号化するので、万一、前記第1ユーザプログラム実行用ID及び/又は前記第2ユーザプログラム実行用IDの情報が読み出されて盗まれたとしても前記第1ユーザプログラム実行用ID及び前記第2ユーザプログラム実行用IDが暗号化されたものであるため、前記第1ユーザプログラム実行用ID及び/又は前記第2ユーザプログラム実行用IDを本来のユーザ以外の他人に知られることが困難となる。これにより、前記第1ユーザプログラム実行用ID及び/又は前記第2ユーザプログラム実行用IDの外部への漏洩に対するセキュリティを向上させることが可能となる。
【0024】
本発明において、前記送信手段は、前記第2ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、前記プログラマブルコントローラは、前記送信手段にて前記プログラマブルコントローラに送信された前記第2ユーザプログラム実行用IDを該プログラマブルコントローラに格納する格納制御手段を備える態様を例示できる。
【0025】
この特定事項では、前記格納制御手段によって前記第2ユーザプログラム実行用IDを、前記プログラマブルコントローラに格納するので、前記照合手段による照合毎に前記ツール装置から前記第2ユーザプログラム実行用IDを取得しなくても、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを容易に照合することが可能となる。
【0026】
本発明において、前記ツール装置は、前記第2ユーザプログラム実行用IDを前記ユーザプログラムに付加する付加手段を備え、前記送信手段は、前記付加手段にて前記第2ユーザプログラム実行用IDを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信し、前記格納制御手段は、前記付加手段にて前記第2ユーザプログラム実行用IDが付加されて前記送信手段にて前記プログラマブルコントローラに送信された前記ユーザプログラムを前記プログラマブルコントローラに格納する態様を例示できる。
【0027】
この特定事項では、前記付加手段によって前記第2ユーザプログラム実行用IDを前記ユーザプログラムに付加し、前記格納制御手段によって前記付加手段にて前記第2ユーザプログラム実行用IDを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信して前記プログラマブルコントローラに格納するので、前記プログラマブルコントローラにおいて前記第2ユーザプログラム実行用IDの存在を分かり難くすることが可能となる。
【0028】
本発明において、前記プログラマブルコントローラは、前記ユーザプログラムを該プログラマブルコントローラに備えられた不揮発性メモリに格納する構成とされており、前記照合手段は、前記不揮発性メモリに格納されている前記ユーザプログラムを、前記プログラマブルコントローラに備えられて前記ユーザプログラムを記憶する揮発性メモリに格納するときに、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを照合する態様を例示できる。
【0029】
この特定事項では、前記照合手段によって前記不揮発性メモリに格納されている前記ユーザプログラムを前記揮発性メモリに格納するときに、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを照合するので、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを、前記ユーザプログラムの実行に先だって確実に照合することが可能となる。
【0030】
本発明において、前記プログラマブルコントローラは、前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除する解除手段を備える態様を例示できる。
【0031】
この特定事項では、前記実行禁止手段によって前記ユーザプログラムが実行禁止状態となったときには、前記解除手段によって前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除することができる。これにより、本来のユーザ以外の他人による前記プログラマブルコントローラへの前記第1ユーザプログラム実行用IDの不正設定労力を増やすことができ、ひいては他人による不正行為を抑止することが可能となる。
【発明の効果】
【0032】
以上説明したように、本発明によると、前記ツール装置において、前記第2受け付け手段によって前記ユーザプログラムの実行のために照合される前記第2ユーザプログラム実行用IDの入力情報を受け付け、前記第1設定手段によって前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定するので、ユーザがIDの照合を行うためにユーザプログラムを作成しなくても、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止することができ、これにより、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止するための利便性を向上させることができる。
【図面の簡単な説明】
【0033】
【図1】プログラマブルコントローラシステムにおけるツール装置及びそれと通信するプログラマブルコントローラを概念的に示す概略構成図である。
【図2】PLCにおけるCPUユニットのハードウェア構成を示すブロック図である。
【図3】マイクロプロセッサにより実行されるPLC全体の処理例を示すフローチャートである。
【図4】PLCと通信するツール装置の概略構成を示すシステムブロック図である。
【図5】図1に示すツール装置における表示装置に表示された第1ユーザプログラム実行用ID設定画面を示す平面図である。
【図6】第1ユーザプログラム実行用IDの受け付け送信処理の一例を示すフローチャートである。
【図7】図1に示すツール装置における表示装置に表示された第2ユーザプログラム実行用ID設定画面を示す平面図である。
【図8】プロジェクトのファイルのデータ構造を示す模式図である。
【図9】第2ユーザプログラム実行用IDの設定処理の一例を示すフローチャートである。
【図10】ユーザプログラムに付加された第2ユーザプログラム実行用IDのデータ構造を示す模式図である。
【図11】第1ユーザプログラム実行用ID及び第2ユーザプログラム実行用IDの一致及び不一致の条件の一例を示す表である。
【図12】第1ユーザプログラム実行用IDと第2ユーザプログラム実行用IDとを照合する照合処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0034】
以下、本発明の実施の形態について添付図面を参照しつつ説明する。なお、以下の実施の形態は、本発明を具体化した例であって、本発明の技術的範囲を限定する性格のものではない。
【0035】
[プログラマブルコントローラシステムの全体構成]
図1は、プログラマブルコントローラシステム300におけるツール装置200及びそれと通信するプログラマブルコントローラ100を概念的に示す概略構成図である。
【0036】
図1に示すように、プログラマブルコントローラシステム300は、プログラマブルコントローラ(以下、「PLC」という)100とツール装置200(ここではコンピュータ)とを備えている。
【0037】
プログラマブルコントローラシステム300において、PLC100は、入出力ユニット130で入力した信号をCPUユニット110の入出力メモリ117(後述する図2参照)に取り込み(INリフレッシュ)、予め登録されたラダー言語等のPLC制御用のプログラム記述言語で作成されたユーザプログラムYP(図2参照)に基づき論理演算を行い(演算実行)、その演算実行結果を入出力メモリ117に書き込んで入出力ユニット130に送り出し(OUTリフレッシュ)、その後、いわゆる周辺サービス処理を行うことをサイクリックに繰り返し処理する。ツール装置200は、本実施の形態では、ユーザプログラム開発支援装置(例えば、CX−Progammer:出願人の製品)とされており、PLC100に通信ケーブルCBを介して接続され、ユーザプログラムYPをダウンロードし、PLC100におけるCPUユニット110のバックアップメモリ114(図2参照)やユーザメモリ116(図2参照)に格納させる。また、ツール装置200は、PLC100に格納されているユーザプログラムYPを修正等する場合には、PLC100に格納されているユーザプログラムYPをアップロードし、必要な修正をした後、修正後のユーザプログラムYPをPLC100に再度ダウンロードする。なお、図1において、符号210,211,212,230,231は、それぞれ、操作入力部、キーボード、ポインティングデバイス、表示出力部及び表示装置を示している。
【0038】
[PLCのハードウェア構成]
PLC100は、CPU(Central Processing Unit)部分(入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを司る部分)、入出力回路部分、通信回路部分、各種高機能回路部分等々を単一のハウジングに収容してなるオールインワンタイプのものと、それらの部分をそれぞれ専用のユニットハウジングに収容してなるビルディングブロックタイプのものとが知られている。本発明はいずれのタイプのPLCにも適用できるが、本実施の形態では、ビルディングブロックタイプのものを例にとって以下に説明する。また、本発明は、同時に一つのタスクしか実行できないシングルタスクによる処理の他、複数のタスクを並行して実行するマルチタスクによる処理にも適用することができる。
【0039】
本実施の形態では、PLC100は、CPUユニット110、通信ユニット120、複数の入出力ユニット130及び電源ユニット140を含んで構成されている。
【0040】
CPUユニット110は、PLC100の全体を統括制御するものであり、後ほど図3に示すフローチャートを参照して説明するように、入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを実行するように構成される。
【0041】
通信ユニット120は、LAN(Local Area Network)等のネットワークを介してツール装置200との間における通信を制御する他、図示していないが、PLC100に対して他のPLC又はリモートIOターミナル等が接続されている場合には、それらとの間における通信制御にも供される。
【0042】
入出力ユニット(I/Oユニット)130は、外部入出力回路及び図示しない端子台を備えており、この端子台には図示しない光電スイッチ、リミットスイッチ、マイクロスイッチ等々のような各種の外部入力機器とリレー、ランプ、ソレノイド等の各種外部出力機器が配線される。
【0043】
図2は、PLC100におけるCPUユニット110のハードウェア構成を示すブロック図である。
【0044】
図2に示すように、CPUユニット110は、マイクロプロセッサ(MPU)111、システムメモリ(SROM)112、ID格納用メモリ(IDROM)113、バックアップメモリ(BROM)114、ワークメモリ(WRAM)115、ユーザメモリ(URAM)116及び入出力メモリ(IORAM)117を備えている。
【0045】
マイクロプロセッサ111は、CPUユニット110の全体を統括制御するものであり、システムメモリ112に格納されたシステムプログラムSPを実行することによって、CPUユニット110に必要な各種の機能を実現するように構成されている。
【0046】
システムメモリ112は、この例ではフラッシュメモリなどの不揮発性メモリで構成されており、先に述べたように、マイクロプロセッサ111で実行される各種のシステムプログラムSPが格納されている。
【0047】
ID格納用メモリ113は、この例では電気的に書き換え可能なEPROM(Electrically Erasable Programmable Read Only Memory)などの書き換え可能な不揮発性メモリで構成されている。ID格納用メモリ113は、図示しない制御基板に着脱不能に搭載(直付け)されており、後述する第1ユーザプログラム実行用ID10が書き込まれる。第1ユーザプログラム実行用ID10は、後述するように、図1に示すツール装置200からの入力操作によって、ID格納用メモリ113に対して書き換え可能かつ消去可能に設定される。
【0048】
バックアップメモリ114は、フラッシュメモリなどの不揮発性メモリで構成され、電源オフ時にはバッテリが存在しない状態でも内容を保持するように構成されている。バックアップメモリ114には、PLC100の制御仕様に対応したユーザプログラムYPが、所定のプログラム言語(例えば、ラダー言語など)にて作成され、マイクロプロセッサ111で実行可能なオブジェクトコードに変換されて格納される。
【0049】
ワークメモリ115は、マイクロプロセッサ111がシステムメモリ112から読み出されたシステムプログラムSPを実行する際のワークエリアとして機能するものであり、書き換え可能なRAMで構成されている。
【0050】
ユーザメモリ116は、ユーザプログラムYPの実行用メモリとされている。ユーザメモリ116は、揮発性メモリとして作用するスタティックRAM(Static Random Access Memory)で構成されており、電源オフ時には内容を保持することができない。ユーザメモリ116には、電源が投入されたときに、バックアップメモリ114から転送されたユーザプログラムYPが格納される。
【0051】
入出力メモリ117は、マイクロプロセッサ111がユーザメモリ116から読み出されたユーザプログラムYPを実行する際に参照するものであり、その内部には、IOバス118を介して接続された入出力ユニット130(図1参照)の入出力端子のデータと対応する入出力データエリア、内部演算のみに使用される補助リレーエリア、演算途中で使用される各種の設定データ、カウントデータ等を格納するデータエリアの他に、特殊補助リレーエリアが設けられている。なお、図2において、符号113aは記憶領域を示している。また、図2における第2設定手段Qb1、格納制御手段Qb2、照合手段Qb3、実行禁止手段Qb4及び解除手段Qb5については後ほど説明する。
【0052】
[PLC全体の処理例]
次に、マイクロプロセッサ111により実行されるPLC100全体の処理について図3を参照しながら以下に説明する。
【0053】
図3は、マイクロプロセッサ111により実行されるPLC100全体の処理例を示すフローチャートである。
【0054】
図3に示すように、マイクロプロセッサ111は、電源投入(Power On)により処理が開始されると、まず、後述するIDの照合処理(処理S40)を実行した後、各種のフラグやレジスタ類の初期設定を行うために初期化処理(処理S1)を実行する。IDの照合処理S40の詳細は、後ほど図12を参照しながら説明する。
【0055】
続いて、マイクロプロセッサ111は、それ以降の各種動作モードに共通な処理として共通処理(処理S2)を実行する。共通処理(処理S2)においては、IOバス118の導通チェック、各ユニットの接続チェック等々の各種の故障診断処理などを実行する。
【0056】
続いて、マイクロプロセッサ111は、外部のモード設定スイッチや入出力メモリ117の所定フラグなどを参照することによって、その時点の動作モード設定の読み込みを行う(処理S3)。
【0057】
続いて、マイクロプロセッサ111は、読み込んだモード設定データと各モードに対応するデータとを照合することによって、動作モードの判定を行う(処理S4)。ここで、動作モードが「運転」モードであると判定すると(処理S4:Yes)、入出力更新処理(処理S5)を実行する。
【0058】
マイクロプロセッサ111は、入出力更新処理(処理S5)において、先に説明した入出力メモリ117の入力データを入出力ユニット130の入力端子の実データで更新する入力更新処理と、入出力メモリ117の出力データによって、入出力ユニット130の出力端子のデータを更新する出力更新処理とを実行する。
【0059】
続いて、マイクロプロセッサ111は、ユーザプログラム実行処理(処理S6)を実行する。ユーザプログラム実行処理(処理S6)においては、ユーザメモリ116からユーザプログラムYPを構成する各命令を順次に読み出し、読み出した命令を、入出力メモリ117の入出力データを参照して実行し、その実行結果に基づいて入出力データの書き換えを行う各命令対応処理を実行する。
【0060】
続いて、マイクロプロセッサ111は、周辺サービス処理(処理S7)を実行する。周辺サービス処理(処理S7)においては、ツール装置200と適宜やり取りを行うことによって、ツール装置200から到来するリクエストに対応した様々な処理を実行する。すなわち、ツール装置200がプログラムアップロードを要求するのであれば、指定された範囲のユーザプログラムYPを読み出して、これをツール装置200に対して送信する。また、ツール装置200からの要求が、プログラムダウンロードを要求するものであれば、ツール装置200から送られてくるユーザプログラムYPを受信して、これをバックアップメモリ114やユーザメモリ116へと書き込む。その他、周辺サービス処理(処理S7)においては、PLC100に対して1若しくは2以上のリモートIOターミナルが接続されていたり、或いは、PLC100が他の1又は2以上のPLCと接続されていたりするような場合には、それらのリモート機器との間におけるデータのやり取りを行う。周辺サービス処理(処理S7)の後、共通処理(処理S2)に進む。
【0061】
マイクロプロセッサ111は、動作モードが「プログラムモード」であると判定すると(処理S4:No)、処理S8へと進んで、プログラムモードに対応したPLC100のシステム設定などを転送したり、ユーザプログラムYPのPLC100へのダウンロードやPLC100からのアップロードを行ったり、入出力テーブルを作成したりする処理を実行した後、ユーザプログラムYPの転送があるか否かを判断する(処理S9)。処理S9でユーザプログラムYPの転送がないと判断した場合には(処理S9:No)、処理S3に移行する一方、処理S9でユーザプログラムYPの転送があると判断した場合には(処理S9:Yes)、IDの照合処理(処理S40)を実行する(図12参照)。以後、以上説明した一連の処理(処理S3〜S9,S40)を繰り返し実行することによって、PLC100としての各種の機能を実現する。
【0062】
[ツール装置のハードウェア構成]
ツール装置200は、既述したように、本実施の形態では、ユーザプログラムYPの作成、編集、PLC100へのダウンロード、PLC100からのアップロード、その他各種のパラメータ設定又は変更などに供されるユーザプログラム開発支援装置とされている。
【0063】
ツール装置200を用いてユーザプログラムYPを作成する場合、複数のユーザプログラムYPからなるユーザプログラム全体の情報を1つのプロジェクトPR(後述する図4及び図8参照)として管理する構成とされている。一般に、この種のツール装置200は、パーソナルコンピュータ等の通信機能を備えたコンピュータに所定のプログラムを格納(インストール)することにより構成される。
【0064】
ツール装置200は、PLC100と通信し、PLC100上で実行させるユーザプログラムYPの無断利用を防止する機能を有している。
【0065】
図4は、PLC100と通信するツール装置200の概略構成を示すシステムブロック図である。
【0066】
図4に示すように、ツール装置200は、操作入力部210(図1も参照)と、記憶部220と、表示出力部230(図1も参照)と、通信部240と、制御部250と、読み取り部260とを備えている。
【0067】
操作入力部210は、キーボード211やポインティングデバイス212等の入力装置を備えており、制御部250の入力系に接続されている。操作入力部210は、ユーザによる入力操作を受け付けて入力された操作情報を制御部250に送信する構成とされている。
【0068】
記憶部220は、ROM221、RAM222、フラッシュメモリ等のデータ書き換え可能な不揮発性メモリ223等の記憶装置及びこれも不揮発性メモリとして作用するハードディスク装置224等の大容量記憶装置を備えている。なお、ハードディスク装置224には、後述するツール用プログラムP(無断利用防止用プログラムを含むプログラム)が記録されたCD(Compact Disc)−ROM等の記録媒体Mを読み出す読み取り部260によって読み出されたツール用プログラムPを含むソフトウェアが予め格納(インストール)されている。また、記録媒体Mは、USB(Universal Serial Bus)メモリやSD(Secure Digital)メモリカードであってもよい。
【0069】
表示出力部230は、液晶表示パネルやEL(Electro Luminescence)表示パネル等の表示装置231を備えており、制御部250の出力系に接続されている。表示装置231は、制御部250からの出力表示情報を表示画面に表示する構成とされている。なお、表示装置231における表示画面には、タッチパネル等のタッチ入力操作装置が設けられていてもよい。タッチ入力操作装置は、表示画面に表示される画面の表示状態に応じた入力操作を行うことができ、操作入力部として作用する構成とされる。
【0070】
通信部240は、インターフェイス部241(具体的にはLANポート)を有しており、通信ケーブルCB(具体的にはLANケーブル)を介して制御部250とPLC100における通信ユニット120(図1参照)との間でデータの通信ができるようになっている。なお、PLC100及びツール装置200は、例えば、USBポートやRS232Cなどのシリアルインターフェイスを介して相互に接続されるようになっていてもよい。
【0071】
制御部250は、CPU等の演算処理装置で構成されており、記憶部220のハードディスク装置224に予め格納されたツール用プログラムP等のソフトウェアプログラムを記憶部220のRAM222上にロードして実行することにより、各種の処理を行うようになっている。記憶部220のRAM222は、制御部250に対して作業用のワークエリアを提供する。なお、図4において、符号20,224aは、それぞれ、第2ユーザプログラム実行用ID及び記憶領域を示している。
【0072】
[ツール装置のソフトウェア構成]
そして、ツール装置200における制御部250は、第1受け付け手段Qa1、送信手段Qa2、第2受け付け手段Qa3及び第1設定手段Qa4として機能する。すなわち、ツール用プログラムPは、ユーザプログラム開発支援用プログラムに組み込まれており、第1受け付け手段Qa1に対応する第1受け付けステップと、送信手段Qa2に対応する送信ステップと、第2受け付け手段Qa3に対応する第2受け付けステップと、第1設定手段Qa4に対応する第1設定ステップとを制御部250に実行させる。なお、図4における付加手段Qa5及び暗号化手段Qa6については後ほど説明する。
【0073】
(第1受け付けステップ)
第1受け付けステップでは、ユーザプログラムYPの実行のために照合される第1ユーザプログラム実行用ID10の入力情報を受け付ける。なお、本実施の形態において、第1受け付けステップでは、ユーザ(通常はベンダー)のセキュリティレベル(ユーザ認証されたセキュリティレベル)に応じて入力操作を制限するようになっている。
【0074】
図5は、図1に示すツール装置200における表示装置231に表示された第1ユーザプログラム実行用ID設定画面231aを示す平面図である。
【0075】
図5に示すように、表示装置231における第1ユーザプログラム実行用ID設定画面231aには、操作権限を持ったユーザによって、第1ユーザプログラム実行用ID10を入力するための入力欄IP1と、第1ユーザプログラム実行用ID10の入力操作を確定するOKボタンBT1と、第1ユーザプログラム実行用ID設定画面231aを終了するキャンセルボタンBT2とが第1ユーザプログラム実行用ID設定画面231aに表示されるようになっている。具体的には、入力欄IP1には、8〜32文字の半角英数字が入力される。
【0076】
第1ユーザプログラム実行用ID設定画面231aにおいて、ユーザによるキーボード211(図1参照)の入力操作によって入力欄IP1に第1ユーザプログラム実行用ID10が入力され、例えば、ユーザによるポインティングデバイス212(図1参照)の操作によってカーソルJを移動させてOKボタンBT3が操作(クリック)されることで、入力欄IP1に入力された第1ユーザプログラム実行用ID10を制御部250に送信する。一方、キャンセルボタンBT2が操作(クリック)されることで、第1ユーザプログラム実行用ID設定画面231aを終了するようになっている。なお、第1ユーザプログラム実行用ID設定画面231aにおけるボタン操作はタッチパネルによる操作であってもよい。
【0077】
(送信ステップ)
送信ステップでは、第1受け付けステップにて受け付けた第1ユーザプログラム実行用ID10を通信部240(図4参照)から通信ケーブルCBを経てPLC100に送信する。
【0078】
(第1ユーザプログラム実行用IDの受け付け送信処理例)
次に、第1ユーザプログラム実行用ID10の受け付け送信処理の一例について図6を参照しながら以下に説明する。図6は、第1ユーザプログラム実行用ID10の受け付け処理の一例を示すフローチャートである。なお、第1ユーザプログラム実行用ID10の受け付け送信処理は、プログラムモードで行う。
【0079】
図6に示す受け付け送信処理例のフローチャートでは、まず、制御部250は、第1ユーザプログラム実行用ID10の入力操作(図5参照)を受け付け(処理S11)、キャンセルボタンBT2が操作されたか否かを判断する(処理S12)。キャンセルボタンBT2が操作された場合には(処理S12:Yes)、処理を終了する一方、キャンセルボタンBT2が操作されていない場合には(処理S12:No)、OKボタンBT1が操作されたか否かを判断する(処理S13)。OKボタンBT1が操作されていない場合には(処理S13:No)、処理S11へ移行する一方、OKボタンBT1が操作された場合には(処理S13:Yes)、第1ユーザプログラム実行用ID10をPLC100へ送信し(処理S14)、処理を終了する。
【0080】
(第2受け付けステップ)
第2受け付けステップでは、ユーザプログラムYPの実行のために照合される第2ユーザプログラム実行用ID20の入力情報を受け付ける。
【0081】
図7は、図1に示すツール装置200における表示装置231に表示された第2ユーザプログラム実行用ID設定画面231bを示す平面図である。
【0082】
図7に示すように、表示装置231における第2ユーザプログラム実行用ID設定画面231bには、ユーザ(通常はベンダー)によって、第2ユーザプログラム実行用ID20を入力するための第1入力欄IP2と、確認用の第2ユーザプログラム実行用ID20を入力するための第2入力欄IP3と、第2ユーザプログラム実行用ID20の入力操作を確定するOKボタンBT3と、第2ユーザプログラム実行用ID設定画面231bを終了するキャンセルボタンBT4とが第2ユーザプログラム実行用ID設定画面231bに表示されるようになっている。具体的には、第1入力欄IP2及び第2入力欄IP3には、8〜32文字の半角英数字が入力される。
【0083】
第2ユーザプログラム実行用ID設定画面231bにおいて、ユーザによるキーボード211(図1参照)の入力操作によって第1入力欄IP2に第2ユーザプログラム実行用ID20が入力され、第2入力欄IP3に確認用の第2ユーザプログラム実行用ID20が入力され、例えば、ユーザによるポインティングデバイス212(図1参照)の操作によってカーソルJを移動させてOKボタンBT3が操作(クリック)されることで、第1入力欄IP2に入力された第2ユーザプログラム実行用ID20と、第2入力欄IP3に入力された確認用の第2ユーザプログラム実行用ID20とを制御部250に送信する。一方、キャンセルボタンBT4が操作(クリック)されることで、第2ユーザプログラム実行用ID設定画面231bを終了するようになっている。なお、第2ユーザプログラム実行用ID設定画面231bにおけるボタン操作はタッチパネルによる操作であってもよい。
【0084】
(第1設定ステップ)
第1設定ステップでは、第2ユーザプログラム実行用ID20をツール装置200に備えられたハードディスク装置224(図4参照)の記憶領域224aに記憶させて設定する。具体的には、第1設定ステップは、プロジェクトPRに対して第2ユーザプログラム実行用ID20を設定する。プロジェクトPRのファイルデータ(以下、単にファイルという)には、複数のユーザプログラムYPからなるユーザプログラム全体が変数(データ)などの情報と共に保存される。ユーザプログラム全体が保存されたプロジェクトPRのファイルは、ハードディスク装置224に格納される。
【0085】
図8は、プロジェクトPRのファイルのデータ構造を示す模式図である。図8に示すプロジェクトPRのファイルは、複数のユーザプログラムYPからなるユーザプログラム全体及び変数テーブル、PLCシステム設定、I/Oテーブル、I/Oメモリデータなどの他の設定データを含んでいる。個々のユーザプログラムYPは、同一のプロジェクトPRのファイル内で作成される。また、ユーザプログラムYPは、複数のサブプログラムから構成されている。そして、第2ユーザプログラム実行用ID20は、プロジェクトPRのファイル内に設定される。これにより、個々のユーザプログラムYPと第2ユーザプログラム実行用ID20とを容易に関連付ける(対応付ける)ことが可能となる。
【0086】
(第2ユーザプログラム実行用IDの書き込みについて)
ここで、ツール装置200は、プロジェクトPRに対して第2ユーザプログラム実行用ID20が一度設定されて以降は第2ユーザプログラム実行用ID20を設定変更不能かつ消去不能な構成とされている。
【0087】
すなわち、第1設定ステップでは、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されていないときにのみ、第2ユーザプログラム実行用ID20を設定し、設定後はID設定用フラグを立てる等によって第2ユーザプログラム実行用ID20を変更も消去もできないようになっている。
【0088】
(第2ユーザプログラム実行用IDの設定処理例)
次に、第2ユーザプログラム実行用ID20の設定処理の一例について図9を参照しながら以下に説明する。図9は、第2ユーザプログラム実行用ID20の設定処理の一例を示すフローチャートである。
【0089】
図9に示す設定処理例のフローチャートでは、まず、制御部250は、第2ユーザプログラム実行用ID20が既にプロジェクトPRに設定されているか否かを判断する(処理S21)。
【0090】
第2ユーザプログラム実行用ID20が既にプロジェクトPRに設定されている場合には(処理S21:Yes)、第2ユーザプログラム実行用ID20が既に設定されている旨の表示を行い(処理S22)、処理を終了する一方、第2ユーザプログラム実行用ID20が未だプロジェクトPRに設定されてない場合には(処理S21:No)、処理S23に移行する。
【0091】
次に、第2ユーザプログラム実行用ID20の入力操作(図7参照)を受け付け(処理S23)、キャンセルボタンBT4が操作されたか否かを判断する(処理S24)。キャンセルボタンBT4が操作された場合には(処理S24:Yes)、処理を終了する一方、キャンセルボタンBT4が操作されていない場合には(処理S24:No)、OKボタンBT3が操作されたか否かを判断する(処理S25)。OKボタンBT3が操作されていない場合には(処理S25:No)、処理S23へ移行する一方、OKボタンBT3が操作された場合には(処理S25:Yes)、確認キー(例えば「Y」キー)を操作(押下)する旨のメッセージ表示(処理S26)を行う。
【0092】
次に、確認キー(例えば「Y」キー)が操作(押下)されたか否かを判断し(処理S27)、確認キー以外のキーが操作された場合には(処理S27:No)、処理S23に移行する一方、確認のキー(例えば「Y」キー)が操作された場合には(処理S27:Yes)、処理S28に移行する。
【0093】
次に、第1入力欄IP2に入力された第2ユーザプログラム実行用ID20が第2入力欄IP3に入力された確認用の第2ユーザプログラム実行用ID20と一致しているか否かを判断し(処理S28)、一致していない場合には(処理S28:No)、一致していない旨のメッセージを表示し(処理S29)、処理S23に移行する一方、一致する場合には(処理S28:Yes)、第2ユーザプログラム実行用ID20をプロジェクトPRに設定し(処理S30)、処理を終了する。
【0094】
(第2ユーザプログラム実行用IDの表示について)
また、制御部250は、プロジェクトPRに設定された後のハードディスク装置224の記憶領域224aに記憶されている第2ユーザプログラム実行用ID20を表示させる機能を持たない(具体的には第2ユーザプログラム実行用ID20を表示させることを禁止する)構成とされている。
【0095】
本実施の形態では、制御部250は、さらに、付加手段Qa5(図4参照)として機能する。すなわち、ツール用プログラムPは、付加手段Qa5に対応する付加ステップを制御部250に実行させる。
【0096】
(付加ステップ)
付加ステップでは、プロジェクトPR(図8参照)における第2ユーザプログラム実行用ID20をユーザプログラムYPに付加する。具体的には、付加ステップでは、プロジェクトPRにおける第2ユーザプログラム実行用ID20を読み出して、ユーザプログラムYPの言語に対応するコンパイラによってコンパイルされたユーザプログラムYPのオブジェクトコード(後述する図10参照)に対して、プロジェクトPRから読み出した第2ユーザプログラム実行用ID20を組み込むようになっている。
【0097】
図10は、ユーザプログラムYPに付加された第2ユーザプログラム実行用ID20のデータ構造を示す模式図である。
【0098】
図10に示すように、ユーザプログラムYPのオブジェクトコードに付加された第2ユーザプログラム実行用ID20のファイルデータ11は、ファイル情報ヘッダ部12とデータ部13とで構成されている。ファイル情報ヘッダ部12には、ファイルバージョンなどのファイル情報が記録される。データ部13には、第2ユーザプログラム実行用ID20が記憶される。
【0099】
そして、送信ステップでは、付加ステップにて第2ユーザプログラム実行用ID20を付加したユーザプログラムYPをPLC100に送信する。
【0100】
なお、第2ユーザプログラム実行用ID20とユーザプログラムYPとを別々にPLC100に送信してもよい。この場合、第2ユーザプログラム実行用ID20とユーザプログラムYPとを同時に又は異なる時間に送信してもよい。
【0101】
本実施の形態では、制御部250は、さらに、暗号化手段Qa6(図4参照)として機能する。すなわち、ツール用プログラムPは、暗号化手段Qa6に対応する暗号化ステップを制御部250に実行させる。
【0102】
(暗号化ステップ)
暗号化ステップでは、第1受け付けステップにて受け付けた第1ユーザプログラム実行用ID10、及び、第2受け付けステップにて受け付けた第2ユーザプログラム実行用ID20を不可逆に暗号化する。ここで、不可逆の暗号化処理は、元のIDコードに戻すことができない処理であり、同じ暗号キーを使って同じ文字列を暗号化すると、生成される文字列は同じものとなる。なお、可逆的に暗号化した第1及び第2ユーザプログラム実行用ID10,20を照合のときに復号化するようにしてもよい。
【0103】
そして、第1設定ステップでは、暗号化ステップにて暗号化された第2ユーザプログラム実行用ID20をプロジェクトPRに設定する。また、送信ステップでは、暗号化ステップにて暗号化された第1ユーザプログラム実行用ID10をPLC100に送信する。
【0104】
[PLCのソフトウェア構成]
PLC100におけるマイクロプロセッサ111は、第2設定手段Qb1、格納制御手段Qb2、照合手段Qb3及び実行禁止手段Qb4(図2参照)として機能する。すなわち、システムプログラムSPは、第2設定手段Qb1に対応する第2設定ステップと、格納制御手段Qb2に対応する格納制御ステップと、照合手段Qb3に対応する照合ステップと、実行禁止手段Qb4に対応する実行禁止ステップとをマイクロプロセッサ111に実行させる。なお、図2における解除手段Qb5については後ほど説明する。
【0105】
(第2設定ステップ)
第2設定ステップでは、ツール装置200で実施された送信ステップにてPLC100に送信されてきた第1ユーザプログラム実行用ID10をPLC100に備えられたID格納用メモリ113(図2参照)の記憶領域113aに記憶させて設定する。
【0106】
また、第1ユーザプログラム実行用ID10がツール装置200で暗号化される場合には、第2設定ステップでは、ツール装置200で実施された暗号化ステップにて暗号化されて送信ステップにてPLC100に送信されてきた第1ユーザプログラム実行用ID10をID格納用メモリ113の記憶領域113aに記憶させて設定する。
【0107】
(第1ユーザプログラム実行用IDの書き込みについて)
ここで、PLC100は、ID格納用メモリ113に対して第1ユーザプログラム実行用ID10を書き換え可能かつ消去可能な構成とされている。
【0108】
すなわち、第2設定ステップでは、第1ユーザプログラム実行用ID10がID格納用メモリ113の記憶領域113aに設定(記憶)されているか否かに関わらず、第1ユーザプログラム実行用ID10を変更も消去もできるようになっている。第1ユーザプログラム実行用ID10の変更は、図5に示す第1ユーザプログラム実行用ID設定画面231aによって行うことができる。
【0109】
(第1ユーザプログラム実行用IDの消去について)
ID格納用メモリ113の記憶領域113aに記憶されている第1ユーザプログラム実行用ID10は、CPUユニット110に対してメモリオールクリアの機能を実行することによって消去することができる。すなわち、CPUユニット110に対するメモリオールクリアの機能を実行すると、ID格納用メモリ113の記憶領域113aに第1ユーザプログラム実行用ID10が設定されていない状態となり、ID格納用メモリ113が初期の非設定状態に戻る。
【0110】
(第1ユーザプログラム実行用IDの表示について)
なお、ツール装置200における制御部250は、ID格納用メモリ113の記憶領域113aに設定された後のID格納用メモリ113に記憶されている第1ユーザプログラム実行用ID10を表示させる機能を持たない(具体的には第1ユーザプログラム実行用ID10を表示させることを禁止する)構成とされている。
【0111】
(格納制御ステップ)
格納制御ステップでは、ツール装置200で実施された付加ステップにて第2ユーザプログラム実行用ID20が付加されて送信ステップにてPLC100に送信されてきたユーザプログラムYPをPLC100におけるバックアップメモリ114(図2参照)に格納する。
【0112】
(照合ステップ)
照合ステップでは、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とが一致しているか否かを照合する。具体的には、ID格納用メモリ113に記憶されている第1ユーザプログラム実行用ID10と、プロジェクトPRから転送されてバックアップメモリ114に記憶されている第2ユーザプログラム実行用ID20とを照合する。
【0113】
本実施の形態において、照合ステップでは、バックアップメモリ114に格納されているユーザプログラムYPをユーザメモリ116に格納するときに、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合する。具体的には、ID格納用メモリ113に記憶されている第1ユーザプログラム実行用ID10を読み出し、バックアップメモリ114からユーザプログラムYPを読み出してユーザプログラムYPに付加された(組み込まれた)第2ユーザプログラム実行用ID20をユーザプログラムYPから取り出し、ID格納用メモリ113から読み出した第1ユーザプログラム実行用ID10と、ユーザプログラムYPから取り出した第2ユーザプログラム実行用ID20とを照合する。
【0114】
ここでは、第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20は、同じ暗号キーを使って同じ文字列を暗号化して生成された文字列が同じものとなる不可逆に暗号化されているので、照合ステップでは、不可逆に暗号化された第1ユーザプログラム実行用ID10の文字列と、不可逆に暗号化された第2ユーザプログラム実行用ID20の文字列とが一致しているか否かを照合する。
【0115】
本実施の形態では、第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20の一致及び不一致は、図11に示すような条件としている。図11は、第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20の一致及び不一致の条件の一例を示す表である。
【0116】
図11に示すように、第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されていないときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されていないときには、一致と判断する。
【0117】
第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されているときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されているとき、かつ、双方のID10,20が等しいときには、一致と判断する。
【0118】
第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されているときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されていないときには、不一致と判断する。
【0119】
第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されていないときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されているときには、不一致と判断する。
【0120】
また、第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されているときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されているとき、かつ、双方のID10,20が等しくないときには、不一致と判断する。
【0121】
第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合するタイミングは、本実施の形態では、PLC100の電源を投入してバックアップメモリ114からユーザメモリ116へユーザプログラムYPを格納した時(電源投入時)、或いは、ツール装置200からPLC100におけるバックアップメモリ114へユーザプログラムYPを格納してバックアップメモリ114からユーザメモリ116へユーザプログラムYPを格納した時(ダウンロード時)とされている。
【0122】
(実行禁止ステップ)
実行禁止ステップでは、照合ステップにて照合した照合結果に基づいて、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とが不一致となった場合に、ユーザプログラムYPの実行を禁止する。
【0123】
本実施の形態では、マイクロプロセッサ111は、さらに、解除手段Qb5として機能する。すなわち、システムプログラムSPは、解除手段Qb5(図2参照)に対応する解除ステップをマイクロプロセッサ111に実行させる。
【0124】
(解除ステップ)
解除ステップでは、実行禁止ステップによるユーザプログラムYPの実行禁止状態をCPUユニット110の再起動(具体的には、CPUユニット110の電源OFF/ON又はツール装置200のユーザプログラム開発支援用プログラムからのリセット)によって解除する。
【0125】
(IDの照合処理例)
次に、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合する照合処理S40の一例について図12を参照しながら以下に説明する。図12は、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合する照合処理S40の一例を示すフローチャートである。なお、図12に示すフローチャートは、図3に示すIDの照合処理S40の詳細フローチャートである。
【0126】
図12に示すIDの照合処理例のフローチャートでは、まず、電源投入時か、又は、ダウンロード時か否かを判断する(処理S41)。電源投入時でない場合には(処理S41:No)、図3に示すPLC100全体の処理における初期化処理(処理S1)に戻り、ダウンロード時でない場合には(処理S41:No)、図3に示すPLC100全体の処理におけるモード読み込み処理(処理S3)に戻る。一方、電源投入時、又は、ダウンロード時である場合には(処理S41:Yes)、処理S42に移行する。
【0127】
次に、第1及び第2ユーザプログラム実行用ID10,20の何れか一方が未設定か否かを判断する(処理S42)。第1及び第2ユーザプログラム実行用ID10,20の何れか一方が未設定である場合には(処理S42:Yes)、処理S46に移行する一方、第1及び第2ユーザプログラム実行用ID10,20の何れか一方が未設定でない場合には(処理S42:No)、第1及び第2ユーザプログラム実行用ID10,20の双方が未設定か否かを判断する(処理S43)。
【0128】
第1及び第2ユーザプログラム実行用ID10,20の双方が未設定である場合には(処理S43:Yes)、処理S45に移行する一方、第1及び第2ユーザプログラム実行用ID10,20の双方が未設定でない場合には(処理S43:No)、第1及び第2ユーザプログラム実行用ID10,20が一致するか否かを判断する(処理S44)。
【0129】
第1及び第2ユーザプログラム実行用ID10,20が一致した場合には(処理S44:Yes)、処理S45に移行する一方、第1及び第2ユーザプログラム実行用ID10,20が一致していない場合には(処理S44:No)、処理S46に移行する。
【0130】
処理S45では、ユーザプログラムYPの実行を許可し、図3に示すPLC100全体の処理に戻る。
【0131】
処理S46では、ユーザプログラムYPの実行を禁止し、IDが一致しない旨のメッセージ表示(処理S47)を行った後、図3に示すPLC100全体の処理に戻る。ここで、IDが一致しない旨のメッセージ表示は、PLC100が備える表示機能(図1では省略)を使用して行う。表示機能の例としてLEDランプ使用する場合は、所定のLEDを点灯または点滅させる態様を例示できる。表示機能の例として液晶表示装置を使用する場合は、所定の文字列を表示させる態様を例示できる。
【0132】
(本実施の形態について)
以上説明したように、本実施の形態によると、第1ユーザプログラム実行用ID10の入力情報を受け付け、第1ユーザプログラム実行用ID10をPLC100に送信し、PLC100に送信されてきた第1ユーザプログラム実行用ID10をPLC100に設定することに加えて、ユーザプログラムYPの実行のために照合される第2ユーザプログラム実行用ID20の入力情報を受け付け、第2ユーザプログラム実行用ID20をツール装置200に設けられたプロジェクトPRに設定するので、ユーザがIDの照合を行うためにユーザプログラムYPを作成しなくても、IDを入力するといった簡単な操作によってPLC100上で実行させるユーザプログラムYPの無断利用を防止することができ、これにより、PLC100上で実行させるユーザプログラムYPの無断利用を防止するための利便性を向上させることが可能となる。
【0133】
そして、ツール装置200において、ツール装置200に設けられたプロジェクトPRに対して第2ユーザプログラム実行用ID20が一度設定されて以降は第2ユーザプログラム実行用ID20を設定変更不能かつ消去不能な構成とされているので、一度設定した第2ユーザプログラム実行用ID20を、第2ユーザプログラム実行用ID20を設定した本来のユーザ(該ユーザから知得したユーザを含むユーザ)以外の他人が書き換えたり、或いは、盗み見たりすることが非常に困難となる。また、PLC100におけるID格納用メモリ113に対して第1ユーザプログラム実行用ID10を書き換え可能かつ消去可能な構成とされているので、本来のユーザが第2ユーザプログラム実行用ID20と一致する第1ユーザプログラム実行用ID10を設定することができ、これにより、PLC100において、照合した照合結果に基づいて第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とが一致することで、PLC100において、ユーザプログラムYPを実行させることができる。その一方で、本来のユーザ以外の他人が第2ユーザプログラム実行用ID20とは異なる第1ユーザプログラム実行用ID10を設定すると、PLC100において、照合した照合結果に基づいて第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とが不一致となることで、ユーザプログラムYPの実行を禁止するので、ユーザプログラムYPを実行させることができない。しかも、ツール装置200は、PLC100のID格納用メモリ113における第1ユーザプログラム実行用ID10を表示させる機能、及び、プロジェクトPRにおける第2ユーザプログラム実行用ID20を表示させる機能を何れも持たない構成とされているので、本来のユーザや本来のユーザ以外の他人に関わらず、第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20をツール装置200から知られることが非常に困難となる。なお、本実施の形態では、ID格納用メモリ113が制御基板に着脱不能に搭載(直付け)されているので、ID格納用メモリ113を別のPLCに取り替えることも非常に困難である。
【0134】
また、本実施の形態では、ユーザプログラムYPがプロジェクトPRとして管理され、第2ユーザプログラム実行用ID20をプロジェクトPRに設定するので、第2ユーザプログラム実行用ID20とユーザプログラムYPとの関連付けを容易に行うことができる。
【0135】
また、本実施の形態では、第1受け付け手段Qa1にて受け付けた第1ユーザプログラム実行用ID10、及び、第2受け付け手段Qa3にて受け付けた第2ユーザプログラム実行用ID20を暗号化するので、万一、第1ユーザプログラム実行用ID10及び/又は第2ユーザプログラム実行用ID20が不正に読み出されて盗まれたとしても第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20が暗号化されたものであるため、第1ユーザプログラム実行用ID10及び/又は第2ユーザプログラム実行用ID20を本来のユーザ以外の他人に知られることが困難となる。これにより、第1ユーザプログラム実行用ID10及び/又は第2ユーザプログラム実行用ID20の外部への漏洩に対するセキュリティを向上させることが可能となる。しかも、暗号化処理は、不可逆の暗号化処理であり、元のIDコードに戻すことができないので、元のIDコードの情報が知られることはない。
【0136】
また、本実施の形態では、ツール装置200に設けられたプロジェクトPRにおける第2ユーザプログラム実行用ID20を、PLC100におけるバックアップメモリ114に格納するので、照合毎にツール装置200から第2ユーザプログラム実行用ID20を取得しなくても、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを容易に照合することが可能となる。
【0137】
また、本実施の形態では、第2ユーザプログラム実行用ID20をユーザプログラムYPに付加し、第2ユーザプログラム実行用ID20を付加したユーザプログラムYPをPLC100に送信してPLC10におけるバックアップメモリ114に格納するので、PLC100において第2ユーザプログラム実行用ID20の存在を分かり難くすることが可能となる。
【0138】
また、本実施の形態では、バックアップメモリ114に格納されているユーザプログラムYPをユーザメモリ116に格納するときに、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合するので、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを、ユーザプログラムYPの実行に先だって確実に照合することが可能となる。
【0139】
また、本実施の形態では、ユーザプログラムYPが実行禁止状態となったときには、ユーザプログラムYPの実行禁止状態をCPUユニット110の再起動によって解除するので、本来のユーザ以外の他人によるID格納用メモリ113への第1ユーザプログラム実行用ID10の不正書き込み労力を増やすことができ、ひいては他人による不正行為を抑止することが可能となる。
【0140】
また、本実施の形態では、ID格納用メモリ113への第1ユーザプログラム実行用ID10の内容は任意に書き換え可能であるから、故障等の原因でPLC100が別のPLC100に交換されたときには、交換後のPLC100のID格納用メモリ113における第1ユーザプログラム実行用ID10の内容を交換前のPLC100の第1ユーザプログラム実行用ID10と同じ内容に書き換えることにより、ユーザプログラムYPを交換後のPLC100上においても動作させることができる。
【0141】
なお、プログラマブルコントローラシステム300において、複数のPLC100を設ける場合には、ツール装置200側で設定した第2ユーザプログラム実行用ID20と同じIDを複数のPLC100側の第1ユーザプログラム実行用ID10としてID格納用メモリ113に設定することで、複数のPLC100を設ける場合でも、前述と同様に、ユーザプログラムYPの無断利用を防止することが可能となる。
【符号の説明】
【0142】
10 第1ユーザプログラム実行用ID
20 第2ユーザプログラム実行用ID
100 プログラマブルコントローラ
113 ID格納用メモリ
114 バックアップメモリ(不揮発性メモリの一例)
116 ユーザメモリ(揮発性メモリの一例)
200 ツール装置
224 ハードディスク装置
300 プログラマブルコントローラシステム
M 記録媒体
PR プロジェクト
Qa1 第1受け付け手段
Qa2 送信手段
Qa3 第2受け付け手段
Qa4 第1設定手段
Qa5 付加手段
Qa6 暗号化手段
Qb1 第2設定手段
Qb2 格納制御手段
Qb3 照合手段
Qb4 実行禁止手段
Qb5 解除手段
YP ユーザプログラム

【特許請求の範囲】
【請求項1】
プログラマブルコントローラと、前記プログラマブルコントローラと通信し、前記プログラマブルコントローラ上でユーザプログラムを実行させるためのツール装置とを備えたプログラマブルコントローラシステムであって、
前記ツール装置は、
前記ユーザプログラムの実行のために照合される第1ユーザプログラム実行用IDの入力情報を受け付ける第1受け付け手段と、
前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信する送信手段と、
前記ユーザプログラムの実行のために照合される第2ユーザプログラム実行用IDの入力情報を受け付ける第2受け付け手段と、
前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定する第1設定手段と
を備え、
前記第2ユーザプログラム実行用IDが一旦設定されて以降は前記第2ユーザプログラム実行用IDを設定不能かつ消去不能な構成とされており、
前記第1ユーザプログラム実行用IDを表示させる機能、及び、前記第2ユーザプログラム実行用IDを表示させる機能を何れも持たない構成とされており、
前記プログラマブルコントローラは、
前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する第2設定手段と、
前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが一致しているか否かを照合する照合手段と、
前記照合手段にて照合した照合結果に基づいて、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段と
を備え、
前記第1ユーザプログラム実行用IDを設定可能かつ消去可能な構成とされている
ことを特徴とするプログラマブルコントローラシステム。
【請求項2】
請求項1に記載のプログラマブルコントローラシステムであって、
前記ツール装置は、複数の前記ユーザプログラムの情報を1つのプロジェクトとして管理する構成とされており、
前記第1設定手段は、前記プロジェクトに対して前記第2ユーザプログラム実行用IDを設定する
ことを特徴とするプログラマブルコントローラシステム。
【請求項3】
請求項1又は請求項2に記載のプログラマブルコントローラシステムであって、
前記ツール装置は、前記第1受け付け手段にて受け付けた前記第1ユーザプログラム実行用ID、及び、前記第2受け付け手段にて受け付けた前記第2ユーザプログラム実行用IDを暗号化する暗号化手段を備え、
前記送信手段は、前記暗号化手段にて暗号化された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、
前記第1設定手段は、前記暗号化手段にて暗号化された前記第2ユーザプログラム実行用IDを前記ツール装置に設定し、
前記第2設定手段は、前記暗号化手段にて暗号化されて前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する
ことを特徴とするプログラマブルコントローラシステム。
【請求項4】
請求項1から請求項3までの何れか一つに記載のプログラマブルコントローラシステムであって、
前記送信手段は、前記第2ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、
前記プログラマブルコントローラは、前記送信手段にて前記プログラマブルコントローラに送信された前記第2ユーザプログラム実行用IDを該プログラマブルコントローラに格納する格納制御手段を備える
ことを特徴とするプログラマブルコントローラシステム。
【請求項5】
請求項4に記載のプログラマブルコントローラシステムであって、
前記ツール装置は、前記第2ユーザプログラム実行用IDを前記ユーザプログラムに付加する付加手段を備え、
前記送信手段は、前記付加手段にて前記第2ユーザプログラム実行用IDを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信し、
前記格納制御手段は、前記付加手段にて前記第2ユーザプログラム実行用IDが付加されて前記送信手段にて前記プログラマブルコントローラに送信された前記ユーザプログラムを前記プログラマブルコントローラに格納する
ことを特徴とするプログラマブルコントローラシステム。
【請求項6】
請求項4又は請求項5に記載のプログラマブルコントローラシステムであって、
前記プログラマブルコントローラは、前記ユーザプログラムを該プログラマブルコントローラに備えられた不揮発性メモリに格納する構成とされており、
前記照合手段は、前記不揮発性メモリに格納されている前記ユーザプログラムを、前記プログラマブルコントローラに備えられて前記ユーザプログラムを記憶する揮発性メモリに格納するときに、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを照合する
ことを特徴とするプログラマブルコントローラシステム。
【請求項7】
請求項1から請求項6までの何れか一つに記載のプログラマブルコントローラシステムであって、
前記プログラマブルコントローラは、前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除する解除手段を備える
ことを特徴とするプログラマブルコントローラシステム。
【請求項8】
請求項1に記載のプログラマブルコントローラシステムに備えられるツール装置であって、
前記ユーザプログラムの実行のために照合される第1ユーザプログラム実行用IDの入力情報を受け付ける第1受け付け手段と、
前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信する送信手段と、
前記ユーザプログラムの実行のために照合される第2ユーザプログラム実行用IDの入力情報を受け付ける第2受け付け手段と、
前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定する第1設定手段と
を備え、
前記第2ユーザプログラム実行用IDが一旦設定されて以降は前記第2ユーザプログラム実行用IDを設定不能かつ消去不能な構成とされており、
前記第1ユーザプログラム実行用IDを表示させる機能、及び、前記第2ユーザプログラム実行用IDを表示させる機能を何れも持たない構成とされている
ことを特徴とするツール装置。
【請求項9】
請求項8に記載のツール装置における制御部を、前記第1受け付け手段と、前記送信手段と、前記第2受け付け手段と、前記第1設定手段とを含む手段として機能させるためのツール用プログラム。
【請求項10】
請求項9に記載のツール用プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項11】
請求項1に記載のプログラマブルコントローラシステムに備えられるプログラマブルコントローラであって、
前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する第2設定手段と、
前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが一致しているか否かを照合する照合手段と、
前記照合手段にて照合した照合結果に基づいて、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段と
を備え、
前記第1ユーザプログラム実行用IDを設定可能かつ消去可能な構成とされている
ことを特徴とするプログラマブルコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−194679(P2012−194679A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2011−56867(P2011−56867)
【出願日】平成23年3月15日(2011.3.15)
【出願人】(000002945)オムロン株式会社 (3,542)
【Fターム(参考)】