(実施の形態)
以下、本発明の実施の形態に係るプログラマブルロジックコントローラ(Programmable Logic Controller、以下、PLCと示す)1000のCPU(Central Processing Unit)ユニット100を説明する。
図1に示すように、PLC1000は、PLC1000全体を制御するCPUユニット100と、外部機器からの入力をCPUユニット100に供給する入力ユニット200と、CPUユニット100の出力を外部機器へ供給する出力ユニット300とを含む。CPUユニット100と入力ユニット200と出力ユニット300とは、フィールドバス400を介して接続され、フィールドバス400を介して通信を行う。また、図示していないが、CPUユニット100と入力ユニット200と出力ユニット300とは、ベースユニットを介して電源ユニットに接続されており、電源ユニットから供給される電源によって動作する。PLC1000は、例えば、ファクトリーオートメーションの分野で使用される。
入力ユニット200には、センサ、スイッチ等を含む検出器901が接続されている。例えば、検出器901がスイッチである場合、入力ユニット200はスイッチのオン/オフを示す信号を、CPUユニット100に供給する。出力ユニット300には、アクチュエータ、表示灯等を含む被制御機器902が接続されている。例えば、被制御機器902が表示灯である場合、出力ユニット300は、CPUユニット100から供給されたオン/オフを示す制御信号を、表示灯に出力する。よって、表示灯が点灯/消灯する。
CPUユニット100は、入力ユニット200から供給されたオン/オフを示す信号に応じて、PLC1000のユーザが作成したプログラム(以下、ユーザプログラムと称することがある)の各命令を実行し、アクチュエータ、表示灯等を含む被制御機器902を制御する信号を出力ユニット300に供給する。PLC1000のユーザは、例えば、PLC1000の管理者である。
ユーザプログラムは、特定の機能を実現するため、その機能が実装されたプログラム部品を呼び出して実行することがある。プログラム部品とは、部品化されたソフトウェアのことである。以下、ユーザプログラムからプログラム部品を呼び出して実行することをコールすると言うことがある。プログラム部品には、市販品であり、実行するために対価を、そのプログラム部品の作成元に支払わなければならない有料のプログラム部品(以下、有料プログラム部品と称する)と、ユーザ自身が作成したプログラム部品(以下、自作プログラム部品と称する)とが含まれている。ユーザ自身が作成した自作プログラム部品については、実行のための対価は不要である。
実施の形態において、有料プログラム部品の実行に関しては、下記のようなルールに従わなければならないものとする。有料プログラム部品を実行するための対価はポイント(以下、対価ポイントと称する)で表される。PLC1000のユーザは、CPUユニット100が有料プログラム部品を実行することができるようにするため、少なくとも有料プログラム部品の対価を示す対価ポイントと同数のポイントを保有していなければならない。ユーザは、ポイントを保有するため、有料プログラム部品の対価ポイントに応じた金額を有料プログラム部品の作成元に支払って、ポイントを購入しなければならない。さらに、ユーザは、購入したポイントをCPUユニット100に登録する必要がある。また、CPUユニット100が有料プログラム部品を実行するためには、有料プログラム部品の対価ポイントの合計以上のポイントが、CPUユニット100が保有する保有ポイントとして、CPUユニット100に登録されている必要がある。
CPUユニット100は、プログラム部品の実行に際し、CPUユニット100に登録されたポイントと、ユーザプログラムからコールする有料プログラム部品の価値を示すポイントとに応じて、有料プログラム部品を実行するか否かを判別する。
ユーザが購入し、CPUユニット100に登録したポイントは、有料プログラム部品の実行回数、実行期間に応じて変動するものではない。CPUユニット100は、コールする複数の有料プログラム部品の対価の合計が、保有するポイントを超えない限り、当該複数の有料プログラム部品を何度でも、無期限に実行することが可能である。
図1に示すように、CPUユニット100は、ハードウェア構成として、各種データを記憶する記憶部110と、入力ユニット200及び出力ユニット300と通信するための通信部120と、ユーザの入力操作を受け付ける入力受付部130と、画像を表示装置に表示する表示部140と、CPUユニット100全体を制御する演算部150と、エンジニアリングツール500と通信するためのツール用通信部160とを含む。記憶部110と、通信部120と、入力受付部130と、表示部140と、ツール用通信部160とはいずれもバス190を介して演算部150に接続されており、演算部150と通信する。
記憶部110は、揮発性メモリ、不揮発性メモリを含む。記憶部110は、各種のプログラム、データを格納する。記憶部110は、演算部150が実行することにより後述の実行可否判別部152の機能を実現するためのプログラム001と、演算部150が実行することにより後述の実行管理部153の機能を実現するためのプログラム002とを格納する。記憶部110は、CPUユニット100自体を識別する識別情報としてシリアルナンバーを記憶する。
CPUユニット100には、後述のエンジニアリングツール500からCPUユニット100に登録される保有ポイント情報が暗号化されたデータで供給される。このため、記憶部110は、暗号化されたデータを復号するための復号鍵が格納されている。
通信部120は、フィールドバス400を介して、入力ユニット200及び出力ユニット300と通信するためのネットワークインタフェース回路を含む。通信部120は、入力ユニット200から受信したデータを演算部150に出力し、演算部150から供給されたデータを出力ユニット300に送信する。
入力受付部130は、ボタン、操作キー等を含み、ユーザからの操作入力を受け付け、ユーザの操作入力を示す信号を演算部150に出力する。
表示部140は、インジケータランプ、ディスプレイ等の表示装置を含む。表示部140は、例えば、演算部150の制御に従ってインジケータランプを点灯/消灯し、演算部150から供給される信号に基づく画像をディスプレイに表示する。
演算部150は、MPU(Micro Processing Unit)を含む。演算部150は、記憶部110に記憶される各種プログラムを実行して、CPUユニット100の各種機能を実現する。
ツール用通信部160は、後述のエンジニアリングツール500と通信ケーブル600を介して通信するための通信インタフェースとを含む。ツール用通信部160は、エンジニアリングツール500から受信したデータを演算部150に出力し、演算部150から供給されたデータをエンジニアリングツール500に送信する。
図2Aに示すように、CPUユニット100は、機能的には、ユーザプログラムと各種ライブラリとを記憶するプログラム記憶部111と、CPUユニット100が保有するポイント(以下、保有ポイント)を記憶するポイント記憶部112と、有料プログラム部品の実行可否を示す値を保持する実行可否フラグ113と、後述のエンジニアリングツール500から供給された各種プログラムのファイルをプログラム記憶部111に書き込むファイル操作部151と、有料プログラム部品の実行可否を判別する実行可否判別部152と、有料プログラム部品の実行を管理する実行管理部153と、CPUユニット100に割り当てられたポイントを保有ポイントとしてポイント記憶部112に書き込むポイント管理部154と、エンジニアリングツール500と通信する通信インタフェース161とを含む。
プログラム記憶部111は、第1ライブラリファイル10と、第2ライブラリファイル20と、ユーザプログラムファイル30とを記憶する。プログラム記憶部111は、図1に示す記憶部110により実現される。プログラム記憶部111は、本発明のプログラム記憶手段の一例である。
第1ライブラリファイル10は、ファイルヘッダ11と有料アプリケーション12とを含む。ファイルヘッダ11には、有料アプリケーション12の実行に要求される対価ポイントの情報が含まれている。ファイルヘッダ11は、本発明の対価ポイント記憶手段の一例である。有料アプリケーション12は、ユーザプログラム32からコールされる有料プログラム部品である。
第2ライブラリファイル20は、ファイルヘッダ21と無料アプリケーション22とを含む。ファイルヘッダ21には、第2ライブラリファイル20内の無料アプリケーション22に関する各種情報が含まれている。なお、第1ライブラリファイル10のファイルヘッダ11と異なり、ファイルヘッダ21は対価ポイントの情報を含まない。無料アプリケーション22はユーザが作成したアプリケーションであり、実行するための対価は不要だからである。無料アプリケーション22は、ユーザプログラム32からコールされる無料プログラム部品である。
ユーザプログラムファイル30は、ファイルヘッダ31と、ユーザが作成したユーザプログラム32とを含む。PLC1000において、ユーザプログラム32は次のように実行される。CPUユニット100は、図2Bに示すようなユーザプログラム32を先頭の命令から順次処理し、プログラム終了を示すEND命令を読み込むとユーザプログラム32の実行を終了し、次の周期で再びユーザプログラム32の先頭の命令から順次処理する。
ポイント記憶部112は、ユーザが購入し、CPUユニット100に割り当てたポイントである保有ポイントを記憶する。保有ポイントは、CPUユニット100において有料アプリケーション12の実行が認められる限度を示す。ポイント記憶部112は、図1に示す記憶部110により実現される。ポイント記憶部112は本発明の限度ポイント記憶手段の一例である。保有ポイントは本発明の限度ポイントの一例である。CPUユニット100においては、ユーザプログラム32がコールする有料アプリケーション12の対価ポイントの合計が、CPUユニット100が保有する保有ポイントを超えない場合に有料アプリケーション12を実行することが可能である。ポイント記憶部112には、エンジニアリングツール500から供給された保有ポイント情報が、ポイント管理部154により書き込まれる。保有ポイント情報は、CPUユニット100に割り当てられた保有ポイントと、CPUユニット100のシリアルナンバーとを含む。
実行可否フラグ113は、CPUユニット100が有料アプリケーション12を実行することが可能か否かを示すフラグ値を保持する。実行可否フラグ113は、図1に示す記憶部110により実現される。このフラグ値は、保有ポイントが、ユーザプログラム32がコールする有料アプリケーション12の対価ポイントの合計以上であるか否かに応じて決まる。図2Aに示す実行可否フラグ113には、後述の実行可否判別部152により、実行可否を示すフラグ値がセットされる。
ファイル操作部151は、プログラム記憶部111への各種プログラムのファイルの書き込みを行う。ファイル操作部151は、図1に示す演算部150と、ツール用通信部160とにより実現される。ファイル操作部151は、エンジニアリングツール500から供給された第1ライブラリファイル10、第2ライブラリファイル20、及びユーザプログラムファイル30の全てあるいは一部をプログラム記憶部111に格納する。また、エンジニアリングツール500からプログラム記憶部111内の指定されたファイルを削除するよう指示された場合、ファイル操作部151はプログラム記憶部111内の指定されたファイルを削除する。
図2Aに示す実行可否判別部152は、ユーザプログラムファイル30を解析し、ユーザプログラム32がコールしている有料アプリケーション12の対価ポイントの合計を求める。実行可否判別部152は、ポイント記憶部112が保持する保有ポイントが、求めた対価ポイントの合計以上であるか否かを判別し、判別の結果に応じて実行可否フラグ113に値をセットする。実行可否判別部152は、図1に示す演算部150が記憶部110のプログラム001を実行することにより実現される。実行可否判別部152は、本発明の判別手段の一例である。
図2Aに示す実行可否判別部152は、保有ポイントが、有料アプリケーション12の対価ポイントの合計以上であると判別すると、有料アプリケーション12の実行が可能であることを示す値を実行可否フラグ113にセットする。一方、実行可否判別部152は、ポイント記憶部112が保持する保有ポイントが、有料アプリケーション12の対価ポイントの合計未満であると判別すると、有料アプリケーション12の実行が不可であることを示す値を実行可否フラグ113にセットする。実施の形態においては、有料アプリケーション12の実行が可能であると判別すると、実行可否判別部152は、実行可否フラグ113に、「実行可」を示す値である“1”をセットする。有料アプリケーション12の実行が不可であると判別すると、実行可否判別部152は、実行可否フラグ113に、「実行不可」を示す値である“0”をセットする。
実行管理部153は、ユーザプログラム32の実行時に、実行対象の命令が、有料アプリケーション12をコールする命令である場合に、実行可否フラグ113にセットされている値に基づいて、有料アプリケーション12を実行するか否かの制御を行う。実行管理部153は、図1に示す演算部150が記憶部110のプログラム002を実行することにより実現される。実行管理部153は、本発明の実行管理手段の一例である。
図2Aに示す実行管理部153は、例えば、有料アプリケーション12がコールされ、実行可否フラグ113に「実行不可」を示す値である“0”がセットされている場合、有料アプリケーション12の実行を制限する。よって、有料アプリケーション12は実行されない。一方、実行可否フラグ113に「実行可」を示す値である“1”がセットされている場合、実行管理部153は、有料アプリケーション12の実行を制限しない。
ポイント管理部154は、エンジニアリングツール500から供給された保有ポイント情報をポイント記憶部112に書き込む。また、ポイント管理部154は、エンジニアリングツール500から更新された保有ポイント情報が供給されると、ポイント記憶部112が保持するポイントを書き換える。
実施の形態においては、保有ポイント情報の改ざん防止のため、下記のように、エンジニアリングツール500とCPUユニット100との間で、保有ポイント情報の受け渡しが行われる。エンジニアリングツール500は、保有ポイント情報を暗号化し、暗号化したデータをCPUユニット100に供給する。ポイント管理部154は、エンジニアリングツール500から供給された暗号化された保有ポイント情報をポイント記憶部112に格納する。保有ポイント情報は、CPUユニット100のイニシャル処理時に復号される。また、CPUユニット100は、エンジニアリングツール500から、ポイント記憶部112の保有ポイント情報を要求されると、暗号化された保有ポイント情報をエンジニアリングツール500に送信する。
通信インタフェース161は、エンジニアリングツール500の通信インタフェース521と通信を行う。通信インタフェース161は、エンジニアリングツール500から受信したデータをファイル操作部151又はポイント管理部154に出力する。通信インタフェース161は、図1に示すツール用通信部160により実現される。
次に、エンジニアリングツール500及びポイント管理サーバ700を説明する。エンジニアリングツール500は、PLC1000に関わる開発、設定等を支援するツールであり、パーソナルコンピュータに専用のアプリケーションをインストールした装置である。図1に示すように、エンジニアリングツール500は、通信ケーブル600によりCPUユニット100に接続され、CPUユニット100と通信する。
ユーザは、エンジニアリングツール500を使用して、CPUユニット100で実行するユーザプログラム32を作成し、作成したユーザプログラム32を図2Aに示すCPUユニット100のプログラム記憶部111に書き込む。さらに、実施の形態においては、ユーザは、エンジニアリングツール500を使用して、有料プログラム部品である有料アプリケーション12を実行するために必要なポイントを購入し、購入したポイントを保有ポイントとしてCPUユニット100に登録することができる。さらに、ユーザは、エンジニアリングツール500を使用して、有料プログラム部品である有料アプリケーション12、自作プログラム部品である無料アプリケーション22を、CPUユニット100のプログラム記憶部111に書き込むことができる。
図1に示すポイント管理サーバ700は、CPUユニット100に登録されるポイントに関するデータを管理する。ポイント管理サーバ700は、例えば、有料のプログラム部品の作成元におかれたコンピュータである。ポイント管理サーバ700は、ネットワーク800を介してエンジニアリングツール500に接続され、エンジニアリングツール500と通信する。ユーザは、エンジニアリングツール500を介して、ポイント管理サーバ700にアクセスし、ポイントの購入、CPUユニット100へのポイントの割り当て等を行う。
エンジニアリングツール500は、ハードウェア構成として、各種データを記憶する記憶部510と、CPUユニット100と通信するための通信部520と、ユーザの入力操作を受け付ける入力受付部530と、画像をディスプレイに出力する表示部540と、エンジニアリングツール500全体を制御する演算部550と、ポイント管理サーバ700と通信するためのサーバ用通信部560とを含む。記憶部510と、通信部520と、入力受付部530と、表示部540と、サーバ用通信部560とはいずれもバス590を介して演算部550に接続されており、演算部550と通信する。
記憶部510は、揮発性メモリ、不揮発性メモリを含む。記憶部510は、各種のプログラム、データを格納する。記憶部510は、管理対象のCPUユニット100それぞれの識別情報であるシリアルナンバーを記憶する。
通信部520は、ネットワークインタフェース回路を含み、演算部550の制御に従って、通信ケーブル600で接続されたCPUユニット100と通信する。例えば、通信部520は、演算部550の制御に従って、プログラムファイル、各種設定パラメータ等をCPUユニット100に送信する。入力受付部530は、マウス、操作キー等を含み、ユーザからの操作入力を受け付け、ユーザの操作入力を示す信号を演算部550に出力する。表示部540は、ディスプレイを含み、演算部550から供給される信号に基づく画像をディスプレイに表示する。
演算部550は、CPUを含む。演算部550は、記憶部510に記憶される各種プログラムを実行して、エンジニアリングツール500の各種機能を実現する。サーバ用通信部560は、後述のポイント管理サーバ700とネットワーク800を介して通信するための通信インタフェースを含む。
続いて、ポイント管理サーバ700を説明する。ポイント管理サーバ700は、ハードウェア構成として、各種データを記憶する記憶部710と、エンジニアリングツール500と通信するための通信部720と、ポイント管理サーバ700全体を制御する演算部730と、を含む。記憶部710と、通信部720とはいずれもバス790を介して演算部730に接続されており、演算部730と通信する。
記憶部710は、揮発性メモリ、不揮発性メモリを含む。記憶部710は、各種のプログラム、データを格納する。通信部720は、ネットワークインタフェース回路を含み、演算部730の制御に従って、ネットワーク800を介してエンジニアリングツール500と通信する。演算部730は、CPUを含む。演算部730は、記憶部710に記憶される各種プログラムを実行して、ポイント管理サーバ700の各種機能を実現する。
実施の形態においては、ポイント管理サーバ700は、エンジニアリングツール500と協働して、エンジニアリングツール500の各機能を実現する。
図2Aに示すように、エンジニアリングツール500は、機能的には、各種プログラムを記憶するプログラム記憶部511と、保有ポイントを記憶するポイント記憶部512と、CPUユニット100と通信する通信インタフェース521と、各種プログラムのファイルをCPUユニット100に書き込むファイル操作部551と、保有ポイントを管理するポイント管理部552と、を含む。
プログラム記憶部511は、図3Aに示すように、有料ライブラリファイル1と、自作ライブラリファイル2と、ユーザプログラムファイル3と、対価データ4とを記憶する。プログラム記憶部511は、図1に示す記憶部510により実現される。プログラム記憶部511は、本発明の記憶手段の一例である。
図3Aに示す有料ライブラリファイル1は、有料プログラム部品である有料アプリケーション12を含む。有料アプリケーション12は、ユーザがエンジニアリングツール500を介して、有料アプリケーション12の提供サイトにおいてダウンロードしたものである。有料アプリケーション12は、CPUユニット100が実行可能な形式のプログラム部品であり、暗号化されたデータである。有料ライブラリファイル1には、ユーザプログラム32からコールされない有料アプリケーション12が含まれていてもよい。
自作ライブラリファイル2は、自作プログラム部品である無料アプリケーション22を含む。無料アプリケーション22は、エンジニアリングツール500のプログラム作成機能によりユーザが作成したものである。このため無料アプリケーション22の実行のための対価の支払いは不要である。ユーザプログラムファイル3は、ユーザが作成したユーザプログラム32を含む。
対価データ4は、ユーザがダウンロードした有料アプリケーション12それぞれの対価ポイントが既定されたデータを含む。対価データ4は、ユーザがエンジニアリングツール500を介して、有料アプリケーション12の提供サイトにおいてダウンロードしたものである。
図2Aに示すポイント記憶部512は、図3Bに示すように、ポイントに関するデータを格納したポイント管理テーブル5120を含む。ポイント管理テーブル5120には、ユーザを特定するユーザIDと、ユーザが保有するポイントの合計と、CPUユニット100のシリアルナンバーと、CPUユニット100毎に割り当てられた保有ポイントと、が格納されている。ポイント記憶部512は、図1に示すポイント管理サーバ700の記憶部710により実現される。ポイント記憶部512は、本発明の記憶手段の一例である。
通信インタフェース521は、CPUユニット100の通信インタフェース161と通信を行う。通信インタフェース521は、ファイル操作部551から出力されたファイルをCPUユニット100に送信する。通信インタフェース521は、ポイント管理部552から出力された保有ポイント情報をCPUユニット100に送信する。通信インタフェース521は、図1に示すエンジニアリングツール500の通信部520により実現される。
図2Aに示すファイル操作部551は、ユーザの指示に従って、プログラム記憶部511に格納されている各種プログラムのファイルをCPUユニット100に書き込む。ファイル操作部551は、図1に示す通信部520と演算部550とにより実現される。
具体的には、ファイル操作部551は、図3Aに示すプログラム記憶部511の対価データ4から、指定された有料アプリケーション12の対価ポイントを読み出し、読み出した対価ポイントの情報を含めたファイルヘッダ11を作成する。ファイル操作部551は、有料アプリケーション12と、作成したファイルヘッダ11とを含むファイルを、第1ライブラリファイル10として、CPUユニット100に送信するため通信インタフェース521に出力する。
また、ファイル操作部551は、無料アプリケーション22に関する情報を含むファイルヘッダ21を作成する。ファイル操作部551は、無料アプリケーション22と、ファイルヘッダ21とを含むファイルを、第2ライブラリファイル20として、CPUユニット100に送信するため通信インタフェース521に出力する。
また、ファイル操作部551は、ユーザプログラム32がコールする有料プログラム部品である有料アプリケーション12を特定するための情報を含むファイルヘッダ31を作成する。ファイル操作部551は、ユーザプログラム32と、作成したファイルヘッダ31とを含むファイルを、ユーザプログラムファイル30として、CPUユニット100に送信するため通信インタフェース521に出力する。
図2Aに示すポイント管理部552は、ユーザの指示に従って、ポイント記憶部512が記憶する保有ポイントを管理する。ポイント管理部552は、図1に示すエンジニアリングツール500の通信部520及び演算部550と、ポイント管理サーバ700の通信部720及び演算部730とにより実現される。ポイント管理部552は、本発明の更新手段の一例である。
ポイント管理部552が実現する機能は、(1)ポイント登録、(2)ポイント割り当て、(3)ポイント書き込み、(4)ポイント確認、(5)ポイント削除、である。以下、各機能を順番に説明する。
(ポイント登録)
ポイント管理部552は、ユーザが購入したポイントをユーザの購入済みポイントとしてポイント管理サーバ700に登録する。ユーザは予め必要なポイントの購入に必要な金額を有料プログラム部品の作成元に支払っており、支払い時に、ユーザと購入したポイントとを識別するためのシリアルコードを取得しているものとする。ポイント管理部552は、ユーザを識別する情報と、ユーザが購入したポイントとを対応付けて、ポイント記憶部512に格納する。なお、(1)ポイント登録では、CPUユニット100にポイントを書き込むことはできない。CPUユニット100に対するポイントの書き込みは、後述の(3)ポイント書き込みで行う。
ユーザは、エンジニアリングツール500を使用して、次のような手順でポイントを登録する。まず、ユーザは、図4に示すメニュー画面から、「ポイント管理画面へ」のボタンを押す。ユーザの操作に応答して、エンジニアリングツール500の演算部550は、図6Aに示すユーザ認証を行うためのログイン画面を表示部540に表示する。ユーザは、ログイン画面上でユーザ名とパスワードとを入力する。
入力されたユーザ名とパスワードとは、エンジニアリングツール500からポイント管理サーバ700に送信される。ポイント管理サーバ700は認証処理を行い、認証が成功した場合は、図6Bに示すポイント管理のメイン画面をエンジニアリングツール500の表示部540に表示する。ユーザ認証後は、ポイント管理サーバ700にアクセスした状態となり、エンジニアリングツール500とポイント管理サーバ700とは協働して下記の処理を行う。
ポイント登録のため、メイン画面上で、ユーザは「ポイント登録」のボタンを押す。ユーザの操作に応答して、エンジニアリングツール500の演算部550は図6Cに示すシリアルコード入力画面を表示部540に表示する。ユーザはシリアルコード入力画面上で、ポイントの購入時に取得したシリアルコードを入力し、「OK」ボタンを押す。ユーザの操作に応答して、演算部550は、シリアルコードから特定される契約者名と購入済みのポイントとを要求するため、入力されたシリアルコードとユーザを識別するユーザIDとを、サーバ用通信部560を介して、ポイント管理サーバ700に送信する。ポイント管理サーバ700の演算部730は、受信したシリアルコードから特定される契約者名と購入済みポイントとをエンジニアリングツール500に送信する。
エンジニアリングツール500の演算部550は、ポイント管理サーバ700から応答を受信すると、図6Dに示すようなポイント登録画面を表示部540に表示する。演算部550は、ポイント登録画面上において、ポイント管理サーバ700から受信した契約者名と購入済みポイントとを表示する。ユーザが、ポイント登録画面上で、「登録」ボタンを押したものとする。ユーザの操作に応答して、演算部550は、シリアルコードとユーザを識別するユーザIDとを、サーバ用通信部560を介してポイント管理サーバ700に送信する。ポイント管理サーバ700の演算部730は、受信したシリアルコードから特定される購入済みのポイントと、ユーザIDとを対応付けて、図3Bに示すポイント記憶部512に格納する。
(ポイント割り当て)
また、ポイント管理部552は、ユーザの指示に従って、CPUユニット100それぞれに保有ポイントを割り当てる。なお、(2)ポイント割り当てでは、CPUユニット100にポイントを書き込むことはできない。CPUユニット100に対するポイントの書き込みは、後述の(3)ポイント書き込みで行う。
ユーザが、ポイント登録を行った後、ポイント割り当て画面を開くため、図6Bに示すメイン画面で「ポイント割り当て」ボタンを押したものとする。ユーザの操作に応答して、エンジニアリングツール500の演算部550は、ユーザIDに対応付けられた購入済みのポイントを提示するようポイント管理サーバ700に要求する。ポイント管理サーバ700の演算部730は、ユーザIDに対応付けられた購入済みのポイントをポイント記憶部512から読み出し、読み出したポイントをエンジニアリングツール500に送信する。エンジニアリングツール500の演算部550は、図7Aに示すようなポイント割り当て画面を表示部540に表示する。演算部550は、ポイント割り当て画面上において、ポイント管理サーバ700から供給された購入済みのポイントと、PLC一覧として、記憶部510に格納されているCPUユニット100のシリアルナンバーの一覧を表示する。
例えば、図3Aに示す有料ライブラリファイル1に含まれる有料アプリケーション12のうち、CPUユニット100においてアプリケーション1001と、アプリケーション1002と、アプリケーション1003とを実行すると仮定する。この場合、これらのアプリケーションを実行するために必要な対価ポイントの合計は、図3Aに示す対価データ4に示すように、100ポイントと500ポイントと200ポイントとを合算した800ポイントとなる。この場合、ユーザは、少なくとも800ポイントを購入し、図7Aに示すポイント割り当て画面において、少なくとも800ポイントを当該CPUユニット100に割り当てる必要がある。ユーザが、各CPUユニット100に割り当てるポイントを入力し、「登録」ボタンを押したものとする。
ユーザが「登録」ボタンを押下すると、エンジニアリングツール500の演算部550は、各CPUユニット100を識別するシリアルナンバーと、入力されたポイントとを、ユーザIDに対応づけて登録するようポイント管理サーバ700に要求する。ポイント管理サーバ700の演算部730は、図3Bに示すポイント記憶部512に、CPUユニット100それぞれに割り当てられたポイントを格納する。
(ポイント書き込み)
ポイント管理部552は、ユーザが指定したCPUユニット100にポイントを書き込む。なお、CPUユニット100へのポイントの書き込みは、エンジニアリングツール500とポイントの書き込み対象のCPUユニット100とを通信ケーブル600で接続した状態で行う必要がある。
エンジニアリングツール500とポイントの書き込み対象のCPUユニット100とを通信ケーブル600で接続した状態で、ユーザがポイント書き込み画面を開くため、図6Bに示すメイン画面で「ポイント書き込み」ボタンを押したものとする。
ユーザの操作に応答して、エンジニアリングツール500の演算部550は、ユーザIDに対応付けられたCPUユニット毎の保有ポイントのデータをポイント管理サーバ700に要求する。ポイント管理サーバ700の演算部730は、ユーザIDに対応付けられたCPUユニット100毎のポイントのデータを図3Bに示すポイント管理テーブル5120から読み出し、読み出したデータをエンジニアリングツール500に送信する。
エンジニアリングツール500の演算部550は、ポイント管理サーバ700から応答を受信すると、図7Bに示すようなポイント書き込み画面を表示部540に表示する。演算部550は、ポイント書き込み画面上において、ポイント管理サーバ700から供給されたCPUユニット100毎の保有ポイントを表示する。ここで、ユーザが画面上でポイントの書き込み対象のCPUユニット100を有するPLC1000を選択し、「実行」ボタンを押下したものとする。ユーザの操作に応答して、エンジニアリングツール500の演算部550は、指定されたCPUユニット100の識別情報であるシリアルナンバーと、CPUユニット100に割り当てられたポイントと、を含む保有ポイント情報を暗号化し、暗号化したデータを図2Aの通信インタフェース521を介して、CPUユニット100に送信する。
CPUユニット100のポイント管理部154として機能する演算部150は、通信インタフェース161を介してエンジニアリングツール500から保有ポイント情報を受信すると、受信した保有ポイント情報をポイント記憶部112に格納する。
(ポイント確認)
ユーザがCPUユニット100に書き込まれたポイントを確認できるように、ポイント管理部552は、エンジニアリングツール500に接続されているCPUユニット100の保有ポイントをCPUユニット100から読み出す。なお、CPUユニット100のポイントの確認は、エンジニアリングツール500とポイントの書き込み対象のCPUユニット100とを通信ケーブル600で接続した状態で行う必要がある。
ユーザがエンジニアリングツール500とCPUユニット100とを通信ケーブル600で接続した状態で、図6Bに示すメイン画面から、「ポイント確認」ボタンを押したものとする。ユーザの操作に応答して、エンジニアリングツール500の演算部550は、通信インタフェース521を介して、CPUユニット100に、保有ポイント情報を要求するコマンドを送信する。
CPUユニット100の演算部150は、通信インタフェース161を介してエンジニアリングツール500から保有ポイント情報を要求するコマンドを受信すると、ポイント記憶部112に格納されている保有ポイント情報を、通信インタフェース161を介してエンジニアリングツール500に送信する。エンジニアリングツール500の演算部550は、通信インタフェース521を介して、CPUユニット100から保有ポイント情報を受信すると、受信した保有ポイント情報を復号し、復号したポイントとシリアルナンバーとを図7Cに示すようにポイント確認画面に表示する。
(ポイント削除)
ポイント管理部552は、ユーザから指示されると、エンジニアリングツール500に接続されているCPUユニット100に書き込まれた保有ポイントを削除する。なお、CPUユニット100のポイントの削除は、エンジニアリングツール500とポイントの書き込み対象のCPUユニット100とを通信ケーブル600で接続した状態で行う必要がある。
ユーザが、エンジニアリングツール500とCPUユニット100とを通信ケーブル600で接続した状態でポイント削除画面を開くため、図6Bに示すメイン画面から「ポイント削除」ボタンを押したものとする。
ユーザの操作に応答して、エンジニアリングツール500の演算部550は、通信インタフェース521を介して、CPUユニット100に、保有ポイント情報を要求するコマンドを送信し、CPUユニット100から、ポイント記憶部112に格納されている保有ポイント情報を取得する。エンジニアリングツール500の演算部550は、図8に示すようなポイント削除画面を表示部540に表示する。演算部550は、ポイント削除画面上において、ポイントとシリアルナンバーとを表示する。ポイントとシリアルナンバーは、ポイント記憶部112の保有ポイント情報を復号することにより得られる。
ポイント削除画面上でユーザが、「はい」ボタンを押下すると、エンジニアリングツール500の演算部550は、通信インタフェース521を介して、CPUユニット100にポイントの削除を指示するコマンドを送信する。
CPUユニット100の演算部150は、通信インタフェース161を介してエンジニアリングツール500からポイントの削除を指示するコマンドを受信すると、ポイント記憶部112に格納する保有ポイント情報を削除する。さらに、演算部150は、保有ポイント情報の削除完了の通知を通信インタフェース161を介してエンジニアリングツール500に送信する。
エンジニアリングツール500の演算部550は、通信インタフェース521を介してCPUユニット100から保有ポイント情報の削除完了の通知を受信すると、該当するCPUユニット100のシリアルナンバーとともに、ポイントを削除した通知をポイント管理サーバ700に送信する。
ポイント管理サーバ700の演算部730は、ポイントの削除の通知をエンジニアリングツール500から受信すると、図3Bに示すポイント記憶部512の対象のシリアルナンバーに割り当てられたポイントを削除する。演算部730は、例えば、対象のシリアルナンバーのポイントを“0”にしてもよい。以上が、ポイント管理部552が実現する機能である。
以下、ユーザプログラム32の実行に先だって、ユーザが行うべき手順を説明する。まず、ユーザは、ユーザプログラム32、必要な無料アプリケーション22を作成する必要がある。このため、ユーザは、図4に示すエンジニアリングツール500の「プログラムの作成」メニューでユーザプログラム32を作成する。作成されたユーザプログラム32は、図3Aに示すプログラム記憶部511に格納される。さらに、ユーザは、必要に応じて、エンジニアリングツール500で無料アプリケーション22を作成する。作成された無料アプリケーション22は、プログラム記憶部511に格納される。
ユーザプログラム32が有料アプリケーション12をコールする場合には、ユーザは有料アプリケーション12をダウンロードする必要がある。このため、ユーザは、図4に示すエンジニアリングツール500のメニュー画面から「有料アプリケーションのダウンロード」ボタンを押す。ユーザの操作に応答して、エンジニアリングツール500の演算部550は、有料アプリケーション12の提供サイトにアクセスし、図5に示すような有料アプリケーションのダウンロード画面を表示部540に表示する。ユーザが、所望する有料アプリケーション12を選択し、「ダウンロード」ボタンを押したものとする。ユーザの操作に応答して、演算部550は、有料アプリケーション12をダウンロードし、有料アプリケーション12をプログラム記憶部511に格納する。なお、ユーザは、ユーザプログラム32からコールされない有料アプリケーション12をエンジニアリングツール500にダウンロードしても構わない。
さらに、ユーザは、有料ライブラリファイル1、自作ライブラリファイル2、ユーザプログラムファイル3をCPUユニット100に書き込む必要がある。このため、ユーザは、図4に示すエンジニアリングツール500のメニュー画面から、「データ書き込み」ボタンを押す。ユーザの操作に応答して、エンジニアリングツール500の演算部550は、図9に示すデータ書き込み画面を表示部540に表示する。ユーザは、データ書き込み画面上で、有料ライブラリファイル1、自作ライブラリファイル2、ユーザプログラムファイル3のうち所望するファイルを選択し、「実行」ボタンを押す。
ユーザが「実行」ボタンを押下すると、ファイル操作部551として機能するエンジニアリングツール500の演算部550は、ユーザによって指定されたファイルを、通信インタフェース521を介してCPUユニット100に送信する。
図3Aに示す有料ライブラリファイル1が選択された場合、演算部550は、対価データ4から読み出した有料アプリケーション12の対価ポイントを含めたファイルヘッダ11を作成する。演算部550は、有料ライブラリファイル1に、ファイルヘッダ11を付加して、第1ライブラリファイル10を作成し、第1ライブラリファイル10をCPUユニット100に送信する。図2Aに示すようにファイル操作部151として機能するCPUユニット100の演算部150は、受信した第1ライブラリファイル10をプログラム記憶部111に格納する。
図3Aに示す自作ライブラリファイル2が選択された場合、演算部550は、自作ライブラリファイル2にファイルヘッダ21を付加した第2ライブラリファイル20を作成する。演算部550は、第2ライブラリファイル20をCPUユニット100に送信する。図2Aに示すようにファイル操作部151として機能するCPUユニット100の演算部150は、受信した第2ライブラリファイル20をプログラム記憶部111に格納する。
図3Aに示すユーザプログラムファイル3が選択された場合、演算部550は、ユーザプログラムファイル3に適宜のファイルヘッダ31を付加したユーザプログラムファイル30を作成する。演算部550は、ユーザプログラムファイル30をCPUユニット100に送信する。図2Aに示すようにファイル操作部151として機能するCPUユニット100の演算部150は、受信したユーザプログラムファイル30をプログラム記憶部111に格納する。
前述のように、CPUユニット100に登録されている保有ポイントと、ユーザプログラム32からコールされる有料アプリケーション12の対価ポイントの合計との関係で、CPUユニット100におけるユーザプログラム32の実行が制限される。このため、ユーザは、上述したように、エンジニアリングツール500を使用して、(1)ポイント登録、(2)ポイント割り当て、(3)ポイント書き込み、を行う必要がある。
以上が、CPUユニット100において、ユーザプログラム32の実行に先だってユーザが行うべき手順である。なお、上述の手順は一例であるため、一部の手順を省略、手順の入れ替えも可能である。
次に、演算部150が図2Aに示す実行可否判別部152として機能し、ユーザプログラム32からコールされる有料アプリケーション12を実行することができるか否かを判別する実行可否の判別に係る処理を説明する。実行可否の判別に係る処理は、CPUユニット100のイニシャル処理の一部として実行される。
このため、ユーザは、CPUユニット100の電源をオフした後、再度CPUユニット100の電源をオンする必要がある。電源の再投入により、CPUユニット100のファームウェアによるイニシャル処理を開始するためである。なお、プログラムの書き込みと、(1)ポイント登録、(2)ポイント割り当て、(3)ポイント書き込みについては既に行われているものとする。また、ポイント記憶部112には、800ポイントが予め登録されているものとする。また、実行可否フラグ113には、デフォルトの「実行不可」を示す値である“0”がセットされているものとする。
図10を参照しながらCPUユニット100のイニシャル処理を説明する。演算部150は、CPUユニット100の各種メモリを初期化する(ステップS1)。演算部150は、プログラム記憶部111に格納されているプログラムファイルをチェックする(ステップS2)。具体的には、演算部150は、第1ライブラリファイル10、第2ライブラリファイル20、ユーザプログラムファイル30のうち、プログラム記憶部111に格納されているファイルが破損していないかをチェックする。
演算部150は、ポイント記憶部112に保有ポイント情報が格納されているか否かを判別する(ステップS3)。ポイント記憶部112に保有ポイント情報が格納されていると判別すると(ステップS3;Yes)、演算部150は、保有ポイント情報を復号鍵で復号する(ステップS4)。
演算部150は、保有ポイントが有効であるか否かを判別する(ステップS5)。具体的には、演算部150は、復号した保有ポイント情報に含まれているシリアルナンバーと、CPUユニット100の記憶部110に格納されているシリアルナンバーとが一致する場合、保有ポイントが有効であると判別し(ステップS5;Yes)、ステップS6の処理を実行する。一方、演算部150は、復号した保有ポイント情報に含まれているシリアルナンバーと、CPUユニット100の記憶部110に格納されているシリアルナンバーとが一致しない場合、保有ポイントが無効であると判別し(ステップS5;No)、イニシャル処理を終了する。このとき、演算部150は保有ポイントについてのエラーを表示部140に表示するようにしてもよい。
また、ステップS3において、演算部150は、ポイント記憶部112に保有ポイント情報が格納されていないと判別すると(ステップS3;No)、ステップS4、S5の処理を実行せずに、ステップS6の処理を実行する。
演算部150は、有料のライブラリファイルである第1ライブラリファイル10が、プログラム記憶部111に格納されているか否かを判別する(ステップS6)。第1ライブラリファイル10がプログラム記憶部111に格納されている場合(ステップS6;Yes)、演算部150は、有料のライブラリファイルである第1ライブラリファイル10を復号する(ステップS7)。
演算部150は、ユーザプログラム32がコールする有料アプリケーション12の対価ポイントの合計を求める(ステップS8)。具体的には、演算部150は、図2Aのファイルヘッダ11から、ユーザプログラム32がコールする有料アプリケーション12の対価ポイントを読み出し、対価ポイントの合計を求める。例えば、ユーザプログラム32から、図2Aに示すアプリケーション1001と、アプリケーション1002と、アプリケーション1003とをコールしている場合、アプリケーション1001の対価ポイントは100ポイント、アプリケーション1002の対価ポイントは500ポイント、アプリケーション1003の対価ポイントは200ポイントであるので、対価ポイントの合計は、800ポイントである。
続いて、演算部150は、ステップS4で復号した保有ポイント情報に含まれている保有ポイントが、ステップS8で求めた有料アプリケーション12の対価ポイントの合計以上であるか否かを判別する(ステップS9)。演算部150は、保有ポイントが、対価ポイントの合計以上であると判別すると(ステップS9;Yes)、演算部150は、実行可否フラグ113に「実行可」を示す値である“1”をセットする(ステップS10)。例えば、保有ポイントが800ポイントであり、ユーザプログラム32がコールする有料アプリケーション12の対価ポイントの合計が800ポイントであるとすると、演算部150は、実行可否フラグ113に「実行可」を示す値である“1”をセットし、イニシャル処理を終了する。
一方、保有ポイントが、対価ポイントの合計未満であると判別すると(ステップS9;No)、演算部150は、実行可否フラグ113に「実行不可」を示す値である“0”をセットし(ステップS11)、イニシャル処理を終了する。例えば、保有ポイントが500ポイントであり、ユーザプログラム32がコールする有料アプリケーション12の対価ポイントの合計が800ポイントである場合には、演算部150は、保有ポイントが、対価ポイントの合計未満であると判別する。
また、演算部150は、ステップS5で、保有ポイントが有効でないと判別すると(ステップS5;Nо)、イニシャル処理を終了する。この場合も、実行可否フラグ113の値は変更されずデフォルトのままである。このとき、演算部150は、例えば、表示部140のインジケータランプを点灯してユーザにエラーを通知してもよい。
イニシャル処理が終了した後、演算部150は、ユーザプログラム32の各命令を順次処理する。実施の形態においては、演算部150は、図11に示すような手順でユーザプログラム32の各命令を処理することで、実行管理部153として機能する。
図11に示すように、演算部150は、CPUユニット100がRUN状態であるか否かを判別する(ステップS21)。演算部150は、CPUユニット100のRUNスイッチがオンになっている場合、CPUユニット100がRUN状態であると判別し(ステップS21;Yes)、ステップS22の処理を実行する。一方、RUNスイッチがオンになっていない場合、演算部150は、RUN状態でないと判別し(ステップS21;No)、プログラム実行処理を終了する。なお、RUNスイッチは、CPUユニット100のハードスイッチであり、ユーザが手動で操作する。
演算部150は、ステップS22でユーザプログラム32の次の命令を読み出す(ステップS22)。例えば、イニシャル処理の直後のユーザプログラム32の実行においては、ユーザプログラム32の一番初めの命令が読み出される。
演算部150は、ステップS22で読み出した命令が第1ライブラリファイル10の有料アプリケーション12をコールする命令であるか否かを判別する(ステップS23)。
読み出した命令が第1ライブラリファイル10の有料アプリケーション12をコールする命令であると判別すると(ステップS23;Yes)、演算部150は、実行可否フラグ113の値が「実行可」を示す値である“1”であるか否かを判別する(ステップS24)。
実行可否フラグ113の値が「実行可」を示す値である“1”であると判別すると(ステップS24;Yes)、演算部150は、ステップS22で読み出した命令で指定された有料アプリケーション12をコールする(ステップS25)。例えば、ステップS22で読み出した命令が、図2Aに示すアプリケーション1002をコールする命令であれば、演算部150は、アプリケーション1002をコールする。その後、演算部150は、ステップS26の処理を実行する。
ステップS24において、実行可否フラグ113の値が「実行可」を示す値である“1”でない、即ち、実行可否フラグ113の値が「実行不可」を示す値である“0”である場合(ステップS24;No)、演算部150は、ステップS22で読み出した命令で指定された有料アプリケーション12をコールせず、ステップS26の処理を実行する。
一方、ステップS23において、演算部150は、ステップS22で読み出した命令が有料アプリケーション12をコールする命令でないと判別すると(ステップS23;Nо)、当該命令を実行する(ステップS27)。例えば、読み出した命令が無料アプリケーション22をコールする命令である場合、演算部150は、無料アプリケーション22をコールする。その後、演算部150は、ステップS26の処理を実行する。
ステップS26において、演算部150は、次の命令がEND命令であるか否かを判別する(ステップS26)。演算部150は、読み出した命令がEND命令であると判別すると(ステップS26;Yes)、予め設定されたEND命令における処理を実行し、その後、再びステップS21からの処理を実行する。一方、ステップS26において、演算部150は、読み出した命令がEND命令でないと判別すると(ステップS26;No)、再びステップS22からの処理を実行する。
以上説明したように、CPUユニット100が、ユーザプログラム32からコールされる有料アプリケーション12の対価ポイントの合計以上の保有ポイントを有している場合、CPUユニット100は、有料アプリケーション12を実行することができる。一方、CPUユニット100が、ユーザプログラム32からコールされる有料アプリケーション12の対価ポイントの合計以上の保有ポイントを有していない場合、CPUユニット100は、いずれの有料アプリケーション12も実行できない。そのため、ユーザプログラム32の命令が有料アプリケーション12をコールする命令である場合、CPUユニット100は当該命令の実行をスキップする。
実施の形態に係る構成においては、アプリケーションの実行回数、実行期間に応じて、保有ポイントが減らない。よって、ユーザは、プログラマブルロジックコントローラの稼動中に、保有ポイントの残数を監視しなくてもよい。また、保有ポイントが減らないため、ユーザは残数不足によりポイントを追加購入する必要がない。このように、選択したプログラム部品だけを使用できるにもかかわらず、ユーザにとって煩雑な作業を行う必要がなく、利便性が高い。また、ユーザは、購入した保有ポイントの範囲内であれば、有料アプリケーション12を継続して実行することができる。このように、期間経過によって有料アプリケーション12の実行ができなくなることがない。
保有ポイントが、有料アプリケーション12の対価ポイントの合計より少ない場合であっても、ユーザプログラム32において有料アプリケーション12のコール命令を実行しないだけであり、CPUユニット100のユーザプログラム32の実行が中断されることはない。
さらに、保有ポイントの範囲内の対価ポイントの有料アプリケーション12については、CPUユニット100は無期限に有料アプリケーション12を実行することができる。前述のように、実施の形態では、有料アプリケーション12はファイル単位でCPUユニット100に書き込まれている。ユーザプログラム32が修正され、コールされる有料アプリケーション12の組み合わせが変更されても、コールされる有料アプリケーション12の対価ポイントの合計が保有ポイントを超えない場合は、CPUユニット100は、有料アプリケーション12を実行することができる。この場合、ユーザはポイントを追加購入する必要がない。なお、有料アプリケーション12の実行可否の判別に係る処理はイニシャル処理の一部として実行されるため、ユーザプログラム32を修正した後、イニシャル処理を再度実行する必要がある。
また、ユーザプログラム32の修正、置き換え等に伴い、保有ポイントが不足することになった場合には、ユーザは、必要なポイントを追加購入し、CPUユニット100に登録すればよい。
なお、実施の形態においては、CPUユニット100において、ユーザプログラム32の実行の開始に先だってユーザが行うべき手順に、保有ポイントをCPUユニット100に書き込むことを述べたが、保有ポイントをCPUユニット100に一旦書き込んでしまえば、保有ポイントを変更、削除する必要がない間は、ポイントの書き込みの手順は不要である。
また、エンジニアリングツール500は、CPUユニット100のポイント記憶部512からCPUユニット100に割り当てられた保有ポイントを読み出し、ユーザプログラム32内でコールされる有料アプリケーション12の対価ポイントの合計と保有ポイントとの差を、表示部540に表示するようにしてもよい。よって、ユーザは、有料アプリケーション12がコールされたか否かを知ることができ、ポイントの追加購入、ユーザプログラム32の修正等を行って、調整を行うことができる。
実施の形態においては、ポイント記憶部112が保持する保有ポイントが、ユーザプログラム32がコールしている有料アプリケーション12の対価ポイントの合計以上である場合に、有料アプリケーション12の実行が許可され、そうでない場合には、有料アプリケーション12の実行が一切認められない例を説明した。しかしながら、有料アプリケーション12の実行制限の構成は、これに限られない。
(変形例1)
あるいは、図3Aの対価データ4には、各有料アプリケーション12の優先度を示す情報が付加されていてもよい。図12に優先度を示す情報が付加された対価データ4aに格納されるデータの例を示す。この場合、実行可否判別部152は、実行可否の判別に係る処理において、保有ポイントで認められる範囲で、対価データ4aに格納された有料アプリケーション12について、優先度の順で実行が可能であるか否かを判別する。例えば、図12に示すように優先度が定義されており、保有ポイントが700ポイントであるとする。この場合、実行可否判別部152は、保有ポイントの範囲内で、優先度に従って、アプリケーション1002及び1003を実行することが可能であると判別する。実行可否判別部152は、アプリケーション1001、アプリケーション1004、及びアプリケーション1005を実行することができないと判別する。
あるいは、保有ポイントが800ポイントであるとする。この場合、実行可否判別部152は、保有ポイントの範囲内で、優先順位に従って、アプリケーション1001〜1003を実行することが可能であり、アプリケーション1004及び1005を実行することができないと判別する。さらに、実行可否判別部152は、実行可否を示す情報を、図13に示すような実行可否データ113aに格納してもよい。図13では、保有ポイントが800ポイントである場合に、実行可否データ113aに格納された情報を示す。図13では、アプリケーション1001〜1003を実行することが可能であることを示す情報が実行可否データ113aに格納されている。実行管理部153は、実行可否データ113aに格納された実行可否を示す情報に基づいて、有料アプリケーション12を実行するか否かの制御を行う。この場合、図2Aに示す実行可否フラグ113は不要である。
(変形例2)
また、あるいは、有料アプリケーション12にそれぞれ対価ポイントを設定するのではなく、アプリケーションをカテゴリで分別し、保有ポイント数に応じて、決められたカテゴリの有料アプリケーション12を実行できるよう制御してもよい。図14に、有料アプリケーション12とカテゴリとの対応付けを示すデータを格納したカテゴリテーブル4bの例を示す。この場合、図3Aに示す対価データ4は不要である。
例えば、保有ポイントが500ポイント以上であることが、カテゴリ1の有料アプリケーション12の実行が許可される条件であるとする。保有ポイントが800ポイント以上であることが、カテゴリ1及びカテゴリ2の有料アプリケーション12の実行が許可される条件であるとする。保有ポイントを1200ポイント以上であることが、カテゴリ1〜3の有料アプリケーション12、即ち、全ての有料アプリケーション12の実行が許可される条件であるとする。これらの条件を示すデータは、記憶部110に予め記憶されているものとする。ここで、保有ポイントが900ポイントであると仮定する。この場合、実行可否判別部152は、実行可否の判別に係る処理において、カテゴリ1及びカテゴリ2の有料アプリケーション12の実行が可能であると判別する。図14に示すカテゴリから、アプリケーション1002〜1005の実行が可能である。実行可否判別部152は、実行可否を示す情報を、図15に示すような実行可否データ113bに格納する。実行管理部153は、実行可否データ113bに格納された実行可否を示す情報に基づいて、有料アプリケーション12を実行するか否かの制御を行う。この場合、図2Aに示す実行可否フラグ113は不要である。
実施の形態においては、PLC1000が1つのCPUユニット100を含む例を説明したが、PLC1000は、2以上のCPUユニット100を含んでいてもよい。このような場合であっても、図3Bに示すように、CPUユニット100のシリアルナンバーに保有ポイントを割り当てているため問題ない。
また、CPUユニット100は、1台の情報処理装置上で動作する2以上の仮想マシン上で動作するものであってもよい。例えば、複数のCPUユニット100の内の1つが、ホストマシン上で動作し、他のCPUユニットが仮想マシン上で動作する。この場合、ポイント記憶部512は、それぞれのCPUユニット100を識別する情報に、それぞれのCPUユニット100の保有ポイントを対応付けたデータを記憶すればよい。
また、実施の形態では、プログラム、プログラム部品をファイル単位でCPUユニット100に書き込む例を説明した。しかしながらこれに限られない。例えば、ファイル操作部551が、ユーザプログラム32を解析し、ユーザプログラム32でコールされている有料アプリケーション12だけをCPUユニット100に書き込むようにしてもよい。この場合、記憶部110の使用容量を無駄に増やすことがない。
実施の形態においては、図1に示す演算部150は、MPUを有する例を説明したが、演算部150は、MPUに加え、特定用途向け集積回路であるASIC(Application Specific Integrated Circuit)を有していてもよい。演算部150は、さらにFPGA(Field Programmable Gate Array)を有していてもよい。
上述したように演算部150を実行可否判別部152として機能させるためのプログラムと、演算部150を実行管理部153として機能させるプログラムとを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。