説明

PLCにおけるプログラミング方法

【課題】 ユーザプログラム中の特定プログラム部分については特定のPLC以外では動作不能とする一方、それ以外のプログラム部分については何れのPLCにおいても動作可能とすることができる。
【解決手段】 汎用比較命令の第1のオペランドにハードウェア固有データが出現する入出力メモリの所定アドレスをセットし、第2のオペランドには保護対象プログラム部分を動作させたいPLCのハードウェア固有データをセットし、この汎用比較命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされており、さらにこのようなプログラム部分の全体をファンクションブロックに置き換え、かつ表示プロテクトを掛ける。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ユーザプログラムの無断利用防止対策として好適なPLCにおけるユーザプログラムのプログラミング方法に関する。
【背景技術】
【0002】
一般に、プログラマブル・コントローラ(以下、「PLC」と言う)は、PLCメーカーから出荷されたのち、ベンダーにより自動包装機や射出成型機などの各種産業用機械に組み込まれた状態でエンドユーザの工場に設置されたり、直接エンドユーザによりエンドユーザの工場の設備に組み込まれたりする。前者の場合、ベンダーは、PLCによって制御動作する産業用機械を所望の動作仕様にするために、ユーザプログラムを作成しPLCに組み込む。
【0003】
このとき、ベンダーは、作成されたユーザプログラムが組み込まれたPLCの提供とは別に、作成されたユーザプログラムそれ自体も、例えばCD−ROM等のリムーバブルメディアに格納した形態で、参照用ユーザプログラムとして、エンドユーザに対して提供するのが通例である。
【0004】
こうしてベンダーから提供される参照用ユーザプログラムは、エンドユーザの側におけるプログラムの軽微なカスタマイズやデータ値の参照(I/Oモニタ)等に供される(特許文献1参照)。
【特許文献1】特開2004−5389号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上述のプログラムの軽微なカスタマイズやデータ値の参照(I/Oモニタ)等を目的としてエンドユーザに提供される参照用ユーザプログラムの内容は、エンドユーザ側における理解度を高めるべくコメントやラベル等が付されていることを除き、PLCに組み込まれている実稼働用ユーザプログラムと実質的に変わりはない。
【0006】
そのため、エンドユーザの側で、ユーザプログラムの組み込まれていない空のPLCを用意して、これに上記の参照用ユーザプログラムを組み込めば、労せずして、実稼働可能なPLCを何台でも無断複製することが可能となり、ベンダーの側において多大なる損害を被る虞がある。
【0007】
また、このような参照用ユーザプログラムが本来のエンドユーザ以外の他人の手に渡り、実稼働可能なPLCの同様な無断複製が行われれば、そのユーザプログラムに含まれる製造技術上のノウハウ等についても漏洩してしまい、技術流出により甚大なる被害を被る虞もある。
【0008】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、ユーザプログラム中の特定プログラム部分については特定のPLC以外では動作不能とする一方、それ以外のプログラム部分についてはいずれのPLCにおいても動作可能とすることができ、しかも、既存のハードウェア構成乃至システム構成を有するPLCにそのまま適用することが可能なPLCのプログラミング方法を提供することにある。
【0009】
この発明の他の目的とするところは、ユーザプログラム中の特定プログラム部分については特定のPLC以外では動作不能とする一方、それ以外のプログラム部分についてはいずれのPLCにおいても動作可能とすることができ、しかも、ユーザプログラム中の特定プログラム部分が動作可能であるはずの特定のPLCが故障で別のPLCと交換されたような場合であっても、上述の排他性を維持しつつも、その交換後のPLCにおいては、その特定プログラム部分を動作可能とすることができるようにしたPLCのプログラミング方法を提供することにある。
【0010】
この発明のさらに他の目的並びに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【0011】
上述の技術的な課題は、以下の構成を有するPLCのプログラミング方法により解決することができる。
【0012】
すなわち、このPLCのプログラミング方法は、第1のPLC上で動作するユーザプログラムが、第2のPLC上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第2のPLC上では動作しなくなるように構成される。
【0013】
前記第1及び第2のPLCの側には、以下に示されるa)及びb)の仕組みが組み込まれている。
a)入出力メモリの所定アドレスに、所定のハードウェア固有データが出現するようにした仕組み、
b)入出力メモリの任意のアドレスを指定可能な第1のオペランドと任意のデータを指定可能な第2のオペランドとを有し、その命令が実行されると、第1のオペランドで指定されるアドレスに格納されるデータと第2のオペランドで指定されるデータとの照合を行うようにした汎用比較命令の仕組み。
【0014】
また、前記ユーザプログラムには、1)及び2)の特徴を含むプログラム部分が含まれている。
1)前記汎用比較命令の第1のオペランドには前記ハードウェア固有データが出現する入出力メモリの所定アドレスがセットされると共に、第2のオペランドには保護対象プログラム部分を動作させたいPLCのハードウェア固有データがセットされていること、
2)前記汎用比較命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされていること、さらに、前記1)〜2)の特徴部分を含むプログラム部分は、ファンクションブロックに置き換えられると共に、表示プロテクトが掛けられている。ここで入出力メモリとは、ユーザプログラムがPLC上で実行される際に、当該ユーザプログラムを構成する命令のオペランドとして指定されたアドレスに従って参照可能なメモリのことである。
【0015】
このような構成によれば、ユーザプログラム中の保護対象プログラム部分は、汎用比較命令の実行結果が「真」(照合一致)のときにかぎり動作するように仕組むことができる。つまり、汎用比較命令はそのユーザプログラムが組み込まれたPLCの入出力メモリから読み出されたハードウェア固有データと汎用比較命令の第2オペランドとしてセットされた保護対象プログラム部分を動作させたいPLCのハードウェア固有データとが一致したときにかぎり実行結果が「真」となるように構成する。さらに、その実行結果を入力条件として保護対象プログラム部分を実行可能とするように構成する。そのように構成することで、汎用比較命令の実行結果が「真」(照合一致)の場合に限り、ユーザプログラム中の保護対象プログラム部分が実行されるようになる。そのため、第1のPLC上で動作するユーザプログラムが、第2のPLC上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第2のPLC上では動作しなくなる。
【0016】
ここで、「ハードウェア固有データ」としては、当該PLCの製造ロット番号、当該PLCの通信ネットワーク上におけるMACアドレス等のように、PLCの各ハードウェア毎に一義的に割り当てられ、かつ変更不能なデータとすればよいであろう。また、表示プロテクトが掛けられるプログラム部分としてはファンクションブロックに限ることはなく、表示プロテクトが掛けられる対象となるプログラム単位であれば良い。例えば、タスクでも良い。ここでファンクションブロックやタスクは、IEC1131−3にて定義されているものに相当する。
【0017】
第1のPLC上で動作するユーザプログラムが、第2のPLC上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第2のPLC上では動作しなくなるようにするためのPLCのプログラミング方法としては、次のような構成を採用することもできる。
【0018】
この場合は、前記第1及び第2のPLCの側には、a)及びb)の仕組みが組み込まれている。
a)所定のメモリ上において、ユーザプログラムにて参照不能な領域にある所定アドレスに、照合基準となる任意のハードウェアIDを書き込み、かつこのハードウェアIDを読み出し不能とすると共に、所定の認証手続きを経たときに限り書換可能とするための仕組み、
b)照合対象となる任意のハードウェアIDを指定可能なオペランドを有し、その命令が実行されると、前記所定のメモリ上の所定アドレスから照合基準となるハードウェアIDを読み出すと共に、この読み出されたハードウェアIDと前記オペランドで指定されるハードウェアIDとの照合を行うようにしたIDチェック命令の仕組み。ここで、ユーザプログラムにて参照不能な領域とは、ユーザプログラムがPLC上で実行される際に、当該ユーザプログラムを構成する命令のオペランドとして指定されたアドレスに従って参照できない領域のことである。また、所定のメモリとは、実施の形態では、図1のシステムメモリ(SROM)10bに相当する。
【0019】
また、前記ユーザプログラムには、1)〜2)の特徴を含むプログラム部分が含まれている。
1)前記IDチェック命令のオペランドには保護対象プログラム部分を動作させたいPLCのハードウェアIDがセットされていること、
2)前記IDチェック命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされていること、さらに
前記1)〜2)の特徴部分を含むプログラム部分は、ファンクションブロックに置き換えられると共に、表示プロテクトが掛けられている。
【0020】
このような構成によれば、ユーザプログラム中の保護対象プログラム部分は、IDチェック命令の実行結果が「真」(照合一致)のときにかぎり動作するように仕組むことができる。つまり、IDチェック命令はそのユーザプログラムが組み込まれたPLCの所定のメモリの所定アドレスから読み出されたハードウェアIDとIDチェック命令のオペランドとしてセットされた保護対象プログラム部分を動作させたいPLCのハードウェアIDとが一致したときにかぎり実行結果が「真」となるように構成する。さらに、その実行結果を入力条件として保護対象プログラム部分を実行可能とするように構成する。そのように構成することで、IDチェック命令の実行結果が「真」(照合一致)の場合に限り、ユーザプログラム中の保護対象プログラム部分が実行されるようになる。そのため、第1のPLC上で動作するユーザプログラムが、第2のPLC上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第2のPLC上では動作しなくなる。加えて、照合基準となるハードウェアIDは、ユーザの参照不能なエリアに書き込まれているため、防盗性が高いという利点もある。
【0021】
しかも、メモリの所定アドレスの内容は任意に書換可能であるから、故障等の原因でPLCが別のPLCに交換されたときには、交換後のPLCのメモリの所定アドレスの内容を交換前のPLCのそれと同じに書き換えることにより、保護対象となるプログラム部分を交換後のPLC上においても動作させることができる。
【0022】
ここで、前記メモリ上の所定アドレスにおいて、ハードウェアIDを書換可能とするための認証手続としては、既に書き込まれているハードウェアIDと新たに書き込まれるハードウェアIDとの照合一致を確認するものとしてもよい。このような構成によれば、元のハードウェアIDを知る者以外には、ハードウェアIDの書換操作を禁ずることができる。
【0023】
また、前記IDチェック命令の仕組みには、1回でも照合不一致と判断されたときには、その後、永遠に、又は所定の解除条件が成立するまでの間、照合不一致を保持する処理が仕組まれていてもよい。このとき、前記「所定の解除条件」としては、所定時間が経過すること、電源が再投入されること、プログラムが強制的にクリアされること、又はハードウェアIDが再設定されること、のように様々な取り決めを採用することができる。また、表示プロテクトが掛けられるプログラム部分としてはファンクションブロックに限ることはなく、表示プロテクトが掛けられる対象となるプログラム単位であれば良い。例えば、タスクでも良い。ここでファンクションブロックやタスクは、IEC1131−3にて定義されているものに相当する。
【発明の効果】
【0024】
本発明によれば、ユーザプログラム中の特定プログラム部分については特定のPLC以外では動作不能とする一方、それ以外のプログラム部分についてはいずれのPLCにおいても動作可能とすることができるから、参照用ユーザプログラムを別のPLCに組み込んで実稼働可能なPLCを無断複製する不正行為を未然に防止することができる。
【発明を実施するための最良の形態】
【0025】
以下に、この発明に係るPLCにおけるプログラミング方法の好適ないくつかの実施形態を添付図面を参照しながら詳細に説明する。先ず、それらの実施形態に共通なハードウェア構成について説明する。
【0026】
当業者にはよく知られているように、この種のPLCは、CPU部分(入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを司る)、入出力回路部分、通信回路部分、各種高機能回路部分等々を単一のハウジングに収容してなるオールインワンタイプのものと、それらの部分をそれぞれ専用のユニットハウジングに収容してなるビルディングブロックタイプのものとが知られている。この発明はいずれのタイプのPLCにも適用できるが、さしあたり、ビルディングブロックタイプのものにおいて説明を行うものとする。
【0027】
典型的なビルディングブロックタイプのPLCにおけるユニット構成の概念図が図8に示されている。同図に示されるように、PLC1は、CPUユニット10、通信ユニット11、複数の入出力ユニット12、及び電源ユニット13を含んで構成されている。
【0028】
なお、図において、符号2が付されているのは、ユーザプログラムの作成、編集、PLC1へのダウンロード、PLC1からのアップロード、その他各種のパラメータ設定又は変更、などに供されるプログラム開発支援装置である。このプログラム開発支援装置を用いてユーザプログラムを作成する場合、作成したユーザプログラムの一部を画面上に表示させないようにすること(表示プロテクト)も可能とされている。一般に、この種のプログラム開発支援装置2は、パソコン(PC)に所定の専用ソフトをインストールすることにより構成される。このプログラム開発支援装置2は、後述する本発明の第2実施形態の説明において改めて参照される。
【0029】
CPUユニット10は、PLC1の全体を統括制御するものであり、後に図2のフローチャートを参照して説明するように、入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを実行するように構成される。
【0030】
通信ユニット11は、先に説明したプログラム開発支援装置2との間における通信を制御する他、図に示されていないが、PLC1に対して他のPLC又はリモートIOターミナル等が接続されている場合には、それらとの間における通信制御にも供される。
【0031】
入出力ユニット(I/Oユニット)12は、外部入出力回路及び図示しない端子台を備えており、この端子台には図示しないが光電スイッチ、リミットスイッチ、マイクロスイッチ等々のような各種の外部入力機器とリレー、ランプ、ソレノイド等の各種外部出力機器が配線される。
【0032】
PLCのCPUユニットのハードウェア構成を示すブロック図が図1に示されている。同図に示されるように、このCPUユニット10には、マイクロプロセッサ(MPU)10a、システムメモリ(SROM)10b、バックアップメモリ(BROM)10c、ワークメモリ(WRAM)10d、ユーザメモリ(UM)10e、外部サポート回路(ASIC)10f、及び入出力メモリ(IOM)10gが含まれている。
【0033】
マイクロプロセッサ(MPU)10aは、CPUユニット10の全体を統括制御するものであり、後述するシステムメモリ(SROM)10bに格納されたシステムプログラムを実行することによって、CPUユニット10に必要な各種の機能を実現するように構成されている。
【0034】
システムメモリ(SROM)10bは、この例ではフラッシュメモリなどの不揮発性メモリで構成されており、先に述べたように、マイクロプロセッサ(MPU)10aで実行される各種のシステムプログラムが格納されている。また、このシステムメモリ(SROM)10bには、本発明に関連して、それぞれ所定のアドレスが割り当てられた第1のエリアB1と第2のエリアB2とが設けられている。第1のエリアB1には、後述する第1の実施形態と関連して、ハードウェア固有データに相当するロット番号(LOT番号)が、当該PLCの出荷時などに書き込まれる。こうして第1のエリアB1に書き込まれたロット番号は、先に図8を参照して説明したプログラム開発支援装置2の操作によっても書き換えることはできないように仕組まれている。
【0035】
一方、第2のエリアB2には、後述する第2の実施形態に関連して、当該PLCに割り当てられたハードウェアIDが書き込まれる。この第2のエリアB2に書き込まれるハードウェアIDは、図8に示されるプログラム開発支援装置2の操作によっても、読み出し不能とされると共に、所定の認証手続を経たときに限り、書き換え可能となるように仕組まれている。ここで、所定の認証手続としては、例えば、既に書き込まれているハードウェアIDと新たに書き込まれるハードウェアIDとの照合一致を確認するものを挙げることができる。このような認証手続によれば、元のハードウェアIDを知らない限り、そのハードウェアIDを書き換えることはできないから、仮にユーザプログラム上のハードウエアIDが盗まれたとしても、PLC側のハードウェアIDについては容易に変更することはできないから、防盗性が高い利点がある。
【0036】
バックアップメモリ(BROM)10cは、フラッシュメモリなどの不揮発性メモリで構成され、電源オフ時にはバッテリが存在しない状態でも内容を保持するように構成されている。このバックアップメモリ(BROM)10cには、PLCの制御仕様に対応したユーザプログラムが、所定のプログラム言語(例えば、ラダー図言語など)にて作成され、外部サポート回路(ASIC)10fやマイクロプロセッサ(MPU)10aで実行可能なコードに変換されて格納される。
【0037】
ワークメモリ(WRAM)10dは、マイクロプロセッサ(MPU)10aがシステムメモリ(SROM)10bから読み出されたシステムプログラムを実行する際のワークエリアとして機能するものであり、書き換え可能なRAMで構成されている。
【0038】
ユーザメモリ(UM)10eは、スタティックRAM(SRAM)で構成されており、電源オフ時には内容を保持することができない。このユーザメモリ(UM)10eには、電源投入と共に、バックアップメモリ(BROM)10cから転送されたユーザプログラムが格納される。
【0039】
外部サポート回路(ASIC)10fは、ユーザプログラム実行機能が仕組まれた用途限定IC(ASIC:Application Specific IC)で構成され、ユーザメモリ(UM)10eから読み出されたユーザプログラムを構成する各命令を順次に実行する。
【0040】
入出力メモリ(IOM)10gは、外部サポート回路(ASIC)10fがユーザメモリ(UM)10eから読み出されたユーザプログラムを実行する際に参照するものであり、その内部には、IOバス10hを介して接続された入出力ユニット12(図8参照)の入出力端子のデータと対応する入出力データエリア、内部演算のみに使用される補助リレーエリア、演算途中で使用される各種の設定データ、カウントデータ等を格納するデータエリアの他に、特殊補助リレーエリアが設けられている。そして、この特殊補助リレーエリア内の所定アドレスで特定されるエリアAには、第1の実施形態に関連して、電源投入と共に、システムメモリ(SROM)10bの第1のエリアB1から転送されたロット番号が格納されるように構成されている。
【0041】
次に、マイクロプロセッサ(MPU)10aと外部サポート回路(ASIC)10fとの協働により実行されるPLCの処理全体を示すゼネラルフローチャートが図2に示されている。
【0042】
同図において、電源投入(Power On)により処理が開始されると、まず、各種のフラグやレジスタ類の初期設定を行うために初期化処理(ステップ101)が実行される。なお、この初期化処理の詳細は図3に記載されている。
【0043】
続いて、それ以降の各種動作モードに共通な処理として共通処理(ステップ102)が実行される。この共通処理(ステップ102)においては、IOバス10hの導通チェック、各ユニットの接続チェック等々の各種の故障診断処理などが実行される。
【0044】
続いて、外部のモード設定スイッチや入出力メモリ(IOM)10gの所定フラグなどを参照することによって、その時点の動作モード設定の読み込みが行われる(ステップ103)。
【0045】
続いて、読み込まれたモード設定データと各モードに対応するデータとを照合することによって、動作モードの判定が行われる(ステップ104)。ここで、動作モードが「運転」モードと判定されると(ステップ104YES)、入出力更新処理(ステップ105)が実行される。
【0046】
この入出力更新処理(ステップ105)では、先に説明した入出力メモリ(IOM)10gの入力データを入出力ユニット12の入力端子の実データで更新する入力更新処理と、入出力メモリ(IOM)の出力データによって、入出力ユニットの出力端子のデータを更新する出力処理とが実行される。
【0047】
続いて、ユーザプログラム実行処理(ステップ106)が実行される。このユーザプログラム実行処理(ステップ106)においては、ユーザメモリ(UM)10eからユーザプログラムを構成する各命令を順次に読み出すと共に、この読み出された命令を、入出力メモリ(IOM)10gの入出力データを参照して実行し、その実行結果に基づいて入出力データの書き換えを行う各命令対応処理が実行される。
【0048】
続いて、周辺サービス処理(ステップ107)が実行される。この周辺サービス処理(ステップ107)においては、プログラム開発支援装置と適宜やり取りを行うことによって、プログラム開発支援装置から到来するリクエストに対応した様々な処理を実行する。すなわち、プログラム開発支援装置2がプログラムアップロードを要求するのであれば、指定された範囲のユーザプログラムを読み出して、これをプログラム開発支援装置2に対して送信する。また、プログラム開発支援装置2からの要求が、プログラムダウンロードを要求するものであれば、プログラム開発支援装置2から送られてくるユーザプログラムを受信して、これをバックアップメモリ(BROM)10cやユーザメモリ(UM)10eへと書き込む。その他、この周辺サービス処理(ステップ107)においては、このPLCに対して1もしくは2以上のリモートIOターミナルが接続されていたり、あるいはこのPLCが他の1又は2以上のPLCと接続されているような場合には、それらのリモート機器との間におけるデータのやり取りを行う。
【0049】
これに対して、動作モードが「運転」モード以外のその他のモードと判定されると、ステップ108へと進んで、各モードに対応したその他のモードの処理が実行され、以後、以上説明した一連の処理(ステップ103〜108)が繰り返し実行されることによって、PLCとしての各種の機能が実現される。
【0050】
次に、本発明にかかるプログラミング方法の第1の実施形態について説明する。この第1の実施形態においては、図2に示されるゼネラルフローチャートにおいて、初期化処理(ステップ101)の部分において1つの特徴が見られる。
【0051】
この初期化処理の詳細フローチャート(第1実施形態)が図3に示されている。同図に示されるように、この初期化処理においては、各種のフラグやレジスタ類の初期設定を行う初期化処理(ステップ1011,1014)の合間において、システムメモリ(SROM)10bの第1のエリアB1からロット番号を読み出す処理(ステップ1012a)と、こうして読み出されたロット番号を入出力メモリ(IOM)10gの特殊補助リレーエリア内の所定アドレス(この例では、A310チャネル)で特定されるエリアAに書き込む処理(ステップ1013a)とが実行される。
【0052】
その結果、電源投入直後の初期化処理(ステップ101)により、システムメモリ(SROM)10bの第1のエリアB1から入出力メモリ(IOM)10gの特殊補助リレーエリア内のエリアAへと、ロット番号が転送格納される。すなわち、このPLCにおいては、入出力メモリ(IOM)10gの所定アドレス(特殊補助リレーエリアのA310チャネル)に、所定のハードウェア固有データとしてロット番号が出現するようにした仕組みが組み込まれている。
【0053】
加えて、このPLCにおいては、入出力メモリ(IOM)10gの任意のアドレスを指定可能な第1のオペランドと任意のデータを指定可能な第2のオペランドとを有し、その命令が実行されると、第1のオペランドで指定されるアドレスに格納されるデータと第2のオペランドで指定されるデータとの照合が行われる汎用比較命令の仕組みが組み込まれている。
【0054】
この汎用比較命令の仕組みを説明するためのユーザプログラム実行処理の詳細フローチャートが図4に示されている。同図において処理が開始されると、ユーザメモリに格納されているユーザプログラムの先頭から順次に命令を読み出しては(ステップ1061,1071)、その命令解読結果に応じて(ステップ1062,1063NO,1068NO)、その命令解読結果に応じた処理の実行が行われる(ステップ1069)。
【0055】
その間に、汎用比較命令が解読されると(ステップ1063YES)、その汎用比較命令の第1のオペランドで指定される入出力メモリ(IOM)10g内の所定アドレスから、そのアドレスで指定されるエリアの内容が読み出される。このとき、例えば、第1のオペランドで指定されるアドレスが、特殊補助リレーエリアのチャネルA310であれば、入出力メモリ(IOM)10g内の該当するエリアAに格納されたロット番号が読み出される(ステップ1064)。
【0056】
続いて、こうして読み出された第1のオペランドで指定されるアドレスのエリアから読み出されたデータと第2のオペランドで指定されたデータとの照合が行われる(ステップ1065)。このとき、第2のオペランドで指定されるデータが「#20070413」であれば、先に読み出されたロット番号と#20070413との照合が行われる(ステップ1065)。
【0057】
ここで、両者が一致すれば(ステップ1065YES)、ステップ1066へと進んで、比較結果を「真」としてパワーフローへ反映する。これに対して、両者が照合不一致であれば(ステップ1065NO)、1067へ進んで、比較結果を「偽」としてパワーフローへ反映する。そのため、汎用比較命令の実行結果を所定のエリアに保持するようにプログラミングすることで当該所定エリアの値を他の命令の実行条件として任意に使用可能とされている。その後、ユーザプログラムが一巡実行されて、END命令が解読されると(ステップ1062,1063NO,1068YES)、ユーザプログラムの実行は終了する。ここで比較結果が「真」であることは、当該命令の実行結果が「真」であることを意味する。同様に比較結果が「偽」であることは、当該命令の実行結果が「偽」であることを意味する。また、パワーフローへ反映するとは、ユーザプログラムをラダー図表記した場合に、当該命令の次段に位置する命令の実行条件に反映することを意味する。
【0058】
一方、プログラム開発支援装置2の側には、ラダー図表記されたユーザプログラムの任意領域をファンクションブロックに置き換えるための仕組みと、ユーザプログラム中の任意のファンクションブロックの内容(ファンクションブロックの内部プログラム)について画面表示を禁止する表示プロテクトを掛けるための仕組みとが別に設けられている。
【0059】
次に、上述の様々な仕組みを前提として、第1のPLC上で動作するユーザプログラムが、第2のPLC上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第2のPLC上では動作しなくなるようにするためのPLCのプログラミング方法について説明する。
【0060】
本発明が適用されたユーザプログラムの部分プログラム(ファンクションブロック化前の状態)の一例を示すラダー図(第1実施形態)が図5に、本発明が適用されたファンクションブロック(FB)を含むユーザプログラムの一例を示すラダー図(第1,第2実施形態共通)が図6にそれぞれ示されている。
【0061】
図5に示されるように、このプログラム部分34は、接点33を入力条件としてその動作条件が仕組まれている。そして、このプログラム部分34には、一番目の回路として、先に説明した汎用比較命令342a及びその比較結果を保持するためのコイル(名称として「照合OK」を付与)343aがプログラミングされている(回路1)。さらに、二番目の回路として、接点名称として「照合OK」を付与された接点344a及びその接点344aが「真」であることを条件として実行されるメイン処理345aがプログラミングされている(回路2)。このラダー図表現されたプログラム部分34の実行順は、回路1が実行された後、回路2が実行されることとなる。この例では、回路1の汎用比較命令342aの実行結果が「真」の場合に限り、回路2のメイン処理345aが実行されることとなる。
【0062】
この例では、汎用比較命令として、LD(ロード)型一致命令(シンボルとして「=」を使用、ニモニック表現すると「LD=」となる)を使用している。
【0063】
この汎用比較命令342aの第1のオペランドには入出力メモリ(IOM)10gのロット番号が格納されたエリアAのアドレス(A310チャネル)がセットされると共に、第2のオペランドにはこのプログラムを動作させたいPLCのロット番号に相当するデータ「#20070413」がセットされている。
【0064】
メイン処理345aは、保護対象プログラムに相当するものでラダー図等の所定の言語で記述されている。
【0065】
そして、このプログラム部分34の全体は、当該プログラム開発支援装置2に組み込まれたファンクションブロック化の仕組みを利用してファンクションブロック(FB)に置き換えられ、さらに同様にしてプログラム開発支援装置2に組み込まれた表示プロテクトのための仕組みを利用して、表示プロテクトが掛けられる。
【0066】
こうしてファンクションブロック化されたプログラム部分34を含むユーザプログラムの所定領域が図6に示されている。図において、符号32及び35がそれぞれ付された領域は、エンドユーザ側で任意にカスタマイズできる処理のままで残されている。これに対して、符号34が付されたファンクションブロック(FB)については、表示プロテクトが掛けられているためそのFBの内部プログラムを画面表示することはできない。
【0067】
加えて、ファンクションブロック(FB)の内容は、図5に示されるラダー図で表記されたものであるから、保護対象プログラムに相当するメイン処理345aについては、ユーザプログラム側のロット番号「#20070413」が、PLC側のロット番号と一致しない限り、決して実行されない。これは、接点344aが、両ロット番号が照合一致されない限りオンしないからである。
【0068】
次に、本発明の第2実施形態について説明する。なお、先に説明したように、PLCのハードウェア構成については第1実施形態と同様である。もっとも、先の第1実施形態においては、この種のPLCにおいて通常備えられている汎用比較命令の仕組み、ロット番号出力の仕組みをそれぞれ利用したため、既存のPLCに直ちに適用が可能とされたのに対し、この第2実施形態にあっては、第1実施形態よりもより進んだ作用効果を奏するために、新たに専用のIDチェック命令を定義すると共に、ハードウェアIDの任意登録ならびに書き換えの仕組みを設けている。
【0069】
そこで、まず、ハードウェアIDの書き込み並びに変更の仕組みについて説明する。図8に示されるように、一般に、この種のPLCシステムにおいては、PLC1とプログラム開発支援装置として機能するPC2とを通信回線で結び、PC2の側で所定操作を行うことによって、CPUユニット10内のシステムメモリ(SROM)10b内に所定のデータを書き込むことが可能とされている。
【0070】
この第2実施形態においては、PLC1とPC2との通信の仕組み、並びに、通信ユニット11とCPUユニット10との間のIOバス10hを介する通信処理を介して、システムメモリ(SROM)10b内の所定のアドレスで特定される第2のエリアB2に対して、任意のハードウェアIDを書き込み可能としている。
【0071】
この第2のエリアB2に書き込まれたハードウェアIDは、第1のエリアB1に書き込まれたロット番号とは異なり、初期化処理(ステップ101)においても、入出力メモリ(IOM)10gへと転送されることはない。
【0072】
加えて、このシステムメモリ(SROM)10bの第2のエリアB2に書き込まれたハードウェアIDは、プログラム開発支援装置2やその他の装置を用いて読み出すことができないように、仕組まれると共に、その内容の変更は、既に書き込まれているハードウェアIDと新たに書き込まれるハードウェアIDとが照合一致された場合に限り書き換え可能となるように仕組まれている。
【0073】
このような仕組みは、PLC1とPC2とのやり取りにおけるプロトコルに組み込んでもよいし、CPUユニット10側のシステムプログラムに組み込んでもよいであろう。いずれにしても、この第2のエリアB2に書き込まれたハードウェアIDは、PLCの出荷時において、メーカー側又はベンダー側で書き込んでもよいし、購入したエンドユーザの側で任意に書き込んでもよい。
【0074】
次に、この第2実施形態において新たに創作されたIDチェック命令の仕組みについて、図9のフローチャートを参照して説明する。なお、同図において、前記図4の処理と同一構成部分については、同符号を付して説明は省略する。
【0075】
このIDチェック命令(IDCHK)は、IDチェック命令であることを示すオペコードと、照合対象となる任意のハードウェアIDを指定可能なオペランドとを有し、それが実行されると、不揮発性メモリであるシステムメモリ(SROM)10b上の第2のエリアB2から照合基準となるハードウェアIDを読み出すと共に、この読み出されたハードウェアIDとオペランドで指定されたハードウェアIDとの照合が行われ、その照合結果がパワーフローへ反映されるように仕組まれている。
【0076】
すなわち、図9において処理が開始されると、ユーザメモリ(UM)10eから読み出された命令を順次に解読すると共に(ステップ1062)、それがIDチェック命令であると判定された場合には(ステップ1063A YES)、システムメモリ(SROM)10bの第2のエリアB2からハードウェアIDを読み出し(ステップ1064A)、この読み出されたハードウェアIDを、オペランドで指定されたハードウェアID「09181215073005100125」と照合する。
【0077】
図8に示されるように、このオペランドで指定されるハードウェアIDについては、プログラム開発支援装置として機能するPC2のハードウェアID入力画面2aを利用することによって、既にPC2から通信ユニット11を経由してCPUユニット10内のシステムメモリ(SROM)10b内の第2のエリアB2へと書き込まれたものである。
【0078】
そして、第2のエリアB2から読み出されたハードウェアIDが予め設定されたハードウェアID「09181215073005100125」と一致した場合には(ステップ1065A YES)、ステップ1066へと進んで、比較結果を「真」としてパワーフローへ反映する。これに対して、両者が不一致の場合には(ステップ1065A NO)、ステップ1067へ進んで比較結果を「偽」としてパワーフローへ反映する。そのため、このIDチェック命令の実行結果を所定のエリアに保持するようにプログラミングすることで当該所定エリアの値を他の命令の実行条件として任意に使用可能とされている。
【0079】
次に、以上説明したハードウェアID任意登録の仕組み、IDチェック命令の仕組み、並びに先に説明したファンクションブロック化の仕組み、表示プロテクトの仕組みを前提として、第1のPLC上で動作するユーザプログラムが、第2のPLC上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第2のPLC上では動作しなくなるようにするためのPLCのプログラミング方法について説明する。
【0080】
本発明が適用されたユーザプログラムの部分プログラム(ファンクションブロック化前の状態)の一例を示すラダー図(第2実施形態)が図10に示されている。なお、ファンクションブロック化並びに表示プロテクト化後の状態については、先に参照した図6と同様であるから重複説明は省略する。
【0081】
図10に示されるように、ラダー図表記において、プログラム部分34は、接点33を入力条件としてその動作条件が仕組まれている。そして、このプログラム部分34には、一番目の回路として、先に説明したIDチェック命令(IDCHK)342b及びその実行結果を保持するためのコイル(名称として「照合OK」を付与)343bがプログラミングされている(回路1)。さらに、二番目の回路として、接点名称として「照合OK」を付与された接点344b及びその接点344bが「真」であることを条件として実行されるメイン処理345bがプログラミングされている(回路2)。このラダー図表現されたプログラム部分34の実行順は、回路1が実行された後、回路2が実行されることとなる。この例では、回路1のIDチェック命令342bの実行結果が「真」の場合に限り、回路2のメイン処理345bが実行されることとなる。このメイン処理345bは、保護対象プログラムに相当するものでラダー図等の所定の言語で記述されている。
【0082】
先に説明したように、IDチェック命令342bは、IDチェック命令である旨のオペコードと、1つのオペランドとを有する。このオペランドには、特定のハードウェアID(この例では「09181215073005100125」がセットされている。
【0083】
そして、このIDチェック命令(IDCHK)342bが実行されると、システムメモリ(SROM)10bの所定アドレスである第2のエリアB2から照合基準となるハードウェアIDを読み出すと共に、この読み出されたハードウェアIDと前記オペランドで指定されるハードウェアID「09181215073005100125」との照合が行われ、その照合結果は、コイル343bによって保持される。
【0084】
そのため、このプログラム部分34に含まれるメイン処理345bは、PLC側に登録されたハードウェアIDとIDチェック命令342bのオペランドに設定されたハードウェアID「09181215073005100125」とが一致した場合に限り、実行可能とされる。
【0085】
そして、第1の実施形態の場合と同様にして、IDチェック命令342bやメイン処理345bを含むプログラム部分34の全体は、プログラム開発支援装置2に仕組まれたファンクションブロック化の仕組み、及び表示プロテクトの仕組みを利用して、ファンクションブロック化並びに表示プロテクトが掛けられる。
【0086】
こうして、ファンクションブロック化されたプログラム部分34は、図6に示されるように、他のエンドユーザ側でカスタマイズできる処理32,35と並べて、ラダー図上に描き出される。
【0087】
図から明らかなように、保護対象となるメイン処理345b及びこれに実行プロテクトを掛けるためのIDチェック命令342bなどについては、ファンクションブロック化され、かつ、表示プロテクトが掛けられているため一切内部を窺い知ることはできない。加えて、このファンクションブロック34に含まれるメイン処理345bは、当該ユーザプログラムを本来予定されたPLCとは別のPLCに組み込んだとしても動作しない。
【0088】
以上、第1実施形態及び第2実施形態について説明したが、両実施形態においてはそれぞれ利害得失を有する。これを説明するための第1実施形態の作用説明図が図7に示されている。
【0089】
同図に示されるように、第1実施形態のプログラミング方法の場合、ユーザプログラムに含まれる保護対象となるメイン処理345aについては、PLCのハードウェア側に書き込まれた変更不能のロット番号を基準として実行プロテクトが掛かるわけであるから、同図(a)に示されるように、ロット番号20070413に対してのみメイン処理が動作するプログラムを、ロット番号20070413が登録されたハードウェアXに適用した場合には動作するものの、同図(b)に示されるように、同プログラムをロット番号20070414が登録されたハードウェアYに組み込んだ場合には、プログラム側のロット番号とハードウェア側のロット番号とが相違することによって、動作することはない。
【0090】
しかし、この第1実施形態の場合には、プログラム動作の可否を決定するハードウェア側のロット番号は書き換え不能であるため、もしもハードウェアが故障して別のハードウェアに交換せざるを得ない場合には、プログラム側のロット番号を変更せねばならないという不都合がある。
【0091】
もっとも、この第1実施形態においては、この種のPLCにおいて通常備えられている汎用比較命令及びロット番号出現の仕組みをそのまま利用しているため、既存のPLCに対して直ちに適用できるという利点がある。
【0092】
一方、同様な状況を説明するための第2実施形態の作用説明図が図11に示されている。同図に示されるように、この第2実施形態においては、保護対象となるメイン処理345bの実行可否を決定する基準として任意に書き換え可能なハードウェアIDを利用しているため、同図(a)に示されるように、ロット番号20070413のハードウェアXに対して、ハードウェアID「09181215073015100125」を登録して、ユーザプログラムを動作させている状態において、同図(b)に示されるように、故障などの原因によって、ロット番号20070414が登録された別のハードウェアYに交換せざるを得ない状況が生じたとしても、その交換後のハードウェアYに対して、交換前のハードウェアXと同じハードウェアID「09181215073015100125」を登録しさえすれば、ロット番号の異なるハードウェアであっても、何等支障なく動作を継続させることができる。
【0093】
もっとも、この第2実施形態のプログラミング方法にあっては、既存のPLCには存在しない新たなハードウェアID登録の仕組み並びにIDチェック命令を定義せねばならないから、既存のPLC並びに既に販売後のPLCに対して適用するには、現場における改造又はメーカー側やベンダー側での一時預かりが必要となり、既存のPLCへ直ちに適用はできないという不都合がある。
【0094】
以上説明したように、本発明のプログラミング方法にあっては、ユーザプログラム自身が、実行が予定されているPLC(ハードウェア)であるかを判断し、本来予定されている以外のPLCでは動作しないから、これによりベンダーから提供された参照用ユーザプログラムを、別のPLC(ハードウェア)に組み込んだり、無断複製したユーザプログラムをPLC(ハードウェア)に組み込んだことによる稼働可能なPLCの複製を未然に防止することができる。
【0095】
また、保護対象となるユーザプログラムの実行可否は、ハードウェアチェック機能を有する命令の照合結果をその保護対象プログラム部分の動作条件として使用することで実行されるため、動作禁止される保護対象プログラムの範囲を任意に限定することができ、そのためそれ以外のプログラム部分は動作可能であるから、エンドユーザの側におけるプログラムの軽微なカスタマイズやIOモニタ等に支障を来すことがない。加えて、第2実施形態のプログラミング方法にあっては、ハードウェアIDはプログラム開発支援装置などから読み出し不能であるから、防盗性に優れるという利点もある。
【0096】
特に、第1実施形態にあっては、従来より備えられている既存の仕組み(汎用比較命令、ロット番号出力処理、ファンクションブロック化処理、表示プロテクト処理など)を使用して実現しているため、既存のプログラム開発支援装置とPLCに直ちに適用できるという利点がある。
【0097】
一方、第2の実施形態にあっては、専用のIDチェック命令を新たにPLCのシステムプログラムに組み込む必要があるものの、故障などの原因でPLCが別のハードウェアのものに交換されたとしても、そのハードウェア上においてハードウェアIDを書き換えることで、ユーザプログラム自体は変更せずとも、同様なプログラム保護機能を継続できるという利点がある。
【0098】
さらに、保護対象プログラム部分及びハードウェアチェック用プログラム部分を含む一定のプログラム部分については、ファンクションブロック化されかつ表示プロテクトが掛けられているため、プログラム開発支援装置の画面上にプログラム全体を表示させたとしても、重要部分については全て隠蔽されて何人もその内容を窺い知ることはできないため、極めて防盗性が高いという利点もある。
【0099】
なお、第2実施形態において使用されるIDチェック命令の仕組みには、1回でも照合不一致と判断されたときには、その後、永遠に、又は所定の解除条件が成立するまでの間、照合不一致を保持する処理が仕組まれていてもよい。このとき、前記「所定の解除条件」としては、所定時間が経過すること、電源が再投入されること、プログラムが強制的にクリアされること、又はハードウェアIDが再設定されること、のように様々な取り決めを採用することができる。また、第1実施形態および第2実施形態で説明したプログラム部分34がPLC上で実行される場合、プログラム部分34内で使用されている名称「照合OK」に割り付けられるアドレスは、プログラム開発支援装置等を用いて参照することができないように構成されている。例えば、プログラム開発支援装置上では、名称「照合OK」に対してはアドレスを割り付けずに、PLC上で実行される際に所定のアドレスを割り付けるようにすれば良い。そうすることでプログラム開発支援装置等から名称「照合OK」に対してPLC上で割付られたアドレスを参照することはできないようにすることができる。
【産業上の利用可能性】
【0100】
本発明によれば、ユーザプログラム中の特定プログラム部分については特定のPLC以外では動作不能とする一方、それ以外のプログラム部分については何れのPLCにおいても動作可能とすることができるから、参照用ユーザプログラムを別のPLCに組み込んで実稼働可能なPLCを無断複製する不正行為を未然に防止することができる。
【図面の簡単な説明】
【0101】
【図1】PLCのCPUユニットの電気的ハードウェア構成を示すブロック図である。
【図2】PLCの処理全体を示すゼネラルフローチャートである。
【図3】初期化処理の詳細フローチャート(第1実施形態)である。
【図4】命令実行処理の詳細フローチャート(第1実施形態)である。
【図5】本発明が適用されたユーザプログラムの部分プログラム(ファンクションブロック化前の状態)の一例を示すラダー図(第1実施形態)である。
【図6】本発明が適用されたファンクションブロックを含むユーザプログラムの一例を示すラダー図(第1、第2実施形態)である。
【図7】第1実施形態の作用説明図である。
【図8】PCを使用してPLCにハードウェアIDを設定する操作の説明図である。
【図9】命令実行処理の詳細フローチャート(第2実施形態)である。
【図10】本発明が適用されたユーザプログラムの部分プログラム(ファンクションブロック化前の状態)の一例を示すラダー図(第2実施形態)である。
【図11】第2実施形態の作用説明図である。
【符号の説明】
【0102】
1 PLC
2 プログラム開発支援装置(PC)
2a ハードウェアID入力画面
10 CPUユニット
10a マイクロプロセッサ(MPU)
10b システムメモリ(SROM)
10c バックアップメモリ(BROM)
10d ワークメモリ(WRAM)
10e ユーザメモリ(UM)
10f 外部サポート回路(ASIC)
10g 入出力メモリ(IOM)
10h IOバス
11 通信ユニット
12 入出力ユニット
13 電源ユニット
33 入力接点
34 プログラム部分
342a 汎用比較命令
343a 汎用比較命令の照合結果出力リレー
344a 照合結果出力リレーの接点
345a 保護対象となるメイン処理
342b IDチェック命令
343b IDチェック命令の照合結果出力リレー
344b 照合結果出力リレーの接点
345b メイン処理
A 特殊補助リレーエリア内の1エリア
B1 第1のエリア
B2 第2のエリア

【特許請求の範囲】
【請求項1】
第1のPLC上で動作するユーザプログラムが、第2のPLC上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第2のPLC上では動作しなくなるようにするためのPLCのプログラミング方法であって、
前記第1及び第2のPLCの側には、a)及びb)の仕組みが組み込まれており、
a)入出力メモリの所定アドレスに、所定のハードウェア固有データが出現するようにした仕組み、
b)入出力メモリの任意のアドレスを指定可能な第1のオペランドと任意のデータを指定可能な第2のオペランドとを有し、その命令が実行されると、第1のオペランドで指定されるアドレスに格納されるデータと第2のオペランドで指定されるデータとの照合を行うようにした汎用比較命令の仕組み、かつ
前記ユーザプログラムには、1)及び2)の特徴を含むプログラム部分が含まれている、
1)前記汎用比較命令の第1のオペランドには前記ハードウェア固有データが出現する入出力メモリの所定アドレスがセットされると共に、第2のオペランドには保護対象プログラム部分を動作させたいPLCのハードウェア固有データがセットされていること、
2)前記汎用比較命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされていること、さらに
前記1)〜2)の特徴部分を含むプログラム部分は、ファンクションブロックに置き換えられると共に、表示プロテクトが掛けられている、
ことを特徴とするPLCにおけるプログラミング方法。
【請求項2】
前記ハードウェア固有データが、当該PLCの製造ロット番号、当該PLCの通信ネットワーク上におけるMACアドレス等のように、各PLC毎に一義的に割り当てられ、かつ変更不能なデータである、ことを特徴とする請求項1に記載のPLCにおけるプログラミング方法。
【請求項3】
第1のPLC上で動作するユーザプログラムが、第2のPLC上へコピーされると、そのコピーされたユーザプログラムのうちの保護対象プログラム部分については、第2のPLC上では動作しなくなるようにするためのPLCのプログラミング方法であって、
前記第1及び第2のPLCの側には、a)〜c)の仕組みが組み込まれており、
a)所定のメモリ上において、ユーザプログラムにて参照不能な領域にある所定アドレスに、照合基準となる任意のハードウェアIDを書き込み、かつこのハードウェアIDを読み出し不能とすると共に、所定の認証手続きを経たときに限り書換可能とするための仕組み、
b)照合対象となる任意のハードウェアIDを指定可能なオペランドを有し、その命令が実行されると、前記所定のメモリ上の所定アドレスから照合基準となるハードウェアIDを読み出すと共に、この読み出されたハードウェアIDと前記オペランドで指定されるハードウェアIDとの照合を行うようにしたIDチェック命令の仕組み、
c)ラダー図表記されたユーザプログラムの任意領域をファンクションブロックに置き換えるための仕組み、かつ
前記ユーザプログラムには、1)〜2)の特徴を含むプログラム部分が含まれている、
1)前記IDチェック命令のオペランドには保護対象プログラム部分を動作させたいPLCのハードウェアIDがセットされていること、
2)前記IDチェック命令の実行結果を入力条件として保護対象プログラム部分を実行可能とされていること、さらに
前記1)〜2)の特徴部分を含むプログラム部分は、ファンクションブロックに置き換えられると共に、表示プロテクトが掛けられている、
ことを特徴とするPLCにおけるプログラミング方法。
【請求項4】
前記所定のメモリ上の所定アドレスにおいて、ハードウェアIDを書換可能とするための認証手続が、既に書き込まれているハードウェアIDと新たに書き込まれるハードウェアIDとの照合一致を確認するものである、ことを特徴とする請求項3に記載のPLCにおけるプログラミング方法。
【請求項5】
前記IDチェック命令の仕組みには、1回でも照合不一致と判断されたときには、その後、永遠に、又は所定の解除条件が成立するまでの間、照合不一致を保持する処理が仕組まれている、ことを特徴とする請求項3又は4に記載のPLCにおけるプログラミング方法。
【請求項6】
前記所定の解除条件が、所定時間が経過すること、電源が再投入されること、プログラムが強制的にクリアされること、又はハードウェアIDが再設定されること、のいずれかである、ことを特徴とする請求項5に記載のPLCにおけるプログラミング方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2009−70144(P2009−70144A)
【公開日】平成21年4月2日(2009.4.2)
【国際特許分類】
【出願番号】特願2007−237956(P2007−237956)
【出願日】平成19年9月13日(2007.9.13)
【出願人】(000002945)オムロン株式会社 (3,542)
【Fターム(参考)】