"プログラマブルコントローラと、前記プログラマブルコントローラと通信し、前記プログラマブルコントローラ上でユーザプログラムを実行させるためのツール装置とを備えたプログラマブルコントローラシステムであって、前記ツール装置は、前記ユーザプログラムの実行のために照合される第1ユーザプログラム実行用IDの入力情報を受け付ける第1受け付け手段と、前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信する送信手段と、前記ユーザプログラムの実行のために照合される第2ユーザプログラム実行用IDの入力情報を受け付ける第2受け付け手段と、前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定する第1設定手段とを備え、前記第2ユーザプログラム実行用IDが一旦設定されて以降は前記第2ユーザプログラム実行用IDを設定不能かつ消去不能な構成とされており、前記第1ユーザプログラム実行用IDを表示させる機能、及び、前記第2ユーザプログラム実行用IDを表示させる機能を何れも持たない構成とされており、前記プログラマブルコントローラは、前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する第2設定手段と、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが一致しているか否かを照合する照合手段と、前記照合手段にて照合した照合結果に基づいて、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段とを備え、前記第1ユーザプログラム実行用IDを設定可能かつ消去可能な構成とされていることを特徴とするプログラマブルコントローラシステム。請求項1に記載のプログラマブルコントローラシステムであって、前記ツール装置は、複数の前記ユーザプログラムの情報を1つのプロジェクトとして管理する構成とされており、前記第1設定手段は、前記プロジェクトに対して前記第2ユーザプログラム実行用IDを設定することを特徴とするプログラマブルコントローラシステム。請求項1又は請求項2に記載のプログラマブルコントローラシステムであって、前記ツール装置は、前記第1受け付け手段にて受け付けた前記第1ユーザプログラム実行用ID、及び、前記第2受け付け手段にて受け付けた前記第2ユーザプログラム実行用IDを暗号化する暗号化手段を備え、前記送信手段は、前記暗号化手段にて暗号化された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、前記第1設定手段は、前記暗号化手段にて暗号化された前記第2ユーザプログラム実行用IDを前記ツール装置に設定し、前記第2設定手段は、前記暗号化手段にて暗号化されて前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定することを特徴とするプログラマブルコントローラシステム。請求項1から請求項3までの何れか一つに記載のプログラマブルコントローラシステムであって、前記送信手段は、前記第2ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、前記プログラマブルコントローラは、前記送信手段にて前記プログラマブルコントローラに送信された前記第2ユーザプログラム実行用IDを該プログラマブルコントローラに格納する格納制御手段を備えることを特徴とするプログラマブルコントローラシステム。請求項4に記載のプログラマブルコントローラシステムであって、前記ツール装置は、前記第2ユーザプログラム実行用IDを前記ユーザプログラムに付加する付加手段を備え、前記送信手段は、前記付加手段にて前記第2ユーザプログラム実行用IDを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信し、前記格納制御手段は、前記付加手段にて前記第2ユーザプログラム実行用IDが付加されて前記送信手段にて前記プログラマブルコントローラに送信された前記ユーザプログラムを前記プログラマブルコントローラに格納することを特徴とするプログラマブルコントローラシステム。請求項4又は請求項5に記載のプログラマブルコントローラシステムであって、前記プログラマブルコントローラは、前記ユーザプログラムを該プログラマブルコントローラに備えられた不揮発性メモリに格納する構成とされており、前記照合手段は、前記不揮発性メモリに格納されている前記ユーザプログラムを、前記プログラマブルコントローラに備えられて前記ユーザプログラムを記憶する揮発性メモリに格納するときに、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを照合することを特徴とするプログラマブルコントローラシステム。請求項1から請求項6までの何れか一つに記載のプログラマブルコントローラシステムであって、前記プログラマブルコントローラは、前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除する解除手段を備えることを特徴とするプログラマブルコントローラシステム。請求項1に記載のプログラマブルコントローラシステムに備えられるツール装置であって、前記ユーザプログラムの実行のために照合される第1ユーザプログラム実行用IDの入力情報を受け付ける第1受け付け手段と、前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信する送信手段と、前記ユーザプログラムの実行のために照合される第2ユーザプログラム実行用IDの入力情報を受け付ける第2受け付け手段と、前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定する第1設定手段とを備え、前記第2ユーザプログラム実行用IDが一旦設定されて以降は前記第2ユーザプログラム実行用IDを設定不能かつ消去不能な構成とされており、前記第1ユーザプログラム実行用IDを表示させる機能、及び、前記第2ユーザプログラム実行用IDを表示させる機能を何れも持たない構成とされていることを特徴とするツール装置。請求項8に記載のツール装置における制御部を、前記第1受け付け手段と、前記送信手段と、前記第2受け付け手段と、前記第1設定手段とを含む手段として機能させるためのツール用プログラム。請求項9に記載のツール用プログラムを記録したコンピュータ読み取り可能な記録媒体。請求項1に記載のプログラマブルコントローラシステムに備えられるプログラマブルコントローラであって、前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する第2設定手段と、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが一致しているか否かを照合する照合手段と、前記照合手段にて照合した照合結果に基づいて、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段とを備え、前記第1ユーザプログラム実行用IDを設定可能かつ消去可能な構成とされていることを特徴とするプログラマブルコントローラ。しかしながら、特許文献1に記載のPLCにおけるプログラミング方法では、ユーザがハードウェアIDの照合を行うためにユーザプログラムを作成しなければならず、プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止するための利便性が良くない。そこで、本発明は、プログラマブルコントローラ上で実行させるユーザプログラムの無断利用を防止するための利便性を向上させることができるプログラマブルコントローラシステム、ツール装置、ツール用プログラム及び記録媒体並びにプログラマブルコントローラを提供することを目的とする。本発明は、前記課題を解決するために、次のプログラマブルコントローラシステム、ツール装置、ツール用プログラム及び記録媒体並びにプログラマブルコントローラを提供する。1プログラマブルコントローラシステムプログラマブルコントローラと、前記プログラマブルコントローラと通信し、前記プログラマブルコントローラ上でユーザプログラムを実行させるためのツール装置とを備えたプログラマブルコントローラシステムであって、前記ツール装置は、前記ユーザプログラムの実行のために照合される第1ユーザプログラム実行用IDの入力情報を受け付ける第1受け付け手段と、前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信する送信手段と、前記ユーザプログラムの実行のために照合される第2ユーザプログラム実行用IDの入力情報を受け付ける第2受け付け手段と、前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定する第1設定手段とを備え、前記第2ユーザプログラム実行用IDが一旦設定されて以降は前記第2ユーザプログラム実行用IDを設定不能かつ消去不能な構成とされており、前記第1ユーザプログラム実行用IDを表示させる機能、及び、前記第2ユーザプログラム実行用IDを表示させる機能を何れも持たない構成とされており、前記プログラマブルコントローラは、前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する第2設定手段と、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが一致しているか否かを照合する照合手段と、前記照合手段にて照合した照合結果に基づいて、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段とを備え、前記第1ユーザプログラム実行用IDを設定可能かつ消去可能な構成とされていることを特徴とするプログラマブルコントローラシステム。2ツール装置前記本発明に係るプログラマブルコントローラシステムに備えられるツール装置であって、前記ユーザプログラムの実行のために照合される第1ユーザプログラム実行用IDの入力情報を受け付ける第1受け付け手段と、前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信する送信手段と、前記ユーザプログラムの実行のために照合される第2ユーザプログラム実行用IDの入力情報を受け付ける第2受け付け手段と、前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定する第1設定手段とを備え、前記第2ユーザプログラム実行用IDが一旦設定されて以降は前記第2ユーザプログラム実行用IDを設定不能かつ消去不能な構成とされており、前記第1ユーザプログラム実行用IDを表示させる機能、及び、前記第2ユーザプログラム実行用IDを表示させる機能を何れも持たない構成とされていることを特徴とするツール装置。3ツール用プログラム前記本発明に係るツール装置におけるにおける制御部を、前記第1受け付け手段と、前記送信手段と、前記第2受け付け手段と、前記第1設定手段とを含む手段として機能させるためのツール用プログラム。4記録媒体前記本発明に係るツール用プログラムを記録したコンピュータ読み取り可能な記録媒体。5プログラマブルコントローラ前記本発明に係るプログラマブルコントローラシステムに備えられるプログラマブルコントローラであって、前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する第2設定手段と、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが一致しているか否かを照合する照合手段と、前記照合手段にて照合した照合結果に基づいて、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとが不一致となった場合に、前記ユーザプログラムの実行を禁止する実行禁止手段とを備え、前記第1ユーザプログラム実行用IDを設定可能かつ消去可能な構成とされていることを特徴とするプログラマブルコントローラ。なお、言うまでもないが、本発明にいう前記IDはidentificationの略であり、識別コードを意味する。本発明によれば、前記第1受け付け手段によって前記第1ユーザプログラム実行用IDの入力情報を受け付け、前記送信手段によって前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、前記第2設定手段によって前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定することに加えて、前記第2受け付け手段によって前記ユーザプログラムの実行のために照合される前記第2ユーザプログラム実行用IDの入力情報を受け付け、前記第1設定手段によって前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定するので、ユーザがIDの照合を行うためにユーザプログラムを作成しなくても、IDを入力するといった簡単な操作によって前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止することができ、これにより、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止するための利便性を向上させることが可能となる。本発明において、前記ツール装置は、複数の前記ユーザプログラムの情報を1つのプロジェクトとして管理する構成とされており、前記第1設定手段は、前記プロジェクトに対して前記第2ユーザプログラム実行用IDを設定する態様を例示できる。この特定事項では、前記ユーザプログラムが前記プロジェクトとして管理され、前記第1設定手段によって前記第2ユーザプログラム実行用IDを前記プロジェクトに設定するので、前記第2ユーザプログラム実行用IDと前記ユーザプログラムとの関連付けを容易に行うことができる。本発明において、前記ツール装置は、前記第1受け付け手段にて受け付けた前記第1ユーザプログラム実行用ID、及び、前記第2受け付け手段にて受け付けた前記第2ユーザプログラム実行用IDを暗号化する暗号化手段を備え、前記送信手段は、前記暗号化手段にて暗号化された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、前記第1設定手段は、前記暗号化手段にて暗号化された前記第2ユーザプログラム実行用IDを前記ツール装置に設定し、前記第2設定手段は、前記暗号化手段にて暗号化されて前記送信手段にて前記プログラマブルコントローラに送信された前記第1ユーザプログラム実行用IDを前記プログラマブルコントローラに設定する態様を例示できる。この特定事項では、前記暗号化手段によって前記第1受け付け手段にて受け付けた前記第1ユーザプログラム実行用ID、及び、前記第2受け付け手段にて受け付けた前記第2ユーザプログラム実行用IDを暗号化するので、万一、前記第1ユーザプログラム実行用ID及び/又は前記第2ユーザプログラム実行用IDの情報が読み出されて盗まれたとしても前記第1ユーザプログラム実行用ID及び前記第2ユーザプログラム実行用IDが暗号化されたものであるため、前記第1ユーザプログラム実行用ID及び/又は前記第2ユーザプログラム実行用IDを本来のユーザ以外の他人に知られることが困難となる。これにより、前記第1ユーザプログラム実行用ID及び/又は前記第2ユーザプログラム実行用IDの外部への漏洩に対するセキュリティを向上させることが可能となる。本発明において、前記送信手段は、前記第2ユーザプログラム実行用IDを前記プログラマブルコントローラに送信し、前記プログラマブルコントローラは、前記送信手段にて前記プログラマブルコントローラに送信された前記第2ユーザプログラム実行用IDを該プログラマブルコントローラに格納する格納制御手段を備える態様を例示できる。この特定事項では、前記格納制御手段によって前記第2ユーザプログラム実行用IDを、前記プログラマブルコントローラに格納するので、前記照合手段による照合毎に前記ツール装置から前記第2ユーザプログラム実行用IDを取得しなくても、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを容易に照合することが可能となる。本発明において、前記ツール装置は、前記第2ユーザプログラム実行用IDを前記ユーザプログラムに付加する付加手段を備え、前記送信手段は、前記付加手段にて前記第2ユーザプログラム実行用IDを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信し、前記格納制御手段は、前記付加手段にて前記第2ユーザプログラム実行用IDが付加されて前記送信手段にて前記プログラマブルコントローラに送信された前記ユーザプログラムを前記プログラマブルコントローラに格納する態様を例示できる。この特定事項では、前記付加手段によって前記第2ユーザプログラム実行用IDを前記ユーザプログラムに付加し、前記格納制御手段によって前記付加手段にて前記第2ユーザプログラム実行用IDを付加した前記ユーザプログラムを前記プログラマブルコントローラに送信して前記プログラマブルコントローラに格納するので、前記プログラマブルコントローラにおいて前記第2ユーザプログラム実行用IDの存在を分かり難くすることが可能となる。本発明において、前記プログラマブルコントローラは、前記ユーザプログラムを該プログラマブルコントローラに備えられた不揮発性メモリに格納する構成とされており、前記照合手段は、前記不揮発性メモリに格納されている前記ユーザプログラムを、前記プログラマブルコントローラに備えられて前記ユーザプログラムを記憶する揮発性メモリに格納するときに、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを照合する態様を例示できる。この特定事項では、前記照合手段によって前記不揮発性メモリに格納されている前記ユーザプログラムを前記揮発性メモリに格納するときに、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを照合するので、前記第1ユーザプログラム実行用IDと前記第2ユーザプログラム実行用IDとを、前記ユーザプログラムの実行に先だって確実に照合することが可能となる。本発明において、前記プログラマブルコントローラは、前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除する解除手段を備える態様を例示できる。この特定事項では、前記実行禁止手段によって前記ユーザプログラムが実行禁止状態となったときには、前記解除手段によって前記実行禁止手段による前記ユーザプログラムの実行禁止状態を前記プログラマブルコントローラの再起動によって解除することができる。これにより、本来のユーザ以外の他人による前記プログラマブルコントローラへの前記第1ユーザプログラム実行用IDの不正設定労力を増やすことができ、ひいては他人による不正行為を抑止することが可能となる。以上説明したように、本発明によると、前記ツール装置において、前記第2受け付け手段によって前記ユーザプログラムの実行のために照合される前記第2ユーザプログラム実行用IDの入力情報を受け付け、前記第1設定手段によって前記第2ユーザプログラム実行用IDを前記ユーザプログラムと関連付けて自装置に設定するので、ユーザがIDの照合を行うためにユーザプログラムを作成しなくても、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止することができ、これにより、前記プログラマブルコントローラ上で実行させる前記ユーザプログラムの無断利用を防止するための利便性を向上させることができる。以下、本発明の実施の形態について添付図面を参照しつつ説明する。なお、以下の実施の形態は、本発明を具体化した例であって、本発明の技術的範囲を限定する性格のものではない。[プログラマブルコントローラシステムの全体構成]図1は、プログラマブルコントローラシステム300におけるツール装置200及びそれと通信するプログラマブルコントローラ100を概念的に示す概略構成図である。図1に示すように、プログラマブルコントローラシステム300は、プログラマブルコントローラ以下、PLCという100とツール装置200ここではコンピュータとを備えている。プログラマブルコントローラシステム300において、PLC100は、入出力ユニット130で入力した信号をCPUユニット110の入出力メモリ117後述する図2参照に取り込みINリフレッシュ、予め登録されたラダー言語等のPLC制御用のプログラム記述言語で作成されたユーザプログラムYP図2参照に基づき論理演算を行い演算実行、その演算実行結果を入出力メモリ117に書き込んで入出力ユニット130に送り出しOUTリフレッシュ、その後、いわゆる周辺サービス処理を行うことをサイクリックに繰り返し処理する。ツール装置200は、本実施の形態では、ユーザプログラム開発支援装置例えば、CX-Progammer:出願人の製品とされており、PLC100に通信ケーブルCBを介して接続され、ユーザプログラムYPをダウンロードし、PLC100におけるCPUユニット110のバックアップメモリ114図2参照やユーザメモリ116図2参照に格納させる。また、ツール装置200は、PLC100に格納されているユーザプログラムYPを修正等する場合には、PLC100に格納されているユーザプログラムYPをアップロードし、必要な修正をした後、修正後のユーザプログラムYPをPLC100に再度ダウンロードする。なお、図1において、符号210,211,212,230,231は、それぞれ、操作入力部、キーボード、ポインティングデバイス、表示出力部及び表示装置を示している。[PLCのハードウェア構成]PLC100は、CPUCentralProcessingUnit部分入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを司る部分、入出力回路部分、通信回路部分、各種高機能回路部分等々を単一のハウジングに収容してなるオールインワンタイプのものと、それらの部分をそれぞれ専用のユニットハウジングに収容してなるビルディングブロックタイプのものとが知られている。本発明はいずれのタイプのPLCにも適用できるが、本実施の形態では、ビルディングブロックタイプのものを例にとって以下に説明する。また、本発明は、同時に一つのタスクしか実行できないシングルタスクによる処理の他、複数のタスクを並行して実行するマルチタスクによる処理にも適用することができる。本実施の形態では、PLC100は、CPUユニット110、通信ユニット120、複数の入出力ユニット130及び電源ユニット140を含んで構成されている。CPUユニット110は、PLC100の全体を統括制御するものであり、後ほど図3に示すフローチャートを参照して説明するように、入出力更新処理、ユーザプログラム実行処理、周辺サービス処理などを実行するように構成される。通信ユニット120は、LANLocalAreaNetwork等のネットワークを介してツール装置200との間における通信を制御する他、図示していないが、PLC100に対して他のPLC又はリモートIOターミナル等が接続されている場合には、それらとの間における通信制御にも供される。入出力ユニットI/Oユニット130は、外部入出力回路及び図示しない端子台を備えており、この端子台には図示しない光電スイッチ、リミットスイッチ、マイクロスイッチ等々のような各種の外部入力機器とリレー、ランプ、ソレノイド等の各種外部出力機器が配線される。図2は、PLC100におけるCPUユニット110のハードウェア構成を示すブロック図である。図2に示すように、CPUユニット110は、マイクロプロセッサMPU111、システムメモリSROM112、ID格納用メモリIDROM113、バックアップメモリBROM114、ワークメモリWRAM115、ユーザメモリURAM116及び入出力メモリIORAM117を備えている。マイクロプロセッサ111は、CPUユニット110の全体を統括制御するものであり、システムメモリ112に格納されたシステムプログラムSPを実行することによって、CPUユニット110に必要な各種の機能を実現するように構成されている。システムメモリ112は、この例ではフラッシュメモリなどの不揮発性メモリで構成されており、先に述べたように、マイクロプロセッサ111で実行される各種のシステムプログラムSPが格納されている。ID格納用メモリ113は、この例では電気的に書き換え可能なEPROMElectricallyErasableProgrammableReadOnlyMemoryなどの書き換え可能な不揮発性メモリで構成されている。ID格納用メモリ113は、図示しない制御基板に着脱不能に搭載直付けされており、後述する第1ユーザプログラム実行用ID10が書き込まれる。第1ユーザプログラム実行用ID10は、後述するように、図1に示すツール装置200からの入力操作によって、ID格納用メモリ113に対して書き換え可能かつ消去可能に設定される。バックアップメモリ114は、フラッシュメモリなどの不揮発性メモリで構成され、電源オフ時にはバッテリが存在しない状態でも内容を保持するように構成されている。バックアップメモリ114には、PLC100の制御仕様に対応したユーザプログラムYPが、所定のプログラム言語例えば、ラダー言語などにて作成され、マイクロプロセッサ111で実行可能なオブジェクトコードに変換されて格納される。ワークメモリ115は、マイクロプロセッサ111がシステムメモリ112から読み出されたシステムプログラムSPを実行する際のワークエリアとして機能するものであり、書き換え可能なRAMで構成されている。ユーザメモリ116は、ユーザプログラムYPの実行用メモリとされている。ユーザメモリ116は、揮発性メモリとして作用するスタティックRAMStaticRandomAccessMemoryで構成されており、電源オフ時には内容を保持することができない。ユーザメモリ116には、電源が投入されたときに、バックアップメモリ114から転送されたユーザプログラムYPが格納される。入出力メモリ117は、マイクロプロセッサ111がユーザメモリ116から読み出されたユーザプログラムYPを実行する際に参照するものであり、その内部には、IOバス118を介して接続された入出力ユニット130図1参照の入出力端子のデータと対応する入出力データエリア、内部演算のみに使用される補助リレーエリア、演算途中で使用される各種の設定データ、カウントデータ等を格納するデータエリアの他に、特殊補助リレーエリアが設けられている。なお、図2において、符号113aは記憶領域を示している。また、図2における第2設定手段Qb1、格納制御手段Qb2、照合手段Qb3、実行禁止手段Qb4及び解除手段Qb5については後ほど説明する。[PLC全体の処理例]次に、マイクロプロセッサ111により実行されるPLC100全体の処理について図3を参照しながら以下に説明する。図3は、マイクロプロセッサ111により実行されるPLC100全体の処理例を示すフローチャートである。図3に示すように、マイクロプロセッサ111は、電源投入PowerOnにより処理が開始されると、まず、後述するIDの照合処理処理S40を実行した後、各種のフラグやレジスタ類の初期設定を行うために初期化処理処理S1を実行する。IDの照合処理S40の詳細は、後ほど図12を参照しながら説明する。続いて、マイクロプロセッサ111は、それ以降の各種動作モードに共通な処理として共通処理処理S2を実行する。共通処理処理S2においては、IOバス118の導通チェック、各ユニットの接続チェック等々の各種の故障診断処理などを実行する。続いて、マイクロプロセッサ111は、外部のモード設定スイッチや入出力メモリ117の所定フラグなどを参照することによって、その時点の動作モード設定の読み込みを行う処理S3。続いて、マイクロプロセッサ111は、読み込んだモード設定データと各モードに対応するデータとを照合することによって、動作モードの判定を行う処理S4。ここで、動作モードが運転モードであると判定すると処理S4:Yes、入出力更新処理処理S5を実行する。マイクロプロセッサ111は、入出力更新処理処理S5において、先に説明した入出力メモリ117の入力データを入出力ユニット130の入力端子の実データで更新する入力更新処理と、入出力メモリ117の出力データによって、入出力ユニット130の出力端子のデータを更新する出力更新処理とを実行する。続いて、マイクロプロセッサ111は、ユーザプログラム実行処理処理S6を実行する。ユーザプログラム実行処理処理S6においては、ユーザメモリ116からユーザプログラムYPを構成する各命令を順次に読み出し、読み出した命令を、入出力メモリ117の入出力データを参照して実行し、その実行結果に基づいて入出力データの書き換えを行う各命令対応処理を実行する。続いて、マイクロプロセッサ111は、周辺サービス処理処理S7を実行する。周辺サービス処理処理S7においては、ツール装置200と適宜やり取りを行うことによって、ツール装置200から到来するリクエストに対応した様々な処理を実行する。すなわち、ツール装置200がプログラムアップロードを要求するのであれば、指定された範囲のユーザプログラムYPを読み出して、これをツール装置200に対して送信する。また、ツール装置200からの要求が、プログラムダウンロードを要求するものであれば、ツール装置200から送られてくるユーザプログラムYPを受信して、これをバックアップメモリ114やユーザメモリ116へと書き込む。その他、周辺サービス処理処理S7においては、PLC100に対して1若しくは2以上のリモートIOターミナルが接続されていたり、或いは、PLC100が他の1又は2以上のPLCと接続されていたりするような場合には、それらのリモート機器との間におけるデータのやり取りを行う。周辺サービス処理処理S7の後、共通処理処理S2に進む。マイクロプロセッサ111は、動作モードがプログラムモードであると判定すると処理S4:No、処理S8へと進んで、プログラムモードに対応したPLC100のシステム設定などを転送したり、ユーザプログラムYPのPLC100へのダウンロードやPLC100からのアップロードを行ったり、入出力テーブルを作成したりする処理を実行した後、ユーザプログラムYPの転送があるか否かを判断する処理S9。処理S9でユーザプログラムYPの転送がないと判断した場合には処理S9:No、処理S3に移行する一方、処理S9でユーザプログラムYPの転送があると判断した場合には処理S9:Yes、IDの照合処理処理S40を実行する図12参照。以後、以上説明した一連の処理処理S3~S9,S40を繰り返し実行することによって、PLC100としての各種の機能を実現する。[ツール装置のハードウェア構成]ツール装置200は、既述したように、本実施の形態では、ユーザプログラムYPの作成、編集、PLC100へのダウンロード、PLC100からのアップロード、その他各種のパラメータ設定又は変更などに供されるユーザプログラム開発支援装置とされている。ツール装置200を用いてユーザプログラムYPを作成する場合、複数のユーザプログラムYPからなるユーザプログラム全体の情報を1つのプロジェクトPR後述する図4及び図8参照として管理する構成とされている。一般に、この種のツール装置200は、パーソナルコンピュータ等の通信機能を備えたコンピュータに所定のプログラムを格納インストールすることにより構成される。ツール装置200は、PLC100と通信し、PLC100上で実行させるユーザプログラムYPの無断利用を防止する機能を有している。図4は、PLC100と通信するツール装置200の概略構成を示すシステムブロック図である。図4に示すように、ツール装置200は、操作入力部210図1も参照と、記憶部220と、表示出力部230図1も参照と、通信部240と、制御部250と、読み取り部260とを備えている。操作入力部210は、キーボード211やポインティングデバイス212等の入力装置を備えており、制御部250の入力系に接続されている。操作入力部210は、ユーザによる入力操作を受け付けて入力された操作情報を制御部250に送信する構成とされている。記憶部220は、ROM221、RAM222、フラッシュメモリ等のデータ書き換え可能な不揮発性メモリ223等の記憶装置及びこれも不揮発性メモリとして作用するハードディスク装置224等の大容量記憶装置を備えている。なお、ハードディスク装置224には、後述するツール用プログラムP無断利用防止用プログラムを含むプログラムが記録されたCDCompactDisc-ROM等の記録媒体Mを読み出す読み取り部260によって読み出されたツール用プログラムPを含むソフトウェアが予め格納インストールされている。また、記録媒体Mは、USBUniversalSerialBusメモリやSDSecureDigitalメモリカードであってもよい。表示出力部230は、液晶表示パネルやELElectroLuminescence表示パネル等の表示装置231を備えており、制御部250の出力系に接続されている。表示装置231は、制御部250からの出力表示情報を表示画面に表示する構成とされている。なお、表示装置231における表示画面には、タッチパネル等のタッチ入力操作装置が設けられていてもよい。タッチ入力操作装置は、表示画面に表示される画面の表示状態に応じた入力操作を行うことができ、操作入力部として作用する構成とされる。通信部240は、インターフェイス部241具体的にはLANポートを有しており、通信ケーブルCB具体的にはLANケーブルを介して制御部250とPLC100における通信ユニット120図1参照との間でデータの通信ができるようになっている。なお、PLC100及びツール装置200は、例えば、USBポートやRS232Cなどのシリアルインターフェイスを介して相互に接続されるようになっていてもよい。制御部250は、CPU等の演算処理装置で構成されており、記憶部220のハードディスク装置224に予め格納されたツール用プログラムP等のソフトウェアプログラムを記憶部220のRAM222上にロードして実行することにより、各種の処理を行うようになっている。記憶部220のRAM222は、制御部250に対して作業用のワークエリアを提供する。なお、図4において、符号20,224aは、それぞれ、第2ユーザプログラム実行用ID及び記憶領域を示している。[ツール装置のソフトウェア構成]そして、ツール装置200における制御部250は、第1受け付け手段Qa1、送信手段Qa2、第2受け付け手段Qa3及び第1設定手段Qa4として機能する。すなわち、ツール用プログラムPは、ユーザプログラム開発支援用プログラムに組み込まれており、第1受け付け手段Qa1に対応する第1受け付けステップと、送信手段Qa2に対応する送信ステップと、第2受け付け手段Qa3に対応する第2受け付けステップと、第1設定手段Qa4に対応する第1設定ステップとを制御部250に実行させる。なお、図4における付加手段Qa5及び暗号化手段Qa6については後ほど説明する。第1受け付けステップ第1受け付けステップでは、ユーザプログラムYPの実行のために照合される第1ユーザプログラム実行用ID10の入力情報を受け付ける。なお、本実施の形態において、第1受け付けステップでは、ユーザ通常はベンダーのセキュリティレベルユーザ認証されたセキュリティレベルに応じて入力操作を制限するようになっている。図5は、図1に示すツール装置200における表示装置231に表示された第1ユーザプログラム実行用ID設定画面231aを示す平面図である。図5に示すように、表示装置231における第1ユーザプログラム実行用ID設定画面231aには、操作権限を持ったユーザによって、第1ユーザプログラム実行用ID10を入力するための入力欄IP1と、第1ユーザプログラム実行用ID10の入力操作を確定するOKボタンBT1と、第1ユーザプログラム実行用ID設定画面231aを終了するキャンセルボタンBT2とが第1ユーザプログラム実行用ID設定画面231aに表示されるようになっている。具体的には、入力欄IP1には、8~32文字の半角英数字が入力される。第1ユーザプログラム実行用ID設定画面231aにおいて、ユーザによるキーボード211図1参照の入力操作によって入力欄IP1に第1ユーザプログラム実行用ID10が入力され、例えば、ユーザによるポインティングデバイス212図1参照の操作によってカーソルJを移動させてOKボタンBT3が操作クリックされることで、入力欄IP1に入力された第1ユーザプログラム実行用ID10を制御部250に送信する。一方、キャンセルボタンBT2が操作クリックされることで、第1ユーザプログラム実行用ID設定画面231aを終了するようになっている。なお、第1ユーザプログラム実行用ID設定画面231aにおけるボタン操作はタッチパネルによる操作であってもよい。送信ステップ送信ステップでは、第1受け付けステップにて受け付けた第1ユーザプログラム実行用ID10を通信部240図4参照から通信ケーブルCBを経てPLC100に送信する。第1ユーザプログラム実行用IDの受け付け送信処理例次に、第1ユーザプログラム実行用ID10の受け付け送信処理の一例について図6を参照しながら以下に説明する。図6は、第1ユーザプログラム実行用ID10の受け付け処理の一例を示すフローチャートである。なお、第1ユーザプログラム実行用ID10の受け付け送信処理は、プログラムモードで行う。図6に示す受け付け送信処理例のフローチャートでは、まず、制御部250は、第1ユーザプログラム実行用ID10の入力操作図5参照を受け付け処理S11、キャンセルボタンBT2が操作されたか否かを判断する処理S12。キャンセルボタンBT2が操作された場合には処理S12:Yes、処理を終了する一方、キャンセルボタンBT2が操作されていない場合には処理S12:No、OKボタンBT1が操作されたか否かを判断する処理S13。OKボタンBT1が操作されていない場合には処理S13:No、処理S11へ移行する一方、OKボタンBT1が操作された場合には処理S13:Yes、第1ユーザプログラム実行用ID10をPLC100へ送信し処理S14、処理を終了する。第2受け付けステップ第2受け付けステップでは、ユーザプログラムYPの実行のために照合される第2ユーザプログラム実行用ID20の入力情報を受け付ける。図7は、図1に示すツール装置200における表示装置231に表示された第2ユーザプログラム実行用ID設定画面231bを示す平面図である。図7に示すように、表示装置231における第2ユーザプログラム実行用ID設定画面231bには、ユーザ通常はベンダーによって、第2ユーザプログラム実行用ID20を入力するための第1入力欄IP2と、確認用の第2ユーザプログラム実行用ID20を入力するための第2入力欄IP3と、第2ユーザプログラム実行用ID20の入力操作を確定するOKボタンBT3と、第2ユーザプログラム実行用ID設定画面231bを終了するキャンセルボタンBT4とが第2ユーザプログラム実行用ID設定画面231bに表示されるようになっている。具体的には、第1入力欄IP2及び第2入力欄IP3には、8~32文字の半角英数字が入力される。第2ユーザプログラム実行用ID設定画面231bにおいて、ユーザによるキーボード211図1参照の入力操作によって第1入力欄IP2に第2ユーザプログラム実行用ID20が入力され、第2入力欄IP3に確認用の第2ユーザプログラム実行用ID20が入力され、例えば、ユーザによるポインティングデバイス212図1参照の操作によってカーソルJを移動させてOKボタンBT3が操作クリックされることで、第1入力欄IP2に入力された第2ユーザプログラム実行用ID20と、第2入力欄IP3に入力された確認用の第2ユーザプログラム実行用ID20とを制御部250に送信する。一方、キャンセルボタンBT4が操作クリックされることで、第2ユーザプログラム実行用ID設定画面231bを終了するようになっている。なお、第2ユーザプログラム実行用ID設定画面231bにおけるボタン操作はタッチパネルによる操作であってもよい。第1設定ステップ第1設定ステップでは、第2ユーザプログラム実行用ID20をツール装置200に備えられたハードディスク装置224図4参照の記憶領域224aに記憶させて設定する。具体的には、第1設定ステップは、プロジェクトPRに対して第2ユーザプログラム実行用ID20を設定する。プロジェクトPRのファイルデータ以下、単にファイルというには、複数のユーザプログラムYPからなるユーザプログラム全体が変数データなどの情報と共に保存される。ユーザプログラム全体が保存されたプロジェクトPRのファイルは、ハードディスク装置224に格納される。図8は、プロジェクトPRのファイルのデータ構造を示す模式図である。図8に示すプロジェクトPRのファイルは、複数のユーザプログラムYPからなるユーザプログラム全体及び変数テーブル、PLCシステム設定、I/Oテーブル、I/Oメモリデータなどの他の設定データを含んでいる。個々のユーザプログラムYPは、同一のプロジェクトPRのファイル内で作成される。また、ユーザプログラムYPは、複数のサブプログラムから構成されている。そして、第2ユーザプログラム実行用ID20は、プロジェクトPRのファイル内に設定される。これにより、個々のユーザプログラムYPと第2ユーザプログラム実行用ID20とを容易に関連付ける対応付けることが可能となる。第2ユーザプログラム実行用IDの書き込みについてここで、ツール装置200は、プロジェクトPRに対して第2ユーザプログラム実行用ID20が一度設定されて以降は第2ユーザプログラム実行用ID20を設定変更不能かつ消去不能な構成とされている。すなわち、第1設定ステップでは、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されていないときにのみ、第2ユーザプログラム実行用ID20を設定し、設定後はID設定用フラグを立てる等によって第2ユーザプログラム実行用ID20を変更も消去もできないようになっている。第2ユーザプログラム実行用IDの設定処理例次に、第2ユーザプログラム実行用ID20の設定処理の一例について図9を参照しながら以下に説明する。図9は、第2ユーザプログラム実行用ID20の設定処理の一例を示すフローチャートである。図9に示す設定処理例のフローチャートでは、まず、制御部250は、第2ユーザプログラム実行用ID20が既にプロジェクトPRに設定されているか否かを判断する処理S21。第2ユーザプログラム実行用ID20が既にプロジェクトPRに設定されている場合には処理S21:Yes、第2ユーザプログラム実行用ID20が既に設定されている旨の表示を行い処理S22、処理を終了する一方、第2ユーザプログラム実行用ID20が未だプロジェクトPRに設定されてない場合には処理S21:No、処理S23に移行する。次に、第2ユーザプログラム実行用ID20の入力操作図7参照を受け付け処理S23、キャンセルボタンBT4が操作されたか否かを判断する処理S24。キャンセルボタンBT4が操作された場合には処理S24:Yes、処理を終了する一方、キャンセルボタンBT4が操作されていない場合には処理S24:No、OKボタンBT3が操作されたか否かを判断する処理S25。OKボタンBT3が操作されていない場合には処理S25:No、処理S23へ移行する一方、OKボタンBT3が操作された場合には処理S25:Yes、確認キー例えばYキーを操作押下する旨のメッセージ表示処理S26を行う。次に、確認キー例えばYキーが操作押下されたか否かを判断し処理S27、確認キー以外のキーが操作された場合には処理S27:No、処理S23に移行する一方、確認のキー例えばYキーが操作された場合には処理S27:Yes、処理S28に移行する。次に、第1入力欄IP2に入力された第2ユーザプログラム実行用ID20が第2入力欄IP3に入力された確認用の第2ユーザプログラム実行用ID20と一致しているか否かを判断し処理S28、一致していない場合には処理S28:No、一致していない旨のメッセージを表示し処理S29、処理S23に移行する一方、一致する場合には処理S28:Yes、第2ユーザプログラム実行用ID20をプロジェクトPRに設定し処理S30、処理を終了する。第2ユーザプログラム実行用IDの表示についてまた、制御部250は、プロジェクトPRに設定された後のハードディスク装置224の記憶領域224aに記憶されている第2ユーザプログラム実行用ID20を表示させる機能を持たない具体的には第2ユーザプログラム実行用ID20を表示させることを禁止する構成とされている。本実施の形態では、制御部250は、さらに、付加手段Qa5図4参照として機能する。すなわち、ツール用プログラムPは、付加手段Qa5に対応する付加ステップを制御部250に実行させる。付加ステップ付加ステップでは、プロジェクトPR図8参照における第2ユーザプログラム実行用ID20をユーザプログラムYPに付加する。具体的には、付加ステップでは、プロジェクトPRにおける第2ユーザプログラム実行用ID20を読み出して、ユーザプログラムYPの言語に対応するコンパイラによってコンパイルされたユーザプログラムYPのオブジェクトコード後述する図10参照に対して、プロジェクトPRから読み出した第2ユーザプログラム実行用ID20を組み込むようになっている。図10は、ユーザプログラムYPに付加された第2ユーザプログラム実行用ID20のデータ構造を示す模式図である。図10に示すように、ユーザプログラムYPのオブジェクトコードに付加された第2ユーザプログラム実行用ID20のファイルデータ11は、ファイル情報ヘッダ部12とデータ部13とで構成されている。ファイル情報ヘッダ部12には、ファイルバージョンなどのファイル情報が記録される。データ部13には、第2ユーザプログラム実行用ID20が記憶される。そして、送信ステップでは、付加ステップにて第2ユーザプログラム実行用ID20を付加したユーザプログラムYPをPLC100に送信する。なお、第2ユーザプログラム実行用ID20とユーザプログラムYPとを別々にPLC100に送信してもよい。この場合、第2ユーザプログラム実行用ID20とユーザプログラムYPとを同時に又は異なる時間に送信してもよい。本実施の形態では、制御部250は、さらに、暗号化手段Qa6図4参照として機能する。すなわち、ツール用プログラムPは、暗号化手段Qa6に対応する暗号化ステップを制御部250に実行させる。暗号化ステップ暗号化ステップでは、第1受け付けステップにて受け付けた第1ユーザプログラム実行用ID10、及び、第2受け付けステップにて受け付けた第2ユーザプログラム実行用ID20を不可逆に暗号化する。ここで、不可逆の暗号化処理は、元のIDコードに戻すことができない処理であり、同じ暗号キーを使って同じ文字列を暗号化すると、生成される文字列は同じものとなる。なお、可逆的に暗号化した第1及び第2ユーザプログラム実行用ID10,20を照合のときに復号化するようにしてもよい。そして、第1設定ステップでは、暗号化ステップにて暗号化された第2ユーザプログラム実行用ID20をプロジェクトPRに設定する。また、送信ステップでは、暗号化ステップにて暗号化された第1ユーザプログラム実行用ID10をPLC100に送信する。[PLCのソフトウェア構成]PLC100におけるマイクロプロセッサ111は、第2設定手段Qb1、格納制御手段Qb2、照合手段Qb3及び実行禁止手段Qb4図2参照として機能する。すなわち、システムプログラムSPは、第2設定手段Qb1に対応する第2設定ステップと、格納制御手段Qb2に対応する格納制御ステップと、照合手段Qb3に対応する照合ステップと、実行禁止手段Qb4に対応する実行禁止ステップとをマイクロプロセッサ111に実行させる。なお、図2における解除手段Qb5については後ほど説明する。第2設定ステップ第2設定ステップでは、ツール装置200で実施された送信ステップにてPLC100に送信されてきた第1ユーザプログラム実行用ID10をPLC100に備えられたID格納用メモリ113図2参照の記憶領域113aに記憶させて設定する。また、第1ユーザプログラム実行用ID10がツール装置200で暗号化される場合には、第2設定ステップでは、ツール装置200で実施された暗号化ステップにて暗号化されて送信ステップにてPLC100に送信されてきた第1ユーザプログラム実行用ID10をID格納用メモリ113の記憶領域113aに記憶させて設定する。第1ユーザプログラム実行用IDの書き込みについてここで、PLC100は、ID格納用メモリ113に対して第1ユーザプログラム実行用ID10を書き換え可能かつ消去可能な構成とされている。すなわち、第2設定ステップでは、第1ユーザプログラム実行用ID10がID格納用メモリ113の記憶領域113aに設定記憶されているか否かに関わらず、第1ユーザプログラム実行用ID10を変更も消去もできるようになっている。第1ユーザプログラム実行用ID10の変更は、図5に示す第1ユーザプログラム実行用ID設定画面231aによって行うことができる。第1ユーザプログラム実行用IDの消去についてID格納用メモリ113の記憶領域113aに記憶されている第1ユーザプログラム実行用ID10は、CPUユニット110に対してメモリオールクリアの機能を実行することによって消去することができる。すなわち、CPUユニット110に対するメモリオールクリアの機能を実行すると、ID格納用メモリ113の記憶領域113aに第1ユーザプログラム実行用ID10が設定されていない状態となり、ID格納用メモリ113が初期の非設定状態に戻る。第1ユーザプログラム実行用IDの表示についてなお、ツール装置200における制御部250は、ID格納用メモリ113の記憶領域113aに設定された後のID格納用メモリ113に記憶されている第1ユーザプログラム実行用ID10を表示させる機能を持たない具体的には第1ユーザプログラム実行用ID10を表示させることを禁止する構成とされている。格納制御ステップ格納制御ステップでは、ツール装置200で実施された付加ステップにて第2ユーザプログラム実行用ID20が付加されて送信ステップにてPLC100に送信されてきたユーザプログラムYPをPLC100におけるバックアップメモリ114図2参照に格納する。照合ステップ照合ステップでは、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とが一致しているか否かを照合する。具体的には、ID格納用メモリ113に記憶されている第1ユーザプログラム実行用ID10と、プロジェクトPRから転送されてバックアップメモリ114に記憶されている第2ユーザプログラム実行用ID20とを照合する。本実施の形態において、照合ステップでは、バックアップメモリ114に格納されているユーザプログラムYPをユーザメモリ116に格納するときに、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合する。具体的には、ID格納用メモリ113に記憶されている第1ユーザプログラム実行用ID10を読み出し、バックアップメモリ114からユーザプログラムYPを読み出してユーザプログラムYPに付加された組み込まれた第2ユーザプログラム実行用ID20をユーザプログラムYPから取り出し、ID格納用メモリ113から読み出した第1ユーザプログラム実行用ID10と、ユーザプログラムYPから取り出した第2ユーザプログラム実行用ID20とを照合する。ここでは、第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20は、同じ暗号キーを使って同じ文字列を暗号化して生成された文字列が同じものとなる不可逆に暗号化されているので、照合ステップでは、不可逆に暗号化された第1ユーザプログラム実行用ID10の文字列と、不可逆に暗号化された第2ユーザプログラム実行用ID20の文字列とが一致しているか否かを照合する。本実施の形態では、第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20の一致及び不一致は、図11に示すような条件としている。図11は、第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20の一致及び不一致の条件の一例を示す表である。図11に示すように、第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されていないときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されていないときには、一致と判断する。第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されているときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されているとき、かつ、双方のID10,20が等しいときには、一致と判断する。第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されているときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されていないときには、不一致と判断する。第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されていないときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されているときには、不一致と判断する。また、第1ユーザプログラム実行用ID10がID格納用メモリ113に設定されているときで、第2ユーザプログラム実行用ID20がプロジェクトPRに設定されているとき、かつ、双方のID10,20が等しくないときには、不一致と判断する。第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合するタイミングは、本実施の形態では、PLC100の電源を投入してバックアップメモリ114からユーザメモリ116へユーザプログラムYPを格納した時電源投入時、或いは、ツール装置200からPLC100におけるバックアップメモリ114へユーザプログラムYPを格納してバックアップメモリ114からユーザメモリ116へユーザプログラムYPを格納した時ダウンロード時とされている。実行禁止ステップ実行禁止ステップでは、照合ステップにて照合した照合結果に基づいて、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とが不一致となった場合に、ユーザプログラムYPの実行を禁止する。本実施の形態では、マイクロプロセッサ111は、さらに、解除手段Qb5として機能する。すなわち、システムプログラムSPは、解除手段Qb5図2参照に対応する解除ステップをマイクロプロセッサ111に実行させる。解除ステップ解除ステップでは、実行禁止ステップによるユーザプログラムYPの実行禁止状態をCPUユニット110の再起動具体的には、CPUユニット110の電源OFF/ON又はツール装置200のユーザプログラム開発支援用プログラムからのリセットによって解除する。IDの照合処理例次に、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合する照合処理S40の一例について図12を参照しながら以下に説明する。図12は、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合する照合処理S40の一例を示すフローチャートである。なお、図12に示すフローチャートは、図3に示すIDの照合処理S40の詳細フローチャートである。図12に示すIDの照合処理例のフローチャートでは、まず、電源投入時か、又は、ダウンロード時か否かを判断する処理S41。電源投入時でない場合には処理S41:No、図3に示すPLC100全体の処理における初期化処理処理S1に戻り、ダウンロード時でない場合には処理S41:No、図3に示すPLC100全体の処理におけるモード読み込み処理処理S3に戻る。一方、電源投入時、又は、ダウンロード時である場合には処理S41:Yes、処理S42に移行する。次に、第1及び第2ユーザプログラム実行用ID10,20の何れか一方が未設定か否かを判断する処理S42。第1及び第2ユーザプログラム実行用ID10,20の何れか一方が未設定である場合には処理S42:Yes、処理S46に移行する一方、第1及び第2ユーザプログラム実行用ID10,20の何れか一方が未設定でない場合には処理S42:No、第1及び第2ユーザプログラム実行用ID10,20の双方が未設定か否かを判断する処理S43。第1及び第2ユーザプログラム実行用ID10,20の双方が未設定である場合には処理S43:Yes、処理S45に移行する一方、第1及び第2ユーザプログラム実行用ID10,20の双方が未設定でない場合には処理S43:No、第1及び第2ユーザプログラム実行用ID10,20が一致するか否かを判断する処理S44。第1及び第2ユーザプログラム実行用ID10,20が一致した場合には処理S44:Yes、処理S45に移行する一方、第1及び第2ユーザプログラム実行用ID10,20が一致していない場合には処理S44:No、処理S46に移行する。処理S45では、ユーザプログラムYPの実行を許可し、図3に示すPLC100全体の処理に戻る。処理S46では、ユーザプログラムYPの実行を禁止し、IDが一致しない旨のメッセージ表示処理S47を行った後、図3に示すPLC100全体の処理に戻る。ここで、IDが一致しない旨のメッセージ表示は、PLC100が備える表示機能図1では省略を使用して行う。表示機能の例としてLEDランプ使用する場合は、所定のLEDを点灯または点滅させる態様を例示できる。表示機能の例として液晶表示装置を使用する場合は、所定の文字列を表示させる態様を例示できる。本実施の形態について以上説明したように、本実施の形態によると、第1ユーザプログラム実行用ID10の入力情報を受け付け、第1ユーザプログラム実行用ID10をPLC100に送信し、PLC100に送信されてきた第1ユーザプログラム実行用ID10をPLC100に設定することに加えて、ユーザプログラムYPの実行のために照合される第2ユーザプログラム実行用ID20の入力情報を受け付け、第2ユーザプログラム実行用ID20をツール装置200に設けられたプロジェクトPRに設定するので、ユーザがIDの照合を行うためにユーザプログラムYPを作成しなくても、IDを入力するといった簡単な操作によってPLC100上で実行させるユーザプログラムYPの無断利用を防止することができ、これにより、PLC100上で実行させるユーザプログラムYPの無断利用を防止するための利便性を向上させることが可能となる。そして、ツール装置200において、ツール装置200に設けられたプロジェクトPRに対して第2ユーザプログラム実行用ID20が一度設定されて以降は第2ユーザプログラム実行用ID20を設定変更不能かつ消去不能な構成とされているので、一度設定した第2ユーザプログラム実行用ID20を、第2ユーザプログラム実行用ID20を設定した本来のユーザ該ユーザから知得したユーザを含むユーザ以外の他人が書き換えたり、或いは、盗み見たりすることが非常に困難となる。また、PLC100におけるID格納用メモリ113に対して第1ユーザプログラム実行用ID10を書き換え可能かつ消去可能な構成とされているので、本来のユーザが第2ユーザプログラム実行用ID20と一致する第1ユーザプログラム実行用ID10を設定することができ、これにより、PLC100において、照合した照合結果に基づいて第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とが一致することで、PLC100において、ユーザプログラムYPを実行させることができる。その一方で、本来のユーザ以外の他人が第2ユーザプログラム実行用ID20とは異なる第1ユーザプログラム実行用ID10を設定すると、PLC100において、照合した照合結果に基づいて第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とが不一致となることで、ユーザプログラムYPの実行を禁止するので、ユーザプログラムYPを実行させることができない。しかも、ツール装置200は、PLC100のID格納用メモリ113における第1ユーザプログラム実行用ID10を表示させる機能、及び、プロジェクトPRにおける第2ユーザプログラム実行用ID20を表示させる機能を何れも持たない構成とされているので、本来のユーザや本来のユーザ以外の他人に関わらず、第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20をツール装置200から知られることが非常に困難となる。なお、本実施の形態では、ID格納用メモリ113が制御基板に着脱不能に搭載直付けされているので、ID格納用メモリ113を別のPLCに取り替えることも非常に困難である。また、本実施の形態では、ユーザプログラムYPがプロジェクトPRとして管理され、第2ユーザプログラム実行用ID20をプロジェクトPRに設定するので、第2ユーザプログラム実行用ID20とユーザプログラムYPとの関連付けを容易に行うことができる。また、本実施の形態では、第1受け付け手段Qa1にて受け付けた第1ユーザプログラム実行用ID10、及び、第2受け付け手段Qa3にて受け付けた第2ユーザプログラム実行用ID20を暗号化するので、万一、第1ユーザプログラム実行用ID10及び/又は第2ユーザプログラム実行用ID20が不正に読み出されて盗まれたとしても第1ユーザプログラム実行用ID10及び第2ユーザプログラム実行用ID20が暗号化されたものであるため、第1ユーザプログラム実行用ID10及び/又は第2ユーザプログラム実行用ID20を本来のユーザ以外の他人に知られることが困難となる。これにより、第1ユーザプログラム実行用ID10及び/又は第2ユーザプログラム実行用ID20の外部への漏洩に対するセキュリティを向上させることが可能となる。しかも、暗号化処理は、不可逆の暗号化処理であり、元のIDコードに戻すことができないので、元のIDコードの情報が知られることはない。また、本実施の形態では、ツール装置200に設けられたプロジェクトPRにおける第2ユーザプログラム実行用ID20を、PLC100におけるバックアップメモリ114に格納するので、照合毎にツール装置200から第2ユーザプログラム実行用ID20を取得しなくても、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを容易に照合することが可能となる。また、本実施の形態では、第2ユーザプログラム実行用ID20をユーザプログラムYPに付加し、第2ユーザプログラム実行用ID20を付加したユーザプログラムYPをPLC100に送信してPLC10におけるバックアップメモリ114に格納するので、PLC100において第2ユーザプログラム実行用ID20の存在を分かり難くすることが可能となる。また、本実施の形態では、バックアップメモリ114に格納されているユーザプログラムYPをユーザメモリ116に格納するときに、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを照合するので、第1ユーザプログラム実行用ID10と第2ユーザプログラム実行用ID20とを、ユーザプログラムYPの実行に先だって確実に照合することが可能となる。また、本実施の形態では、ユーザプログラムYPが実行禁止状態となったときには、ユーザプログラムYPの実行禁止状態をCPUユニット110の再起動によって解除するので、本来のユーザ以外の他人によるID格納用メモリ113への第1ユーザプログラム実行用ID10の不正書き込み労力を増やすことができ、ひいては他人による不正行為を抑止することが可能となる。また、本実施の形態では、ID格納用メモリ113への第1ユーザプログラム実行用ID10の内容は任意に書き換え可能であるから、故障等の原因でPLC100が別のPLC100に交換されたときには、交換後のPLC100のID格納用メモリ113における第1ユーザプログラム実行用ID10の内容を交換前のPLC100の第1ユーザプログラム実行用ID10と同じ内容に書き換えることにより、ユーザプログラムYPを交換後のPLC100上においても動作させることができる。なお、プログラマブルコントローラシステム300において、複数のPLC100を設ける場合には、ツール装置200側で設定した第2ユーザプログラム実行用ID20と同じIDを複数のPLC100側の第1ユーザプログラム実行用ID10としてID格納用メモリ113に設定することで、複数のPLC100を設ける場合でも、前述と同様に、ユーザプログラムYPの無断利用を防止することが可能となる。"