(57)【特許請求の範囲】
【請求項１】
プログラマブルコントローラと、前記プログラマブルコントローラと通信し、前記プログラマブルコントローラ上でユーザプログラムを実行させるためのツール装置とを備えたプログラマブルコントローラシステムであって、
前記ツール装置は、
前記ユーザプログラムの実行のために照合される第１ユーザプログラム実行用ＩＤの入力情報を受け付ける第１受け付け手段と、
前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに送信する送信手段と、
前記ユーザプログラムの実行のために照合される第２ユーザプログラム実行用ＩＤの入力情報を受け付ける第２受け付け手段と、
前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムと関連付けて自装置に設定する第１設定手段と
を備え、
前記送信手段は、前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを前記プログラマブルコントローラに送信し、
前記第２ユーザプログラム実行用ＩＤが一旦設定されて以降は前記第２ユーザプログラム実行用ＩＤを設定不能かつ消去不能な構成とされており、
前記第１ユーザプログラム実行用ＩＤを表示させる機能、及び、前記第２ユーザプログラム実行用ＩＤを表示させる機能を何れも持たない構成とされており、
前記プログラマブルコントローラは、
前記送信手段にて前記プログラマブルコントローラに送信された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに設定する第２設定手段と、
前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを受信する受信手段と、
前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを該プログラマブルコントローラに格納する格納制御手段と、
前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとが一致しているか否かを照合する照合手段と、
前記照合手段にて照合した照合結果に基づいて、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段と
を備え、
前記第１ユーザプログラム実行用ＩＤを設定可能かつ消去可能な構成とされている
ことを特徴とするプログラマブルコントローラシステム。
【請求項２】
請求項１に記載のプログラマブルコントローラシステムであって、
前記ツール装置は、複数の前記ユーザプログラムの情報を１つのプロジェクトとして管理する構成とされており、
前記第１設定手段は、前記プロジェクトに対して前記第２ユーザプログラム実行用ＩＤを設定する
ことを特徴とするプログラマブルコントローラシステム。
【請求項３】
請求項１又は請求項２に記載のプログラマブルコントローラシステムであって、
前記ツール装置は、前記第１受け付け手段にて受け付けた前記第１ユーザプログラム実行用ＩＤ、及び、前記第２受け付け手段にて受け付けた前記第２ユーザプログラム実行用ＩＤを暗号化する暗号化手段を備え、
前記送信手段は、前記暗号化手段にて暗号化された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに送信し、
前記第１設定手段は、前記暗号化手段にて暗号化された前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムと関連付けて前記ツール装置に設定し、
前記第２設定手段は、前記暗号化手段にて暗号化されて前記送信手段にて前記プログラマブルコントローラに送信された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに設定する
ことを特徴とするプログラマブルコントローラシステム。
【請求項４】
請求項１から請求項３までの何れか一つに記載のプログラマブルコントローラシステムであって、
前記ツール装置は、前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムに付加する付加手段を備え、
前記送信手段は、前記付加手段にて前記第２ユーザプログラム実行用ＩＤを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信し、
前記格納制御手段は、前記付加手段にて前記第２ユーザプログラム実行用ＩＤが付加されて前記送信手段にて前記プログラマブルコントローラに送信された前記ユーザプログラムを前記プログラマブルコントローラに格納する
ことを特徴とするプログラマブルコントローラシステム。
【請求項５】
請求項１から請求項４までの何れか一つに記載のプログラマブルコントローラシステムであって、
前記プログラマブルコントローラは、前記ユーザプログラムを該プログラマブルコントローラに備えられた不揮発性メモリに格納する構成とされており、
前記照合手段は、前記不揮発性メモリに格納されている前記ユーザプログラムを、前記プログラマブルコントローラに備えられて前記ユーザプログラムを記憶する揮発性メモリに格納するときに、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとを照合する
ことを特徴とするプログラマブルコントローラシステム。
【請求項６】
請求項１から請求項５までの何れか一つに記載のプログラマブルコントローラシステムであって、
前記プログラマブルコントローラは、前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除する解除手段を備える
ことを特徴とするプログラマブルコントローラシステム。
【請求項７】
請求項１に記載のプログラマブルコントローラシステムに備えられるツール装置であって、
前記ユーザプログラムの実行のために照合される第１ユーザプログラム実行用ＩＤの入力情報を受け付ける第１受け付け手段と、
前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに送信する送信手段と、
前記ユーザプログラムの実行のために照合される第２ユーザプログラム実行用ＩＤの入力情報を受け付ける第２受け付け手段と、
前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムと関連付けて自装置に設定する第１設定手段と
を備え、
前記送信手段は、前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを前記プログラマブルコントローラに送信し、
前記第２ユーザプログラム実行用ＩＤが一旦設定されて以降は前記第２ユーザプログラム実行用ＩＤを設定不能かつ消去不能な構成とされており、
前記第１ユーザプログラム実行用ＩＤを表示させる機能、及び、前記第２ユーザプログラム実行用ＩＤを表示させる機能を何れも持たない構成とされている
ことを特徴とするツール装置。
【請求項８】
請求項７に記載のツール装置における制御部を、前記第１受け付け手段と、前記送信手段と、前記第２受け付け手段と、前記第１設定手段とを含む手段として機能させるためのツール用プログラム。
【請求項９】
請求項８に記載のツール用プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１０】
請求項１に記載のプログラマブルコントローラシステムに備えられるプログラマブルコントローラであって、
前記送信手段にて前記プログラマブルコントローラに送信された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに設定する第２設定手段と、
前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを受信する受信手段と、
前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを該プログラマブルコントローラに格納する格納制御手段と、
前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとが一致しているか否かを照合する照合手段と、
前記照合手段にて照合した照合結果に基づいて、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段と
を備え、
前記第１ユーザプログラム実行用ＩＤを設定可能かつ消去可能な構成とされている
ことを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラと通信し、プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止する機能を有するツール装置を備えたプログラマブルコントローラシステム、ツール用プログラム、ツール装置及び記録媒体並びにプログラマブルコントローラに関する。
【背景技術】
【０００２】
一般に、プログラマブルコントローラ（以下、「ＰＬＣ」ということがある）は、ＰＬＣメーカーから出荷されたのち、ベンダーにより自動包装機や射出成型機などの各種産業用機械に組み込まれた状態でエンドユーザの工場に設置されたり、直接エンドユーザによりエンドユーザの工場の設備に組み込まれたりする。
【０００３】
このうち、ＰＬＣがベンダーにより産業用機械に組み込まれた状態でエンドユーザの工場に設置される場合、ベンダーは、ＰＬＣによって制御動作する産業用機械を所望の動作仕様にするために、ユーザプログラム（制御プログラム）を作成し、作成したユーザプログラムをＰＬＣに組み込む。
【０００４】
このとき、ベンダーは、作成されたユーザプログラムが組み込まれたＰＬＣの提供とは別に、作成されたユーザプログラムそれ自体も、例えばＣＤ−ＲＯＭ等の記録媒体に格納した形態で、参照用ユーザプログラムとして、エンドユーザに対して提供するのが通例である。
【０００５】
こうしてベンダーから提供される参照用ユーザプログラムは、エンドユーザの側におけるプログラムの軽微なカスタマイズやデータ値の参照（Ｉ／Ｏモニタ）等に供される。そして、プログラムの軽微なカスタマイズやデータ値の参照（Ｉ／Ｏモニタ）等を目的としてエンドユーザに提供される参照用ユーザプログラムの内容は、エンドユーザ側における理解度を高めるべくコメントやラベル等が付されていることを除き、ＰＬＣに組み込まれている実稼働用ユーザプログラムと実質的に変わりはない。
【０００６】
そのため、エンドユーザの側で、ユーザプログラムの組み込まれていない空のＰＬＣを用意して、これに前記の参照用ユーザプログラムを組み込めば、労せずして、実稼働可能なＰＬＣを何台でも無断複製することが可能となり、ベンダーの側において多大なる損害を被る虞がある。
【０００７】
また、このような参照用ユーザプログラムが本来のエンドユーザ以外の他人の手に渡り、実稼働可能なＰＬＣの同様な無断複製が行われれば、そのユーザプログラムに含まれる製造技術上のノウハウ等についても漏洩してしまい、技術流出により甚大なる被害を被る虞もある。
【０００８】
この点に関し、特許文献１には、ＰＬＣのメモリ上に書き込まれた照合基準となる任意のハードウェアＩＤと、ユーザプログラムのオペランドで指定される照合対象となる任意のハードウェアＩＤとの照合を行うプログラミング方法が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−７０１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に記載のＰＬＣにおけるプログラミング方法では、ユーザがハードウェアＩＤの照合を行うためにユーザプログラムを作成しなければならず、プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止するための利便性が良くない。
【００１１】
そこで、本発明は、プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止するための利便性を向上させることができるプログラマブルコントローラシステム、ツール装置、ツール用プログラム及び記録媒体並びにプログラマブルコントローラを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、前記課題を解決するために、次のプログラマブルコントローラシステム、ツール装置、ツール用プログラム及び記録媒体並びにプログラマブルコントローラを提供する。
【００１３】
（１）プログラマブルコントローラシステム
プログラマブルコントローラと、前記プログラマブルコントローラと通信し、前記プログラマブルコントローラ上でユーザプログラムを実行させるためのツール装置とを備えたプログラマブルコントローラシステムであって、前記ツール装置は、前記ユーザプログラムの実行のために照合される第１ユーザプログラム実行用ＩＤの入力情報を受け付ける第１受け付け手段と、前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに送信する送信手段と、前記ユーザプログラムの実行のために照合される第２ユーザプログラム実行用ＩＤの入力情報を受け付ける第２受け付け手段と、前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムと関連付けて自装置に設定する第１設定手段とを備え、前記送信手段は、前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを前記プログラマブルコントローラに送信し、前記第２ユーザプログラム実行用ＩＤが一旦設定されて以降は前記第２ユーザプログラム実行用ＩＤを設定不能かつ消去不能な構成とされており、前記第１ユーザプログラム実行用ＩＤを表示させる機能、及び、前記第２ユーザプログラム実行用ＩＤを表示させる機能を何れも持たない構成とされており、前記プログラマブルコントローラは、前記送信手段にて前記プログラマブルコントローラに送信された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに設定する第２設定手段と、前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを受信する受信手段と、前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを該プログラマブルコントローラに格納する格納制御手段と、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとが一致しているか否かを照合する照合手段と、前記照合手段にて照合した照合結果に基づいて、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段とを備え、前記第１ユーザプログラム実行用ＩＤを設定可能かつ消去可能な構成とされていることを特徴とするプログラマブルコントローラシステム。
【００１４】
（２）ツール装置
前記本発明に係るプログラマブルコントローラシステムに備えられるツール装置であって、前記ユーザプログラムの実行のために照合される第１ユーザプログラム実行用ＩＤの入力情報を受け付ける第１受け付け手段と、前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに送信する送信手段と、前記ユーザプログラムの実行のために照合される第２ユーザプログラム実行用ＩＤの入力情報を受け付ける第２受け付け手段と、前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムと関連付けて自装置に設定する第１設定手段とを備え、前記送信手段は、前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを前記プログラマブルコントローラに送信し、前記第２ユーザプログラム実行用ＩＤが一旦設定されて以降は前記第２ユーザプログラム実行用ＩＤを設定不能かつ消去不能な構成とされており、前記第１ユーザプログラム実行用ＩＤを表示させる機能、及び、前記第２ユーザプログラム実行用ＩＤを表示させる機能を何れも持たない構成とされていることを特徴とするツール装置。
【００１５】
（３）ツール用プログラム
前記本発明に係るツール装置におけるにおける制御部を、前記第１受け付け手段と、前記送信手段と、前記第２受け付け手段と、前記第１設定手段とを含む手段として機能させるためのツール用プログラム。
【００１６】
（４）記録媒体
前記本発明に係るツール用プログラムを記録したコンピュータ読み取り可能な記録媒体。
【００１７】
（５）プログラマブルコントローラ
前記本発明に係るプログラマブルコントローラシステムに備えられるプログラマブルコントローラであって、前記送信手段にて前記プログラマブルコントローラに送信された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに設定する第２設定手段と、前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを受信する受信手段と、前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを該プログラマブルコントローラに格納する格納制御手段と、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとが一致しているか否かを照合する照合手段と、前記照合手段にて照合した照合結果に基づいて、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段とを備え、前記第１ユーザプログラム実行用ＩＤを設定可能かつ消去可能な構成とされていることを特徴とするプログラマブルコントローラ。
【００１８】
なお、言うまでもないが、本発明にいう前記「ＩＤ」は「identification」の略であり、識別コードを意味する。
【００１９】
本発明によれば、前記第１受け付け手段によって前記第１ユーザプログラム実行用ＩＤの入力情報を受け付け、前記送信手段によって前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに送信し、前記第２設定手段によって前記送信手段にて前記プログラマブルコントローラに送信された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに設定することに加えて、前記第２受け付け手段によって前記ユーザプログラムの実行のために照合される前記第２ユーザプログラム実行用ＩＤの入力情報を受け付け、前記第１設定手段によって前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムと関連付けて自装置に設定するので、ユーザがＩＤの照合を行うためにユーザプログラムを作成しなくても、ＩＤを入力するといった簡単な操作によって前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止することができ、これにより、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止するための利便性を向上させることが可能となる。
しかも、前記格納制御手段によって前記第２ユーザプログラム実行用ＩＤが関連付けられた前記ユーザプログラムを、前記プログラマブルコントローラに格納するので、前記照合手段による照合毎に前記ツール装置から前記第２ユーザプログラム実行用ＩＤを取得しなくても、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとを容易に照合することが可能となる。
【００２０】
本発明において、前記ツール装置は、複数の前記ユーザプログラムの情報を１つのプロジェクトとして管理する構成とされており、前記第１設定手段は、前記プロジェクトに対して前記第２ユーザプログラム実行用ＩＤを設定する態様を例示できる。
【００２１】
この特定事項では、前記ユーザプログラムが前記プロジェクトとして管理され、前記第１設定手段によって前記第２ユーザプログラム実行用ＩＤを前記プロジェクトに設定するので、前記第２ユーザプログラム実行用ＩＤと前記ユーザプログラムとの関連付けを容易に行うことができる。
【００２２】
本発明において、前記ツール装置は、前記第１受け付け手段にて受け付けた前記第１ユーザプログラム実行用ＩＤ、及び、前記第２受け付け手段にて受け付けた前記第２ユーザプログラム実行用ＩＤを暗号化する暗号化手段を備え、前記送信手段は、前記暗号化手段にて暗号化された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに送信し、前記第１設定手段は、前記暗号化手段にて暗号化された前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムと関連付けて前記ツール装置に設定し、前記第２設定手段は、前記暗号化手段にて暗号化されて前記送信手段にて前記プログラマブルコントローラに送信された前記第１ユーザプログラム実行用ＩＤを前記プログラマブルコントローラに設定する態様を例示できる。
【００２３】
この特定事項では、前記暗号化手段によって前記第１受け付け手段にて受け付けた前記第１ユーザプログラム実行用ＩＤ、及び、前記第２受け付け手段にて受け付けた前記第２ユーザプログラム実行用ＩＤを暗号化するので、万一、前記第１ユーザプログラム実行用ＩＤ及び／又は前記第２ユーザプログラム実行用ＩＤの情報が読み出されて盗まれたとしても前記第１ユーザプログラム実行用ＩＤ及び前記第２ユーザプログラム実行用ＩＤが暗号化されたものであるため、前記第１ユーザプログラム実行用ＩＤ及び／又は前記第２ユーザプログラム実行用ＩＤを本来のユーザ以外の他人に知られることが困難となる。これにより、前記第１ユーザプログラム実行用ＩＤ及び／又は前記第２ユーザプログラム実行用ＩＤの外部への漏洩に対するセキュリティを向上させることが可能となる。
【００２６】
本発明において、前記ツール装置は、前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムに付加する付加手段を備え、前記送信手段は、前記付加手段にて前記第２ユーザプログラム実行用ＩＤを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信し、前記格納制御手段は、前記付加手段にて前記第２ユーザプログラム実行用ＩＤが付加されて前記送信手段にて前記プログラマブルコントローラに送信された前記ユーザプログラムを前記プログラマブルコントローラに格納する態様を例示できる。
【００２７】
この特定事項では、前記付加手段によって前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムに付加し、前記格納制御手段によって前記付加手段にて前記第２ユーザプログラム実行用ＩＤを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信して前記プログラマブルコントローラに格納するので、前記プログラマブルコントローラにおいて前記第２ユーザプログラム実行用ＩＤの存在を分かり難くすることが可能となる。
【００２８】
本発明において、前記プログラマブルコントローラは、前記ユーザプログラムを該プログラマブルコントローラに備えられた不揮発性メモリに格納する構成とされており、前記照合手段は、前記不揮発性メモリに格納されている前記ユーザプログラムを、前記プログラマブルコントローラに備えられて前記ユーザプログラムを記憶する揮発性メモリに格納するときに、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとを照合する態様を例示できる。
【００２９】
この特定事項では、前記照合手段によって前記不揮発性メモリに格納されている前記ユーザプログラムを前記揮発性メモリに格納するときに、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとを照合するので、前記第１ユーザプログラム実行用ＩＤと前記第２ユーザプログラム実行用ＩＤとを、前記ユーザプログラムの実行に先だって確実に照合することが可能となる。
【００３０】
本発明において、前記プログラマブルコントローラは、前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除する解除手段を備える態様を例示できる。
【００３１】
この特定事項では、前記実行禁止手段によって前記ユーザプログラムが実行禁止状態となったときには、前記解除手段によって前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除することができる。これにより、本来のユーザ以外の他人による前記プログラマブルコントローラへの前記第１ユーザプログラム実行用ＩＤの不正設定労力を増やすことができ、ひいては他人による不正行為を抑止することが可能となる。
【発明の効果】
【００３２】
以上説明したように、本発明によると、前記ツール装置において、前記第２受け付け手段によって前記ユーザプログラムの実行のために照合される前記第２ユーザプログラム実行用ＩＤの入力情報を受け付け、前記第１設定手段によって前記第２ユーザプログラム実行用ＩＤを前記ユーザプログラムと関連付けて自装置に設定するので、ユーザがＩＤの照合を行うためにユーザプログラムを作成しなくても、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止することができ、これにより、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止するための利便性を向上させることができる。
【図面の簡単な説明】
【００３３】
【図１】プログラマブルコントローラシステムにおけるツール装置及びそれと通信するプログラマブルコントローラを概念的に示す概略構成図である。
【図２】ＰＬＣにおけるＣＰＵユニットのハードウェア構成を示すブロック図である。
【図３】マイクロプロセッサにより実行されるＰＬＣ全体の処理例を示すフローチャートである。
【図４】ＰＬＣと通信するツール装置の概略構成を示すシステムブロック図である。
【図５】図１に示すツール装置における表示装置に表示された第１ユーザプログラム実行用ＩＤ設定画面を示す平面図である。
【図６】第１ユーザプログラム実行用ＩＤの受け付け送信処理の一例を示すフローチャートである。
【図７】図１に示すツール装置における表示装置に表示された第２ユーザプログラム実行用ＩＤ設定画面を示す平面図である。
【図８】プロジェクトのファイルのデータ構造を示す模式図である。
【図９】第２ユーザプログラム実行用ＩＤの設定処理の一例を示すフローチャートである。
【図１０】ユーザプログラムに付加された第２ユーザプログラム実行用ＩＤのデータ構造を示す模式図である。
【図１１】第１ユーザプログラム実行用ＩＤ及び第２ユーザプログラム実行用ＩＤの一致及び不一致の条件の一例を示す表である。
【図１２】第１ユーザプログラム実行用ＩＤと第２ユーザプログラム実行用ＩＤとを照合する照合処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００３４】
以下、本発明の実施の形態について添付図面を参照しつつ説明する。なお、以下の実施の形態は、本発明を具体化した例であって、本発明の技術的範囲を限定する性格のものではない。
【００３５】
［プログラマブルコントローラシステムの全体構成］
図１は、プログラマブルコントローラシステム３００におけるツール装置２００及びそれと通信するプログラマブルコントローラ１００を概念的に示す概略構成図である。
【００３６】
図１に示すように、プログラマブルコントローラシステム３００は、プログラマブルコントローラ（以下、「ＰＬＣ」という）１００とツール装置２００（ここではコンピュータ）とを備えている。
【００３７】
プログラマブルコントローラシステム３００において、ＰＬＣ１００は、入出力ユニット１３０で入力した信号をＣＰＵユニット１１０の入出力メモリ１１７（後述する図２参照）に取り込み（ＩＮリフレッシュ）、予め登録されたラダー言語等のＰＬＣ制御用のプログラム記述言語で作成されたユーザプログラムＹＰ（図２参照）に基づき論理演算を行い（演算実行）、その演算実行結果を入出力メモリ１１７に書き込んで入出力ユニット１３０に送り出し（ＯＵＴリフレッシュ）、その後、いわゆる周辺サービス処理を行うことをサイクリックに繰り返し処理する。ツール装置２００は、本実施の形態では、ユーザプログラム開発支援装置（例えば、ＣＸ−Ｐｒｏｇａｍｍｅｒ：出願人の製品）とされており、ＰＬＣ１００に通信ケーブルＣＢを介して接続され、ユーザプログラムＹＰをダウンロードし、ＰＬＣ１００におけるＣＰＵユニット１１０のバックアップメモリ１１４（図２参照）やユーザメモリ１１６（図２参照）に格納させる。また、ツール装置２００は、ＰＬＣ１００に格納されているユーザプログラムＹＰを修正等する場合には、ＰＬＣ１００に格納されているユーザプログラムＹＰをアップロードし、必要な修正をした後、修正後のユーザプログラムＹＰをＰＬＣ１００に再度ダウンロードする。なお、図１において、符号２１０，２１１，２１２，２３０，２３１は、それぞれ、操作入力部、キーボード、ポインティングデバイス、表示出力部及び表示装置を示している。
【００３８】
［ＰＬＣのハードウェア構成］
ＰＬＣ１００は、ＣＰＵ（Central Processing Unit）部分（入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを司る部分）、入出力回路部分、通信回路部分、各種高機能回路部分等々を単一のハウジングに収容してなるオールインワンタイプのものと、それらの部分をそれぞれ専用のユニットハウジングに収容してなるビルディングブロックタイプのものとが知られている。本発明はいずれのタイプのＰＬＣにも適用できるが、本実施の形態では、ビルディングブロックタイプのものを例にとって以下に説明する。また、本発明は、同時に一つのタスクしか実行できないシングルタスクによる処理の他、複数のタスクを並行して実行するマルチタスクによる処理にも適用することができる。
【００３９】
本実施の形態では、ＰＬＣ１００は、ＣＰＵユニット１１０、通信ユニット１２０、複数の入出力ユニット１３０及び電源ユニット１４０を含んで構成されている。
【００４０】
ＣＰＵユニット１１０は、ＰＬＣ１００の全体を統括制御するものであり、後ほど図３に示すフローチャートを参照して説明するように、入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを実行するように構成される。
【００４１】
通信ユニット１２０は、ＬＡＮ（Local Area Network）等のネットワークを介してツール装置２００との間における通信を制御する他、図示していないが、ＰＬＣ１００に対して他のＰＬＣ又はリモートＩＯターミナル等が接続されている場合には、それらとの間における通信制御にも供される。
【００４２】
入出力ユニット（Ｉ／Ｏユニット）１３０は、外部入出力回路及び図示しない端子台を備えており、この端子台には図示しない光電スイッチ、リミットスイッチ、マイクロスイッチ等々のような各種の外部入力機器とリレー、ランプ、ソレノイド等の各種外部出力機器が配線される。
【００４３】
図２は、ＰＬＣ１００におけるＣＰＵユニット１１０のハードウェア構成を示すブロック図である。
【００４４】
図２に示すように、ＣＰＵユニット１１０は、マイクロプロセッサ（ＭＰＵ）１１１、システムメモリ（ＳＲＯＭ）１１２、ＩＤ格納用メモリ（ＩＤＲＯＭ）１１３、バックアップメモリ（ＢＲＯＭ）１１４、ワークメモリ（ＷＲＡＭ）１１５、ユーザメモリ（ＵＲＡＭ）１１６及び入出力メモリ（ＩＯＲＡＭ）１１７を備えている。
【００４５】
マイクロプロセッサ１１１は、ＣＰＵユニット１１０の全体を統括制御するものであり、システムメモリ１１２に格納されたシステムプログラムＳＰを実行することによって、ＣＰＵユニット１１０に必要な各種の機能を実現するように構成されている。
【００４６】
システムメモリ１１２は、この例ではフラッシュメモリなどの不揮発性メモリで構成されており、先に述べたように、マイクロプロセッサ１１１で実行される各種のシステムプログラムＳＰが格納されている。
【００４７】
ＩＤ格納用メモリ１１３は、この例では電気的に書き換え可能なＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）などの書き換え可能な不揮発性メモリで構成されている。ＩＤ格納用メモリ１１３は、図示しない制御基板に着脱不能に搭載（直付け）されており、後述する第１ユーザプログラム実行用ＩＤ１０が書き込まれる。第１ユーザプログラム実行用ＩＤ１０は、後述するように、図１に示すツール装置２００からの入力操作によって、ＩＤ格納用メモリ１１３に対して書き換え可能かつ消去可能に設定される。
【００４８】
バックアップメモリ１１４は、フラッシュメモリなどの不揮発性メモリで構成され、電源オフ時にはバッテリが存在しない状態でも内容を保持するように構成されている。バックアップメモリ１１４には、ＰＬＣ１００の制御仕様に対応したユーザプログラムＹＰが、所定のプログラム言語（例えば、ラダー言語など）にて作成され、マイクロプロセッサ１１１で実行可能なオブジェクトコードに変換されて格納される。
【００４９】
ワークメモリ１１５は、マイクロプロセッサ１１１がシステムメモリ１１２から読み出されたシステムプログラムＳＰを実行する際のワークエリアとして機能するものであり、書き換え可能なＲＡＭで構成されている。
【００５０】
ユーザメモリ１１６は、ユーザプログラムＹＰの実行用メモリとされている。ユーザメモリ１１６は、揮発性メモリとして作用するスタティックＲＡＭ（Static Random Access Memory）で構成されており、電源オフ時には内容を保持することができない。ユーザメモリ１１６には、電源が投入されたときに、バックアップメモリ１１４から転送されたユーザプログラムＹＰが格納される。
【００５１】
入出力メモリ１１７は、マイクロプロセッサ１１１がユーザメモリ１１６から読み出されたユーザプログラムＹＰを実行する際に参照するものであり、その内部には、ＩＯバス１１８を介して接続された入出力ユニット１３０（図１参照）の入出力端子のデータと対応する入出力データエリア、内部演算のみに使用される補助リレーエリア、演算途中で使用される各種の設定データ、カウントデータ等を格納するデータエリアの他に、特殊補助リレーエリアが設けられている。なお、図２において、符号１１３ａは記憶領域を示している。また、図２における第２設定手段Ｑｂ１、格納制御手段Ｑｂ２、照合手段Ｑｂ３、実行禁止手段Ｑｂ４及び解除手段Ｑｂ５については後ほど説明する。
【００５２】
［ＰＬＣ全体の処理例］
次に、マイクロプロセッサ１１１により実行されるＰＬＣ１００全体の処理について図３を参照しながら以下に説明する。
【００５３】
図３は、マイクロプロセッサ１１１により実行されるＰＬＣ１００全体の処理例を示すフローチャートである。
【００５４】
図３に示すように、マイクロプロセッサ１１１は、電源投入（Ｐｏｗｅｒ Ｏｎ）により処理が開始されると、まず、後述するＩＤの照合処理（処理Ｓ４０）を実行した後、各種のフラグやレジスタ類の初期設定を行うために初期化処理（処理Ｓ１）を実行する。ＩＤの照合処理Ｓ４０の詳細は、後ほど図１２を参照しながら説明する。
【００５５】
続いて、マイクロプロセッサ１１１は、それ以降の各種動作モードに共通な処理として共通処理（処理Ｓ２）を実行する。共通処理（処理Ｓ２）においては、ＩＯバス１１８の導通チェック、各ユニットの接続チェック等々の各種の故障診断処理などを実行する。
【００５６】
続いて、マイクロプロセッサ１１１は、外部のモード設定スイッチや入出力メモリ１１７の所定フラグなどを参照することによって、その時点の動作モード設定の読み込みを行う（処理Ｓ３）。
【００５７】
続いて、マイクロプロセッサ１１１は、読み込んだモード設定データと各モードに対応するデータとを照合することによって、動作モードの判定を行う（処理Ｓ４）。ここで、動作モードが「運転」モードであると判定すると（処理Ｓ４：Ｙｅｓ）、入出力更新処理（処理Ｓ５）を実行する。
【００５８】
マイクロプロセッサ１１１は、入出力更新処理（処理Ｓ５）において、先に説明した入出力メモリ１１７の入力データを入出力ユニット１３０の入力端子の実データで更新する入力更新処理と、入出力メモリ１１７の出力データによって、入出力ユニット１３０の出力端子のデータを更新する出力更新処理とを実行する。
【００５９】
続いて、マイクロプロセッサ１１１は、ユーザプログラム実行処理（処理Ｓ６）を実行する。ユーザプログラム実行処理（処理Ｓ６）においては、ユーザメモリ１１６からユーザプログラムＹＰを構成する各命令を順次に読み出し、読み出した命令を、入出力メモリ１１７の入出力データを参照して実行し、その実行結果に基づいて入出力データの書き換えを行う各命令対応処理を実行する。
【００６０】
続いて、マイクロプロセッサ１１１は、周辺サービス処理（処理Ｓ７）を実行する。周辺サービス処理（処理Ｓ７）においては、ツール装置２００と適宜やり取りを行うことによって、ツール装置２００から到来するリクエストに対応した様々な処理を実行する。すなわち、ツール装置２００がプログラムアップロードを要求するのであれば、指定された範囲のユーザプログラムＹＰを読み出して、これをツール装置２００に対して送信する。また、ツール装置２００からの要求が、プログラムダウンロードを要求するものであれば、ツール装置２００から送られてくるユーザプログラムＹＰを受信して、これをバックアップメモリ１１４やユーザメモリ１１６へと書き込む。その他、周辺サービス処理（処理Ｓ７）においては、ＰＬＣ１００に対して１若しくは２以上のリモートＩＯターミナルが接続されていたり、或いは、ＰＬＣ１００が他の１又は２以上のＰＬＣと接続されていたりするような場合には、それらのリモート機器との間におけるデータのやり取りを行う。周辺サービス処理（処理Ｓ７）の後、共通処理（処理Ｓ２）に進む。
【００６１】
マイクロプロセッサ１１１は、動作モードが「プログラムモード」であると判定すると（処理Ｓ４：Ｎｏ）、処理Ｓ８へと進んで、プログラムモードに対応したＰＬＣ１００のシステム設定などを転送したり、ユーザプログラムＹＰのＰＬＣ１００へのダウンロードやＰＬＣ１００からのアップロードを行ったり、入出力テーブルを作成したりする処理を実行した後、ユーザプログラムＹＰの転送があるか否かを判断する（処理Ｓ９）。処理Ｓ９でユーザプログラムＹＰの転送がないと判断した場合には（処理Ｓ９：Ｎｏ）、処理Ｓ３に移行する一方、処理Ｓ９でユーザプログラムＹＰの転送があると判断した場合には（処理Ｓ９：Ｙｅｓ）、ＩＤの照合処理（処理Ｓ４０）を実行する（図１２参照）。以後、以上説明した一連の処理（処理Ｓ３〜Ｓ９，Ｓ４０）を繰り返し実行することによって、ＰＬＣ１００としての各種の機能を実現する。
【００６２】
［ツール装置のハードウェア構成］
ツール装置２００は、既述したように、本実施の形態では、ユーザプログラムＹＰの作成、編集、ＰＬＣ１００へのダウンロード、ＰＬＣ１００からのアップロード、その他各種のパラメータ設定又は変更などに供されるユーザプログラム開発支援装置とされている。
【００６３】
ツール装置２００を用いてユーザプログラムＹＰを作成する場合、複数のユーザプログラムＹＰからなるユーザプログラム全体の情報を１つのプロジェクトＰＲ（後述する図４及び図８参照）として管理する構成とされている。一般に、この種のツール装置２００は、パーソナルコンピュータ等の通信機能を備えたコンピュータに所定のプログラムを格納（インストール）することにより構成される。
【００６４】
ツール装置２００は、ＰＬＣ１００と通信し、ＰＬＣ１００上で実行させるユーザプログラムＹＰの無断利用を防止する機能を有している。
【００６５】
図４は、ＰＬＣ１００と通信するツール装置２００の概略構成を示すシステムブロック図である。
【００６６】
図４に示すように、ツール装置２００は、操作入力部２１０（図１も参照）と、記憶部２２０と、表示出力部２３０（図１も参照）と、通信部２４０と、制御部２５０と、読み取り部２６０とを備えている。
【００６７】
操作入力部２１０は、キーボード２１１やポインティングデバイス２１２等の入力装置を備えており、制御部２５０の入力系に接続されている。操作入力部２１０は、ユーザによる入力操作を受け付けて入力された操作情報を制御部２５０に送信する構成とされている。
【００６８】
記憶部２２０は、ＲＯＭ２２１、ＲＡＭ２２２、フラッシュメモリ等のデータ書き換え可能な不揮発性メモリ２２３等の記憶装置及びこれも不揮発性メモリとして作用するハードディスク装置２２４等の大容量記憶装置を備えている。なお、ハードディスク装置２２４には、後述するツール用プログラムＰ（無断利用防止用プログラムを含むプログラム）が記録されたＣＤ（Compact Disc）−ＲＯＭ等の記録媒体Ｍを読み出す読み取り部２６０によって読み出されたツール用プログラムＰを含むソフトウェアが予め格納（インストール）されている。また、記録媒体Ｍは、ＵＳＢ（Universal Serial Bus）メモリやＳＤ（Secure Digital）メモリカードであってもよい。
【００６９】
表示出力部２３０は、液晶表示パネルやＥＬ（Electro Luminescence）表示パネル等の表示装置２３１を備えており、制御部２５０の出力系に接続されている。表示装置２３１は、制御部２５０からの出力表示情報を表示画面に表示する構成とされている。なお、表示装置２３１における表示画面には、タッチパネル等のタッチ入力操作装置が設けられていてもよい。タッチ入力操作装置は、表示画面に表示される画面の表示状態に応じた入力操作を行うことができ、操作入力部として作用する構成とされる。
【００７０】
通信部２４０は、インターフェイス部２４１（具体的にはＬＡＮポート）を有しており、通信ケーブルＣＢ（具体的にはＬＡＮケーブル）を介して制御部２５０とＰＬＣ１００における通信ユニット１２０（図１参照）との間でデータの通信ができるようになっている。なお、ＰＬＣ１００及びツール装置２００は、例えば、ＵＳＢポートやＲＳ２３２Ｃなどのシリアルインターフェイスを介して相互に接続されるようになっていてもよい。
【００７１】
制御部２５０は、ＣＰＵ等の演算処理装置で構成されており、記憶部２２０のハードディスク装置２２４に予め格納されたツール用プログラムＰ等のソフトウェアプログラムを記憶部２２０のＲＡＭ２２２上にロードして実行することにより、各種の処理を行うようになっている。記憶部２２０のＲＡＭ２２２は、制御部２５０に対して作業用のワークエリアを提供する。なお、図４において、符号２０，２２４ａは、それぞれ、第２ユーザプログラム実行用ＩＤ及び記憶領域を示している。
【００７２】
［ツール装置のソフトウェア構成］
そして、ツール装置２００における制御部２５０は、第１受け付け手段Ｑａ１、送信手段Ｑａ２、第２受け付け手段Ｑａ３及び第１設定手段Ｑａ４として機能する。すなわち、ツール用プログラムＰは、ユーザプログラム開発支援用プログラムに組み込まれており、第１受け付け手段Ｑａ１に対応する第１受け付けステップと、送信手段Ｑａ２に対応する送信ステップと、第２受け付け手段Ｑａ３に対応する第２受け付けステップと、第１設定手段Ｑａ４に対応する第１設定ステップとを制御部２５０に実行させる。なお、図４における付加手段Ｑａ５及び暗号化手段Ｑａ６については後ほど説明する。
【００７３】
（第１受け付けステップ）
第１受け付けステップでは、ユーザプログラムＹＰの実行のために照合される第１ユーザプログラム実行用ＩＤ１０の入力情報を受け付ける。なお、本実施の形態において、第１受け付けステップでは、ユーザ（通常はベンダー）のセキュリティレベル（ユーザ認証されたセキュリティレベル）に応じて入力操作を制限するようになっている。
【００７４】
図５は、図１に示すツール装置２００における表示装置２３１に表示された第１ユーザプログラム実行用ＩＤ設定画面２３１ａを示す平面図である。
【００７５】
図５に示すように、表示装置２３１における第１ユーザプログラム実行用ＩＤ設定画面２３１ａには、操作権限を持ったユーザによって、第１ユーザプログラム実行用ＩＤ１０を入力するための入力欄ＩＰ１と、第１ユーザプログラム実行用ＩＤ１０の入力操作を確定するＯＫボタンＢＴ１と、第１ユーザプログラム実行用ＩＤ設定画面２３１ａを終了するキャンセルボタンＢＴ２とが第１ユーザプログラム実行用ＩＤ設定画面２３１ａに表示されるようになっている。具体的には、入力欄ＩＰ１には、８〜３２文字の半角英数字が入力される。
【００７６】
第１ユーザプログラム実行用ＩＤ設定画面２３１ａにおいて、ユーザによるキーボード２１１（図１参照）の入力操作によって入力欄ＩＰ１に第１ユーザプログラム実行用ＩＤ１０が入力され、例えば、ユーザによるポインティングデバイス２１２（図１参照）の操作によってカーソルＪを移動させてＯＫボタンＢＴ３が操作（クリック）されることで、入力欄ＩＰ１に入力された第１ユーザプログラム実行用ＩＤ１０を制御部２５０に送信する。一方、キャンセルボタンＢＴ２が操作（クリック）されることで、第１ユーザプログラム実行用ＩＤ設定画面２３１ａを終了するようになっている。なお、第１ユーザプログラム実行用ＩＤ設定画面２３１ａにおけるボタン操作はタッチパネルによる操作であってもよい。
【００７７】
（送信ステップ）
送信ステップでは、第１受け付けステップにて受け付けた第１ユーザプログラム実行用ＩＤ１０を通信部２４０（図４参照）から通信ケーブルＣＢを経てＰＬＣ１００に送信する。
【００７８】
（第１ユーザプログラム実行用ＩＤの受け付け送信処理例）
次に、第１ユーザプログラム実行用ＩＤ１０の受け付け送信処理の一例について図６を参照しながら以下に説明する。図６は、第１ユーザプログラム実行用ＩＤ１０の受け付け処理の一例を示すフローチャートである。なお、第１ユーザプログラム実行用ＩＤ１０の受け付け送信処理は、プログラムモードで行う。
【００７９】
図６に示す受け付け送信処理例のフローチャートでは、まず、制御部２５０は、第１ユーザプログラム実行用ＩＤ１０の入力操作（図５参照）を受け付け（処理Ｓ１１）、キャンセルボタンＢＴ２が操作されたか否かを判断する（処理Ｓ１２）。キャンセルボタンＢＴ２が操作された場合には（処理Ｓ１２：Ｙｅｓ）、処理を終了する一方、キャンセルボタンＢＴ２が操作されていない場合には（処理Ｓ１２：Ｎｏ）、ＯＫボタンＢＴ１が操作されたか否かを判断する（処理Ｓ１３）。ＯＫボタンＢＴ１が操作されていない場合には（処理Ｓ１３：Ｎｏ）、処理Ｓ１１へ移行する一方、ＯＫボタンＢＴ１が操作された場合には（処理Ｓ１３：Ｙｅｓ）、第１ユーザプログラム実行用ＩＤ１０をＰＬＣ１００へ送信し（処理Ｓ１４）、処理を終了する。
【００８０】
（第２受け付けステップ）
第２受け付けステップでは、ユーザプログラムＹＰの実行のために照合される第２ユーザプログラム実行用ＩＤ２０の入力情報を受け付ける。
【００８１】
図７は、図１に示すツール装置２００における表示装置２３１に表示された第２ユーザプログラム実行用ＩＤ設定画面２３１ｂを示す平面図である。
【００８２】
図７に示すように、表示装置２３１における第２ユーザプログラム実行用ＩＤ設定画面２３１ｂには、ユーザ（通常はベンダー）によって、第２ユーザプログラム実行用ＩＤ２０を入力するための第１入力欄ＩＰ２と、確認用の第２ユーザプログラム実行用ＩＤ２０を入力するための第２入力欄ＩＰ３と、第２ユーザプログラム実行用ＩＤ２０の入力操作を確定するＯＫボタンＢＴ３と、第２ユーザプログラム実行用ＩＤ設定画面２３１ｂを終了するキャンセルボタンＢＴ４とが第２ユーザプログラム実行用ＩＤ設定画面２３１ｂに表示されるようになっている。具体的には、第１入力欄ＩＰ２及び第２入力欄ＩＰ３には、８〜３２文字の半角英数字が入力される。
【００８３】
第２ユーザプログラム実行用ＩＤ設定画面２３１ｂにおいて、ユーザによるキーボード２１１（図１参照）の入力操作によって第１入力欄ＩＰ２に第２ユーザプログラム実行用ＩＤ２０が入力され、第２入力欄ＩＰ３に確認用の第２ユーザプログラム実行用ＩＤ２０が入力され、例えば、ユーザによるポインティングデバイス２１２（図１参照）の操作によってカーソルＪを移動させてＯＫボタンＢＴ３が操作（クリック）されることで、第１入力欄ＩＰ２に入力された第２ユーザプログラム実行用ＩＤ２０と、第２入力欄ＩＰ３に入力された確認用の第２ユーザプログラム実行用ＩＤ２０とを制御部２５０に送信する。一方、キャンセルボタンＢＴ４が操作（クリック）されることで、第２ユーザプログラム実行用ＩＤ設定画面２３１ｂを終了するようになっている。なお、第２ユーザプログラム実行用ＩＤ設定画面２３１ｂにおけるボタン操作はタッチパネルによる操作であってもよい。
【００８４】
（第１設定ステップ）
第１設定ステップでは、第２ユーザプログラム実行用ＩＤ２０をツール装置２００に備えられたハードディスク装置２２４（図４参照）の記憶領域２２４ａに記憶させて設定する。具体的には、第１設定ステップは、プロジェクトＰＲに対して第２ユーザプログラム実行用ＩＤ２０を設定する。プロジェクトＰＲのファイルデータ（以下、単にファイルという）には、複数のユーザプログラムＹＰからなるユーザプログラム全体が変数（データ）などの情報と共に保存される。ユーザプログラム全体が保存されたプロジェクトＰＲのファイルは、ハードディスク装置２２４に格納される。
【００８５】
図８は、プロジェクトＰＲのファイルのデータ構造を示す模式図である。図８に示すプロジェクトＰＲのファイルは、複数のユーザプログラムＹＰからなるユーザプログラム全体及び変数テーブル、ＰＬＣシステム設定、Ｉ／Ｏテーブル、Ｉ／Ｏメモリデータなどの他の設定データを含んでいる。個々のユーザプログラムＹＰは、同一のプロジェクトＰＲのファイル内で作成される。また、ユーザプログラムＹＰは、複数のサブプログラムから構成されている。そして、第２ユーザプログラム実行用ＩＤ２０は、プロジェクトＰＲのファイル内に設定される。これにより、個々のユーザプログラムＹＰと第２ユーザプログラム実行用ＩＤ２０とを容易に関連付ける（対応付ける）ことが可能となる。
【００８６】
（第２ユーザプログラム実行用ＩＤの書き込みについて）
ここで、ツール装置２００は、プロジェクトＰＲに対して第２ユーザプログラム実行用ＩＤ２０が一度設定されて以降は第２ユーザプログラム実行用ＩＤ２０を設定変更不能かつ消去不能な構成とされている。
【００８７】
すなわち、第１設定ステップでは、第２ユーザプログラム実行用ＩＤ２０がプロジェクトＰＲに設定されていないときにのみ、第２ユーザプログラム実行用ＩＤ２０を設定し、設定後はＩＤ設定用フラグを立てる等によって第２ユーザプログラム実行用ＩＤ２０を変更も消去もできないようになっている。
【００８８】
（第２ユーザプログラム実行用ＩＤの設定処理例）
次に、第２ユーザプログラム実行用ＩＤ２０の設定処理の一例について図９を参照しながら以下に説明する。図９は、第２ユーザプログラム実行用ＩＤ２０の設定処理の一例を示すフローチャートである。
【００８９】
図９に示す設定処理例のフローチャートでは、まず、制御部２５０は、第２ユーザプログラム実行用ＩＤ２０が既にプロジェクトＰＲに設定されているか否かを判断する（処理Ｓ２１）。
【００９０】
第２ユーザプログラム実行用ＩＤ２０が既にプロジェクトＰＲに設定されている場合には（処理Ｓ２１：Ｙｅｓ）、第２ユーザプログラム実行用ＩＤ２０が既に設定されている旨の表示を行い（処理Ｓ２２）、処理を終了する一方、第２ユーザプログラム実行用ＩＤ２０が未だプロジェクトＰＲに設定されてない場合には（処理Ｓ２１：Ｎｏ）、処理Ｓ２３に移行する。
【００９１】
次に、第２ユーザプログラム実行用ＩＤ２０の入力操作（図７参照）を受け付け（処理Ｓ２３）、キャンセルボタンＢＴ４が操作されたか否かを判断する（処理Ｓ２４）。キャンセルボタンＢＴ４が操作された場合には（処理Ｓ２４：Ｙｅｓ）、処理を終了する一方、キャンセルボタンＢＴ４が操作されていない場合には（処理Ｓ２４：Ｎｏ）、ＯＫボタンＢＴ３が操作されたか否かを判断する（処理Ｓ２５）。ＯＫボタンＢＴ３が操作されていない場合には（処理Ｓ２５：Ｎｏ）、処理Ｓ２３へ移行する一方、ＯＫボタンＢＴ３が操作された場合には（処理Ｓ２５：Ｙｅｓ）、確認キー（例えば「Ｙ」キー）を操作（押下）する旨のメッセージ表示（処理Ｓ２６）を行う。
【００９２】
次に、確認キー（例えば「Ｙ」キー）が操作（押下）されたか否かを判断し（処理Ｓ２７）、確認キー以外のキーが操作された場合には（処理Ｓ２７：Ｎｏ）、処理Ｓ２３に移行する一方、確認のキー（例えば「Ｙ」キー）が操作された場合には（処理Ｓ２７：Ｙｅｓ）、処理Ｓ２８に移行する。
【００９３】
次に、第１入力欄ＩＰ２に入力された第２ユーザプログラム実行用ＩＤ２０が第２入力欄ＩＰ３に入力された確認用の第２ユーザプログラム実行用ＩＤ２０と一致しているか否かを判断し（処理Ｓ２８）、一致していない場合には（処理Ｓ２８：Ｎｏ）、一致していない旨のメッセージを表示し（処理Ｓ２９）、処理Ｓ２３に移行する一方、一致する場合には（処理Ｓ２８：Ｙｅｓ）、第２ユーザプログラム実行用ＩＤ２０をプロジェクトＰＲに設定し（処理Ｓ３０）、処理を終了する。
【００９４】
（第２ユーザプログラム実行用ＩＤの表示について）
また、制御部２５０は、プロジェクトＰＲに設定された後のハードディスク装置２２４の記憶領域２２４ａに記憶されている第２ユーザプログラム実行用ＩＤ２０を表示させる機能を持たない（具体的には第２ユーザプログラム実行用ＩＤ２０を表示させることを禁止する）構成とされている。
【００９５】
本実施の形態では、制御部２５０は、さらに、付加手段Ｑａ５（図４参照）として機能する。すなわち、ツール用プログラムＰは、付加手段Ｑａ５に対応する付加ステップを制御部２５０に実行させる。
【００９６】
（付加ステップ）
付加ステップでは、プロジェクトＰＲ（図８参照）における第２ユーザプログラム実行用ＩＤ２０をユーザプログラムＹＰに付加する。具体的には、付加ステップでは、プロジェクトＰＲにおける第２ユーザプログラム実行用ＩＤ２０を読み出して、ユーザプログラムＹＰの言語に対応するコンパイラによってコンパイルされたユーザプログラムＹＰのオブジェクトコード（後述する図１０参照）に対して、プロジェクトＰＲから読み出した第２ユーザプログラム実行用ＩＤ２０を組み込むようになっている。
【００９７】
図１０は、ユーザプログラムＹＰに付加された第２ユーザプログラム実行用ＩＤ２０のデータ構造を示す模式図である。
【００９８】
図１０に示すように、ユーザプログラムＹＰのオブジェクトコードに付加された第２ユーザプログラム実行用ＩＤ２０のファイルデータ１１は、ファイル情報ヘッダ部１２とデータ部１３とで構成されている。ファイル情報ヘッダ部１２には、ファイルバージョンなどのファイル情報が記録される。データ部１３には、第２ユーザプログラム実行用ＩＤ２０が記憶される。
【００９９】
そして、送信ステップでは、付加ステップにて第２ユーザプログラム実行用ＩＤ２０を付加したユーザプログラムＹＰをＰＬＣ１００に送信する。
【０１００】
なお、第２ユーザプログラム実行用ＩＤ２０とユーザプログラムＹＰとを別々にＰＬＣ１００に送信してもよい。この場合、第２ユーザプログラム実行用ＩＤ２０とユーザプログラムＹＰとを同時に又は異なる時間に送信してもよい。
【０１０１】
本実施の形態では、制御部２５０は、さらに、暗号化手段Ｑａ６（図４参照）として機能する。すなわち、ツール用プログラムＰは、暗号化手段Ｑａ６に対応する暗号化ステップを制御部２５０に実行させる。
【０１０２】
（暗号化ステップ）
暗号化ステップでは、第１受け付けステップにて受け付けた第１ユーザプログラム実行用ＩＤ１０、及び、第２受け付けステップにて受け付けた第２ユーザプログラム実行用ＩＤ２０を不可逆に暗号化する。ここで、不可逆の暗号化処理は、元のＩＤコードに戻すことができない処理であり、同じ暗号キーを使って同じ文字列を暗号化すると、生成される文字列は同じものとなる。なお、可逆的に暗号化した第１及び第２ユーザプログラム実行用ＩＤ１０，２０を照合のときに復号化するようにしてもよい。
【０１０３】
そして、第１設定ステップでは、暗号化ステップにて暗号化された第２ユーザプログラム実行用ＩＤ２０をプロジェクトＰＲに設定する。また、送信ステップでは、暗号化ステップにて暗号化された第１ユーザプログラム実行用ＩＤ１０をＰＬＣ１００に送信する。
【０１０４】
［ＰＬＣのソフトウェア構成］
ＰＬＣ１００におけるマイクロプロセッサ１１１は、第２設定手段Ｑｂ１、格納制御手段Ｑｂ２、照合手段Ｑｂ３及び実行禁止手段Ｑｂ４（図２参照）として機能する。すなわち、システムプログラムＳＰは、第２設定手段Ｑｂ１に対応する第２設定ステップと、格納制御手段Ｑｂ２に対応する格納制御ステップと、照合手段Ｑｂ３に対応する照合ステップと、実行禁止手段Ｑｂ４に対応する実行禁止ステップとをマイクロプロセッサ１１１に実行させる。なお、図２における解除手段Ｑｂ５については後ほど説明する。
【０１０５】
（第２設定ステップ）
第２設定ステップでは、ツール装置２００で実施された送信ステップにてＰＬＣ１００に送信されてきた第１ユーザプログラム実行用ＩＤ１０をＰＬＣ１００に備えられたＩＤ格納用メモリ１１３（図２参照）の記憶領域１１３ａに記憶させて設定する。
【０１０６】
また、第１ユーザプログラム実行用ＩＤ１０がツール装置２００で暗号化される場合には、第２設定ステップでは、ツール装置２００で実施された暗号化ステップにて暗号化されて送信ステップにてＰＬＣ１００に送信されてきた第１ユーザプログラム実行用ＩＤ１０をＩＤ格納用メモリ１１３の記憶領域１１３ａに記憶させて設定する。
【０１０７】
（第１ユーザプログラム実行用ＩＤの書き込みについて）
ここで、ＰＬＣ１００は、ＩＤ格納用メモリ１１３に対して第１ユーザプログラム実行用ＩＤ１０を書き換え可能かつ消去可能な構成とされている。
【０１０８】
すなわち、第２設定ステップでは、第１ユーザプログラム実行用ＩＤ１０がＩＤ格納用メモリ１１３の記憶領域１１３ａに設定（記憶）されているか否かに関わらず、第１ユーザプログラム実行用ＩＤ１０を変更も消去もできるようになっている。第１ユーザプログラム実行用ＩＤ１０の変更は、図５に示す第１ユーザプログラム実行用ＩＤ設定画面２３１ａによって行うことができる。
【０１０９】
（第１ユーザプログラム実行用ＩＤの消去について）
ＩＤ格納用メモリ１１３の記憶領域１１３ａに記憶されている第１ユーザプログラム実行用ＩＤ１０は、ＣＰＵユニット１１０に対してメモリオールクリアの機能を実行することによって消去することができる。すなわち、ＣＰＵユニット１１０に対するメモリオールクリアの機能を実行すると、ＩＤ格納用メモリ１１３の記憶領域１１３ａに第１ユーザプログラム実行用ＩＤ１０が設定されていない状態となり、ＩＤ格納用メモリ１１３が初期の非設定状態に戻る。
【０１１０】
（第１ユーザプログラム実行用ＩＤの表示について）
なお、ツール装置２００における制御部２５０は、ＩＤ格納用メモリ１１３の記憶領域１１３ａに設定された後のＩＤ格納用メモリ１１３に記憶されている第１ユーザプログラム実行用ＩＤ１０を表示させる機能を持たない（具体的には第１ユーザプログラム実行用ＩＤ１０を表示させることを禁止する）構成とされている。
【０１１１】
（格納制御ステップ）
格納制御ステップでは、ツール装置２００で実施された付加ステップにて第２ユーザプログラム実行用ＩＤ２０が付加されて送信ステップにてＰＬＣ１００に送信されてきたユーザプログラムＹＰをＰＬＣ１００におけるバックアップメモリ１１４（図２参照）に格納する。
【０１１２】
（照合ステップ）
照合ステップでは、第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とが一致しているか否かを照合する。具体的には、ＩＤ格納用メモリ１１３に記憶されている第１ユーザプログラム実行用ＩＤ１０と、プロジェクトＰＲから転送されてバックアップメモリ１１４に記憶されている第２ユーザプログラム実行用ＩＤ２０とを照合する。
【０１１３】
本実施の形態において、照合ステップでは、バックアップメモリ１１４に格納されているユーザプログラムＹＰをユーザメモリ１１６に格納するときに、第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とを照合する。具体的には、ＩＤ格納用メモリ１１３に記憶されている第１ユーザプログラム実行用ＩＤ１０を読み出し、バックアップメモリ１１４からユーザプログラムＹＰを読み出してユーザプログラムＹＰに付加された（組み込まれた）第２ユーザプログラム実行用ＩＤ２０をユーザプログラムＹＰから取り出し、ＩＤ格納用メモリ１１３から読み出した第１ユーザプログラム実行用ＩＤ１０と、ユーザプログラムＹＰから取り出した第２ユーザプログラム実行用ＩＤ２０とを照合する。
【０１１４】
ここでは、第１ユーザプログラム実行用ＩＤ１０及び第２ユーザプログラム実行用ＩＤ２０は、同じ暗号キーを使って同じ文字列を暗号化して生成された文字列が同じものとなる不可逆に暗号化されているので、照合ステップでは、不可逆に暗号化された第１ユーザプログラム実行用ＩＤ１０の文字列と、不可逆に暗号化された第２ユーザプログラム実行用ＩＤ２０の文字列とが一致しているか否かを照合する。
【０１１５】
本実施の形態では、第１ユーザプログラム実行用ＩＤ１０及び第２ユーザプログラム実行用ＩＤ２０の一致及び不一致は、図１１に示すような条件としている。図１１は、第１ユーザプログラム実行用ＩＤ１０及び第２ユーザプログラム実行用ＩＤ２０の一致及び不一致の条件の一例を示す表である。
【０１１６】
図１１に示すように、第１ユーザプログラム実行用ＩＤ１０がＩＤ格納用メモリ１１３に設定されていないときで、第２ユーザプログラム実行用ＩＤ２０がプロジェクトＰＲに設定されていないときには、一致と判断する。
【０１１７】
第１ユーザプログラム実行用ＩＤ１０がＩＤ格納用メモリ１１３に設定されているときで、第２ユーザプログラム実行用ＩＤ２０がプロジェクトＰＲに設定されているとき、かつ、双方のＩＤ１０，２０が等しいときには、一致と判断する。
【０１１８】
第１ユーザプログラム実行用ＩＤ１０がＩＤ格納用メモリ１１３に設定されているときで、第２ユーザプログラム実行用ＩＤ２０がプロジェクトＰＲに設定されていないときには、不一致と判断する。
【０１１９】
第１ユーザプログラム実行用ＩＤ１０がＩＤ格納用メモリ１１３に設定されていないときで、第２ユーザプログラム実行用ＩＤ２０がプロジェクトＰＲに設定されているときには、不一致と判断する。
【０１２０】
また、第１ユーザプログラム実行用ＩＤ１０がＩＤ格納用メモリ１１３に設定されているときで、第２ユーザプログラム実行用ＩＤ２０がプロジェクトＰＲに設定されているとき、かつ、双方のＩＤ１０，２０が等しくないときには、不一致と判断する。
【０１２１】
第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とを照合するタイミングは、本実施の形態では、ＰＬＣ１００の電源を投入してバックアップメモリ１１４からユーザメモリ１１６へユーザプログラムＹＰを格納した時（電源投入時）、或いは、ツール装置２００からＰＬＣ１００におけるバックアップメモリ１１４へユーザプログラムＹＰを格納してバックアップメモリ１１４からユーザメモリ１１６へユーザプログラムＹＰを格納した時（ダウンロード時）とされている。
【０１２２】
（実行禁止ステップ）
実行禁止ステップでは、照合ステップにて照合した照合結果に基づいて、第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とが不一致となった場合に、ユーザプログラムＹＰの実行を禁止する。
【０１２３】
本実施の形態では、マイクロプロセッサ１１１は、さらに、解除手段Ｑｂ５として機能する。すなわち、システムプログラムＳＰは、解除手段Ｑｂ５（図２参照）に対応する解除ステップをマイクロプロセッサ１１１に実行させる。
【０１２４】
（解除ステップ）
解除ステップでは、実行禁止ステップによるユーザプログラムＹＰの実行禁止状態をＣＰＵユニット１１０の再起動（具体的には、ＣＰＵユニット１１０の電源ＯＦＦ／ＯＮ又はツール装置２００のユーザプログラム開発支援用プログラムからのリセット）によって解除する。
【０１２５】
（ＩＤの照合処理例）
次に、第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とを照合する照合処理Ｓ４０の一例について図１２を参照しながら以下に説明する。図１２は、第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とを照合する照合処理Ｓ４０の一例を示すフローチャートである。なお、図１２に示すフローチャートは、図３に示すＩＤの照合処理Ｓ４０の詳細フローチャートである。
【０１２６】
図１２に示すＩＤの照合処理例のフローチャートでは、まず、電源投入時か、又は、ダウンロード時か否かを判断する（処理Ｓ４１）。電源投入時でない場合には（処理Ｓ４１：Ｎｏ）、図３に示すＰＬＣ１００全体の処理における初期化処理（処理Ｓ１）に戻り、ダウンロード時でない場合には（処理Ｓ４１：Ｎｏ）、図３に示すＰＬＣ１００全体の処理におけるモード読み込み処理（処理Ｓ３）に戻る。一方、電源投入時、又は、ダウンロード時である場合には（処理Ｓ４１：Ｙｅｓ）、処理Ｓ４２に移行する。
【０１２７】
次に、第１及び第２ユーザプログラム実行用ＩＤ１０，２０の何れか一方が未設定か否かを判断する（処理Ｓ４２）。第１及び第２ユーザプログラム実行用ＩＤ１０，２０の何れか一方が未設定である場合には（処理Ｓ４２：Ｙｅｓ）、処理Ｓ４６に移行する一方、第１及び第２ユーザプログラム実行用ＩＤ１０，２０の何れか一方が未設定でない場合には（処理Ｓ４２：Ｎｏ）、第１及び第２ユーザプログラム実行用ＩＤ１０，２０の双方が未設定か否かを判断する（処理Ｓ４３）。
【０１２８】
第１及び第２ユーザプログラム実行用ＩＤ１０，２０の双方が未設定である場合には（処理Ｓ４３：Ｙｅｓ）、処理Ｓ４５に移行する一方、第１及び第２ユーザプログラム実行用ＩＤ１０，２０の双方が未設定でない場合には（処理Ｓ４３：Ｎｏ）、第１及び第２ユーザプログラム実行用ＩＤ１０，２０が一致するか否かを判断する（処理Ｓ４４）。
【０１２９】
第１及び第２ユーザプログラム実行用ＩＤ１０，２０が一致した場合には（処理Ｓ４４：Ｙｅｓ）、処理Ｓ４５に移行する一方、第１及び第２ユーザプログラム実行用ＩＤ１０，２０が一致していない場合には（処理Ｓ４４：Ｎｏ）、処理Ｓ４６に移行する。
【０１３０】
処理Ｓ４５では、ユーザプログラムＹＰの実行を許可し、図３に示すＰＬＣ１００全体の処理に戻る。
【０１３１】
処理Ｓ４６では、ユーザプログラムＹＰの実行を禁止し、ＩＤが一致しない旨のメッセージ表示（処理Ｓ４７）を行った後、図３に示すＰＬＣ１００全体の処理に戻る。ここで、ＩＤが一致しない旨のメッセージ表示は、ＰＬＣ１００が備える表示機能（図１では省略）を使用して行う。表示機能の例としてＬＥＤランプ使用する場合は、所定のＬＥＤを点灯または点滅させる態様を例示できる。表示機能の例として液晶表示装置を使用する場合は、所定の文字列を表示させる態様を例示できる。
【０１３２】
（本実施の形態について）
以上説明したように、本実施の形態によると、第１ユーザプログラム実行用ＩＤ１０の入力情報を受け付け、第１ユーザプログラム実行用ＩＤ１０をＰＬＣ１００に送信し、ＰＬＣ１００に送信されてきた第１ユーザプログラム実行用ＩＤ１０をＰＬＣ１００に設定することに加えて、ユーザプログラムＹＰの実行のために照合される第２ユーザプログラム実行用ＩＤ２０の入力情報を受け付け、第２ユーザプログラム実行用ＩＤ２０をツール装置２００に設けられたプロジェクトＰＲに設定するので、ユーザがＩＤの照合を行うためにユーザプログラムＹＰを作成しなくても、ＩＤを入力するといった簡単な操作によってＰＬＣ１００上で実行させるユーザプログラムＹＰの無断利用を防止することができ、これにより、ＰＬＣ１００上で実行させるユーザプログラムＹＰの無断利用を防止するための利便性を向上させることが可能となる。
【０１３３】
そして、ツール装置２００において、ツール装置２００に設けられたプロジェクトＰＲに対して第２ユーザプログラム実行用ＩＤ２０が一度設定されて以降は第２ユーザプログラム実行用ＩＤ２０を設定変更不能かつ消去不能な構成とされているので、一度設定した第２ユーザプログラム実行用ＩＤ２０を、第２ユーザプログラム実行用ＩＤ２０を設定した本来のユーザ（該ユーザから知得したユーザを含むユーザ）以外の他人が書き換えたり、或いは、盗み見たりすることが非常に困難となる。また、ＰＬＣ１００におけるＩＤ格納用メモリ１１３に対して第１ユーザプログラム実行用ＩＤ１０を書き換え可能かつ消去可能な構成とされているので、本来のユーザが第２ユーザプログラム実行用ＩＤ２０と一致する第１ユーザプログラム実行用ＩＤ１０を設定することができ、これにより、ＰＬＣ１００において、照合した照合結果に基づいて第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とが一致することで、ＰＬＣ１００において、ユーザプログラムＹＰを実行させることができる。その一方で、本来のユーザ以外の他人が第２ユーザプログラム実行用ＩＤ２０とは異なる第１ユーザプログラム実行用ＩＤ１０を設定すると、ＰＬＣ１００において、照合した照合結果に基づいて第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とが不一致となることで、ユーザプログラムＹＰの実行を禁止するので、ユーザプログラムＹＰを実行させることができない。しかも、ツール装置２００は、ＰＬＣ１００のＩＤ格納用メモリ１１３における第１ユーザプログラム実行用ＩＤ１０を表示させる機能、及び、プロジェクトＰＲにおける第２ユーザプログラム実行用ＩＤ２０を表示させる機能を何れも持たない構成とされているので、本来のユーザや本来のユーザ以外の他人に関わらず、第１ユーザプログラム実行用ＩＤ１０及び第２ユーザプログラム実行用ＩＤ２０をツール装置２００から知られることが非常に困難となる。なお、本実施の形態では、ＩＤ格納用メモリ１１３が制御基板に着脱不能に搭載（直付け）されているので、ＩＤ格納用メモリ１１３を別のＰＬＣに取り替えることも非常に困難である。
【０１３４】
また、本実施の形態では、ユーザプログラムＹＰがプロジェクトＰＲとして管理され、第２ユーザプログラム実行用ＩＤ２０をプロジェクトＰＲに設定するので、第２ユーザプログラム実行用ＩＤ２０とユーザプログラムＹＰとの関連付けを容易に行うことができる。
【０１３５】
また、本実施の形態では、第１受け付け手段Ｑａ１にて受け付けた第１ユーザプログラム実行用ＩＤ１０、及び、第２受け付け手段Ｑａ３にて受け付けた第２ユーザプログラム実行用ＩＤ２０を暗号化するので、万一、第１ユーザプログラム実行用ＩＤ１０及び／又は第２ユーザプログラム実行用ＩＤ２０が不正に読み出されて盗まれたとしても第１ユーザプログラム実行用ＩＤ１０及び第２ユーザプログラム実行用ＩＤ２０が暗号化されたものであるため、第１ユーザプログラム実行用ＩＤ１０及び／又は第２ユーザプログラム実行用ＩＤ２０を本来のユーザ以外の他人に知られることが困難となる。これにより、第１ユーザプログラム実行用ＩＤ１０及び／又は第２ユーザプログラム実行用ＩＤ２０の外部への漏洩に対するセキュリティを向上させることが可能となる。しかも、暗号化処理は、不可逆の暗号化処理であり、元のＩＤコードに戻すことができないので、元のＩＤコードの情報が知られることはない。
【０１３６】
また、本実施の形態では、ツール装置２００に設けられたプロジェクトＰＲにおける第２ユーザプログラム実行用ＩＤ２０を、ＰＬＣ１００におけるバックアップメモリ１１４に格納するので、照合毎にツール装置２００から第２ユーザプログラム実行用ＩＤ２０を取得しなくても、第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とを容易に照合することが可能となる。
【０１３７】
また、本実施の形態では、第２ユーザプログラム実行用ＩＤ２０をユーザプログラムＹＰに付加し、第２ユーザプログラム実行用ＩＤ２０を付加したユーザプログラムＹＰをＰＬＣ１００に送信してＰＬＣ１０におけるバックアップメモリ１１４に格納するので、ＰＬＣ１００において第２ユーザプログラム実行用ＩＤ２０の存在を分かり難くすることが可能となる。
【０１３８】
また、本実施の形態では、バックアップメモリ１１４に格納されているユーザプログラムＹＰをユーザメモリ１１６に格納するときに、第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とを照合するので、第１ユーザプログラム実行用ＩＤ１０と第２ユーザプログラム実行用ＩＤ２０とを、ユーザプログラムＹＰの実行に先だって確実に照合することが可能となる。
【０１３９】
また、本実施の形態では、ユーザプログラムＹＰが実行禁止状態となったときには、ユーザプログラムＹＰの実行禁止状態をＣＰＵユニット１１０の再起動によって解除するので、本来のユーザ以外の他人によるＩＤ格納用メモリ１１３への第１ユーザプログラム実行用ＩＤ１０の不正書き込み労力を増やすことができ、ひいては他人による不正行為を抑止することが可能となる。
【０１４０】
また、本実施の形態では、ＩＤ格納用メモリ１１３への第１ユーザプログラム実行用ＩＤ１０の内容は任意に書き換え可能であるから、故障等の原因でＰＬＣ１００が別のＰＬＣ１００に交換されたときには、交換後のＰＬＣ１００のＩＤ格納用メモリ１１３における第１ユーザプログラム実行用ＩＤ１０の内容を交換前のＰＬＣ１００の第１ユーザプログラム実行用ＩＤ１０と同じ内容に書き換えることにより、ユーザプログラムＹＰを交換後のＰＬＣ１００上においても動作させることができる。
【０１４１】
なお、プログラマブルコントローラシステム３００において、複数のＰＬＣ１００を設ける場合には、ツール装置２００側で設定した第２ユーザプログラム実行用ＩＤ２０と同じＩＤを複数のＰＬＣ１００側の第１ユーザプログラム実行用ＩＤ１０としてＩＤ格納用メモリ１１３に設定することで、複数のＰＬＣ１００を設ける場合でも、前述と同様に、ユーザプログラムＹＰの無断利用を防止することが可能となる。
【符号の説明】
【０１４２】
１０      第１ユーザプログラム実行用ＩＤ
２０      第２ユーザプログラム実行用ＩＤ
１００    プログラマブルコントローラ
１１３    ＩＤ格納用メモリ
１１４    バックアップメモリ（不揮発性メモリの一例）
１１６    ユーザメモリ（揮発性メモリの一例）
２００    ツール装置
２２４    ハードディスク装置
３００    プログラマブルコントローラシステム
Ｍ        記録媒体
ＰＲ      プロジェクト
Ｑａ１    第１受け付け手段
Ｑａ２    送信手段
Ｑａ３    第２受け付け手段
Ｑａ４    第１設定手段
Ｑａ５    付加手段
Ｑａ６    暗号化手段
Ｑｂ１    第２設定手段
Ｑｂ２    格納制御手段
Ｑｂ３    照合手段
Ｑｂ４    実行禁止手段
Ｑｂ５    解除手段
ＹＰ      ユーザプログラム
【図１】
0005786386.tif 000002
【図２】
0005786386.tif 000003
【図３】
0005786386.tif 000004
【図４】
0005786386.tif 000005
【図５】
0005786386.tif 000006
【図６】
0005786386.tif 000007
【図７】
0005786386.tif 000008
【図８】
0005786386.tif 000009
【図９】
0005786386.tif 000010
【図１０】
0005786386.tif 000011
【図１１】
0005786386.tif 000012
【図１２】
0005786386.tif 000013