(57)【特許請求の範囲】
【請求項１】
外部から与えられたコマンドを解釈実行する機能を備えたプログラマブル・コントローラであって、
許可設定コード記憶領域を有するメモリと、
プロテクト設定要求コマンドが与えられたときには、メモリの許可設定コード記憶領域の記憶内容が予め決められた第１のコードと一致するときに限り、メモリの許可設定コード記憶領域の記憶内容を、当該プロテクト設定コマンドに付されたパスワードで書き替えるプロテクト設定動作制御手段と、
プロテクト解除要求コマンドが与えられたときには、メモリの許可設定コード記憶領域の記憶内容と当該プロテクト解除要求コマンドに付されたパスワードとが一致することを少なくとも条件として、メモリの許可設定コード記憶領域の記憶内容を第１のコードで書き替えるプロテクト解除動作制御手段と、
プロテクト対象となる作業要求コマンドが与えられたときに、メモリの許可設定コード記憶領域の記憶内容が第１のコードと一致するときには、その作業要求コマンドに対応した処理の実行を許可する一方、メモリの許可設定コード記憶領域の記憶内容が第１のコードと一致しないときには、その作業要求コマンドに対応した処理の実行を禁止し又は作業の実行を制限する作業実行可否決定手段と、を有し、かつ
前記プロテクト解除動作制御手段は、
メモリの許可設定コード記憶領域の記憶内容が予め決められた永久プロテクト対応の第２のコードと一致するときには、許可設定コード記憶領域の書き替え処理を行わない、ことを特徴とするプログラマブル・コントローラ。
【請求項２】
プロテクト対象となる作業要求コマンドとして、ユーザプログラムに関する一括読み出しを要求するアップロード要求コマンドが含まれている、ことを特徴とする請求項１に記載のプログラマブル・コントローラ。
【請求項３】
プロテクト対象とならない作業要求コマンドとして、ユーザプログラムに関する一括消去を要求する消去要求コマンドが定義されており、
ユーザプログラムに関する消去要求コマンドが与えられたときには、許可設定コード領域の記憶内容に関わらず、その消去要求コマンドで指定されるユーザプログラムを一括消去すると共に、これと併せて、許可設定コード記憶領域の記憶内容を第１のコードに書き替えるように構成されている、ことを特徴とする請求項２に記載のプログラマブル・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、与えられたコマンドを解釈実行する機能を備えたプログラマブル・コントローラに係り、特に、パスワードプロテクト方式により、ユーザプログラムの一括読み出し要求コマンド等の解釈実行に制限をかけることができるプログラマブル・コントローラ（以下、「ＰＬＣ」と称する）に関する。
【背景技術】
【０００２】
ＰＬＣによる機器制御は、ユーザの要求する制御仕様をラダー図言語等を用いて記述してなる制御プログラム（以下、「ユーザプログラム」と称する）をＰＬＣのメモリに予め格納しておき、これをＰＬＣの命令実行部が適宜に読み出して実行することにより実現される。
【０００３】
ＰＬＣのユーザとして、例えば、各種のＦＰＤ（Flat Pannel Display）や半導体装置等の製造メーカ等を想定すると、それらの製造プロセス上のノウハウは、結果としてユーザプログラム中の記述として表現されることが多い。
【０００４】
そのため、従来、ＰＬＣとＰＬＣの開発支援装置とを通信を介して接続してなるＰＬＣシステムにおいては、パスワードプロテクト方式により、ユーザプログラムの一括読み出し要求コマンド等の解釈実行にプロテクトをかけることにより、正当な権限を有する者以外は、開発支援装置を操作しても、ＰＬＣのメモリから勝手にユーザプログラムが読み出せないような対策が施されている（例えば、特許文献１参照）。
【特許文献１】特開平１１−１８４８１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したパスワードプロテクト方式を採用するＰＬＣシステムにあっては、プロテクト解除コマンドに付されたパスワードとＰＬＣ側に格納されたパスワードとが一致しさえすれば、プロテクトは直ちに解除されてしまうため、正当な権限を有する者からパスワードが漏洩してしまったり、或いはパスワードが盗用されてしまえば、最早、用をなさないし、そのような漏洩や盗用がないとしても、可能なパスワードの全てを総当たりされてしまえば、理論的にプロテクトは破られてしまうと言う本質的な問題点を抱えている。
【０００６】
なお、可能なパスワードの全てを総当たりする不正なプロテクト解除操作については、開発支援装置側のパスワード入力操作可能回数を一定回数以下に制限することで解決することができるが、それでも別途通信回線に専用ツールを接続して行う総当たり操作は回避することができない。
【０００７】
また、開発支援装置側のパスワード入力機能を変更して、例えば、特別な操作を行わない限り、既にＰＬＣ側に登録されているパスワードと同一パスワードが入力できないようにすることも考えられるが、それでも別の開発支援装置と交換したり、或いは別途通信回線に専用ツールを接続してしまえば、やはり用をなさない。
【０００８】
この発明は、このような従来の問題点に着目してなされてものであり、その目的とするところは、この種のパスワードプロテクト方式を採用するＰＬＣシステムにおいて、開発支援装置側におけるプロテクト設定操作並びにプロテクト解除操作を一切変更することなく、パスワードの漏洩、盗用、総当たりによる解読等によるプロテクトの不正解除を未然に防止することにある。
【０００９】
この発明のさらに他の目的並びに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、本発明のＰＬＣは、上述のＰＬＣシステムに好適なものであって、以下の構成を採用している。
【００１１】
すなわち、この発明のＰＬＣは、外部から与えられたコマンドを解釈実行する機能を備え、かつ許可設定コード記憶領域を有するメモリを有している。
【００１２】
さらに、このＰＬＣには、プロテクト設定動作制御手段と、プロテクト解除動作制御手段と、作業実行可否決定手段とが設けられている。
【００１３】
プロテクト設定動作制御手段は、プロテクト設定要求コマンドが与えられたときには、メモリの許可設定コード記憶領域の記憶内容が予め決められた第１のコードと一致するときに限り、メモリの許可設定コード記憶領域の記憶内容を、当該プロテクト設定コマンドに付されたパスワードで書き替える機能を有する。
【００１４】
ここで、「パスワード」とは、当該プロテクト設定コマンドに付されたパスワードそれ自体を意味している。また「許可設定コード」とは、ＰＬＣのメモリに格納されるコードを意味し、許可設定コードとしてはパスワードそれ自体を用いてもよいし、パスワードと一義的関係にあるＰＬＣ側で生成された別のコードを用いてもよい。すなわち、プロテクト設定コマンドに付されたパスワード文字列がそのままＰＬＣのメモリ（不揮発性メモリ）に格納されると、メモリダンプ等の手段によりパスワード格納アドレスが他人に知られてしまう可能性がある。そのため、ＰＬＣ側で受信されたパスワード文字列そのままではなく、ＰＬＣ側で予め用意された別の文字列を許可設定コードとして格納領域に書き込むことで、プロテクトの強度を上げることができる。なお、許可設定コードとしてＰＬＣ側で予め用意された別の文字列を用いる場合には、パスワードとの比較に際して許可設定コードをパスワードに戻して比較してもよいし、対応テーブル等を参照してパスワードと許可設定コードとを比較してもよい。
【００１５】
ここで、「パスワードと許可設定コードとが一致する」とは、パスワードと許可設定コードとが等しい場合のみならず、許可設定コードがパスワードと一義的関係にある場合も含む。
【００１６】
プロテクト解除動作制御手段は、プロテクト解除要求コマンドが与えられたときには、メモリの許可設定コード記憶領域の記憶内容と当該プロテクト解除要求コマンドに付されたパスワードとが一致することを少なくとも条件として、メモリの許可設定コード記憶領域の記憶内容を第１のコードで書き替える機能を有する。
【００１７】
作業実行可否決定手段は、プロテクト対象となる作業要求コマンドが与えられたときに、メモリの許可設定コード記憶領域の記憶内容が第１のコードと一致するときには、その作業要求コマンドに対応した処理の実行を許可する一方、メモリの許可設定コード記憶領域の記憶内容が第１のコードと一致しないときには、その作業要求コマンドに対応した処理の実行を禁止し又は作業の実行を制限する機能を有する。
【００１８】
加えて、前記プロテクト解除動作制御手段は、メモリの許可設定コード記憶領域の記憶内容が予め決められた永久プロテクト対応の第２のコードと一致するときには、許可設定コード記憶領域の書き替え処理を行わない、ように構成されている。ここで、第２のコードと一致するか否かの判定は、プロテクト解除要求コマンドが与えられるたびにその都度行ってもよいし、電源投入直後に判定処理を行い、一致判定のときには所定のフラグを立て、以後プロテクト解除要求コマンドが与えられたときには、そのフラグを参照するようにしてもよい。
【００１９】
このような構成によれば、パスワードとして予め決められた第２のコード以外のコードが使用される限り、プロテクト設定要求コマンド並びにプロテクト解除要求コマンドを使用することにより、従前通りに、ＰＬＣのコマンド解読実行処理に対して、プロテクトの設定並びにプロテクトの解除を行うことができる。
【００２０】
そして、プロテクトが解除された状態にあっては、プロテクト対象となる作業要求コマンドに対しては、予め用意された作業の実行が許可される一方、プロテクトが設定された状態にあっては、その作業要求マンドに対応して予め用意された作業の実行は禁止又は制限される。
【００２１】
これに対して、パスワードとして予め決められた第２のコードが使用されたときには、プロテクト設定要求コマンドを使用することにより、従前通りに、プロテクトの設定は行えるものの、プロテクト解除要求コマンドについては、メモリの許可設定コード記憶領域の記憶内容とプロテクト解除要求コマンドに付されたパスワードとが一致しても、許可設定コード記憶領域の書き替え処理は行われないため、従前とは異なり、プロテクトの解除を行うことはできない。
【００２２】
そのため、パスワードとして予め決められた第２のコードを使用してプロテクトがかけられたのちにあっては、以後、プロテクトはかけられたままの状態（永久プロテクト状態）に維持されるから、パスワードが漏洩、盗用、解読されたとしても、それによりプロテクト対象となる作業が不正に実行されることはなくなる。
【００２３】
上述の構成を有するＰＬＣにおける作業実行可否決定手段は、メモリの許可設定コード記憶領域の記憶内容が第１のコードと一致しないときには、さらに、その記憶内容が第２のコードと一致するか否かを判定し、第２のコードと一致するときには、その作業要求コマンドが予め第２のコードと関連づけられたものであるときに限り、その作業要求コマンドに対応して予め用意された作業の実行を禁止し又は作業の実行を制限するように構成してもよい。ここで、第２のコードと一致するか否かの判定は、プロテクト解除要求コマンドが与えられるたびにその都度行ってもよいし、電源投入直後に判定処理を行い、一致判定のときには所定のフラグを立て、以後プロテクト解除要求コマンドが与えられたときには、そのフラグを参照するようにしてもよい。
【００２４】
このような構成によれば、第２のコードを複数種類だけ用意すると共に、それらの第２のコードのそれぞれのプロテクトの関連づけ乃至意味づけを、例えば「プログラムのアップロード（一括読み出し）のみ不可能」、「プログラムのダウンロードのみ不可能」、「プログラムのアップロードもダウンロードも不可能」等々のように異ならせておけば、第２のコードを適切に選択することにより、永久プロテクト状態となる作業の範囲を適切に制限することができる。
【００２５】
ここで、プロテクト対象となる作業要求コマンドとしては、ユーザプログラムに関する一括読み出しを要求するアップロード要求コマンド、ダウンロード要求コマンド等が存在するが、この発明の性質上は、中でもアップロードコマンドが最も有効に作用するであろう。
【００２６】
プロテクト対象とならない作業要求コマンドとしては、ユーザプログラムに関する一括消去を要求する消去要求コマンドが定義されていることが好ましく、さらに、ユーザプログラムに関する消去要求コマンドが与えられたときには、許可設定コード領域の記憶内容に関わらず、その消去要求コマンドで指定されるユーザプログラムを一括消去すると共に、これと併せて、許可設定コード記憶領域の記憶内容を第１のコードに書き替えるように構成されていることが好ましい。
【００２７】
このような構成によれば、永久プロテクト状態を解除するためには、ユーザプログラムを消去する他無くなるから、結局、ＰＬＣのメモリからユーザプログラムが一括読み出しされる危険は完全になくなる。
【００２８】
上述したＰＬＣは、ＰＬＣの開発支援装置と通信を介して接続することで、ＰＬＣシステムを構築することもできる。
【発明の効果】
【００２９】
本発明によれば、この種のパスワードプロテクト方式を採用するＰＬＣシステムにおいて、開発支援装置側におけるプロテクト設定操作並びにプロテクト解除操作を一切変更することなく、パスワードの漏洩、盗用、総当たりによる解読等によるプロテクトの不正解除を未然に防止することができる。
【発明を実施するための最良の形態】
【００３０】
以下に、この発明のプログラマブル・コントローラの好適な実施の一形態を添付図面を参照しながら詳細に説明する。尚、以下に説明する実施の形態は、本発明の一例を示すものに過ぎず、本発明の要旨とするところは、特許請求の範囲の記載によってのみ規定されるものである。
【００３１】
開発支援装置とＰＬＣとの接続図が図１（ａ）に示されている。ＰＬＣ１０と開発支援装置２０とは通信ケーブル３０を介して接続されている。開発支援装置２０としては、例えばソフトウェアツールを搭載したパーソナルコンピュータなどが挙げられる。ＰＬＣ１０と開発支援装置２０とをつなぐデータ通信方法としては、例えばＲＳ２３２などが挙げられる。
【００３２】
周知のごとく、ＰＬＣは、ＣＰＵユニットと、Ｉ／Ｏユニットと、各種特殊機能ユニット等を含んで構成される。このようなＰＬＣのＣＰＵユニットのハードウェア構成図が図１（ｂ）に示されている。同図に示されるように、このＣＰＵユニット１００は、ＲＯＭ１０１と、マイクロプロセッサ（ＭＰＵ）１０２と、ユーザプログラムメモリ（ＵＭ）１０３と、ワークＲＡＭ１０４と、データ格納用不揮発性メモリ１０５と、アプリケーションスペシフィックＩＣ（ＡＳＩＣ）１０６と、入出力メモリ（ＩＯＭ）１０７とを含んでいる。
【００３３】
ユーザプログラムメモリ（ＵＭ）１０３は、ユーザプログラムを格納するメモリである。入出力メモリ（ＩＯＭ）１０７は、外部Ｉ／Ｏ割付用のメモリ、あるいはユーザプログラムで使用するデータメモリ等として使用されるメモリである。ＲＯＭ１０１は、システムファームウェアを格納するメモリである。ワークＲＡＭ１０４は、システムワークとして使用されるメモリである。データ格納用不揮発性メモリ１０５は、異常通知の設定や異常ステータス等を格納するメモリである。ＡＳＩＣ１０６は、ユーザプログラムメモリ（ＵＭ）１０３からプログラムを順番に読み出して実行し、実行結果を、入出力メモリ（ＩＯＭ）１０７へ書き込む機能を有する。
【００３４】
マイクロプロセッサ（ＭＰＵ）１０２は、ＣＰＵユニット１００の全体を統括制御するものである。ＲＯＭ１０１には、マイクロプロセッサ（ＭＰＵ）１０２で処理されるシステムプログラムが記憶され、データ格納用不揮発性メモリ１０５には、バックアップされたユーザプログラムが記憶されている。ワークＲＡＭ１０４には、マイクロプロセッサ（ＭＰＵ）１０７の処理全般にわたる各種データが記憶される。入出力メモリ（ＩＯＭ）１０７は、プログラム実行により入出力装置に対して入出力される入出力情報の代用として参照／書き換えられるメモリである。ユーザプログラムメモリ（ＵＭ）１０３には、データ格納用不揮発性メモリと等価なユーザプログラムが記憶され、ここから読み出されたユーザプログラムが実行される。ＡＳＩＣ１０６は、ユーザプログラムメモリ（ＵＭ）１０３からプログラムを順番に読み出し実行し、実行結果を、入出力メモリ（ＩＯＭ）１０７へと書き込む。
【００３５】
開発支援装置２０のハードウェア構成の全体を示すブロック図が図２に示されている。同図に示されるように、開発支援装置２０は、ＣＰＵ２０１と、入力部２０２と、出力部２０３と、表示部２０４と、通信部２０５と、電源部２０６と、記憶部２０７と、外部記憶部２１０と、を備えている。入力部２０２の例としては、キーボード、マウス、その他各種入力装置などがあり、表示部２０４の例としては、モニタなどがあり、外部記憶部２０７の例としては、外付けＨＤＤ等の各種記憶装置などがある。ソフトウェアツールは、記憶部２０７、外部記憶部２１０などに格納される。開発支援装置２０は、通信部２０５にてＰＬＣ１０と通信を行う。
【００３６】
この例においてＰＬＣが１０が備えているメモリ内に登録されている「許可設定コード」としては、例えば以下のような内容が考えられる。
１．書込読出可能コード（解除状態、読出可能、書込可能）『第１のコード』
２．読出不可能コード（解除不可能、読出不可能、書込可能）
３．読出禁止コード（解除可能、読出不可能、書込可能）
４．書込不可能コード（解除不可能、読出可能、書込不可能）
５．書込禁止コード（解除可能、読出可能、書込不可能）
６．書込読出不可能コード（解除不可能、読出不可能、書込不可能）
７．書込読出禁止コード（解除可能、読出不可能、書込不可能）
上記１〜７以外にも、読出不可能（解除不可能）且つ書込不可能（解除可能）、一部のみ読出可能など、必要に応じて複数のコードを適宜設定することが可能である。なお、以下においては、読出不可能コード（第２のコード）、読出禁止コード（第３のコード）、書込読出可能コード（第１のコード）に関する処理を主として説明するが、書込禁止コード、書込読出禁止コード等についても同様の処理が行われることは言うまでもない。
【００３７】
本発明においては、パスワード照合等の処理は開発支援装置とＰＬＣとの間で行われる。概略としては、以下の通りである。開発支援装置でパスワードの入力が行われると、開発支援装置はＰＬＣに対して各種コマンドと入力されたパスワードの情報とを送信する。ＰＬＣは、メモリ内の所定領域に格納された許可設定コードを参照し、許可設定コードの種別により、開発支援装置からの各種処理要求の可否決定、パスワードの照合、などを行う。
【００３８】
このようなＰＬＣのＣＰＵ部の処理内容全体を概略的に示すゼネラルフローチャートが図３に示されている。同図に示される処理は、ＰＬＣ本体１００内のマイクロプロセッサ１０２がＲＯＭ１０１に格納された所定のシステムプログラムを実行することで実現される。同図に示されるように、処理の全体は、電源投入直後に実行される電源ＯＮ時処理（ステップ３０１）と、その後、サイクリックに一巡実行される、共通処理（ステップ３０２）、演算処理（ステップ３０３）、Ｉ／Ｏリフレッシュ処理（ステップ３０４）、開発支援装置から受信したコマンドに対する処理（ステップ３０５）、その他の周辺サービス処理（ステップ３０６）とから構成されている。
【００３９】
ここで、電源ＯＮ時処理（ステップ３０１）では、ハードメモリ／システムワーク初期化処理、Ｉ／Ｏメモリエリアのクリア処理、ユーザメモリ（ＵＭ）チェック処理などが実行される。
【００４０】
共通処理（ステップ３０２）においては、ＰＬＣが故障していないか否かの診断、ＭＰＵが演算処理をするための種々の設定の確認などを主に実行する。診断の内容は、時間の監視、ユーザメモリのチェック、入出力のチェック、バッテリのチェックなどである。
【００４１】
演算処理（ステップ３０３）では、ユーザプログラムメモリに格納されたユーザプログラムを順次に読み出し実行する。ここで、この演算処理は、主にＭＰＵとＩ／Ｏメモリとの間で実行される。
【００４２】
Ｉ／Ｏリフレッシュ処理（ステップ３０４）では、ＣＰＵ部内のＭＰＵは演算処理の前に外部入力信号を入力部を経由してＩ／Ｏメモリに読み込み、そのデータを用いて演算を行う。また、演算の後、Ｉ／Ｏメモリに格納されている演算結果を出力部を経由して外部へと出力する。
【００４３】
開発支援装置から受信したコマンドに対する処理（ステップ３０５）においては、開発支援装置へのデータの送信、ユーザメモリへの書込処理などが実行される。なお、本発明に関する処理は、この開発支援装置から受信したコマンドに対する処理において行われるものである。このため、開発支援装置から受信したコマンドに対する処理については後段において詳細に説明する。
【００４４】
さらに、その他の周辺サービス処理（ステップ３０６）においては、ＰＬＣを構成する各種ユニットとのデータ交換、内蔵メモリやメモリカードに対するファイルの読み書き処理、ユーザインターフェイスとの入出力処理、各種リモート機器等との通信処理などが実行される。
【００４５】
次に、開発支援装置側の処理について説明する。開発支援装置のゼネラルフローチャートが図４に示されている。開発支援装置にて数字又はアルファベットの入力が検知されると（ステップ４０１ＹＥＳ，ステップ４０２）、入力された数字又はアルファベットがパスワード用バッファに順次登録される（ステップ４０３）。検知されたキーがリターンキーであった場合にはパスワード用の確認に移り（ステップ４０２ＮＯ，ステップ４０４ＹＥＳ）、検知されたキーが数字、アルファベット、リターンキーの何れでもなかった場合には、ステップ４０１に戻り次のキー入力があるまで待機する（ステップ４０２ＮＯ，ステップ４０４ＮＯ）。リターンキーが押されたときに、パスワード用バッファが空だった場合にはエラー処理に移行する（ステップ４０５ＮＯ，ステップ４０７）。ここでエラー処理としては、入力内容が不正である旨を表示する、入力処理を終了させる、などの既知の手法が挙げられる。
【００４６】
リターンキーが押されたときにパスワード用バッファに一桁以上の数字又はアルファベットの登録があった場合には、続いてコマンド種別の判定に移行する（ステップ４０５ＹＥＳ，ステップ４０６）。コマンド種別がプロテクト設定要求コマンドであった場合にはプロテクト設定処理に（ステップ４０６プロテクト設定コマンド，ステップ４０８）、コマンド種別がプロテクト解除要求コマンドであった場合にはプロテクト解除処理に（ステップ４０６プロテクト解除コマンド，ステップ４０９）、それぞれ移行し処理を行う。プロテクト設定処理（ステップ４０８）、プロテクト解除処理（ステップ４０９）については後段にて詳細に説明する。なお、コマンド種別については、各処理を行う際の画面を別に設けたり、ボタンを別に設けておくなどの既知の構成を採用することで容易に判別可能である。
【００４７】
図４の例では、コマンド種別の判定はパスワードの後に行われることとなっているが、最初にコマンド種別の判定を行い、そのコマンドの処理に必要な場合のみパスワード入力を求めるように設定してもよい。また、同図には示されていないが、パスワードの入力が不要な処理として、読出処理、ユーザプログラム消去処理、その他の処理などがあり、所定の操作を行うことでこれらの処理を行うことが可能である。なお、読出処理とユーザプログラム消去処理については、後段で詳細に説明する。
【００４８】
開発支援装置はこの後の処理でＰＬＣに対してそれぞれのコマンドを送信し、ＰＬＣは送られてきたコマンドに対する処理を前述の「開発支援装置から受信したコマンドに対する処理（図３・ステップ３０５参照）」にて行う。このような開発支援装置から受信したコマンドに対するＰＬＣ側の処理のフローチャートが図５に示されている。
【００４９】
開発支援装置から受信したコマンドに対する処理においては、先ずはじめに受信コマンドがあるか否かの判定が行われる。受信コマンドがない場合には（ステップ５０１ＮＯ）、そのまま当該処理を終了し次の処理に移る（図３・ステップ３０６その他の周辺サービス処理）。何らかのコマンドを受信している場合には（ステップ５０１ＹＥＳ）、受信したコマンドの種別判断に移行する（ステップ５０２〜５０４）。受信したコマンドがプロテクト設定コマンドであった場合には（ステップ５０２ＹＥＳ）、プロテクト設定処理に移行する（ステップ５０６）。受信したコマンドがプロテクト解除コマンドであった場合には（ステップ５０３ＹＥＳ）、プロテクト解除処理に移行する（ステップ５０７）。受信したコマンドが読出コマンドであった場合には（ステップ５０４ＹＥＳ）、読出処理に移行する（ステップ５０８）。受信したコマンドが、プロテクト設定コマンド、プロテクト解除コマンド、読出コマンドのいずれでもなかった場合には（ステップ５０４ＮＯ）、そのコマンドに対応する処理を行い図に示された処理を終了する（ステップ５０６）。なお、プロテクト設定処理（ステップ５０６）、プロテクト解除処理（ステップ５０７）、読出処理（ステップ５０８）については、ＰＬＣ側の処理と開発支援装置側の処理とにわけて図６〜図１２で説明する。
【００５０】
はじめに、プロテクト設定処理について説明する。ＰＬＣ側のプロテクト設定処理の詳細フロー（その１）が図６に示されている。プロテクト設定処理が開始されて開発支援装置からパスワードが送られてくると、メモリ内の所定箇所に格納されている許可設定コードが『第１のコード』であるか否かの判定が行われる（ステップ６０１）。登録されている許可設定コードが『第１のコード』であった場合には（ステップ６０１ＹＥＳ）、現在登録されている許可設定コードの代わりに開発支援装置から送られてきたパスワードを新たな許可設定コードとしてメモリ内の所定箇所に書き込む（ステップ６０３）。許可設定コードの書換処理が終了したら、許可設定コード書込処理が正常終了した旨を開発支援装置に送信し、当該処理を終了する（ステップ６０４）。一方、許可設定コードが『第１のコード』でなかった場合には（ステップ６０１ＮＯ）、許可設定コードが書換不可能である旨の情報を開発支援装置に送信し、プロテクト設定処理を終了する（ステップ６０２）。
【００５１】
本発明においては、許可設定コードとしてＰＬＣのメモリに登録されるコードと入力されたパスワードとは必ずしも同じものでなくともよく、予めＰＬＣのメモリに対応表を設けておいてもよい。例えば、「読出不可能コード（例：ＢＢＢＢ）」等の当初から定まっているコードとそれに対応するパスワード（１２３４）の対応表を予め設けておき、「１２３４」と入力された場合には「ＢＢＢＢ」というコードがメモリに登録される、というものであってもよい。また、英数字一字ごとに対応する文字が定められた対応表が設けられており、「Ａを入力すると２が書き込まれる」「Ｂを入力するとＭが書き込まれる」・・・というように構成されていてもよい。このような構成を採用することにより、何らかの方法にてメモリ領域を解析されて登録されているコードの内容が解読されてしまった場合でも、入力するべきパスワードは解読されず、不正な利用者はパスワードを解除不可能であるという利点がある。また、開発支援装置より送られてきたパスワードに基づいてＰＬＣにおいて新たな許可設定コードを生成するという構成を採用すれば、開発支援装置からＰＬＣにデータが送られる途中でデータを読みとられても、登録される許可設定コードは異なるものであるため、よりパスワードが解析されにくくなる。
【００５２】
このように、予め用意されたテーブルを用いてパスワードから許可設定コードを生成し書き込む例として、図７にＰＬＣ側のプロテクト設定処理の詳細フロー（その２）が示されている。この例では、パスワードを直接書き込まないことで、メモリ解析を行われてもパスワードが判明しないという利点がある。プロテクト設定処理が開始されて開発支援装置からパスワードが送られてくると、メモリ内の所定箇所に格納されている許可設定コードが『第１のコード』であるか否かの判定が行われる（ステップ７０１）。登録されている許可設定コードが『第１のコード』であった場合には、入力されたパスワードとメモリ内に格納されている変換テーブルとを用いて許可設定コードを生成し（ステップ７０１ＹＥＳ，ステップ７０３）、新たな許可設定コードとして現在登録されている許可設定コードの代わりにメモリ内の所定箇所に書き込む（ステップ７０４）。許可設定コードの書換処理が終了したら、許可設定コード書込処理が正常終了した旨を開発支援装置に送信し、当該処理を終了する（ステップ７０５）。一方、許可設定コードが『第１のコード』でなかった場合には（ステップ７０１ＮＯ）、許可設定コードが書換不可能である旨の情報を開発支援装置に送信し、プロテクト設定処理を終了する（ステップ７０２）。
【００５３】
なお、図６及び図７において、新たに登録された許可設定コードが『第２のコード』であった場合には、先にも述べたように以降許可設定コードの書き換え、読み出しのいずれも不可能となる。また、登録された許可設定コードが既知の許可設定コードのいずれでもなかった場合には、『読出禁止コード（第３のコード）』として登録される。
【００５４】
次に、プロテクト設定処理における開発支援装置側の処理について説明する。開発支援装置側のプロテクト設定処理の詳細フローが図８に示されている。プロテクト設定処理がはじまると、先ずプロテクト設定コマンドとパスワードをＰＬＣに送信する（ステップ８０１）。ここで、パスワードはプロテクト設定コマンドに付して送信されてもよいし、プロテクト設定コマンドと別に送信されてもよい。とＰＬＣでの処理が終了しレスポンスが送られてきたら、送られてきたレスポンスの種別を判定する（ステップ８０２ＹＥＳ，ステップ８０３）。送られてきたレスポンスが正常終了レスポンスであったときには、正常終了である旨を表示し、処理を終了する（ステップ８０３正常終了，ステップ８０４）。また、送られてきたレスポンスが書換不可能レスポンスであったときには、許可設定コードの書換が不可能である旨を表示して処理を終了する（ステップ８０３書換不可，ステップ８０５）。
【００５５】
次に、プロテクト解除処理について説明する。ＰＬＣ側のプロテクト解除処理の詳細フローが図９に示されている。ＰＬＣでプロテクト解除処理が開始されると、先ずはじめにメモリに格納されている許可設定コードの種別判定が行われる（ステップ９０１）。許可設定コードの種別が『第１のコード』であったときには、開発支援装置に処理が正常終了したというレスポンスを返し、処理を終了する（ステップ９０１第１，ステップ９０２）。許可設定コードの種別が『第２のコード』であったときには、開発支援装置に読み出しが不可能であるとのレスポンスを返し、処理を終了する（ステップ９０１第２，ステップ９０３）。許可設定コードの種別が『第１、第２以外のコード』（第３のコード）であったときには（ステップ９０１第１、第２以外）、開発支援装置から送られてきたパスワードが登録されている許可設定コードと等しいか否かの判定を行う（ステップ９０４ＹＥＳ，ステップ９０５）。パスワードと許可設定コードが等しかったときには（ステップ９０５ＹＥＳ）、メモリ内の所定領域に格納されている許可設定コードを『第３のコード』から『第１のコード』に変更し（ステップ９０６）、正常終了のレスポンスを開発支援装置に返し処理を終了する（ステップ９０７）。パスワードと許可設定コードが一致しなかったときには（ステップ９０５ＮＯ）、解除できなかったという内容のエラーレスポンスを開発支援装置に返し、当該処理を終了する（ステップ９０８）。
【００５６】
開発支援装置側のプロテクト解除処理の詳細フローが図１０に示されている。開発支援装置でプロテクト解除処理が開始されると、先ずはじめにこの処理がプロテクト解除コマンドとパスワードをＰＬＣに送信する（ステップ１００１）。ここで、パスワードはプロテクト解除コマンドに付して送信されてもよいし、プロテクト設定コマンドと別に送信されてもよい。パスワードを送信した後は、ＰＬＣで図９に示した処理が終了しレスポンスが送られてくるまで待機し、ＰＬＣから送られてきたレスポンスの種別判定を行う（ステップ１００２，ステップ１００３）。送られてきたレスポンスが正常終了レスポンスであったときには（ステップ１００３正常終了）、正常終了の表示を行い処理を終了する（ステップ１００４）。送られてきたレスポンスが読出不可能レスポンスであったときには（ステップ１００３読出不可能）、読出不可能の表示を行い処理を終了する（ステップ１００５）。送られてきたレスポンスがエラーレスポンスであったときには（ステップ１００３エラー）、解除できなかった旨のエラー表示を行い処理を終了する（ステップ１００６）。
【００５７】
次に、読出処理について説明する。ＰＬＣ側の読出処理の詳細フローが図１１に示されている。読出処理が開始されると、先ずはじめにメモリ内の所定領域に格納されている許可設定コードの種別判定が行われる（ステップ１１０１）。登録されている許可設定コードが『第１のコード』以外のコードであったときには（ステップ１１０１ＮＯ）、開発支援装置に読出不可能レスポンスを送信し、処理を終了する（ステップ１１０２）。登録されている許可設定コードが『第１のコード』であったときには（ステップ１１０１ＹＥＳ）、開発支援装置に読み出し要求のあったプログラムを送信し、この処理を終了する（ステップ１１０３）。
【００５８】
開発支援装置側の読出処理の詳細フローが図１２に示されている。開発支援装置で読出処理が開始されると、先ず当該処理が読出処理であるという情報をＰＬＣに送信する（ステップ１２０１）。読出コマンドを送信した後は、ＰＬＣで図１１に示した処理が終了しレスポンスが送られてくるまで待機し、ＰＬＣから送られてきたレスポンスの種別判定を行う（ステップ１２０２，ステップ１２０３）。ＰＬＣで読出が許可されプログラムが送信されてきた場合には（ステップ１２０３読出許可）、プログラムの受信処理を行い読出処理を終了する（ステップ１２０４）。レスポンス種別が読出不可能レスポンスであったときには（ステップ１２０３読出不可能）、読出不可能である旨の表示を行いこの処理を終了する（ステップ１２０５）。
【００５９】
以上述べたように、本発明においては許可設定コードが『第１のコード』の場合のみユーザプログラムは読出可能である。許可設定コードが『第２のコード』あって解除したい場合には、ユーザプログラム自体を消去することにより別途メモリ内に格納されたパスワードも同時に消去され、これによりパスワードの解除を行うことが可能である。このようにしてユーザプログラムの消去を行うときの開発支援装置側の処理手順が図１３に示されている。ユーザプログラムの消去要求があったときには、指示通りユーザプログラムの消去を行うと復元出来ない旨の警告文を表示する（ステップ１３０１ＹＥＳ，ステップ１３０２）。警告文を表示した後にユーザプログラムを消去するか否かの選択を表示し、ユーザプログラムを消去しないという選択がなされた場合には（ステップ１３０３ＮＯ）、そのまま処理を終了する。ユーザプログラムを消去するという選択がなされた場合には（ステップ１３０３ＹＥＳ）、ＰＬＣにユーザプログラムを消去するという指示を送信し、ＰＬＣでユーザプログラムの消去処理が完了するまで待機する（ステップ１３０４，ステップ１３０５）。ＰＬＣよりユーザプログラムの消去が完了したというレスポンスが送られてきたら（ステップ１３０５ＹＥＳ）、ユーザプログラムの消去が完了したという表示を行い処理を終了する（ステップ１３０６）。なお、ＰＬＣ側では、ステップ１３０４のユーザプログラム消去指示が送られてきた場合にはユーザプログラムの消去及び第２のコードの消去を行い、処理が完了したというレスポンスを開発支援装置に送信する、という処理が行われている。
【産業上の利用可能性】
【００６０】
本発明によれば、この種のパスワードプロテクト方式を採用するＰＬＣシステムにおいて、開発支援装置側におけるプロテクト設定操作並びにプロテクト解除操作を一切変更することなく、パスワードの漏洩、盗用、総当たりによる解読等によるプロテクトの不正解除を未然に防止することができる。
【図面の簡単な説明】
【００６１】
【図１】本発明が適用されたＰＬＣシステムの主要構成図である。
【図２】開発支援装置のハードウェア構成を示すブロック図である。
【図３】ＰＬＣのゼネラルフローチャートである。
【図４】開発支援装置側のゼネラルフローチャートである。
【図５】開発支援装置から受信したコマンドに対応するＰＬＣ側の処理を示すフローチャートである。
【図６】ＰＬＣ側のプロテクト設定処理詳細フロー（その１）である。
【図７】ＰＬＣ側のプロテクト設定処理詳細フロー（その２）である。
【図８】開発支援装置側のプロテクト設定処理詳細フローである。
【図９】ＰＬＣ側のプロテクト解除処理詳細フローである。
【図１０】開発支援装置側のプロテクト解除処理詳細フローである。
【図１１】ＰＬＣ側の読出処理詳細フローである。
【図１２】開発支援装置側の読出処理詳細フローである。
【図１３】開発支援装置側のユーザプログラム消去処理フローである。
【符号の説明】
【００６２】
１０  ＰＬＣ
２０  開発支援装置（パソコン）
３０  通信ケーブル
１０１  ＲＯＭ
１０２  ＭＰＵ
１０３  ユーザメモリ
１０４  ワークＲＡＭ
１０５  データ格納用不揮発性メモリ
１０６  ＡＳＩＣ
１０７  入出力メモリ
２０１  ＣＰＵ
２０２  入力部
２０３  出力部
２０４  表示部
２０５  通信部
２０６  電源部
２０７  記憶部
２１０  外部記憶部
【図１】
0004471120.tif 000002
【図２】
0004471120.tif 000003
【図３】
0004471120.tif 000004
【図４】
0004471120.tif 000005
【図５】
0004471120.tif 000006
【図６】
0004471120.tif 000007
【図７】
0004471120.tif 000008
【図８】
0004471120.tif 000009
【図９】
0004471120.tif 000010
【図１０】
0004471120.tif 000011
【図１１】
0004471120.tif 000012
【図１２】
0004471120.tif 000013
【図１３】
0004471120.tif 000014