(57)【要約】【課題】  ユーザプログラム中の特定プログラム部分については特定のＰＬＣ以外では動作不能とする一方、それ以外のプログラム部分については何れのＰＬＣにおいても動作可能とすることができる。【解決手段】  汎用比較命令の第１のオペランドにハードウェア固有データが出現する入出力メモリの所定アドレスをセットし、第２のオペランドには保護対象プログラム部分を動作させたいＰＬＣのハードウェア固有データをセットし、この汎用比較命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされており、さらにこのようなプログラム部分の全体をファンクションブロックに置き換え、かつ表示プロテクトを掛ける。【選択図】  図５
2009070144.tif 000002
【特許請求の範囲】
【請求項１】
第１のＰＬＣ上で動作するユーザプログラムが、第２のＰＬＣ上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第２のＰＬＣ上では動作しなくなるようにするためのＰＬＣのプログラミング方法であって、
前記第１及び第２のＰＬＣの側には、ａ）及びｂ）の仕組みが組み込まれており、
ａ）入出力メモリの所定アドレスに、所定のハードウェア固有データが出現するようにした仕組み、
ｂ）入出力メモリの任意のアドレスを指定可能な第１のオペランドと任意のデータを指定可能な第２のオペランドとを有し、その命令が実行されると、第１のオペランドで指定されるアドレスに格納されるデータと第２のオペランドで指定されるデータとの照合を行うようにした汎用比較命令の仕組み、かつ
前記ユーザプログラムには、１）及び２）の特徴を含むプログラム部分が含まれている、
１）前記汎用比較命令の第１のオペランドには前記ハードウェア固有データが出現する入出力メモリの所定アドレスがセットされると共に、第２のオペランドには保護対象プログラム部分を動作させたいＰＬＣのハードウェア固有データがセットされていること、
２）前記汎用比較命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされていること、さらに
前記１）〜２）の特徴部分を含むプログラム部分は、ファンクションブロックに置き換えられると共に、表示プロテクトが掛けられている、
ことを特徴とするＰＬＣにおけるプログラミング方法。
【請求項２】
前記ハードウェア固有データが、当該ＰＬＣの製造ロット番号、当該ＰＬＣの通信ネットワーク上におけるＭＡＣアドレス等のように、各ＰＬＣ毎に一義的に割り当てられ、かつ変更不能なデータである、ことを特徴とする請求項１に記載のＰＬＣにおけるプログラミング方法。
【請求項３】
第１のＰＬＣ上で動作するユーザプログラムが、第２のＰＬＣ上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第２のＰＬＣ上では動作しなくなるようにするためのＰＬＣのプログラミング方法であって、
前記第１及び第２のＰＬＣの側には、ａ）〜ｃ）の仕組みが組み込まれており、
ａ）所定のメモリ上において、ユーザプログラムにて参照不能な領域にある所定アドレスに、照合基準となる任意のハードウェアＩＤを書き込み、かつこのハードウェアＩＤを読み出し不能とすると共に、所定の認証手続きを経たときに限り書換可能とするための仕組み、
ｂ）照合対象となる任意のハードウェアＩＤを指定可能なオペランドを有し、その命令が実行されると、前記所定のメモリ上の所定アドレスから照合基準となるハードウェアＩＤを読み出すと共に、この読み出されたハードウェアＩＤと前記オペランドで指定されるハードウェアＩＤとの照合を行うようにしたＩＤチェック命令の仕組み、
ｃ）ラダー図表記されたユーザプログラムの任意領域をファンクションブロックに置き換えるための仕組み、かつ
前記ユーザプログラムには、１）〜２）の特徴を含むプログラム部分が含まれている、
１）前記ＩＤチェック命令のオペランドには保護対象プログラム部分を動作させたいＰＬＣのハードウェアＩＤがセットされていること、
２）前記ＩＤチェック命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされていること、さらに
前記１）〜２）の特徴部分を含むプログラム部分は、ファンクションブロックに置き換えられると共に、表示プロテクトが掛けられている、
ことを特徴とするＰＬＣにおけるプログラミング方法。
【請求項４】
前記所定のメモリ上の所定アドレスにおいて、ハードウェアＩＤを書換可能とするための認証手続が、既に書き込まれているハードウェアＩＤと新たに書き込まれるハードウェアＩＤとの照合一致を確認するものである、ことを特徴とする請求項３に記載のＰＬＣにおけるプログラミング方法。
【請求項５】
前記ＩＤチェック命令の仕組みには、１回でも照合不一致と判断されたときには、その後、永遠に、又は所定の解除条件が成立するまでの間、照合不一致を保持する処理が仕組まれている、ことを特徴とする請求項３又は４に記載のＰＬＣにおけるプログラミング方法。
【請求項６】
前記所定の解除条件が、所定時間が経過すること、電源が再投入されること、プログラムが強制的にクリアされること、又はハードウェアＩＤが再設定されること、のいずれかである、ことを特徴とする請求項５に記載のＰＬＣにおけるプログラミング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ユーザプログラムの無断利用防止対策として好適なＰＬＣにおけるユーザプログラムのプログラミング方法に関する。
【背景技術】
【０００２】
一般に、プログラマブル・コントローラ（以下、「ＰＬＣ」と言う）は、ＰＬＣメーカーから出荷されたのち、ベンダーにより自動包装機や射出成型機などの各種産業用機械に組み込まれた状態でエンドユーザの工場に設置されたり、直接エンドユーザによりエンドユーザの工場の設備に組み込まれたりする。前者の場合、ベンダーは、ＰＬＣによって制御動作する産業用機械を所望の動作仕様にするために、ユーザプログラムを作成しＰＬＣに組み込む。
【０００３】
このとき、ベンダーは、作成されたユーザプログラムが組み込まれたＰＬＣの提供とは別に、作成されたユーザプログラムそれ自体も、例えばＣＤ−ＲＯＭ等のリムーバブルメディアに格納した形態で、参照用ユーザプログラムとして、エンドユーザに対して提供するのが通例である。
【０００４】
こうしてベンダーから提供される参照用ユーザプログラムは、エンドユーザの側におけるプログラムの軽微なカスタマイズやデータ値の参照（Ｉ／Ｏモニタ）等に供される（特許文献１参照）。
【特許文献１】特開２００４−５３８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のプログラムの軽微なカスタマイズやデータ値の参照（Ｉ／Ｏモニタ）等を目的としてエンドユーザに提供される参照用ユーザプログラムの内容は、エンドユーザ側における理解度を高めるべくコメントやラベル等が付されていることを除き、ＰＬＣに組み込まれている実稼働用ユーザプログラムと実質的に変わりはない。
【０００６】
そのため、エンドユーザの側で、ユーザプログラムの組み込まれていない空のＰＬＣを用意して、これに上記の参照用ユーザプログラムを組み込めば、労せずして、実稼働可能なＰＬＣを何台でも無断複製することが可能となり、ベンダーの側において多大なる損害を被る虞がある。
【０００７】
また、このような参照用ユーザプログラムが本来のエンドユーザ以外の他人の手に渡り、実稼働可能なＰＬＣの同様な無断複製が行われれば、そのユーザプログラムに含まれる製造技術上のノウハウ等についても漏洩してしまい、技術流出により甚大なる被害を被る虞もある。
【０００８】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、ユーザプログラム中の特定プログラム部分については特定のＰＬＣ以外では動作不能とする一方、それ以外のプログラム部分についてはいずれのＰＬＣにおいても動作可能とすることができ、しかも、既存のハードウェア構成乃至システム構成を有するＰＬＣにそのまま適用することが可能なＰＬＣのプログラミング方法を提供することにある。
【０００９】
この発明の他の目的とするところは、ユーザプログラム中の特定プログラム部分については特定のＰＬＣ以外では動作不能とする一方、それ以外のプログラム部分についてはいずれのＰＬＣにおいても動作可能とすることができ、しかも、ユーザプログラム中の特定プログラム部分が動作可能であるはずの特定のＰＬＣが故障で別のＰＬＣと交換されたような場合であっても、上述の排他性を維持しつつも、その交換後のＰＬＣにおいては、その特定プログラム部分を動作可能とすることができるようにしたＰＬＣのプログラミング方法を提供することにある。
【００１０】
この発明のさらに他の目的並びに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【００１１】
上述の技術的な課題は、以下の構成を有するＰＬＣのプログラミング方法により解決することができる。
【００１２】
すなわち、このＰＬＣのプログラミング方法は、第１のＰＬＣ上で動作するユーザプログラムが、第２のＰＬＣ上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第２のＰＬＣ上では動作しなくなるように構成される。
【００１３】
前記第１及び第２のＰＬＣの側には、以下に示されるａ）及びｂ）の仕組みが組み込まれている。
ａ）入出力メモリの所定アドレスに、所定のハードウェア固有データが出現するようにした仕組み、
ｂ）入出力メモリの任意のアドレスを指定可能な第１のオペランドと任意のデータを指定可能な第２のオペランドとを有し、その命令が実行されると、第１のオペランドで指定されるアドレスに格納されるデータと第２のオペランドで指定されるデータとの照合を行うようにした汎用比較命令の仕組み。
【００１４】
また、前記ユーザプログラムには、１）及び２）の特徴を含むプログラム部分が含まれている。
１）前記汎用比較命令の第１のオペランドには前記ハードウェア固有データが出現する入出力メモリの所定アドレスがセットされると共に、第２のオペランドには保護対象プログラム部分を動作させたいＰＬＣのハードウェア固有データがセットされていること、
２）前記汎用比較命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされていること、さらに、前記１）〜２）の特徴部分を含むプログラム部分は、ファンクションブロックに置き換えられると共に、表示プロテクトが掛けられている。ここで入出力メモリとは、ユーザプログラムがＰＬＣ上で実行される際に、当該ユーザプログラムを構成する命令のオペランドとして指定されたアドレスに従って参照可能なメモリのことである。
【００１５】
このような構成によれば、ユーザプログラム中の保護対象プログラム部分は、汎用比較命令の実行結果が「真」（照合一致）のときにかぎり動作するように仕組むことができる。つまり、汎用比較命令はそのユーザプログラムが組み込まれたＰＬＣの入出力メモリから読み出されたハードウェア固有データと汎用比較命令の第２オペランドとしてセットされた保護対象プログラム部分を動作させたいＰＬＣのハードウェア固有データとが一致したときにかぎり実行結果が「真」となるように構成する。さらに、その実行結果を入力条件として保護対象プログラム部分を実行可能とするように構成する。そのように構成することで、汎用比較命令の実行結果が「真」（照合一致）の場合に限り、ユーザプログラム中の保護対象プログラム部分が実行されるようになる。そのため、第１のＰＬＣ上で動作するユーザプログラムが、第２のＰＬＣ上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第２のＰＬＣ上では動作しなくなる。
【００１６】
ここで、「ハードウェア固有データ」としては、当該ＰＬＣの製造ロット番号、当該ＰＬＣの通信ネットワーク上におけるＭＡＣアドレス等のように、ＰＬＣの各ハードウェア毎に一義的に割り当てられ、かつ変更不能なデータとすればよいであろう。また、表示プロテクトが掛けられるプログラム部分としてはファンクションブロックに限ることはなく、表示プロテクトが掛けられる対象となるプログラム単位であれば良い。例えば、タスクでも良い。ここでファンクションブロックやタスクは、ＩＥＣ１１３１−３にて定義されているものに相当する。
【００１７】
第１のＰＬＣ上で動作するユーザプログラムが、第２のＰＬＣ上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第２のＰＬＣ上では動作しなくなるようにするためのＰＬＣのプログラミング方法としては、次のような構成を採用することもできる。
【００１８】
この場合は、前記第１及び第２のＰＬＣの側には、ａ）及びｂ）の仕組みが組み込まれている。
ａ）所定のメモリ上において、ユーザプログラムにて参照不能な領域にある所定アドレスに、照合基準となる任意のハードウェアＩＤを書き込み、かつこのハードウェアＩＤを読み出し不能とすると共に、所定の認証手続きを経たときに限り書換可能とするための仕組み、
ｂ）照合対象となる任意のハードウェアＩＤを指定可能なオペランドを有し、その命令が実行されると、前記所定のメモリ上の所定アドレスから照合基準となるハードウェアＩＤを読み出すと共に、この読み出されたハードウェアＩＤと前記オペランドで指定されるハードウェアＩＤとの照合を行うようにしたＩＤチェック命令の仕組み。ここで、ユーザプログラムにて参照不能な領域とは、ユーザプログラムがＰＬＣ上で実行される際に、当該ユーザプログラムを構成する命令のオペランドとして指定されたアドレスに従って参照できない領域のことである。また、所定のメモリとは、実施の形態では、図１のシステムメモリ（ＳＲＯＭ）１０ｂに相当する。
【００１９】
また、前記ユーザプログラムには、１）〜２）の特徴を含むプログラム部分が含まれている。
１）前記ＩＤチェック命令のオペランドには保護対象プログラム部分を動作させたいＰＬＣのハードウェアＩＤがセットされていること、
２）前記ＩＤチェック命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされていること、さらに
前記１）〜２）の特徴部分を含むプログラム部分は、ファンクションブロックに置き換えられると共に、表示プロテクトが掛けられている。
【００２０】
このような構成によれば、ユーザプログラム中の保護対象プログラム部分は、ＩＤチェック命令の実行結果が「真」（照合一致）のときにかぎり動作するように仕組むことができる。つまり、ＩＤチェック命令はそのユーザプログラムが組み込まれたＰＬＣの所定のメモリの所定アドレスから読み出されたハードウェアＩＤとＩＤチェック命令のオペランドとしてセットされた保護対象プログラム部分を動作させたいＰＬＣのハードウェアＩＤとが一致したときにかぎり実行結果が「真」となるように構成する。さらに、その実行結果を入力条件として保護対象プログラム部分を実行可能とするように構成する。そのように構成することで、ＩＤチェック命令の実行結果が「真」（照合一致）の場合に限り、ユーザプログラム中の保護対象プログラム部分が実行されるようになる。そのため、第１のＰＬＣ上で動作するユーザプログラムが、第２のＰＬＣ上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第２のＰＬＣ上では動作しなくなる。加えて、照合基準となるハードウェアＩＤは、ユーザの参照不能なエリアに書き込まれているため、防盗性が高いという利点もある。
【００２１】
しかも、メモリの所定アドレスの内容は任意に書換可能であるから、故障等の原因でＰＬＣが別のＰＬＣに交換されたときには、交換後のＰＬＣのメモリの所定アドレスの内容を交換前のＰＬＣのそれと同じに書き換えることにより、保護対象となるプログラム部分を交換後のＰＬＣ上においても動作させることができる。
【００２２】
ここで、前記メモリ上の所定アドレスにおいて、ハードウェアＩＤを書換可能とするための認証手続としては、既に書き込まれているハードウェアＩＤと新たに書き込まれるハードウェアＩＤとの照合一致を確認するものとしてもよい。このような構成によれば、元のハードウェアＩＤを知る者以外には、ハードウェアＩＤの書換操作を禁ずることができる。
【００２３】
また、前記ＩＤチェック命令の仕組みには、１回でも照合不一致と判断されたときには、その後、永遠に、又は所定の解除条件が成立するまでの間、照合不一致を保持する処理が仕組まれていてもよい。このとき、前記「所定の解除条件」としては、所定時間が経過すること、電源が再投入されること、プログラムが強制的にクリアされること、又はハードウェアＩＤが再設定されること、のように様々な取り決めを採用することができる。また、表示プロテクトが掛けられるプログラム部分としてはファンクションブロックに限ることはなく、表示プロテクトが掛けられる対象となるプログラム単位であれば良い。例えば、タスクでも良い。ここでファンクションブロックやタスクは、ＩＥＣ１１３１−３にて定義されているものに相当する。
【発明の効果】
【００２４】
本発明によれば、ユーザプログラム中の特定プログラム部分については特定のＰＬＣ以外では動作不能とする一方、それ以外のプログラム部分についてはいずれのＰＬＣにおいても動作可能とすることができるから、参照用ユーザプログラムを別のＰＬＣに組み込んで実稼働可能なＰＬＣを無断複製する不正行為を未然に防止することができる。
【発明を実施するための最良の形態】
【００２５】
以下に、この発明に係るＰＬＣにおけるプログラミング方法の好適ないくつかの実施形態を添付図面を参照しながら詳細に説明する。先ず、それらの実施形態に共通なハードウェア構成について説明する。
【００２６】
当業者にはよく知られているように、この種のＰＬＣは、ＣＰＵ部分（入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを司る）、入出力回路部分、通信回路部分、各種高機能回路部分等々を単一のハウジングに収容してなるオールインワンタイプのものと、それらの部分をそれぞれ専用のユニットハウジングに収容してなるビルディングブロックタイプのものとが知られている。この発明はいずれのタイプのＰＬＣにも適用できるが、さしあたり、ビルディングブロックタイプのものにおいて説明を行うものとする。
【００２７】
典型的なビルディングブロックタイプのＰＬＣにおけるユニット構成の概念図が図８に示されている。同図に示されるように、ＰＬＣ１は、ＣＰＵユニット１０、通信ユニット１１、複数の入出力ユニット１２、及び電源ユニット１３を含んで構成されている。
【００２８】
なお、図において、符号２が付されているのは、ユーザプログラムの作成、編集、ＰＬＣ１へのダウンロード、ＰＬＣ１からのアップロード、その他各種のパラメータ設定又は変更、などに供されるプログラム開発支援装置である。このプログラム開発支援装置を用いてユーザプログラムを作成する場合、作成したユーザプログラムの一部を画面上に表示させないようにすること（表示プロテクト）も可能とされている。一般に、この種のプログラム開発支援装置２は、パソコン（ＰＣ）に所定の専用ソフトをインストールすることにより構成される。このプログラム開発支援装置２は、後述する本発明の第２実施形態の説明において改めて参照される。
【００２９】
ＣＰＵユニット１０は、ＰＬＣ１の全体を統括制御するものであり、後に図２のフローチャートを参照して説明するように、入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを実行するように構成される。
【００３０】
通信ユニット１１は、先に説明したプログラム開発支援装置２との間における通信を制御する他、図に示されていないが、ＰＬＣ１に対して他のＰＬＣ又はリモートＩＯターミナル等が接続されている場合には、それらとの間における通信制御にも供される。
【００３１】
入出力ユニット（Ｉ／Ｏユニット）１２は、外部入出力回路及び図示しない端子台を備えており、この端子台には図示しないが光電スイッチ、リミットスイッチ、マイクロスイッチ等々のような各種の外部入力機器とリレー、ランプ、ソレノイド等の各種外部出力機器が配線される。
【００３２】
ＰＬＣのＣＰＵユニットのハードウェア構成を示すブロック図が図１に示されている。同図に示されるように、このＣＰＵユニット１０には、マイクロプロセッサ（ＭＰＵ）１０ａ、システムメモリ（ＳＲＯＭ）１０ｂ、バックアップメモリ（ＢＲＯＭ）１０ｃ、ワークメモリ（ＷＲＡＭ）１０ｄ、ユーザメモリ（ＵＭ）１０ｅ、外部サポート回路（ＡＳＩＣ）１０ｆ、及び入出力メモリ（ＩＯＭ）１０ｇが含まれている。
【００３３】
マイクロプロセッサ（ＭＰＵ）１０ａは、ＣＰＵユニット１０の全体を統括制御するものであり、後述するシステムメモリ（ＳＲＯＭ）１０ｂに格納されたシステムプログラムを実行することによって、ＣＰＵユニット１０に必要な各種の機能を実現するように構成されている。
【００３４】
システムメモリ（ＳＲＯＭ）１０ｂは、この例ではフラッシュメモリなどの不揮発性メモリで構成されており、先に述べたように、マイクロプロセッサ（ＭＰＵ）１０ａで実行される各種のシステムプログラムが格納されている。また、このシステムメモリ（ＳＲＯＭ）１０ｂには、本発明に関連して、それぞれ所定のアドレスが割り当てられた第１のエリアＢ１と第２のエリアＢ２とが設けられている。第１のエリアＢ１には、後述する第１の実施形態と関連して、ハードウェア固有データに相当するロット番号（ＬＯＴ番号）が、当該ＰＬＣの出荷時などに書き込まれる。こうして第１のエリアＢ１に書き込まれたロット番号は、先に図８を参照して説明したプログラム開発支援装置２の操作によっても書き換えることはできないように仕組まれている。
【００３５】
一方、第２のエリアＢ２には、後述する第２の実施形態に関連して、当該ＰＬＣに割り当てられたハードウェアＩＤが書き込まれる。この第２のエリアＢ２に書き込まれるハードウェアＩＤは、図８に示されるプログラム開発支援装置２の操作によっても、読み出し不能とされると共に、所定の認証手続を経たときに限り、書き換え可能となるように仕組まれている。ここで、所定の認証手続としては、例えば、既に書き込まれているハードウェアＩＤと新たに書き込まれるハードウェアＩＤとの照合一致を確認するものを挙げることができる。このような認証手続によれば、元のハードウェアＩＤを知らない限り、そのハードウェアＩＤを書き換えることはできないから、仮にユーザプログラム上のハードウエアＩＤが盗まれたとしても、ＰＬＣ側のハードウェアＩＤについては容易に変更することはできないから、防盗性が高い利点がある。
【００３６】
バックアップメモリ（ＢＲＯＭ）１０ｃは、フラッシュメモリなどの不揮発性メモリで構成され、電源オフ時にはバッテリが存在しない状態でも内容を保持するように構成されている。このバックアップメモリ（ＢＲＯＭ）１０ｃには、ＰＬＣの制御仕様に対応したユーザプログラムが、所定のプログラム言語（例えば、ラダー図言語など）にて作成され、外部サポート回路（ＡＳＩＣ）１０ｆやマイクロプロセッサ（ＭＰＵ）１０ａで実行可能なコードに変換されて格納される。
【００３７】
ワークメモリ（ＷＲＡＭ）１０ｄは、マイクロプロセッサ（ＭＰＵ）１０ａがシステムメモリ（ＳＲＯＭ）１０ｂから読み出されたシステムプログラムを実行する際のワークエリアとして機能するものであり、書き換え可能なＲＡＭで構成されている。
【００３８】
ユーザメモリ（ＵＭ）１０ｅは、スタティックＲＡＭ（ＳＲＡＭ）で構成されており、電源オフ時には内容を保持することができない。このユーザメモリ（ＵＭ）１０ｅには、電源投入と共に、バックアップメモリ（ＢＲＯＭ）１０ｃから転送されたユーザプログラムが格納される。
【００３９】
外部サポート回路（ＡＳＩＣ）１０ｆは、ユーザプログラム実行機能が仕組まれた用途限定ＩＣ（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  ＩＣ）で構成され、ユーザメモリ（ＵＭ）１０ｅから読み出されたユーザプログラムを構成する各命令を順次に実行する。
【００４０】
入出力メモリ（ＩＯＭ）１０ｇは、外部サポート回路（ＡＳＩＣ）１０ｆがユーザメモリ（ＵＭ）１０ｅから読み出されたユーザプログラムを実行する際に参照するものであり、その内部には、ＩＯバス１０ｈを介して接続された入出力ユニット１２（図８参照）の入出力端子のデータと対応する入出力データエリア、内部演算のみに使用される補助リレーエリア、演算途中で使用される各種の設定データ、カウントデータ等を格納するデータエリアの他に、特殊補助リレーエリアが設けられている。そして、この特殊補助リレーエリア内の所定アドレスで特定されるエリアＡには、第１の実施形態に関連して、電源投入と共に、システムメモリ（ＳＲＯＭ）１０ｂの第１のエリアＢ１から転送されたロット番号が格納されるように構成されている。
【００４１】
次に、マイクロプロセッサ（ＭＰＵ）１０ａと外部サポート回路（ＡＳＩＣ）１０ｆとの協働により実行されるＰＬＣの処理全体を示すゼネラルフローチャートが図２に示されている。
【００４２】
同図において、電源投入（Ｐｏｗｅｒ  Ｏｎ）により処理が開始されると、まず、各種のフラグやレジスタ類の初期設定を行うために初期化処理（ステップ１０１）が実行される。なお、この初期化処理の詳細は図３に記載されている。
【００４３】
続いて、それ以降の各種動作モードに共通な処理として共通処理（ステップ１０２）が実行される。この共通処理（ステップ１０２）においては、ＩＯバス１０ｈの導通チェック、各ユニットの接続チェック等々の各種の故障診断処理などが実行される。
【００４４】
続いて、外部のモード設定スイッチや入出力メモリ（ＩＯＭ）１０ｇの所定フラグなどを参照することによって、その時点の動作モード設定の読み込みが行われる（ステップ１０３）。
【００４５】
続いて、読み込まれたモード設定データと各モードに対応するデータとを照合することによって、動作モードの判定が行われる（ステップ１０４）。ここで、動作モードが「運転」モードと判定されると（ステップ１０４ＹＥＳ）、入出力更新処理（ステップ１０５）が実行される。
【００４６】
この入出力更新処理（ステップ１０５）では、先に説明した入出力メモリ（ＩＯＭ）１０ｇの入力データを入出力ユニット１２の入力端子の実データで更新する入力更新処理と、入出力メモリ（ＩＯＭ）の出力データによって、入出力ユニットの出力端子のデータを更新する出力処理とが実行される。
【００４７】
続いて、ユーザプログラム実行処理（ステップ１０６）が実行される。このユーザプログラム実行処理（ステップ１０６）においては、ユーザメモリ（ＵＭ）１０ｅからユーザプログラムを構成する各命令を順次に読み出すと共に、この読み出された命令を、入出力メモリ（ＩＯＭ）１０ｇの入出力データを参照して実行し、その実行結果に基づいて入出力データの書き換えを行う各命令対応処理が実行される。
【００４８】
続いて、周辺サービス処理（ステップ１０７）が実行される。この周辺サービス処理（ステップ１０７）においては、プログラム開発支援装置と適宜やり取りを行うことによって、プログラム開発支援装置から到来するリクエストに対応した様々な処理を実行する。すなわち、プログラム開発支援装置２がプログラムアップロードを要求するのであれば、指定された範囲のユーザプログラムを読み出して、これをプログラム開発支援装置２に対して送信する。また、プログラム開発支援装置２からの要求が、プログラムダウンロードを要求するものであれば、プログラム開発支援装置２から送られてくるユーザプログラムを受信して、これをバックアップメモリ（ＢＲＯＭ）１０ｃやユーザメモリ（ＵＭ）１０ｅへと書き込む。その他、この周辺サービス処理（ステップ１０７）においては、このＰＬＣに対して１もしくは２以上のリモートＩＯターミナルが接続されていたり、あるいはこのＰＬＣが他の１又は２以上のＰＬＣと接続されているような場合には、それらのリモート機器との間におけるデータのやり取りを行う。
【００４９】
これに対して、動作モードが「運転」モード以外のその他のモードと判定されると、ステップ１０８へと進んで、各モードに対応したその他のモードの処理が実行され、以後、以上説明した一連の処理（ステップ１０３〜１０８）が繰り返し実行されることによって、ＰＬＣとしての各種の機能が実現される。
【００５０】
次に、本発明にかかるプログラミング方法の第１の実施形態について説明する。この第１の実施形態においては、図２に示されるゼネラルフローチャートにおいて、初期化処理（ステップ１０１）の部分において１つの特徴が見られる。
【００５１】
この初期化処理の詳細フローチャート（第１実施形態）が図３に示されている。同図に示されるように、この初期化処理においては、各種のフラグやレジスタ類の初期設定を行う初期化処理（ステップ１０１１，１０１４）の合間において、システムメモリ（ＳＲＯＭ）１０ｂの第１のエリアＢ１からロット番号を読み出す処理（ステップ１０１２ａ）と、こうして読み出されたロット番号を入出力メモリ（ＩＯＭ）１０ｇの特殊補助リレーエリア内の所定アドレス（この例では、Ａ３１０チャネル）で特定されるエリアＡに書き込む処理（ステップ１０１３ａ）とが実行される。
【００５２】
その結果、電源投入直後の初期化処理（ステップ１０１）により、システムメモリ（ＳＲＯＭ）１０ｂの第１のエリアＢ１から入出力メモリ（ＩＯＭ）１０ｇの特殊補助リレーエリア内のエリアＡへと、ロット番号が転送格納される。すなわち、このＰＬＣにおいては、入出力メモリ（ＩＯＭ）１０ｇの所定アドレス（特殊補助リレーエリアのＡ３１０チャネル）に、所定のハードウェア固有データとしてロット番号が出現するようにした仕組みが組み込まれている。
【００５３】
加えて、このＰＬＣにおいては、入出力メモリ（ＩＯＭ）１０ｇの任意のアドレスを指定可能な第１のオペランドと任意のデータを指定可能な第２のオペランドとを有し、その命令が実行されると、第１のオペランドで指定されるアドレスに格納されるデータと第２のオペランドで指定されるデータとの照合が行われる汎用比較命令の仕組みが組み込まれている。
【００５４】
この汎用比較命令の仕組みを説明するためのユーザプログラム実行処理の詳細フローチャートが図４に示されている。同図において処理が開始されると、ユーザメモリに格納されているユーザプログラムの先頭から順次に命令を読み出しては（ステップ１０６１，１０７１）、その命令解読結果に応じて（ステップ１０６２，１０６３ＮＯ，１０６８ＮＯ）、その命令解読結果に応じた処理の実行が行われる（ステップ１０６９）。
【００５５】
その間に、汎用比較命令が解読されると（ステップ１０６３ＹＥＳ）、その汎用比較命令の第１のオペランドで指定される入出力メモリ（ＩＯＭ）１０ｇ内の所定アドレスから、そのアドレスで指定されるエリアの内容が読み出される。このとき、例えば、第１のオペランドで指定されるアドレスが、特殊補助リレーエリアのチャネルＡ３１０であれば、入出力メモリ（ＩＯＭ）１０ｇ内の該当するエリアＡに格納されたロット番号が読み出される（ステップ１０６４）。
【００５６】
続いて、こうして読み出された第１のオペランドで指定されるアドレスのエリアから読み出されたデータと第２のオペランドで指定されたデータとの照合が行われる（ステップ１０６５）。このとき、第２のオペランドで指定されるデータが「＃２００７０４１３」であれば、先に読み出されたロット番号と＃２００７０４１３との照合が行われる（ステップ１０６５）。
【００５７】
ここで、両者が一致すれば（ステップ１０６５ＹＥＳ）、ステップ１０６６へと進んで、比較結果を「真」としてパワーフローへ反映する。これに対して、両者が照合不一致であれば（ステップ１０６５ＮＯ）、１０６７へ進んで、比較結果を「偽」としてパワーフローへ反映する。そのため、汎用比較命令の実行結果を所定のエリアに保持するようにプログラミングすることで当該所定エリアの値を他の命令の実行条件として任意に使用可能とされている。その後、ユーザプログラムが一巡実行されて、ＥＮＤ命令が解読されると（ステップ１０６２，１０６３ＮＯ，１０６８ＹＥＳ）、ユーザプログラムの実行は終了する。ここで比較結果が「真」であることは、当該命令の実行結果が「真」であることを意味する。同様に比較結果が「偽」であることは、当該命令の実行結果が「偽」であることを意味する。また、パワーフローへ反映するとは、ユーザプログラムをラダー図表記した場合に、当該命令の次段に位置する命令の実行条件に反映することを意味する。
【００５８】
一方、プログラム開発支援装置２の側には、ラダー図表記されたユーザプログラムの任意領域をファンクションブロックに置き換えるための仕組みと、ユーザプログラム中の任意のファンクションブロックの内容（ファンクションブロックの内部プログラム）について画面表示を禁止する表示プロテクトを掛けるための仕組みとが別に設けられている。
【００５９】
次に、上述の様々な仕組みを前提として、第１のＰＬＣ上で動作するユーザプログラムが、第２のＰＬＣ上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第２のＰＬＣ上では動作しなくなるようにするためのＰＬＣのプログラミング方法について説明する。
【００６０】
本発明が適用されたユーザプログラムの部分プログラム（ファンクションブロック化前の状態）の一例を示すラダー図（第１実施形態）が図５に、本発明が適用されたファンクションブロック（ＦＢ）を含むユーザプログラムの一例を示すラダー図（第１，第２実施形態共通）が図６にそれぞれ示されている。
【００６１】
図５に示されるように、このプログラム部分３４は、接点３３を入力条件としてその動作条件が仕組まれている。そして、このプログラム部分３４には、一番目の回路として、先に説明した汎用比較命令３４２ａ及びその比較結果を保持するためのコイル（名称として「照合ＯＫ」を付与）３４３ａがプログラミングされている（回路１）。さらに、二番目の回路として、接点名称として「照合ＯＫ」を付与された接点３４４ａ及びその接点３４４ａが「真」であることを条件として実行されるメイン処理３４５ａがプログラミングされている（回路２）。このラダー図表現されたプログラム部分３４の実行順は、回路１が実行された後、回路２が実行されることとなる。この例では、回路１の汎用比較命令３４２ａの実行結果が「真」の場合に限り、回路２のメイン処理３４５ａが実行されることとなる。
【００６２】
この例では、汎用比較命令として、ＬＤ（ロード）型一致命令（シンボルとして「＝」を使用、ニモニック表現すると「ＬＤ＝」となる）を使用している。
【００６３】
この汎用比較命令３４２ａの第１のオペランドには入出力メモリ（ＩＯＭ）１０ｇのロット番号が格納されたエリアＡのアドレス（Ａ３１０チャネル）がセットされると共に、第２のオペランドにはこのプログラムを動作させたいＰＬＣのロット番号に相当するデータ「＃２００７０４１３」がセットされている。
【００６４】
メイン処理３４５ａは、保護対象プログラムに相当するものでラダー図等の所定の言語で記述されている。
【００６５】
そして、このプログラム部分３４の全体は、当該プログラム開発支援装置２に組み込まれたファンクションブロック化の仕組みを利用してファンクションブロック（ＦＢ）に置き換えられ、さらに同様にしてプログラム開発支援装置２に組み込まれた表示プロテクトのための仕組みを利用して、表示プロテクトが掛けられる。
【００６６】
こうしてファンクションブロック化されたプログラム部分３４を含むユーザプログラムの所定領域が図６に示されている。図において、符号３２及び３５がそれぞれ付された領域は、エンドユーザ側で任意にカスタマイズできる処理のままで残されている。これに対して、符号３４が付されたファンクションブロック（ＦＢ）については、表示プロテクトが掛けられているためそのＦＢの内部プログラムを画面表示することはできない。
【００６７】
加えて、ファンクションブロック（ＦＢ）の内容は、図５に示されるラダー図で表記されたものであるから、保護対象プログラムに相当するメイン処理３４５ａについては、ユーザプログラム側のロット番号「＃２００７０４１３」が、ＰＬＣ側のロット番号と一致しない限り、決して実行されない。これは、接点３４４ａが、両ロット番号が照合一致されない限りオンしないからである。
【００６８】
次に、本発明の第２実施形態について説明する。なお、先に説明したように、ＰＬＣのハードウェア構成については第１実施形態と同様である。もっとも、先の第１実施形態においては、この種のＰＬＣにおいて通常備えられている汎用比較命令の仕組み、ロット番号出力の仕組みをそれぞれ利用したため、既存のＰＬＣに直ちに適用が可能とされたのに対し、この第２実施形態にあっては、第１実施形態よりもより進んだ作用効果を奏するために、新たに専用のＩＤチェック命令を定義すると共に、ハードウェアＩＤの任意登録ならびに書き換えの仕組みを設けている。
【００６９】
そこで、まず、ハードウェアＩＤの書き込み並びに変更の仕組みについて説明する。図８に示されるように、一般に、この種のＰＬＣシステムにおいては、ＰＬＣ１とプログラム開発支援装置として機能するＰＣ２とを通信回線で結び、ＰＣ２の側で所定操作を行うことによって、ＣＰＵユニット１０内のシステムメモリ（ＳＲＯＭ）１０ｂ内に所定のデータを書き込むことが可能とされている。
【００７０】
この第２実施形態においては、ＰＬＣ１とＰＣ２との通信の仕組み、並びに、通信ユニット１１とＣＰＵユニット１０との間のＩＯバス１０ｈを介する通信処理を介して、システムメモリ（ＳＲＯＭ）１０ｂ内の所定のアドレスで特定される第２のエリアＢ２に対して、任意のハードウェアＩＤを書き込み可能としている。
【００７１】
この第２のエリアＢ２に書き込まれたハードウェアＩＤは、第１のエリアＢ１に書き込まれたロット番号とは異なり、初期化処理（ステップ１０１）においても、入出力メモリ（ＩＯＭ）１０ｇへと転送されることはない。
【００７２】
加えて、このシステムメモリ（ＳＲＯＭ）１０ｂの第２のエリアＢ２に書き込まれたハードウェアＩＤは、プログラム開発支援装置２やその他の装置を用いて読み出すことができないように、仕組まれると共に、その内容の変更は、既に書き込まれているハードウェアＩＤと新たに書き込まれるハードウェアＩＤとが照合一致された場合に限り書き換え可能となるように仕組まれている。
【００７３】
このような仕組みは、ＰＬＣ１とＰＣ２とのやり取りにおけるプロトコルに組み込んでもよいし、ＣＰＵユニット１０側のシステムプログラムに組み込んでもよいであろう。いずれにしても、この第２のエリアＢ２に書き込まれたハードウェアＩＤは、ＰＬＣの出荷時において、メーカー側又はベンダー側で書き込んでもよいし、購入したエンドユーザの側で任意に書き込んでもよい。
【００７４】
次に、この第２実施形態において新たに創作されたＩＤチェック命令の仕組みについて、図９のフローチャートを参照して説明する。なお、同図において、前記図４の処理と同一構成部分については、同符号を付して説明は省略する。
【００７５】
このＩＤチェック命令（ＩＤＣＨＫ）は、ＩＤチェック命令であることを示すオペコードと、照合対象となる任意のハードウェアＩＤを指定可能なオペランドとを有し、それが実行されると、不揮発性メモリであるシステムメモリ（ＳＲＯＭ）１０ｂ上の第２のエリアＢ２から照合基準となるハードウェアＩＤを読み出すと共に、この読み出されたハードウェアＩＤとオペランドで指定されたハードウェアＩＤとの照合が行われ、その照合結果がパワーフローへ反映されるように仕組まれている。
【００７６】
すなわち、図９において処理が開始されると、ユーザメモリ（ＵＭ）１０ｅから読み出された命令を順次に解読すると共に（ステップ１０６２）、それがＩＤチェック命令であると判定された場合には（ステップ１０６３Ａ  ＹＥＳ）、システムメモリ（ＳＲＯＭ）１０ｂの第２のエリアＢ２からハードウェアＩＤを読み出し（ステップ１０６４Ａ）、この読み出されたハードウェアＩＤを、オペランドで指定されたハードウェアＩＤ「０９１８１２１５０７３００５１００１２５」と照合する。
【００７７】
図８に示されるように、このオペランドで指定されるハードウェアＩＤについては、プログラム開発支援装置として機能するＰＣ２のハードウェアＩＤ入力画面２ａを利用することによって、既にＰＣ２から通信ユニット１１を経由してＣＰＵユニット１０内のシステムメモリ（ＳＲＯＭ）１０ｂ内の第２のエリアＢ２へと書き込まれたものである。
【００７８】
そして、第２のエリアＢ２から読み出されたハードウェアＩＤが予め設定されたハードウェアＩＤ「０９１８１２１５０７３００５１００１２５」と一致した場合には（ステップ１０６５Ａ  ＹＥＳ）、ステップ１０６６へと進んで、比較結果を「真」としてパワーフローへ反映する。これに対して、両者が不一致の場合には（ステップ１０６５Ａ  ＮＯ）、ステップ１０６７へ進んで比較結果を「偽」としてパワーフローへ反映する。そのため、このＩＤチェック命令の実行結果を所定のエリアに保持するようにプログラミングすることで当該所定エリアの値を他の命令の実行条件として任意に使用可能とされている。
【００７９】
次に、以上説明したハードウェアＩＤ任意登録の仕組み、ＩＤチェック命令の仕組み、並びに先に説明したファンクションブロック化の仕組み、表示プロテクトの仕組みを前提として、第１のＰＬＣ上で動作するユーザプログラムが、第２のＰＬＣ上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第２のＰＬＣ上では動作しなくなるようにするためのＰＬＣのプログラミング方法について説明する。
【００８０】
本発明が適用されたユーザプログラムの部分プログラム（ファンクションブロック化前の状態）の一例を示すラダー図（第２実施形態）が図１０に示されている。なお、ファンクションブロック化並びに表示プロテクト化後の状態については、先に参照した図６と同様であるから重複説明は省略する。
【００８１】
図１０に示されるように、ラダー図表記において、プログラム部分３４は、接点３３を入力条件としてその動作条件が仕組まれている。そして、このプログラム部分３４には、一番目の回路として、先に説明したＩＤチェック命令（ＩＤＣＨＫ）３４２ｂ及びその実行結果を保持するためのコイル（名称として「照合ＯＫ」を付与）３４３ｂがプログラミングされている（回路１）。さらに、二番目の回路として、接点名称として「照合ＯＫ」を付与された接点３４４ｂ及びその接点３４４ｂが「真」であることを条件として実行されるメイン処理３４５ｂがプログラミングされている（回路２）。このラダー図表現されたプログラム部分３４の実行順は、回路１が実行された後、回路２が実行されることとなる。この例では、回路１のＩＤチェック命令３４２ｂの実行結果が「真」の場合に限り、回路２のメイン処理３４５ｂが実行されることとなる。このメイン処理３４５ｂは、保護対象プログラムに相当するものでラダー図等の所定の言語で記述されている。
【００８２】
先に説明したように、ＩＤチェック命令３４２ｂは、ＩＤチェック命令である旨のオペコードと、１つのオペランドとを有する。このオペランドには、特定のハードウェアＩＤ（この例では「０９１８１２１５０７３００５１００１２５」がセットされている。
【００８３】
そして、このＩＤチェック命令（ＩＤＣＨＫ）３４２ｂが実行されると、システムメモリ（ＳＲＯＭ）１０ｂの所定アドレスである第２のエリアＢ２から照合基準となるハードウェアＩＤを読み出すと共に、この読み出されたハードウェアＩＤと前記オペランドで指定されるハードウェアＩＤ「０９１８１２１５０７３００５１００１２５」との照合が行われ、その照合結果は、コイル３４３ｂによって保持される。
【００８４】
そのため、このプログラム部分３４に含まれるメイン処理３４５ｂは、ＰＬＣ側に登録されたハードウェアＩＤとＩＤチェック命令３４２ｂのオペランドに設定されたハードウェアＩＤ「０９１８１２１５０７３００５１００１２５」とが一致した場合に限り、実行可能とされる。
【００８５】
そして、第１の実施形態の場合と同様にして、ＩＤチェック命令３４２ｂやメイン処理３４５ｂを含むプログラム部分３４の全体は、プログラム開発支援装置２に仕組まれたファンクションブロック化の仕組み、及び表示プロテクトの仕組みを利用して、ファンクションブロック化並びに表示プロテクトが掛けられる。
【００８６】
こうして、ファンクションブロック化されたプログラム部分３４は、図６に示されるように、他のエンドユーザ側でカスタマイズできる処理３２，３５と並べて、ラダー図上に描き出される。
【００８７】
図から明らかなように、保護対象となるメイン処理３４５ｂ及びこれに実行プロテクトを掛けるためのＩＤチェック命令３４２ｂなどについては、ファンクションブロック化され、かつ、表示プロテクトが掛けられているため一切内部を窺い知ることはできない。加えて、このファンクションブロック３４に含まれるメイン処理３４５ｂは、当該ユーザプログラムを本来予定されたＰＬＣとは別のＰＬＣに組み込んだとしても動作しない。
【００８８】
以上、第１実施形態及び第２実施形態について説明したが、両実施形態においてはそれぞれ利害得失を有する。これを説明するための第１実施形態の作用説明図が図７に示されている。
【００８９】
同図に示されるように、第１実施形態のプログラミング方法の場合、ユーザプログラムに含まれる保護対象となるメイン処理３４５ａについては、ＰＬＣのハードウェア側に書き込まれた変更不能のロット番号を基準として実行プロテクトが掛かるわけであるから、同図（ａ）に示されるように、ロット番号２００７０４１３に対してのみメイン処理が動作するプログラムを、ロット番号２００７０４１３が登録されたハードウェアＸに適用した場合には動作するものの、同図（ｂ）に示されるように、同プログラムをロット番号２００７０４１４が登録されたハードウェアＹに組み込んだ場合には、プログラム側のロット番号とハードウェア側のロット番号とが相違することによって、動作することはない。
【００９０】
しかし、この第１実施形態の場合には、プログラム動作の可否を決定するハードウェア側のロット番号は書き換え不能であるため、もしもハードウェアが故障して別のハードウェアに交換せざるを得ない場合には、プログラム側のロット番号を変更せねばならないという不都合がある。
【００９１】
もっとも、この第１実施形態においては、この種のＰＬＣにおいて通常備えられている汎用比較命令及びロット番号出現の仕組みをそのまま利用しているため、既存のＰＬＣに対して直ちに適用できるという利点がある。
【００９２】
一方、同様な状況を説明するための第２実施形態の作用説明図が図１１に示されている。同図に示されるように、この第２実施形態においては、保護対象となるメイン処理３４５ｂの実行可否を決定する基準として任意に書き換え可能なハードウェアＩＤを利用しているため、同図（ａ）に示されるように、ロット番号２００７０４１３のハードウェアＸに対して、ハードウェアＩＤ「０９１８１２１５０７３０１５１００１２５」を登録して、ユーザプログラムを動作させている状態において、同図（ｂ）に示されるように、故障などの原因によって、ロット番号２００７０４１４が登録された別のハードウェアＹに交換せざるを得ない状況が生じたとしても、その交換後のハードウェアＹに対して、交換前のハードウェアＸと同じハードウェアＩＤ「０９１８１２１５０７３０１５１００１２５」を登録しさえすれば、ロット番号の異なるハードウェアであっても、何等支障なく動作を継続させることができる。
【００９３】
もっとも、この第２実施形態のプログラミング方法にあっては、既存のＰＬＣには存在しない新たなハードウェアＩＤ登録の仕組み並びにＩＤチェック命令を定義せねばならないから、既存のＰＬＣ並びに既に販売後のＰＬＣに対して適用するには、現場における改造又はメーカー側やベンダー側での一時預かりが必要となり、既存のＰＬＣへ直ちに適用はできないという不都合がある。
【００９４】
以上説明したように、本発明のプログラミング方法にあっては、ユーザプログラム自身が、実行が予定されているＰＬＣ（ハードウェア）であるかを判断し、本来予定されている以外のＰＬＣでは動作しないから、これによりベンダーから提供された参照用ユーザプログラムを、別のＰＬＣ（ハードウェア）に組み込んだり、無断複製したユーザプログラムをＰＬＣ（ハードウェア）に組み込んだことによる稼働可能なＰＬＣの複製を未然に防止することができる。
【００９５】
また、保護対象となるユーザプログラムの実行可否は、ハードウェアチェック機能を有する命令の照合結果をその保護対象プログラム部分の動作条件として使用することで実行されるため、動作禁止される保護対象プログラムの範囲を任意に限定することができ、そのためそれ以外のプログラム部分は動作可能であるから、エンドユーザの側におけるプログラムの軽微なカスタマイズやＩＯモニタ等に支障を来すことがない。加えて、第２実施形態のプログラミング方法にあっては、ハードウェアＩＤはプログラム開発支援装置などから読み出し不能であるから、防盗性に優れるという利点もある。
【００９６】
特に、第１実施形態にあっては、従来より備えられている既存の仕組み（汎用比較命令、ロット番号出力処理、ファンクションブロック化処理、表示プロテクト処理など）を使用して実現しているため、既存のプログラム開発支援装置とＰＬＣに直ちに適用できるという利点がある。
【００９７】
一方、第２の実施形態にあっては、専用のＩＤチェック命令を新たにＰＬＣのシステムプログラムに組み込む必要があるものの、故障などの原因でＰＬＣが別のハードウェアのものに交換されたとしても、そのハードウェア上においてハードウェアＩＤを書き換えることで、ユーザプログラム自体は変更せずとも、同様なプログラム保護機能を継続できるという利点がある。
【００９８】
さらに、保護対象プログラム部分及びハードウェアチェック用プログラム部分を含む一定のプログラム部分については、ファンクションブロック化されかつ表示プロテクトが掛けられているため、プログラム開発支援装置の画面上にプログラム全体を表示させたとしても、重要部分については全て隠蔽されて何人もその内容を窺い知ることはできないため、極めて防盗性が高いという利点もある。
【００９９】
なお、第２実施形態において使用されるＩＤチェック命令の仕組みには、１回でも照合不一致と判断されたときには、その後、永遠に、又は所定の解除条件が成立するまでの間、照合不一致を保持する処理が仕組まれていてもよい。このとき、前記「所定の解除条件」としては、所定時間が経過すること、電源が再投入されること、プログラムが強制的にクリアされること、又はハードウェアＩＤが再設定されること、のように様々な取り決めを採用することができる。また、第１実施形態および第２実施形態で説明したプログラム部分３４がＰＬＣ上で実行される場合、プログラム部分３４内で使用されている名称「照合ＯＫ」に割り付けられるアドレスは、プログラム開発支援装置等を用いて参照することができないように構成されている。例えば、プログラム開発支援装置上では、名称「照合ＯＫ」に対してはアドレスを割り付けずに、ＰＬＣ上で実行される際に所定のアドレスを割り付けるようにすれば良い。そうすることでプログラム開発支援装置等から名称「照合ＯＫ」に対してＰＬＣ上で割付られたアドレスを参照することはできないようにすることができる。
【産業上の利用可能性】
【０１００】
本発明によれば、ユーザプログラム中の特定プログラム部分については特定のＰＬＣ以外では動作不能とする一方、それ以外のプログラム部分については何れのＰＬＣにおいても動作可能とすることができるから、参照用ユーザプログラムを別のＰＬＣに組み込んで実稼働可能なＰＬＣを無断複製する不正行為を未然に防止することができる。
【図面の簡単な説明】
【０１０１】
【図１】ＰＬＣのＣＰＵユニットの電気的ハードウェア構成を示すブロック図である。
【図２】ＰＬＣの処理全体を示すゼネラルフローチャートである。
【図３】初期化処理の詳細フローチャート（第１実施形態）である。
【図４】命令実行処理の詳細フローチャート（第１実施形態）である。
【図５】本発明が適用されたユーザプログラムの部分プログラム（ファンクションブロック化前の状態）の一例を示すラダー図（第１実施形態）である。
【図６】本発明が適用されたファンクションブロックを含むユーザプログラムの一例を示すラダー図（第１、第２実施形態）である。
【図７】第１実施形態の作用説明図である。
【図８】ＰＣを使用してＰＬＣにハードウェアＩＤを設定する操作の説明図である。
【図９】命令実行処理の詳細フローチャート（第２実施形態）である。
【図１０】本発明が適用されたユーザプログラムの部分プログラム（ファンクションブロック化前の状態）の一例を示すラダー図（第２実施形態）である。
【図１１】第２実施形態の作用説明図である。
【符号の説明】
【０１０２】
１      ＰＬＣ
２      プログラム開発支援装置（ＰＣ）
２ａ    ハードウェアＩＤ入力画面
１０    ＣＰＵユニット
１０ａ  マイクロプロセッサ（ＭＰＵ）
１０ｂ  システムメモリ（ＳＲＯＭ）
１０ｃ  バックアップメモリ（ＢＲＯＭ）
１０ｄ  ワークメモリ（ＷＲＡＭ）
１０ｅ  ユーザメモリ（ＵＭ）
１０ｆ  外部サポート回路（ＡＳＩＣ）
１０ｇ  入出力メモリ（ＩＯＭ）
１０ｈ  ＩＯバス
１１    通信ユニット
１２    入出力ユニット
１３    電源ユニット
３３    入力接点
３４    プログラム部分
３４２ａ  汎用比較命令
３４３ａ  汎用比較命令の照合結果出力リレー
３４４ａ  照合結果出力リレーの接点
３４５ａ  保護対象となるメイン処理
３４２ｂ  ＩＤチェック命令
３４３ｂ  ＩＤチェック命令の照合結果出力リレー
３４４ｂ  照合結果出力リレーの接点
３４５ｂ  メイン処理
Ａ      特殊補助リレーエリア内の１エリア
Ｂ１    第１のエリア
Ｂ２    第２のエリア
【図１】
2009070144.tif 000003
【図２】
2009070144.tif 000004
【図３】
2009070144.tif 000005
【図４】
2009070144.tif 000006
【図５】
2009070144.tif 000007
【図６】
2009070144.tif 000008
【図７】
2009070144.tif 000009
【図８】
2009070144.tif 000010
【図９】
2009070144.tif 000011
【図１０】
2009070144.tif 000012
【図１１】
2009070144.tif 000013