(57)【特許請求の範囲】
【請求項１】
保護を解除するためのパスワードが記述されたパスワード記述部、および表示禁止の有無、編集禁止の有無を少なくとも有する保護仕様が記述された保護仕様記述部を含み保護開始位置を表す保護命令と、保護終了位置を示す保護終了命令とが予め命令中の任意の部分に書き込まれたシーケンスプログラムが搭載されているプログラマブルコントローラから前記シーケンスプログラムを取り込んで編集するプログラマブルコントローラの周辺装置であって、
前記プログラマブルコントローラから転送される前記シーケンスプログラムをメモリ上で記憶管理するプログラム記憶部と、
プログラマブルコントローラおよびプログラム記憶部間のシーケンスプログラムの転送を制御するプログラム転送制御部と、
前記保護命令の保護仕様記述部に編集禁止あるいは表示禁止の保護仕様が記述されているか否かを判定し、編集禁止あるいは表示禁止の保護仕様が記述されている場合は、前記パスワード記述部に記述されたパスワードに一致するパスワードが入力されない限り、前記プログラム記憶部によって記憶管理されるシーケンスプログラムにおける前記保護命令から保護終了命令までの保護領域部分の編集を禁止するプログラム編集部と、
前記保護命令の保護仕様記述部に表示禁止の保護仕様が記述されているか否かを判定し、表示禁止の保護仕様が記述されている場合は、前記パスワード記述部に記述されたパスワードに一致するパスワードが入力されない限り、前記プログラム記憶部によって記憶管理されるシーケンスプログラムにおける前記保護命令から保護終了命令までの保護領域部分の表示を禁止する表示制御部と、
を備えることを特徴とするプログラマブルコントローラの周辺装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブルコントローラを動作させるためのプログラム保護に関し、特にプログラマブルコントローラ用のプログラムの保護を行うプログラマブルコントローラの周辺装置に関するものである。
【０００２】
【従来の技術】
図２１は従来のプログラマブルコントローラ（以下ＰＣと称す）の周辺装置の構成図である。この周辺装置１は、ＰＣ２０を動作させるためのプログラムを開発するためのものであり、ＰＣインタフェース部２と、プログラム転送制御部３と、プログラム記憶部４と、プログラム編集部５と、キャラクタデータ作成部６と、プログラムモニタ部７と、オペレータインタフェース部８と、補助記憶装置インタフェース部９と、補助記憶装置１０とを有している。
【０００３】
ＰＣインタフェース部２はＰＣ２０との間でデータの授受を行い、プログラム転送制御部３はＰＣ２０や補助記憶装置１０とプログラム記憶部４との間のプログラムの転送制御を行う。
【０００４】
プログラム記憶部４は、プログラム編集やモニタ等を行うために、ＰＣ２０や補助記憶装置１０のプログラムをメモリ上に記憶管理し、プログラム編集部５はプログラム記憶部４に記憶されているプログラムを編集する。
【０００５】
キャラクタデータ作成部６はプログラムをラダーダイアグラムで画面上に表示するためのキャラクタデータを作成し、プログラムモニタ部７はプログラム記憶部４のデータとキャラクタデータ作成部６で作成されたデータとＰＣ２０から得られるデータを元にプログラムのモニタ表示を行う。
【０００６】
オペレータインタフェース部８は実際の画面表示やオペレータとのインタフェースを行う。
【０００７】
補助記憶装置インタフェース部９は補助記憶装置１０にアクセスするためのインタフェースであり、補助記憶装置１０は作成されたプログラムやパラメータ等を格納する。
【０００８】
つぎに、従来のＰＣのプログラム保護方法について、図２２〜図２４のフローチャートを用いて説明する。
【０００９】
まず、ＰＣのプログラムの編集を行う場合の動作について説明する。編集の対象となるプログラムは、オペレータインタフェース部８からのオペレータ指示により、プログラム転送制御部３が動作することで、ＰＣ２０あるいは補助記憶装置１０よりプログラム記憶部４に転送される。
【００１０】
このプログラムの転送制御について図２２を参照して説明する。オペレータインタフェース部８からの転送要求が、プログラム記憶部４からＰＣ２０への転送であるか否かを判別し（ステップＳ２２０１）、プログラム記憶部４からＰＣ２０への転送であれば（ステップＳ２２０１肯定）、転送先のＰＣ２０内でプログラム単位に設定されている書き込み禁止の情報をチェックし（ステップＳ２２０２）、同一のプログラムが書き込み禁止で存在していれば（ステップＳ２２０２肯定）、転送を行わないで、終了する。
【００１１】
これに対し、書き込み禁止でなければ（ステップＳ２２０２否定）、プログラム記憶部４からＰＣ２０へ、ＰＣインタフェース部２を介してプログラムを転送する（ステップＳ２２０３）。
【００１２】
オペレータインタフェース部８からの転送要求が、プログラム記憶部４から補助記憶装置１０への転送であれば（ステップＳ２２０１否定→ステップＳ２２０４肯定）、転送先の補助記憶装置１０内の同一のプログラムが、書き込み禁止で存在していないかを補助記憶装置インタフェース部９を介してチェックし（ステップＳ２２０５）、書き込み禁止であれば（ステップＳ２２０５肯定）、転送を行わないで、終了する。
【００１３】
これに対し、書き込み禁止でない場合には（ステップＳ２２０５否定）、プログラム記憶部４から補助記憶装置１０へ、補助記憶装置インタフェース部９を介してプログラムを転送する（ステップＳ２２０６）。
【００１４】
オペレータインタフェース部８からの転送要求が、ＰＣ２０内のプログラムの編集等の目的で、ＰＣ２０からプログラム記憶部４への転送であれば（ステップＳ２２０１否定→ステップＳ２２０４否定→ステップＳ２２０７肯定）、ＰＣ２０内でプログラム単位に設定されている読み出し禁止の情報をチェックし（ステップＳ２２０８）、読み出し禁止であれば（ステップＳ２２０８肯定）、転送を行わないで、終了する。
【００１５】
これに対し、読み出し禁止でない場合には（ステップＳ２２０８否定）、ＰＣ２０からプログラム記憶部４へ、ＰＣインタフェース部２を介してプログラムを転送する（ステップＳ２２０９）。
【００１６】
オペレータインタフェース部８からの転送要求が、補助記憶装置１０内のプログラムの編集等の目的で、補助記憶装置１０からプログラム記憶部４への転送であれば（ステップＳ２２０１否定→ステップＳ２２０４否定→ステップＳ２２０７否定）、転送するファイルが補助記憶装置１０内で読み出し禁止になっていないであるか否かを判別し（ステップＳ２２１０）、読み出し禁止になっていれば（ステップＳ２２１０肯定）、転送を行わないで、終了する。
【００１７】
これに対し、読み出し禁止になっていない場合には（ステップＳ２２１０否定）、補助記憶装置１０からプログラム記憶部４へ、補助記憶装置インタフェース部９を介してプログラムを転送する（ステップＳ２２１１）。
【００１８】
つぎにプログラム編集部の動作について図２３を参照して説明する。ＰＣ２０あるいは補助記憶装置１０からプログラム記憶部４へのプログラムの転送が完了すると、オペレータインタフェース部８によってプログラム編集部５が起動される。
【００１９】
プログラム編集部５では、編集するプログラム（シーケンスプログラム）をプログラム記憶部４から読み出し（ステップＳ２３０１）、実際にプログラムの命令リストから、ラダーダイアグラムで画面上に表示するためのキャラクタデータを作成するために、キャラクタデータ作成部６へ読み出したプログラムを引き渡し、キャラクタデータを作成する（ステップＳ２３０２）。
【００２０】
キャラクタデータがキャラクタデータ作成部６で作成されれば、オペレータインタフェース部８を介して実際にラダーダイアグラムの編集画面をコンソールに画面表示する（ステップＳ２３０３）。
【００２１】
続いて、編集操作が行われるか否かをチェックし（ステップＳ２３０４）、編集操作があれば（ステップＳ２３０４肯定）、編集操作に応じた編集処理を行い（ステップＳ２３０５）、編集結果をプログラム記憶部４に反映する（ステップＳ２３０６）。
【００２２】
編集操作がない場合には（ステップＳ２３０４否定）、編集の終了操作が行われたか否かをチェックし（ステップＳ２３０７）、終了操作が行われていれば（ステップＳ２３０７肯定）、プログラム編集部の処理を終了する。
【００２３】
編集したプログラムをＰＣ２０に反映する場合は、オペレータインタフェース部８から、プログラム記憶部４からＰＣ２０あるいは補助記憶装置１０への転送要求がプログラム転送制御部３に対し行われる。このとき、プログラム転送制御部３によって、転送先に同一のプログラムが、書き込み禁止で存在しているかチェックを行って、書き込み禁止となっていれば転送が行われず、編集結果はＰＣ２０あるいは補助記憶装置１０に反映されない。
【００２４】
つぎにプログラムをモニタする場合の動作を図２４を参照して説明する。オペレータインタフェース部８からモニタ開始要求がプログラムモニタ部７に出されると、まず全キャラクタデータのトレースが完了したか否かをチェックし（ステップＳ２４０１）、トレースが完了していなければ（ステップＳ２４０１否定）、現在のキャラクタデータからラダーダイアグラムのモニタを行うために、１命令分のキャラクタデータを取り出してモニタデータを作成する（ステップＳ２４０２，ステップＳ２４０３）。モニタデータには、ラダーダイアグラムで表現されている接点やコイルの情報と、それぞれのキャラクタデータ上の位置データなどが含まれる。
【００２５】
全キャラクタデータのモニタデータの作成が完了した時点で（ステップＳ２４０１肯定）、モニタデータから、ＰＣ２０での接点やコイルの現在の情報をＰＣ２０に対して、ＰＣインタフェース部２を介して要求する（ステップＳ２４０４）。
【００２６】
続いて、ＰＣ２０からの情報の受信を待ち（ステップＳ２４０５）、受信した接点やコイルの情報を元に、画面上に接点の状態をオペレータインタフェース部８を介してモニタ表示する（ステップＳ２４０６）。
【００２７】
続いて、ここまでの処理中にモニタ終了要求が、オペレータから出されていないか否かをチェックし（ステップＳ２４０７）を行い、モニタ終了要求が出されていれば（ステップＳ２４０７肯定）、プログラムモニタ部の処理を終了する。これに対し、モニタ終了要求が出されていなければ（ステップＳ２４０７否定）、ステップＳ２４０４からの処理を継続して行う。
【００２８】
つぎにキャラクタデータ作成部６の動作について図２５を参照して説明する。キャラクタデータ作成部６は、渡されたプログラムの命令リストの先頭から、終了命令までの各命令からラダーダイアグラムの表示を行うためのデータ変換を行い、キャラクタデータを作成する（ステップＳ２５０１，ステップＳ２５０２）。
【００２９】
また、その他の従来技術として、特開平１−２３１１０２号公報に示されているように、ＰＣ内部の制御パラメータの部分にも、パスワードと設定許可コードで、書き込みの保護を行うものや、特開平５−２３３０３６号公報に示されているように、プログラム中の命令により、ＰＣからのプログラムの読み出しを禁止したり、書き込みを禁止するものがある。
【００３０】
【発明が解決しようとする課題】
従来のＰＣのプログラム保護方法は単にプログラムのＰＣからの読み出しや書き込みを禁止するものであり、このプログラム保護方法では、ＰＣを搭載したシステムを製作したメーカにとっては、メーカのトレードシークレットは保護できるものの、実際の運用にあたっては、メーカ側ではなくユーザ側でのプログラムの調整が必要な部分までも、保護によって自由に変更できないと云う問題点があった。
【００３１】
従来のプログラム保護方法では、プログラムメモリ中に保護のための命令が入っていたとしても、実際に保護されるべき部分は、プログラム中にそのまま存在するため、補助記憶装置等にプログラムを格納した場合、プログラム中のデータを解析し、部分的にコピーしたりすることで、保護されている部分の内容が比較的容易に取り出せてしまうと云う問題点があった。
【００３２】
この発明は、上述のような問題点を解決するためになされたもので、プログラムの意図された部分のみの変更を禁止し、またプログラムの意図された部分の振る舞いが分からないように、意図された部分のプログラムのモニタができないようし、またトレードシークレットを確実に保護するために、プログラムの意図された部分の表示を行わないようにしたりして、メーカのトレードシークレットの保護と、実際の運用にあたってのユーザ側でのプログラムの調整とを両立し、また意図された部分を容易にコピーなどで取り出せないようにするプログラマブルコントローラの周辺装置を提供することを目的とする。
【００３３】
【課題を解決するための手段】
上述の目的を達成するために、この発明によるプログラマブルコントローラの周辺装置は、保護を解除するためのパスワードが記述されたパスワード記述部、および表示禁止の有無、編集禁止の有無を少なくとも有する保護仕様が記述された保護仕様記述部を含み保護開始位置を表す保護命令と、保護終了位置を示す保護終了命令とが予め命令中の任意の部分に書き込まれたシーケンスプログラムが搭載されているプログラマブルコントローラから前記シーケンスプログラムを取り込んで編集するプログラマブルコントローラの周辺装置であって、前記プログラマブルコントローラから転送される前記シーケンスプログラムをメモリ上で記憶管理するプログラム記憶部と、プログラマブルコントローラおよびプログラム記憶部間のシーケンスプログラムの転送を制御するプログラム転送制御部と、前記保護命令の保護仕様記述部に編集禁止あるいは表示禁止の保護仕様が記述されているか否かを判定し、編集禁止あるいは表示禁止の保護仕様が記述されている場合は、前記パスワード記述部に記述されたパスワードに一致するパスワードが入力されない限り、前記プログラム記憶部によって記憶管理されるシーケンスプログラムにおける前記保護命令から保護終了命令までの保護領域部分の編集を禁止するプログラム編集部と、前記保護命令の保護仕様記述部に表示禁止の保護仕様が記述されているか否かを判定し、表示禁止の保護仕様が記述されている場合は、前記パスワード記述部に記述されたパスワードに一致するパスワードが入力されない限り、前記プログラム記憶部によって記憶管理されるシーケンスプログラムにおける前記保護命令から保護終了命令までの保護領域部分の表示を禁止する表示制御部とを備えることを特徴とする。
【００４５】
【発明の実施の形態】
以下に添付の図を参照してこの発明の実施の形態を詳細に説明する。なお、以下に説明するこの発明の実施の形態において上述の従来例と同一構成の部分は、上述の従来例に付した符号と同一の符号を付してその説明を省略する。
【００４６】
図１はこの発明によるＰＣのプログラム保護方法の実施に使用される周辺装置を示している。この周辺装置１は、プログラム転送制御部３とプログラム記憶部４との間に、データの暗号化・復号化部１１を含んでいる。
【００４７】
暗号化・復号化部１１は、プログラム転送制御部３によってプログラム記憶部４からＰＣインタフェース部２を介してプログラムをＰＣ２０に転送したり、ＰＣ２０からプログラム記憶部４へのプログラム転送、あるいはプログラム記憶部４から補助記憶装置１０へのプログラム転送、補助記憶装置１０からプログラム記憶部４へのプログラム転送の際に、プログラムの保護命令から保護終了命令の間のデータを暗号化および復号化する。
【００４８】
つぎにこの発明によるＰＣのプログラム保護方法の実施要領を図２〜図２１のフローチャート及びデータを表す図面を用いて説明する。
【００４９】
プログラムの意図された部分の保護のために、保護命令“ＰＲＯＴＥＣＴ”と保護終了命令“ＰＲＯＴＥＣＴＥＮＤ”とが用意されており、プログラムの意図された部分の保護を行いたい部分に、予め保護命令“ＰＲＯＴＥＣＴ”と保護終了命令“ＰＲＯＴＥＣＴＥＮＤ”を編集してプログラムに書き込んでおく。
【００５０】
保護命令“ＰＲＯＴＥＣＴ”は、図２に示されているように、パスワード記述部とオプション記述部を有しており、パスワード記述部には保護を解除する際に必要なパスワードを記述し、オプション記述部には保護仕様を記号で記述する。
【００５１】
オプション指定には、保護終了命令までの部分をプログラムの編集を禁止する“ＭＯＤＩＦＹ”と、プログラムの表示を禁止する“ＤＩＳＰＬＡＹ”と、プログラムのモニタを禁止する“ＭＯＮＩＴＯＲ”と、プログラムにおけるデバイスのモニタを禁止する“ＤＥＶ−ＭＯＮ”と、保護終了命令までの部分を暗号化する“ＣＩＰＨＥＲ”がある。“ＤＩＳＰＬＡＹ”がオプション指定された場合には、表示禁止により必然的に編集やモニタも禁止になり、“ＭＯＮＩＴＯＲ”がオプション指定された場合には、モニタ禁止により必然的に編集も禁止になる。
【００５２】
例えば、図３に示されているようなプログラムに表示および編集、モニタ禁止の部分を設ける場合には、図４（ａ）に示されているように、プログラム中に、保護命令“ＰＲＯＴＥＣＴ”と保護終了命令“ＰＲＯＴＥＣＴＥＮＤ”を記述する。これをラダーダイアグラムで表すと、図５のようになる。
【００５３】
また、図４（ｂ）は、プログラム中に保護命令“ＰＲＯＴＥＣＴ”が、表示禁止“ＤＩＳＰＬＡＹ”の指定で、置かれている場合の命令リストでの画面表示例を示している。
【００５４】
ＰＣ２０のプログラムの編集を行う場合、編集の対象となるプログラムは、オペレータインタフェース部８からのオペレータの指示によって、プログラム転送制御部３からプログラム記憶部４へ転送される。プログラムの転送については、従来技術と同様であるが、プログラムがプログラム記憶部４へ転送される際には、暗号化・復号化部１１で暗号化されている部分が復号される。
【００５５】
つぎに、プログラム編集部５の動作について図６のフローチャートを用いて説明する。オペレータインタフェース部８から起動されたプログラム編集部５は、シーケンスプログラムをプログラム記憶部４から読み出す（ステップＳ６０１）。続いて、読み出したプログラムをキャラクタデータ作成部６に引渡し、プログラムの命令リストから、ラダーダイアグラム表示のためのキャラクタデータを作成する（ステップＳ６０２）。
【００５６】
キャラクタデータが作成されれば、キャラクタデータを元に、オペレータインタフェース部８にて画面上にラダーダイアグラムを表示する（ステップＳ６０３）。このとき、プログラム中に含まれる保護命令のオプション指定の如何によって、作成されるキャラクタデータが異なるため、画面表示も異なる。
【００５７】
保護命令“ＰＲＯＴＥＣＴ”に“ＭＯＤＩＦＹ”あるいは“ＭＯＮＩＴＯＲ”がオプション指定されている場合には、編集禁止であるが、表示は許可なので、図７に示されているように、編集禁止領域が反転表示され、“ＤＩＳＰＬＡＹ”がオプション指定されている場合には、表示も禁止であるから、図８に示されているように、保護命令“ＰＲＯＴＥＣＴ”と保護終了命令“ＰＲＯＴＥＣＴＥＮＤ”との間のプログラムが表示されない。
【００５８】
つぎに、オペレータインタフェース部８から編集の操作を待つ（ステップＳ６０４）。編集操作があった場合には（ステップＳ６０４肯定）、編集操作を行おうとしている箇所が、保護されている範囲であるか否かをチェックする（ステップＳ６０５）。保護されている範囲でなければ（ステップＳ６０５否定）、編集操作に応じた処理を行い（ステップＳ６１０）、続いて編集結果をプログラム記憶部４に反映する（ステップＳ６１１）。
【００５９】
これに対し、編集操作を行おうとしている箇所が保護されている範囲である場合には（ステップＳ６０５肯定）、既に保護が解除されているか否かをチェックする（ステップＳ６０６）。既に保護が解除されていれば（ステップＳ６０６肯定）、保護されている範囲外の部分と同様に、編集操作に応じた処理を行い（ステップＳ６１０）、続いて編集結果をプログラム記憶部４に反映する（ステップＳ６１１）。
【００６０】
保護が解除されていない場合には（ステップＳ６０６否定）、図９〜図１１に示されているようなパスワードの入力を促す画面を表示する（ステップＳ６０７）。
【００６１】
つぎに、入力されたパスワードが、保護命令“ＰＲＯＴＥＣＴ”のパスワード記述部に記述されているパスワードと一致するか否かのチェックを行い（ステップＳ６０８）、一致すれば（ステップＳ６０８肯定）、保護を解除し（ステップＳ６０９）、編集操作に応じた処理を行い（ステップＳ６１０）、続いて編集結果をプログラム記憶部４に反映する（ステップＳ６１１）。
【００６２】
パスワードが一致していない場合には（ステップＳ６０８否定）、該当部分が編集できないことを示すメッセージを表示し（ステップＳ６１２）、ステップＳ６０４に戻る。
【００６３】
編集処理の終了は、ステップＳ６１３でチェックし、編集終了が指示されていれば（ステップＳ６１３肯定）、編集処理は終了する。編集終了が指示されていなければ（ステップＳ６１３否定）、ステップＳ６０４に戻る。
【００６４】
つぎにキャラクタデータ作成部６の処理を図１２のフローチャートを用いて説明する。プログラム編集部５からキャラクタデータの作成要求がキャラクタデータ作成部６に出されると、まず終了命令であるか否かをチェックし（ステップＳ１２０１）、終了命令であれば（ステップＳ１２０１肯定）、キャラクタデータの作成を終了する。
【００６５】
終了命令でない場合には（ステップＳ１２０１否定）、保護命令“ＰＲＯＴＥＣＴ”であるか否かをチェックする（ステップＳ１２０２）。保護命令“ＰＲＯＴＥＣＴ”でなければ（ステップＳ１２０２否定）、命令をキャラクタデータに変換し、通常のキャラクタデータを作成する（ステップＳ１２０８）。
【００６６】
これに対し、保護命令“ＰＲＯＴＥＣＴ”である場合には（ステップＳ１２０２肯定）、すでにプログラム編集部５で保護が解除されているか否を判別する（ステップＳ１２０３）。解除されていれば（ステップＳ１２０３肯定）、命令をキャラクタデータに変換し、通常のキャラクタデータを作成する（ステップＳ１２０８）。
【００６７】
保護が解除されていなければ（ステップＳ１２０３否定）、保護命令“ＰＲＯＴＥＣＴ”のオプション記述部をチェックし、表示禁止“ＤＩＳＰＬＡＹ”がオプション指定されていれば（ステップＳ１２０４肯定）、保護終了命令“ＰＲＯＴＥＣＴＥＮＤ”まで、表示プロテクト領域である旨を表示するためのキャラクタデータを作成する（ステップＳ１２０５）。
【００６８】
これに対し、保護命令“ＰＲＯＴＥＣＴ”で、編集禁止“ＭＯＤＩＦＹ”あるいはあるいはモニタ禁止“ＭＯＮＩＴＯＲ”が指定されている場合には（ステップＳ１２０６肯定）、保護終了命令“ＰＲＯＴＥＣＴＥＮＤ”までの範囲を、反転表示するキャラクタデータを作成する（ステップＳ１２０７）。
【００６９】
なお、保護命令はあるものの、編集禁止、モニタ禁止あるいは表示禁止が指定されていない場合には（ステップＳ１２０６否定）、通常のキャラクタデータを作成する（ステップＳ１２０８）。
【００７０】
プログラムモニタを行う際の動作を図１３のフローチャートを用いて説明する。オペレータインタフェース部８からモニタ開始要求がプログラムモニタ部７に出されると、まず全キャラクタデータのトレースが完了したか否かをチェックし（ステップＳ１３０１）、トレースが完了していなければ（ステップＳ１３０１否定）、１命令分のキャラクタデータを取出す（ステップＳ１３０２）。
【００７１】
つぎに、取り出したキャラクタデータが保護命令によるモニタ禁止領域内のデータであるか否かをチェックし（ステップＳ１３０３）、モニタ禁止領域内のデータでなければ（ステップＳ１３０３否定）、モニタデータを作成する（ステップＳ１３０５）。
【００７２】
これに対し、モニタ禁止領域内のデータであった場合には（ステップＳ１３０３肯定）、すでにモニタ禁止の保護が解除済みであるか否かをチェックし（ステップＳ１３０４）、解除済みであれば（ステップＳ１３０４肯定）、モニタデータを作成する（ステップＳ１３０５）。保護解除済みでなければ（ステップＳ１３０４否定）、モニタデータを作成せずにステップＳ１３０１に戻る。
【００７３】
このようにしてモニタデータの作成が完了すれば（ステップＳ１３０１肯定）モニタデータから、ＰＣ２０での接点やコイルの現在の情報をＰＣ２０に対して、ＰＣインタフェース部２を介して要求する（ステップＳ１３０６）。
【００７４】
続いて、ＰＣ２０からの情報の受信を待ち（ステップＳ１３０７）、受信した現在接点やコイルの情報を元に、接点の状態をオペレータインタフェース部８を介してモニタ表示する（ステップＳ１３０８）。
【００７５】
このとき、保護命令“ＰＲＯＴＥＣＴ”で、モニタ禁止の指定“ＭＯＮＩＴＯＲ”がある場合には、キャラクタデータ作成部６にて、保護されている範囲が反転され、さらにモニタも行われないため、図７に示されているような画面表示になる。
【００７６】
つづいて、モニタ禁止領域のモニタ要求が、オペレータインタフェース部８などから指示されていないか否かをチェックし（ステップＳ１３０９）、モニタ禁止領域でのモニタ要求がある場合には（ステップＳ１３０９肯定）、ステップＳ１３１０に移行し、ここで、すでにモニタ禁止の保護が解除されていれば（ステップＳ１３１０肯定）、そのままモニタを継続して行う。
【００７７】
これに対し、モニタ禁止の保護が解除されていない場合には（ステップＳ１３１０否定）、図９に示されているように、パスワード入力を促す画面を表示し、パスワードの入力処理を行う（ステップＳ１３１１）。
【００７８】
入力されたパスワードが保護命令“ＰＲＯＴＥＣＴ”のパスワード記述部に記述されているパスワードと一致すれば（ステップＳ１３１２肯定）、モニタ禁止保護の解除を行い（ステップＳ１３１４）、ステップＳ１３０１に戻り、モニタデータの作成から、再度行う。
【００７９】
入力されたパスワードが一致しなければ（ステップＳ１３１２否定）、該当部分のモニタができない旨を画面に表示し（ステップＳ１３１３）、ステップＳ１３０６からの処理を繰り返す。
【００８０】
モニタ禁止領域でのモニタ要求がない場合には（ステップＳ１３０９否定）、モニタ処理中にオペレータインタフェース部８等から指示されるモニタ終了要求の有無をチェックし（ステップＳ１３１５）、モニタ終了要求があれば（ステップＳ１３１５肯定）、プログラムモニタ部７の処理を終了する。モニタ終了要求がなければ（ステップＳ１３１５否定）、ステップＳ１３０６からの処理を繰り返す。
【００８１】
上述のように、プログラム命令中の任意の部分に置かれた保護命令“ＰＲＯＴＥＣＴ”と保護終了命令“ＰＲＯＴＥＣＴＥＮＤ”により、キャラクタデータの作成時およびプログラム編集で、保護命令“ＰＲＯＴＥＣＴ”のつぎの行から保護終了命令“ＰＲＯＴＥＣＴＥＮＤ”までの行の編集を禁止、即ちプログラムの意図された部分のみの変更を禁止できるようにしたため、その他の部分の変更は行えるようになり、ＰＣが搭載されているシステムを運用する際、運用する側（ユーザ側）で自由に変更・調整が行える部分と、ＰＣのプログラムを作成した側とで誤って変更されてはいけない部分を分けられるようになる。
【００８２】
また、プログラム中の任意の部分に置かれた保護命令“ＰＲＯＴＥＣＴ”のオプション指定で、モニタ禁止“ＭＯＮＩＴＯＲ”が指定されていれば、保護範囲のデータのモニタを行わないから、ＰＣが搭載されているシステムを製作するメーカのプログラムの振る舞いの部分に関するトレードシークレットを守れるようになる。
【００８３】
また、プログラム中の任意の部分に置かれた保護命令“ＰＲＯＴＥＣＴ”に、表示禁止“ＤＩＳＰＬＡＹ”が指定されている場合には、キャラクタデータ作成部６で、その部分のキャラクタデータを作成せず、画面表示しないから、ＰＣが搭載されているシステムを製作するメーカのプログラムのトレードシークレットが守れるようになる。
【００８４】
つぎに、暗号化・復号化部１１の動作について図１４〜図１６のフローチャートを用いて説明する。オペレータインタフェース部８などからプログラムの転送要求がプログラム転送制御部３に対して行われると、プログラム記憶部４とプログラム転送制御部３の間で、プログラムが暗号化・復号化部１１により暗号化あるいは復号化の処理が行われる。
【００８５】
暗号化・復号化部１１では、補助記憶装置１０あるいはＰＣ２０からプログラム記憶部４へのプログラム転送であるか否かをチェックする（ステップＳ１４０１）。プログラム記憶部４へのプログラム転送の場合には（ステップＳ１４０１肯定）、プログラム記憶部４への複号化処理を行う（ステップＳ１４０２）。
【００８６】
これに対し、プログラム記憶部４への転送でないと判断した場合には、プログラム記憶部４から補助記憶装置１０あるいはＰＣ２０へのプログラム転送と判断し、プログラム記憶部４からの暗号化処理を行う（ステップＳ１４０３）。
【００８７】
図１５はプログラム記憶部４からの暗号化処理のフローチャートであり、この暗号化処理では、プログラムを順にチェックし、終了命令までの保護命令をチェックしながら、暗号化処理を行う。
【００８８】
先ず、プログラム終了命令までのチェックが完了したか否かを判別し（ステップＳ１５０１）、プログラム終了命令までのチェックが完了していない場合には（ステップＳ１５０１否定）、対象命令が保護命令“ＰＲＯＴＥＣＴ”であるか否かを判別し（ステップＳ１５０２）、保護命令“ＰＲＯＴＥＣＴ”でなければ（ステップＳ１５０２否定）、命令を暗号化せずにプログラム転送制御部３へ引き渡す（ステップＳ１５０６）。
【００８９】
これに対し、保護命令“ＰＲＯＴＥＣＴ”である場合には（ステップＳ１５０２肯定）、保護命令“ＰＲＯＴＥＣＴ”のパスワード記述部とオプション記述部の内容を暗号化する（ステップＳ１５０３）。
【００９０】
つづいて、保護命令“ＰＲＯＴＥＣＴ”のオプション記述部に暗号化の指定“ＣＩＰＨＥＲ”がされているか否かを判別し（ステップＳ１５０４）、指定されていれば（ステップＳ１５０４肯定）、保護終了命令“ＰＲＯＴＥＣＴ”までのプログラムを暗号化してプログラム転送制御部３に引き渡す（ステップＳ１５０５）。
【００９１】
保護命令“ＰＲＯＴＥＣＴ”のオプション記述部に暗号化の指定“ＣＩＰＨＥＲ”がされていない場合には（ステップＳ１５０４否定）、以降の命令を暗号化せずにプログラム転送制御部３へ引き渡す（ステップＳ１５０６）。
【００９２】
このように暗号化が行われるため、図１７に示されているように、保護命令“ＰＲＯＴＥＣＴ”のオプション記述部に暗号化“ＣＩＰＨＥＲ”が指定されているプログラムは、図１８に示す範囲の部分が暗号化されてプログラム転送制御部３へ渡される。
【００９３】
これに対し、図１９に示されているように、保護命令“ＰＲＯＴＥＣＴ”のオオプション記述部に暗号化“ＣＩＰＨＥＲ”が指定されていない場合には、図２０に示されているように、保護命令“ＰＲＯＴＥＣＴ”のパラメータ部分のみが暗号化される。
【００９４】
上述のように、保護範囲のプログラムは暗号化されてＰＣ２０や補助記憶装置１０に転送されるから、プログラム中の保護された部分のコピーやリバースエンジニアリングによる解析が阻止される。
【００９５】
なお、図１６はプログラム記憶部４への復号化処理のフローチャートであり、この復号化処理では、プログラムを順にチェックし、終了命令までの保護命令をチェックしながら、復号化処理を行う。
【００９６】
先ず、プログラム終了命令までのチェックが完了したか否かを判別し（ステップＳ１６０１）、プログラム終了命令までのチェックが完了していない場合には（ステップＳ１６０１否定）、対象命令が保護命令“ＰＲＯＴＥＣＴ”であるか否かを判別し（ステップＳ１６０２）、保護命令“ＰＲＯＴＥＣＴ”でなければ（ステップＳ１６０２否定）、命令をそのままプログラム記憶部４にセットする（ステップＳ１６０６）。
【００９７】
これに対し、保護命令“ＰＲＯＴＥＣＴ”である場合には（ステップＳ１６０２肯定）、暗号化された保護命令“ＰＲＯＴＥＣＴ”のパラメータを復号する（ステップＳ１６０３）。
【００９８】
つづいて、保護命令“ＰＲＯＴＥＣＴ”のオプション記述部に暗号化のパラメータ“ＣＩＰＨＥＲ”が記述されているであるか否かを判別し（ステップＳ１６０４）、暗号化のパラメータの記述があれば（ステップＳ１６０４肯定）、保護終了命令“ＰＲＯＴＥＣＴ”までのプログラムを復号してプログラム記憶部４にセットする（ステップＳ１６０５）。
【００９９】
保護命令“ＰＲＯＴＥＣＴ”のオプション記述部に暗号化の指定“ＣＩＰＨＥＲ”がされていない場合には（ステップＳ１６０４否定）、命令をそのままプログラム記憶部４にセットする（ステップＳ１６０６）。
【０１００】
【発明の効果】
以上の説明から理解される如く、この発明によるプログラマブルコントローラの周辺装置によれば、プログラムの保護命令から保護終了命令までの間以外の部分は編集、表示ができるが、保護命令から保護終了命令の部分は編集、表示ができなくなるから、プログラムの任意の部分の変更は行えるようになり、ＰＣが搭載されているシステムを運用する際、運用する側で自由に変更・調整が行える部分と、ＰＣのプログラムを作成した側で誤って変更されてはいけない部分とを分けることができ、メーカのトレードシークレットの保護と、実際の運用にあたってのユーザ側でのプログラムの調整とが両立するようになるとともに、プログラム保護に関して高いセキュリティ性が得られる。
【図面の簡単な説明】
【図１】  この発明によるＰＣのプログラム保護方法が適用されるＰＣ周辺装置の構成を示すブロック図である。
【図２】  この発明によるＰＣののプログラム保護方法で使用する保護命令の記述形式を示す説明図である。
【図３】  保護命令が入っていない状態のプログラムの命令リストを示す説明図である。
【図４】  （ａ）はこの発明によるＰＣのプログラム保護方法において、保護命令が入っている状態のプログラムの命令リスト例を示す説明図、（ｂ）はプログラム中に保護命令が表示禁止の指定で置かれている場合の命令リストでの画面表示例を示す説明図である。
【図５】  この発明によるＰＣのプログラム保護方法において、保護命令が入っている状態のプログラムをラダーダイアグラムで表現した説明図である。
【図６】  この発明によるＰＣのプログラム保護方法において、プログラム編集部の動作を表すフローチャートである。
【図７】  この発明によるＰＣのプログラム保護方法において、プログラム中に保護命令がモニタ禁止の指定で置かれている場合のラダーダイアグラムの画面表示例を示す説明図である。
【図８】  この発明によるＰＣのプログラム保護方法において、プログラム中に保護命令が表示禁止の指定で置かれている場合のラダーダイアグラムの画面表示例を示す説明図である。
【図９】  この発明によるＰＣのプログラム保護方法において、プログラム中にモニタ禁止の保護がされている部分を編集・モニタしようとした際の画面表示例を示す説明図である。
【図１０】  この発明によるＰＣのプログラム保護方法において、プログラム中に編集禁止の保護がされている部分を編集しようとした際の画面表示を示す説明図である。
【図１１】  この発明によるＰＣのプログラム保護方法において、プログラム中に表示禁止の保護がされている部分を編集・モニタしようとした際の、画面表示を示す説明図である。
【図１２】  この発明によるＰＣのプログラム保護方法において、キャラクタデータ作成部の動作を表すフローチャートである。
【図１３】  この発明によるＰＣのプログラム保護方法において、プログラムモニタ部の動作を表すフローチャートである。
【図１４】  この発明によるＰＣのプログラム保護方法において、暗号化・復号化部の動作を表すフローチャートである。
【図１５】  この発明によるＰＣのプログラム保護方法において、暗号化・復号化部のプログラム記憶部からの暗号化処理の動作を表すフローチャートである。
【図１６】  この発明によるＰＣのプログラム保護方法において、暗号化・復号化部のプログラム記憶部への復号化処理の動作を表すフローチャートである。
【図１７】  この発明によるＰＣのプログラム保護方法において、プログラム中に保護命令が暗号化指定で入っている状態のプログラムの命令リスト例を示す説明図である。
【図１８】  この発明によるＰＣのプログラム保護方法において、プログラム中に保護命令が暗号化指定で入っている状態の暗号化される範囲を示す説明図である。
【図１９】  この発明によるＰＣのプログラム保護方法において、プログラム中に保護命令が暗号化指定されていない状態のプログラムの命令リストを示す説明図である。
【図２０】  この発明によるＰＣのプログラム保護方法において、プログラム中に保護命令が暗号化指定されていない状態の暗号化される範囲を示した説明図である。
【図２１】  従来におけるＰＣのプログラム保護方法が適用されるＰＣ周辺装置の構成を示すブロック図である。
【図２２】  従来におけるＰＣのプログラム保護方法が適用されたＰＣ周辺装置におけるプログラム転送制御部の動作を表すフローチャートである。
【図２３】  従来におけるＰＣのプログラム保護方法が適用されたＰＣ周辺装置におけるプログラム編集部の動作を表すフローチャートである。
【図２４】  従来におけるＰＣのプログラム保護方法が適用されたＰＣ周辺装置におけるプログラムモニタ部の動作を表すフローチャートである。
【図２５】  従来における実施の形態であるＰＣのプログラム保護方法が適用されたＰＣ周辺装置におけるキャラクタデータ作成部の動作を表すフローチャートである。
【符号の説明】
１  周辺装置，２  ＰＣインタフェース部，３  プログラム転送制御部，４  プログラム記憶部，５  プログラム編集部，６  キャラクタデータ作成部，７  プログラムモニタ部，８  オペレータインタフェース部，９  補助記憶装置インタフェース部，１０  補助記憶装置，１１  暗号化・復号化部，２０  ＰＣ（プログラマブルコントローラ）。
【図１】
0003688827.tif 000002
【図２】
0003688827.tif 000003
【図３】
0003688827.tif 000004
【図４】
0003688827.tif 000005
【図５】
0003688827.tif 000006
【図６】
0003688827.tif 000007
【図７】
0003688827.tif 000008
【図８】
0003688827.tif 000009
【図９】
0003688827.tif 000010
【図１０】
0003688827.tif 000011
【図１１】
0003688827.tif 000012
【図１２】
0003688827.tif 000013
【図１３】
0003688827.tif 000014
【図１４】
0003688827.tif 000015
【図１５】
0003688827.tif 000016
【図１６】
0003688827.tif 000017
【図１７】
0003688827.tif 000018
【図１８】
0003688827.tif 000019
【図１９】
0003688827.tif 000020
【図２０】
0003688827.tif 000021
【図２１】
0003688827.tif 000022
【図２２】
0003688827.tif 000023
【図２３】
0003688827.tif 000024
【図２４】
0003688827.tif 000025
【図２５】
0003688827.tif 000026