(57)【特許請求の範囲】
【請求項１】
ユーザプログラムに基づいて産業用機器を制御するプログラマブルコントローラ（ＰＬＣ）において、
第１キーデータが書き込まれ、アクセスプロテクトされた着脱可能な第１記憶部と、
前記ユーザプログラムが第２キーデータと対応づけて書き込まれた第２記憶部と、
電源が投入されたとき、自ＰＬＣの起動処理をファームウェアプログラムに基づいて実行する起動処理部と、
前記起動処理の完了後に前記ユーザプログラムを実行するユーザプログラム実行部と、
を備え、
前記起動処理部は、
自ＰＬＣに装着されている前記第１記憶部が記憶する第１キーデータと前記第２記憶部に記憶されているユーザプログラムに対応づけられている第２キーデータとを読み出して、前記読み出した二つのキーデータの照合に基づいて前記起動処理を続行するか前記起動処理を停止して異常処理を実行するかを決定する起動処理停止決定部、
を備える、
ことを特徴とするプログラマブルコントローラ。
【請求項２】
前記起動処理停止決定部は、前記読み出した二つのキーデータが一致したとき、前記起動処理を続行することを決定し、前記読み出した二つのキーデータが一致しなかったとき、前記起動処理を停止して異常処理を実行することを決定する、
ことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記第１記憶部は、アクセスに専用の通信プロトコルを必要とすることによってアクセスプロテクトされている、ことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項４】
前記第２キーデータは、前記ユーザプログラムに埋め込まれて前記第２記憶部に記憶されていることによって該ユーザプログラムと対応づけられている、ことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項５】
前記第２キーデータが埋め込まれたユーザプログラムは難読化されている、ことを特徴とする請求項４に記載のプログラマブルコントローラ。
【請求項６】
前記ユーザプログラムはプログラミング装置によって作成され、
前記プログラミング装置は、
前記第１記憶部に記憶されている前記第１キーデータを読み書きする第１キーデータ設定部と、
前記ユーザによる第２キーデータの入力を受け付け、前記受け付けた第２キーデータを前記作成したユーザプログラムに対応付ける第２キーデータ設定部と、
ユーザによる前記第１キーデータ設定部の操作を許可／不許可する機能制限部と、
を備えることを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項７】
前記機能制限部は、前記ユーザが前記第１記憶部に記憶されている第１キーデータを更新する際、前記ユーザからのパスワードの入力を受け付け、前記受け付けたパスワードに基づいて前記第１キーデータ設定部の操作を許可／不許可する、
ことを特徴とする請求項６に記載のプログラマブルコントローラ。
【請求項８】
前記機能制限部は、前記受け付けたパスワードと前記第１記憶部に記憶されている第１キーデータとが一致するか否かを判定し、前記受け付けたパスワードと前記第１記憶部に記憶されている第１キーデータとが一致したとき、前記第１キーデータ設定部の操作を許可し、前記受け付けたパスワードと前記第１記憶部に記憶されている第１キーデータとが一致しなかったとき、前記第１キーデータ設定部の操作を許可しない、ことを特徴とする請求項７に記載のプログラマブルコントローラ。
【請求項９】
前記第２キーデータ設定部は、前記受け付けた第２キーデータを前記作成したユーザプログラムに埋め込むことによって前記受け付けた第２キーデータを前記作成したユーザプログラムに対応付ける、ことを特徴とする請求項６に記載のプログラマブルコントローラ。
【請求項１０】
前記第２キーデータ設定部は、前記受け付けた第２キーデータを対応付けたユーザプログラムを難読化する、ことを特徴とする請求項９に記載のプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザプログラムに基づいて産業用機器を制御するプログラマブルコントローラ（以下、単にＰＬＣ）および前記ユーザプログラムを作成するプログラミング装置に関する。
【背景技術】
【０００２】
ＰＬＣは、ＰＬＣメーカにより出荷された後、装置メーカによって産業用機器に組み込まれ、エンドユーザの工場に設置される。ＰＬＣに産業用機器の制御を実行させるためのユーザプログラムは、装置メーカによってプログラミング装置を用いて作成され、ＰＬＣに書き込まれる。一般に、組み込み対象の産業用機器が技術的に洗練された動作を実行できるようにユーザプログラムは装置メーカによって種々の技術的な工夫がなされている。ユーザプログラムの出来不出来は、装置メーカがエンドユーザに提供する産業用機器あるいはその産業用機器に組み込まれたＰＬＣの製品的価値を左右する。【０００３】
しかしながら、エンドユーザやエンドユーザ以外の他人がこのユーザプログラムをＰＬＣから読み出して複製し、複製したユーザプログラムを空のＰＬＣに組み込むと、同等の制御を行うＰＬＣを労せずして何台でも作成できる。このことは、装置メーカの正当な利益の享受を妨げる。したがって、ＰＬＣには、同等の制御を行うＰＬＣを不正に複製することを防止する仕組みを備えることが要望されている。【０００４】
例えば、特許文献１には、汎用比較命令の第１のオペランドにハードウェア固有データが出現する入出力メモリの所定アドレスをセットし、第２のオペランドには保護対象プログラム部分を動作させたいＰＬＣのハードウェア固有データをセットし、この汎用比較命令の実行結果を入力条件として保護対象プログラム部分を実行可能とする技術が開示されている。この技術によれば、装置メーカが第１のオペランドとしてのアドレスを決定し、かつこのアドレスを非公開とすることによって、装置メーカが作成したユーザプログラムを装置メーカが用意した特定のＰＬＣでしか実行できないようにすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−７０１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方、エンドユーザ側では、ＰＬＣが故障した際、故障したＰＬＣを予備のＰＬＣに交換して、できるだけ迅速に産業用機器を再稼動させたいという要望がある。しかしながら、上記特許文献１の技術によれば、故障したＰＬＣと同じアドレスに同じハードウェア固有データをセットしたＰＬＣでしか故障したＰＬＣのユーザプログラムを動作させることができないので、ＰＬＣ毎に予備のＰＬＣを用意しておくか、さもなくば装置メーカに連絡して交換用のＰＬＣを入手しなければならず、エンドユーザにとって保守性が悪いという問題があった。【０００７】
また、特許文献１の技術のほかに、不正コピーを防ぐためにＰＬＣからのユーザプログラムの読み出し権限をパスワードで管理することも考えられるが、この技術によると、パスワードがエンドユーザから漏洩した場合には不正コピーを防ぐことができないし、かといってエンドユーザがパスワード管理を厳しくすると保守性を犠牲にすることになってしまう。【０００８】
本発明は、上記に鑑みてなされたものであって、可及的に高い保守性を備え、かつ不正な装置複製を防ぐことができるＰＬＣおよびプログラミング装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、ユーザプログラムに基づいて産業用機器を制御するプログラマブルコントローラにおいて、第１キーデータが書き込まれ、アクセスプロテクトされた着脱可能な第１記憶部と、前記ユーザプログラムが第２キーデータと対応づけて書き込まれた第２記憶部と、電源が投入されたとき、自ＰＬＣの起動処理をファームウェアプログラムに基づいて実行する起動処理部と、前記起動処理の完了後に前記ユーザプログラムを実行するユーザプログラム実行部と、を備え、前記起動処理部は、自ＰＬＣに装着されている前記第１記憶部が記憶する第１キーデータと前記第２記憶部に記憶されているユーザプログラムに対応づけられている第２キーデータとを読み出して、前記読み出した二つのキーデータの照合に基づいて前記起動処理を続行するか前記起動処理を停止して異常処理を実行するかを決定する起動処理停止決定部、を備える、ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、可及的に高い保守性を備え、かつ不正な装置複製を防ぐことができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、不正なＰＬＣ複製を防ぐことができる様子を説明する図である。
【図２】図２は、高い保守性を有することを説明する図である。
【図３】図３は、本発明の実施の形態のＰＬＣのハードウェア構成を説明する図である。
【図４】図４は、本発明の実施の形態のＰＬＣの機能構成を説明する図である。
【図５】図５は、本発明の実施の形態のプログラミング装置のハードウェア構成を説明する図である。
【図６】図６は、本発明の実施の形態のプログラミング装置の機能構成を説明する図である。
【図７】図７は、第１キーデータ設定処理を説明するフローチャートである。
【図８】図８は、第２キーデータ設定処理を説明するフローチャートである。
【図９】図９は、ＰＬＣ起動処理を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、本発明にかかるプログラマブルコントローラおよびプログラミング装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態．
本発明の実施の形態では、高い保守性を備え、かつ不正なＰＬＣ複製を防ぐことができるようにするために、ＰＬＣは、エンドユーザには非公開でかつエンドユーザによるアクセスが禁止された第１キーデータを記憶するキー記憶装置が装着され、第１キーデータに対応する第２キーデータが対応付けられたユーザプログラムを記憶し、第１キーデータと第２キーデータとの照合結果がＯＫでなければ自ＰＬＣの起動処理が完了しないように構成されている。まず、理解を助けるために、本発明の実施の形態の特徴を概要的に説明する。なお、以下では、第１キーデータと第２キーデータとが同一であった場合、照合結果ＯＫであると判定されるとして説明する。
【００１４】
図１は、本発明の実施の形態によって不正なＰＬＣ複製を防ぐことができる様子を説明する図である。ここでは、装置メーカが用意したＰＬＣ（ＰＬＣ１ａ）からユーザプログラム１２を読み出して、読み出したユーザプログラム１２を空のＰＬＣ（ＰＬＣ１ｂ）に書き込むことによって、ＰＬＣ１ｂにＰＬＣ１ａと同等の制御をさせようとされている場合について説明する。ＰＬＣ１ａおよびＰＬＣ１ｂ（以下、ＰＬＣ１と総称）には、着脱可能でかつエンドユーザはアクセスできない仕組みを備えた記憶装置であるキー記憶装置１０が装着されている。装置メーカは、予め、ＰＬＣ１ａのキー記憶装置１０にはエンドユーザには非公開のデータである第１キーデータ１１を書き込んでおき、ユーザプログラム１２には第１キーデータ１１と同じ値のデータである第２キーデータ１３を埋め込んでおく。
【００１５】
ＰＬＣ１は、電源が投入されると、ＰＬＣ１自身が備える記憶領域のチェックなどを含むＰＬＣ起動処理の一環として、第１キーデータ１１と第２キーデータ１３とを照合し、双方が一致するか否かを判定する。ＰＬＣ１は、双方のキーデータが一致した場合、ＰＬＣ起動処理を最後まで実行し、ユーザプログラムを起動することが可能な状態に移行する。この状態でＲＵＮ指示が入力されると、ＰＬＣ１はユーザプログラム１２を起動する。ＰＬＣ１は、第１キーデータ１１と第２キーデータ１３とが一致しなかった場合、ＰＬＣ起動処理を停止する。
【００１６】
図１の場合、ユーザプログラム１２のコピー元であるＰＬＣ１ａは、第１キーデータ１１と第２キーデータ１３とが一致（照合結果ＯＫ）となり、ＰＬＣ起動処理が無事に完了してユーザプログラム１２を起動することができる状態となる。一方、ユーザプログラム１２のコピー先であるＰＬＣ１ｂは、ＰＬＣ１ａに装着されていたキー記憶装置１０が装着されることなく電源が投入されると、第１キーデータ１１と第２キーデータ１３とが照合不一致（照合結果ＮＧ）となり、ＰＬＣ起動処理を停止し、ユーザプログラム１２を起動できる状態には移行しない。
【００１７】
なお、第１キーデータ１１と第２キーデータ１３との照合を、ＲＵＮ指示が入力されたタイミングで実行したり、特許文献１に開示されている技術ようにユーザプログラム１２が起動された後に実行したりする構成も考えられるが、本発明の実施の形態では、リバースエンジニアリングによって第１キーデータ１１と第２キーデータ１３とが解読されることを困難にするために、上記したようにＰＬＣ起動処理中に照合を行うようにしている。
【００１８】
また、特許文献１に開示されている技術のように、ユーザプログラム１２にキーデータを照合するための汎用比較命令を含めるように構成されていると、該汎用比較命令を削除することによって複製されたユーザプログラム１２を不正使用することができるが、本発明の実施の形態では、ユーザプログラム１２に基づいてキーデータの照合が行われる構成とはなっていないので、第２キーデータ１３が埋め込まれている位置が判明して該第２キーデータ１３が削除されたとしても、照合結果ＮＧとなるので、ユーザプログラム１２の不正な使用を防ぐことができる。
【００１９】
このように、本発明の実施の形態によれば、装置メーカが用意したキー記憶装置１０がないとユーザプログラム１２を実行することができないので、同じ制御を実行するＰＬＣ１が何台も複製されることを防ぐことができる。
【００２０】
図２は、本発明の実施の形態が高い保守性を有することを説明する図である。ここでは、エンドユーザがＰＬＣ１ａをＰＬＣ１ｂに交換する場合について説明する。まず、図２（ａ）に示すように、エンドユーザは、ＰＬＣ１ａから第１キーデータ１１を記憶するキー記憶装置１０を抜き取り、プログラミング装置（以下、プログラミングツール）２を用いてＰＬＣ１ａに組み込まれているユーザプログラム１２を第２キーデータ１３ごと読み出す。そして、エンドユーザは、図２（ｂ）に示すように、ＰＬＣ１ｂにＰＬＣ１ａから抜き取ったキー記憶装置１０を装着し、読み出したユーザプログラム１２をプログラミングツール２を用いてＰＬＣ１ｂに書き込む。そしてエンドユーザがＰＬＣ１ｂの電源を投入すると、ＰＬＣ１ｂは第１キーデータ１１と第２キーデータ１３とを照合する。第１キーデータ１１および第２キーデータ１３は夫々ＰＬＣ１ａに記憶されていたものと同じであるので、照合結果ＯＫとなり、ＰＬＣ１ｂは、ＰＬＣ起動処理を完了してユーザプログラム１２の起動を行うことができる状態となる。
【００２１】
このように、本発明の実施の形態によれば、キー記憶装置１０を差し替えるとともにユーザプログラム１２をコピーすれば別のＰＬＣ１に同じ制御を実行させることができるので、ＰＬＣ１が故障した際などにおいては、エンドユーザは短時間でＰＬＣ１を交換することができる。また、交換用として用意されるＰＬＣ１ｂは、特許文献１に開示されている技術のように装置メーカによって予めハードウェア固有データが所定アドレスにセットされたもの（すなわち装置メーカによって専用に用意されたもの）である必要がなく、本発明の実施の形態が適用された構成を備えるものであればどのようなＰＬＣ１であってもよい。例えば、エンドユーザは、夫々異なる制御を実行する複数のＰＬＣ１を使用する場合がある。その場合であっても、予備のＰＬＣ１を１つ用意しておけば、複数のＰＬＣ１のうちのどのＰＬＣ１が故障しても予備のＰＬＣ１と交換することができる。また、エンドユーザはパスワード入力を行うことなく簡単にＰＬＣ１を交換することができる。このように、本発明の実施の形態は、エンドユーザにとっての保守性が高いものとなっている。
【００２２】
図３は、上記説明したＰＬＣ１のハードウェア構成を説明する図である。図示するように、ＰＬＣ１は、ＣＰＵ（Central  Processing  Unit）１４と、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read  Only  Memory）１５と、ＳＲＡＭ（Static  Random  Access  Memory）１６と、通信インタフェース（Ｉ／Ｆ）１７と、キー記憶装置Ｉ／Ｆ１８と、を備えている。ＣＰＵ１４、ＥＥＰＲＯＭ１５、ＳＲＡＭ１６、通信Ｉ／Ｆ１７、およびキー記憶装置Ｉ／Ｆ１８は夫々バスを介して互いに接続されている。
【００２３】
キー記憶装置Ｉ／Ｆ１８は、前述のキー記憶装置１０にアクセスするためのインタフェースである。ＰＬＣ１は、装着されたキー記憶装置１０が記憶する第１キーデータ１１にキー記憶装置Ｉ／Ｆ１８を介してアクセスする。
【００２４】
なお、前述したように、キー記憶装置１０が記憶している第１キーデータ１１は、エンドユーザが読み書きすることができないようになっている。そのための仕組みとして、ここでは、キー記憶装置１０のアクセスはエンドユーザに対しては非公開の専用の通信プロトコル（伝送路の物理条件、伝達、相手の特定、情報表現のうちの少なくとも一つが専用設計された通信プロトコル）を用いて行うように構成されているものとする。
【００２５】
ＥＥＰＲＯＭ１５は、第２キーデータ１３が埋め込まれたユーザプログラム１２と、ＰＬＣ１のシステムプログラムであるファームウェア１９とを記憶している。
【００２６】
ＳＲＡＭ１６には、ファームウェア展開領域、ユーザプログラム展開領域、デバイスデータ記憶領域が確保されている。ファームウェア１９は、ＥＥＰＲＯＭ１５から読み出されてＳＲＡＭ１６のファームウェア展開領域に展開され、ＣＰＵ１４は、ＳＲＡＭ１６に展開されたファームウェア１９に基づいてＰＬＣ１の前記したＰＬＣ起動処理を含む基本動作を実行する。ＣＰＵ１４は、ＰＬＣ起動処理を完了した後、操作者からのＲＵＮ指示が図示しない入力インタフェースやプログラマブル表示器を介して入力されると、ユーザプログラム１２を起動する（ユーザプログラム起動処理）。具体的には、ＣＰＵ１４は、ユーザプログラム起動処理として、ＥＥＰＲＯＭ１５から読み出してＳＲＡＭ１６のユーザプログラム展開領域に展開し、展開されたユーザプログラム１２を起動する。ＣＰＵ１４は、ユーザプログラム起動処理によって起動されたユーザプログラム１２による制御に基づいて産業用機器を制御するためのデバイスデータを生成し、生成したデバイスデータをＳＲＡＭ１６のデバイスデータ記憶領域に格納する。
【００２７】
通信Ｉ／Ｆ１７は、プログラミングツール２との間の通信を実行するための通信インタフェースである。
【００２８】
図４は、ファームウェア１９がＣＰＵ１４により実行されることによって実現されるＰＬＣ１の機能の構成を説明する図である。図示するように、ＰＬＣ１は、ＰＬＣ起動処理を実行するＰＬＣ起動処理部３１と、ユーザプログラム起動処理を実行するユーザプログラム実行部３２とを備えている。ＰＬＣ起動処理部３１は、さらに、前記した専用の通信プロトコルを用いてキー記憶装置１０にアクセスして第１キーデータ１１を読み出す第１キーデータ読み出し部３３と、第１キーデータ読み出し部３３が読み出した第１キーデータ１１とユーザプログラム１２に埋め込まれている第２キーデータ１３とを照合し、照合結果に基づいてＰＬＣ起動処理を続行するかＰＬＣ起動処理を停止して異常処理を実行するかを決定するキーデータ照合部３４とを備えている。
【００２９】
なお、異常処理とは、ＰＬＣ１を強制終了することであってもよいし、ＰＬＣ起動処理を停止した後、プログラマブル表示器などに操作者に対する警告を出力することであってもよい。
【００３０】
図５は、プログラミングツール２のハードウェア構成を説明する図である。図示するように、プログラミングツール２は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、入力部２４、表示部２５、および通信Ｉ／Ｆ２６を備えた、通常のコンピュータと等しい構成となっている。ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、入力部２４、表示部２５、および通信Ｉ／Ｆ２６は、夫々バスを介して互いに接続されている。
【００３１】
ＣＰＵ２１は、後述するプログラミングツール２の機能を実現するためのコンピュータプログラムであるプログラミングツールプログラム２７を実行する。表示部２５は、液晶モニタなどの表示装置であり、ＣＰＵ２１からの指示に基づいて、操作画面などの操作者に対する出力情報を表示する。入力部２４は、マウスやキーボードを備えて構成され、操作者からのプログラミングツール２の操作が入力される。入力部２４へ入力された操作情報は、ＣＰＵ２１へ送られる。通信Ｉ／Ｆ２６は、ＰＬＣ１との間の通信を実行するための通信インタフェースである。
【００３２】
プログラミングツールプログラム２７はＲＯＭ２２に格納されており、バスラインを介してＲＡＭ２３へロードされる。ＣＰＵ２１はＲＡＭ２３内にロードされたプログラミングツールプログラム２７を実行する。
【００３３】
なお、プログラミングツールプログラム２７は、ＤＩＳＫなどの記憶装置に格納しておいてもよい。また、プログラミングツールプログラム２７は、ＤＩＳＫなどの記憶装置にロードしてもよい。また、プログラミングツールプログラム２７をインターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供または配布するように構成しても良い。また、プログラミングツール２で実行されるプログラミングツールプログラム２７をインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、プログラミングツールプログラム２７を、ＲＯＭ２２等に予め組み込んでプログラミングツール２に提供するように構成してもよい。
【００３４】
図６は、プログラミングツールプログラム２７をＣＰＵ２１が実行することによって実現するプログラミングツール２の機能の構成を説明する図である。
【００３５】
図６に示すように、プログラミングツール２は、操作者による操作に基づいて、ユーザプログラム１２を作成したり、作成したユーザプログラム１２をＰＬＣ１が備えるＥＥＰＲＯＭ１５に書き込んだり、ＥＥＰＲＯＭ１５に書き込まれているユーザプログラム１２を読み出したりするユーザプログラム設定部４１を備えている。ここで、ユーザプログラム設定部４１は、作成されたユーザプログラム１２に第２キーデータ１３を埋め込む第２キーデータ設定部４２をさらに備えている。
【００３６】
また、プログラミングツール２は、専用の通信プロトコルを用いてキー記憶装置１０にアクセスして第１キーデータ１１を読み書きする第１キーデータ設定部４３と、第１キーデータ設定部４３の操作者による使用を制限する（許可／不許可する）機能制限部４４とを備えている。機能制限部４４による制限方式としては、ここでは、パスワードとしてのアクセス対象のキー記憶装置１０が記憶している第１キーデータ１１の入力を求め、入力されたパスワードがキー記憶装置１０が記憶している第１キーデータ１１と合致した場合に第１キーデータ設定部４３の使用を許可する、パスワード認証方式を採用する。このようなパスワード認証方式によって、キー記憶装置１０にアクセスできる操作者を第１キーデータ１１を書き込んだ操作者（すなわち装置メーカ）だけに限定することができる。
【００３７】
次に、本発明の実施の形態のＰＬＣ１およびプログラミングツール２の動作を説明する。図７は、装置メーカの操作者によってプログラミングツール２が操作されて第１キーデータ１１が設定される動作（第１キーデータ設定処理）を説明するフローチャートである。なお、ここでは、第１キーデータ設定処理は、キー記憶装置１０が装着されたＰＬＣ１とプログラミングツール２とが接続された状態で実行されることとする。
【００３８】
機能制限部４４が起動されて第１キーデータ設定処理が開始されると、図７に示すように、機能制限部４４は、パスワードとしての第１キーデータ１１の入力を受け付ける（ステップＳ１）。すると、機能制限部４４は、第１キーデータ設定部４３を介してＰＬＣ１に装着されたキー記憶装置１０にアクセスしてキー記憶装置１０が記憶する第１キーデータ１１を読み出し、入力された第１キーデータ１１と読み出した第１キーデータ１１とが合致するか否かを判定する（ステップＳ２）。
【００３９】
双方の第１キーデータ１１が合致しなかった場合（ステップＳ２、Ｎｏ）、機能制限部４４は、操作者によるキー記憶装置１０へのアクセスを不許可とし（ステップＳ３）、第１キーデータ設定処理を終了する。双方の第１キーデータ１１が合致した場合（ステップＳ２、Ｙｅｓ）、機能制限部４４は、操作者によるキー記憶装置１０へのアクセスを許可、すなわち第１キーデータ設定部４３の操作を許可する（ステップＳ４）。
【００４０】
そして、第１キーデータ設定部４３は、操作者からの新しい設定値としての第１キーデータ１１の入力を受け付けると（ステップＳ５）、入力された第１キーデータ１１の設定値でキー記憶装置１０が記憶する第１キーデータ１１を上書きし（ステップＳ６）、第１キーデータ設定処理が終了となる。
【００４１】
なお、第１キーデータ１１が未設定のキー記憶装置１０に第１キーデータ１１を設定する場合は、ステップＳ１〜ステップＳ４のようなパスワード認証を経ることなく第１キーデータ１１を設定できるようにしてもよい。その場合、機能制限部４４がステップＳ１の前に第１キーデータ１１が未設定であるか否かを判定し、未設定であった場合、ステップＳ５に移行し、未設定ではなかった場合、ステップＳ１に移行するようにするとよい。
【００４２】
また、ＰＬＣメーカは、キー記憶装置１０に初期値としての第１キーデータ１１が設定された状態で装置メーカに出荷し、装置メーカはステップＳ１においてＰＬＣメーカから知らされた初期値を入力することによってパスワード認証をクリアするようにしてもよい。
【００４３】
図８は、装置メーカの操作者によってプログラミングツール２が操作されて第２キーデータ１３が設定される動作（第２キーデータ設定処理）を説明するフローチャートである。なお、第２キーデータは、プログラミングツール２がＰＬＣ１に接続され、ＥＥＰＲＯＭ１５に格納されている状態のユーザプログラム１２に直接設定されるようにしても構わないし、プログラミングツール２がＰＬＣ１に接続されておらず、プログラミングツール２のＲＡＭ２３のデータ格納領域や図示しない外部記憶装置に格納されている状態のユーザプログラム１２に設定されるようにしても構わない。
【００４４】
図８に示すように、ユーザプログラム設定部４１のうちの第２キーデータ設定部４２が起動されて第２キーデータ設定処理がスタートすると、まず、第２キーデータ設定部４２は、操作者からの第２キーデータ１３の設定値の入力を受け付ける（ステップＳ１１）。すると、第２キーデータ設定部４２は、入力された第２キーデータ１３の設定値をユーザプログラム１２に埋め込み（ステップＳ１２）、第２キーデータ設定処理が終了となる。
【００４５】
ここで、ユーザプログラム１２における第２キーデータ１３の埋め込み箇所はエンドユーザに対しては非公開としておく。また、第２キーデータ設定部４２は、ユーザプログラム１２に難読化処理を施すことによって、第２キーデータ１３の埋め込み箇所の特定を困難にするようにしてもよい。第２キーデータ１３の埋め込み箇所の特定を困難にすることによって、ＰＬＣ１の不正な複製をより困難にする効果が得られる。
【００４６】
次に、図９は、ＰＬＣ起動処理を説明するフローチャートである。図示するように、ＰＬＣ１の電源が投入されてＰＬＣ起動処理がスタートすると、まず、ＰＬＣ起動処理部３１によって、ファームウェア１９がＳＲＡＭ１６に確保されているファームウェア展開領域に展開される（ステップＳ２１）。ステップＳ２１以降、ＣＰＵ１４は、ＳＲＡＭ１６上に展開されたファームウェア１９に基づいて動作する。
【００４７】
そして、ＰＬＣ起動処理の一環として、第１キーデータ読み出し部３３は、ＰＬＣ１に装着されているキー記憶装置１０から第１キーデータ１１を読み出す（ステップＳ２２）。そして、キーデータ照合部３４は、ユーザプログラム１２に埋め込まれている第２キーデータ１３を読み出す（ステップＳ２３）。そして、キーデータ照合部３４は、第１キーデータ読み出し部３３が読み出した第１キーデータ１１とユーザプログラム１２に埋め込まれていた第２キーデータ１３とが合致するか否かを判定する（ステップＳ２４）。
【００４８】
第１キーデータ１１と第２キーデータ１３とが合致しなかった場合（ステップＳ２４、Ｎｏ）、ＰＬＣ起動処理部３１はＰＬＣ起動処理を停止し、異常処理を実行する（ステップＳ２５）。
【００４９】
一方、第１キーデータ１１と第２キーデータ１３とが合致した場合（ステップＳ２４、Ｙｅｓ）、ＰＬＣ起動処理部３１は、そのままＰＬＣ起動処理を続行し（ステップＳ２６）、ＰＬＣ起動処理が完了する。
【００５０】
なお、以上の説明においては、キーデータ照合部３４は第１キーデータ１１と第２キーデータ１３とが等しい場合に照合結果ＯＫとする、として説明したが、キーデータ照合部３４に所定の変換アルゴリズムを備えられ、キーデータ照合部３４は該変換アルゴリズムを適用して一方もしくは双方のキーデータを変換し、該変換アルゴリズム適用後のキーデータが互いに一致する場合に照合ＯＫとするようにしてもよい。
【００５１】
また、機能制限部４４は、アクセス対象のキー記憶装置１０が記憶している第１キーデータ１１をパスワードとして第１キーデータ設定部４３の使用を許可／不許可するとして説明したが、機能制限部４４が使用するパスワードは第１キーデータ１１だけに限定しない。例えば、キー記憶装置１０に第１キーデータ１１の他にパスワードとして使用されるデータを記憶させておき、機能制限部４４は、アクセス対象のキー記憶装置１０が記憶している前記データの入力を受け付けるようにしてもよい。また、前記データと第１キーデータ１１との組み合わせを照合に用いるパスワードとして使用されるようにしてもよい。
【００５２】
また、第１キーデータ設定処理は、キー記憶装置１０が装着されたＰＬＣ１とプログラミングツール２とが接続された状態で実行されるとして説明したが、プログラミングツール２にもキー記憶装置Ｉ／Ｆが備えられ、該キー記憶装置Ｉ／Ｆを介して第１キーデータ設定処理が実行されるように構成してもよい。なお、キー記憶装置Ｉ／Ｆは、ＵＳＢメモリであってもよいし、専用設計のハードウェアであってもよい。
【００５３】
このように、本発明の実施の形態によれば、ＰＬＣ１は、電源が投入されたとき、自ＰＬＣに装着されているアクセスプロテクトされた着脱可能なキー記憶装置１０が記憶する第１キーデータ１１とＥＥＰＲＯＭ１５が記憶するユーザプログラム１２に対応付けられている第２キーデータ１３とを読み出して、読み出した第１キーデータ１１と第２キーデータ１３とを照合し、照合結果に基づいてＰＬＣ起動処理を続行するかＰＬＣ起動処理を停止して異常処理を実行するかを決定するようにしたので、可及的に高い保守性を備え、かつ不正な装置複製を防ぐことができるＰＬＣを得ることができる。
【００５４】
また、プログラミングツール２は、キー記憶装置１０に記憶されている第１キーデータ１１を読み書きする第１キーデータ設定部４３と、ユーザによる第１キーデータ設定部４３の操作を許可／不許可する機能制限部４４と、ユーザによる第２キーデータ１３の入力を受け付け、前記受け付けた第２キーデータ１３をユーザプログラム１２に対応付ける第２キーデータ設定部４２と、を備えるように構成したので、装置メーカ以外のユーザが第１キーデータを設定することが困難であるので、ＰＬＣ１の不正な装置複製を防ぐことができる。
【産業上の利用可能性】
【００５５】
以上のように、本発明にかかるＰＬＣとプログラミング装置は、ユーザプログラムに基づいて産業用機器を制御するＰＬＣおよび前記ユーザプログラムを作成するプログラミング装置に適用して好適である。
【符号の説明】
【００５６】
１  ＰＬＣ
２  プログラミングツール
１０  キー記憶装置
１１  第１キーデータ
１２  ユーザプログラム
１３  第２キーデータ
１４  ＣＰＵ
１５  ＥＥＰＲＯＭ
１６  ＳＲＡＭ
１７  通信Ｉ／Ｆ
１８  キー記憶装置Ｉ／Ｆ
１９  ファームウェア
２１  ＣＰＵ
２２  ＲＯＭ
２３  ＲＡＭ
２４  入力部
２５  表示部
２６  通信Ｉ／Ｆ
２７  プログラミングツールプログラム
３１  ＰＬＣ起動処理部
３２  ユーザプログラム実行部
３３  第１キーデータ読み出し部
３４  キーデータ照合部
４１  ユーザプログラム設定部
４２  第２キーデータ設定部
４３  第１キーデータ設定部
４４  機能制限部
【図１】
0005414812.tif 000002
【図２】
0005414812.tif 000003
【図３】
0005414812.tif 000004
【図４】
0005414812.tif 000005
【図５】
0005414812.tif 000006
【図６】
0005414812.tif 000007
【図７】
0005414812.tif 000008
【図８】
0005414812.tif 000009
【図９】
0005414812.tif 000010