(57)【要約】【課題】  ユーザ側の都合に合わせた改良を容易にしながらプログラムの盗用を防止できるようにする。【解決手段】  ソースプログラムＡ１の一部のノウハウ部Ｐ２を含むプログラム領域が暗号化プログラム部Ｐ４とされているので、プログラム提供業者は自社のノウハウを護ることができ、機密性を向上できるようになる。しかも、このソースプログラムＡ１を使用するユーザは、暗号化プログラム部Ｐ４以外の暗号化されていない非暗号化プログラム部Ｐ５については、開発用コンピュータによりロボット制御開発環境に合わせて改良することができる。【選択図】  図５
2005202663.tif 000002
【特許請求の範囲】
【請求項１】
プログラム提供業者により作成された少なくとも一のソースプログラムを備えて構成され、当該ソースプログラムがオブジェクトプログラムに変換された状態で制御装置に備えられたＣＰＵに実行させるための制御用プログラムであって、
前記一のソースプログラムは、
その少なくとも一部が暗号化された暗号化プログラム部と、
この暗号化プログラム部以外についてユーザ書換設定可能に構成された非暗号化プログラム部とを備えて構成されていることを特徴とする制御用プログラム。
【請求項２】
前記非暗号化プログラム部は、ユーザによりパスワード入力可能に構成され、
前記暗号化プログラム部には、前記非暗号化プログラム部のパスワードの認証機能が設けられていることを特徴とする請求項１記載の制御用プログラム。
【請求項３】
前記非暗号化プログラム部は、ユーザによりパスワード入力可能に構成され、
前記暗号化プログラム部には、前記非暗号化プログラム部のパスワードの認証機能が設けられると共に使用期限制限機能が設けられ、
前記ＣＰＵにより前記暗号化プログラム部が実行され前記認証機能により前記非暗号化プログラムに入力されたパスワードが正しいことが判定されたことを条件として、前記ＣＰＵにより使用期限制限機能が解除されるように構成されていることを特徴とする請求項１または２記載の制御用プログラム。
【請求項４】
前記暗号化プログラム部に構成されたパスワードの認証機能は、前記制御装置に個々に割り当てられるシリアルナンバーにより認証するものであることを特徴とする請求項２または３記載の制御用プログラム。
【請求項５】
制御装置のＣＰＵに、
請求項１ないし４の何れかに記載の制御用プログラムのソースプログラムを実行形式のオブジェクトプログラムに変換処理させることを特徴とするコンパイラ。
【請求項６】
請求項１ないし４の何れかに記載の制御用プログラムの暗号化プログラム部を前記プログラム提供業者が認識可能な非暗号化状態から当該プログラム提供業者が認識不能な暗号化状態に、変換用コンピュータに変換実行させることを特徴とする変換プログラム。
【請求項７】
請求項１ないし４の何れかに記載の制御用プログラムの暗号化プログラム部を前記プログラム提供業者が認識可能な暗号化状態から当該プログラム提供業者が認識不能な非暗号化状態に、変換用コンピュータに変換実行させることを特徴とする変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置を動作させるための制御用プログラム，このプログラムをコンパイルするコンパイラ，および制御用プログラムを作成するための変換プログラムに関する。
【背景技術】
【０００２】
この種の制御用プログラムは、例えばロボット制御装置に組み込まれる場合、ロボット制御装置のＣＰＵによりテキスト形式のソースプログラム（ソースコード）をバイナリ形式のオブジェクトプログラム（オブジェクトコード）に変換した後に実行される。このソースプログラムは、ユーザ側で制御環境に合わせて改良を容易にするため、プログラム提供業者からソースプログラムのままユーザ側に提供される。ユーザは当該プログラムを購入した後、ユーザ側の制御環境に合わせて改良を施し、ロボット制御装置に組み込まれることによりロボット制御装置は動作するようになる。尚、この分野の関連文献として例えば特許文献１もしくは２に開示される文献がある。
【特許文献１】特開平６−１１０５１２号公報
【特許文献２】特開２００２−２３６６６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
プログラム提供業者は、ユーザ側に改良されたくないプログラム部分や自社のノウハウとなる部分もテキスト形式のソースプログラムとしてユーザに提供する必要がある。近年、特にこれらのソースプログラムをネットワーク上で有償配布する要求が強まってきており、プログラム提供業者の競合他社等にノウハウ部が盗用されてしまう懸念を生じている。
【０００４】
本発明は、上記事情を鑑みてなされたもので、その目的は、ユーザ側の都合に合わせた改良を容易にしながらプログラムの盗用を防止することができる制御用プログラム，このプログラムをコンパイルするコンパイラ，および制御用プログラムを作成するための変換プログラムを提供することにある。
【課題を解決するための手段】
【０００５】
請求項１記載の発明によれば、一のソースプログラムは、暗号化プログラム部がその少なくとも一部が暗号化されているため、たとえこの制御用プログラムを公のネットワークで配布したとしても、暗号化プログラム部を第３者や競合他社に対して理解不能にすることができ、プログラムの盗用を防止することができる。しかも非暗号化プログラム部がユーザ書換設定可能に構成されているため、ユーザ側で改良を施すことができるようになる。
【０００６】
請求項２記載の発明によれば、請求項１記載の発明において、非暗号化プログラム部は、ユーザによりパスワード入力可能に構成され、暗号化プログラム部には、非暗号化プログラム部のパスワードの認証機能が構成されているため、暗号化プログラム部においてパスワードを認証することができ、ソースプログラムの保護を図ることができる。しかも例えばパスワードが所定の条件を満たさない場合には停止させる停止機能を暗号化プログラム部に付加することによりソースプログラムの利用停止を図ることができる。
【０００７】
請求項３記載の発明によれば、請求項１または２記載の発明において、非暗号化プログラム部は、ユーザによりパスワード入力可能に構成され、暗号化プログラム部には、非暗号化プログラム部のパスワードの認証機能が構成されると共に使用期限制限機能が構成されており、制御装置のＣＰＵが暗号化プログラム部を実行し認証機能により非暗号化プログラムに入力されたパスワードが正しいことが判定されたことを条件として、ＣＰＵは使用期限制限機能を解除するため、プログラム提供業者は期限制限を設けてユーザに対してソースプログラムの使用権限を与えることができるようになる。
【０００８】
請求項４記載の発明によれば、請求項２または３記載の発明において、パスワードは制御装置に個々に割り当てられるシリアルナンバーで認証するため、例えばソースプログラムおよびパスワードをコピー入力使用しても、個々の制御装置がパスワード認証機能により入力されたパスワードを判別することができ、重複使用を回避することができるようになる。
【０００９】
また、請求項５記載の発明のように、制御装置のＣＰＵが、請求項１ないし４の何れかに記載の制御用プログラムのソースプログラムを実行形式のオブジェクトプログラムに変換処理することが望ましい。
さらに、請求項６記載の発明のように、変換用コンピュータが、請求項１ないし４の何れかに記載の制御用プログラムの暗号化プログラム部をプログラム提供業者が認識可能な非暗号化状態から当該プログラム提供業者が認識不能な暗号化状態に変換実行するようにしても良い。
【００１０】
さらに、請求項７記載の発明のように、変換用コンピュータが、請求項１ないし４の何れかに記載の制御用プログラムの暗号化プログラム部をプログラム提供業者が認識可能な暗号化状態から当該プログラム提供業者が認識不能な非暗号化状態に変換実行するようにしても良い。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の第１の実施形態について、図１ないし図５を参照しながら説明する。
図１はロボット制御装置の電気的構成ブロック図、図２はロボット制御装置の外観斜視図を示している。
図２に示すように、ロボット制御装置１（本発明の制御装置に相当）は、ロボットコントローラ２にロボットアーム３を接続して構成されている。図１に示すように、ロボットコントローラ２は、ＣＰＵ４にメモリ部５を接続して構成されており、メモリ部５には、不揮発性記憶部としてフラッシュメモリ６，揮発性記憶部としてＤＲＡＭ７が設けられている。
【００１２】
フラッシュメモリ６には、ロボットアーム３の制御用の複数のソースプログラムＡ１〜Ａ３（図４および図５（ｂ）参照）がテキスト形式で記憶されている。これら複数のロボット制御用のソースプログラムＡ１〜Ａ３は、ＰＡＣと称されるロボット制御用言語で記述されている。
これらのソースプログラムＡ１〜Ａ３の作成方法および利用方法について図１ないし図５を参照しながら説明する。ロボット制御装置１のプログラム完成時には、当該制御装置１のプログラムを提供するプログラム提供業者は、作成したソースプログラムＡ１〜Ａ３（ソースコード）をテキストファイルとしてフラッシュメモリ５に記憶させて製品化する。オブジェクトプログラム（目的プログラム：オブジェクトコード）に変換することなく、ソースプログラムＡ１〜Ａ３のままフラッシュメモリ５に記憶させた状態で製品化する理由は、ユーザが開発用コンピュータ８によりロボット制御環境に合わせて改良を容易にするためである。すなわち、ソースプログラムＡ１〜Ａ３のうちの一部（例えば複数箇所）をユーザにより書換可能にするためである。
【００１３】
これらのソースプログラムＡ１〜Ａ３は、一般に複数のプログラム提供業者やロボット製造装置１を購入したユーザにより作成される。各提供業者が作成するソースプログラムは、ロボットアーム３およびロボットコントローラ２の入出力インタフェースドライバ，ロボットアーム３の軌道計算用プログラム，ロボット制御用コマンドを組み合わせたパレタイジング動作を記述したマクロモジュールプログラム等が挙げられる。
【００１４】
しかし各提供業者は、プログラムの作成ノウハウや一般に開示したくないデータ等を所持している場合がある。特に他の当業者が理解可能に記述されたソースプログラムＢをインターネット等の公共のネットワークＮを通じてサーバＳに配布してしまうとノウハウ等が競合他社等に漏洩してしまう虞がある。
そこで、このノウハウ等を保護するため、本実施形態に係るロボット制御言語には、「＃ｅｎｃｒｙｐｔｉｏｎ」および「＃ｅｎｄｅｎｃｒｙｐｔｉｏｎ」という暗号コマンドＰ１が用意されている。これらの暗号コマンドＰ１は、当該コマンドで囲まれたプログラム部分について暗号化するためのものである。
【００１５】
図５（ａ）には、これらの暗号コマンドＰ１を使用したソースプログラム（暗号化前）の一例を示している。プログラム提供業者は、ノウハウや秘匿データとして一般に開示したくないノウハウ部Ｐ２（図５（ａ）中５行目〜６行目）がソースプログラムＢ中に存在する場合、隠蔽したいノウハウ部Ｐ２をこれらの暗号コマンドＰ１で囲んで記述する。そして、プログラム提供業者は当該ソースプログラムＢを作成した後、プログラム提供業者は、変換用コンピュータ９により暗号化状態に変換した状態（図５（ｂ）参照）でソースプログラムＡ１をフラッシュメモリ６に記憶させる。
【００１６】
具体的には、変換用コンピュータ９は、記憶された変換プログラムにより予め定められた暗号化手法で、プログラム提供業者が認識可能な非暗号化状態（図５（ａ）の符号Ｂ参照）からプログラム提供業者が認識不能な暗号化状態（図５（ｂ）の符号Ａ１参照）に変換実行する。
そして、プログラム提供業者は、変換用コンピュータ９により暗号化された状態でフラッシュメモリ６に記憶させたり、当該ソースプログラムＡ１をライブラリ化してネットワークＮを通じてサーバＳに記憶させる（図１参照）。尚、プログラム提供業者の開発環境を良化するため、変換用コンピュータ９等には暗号化状態から非暗号化状態に変換実行する変換プログラムが記憶されていることが望ましい。
【００１７】
この場合、たとえサーバＳからソースプログラムＡ１が配信されたとしても、ソースプログラムＡ１は、ノウハウ部Ｐ２が暗号化され秘匿部Ｐ３とされているため、第３者がこのソースプログラムＡ１を受信したとしても理解できない。これにより秘匿性を向上できる。暗号化方式については本発明とは直接関係しないため説明を省略するが周知の暗号化方式を使用することができる。
【００１８】
図５（ｂ）は、ソースプログラムの一部が暗号化されたソースプログラムＡ１の一例を示している。このプログラムＡ１を使用するユーザ側では、ロボットコントローラ２のフラッシュメモリ６に記憶されたソースプログラムＡ１をたとえ読み込んだとしても、暗号コマンドＰ１〜Ｐ１で囲まれた暗号化プログラム部Ｐ４については開示されないため、ノウハウ部Ｐ２も開示されずプログラム提供業者は自社のノウハウを護ることができる。しかも、ユーザはノウハウ部Ｐ２を含む暗号化プログラム部Ｐ４以外の暗号化されていない非暗号化プログラム部Ｐ５については、ユーザ側のロボット制御環境に合わせて改良することができる。
【００１９】
＜ロボット制御装置の動作について＞
ソースプログラムＡ１〜Ａ３がフラッシュメモリ６に組み込まれると、ロボット制御装置１を動作させることができる。ここではロボット制御装置１のＣＰＵ４が行うプログラムのコンパイル動作やコントローラ２が行う駆動制御動作について概略的に説明する。
電源１０がロボットコントローラ２やロボットアーム３に供給されると、ロボットコントローラ２は起動しＣＰＵ４等によりロボット制御用ソースプログラムＡ１〜Ａ３をフラッシュメモリ６からＤＲＡＭ７の動作プログラム領域に移す。図３には、ＣＰＵ４の実行手順をフローチャートにより示している。
【００２０】
ＣＰＵ４は、メモリ部５のＤＲＡＭ７からソースプログラムＡ１〜Ａ３を読み出すと（ステップＳ１）、当該ソースプログラムＡ１〜Ａ３に暗号化プログラム部Ｐ４が存在することを条件として（ステップＳ２：ＹＥＳ）、暗号化プログラム部Ｐ４を予め定められた復号化方法により復号化処理を行い（ステップＳ３）ステップＳ４に移行する。復号化方式は、本発明とは直接関係しないので説明を省略するが、前述した暗号化方式と対にして用いられる周知の手法を使用することができる。暗号化プログラム部Ｐ４が存在していなければ復号化処理を行うことなくコンパイル処理を行い（ステップＳ４）中間モジュールＭ１〜Ｍ３化する。これら中間モジュールＭ１〜Ｍ３は、バイナリ形式で表現されるものである。
【００２１】
このとき、もしユーザによりノウハウ部Ｐ２を含む暗号化プログラム部Ｐ４が改竄されていれば、ＣＰＵ４は、コンパイル時にエラーを発生し（ステップＳ５：ＹＥＳ）、当該プログラムによる動作を停止する（ステップＳ６）。コンパイル時にエラーを発生しなければ（ステップＳ５：ＮＯ）、ＣＰＵ４は、他のソースプログラムが存在しているか否かを判定し（ステップＳ７）、コンパイルが行われていない他のソースプログラムが存在する場合にはステップＳ１から繰り返し、終了すれば（ステップＳ７：ＮＯ）、複数のソースプログラムＡ１〜Ａ３の各中間モジュールＭ１〜Ｍ３をリンクし（ステップＳ８）、１つの実行形式モジュール（オブジェクトプログラム）Ｏ１に変換する。この実行形式モジュールはバイナリ形式で表現される。
【００２２】
図４には、ロボット制御装置におけるＣＰＵのプログラム実行動作を概略的に示している。すなわち、ソースプログラムＡ１が一部でも暗号化されていればこのソースプログラムＡ１を復号化した後コンパイルして中間モジュールＭ１とする。ソースプログラムＡ２〜Ａ３が暗号化されていなければ復号化処理を行うことなくコンパイルしてそれぞれ中間モジュールＭ２〜Ｍ３に変換する。そして、これら中間モジュールＭ１〜Ｍ３をリンクし、オブジェクトプログラムＯ１に変換する。
【００２３】
この後、ＣＰＵ４は、ロボットアーム３を図示しないモータにより駆動制御する。メモリ部５には、ロボットアーム３の停止位置情報や移動経路情報，もしくはロボットアーム３の作業順序情報等が記憶されているため、ロボット制御装置１のＣＰＵ４は、これらの情報を読み出してロボットアーム３を駆動制御することができる。
すなわち、ソースプログラムＡ１の一部のノウハウ部Ｐ２を含むプログラム領域が暗号化プログラム部Ｐ４とされているので、プログラム提供業者は自社のノウハウを護ることができ、機密性を向上できるようになる。つまり、プログラム提供業者の競合他社等がソースプログラムＡ１を所持していたとしても、プログラム提供業者が暗号化プログラム部Ａ１の復号化方法を公開しなければノウハウ部Ｐ２が開示されることがなくなるため、機密性が向上する。
【００２４】
しかも、このソースプログラムＡ１を使用するユーザは、ノウハウ部Ｐ２を含む暗号化プログラム部Ｐ４以外の暗号化されていない非暗号化プログラム部Ｐ５については、ユーザ側の開発用コンピュータ８によりロボット制御開発環境に合わせて改良することができる。また、ユーザがたとえ暗号化されたソースプログラムＡ１のノウハウ部Ｐ２を改竄したとしても、コンパイル時にエラー状態で終了するため、ソースプログラムＡ１の保守性を向上することができる。
【００２５】
以下、この暗号化プログラム環境を用いたプログラム例を説明する。
＜使用例：パスワード認証機能＞
図５には、非暗号化プログラムＰ５内にユーザによりパスワードＰａを入力可能とし、暗号化プログラム部Ｐ４内にパスワード認証機能を設け、ロボット制御装置１毎に割当てられたシリアルナンバーと合致しない場合には強制終了するソースプログラムＢ，Ａ１を示している。このように構成することにより、複数のロボットコントローラ２での使用を防止することができる。以下、このプログラムについて説明する。
【００２６】
◎ソースプログラムＡ１の詳細説明
１行目：「＃ｄｅｆｉｎｅ  …  」  ユーザがパスワードを設定する定義領域
２行目：「Ｐｒｏｇｒａｍ  ｐｒｏ１」  プログラム名
３行目：「＃ｅｎｃｒｙｐｔｉｏｎ」  暗号コマンド
４〜１０行目：「ｉｆ（ＰＡＳＳＷＤ＝  …  ）｛  …  ｝ｅｌｓｅ｛  …  ｝」
パスワードＰａがシリアルナンバーに一致しているか否かを判定
尚、ｇｅｔＫｅｙはシリアルナンバー取得用関数を示している
５〜６行目：「ｓｅｔｉｏ［１００］」、「ｓｅｔｉｏ［１０１］」
４行目でパスワードがシリアルナンバーに一致していると判定された場合に実行されるプログラム部
入出力処理（インタフェースドライバ：プログラム提供業者のノウハウ部Ｐ２）
９行目：「ｓｔｏｐ」
４行目でパスワードがシリアルナンバーに一致していないと判定された場合に実行されるプログラム部
実行停止（強制終了）
１１行目：「＃ｅｎｄｅｎｃｒｙｐｔｉｏｎ］  暗号コマンド
１２行目：「ｍｏｖｅ  ｐ，ｊ２」
ロボットアーム３の位置移動制御
図５（ｂ）は、このソースプログラムＢをプログラム提供業者側で暗号化したソースプログラムＡ１を示している。この図５（ｂ）において、ユーザがこのソースプログラムＡ１を利用するためには、プログラム提供業者から示されたパスワード「１２３４」（例えばシリアルナンバー等）を入手し、このパスワード「１２３４」をソースプログラムＡ１の初頭（１行目）に定義入力する必要がある。
【００２７】
このとき、当該ソースプログラムＡ１にパスワードＰａが入力された状態でＣＰＵ４によりプログラムが動作したとき、４行目において正規のパスワード（シリアルナンバー）と一致するか否かが判定され、パスワードＰａが正確であれば入出力処理が行われるが、パスワードＰａが正確に入力されていなければ９行目において実行停止する。
すなわち、ソースプログラムＡ１の提供業者側がノウハウ部Ｐ２にこのパスワード認証を付加し当該パスワードＰａとしてシリアルナンバー「１２３４」を設定することにより、複数のロボットコントローラ２における重複使用を防止することができる。また、一のソースプログラムＡ１毎にパスワードＰａを設定可能になる。
【００２８】
このような実施形態によれば、非暗号化プログラム部Ｐ５に対して、ユーザによりパスワードＰａが入力可能に構成されており、暗号化プログラム部Ｐ４には、非暗号化プログラム部Ｐ５のパスワードの認証機能が構成されているため、ユーザがパスワードＰａを入手しなければソースプログラムＡ１を動作させることができなくなり、プログラム提供業者は許容したユーザにのみソースプログラムＡ１の実行権を与えることができる。
【００２９】
（第２の実施形態）
図６は、本発明の第２の実施形態を示すもので、第１の実施形態と異なるところは、暗号コマンドの適用例を変更して、使用期限制限機能を付加するようにしたところにある。第１の実施形態と同一部分について同一符号を付してその説明を省略し、以下異なる部分についてのみ説明する。
【００３０】
＜使用例：お試し版機能＞
図６には、暗号コマンドＰ１の使用例をプログラム内に示している。この例では、非暗号化プログラム部Ｐ４に、ユーザによるパスワードＰａの入力を可能とし、暗号化プログラム部Ｐ４にパスワードの認証機能を設けると共に使用期限制限機能を構成したソースプログラムを示している。このように構成することにより、ソースプログラムがユーザ側の環境に適合しているか否かを試す試用期間を設けることができるようになり、利便性を向上することができる。
【００３１】
以下、このプログラムについて概略的に説明する。このソースプログラムＢ２には設定用ファイルＢ３が付属しており、ＣＰＵ４が当該設定用ファイルＢ３を読出／書込実行しながら図６（ａ）に示したソースプログラムＢ２の内容を実行する。この設定用ファイルＢ３には、この設定用ファイルＢ３の作成後の経過時間を示す経過時間データＤ１、ファイル名Ｄ２、このファイル名Ｄ２の初回起動時間データＤ３が書込まれている。
【００３２】
◎ソースプログラムＢ２の詳細説明
１行目：「ｄｅｆｉｎｅ  ｐａｓｓｗｄ＝１２３４  」
ユーザがパスワードＰａを設定する定義入力領域
２行目：「＃ｅｎｃｒｙｐｔｉｏｎ」  暗号コマンド
３行目：「＃ｄｅｆｉｎｅ  ＵＳＥＲＰＡＳＳＷＤ  １２３４」
パスワードＰａ認証用定数設定
４行目：「Ｐｒｏｇｒａｍ  ｐｒｏ１」  プログラム名
５〜１２行目：「ｉｆ（ｐａｓｓｗｄ！＝  …  ）  …  Ｅｌｓｅ  …  Ｅｎｄｉｆ」
パスワードＰａがＵＳＥＲＰＡＳＳＷＤに一致しているか否かを判定し、一致していなければ６行目から９行目を実行、一致していれば１１行目を実行
６行目：「ｓｅｔＬｉｂＴｉｍｅ」
試用中のソースプログラムのファイル名Ｄ２（ｐｒｏ１）をフルパスで現在時間を表す初回起動時間データＤ３と共に設定用ファイルＢ３に書替え。
【００３３】
７行目〜９行目：「Ｉｆ（ｇｅｔＬｉｂＴｉｍｅ  …  ）  …  Ｅｎｄｉｆ」
経過時間データＤ１と初回起動時間データＤ３の差を取得し、この値が所定値（１０００）を超えたら実行停止（強制終了）
１１行目：「ｄｅｌｅｔｅＬｉｂＴｉｍｅ」
ファイル名Ｄ２と初回起動時間データＤ３を削除する（尚、ファイル名Ｄ２が設定用ファイルＢ３に存在しない場合には無視される。）
１４行目：「Ｍｏｖｅ  ｐ，ｐ０」  ロボットアーム３の位置移動
１５行目：「Ｅｎｄ」  終了
１６行目：「＃ｅｎｄｅｎｃｒｙｐｔｉｏｎ］  暗号コマンド
プログラム提供業者は、このソースプログラムＢ２を暗号化し、設定用ファイルＢ３と共にフラッシュメモリ６に記憶させて製品化する。そして、ユーザが当該プログラムを試用するためパスワードＰａを暗号化されたソースプログラムＢ２内に書き込むことなくＣＰＵ４に実行させると、ＣＰＵ４はファイル名Ｄ２（ｐｒｏ１）が設定用ファイルＢ３内に存在しないことを確認した場合には、ソースプログラムＢ２の６行目において設定用ファイルＢ３内にファイル名Ｄ２および初回起動時間データＤ３を書き込む。
【００３４】
そして、ＣＰＵ４は、ソースプログラムＢ２の７〜８行目において初回起動時間データＤ３と経過時間データＤ１との差が所定値を超えた場合には実行を停止する。設定用ファイルＢ３には、当該設定用ファイルＢ３を作成した後の経過時間データＤ１が記憶されており、ＣＰＵ４は、ＣＰＵ４に電源１０からの電源供給が停止されたことを検出すると経過時間データＤ１を書き換える。
【００３５】
そして、ユーザが２回目以降に起動した時点で、設定用ファイルＢ３に書き込まれた各データを参照し、７から９行目において初回起動時間データＤ３と経過時間データＤ１との差が所定値を越えている場合にＣＰＵ４は実行を停止する。したがって、１回目から起動された当初は試用期間として使用することができるようになり、試用期間が経過した後に起動すると８行目において実行停止する。
【００３６】
実行停止した後でも、プログラム提供業者からパスワードＰａ「１２３４」を入手し、このパスワードＰａ「１２３４」が１行目に入力されると、ＣＰＵ４は５行目においてパスワードが正しいことを判定し、６行目から９行目が実行されることなく１１行目が実行されるようになり、設定用ファイルＢ３からファイル名Ｄ２および初回起動時間データＤ３を消去することにより使用期限制限機能が解除されることになり、ソースプログラムＢ２の使用期限制限機能を解除することができる。このとき、３行目から１５行目が暗号化された状態でフラッシュメモリ６に記憶されているため、ユーザは、ソースプログラムＢ２の実行内容を知ることができない。このため、ユーザによるソースプログラムＢ２の暗号化プログラム部（図示せず）の改竄を防止することができる。
【００３７】
このような第２の実施形態によれば、ＣＰＵ４は、暗号化プログラム部が実行され認証機能により非暗号化プログラム部Ｐ５に入力されたパスワードが正しいことを判定すると、ＣＰＵ４は使用期限制限機能が解除するように動作するため、使用期限制限機能が解除されることになる。これにより、プログラム提供業者は期限制限を設けてユーザに対してソースプログラムの使用権限を与えられるようになり、利便性が向上する。
【図面の簡単な説明】
【００３８】
【図１】本発明の第１の実施形態を示す電気的構成図
【図２】ロボット制御装置の外観図
【図３】処理の流れを示すフローチャート
【図４】ロボットコントローラ内の処理の概略的な説明図
【図５】（ａ）はソースプログラムの一例を示す図（非暗号化状態）、（ｂ）は（ａ）の一部を暗号化したプログラムの一例を示す図
【図６】本発明の第２の実施形態を示すプログラム例を示す図、（（ａ）はソースプログラムの一例を示す図（非暗号化状態）、（ｂ）は設定用ファイルの一例を示す図）
【符号の説明】
【００３９】
図面中、１はロボット制御装置（制御装置）、２はコントローラ、３はロボットアーム、４はＣＰＵ、５はメモリ部、８はユーザ側の開発用コンピュータ、９はプログラム提供業者側の変換用コンピュータ、Ｎはネットワーク、Ｓはサーバ、１０は電源を示す。
【図１】
2005202663.tif 000003
【図２】
2005202663.tif 000004
【図３】
2005202663.tif 000005
【図４】
2005202663.tif 000006
【図５】
2005202663.tif 000007
【図６】
2005202663.tif 000008