(57)【要約】  プログラマブルコントローラにおいて、プログラムの実行周期を積算し、積算により得られた積算値が所定の固定時間値を超過すると計数し、該計数値に基づき前記プログラムの累積実行時間を求め、該累積実行時間が予め設定された評価期間を超過することにより前記プログラムの実行を阻止するアプリケーション管理手段を有する。
2013128603.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行周期を積算し、積算により得られた積算値が所定の固定時間値を超過すると計数し、該計数値に基づき前記プログラムの累積実行時間を求め、該累積実行時間が予め設定された評価期間を超過することにより前記プログラムの実行を阻止するアプリケーション管理手段を有することを特徴とするプログラマブルコントローラ。
【請求項２】
前記アプリケーション管理手段は、
前記積算値が前記固定時間を超過する毎に所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって前記累積実行時間を算出することを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記データ領域は、第１のデータ領域と第２のデータ領域で構成され、
前記アプリケーション管理手段は、
前記フラグを書込む際、前記第１のデータ領域からフラグを書き込み始め、当該第１のデータ領域の全領域に対してフラグを書き込み終えると所定の通知を行い、以降は前記第２のデータ領域にフラグを書き込み、前記第１のデータ領域に書き込まれたフラグ数と前記第２のデータ領域に書き込まれたフラグ数との総フラグ数によって前記累積実行時間を算出することを特徴とする請求項２に記載のプログラマブルコントローラ。
【請求項４】
プログラムの実行周期を積算し、積算により得られた積算値が所定の固定時間値を超過する毎に、所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって累積実行時間を算出し、該累積実行時間が予め設定された評価期間を超過した後、所定の猶予期間を待って前記プログラムの実行を阻止するアプリケーション管理手段を有し、
前記データ領域は第１のデータ領域と第２のデータ領域で構成され、
前記アプリケーション管理手段は、前記フラグを書込む際、前記評価期間に対応する前記第１のデータ領域からフラグを書き込み始め、当該第１のデータ領域の全領域に対してフラグを書き込み終えると前記評価期間満了を示す所定の通知を行い、以降は前記猶予期間に対応する前記第２のデータ領域にフラグを書き込み、前記第２のデータ領域に書き込まれたフラグ数のみによって算出される累積時間が前記猶予時間を超過することにより、プログラムの実行を阻止することを特徴とするプログラマブルコントローラ。
【請求項５】
前記プログラマブルコントローラは、ＭＡＣアドレスを含む通信手段と、
外部からＭＡＣアドレスを含んだコマンド受信し、該受信したコマンドに含まれるＭＡＣアドレスと前記通信手段に含まれた前記ＭＡＣアドレスとを比較し、両ＭＡＣドレスが同一である場合に前記コマンドを実行し、該実行により当該プログラマブルコントローラのモード情報を書き換え、前記累積実行時間が前記評価期間を超過しても前記アプリケーション管理手段に前記プログラムの実行を継続させるシステム管理手段とを更に有することを特徴とする請求項１乃至４の何れか１項に記載のプログラマブルコントローラ。
【請求項６】
前記プログラムの実行を阻止するに先立ち、前記プログラムの実行の停止を通知する通知手段を更に有することを特徴とする請求項１乃至５の何れか１項に記載のプログラマブルコントローラ。
【請求項７】
前記プログラマブルコントローラは、リング状のデータ交換バスに接続され、該データ交換バスに接続される複数のノードと周期的にデータ交換し、
前記プログラムは、前記データ交換の周期に同期して起動されることを特徴とする請求項１乃至６の何れか１項に記載のプログラマブルコントローラ。
【請求項８】
プログラムを実行する１又は複数のプログラマブルコントローラと、データの入出力を行う１又は複数のＩ／Ｏモジュールとがデータ交換バスを介して所定の周期でデータ交換を行い、前記プログラマブルコントローラが前記Ｉ／Ｏモジュールを介して当該Ｉ／Ｏモジュールに接続された外部機器を制御するプログラマブルコントローラシステムにおいて、
前記プログラマブルコントローラは、前記データ交換の前記所定の周期に同期して実行されるプログラムの実行周期を積算し、積算により得られた積算値が予め設定された閾値を超過すると、前記プログラムの実行を阻止するアプリケーション管理手段を有することを特徴とするプログラマブルコントローラシステム。
【請求項９】
前記アプリケーション管理手段は、
前記プログラムの実行回数が、設定された固定回数を超過する毎に所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって前記積算値を算出することを特徴とする請求項８に記載のプログラマブルコントローラシステム。
【請求項１０】
前記データ領域は、第１のデータ領域と第２のデータ領域で構成され、
前記アプリケーション管理手段は、
前記フラグを書込む際、前記第１のデータ領域からフラグを書き込み始め、当該第１のデータ領域の全領域に対してフラグを書き込み終えると所定の通知を行い、以降は前記第２のデータ領域にフラグを書き込み、当該第２のデータ領域に書き込まれたフラグ数と前記第１のデータ領域に書き込まれたフラグ数の総フラグ数によって前記積算値を算出することを特徴とする請求項９に記載のプログラマブルコントローラシステム。
【請求項１１】
前記プログラマブルコントローラは、ＭＡＣアドレスを含む通信手段を更に有し、
外部からＭＡＣアドレスを含んだコマンド受信し、この受信したコマンドに含まれるＭＡＣアドレスと前記通信手段に含まれた前記ＭＡＣアドレスとを比較し、両ＭＡＣドレスが同一である場合に前記コマンドを実行し、このコマンドの実行により当該プログラマブルコントローラのモード情報を書き換え、前記積算値が前記閾値を超過しても前記アプリケーション管理手段に前記プログラムの実行を継続させるシステム管理手段を更に有することを特徴とする請求項８乃至１０の何れか１項に記載のプログラマブルコントローラシステム。
【請求項１２】
前記プログラムの実行を阻止するに先立ち、前記プログラムの実行の停止を通知する通知手段を更に有することを特徴とする請求項８乃至１１の何れか１項に記載のプログラマブルコントローラシステム。
【請求項１３】
プログラムを実行するプログラマブルコントローラと、該プログラマブルコントローラに前記プログラムの実行を指示する利用者端末と、前記プログラマブルコントローラを提供した提供者端末とがネットワーク上に接続された前記プログラマブルコントローラの提供システムであって、
前記プログラマブルコントローラは、前記プログラムの実行周期を積算し、積算により得られた積算値が所定の固定時間値を超過すると計数し、該計数値に基づき前記プログラムの累積実行時間を求め、該累積実行時間が予め設定された評価期間を超過することにより前記プログラムの実行を阻止するアプリケーション管理手段を有することを特徴とする提供システム。
【請求項１４】
前記アプリケーション管理手段は、
前記積算値が前記固定時間を超過する毎に所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって前記累積実行時間を算出することを特徴とする請求項１３に記載の提供システム。
【請求項１５】
前記データ領域は、第１のデータ領域と第２のデータ領域で構成され、
前記アプリケーション管理手段は、
前記フラグを書込む際、前記第１のデータ領域からフラグを書き込み始め、当該第１のデータ領域の全領域に対してフラグを書き込み終えると所定の通知を行い、以降は前記第２のデータ領域にフラグを書き込み、前記第１のデータ領域に書き込まれたフラグ数と前記第２のデータ領域に書き込まれたフラグ数との総フラグ数によって前記累積実行時間を算出することを特徴とする請求項１４に記載の提供システム。
【請求項１６】
プログラムを実行するプログラマブルコントローラと、該プログラマブルコントローラに前記プログラムの実行を指示する利用者端末と、前記プログラマブルコントローラを提供した提供者端末とがネットワーク上に接続された前記プログラマブルコントローラの提供システムであって、
前記プログラマブルコントローラは、プログラムの実行周期を積算し、積算により得られた積算値が所定の固定時間値を超過する毎に、所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって累積実行時間を算出し、該累積実行時間が予め設定された評価期間を超過した後、所定の猶予期間を待って前記プログラムの実行を阻止するアプリケーション管理手段を有し、
前記データ領域は第１のデータ領域と第２のデータ領域で構成され、
前記アプリケーション管理手段は、前記フラグを書込む際、前記評価期間に対応する前記第１のデータ領域からフラグを書き込み始め、当該第１のデータ領域の全領域に対してフラグを書き込み終えると前記評価期間満了を示す所定の通知を行い、以降は前記猶予期間に対応する前記第２のデータ領域にフラグを書き込み、前記第２のデータ領域に書き込まれたフラグ数のみによって算出される累積時間が前記猶予時間を超過することにより、プログラムの実行を阻止することを特徴とする提供システム。
【請求項１７】
前記プログラマブルコントローラは、ＭＡＣアドレスを含む通信手段と、
外部からＭＡＣアドレスを含んだコマンド受信し、該受信したコマンドに含まれるＭＡＣアドレスと前記通信手段に含まれた前記ＭＡＣアドレスとを比較し、両ＭＡＣドレスが同一である場合に前記コマンドを実行し、該実行により当該プログラマブルコントローラのモード情報を書き換え、前記累積実行時間が前記評価期間を超過しても前記アプリケーション管理手段に前記プログラムの実行を継続させるシステム管理手段とを更に有することを特徴とする請求項１３乃至１６の何れか１項に記載の提供システム。
【請求項１８】
前記プログラムの実行を阻止するに先立ち、前記プログラムの実行の停止を通知する通知手段を更に有することを特徴とする請求項１３乃至１７の何れか１項に記載の提供システム。
【請求項１９】
前記プログラマブルコントローラは、リング状のデータ交換バスに接続され、該データ交換バスに接続される複数のノードと周期的にデータ交換し、
前記プログラムは、前記データ交換の周期に同期して起動されることを特徴とする請求項１３乃至１８の何れか１項に記載の提供システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部機器を制御するプログラマブルコントローラ、プログラマブルコントローラシステム、及びプログラマブルコントローラの提供システムに関する。
【背景技術】
【０００２】
プログラマブルコントローラは、所定のアプリケーションを実行して外部機器等を制御するものである。そのアプリケーションは、プログラミング装置を使って予め利用者によってプログラミングされ、プログラマブルコントローラにダウンロードされる。プログラマブルコントローラは、様々なメーカから商品化されているが、コントローラの性能やアプリケーション開発ツールの使い易さ等はメーカ毎に異なるため、実際に使用してみて採用を判断したいという要望がある。【０００３】
このような要望に応えるため、コントローラメーカは、プログラマブルコントローラを利用者に評価させる目的で、プログラマブルコントローラの実機やアプリケーション開発ツールを評価機（体験版）として提供することがある。このような場合、利用者は、評価機を評価し、その評価結果に基づいて正規に購入することとなる。【０００４】
しかしながら、提供される評価機は、正規品との区別がなく、特に使用制約を設けていない。よって利用者の中には、評価機を用いてシステムを構築し、構築したシステムをそのままエンド利用者に納めてしまい、コントローラメーカが売上を回収できないという問題がある。そのため、従来では、例えば評価開始時期と現在日時との比較によりプログラマブルコントローラ（評価機）の評価期間の把握を行い、期間満了後にプログラマブルコントローラを起動しない措置を取っている。また、従来では、デモ評価ソフトウェアの実行時間使用量を監視し、経過した実行時間が所定の評価時間を超えた時点で、利用者からの登録があるまでデモ評価ソフトウェアを実行不能にする手法が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１００８５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来の評価開始時期と現在日時との比較により評価期間を把握する手法では、プログラマブルコントローラの電源オフ時に、バッテリのバックアップ等を行っていないとカレンダＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）の動作が停止して、正確な日時がわからなくなる。そのため、上述の手法では、評価期間が正確に把握できないという問題がある。【０００７】
また、プログラマブルコントローラは、対話型アプリケーションを搭載するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）と異なり、システムを立ち上げた後は連続運転が求められる。例えば、プログラマブルコントローラを所定の生産ラインに適用した場合には、２４時間若しくはそれ以上の連続運転を行うことも珍しくない。そのため、従来手法のように、評価期間満了により直ちにプログラマブルコントローラを停止させた場合には、予期せぬ事故等を誘発する可能性がある。【０００８】
本発明は、上記の点に鑑みてなされたものであり、評価期間等に対するプログラマブルコントローラの使用を適切に制御するプログラマブルコントローラ、プログラマブルコントローラシステム、及びプログラマブルコントローラの提供システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明は、プログラマブルコントローラにおいて、プログラムの実行周期を積算し、積算により得られた積算値が所定の固定時間値を超過すると計数し、該計数値に基づき前記プログラムの累積実行時間を求める。また、本発明は、求めた累積実行時間が予め設定された評価期間を超過することにより前記プログラムの実行を阻止するアプリケーション管理手段を有する。【００１０】
なお、本発明の構成要素、表現又は構成要素の任意の組み合わせを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造等に適用したものも本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、プログラマブルコントローラの使用を適切に制御することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態における提供システムの概略構成の一例を示す図である。
【図２】本実施形態におけるＰＬＣの機能構成の一例を示す図である。
【図３】本実施形態におけるＰＬＣのハードウェア構成の一例を示す図である。
【図４】利用者端末の機能構成の一例を示す図である。
【図５】提供者端末の機能構成の一例を示す図である。
【図６】本実施形態における利用者端末及び提供者端末のハードウェア構成の一例を示す図である。
【図７】ＰＬＣにおけるプログラムの実行周期例を説明するための図である。
【図８】評価期間の判定及び実行制御の第１実施例を説明するためのフローチャートである。
【図９】評価期間の判定及び実行制御の第２実施例を説明するためのフローチャートである。
【図１０】図９に対応するフラグ書き込みの一例を示す図である。
【図１１】評価期間の判定及び実行制御の第３実施例を説明するためのフローチャートである。
【図１２】図１１に対応するフラグ書き込みの一例を示す図である。
【図１３】第３実施例に対する通知処理の一例を示すフローチャートである。
【図１４】利用者端末における処理手順の一例を示すフローチャートである。
【図１５】提供者端末における処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
＜本発明について＞
本発明は、例えばプログラマブルコントローラの使用に関し、例えばプログラムの実行周期を積算し、積算により得られた積算値が所定の固定時間値を超過すると計数し、該計数値に基づきプログラムの累積実行時間を求め、該累積実行時間が予め設定された評価期間を超過することによりプログラムの実行を阻止する。なお、コントローラで実行されるアプリケーション（プログラム）の実行時間の積算情報は、例えばメモリ（記憶手段）等に蓄えていくことで、カレンダＩＣ等による時刻記録の課題を解決する。
【００１４】
また、本発明は、積算値が固定時間を超過する毎に所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって上述した累積実行時間を算出してもよい。また、本発明は、評価期間満了後は、適切なタイミングでプログラマブルコントローラの起動を行わないように制御する。例えば、上述したフラグ数の判定により、プログラムを評価期間の満了期間以上実行した場合には、次回のプログラムの実行を阻止する。
【００１５】
なお、本発明では、実行積算時間が閾値を超過した場合に、例えばプログラマブルコントローラ本体に設けられた発光部や音声出力部を用いて利用者に評価期間満了を通知してもよい。なお、発光部としては、例えばＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）等があるが、これに限定されるものではなく、その他の発光素子であってもよい。また、音声出力部としては、例えばスピーカ等があるが、これに限定されるものではない。また、上述した発光部や音声出力部は、プログラマブルコントローラ内に一体に設けられていてもよい。また、発光部や音声出力部は、評価コントローラとは別体に設けられ、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子やスピーカ端子等の出力端子等により接続されていてもよい。
【００１６】
また、本発明では、実行積算時間がタイムアップした場合に、プログラマブルコントローラと接続された利用者端末上の支援ツールに評価期間満了を通知してもよい。例えば、アプリケーションに対するメモリ領域に設けられたＲＡＳ情報通知領域等に対して、評価期間満了を通知して利用者に知らせることができる。なお、ＲＡＳ情報とは、コンピュータシステムの信頼性（Ｒｅｌｉａｂｉｌｉｔｙ）、可用性（Ａｖａｉｌａｂｉｌｉｔｙ）、保守性（Ｓｅｒｖｉｃｅａｂｉｌｉｔｙ）を表す情報である。なお、上述した評価期間満了の通知の際には、対象モジュール（対象機器）であるプログラマブルコントローラが軽故障であるとして通知を行ってもよい。
【００１７】
以下に、本発明におけるプログラマブルコントローラ、プログラマブルコントローラシステム、及び提供システムを好適に実施した形態について、図面を用いて説明する。なお、以下の説明では、プログラマブルコントローラの一例としてＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）を用いることとするが、本発明においてはこれに限定されるものではない。
【００１８】
＜プログラマブルコントローラの提供システムの概略構成例＞
図１は、本実施形態におけるプログラマブルコントローラの提供システムの概略構成の一例を示す図である。図１に示す提供システム１０は、ＰＬＣ１１−１〜１１−３（以下、必要に応じて「ＰＬＣ１１」と総称する）と、利用者端末１２と、入出力モジュール１３−１〜１３−ｎ（以下、必要に応じて「Ｉ／Ｏモジュール１３」と総称する）とを有する。ここで、図１に示す提供システム１０では、一例として３台のＰＬＣ１１−１〜１１−３と、複数台のＩ／Ｏモジュール１３−１〜１３−ｎとを有するが、本発明における台数については上記の内容に限定されるものではない。
【００１９】
利用者端末１２と、ＰＬＣ１１−１とは、例えば通信ケーブル１４等により接続されており、ＰＬＣ１１−１〜１１−３と、Ｉ／Ｏモジュール１３−１〜１３−ｎとは、それぞれ制御用のネットワーク１５により接続されている。
【００２０】
更に、図１に示す提供システム１０は、ＰＬＣ１１を提供した提供者端末１６を有し、利用者端末１２と提供者端末１６とは、例えばインターネット等に代表される通信ネットワーク１７によりデータの送受信が可能な状態で接続されている。なお、１又は複数のＰＬＣ１１（図１の例では、ＰＬＣ１１−１〜１１−３）と、１又は複数のＩ／Ｏモジュール１３（図１の例では、Ｉ／Ｏモジュール１３−１〜１３−ｎ）とは、プログラマブルコントローラシステム１８として機能する。また、複数のＰＬＣ１１及び複数のＩ／Ｏモジュール１３は、それぞれが１つのノード（局）として位置付けることができる。
【００２１】
ＰＬＣ１１は、各種の支援ツールを搭載した利用者端末１２からの指示に基づいて、対象機器であるＩ／Ｏモジュール１３等を用いて所定の処理を実行したり、実行結果の解析、制御等を行うプログラマブルコントローラである。つまり、ＰＬＣ１１は、利用者端末１２における支援対象の機器である。なお、ＰＬＣ１１は、例えばアプリケーション演算等を行うＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）モジュール等が用いられるがこれに限定されるものではない。
【００２２】
ここで、本実施形態では、ＣＰＵモジュール等からなる各ＰＬＣ１１−１〜１１−３は、所定の周期で例えばリング状のネットワーク１５等を介して各Ｉ／Ｏモジュール１３−１〜１３−ｎとのデータ交換を行う。このとき、各ＰＬＣ１１−１〜１１−３や各Ｉ／Ｏモジュール１３−１〜１３−ｎは、例えばネットワーク通信サイクル（例えば、１ｍｓ毎）に同期してアプリケーション等を起動する。
【００２３】
つまり、制御用のネットワーク１５のトポロジは、プログラマブルコントローラシステム１８内のＰＬＣ１１−１〜１１−３や各Ｉ／Ｏモジュール１３−１〜１３−ｎがデイジーチェーン接続されたリング型である。ＰＬＣ１１は、所定の周期でこのリング型トポロジにデータフレームを周回させることで各Ｉ／Ｏモジュール１３−１〜１３−ｎ間のデータ交換を行っている。
【００２４】
例えば、上述したプログラマブルコントローラシステム１８において、ＰＬＣ１１−１が送信したデータフレームは、ＰＬＣ１１−２→ＰＬＣ１１−３→Ｉ／Ｏモジュール１３−１→Ｉ／Ｏモジュール１３−２→Ｉ／Ｏモジュール１３−ｎへとバケツリレーのように送受信され順次伝達される。そして、Ｉ／Ｏモジュール１３−ｎに伝達されたデータフレームは、折り返され、上記と逆のルートを辿ってＰＬＣ１１−１に戻る。このようにネットワーク１５を一巡して戻ったデータフレームは、その源の送信元（この場合は、ＰＬＣ１１−１）で削除される。このようにして、リング上のＰＬＣ１１は、データの送受信を行い、Ｉ／Ｏモジュール１３がその送受信データに基づき所定のデータ処理を行う。
【００２５】
なお、ＰＬＣ１１は、ネットワーク１５を用いて入出力データのみならず、他のＰＬＣ間のアプリケーションデータの交換や、システム起動・停止・リセット等のシステム全体の制御のため、メッセージのやり取りを行う。これらのデータをリング上で伝送することで、システムとしてタイミングの同期を計りつつ、データの更新を行っている。
【００２６】
また、本実施形態では、ＰＬＣ１１を評価用（サンプル品）として利用者に与えた場合の評価期間（サンプル期間）の満了を出力するために、ネットワーク通信サイクルに同期して起動されるアプリケーションの稼働時間を積算する。具体的には、例えば上述したリング状のネットワーク１５を周回するデータの交換周期に同期して実行されるアプリケーションの稼働時間（プログラムの実行周期）を積算して評価期間を判定する。
【００２７】
これにより、上述したデータ交換周期に同期して実行されるプログラムの実行周期に対応させて、ネットワーク１５上の各ＰＬＣ１１の評価期間を適切に監視することができる。なお、本実施形態におけるプログラムの実行周期の取得方法は、これに限定されるものではない。
【００２８】
また、本実施形態では、積算した時間が所定の時間を超過したら評価期間の満了として、例えば利用者に通知してプログラムの実行を阻止する等の処理を行う。
【００２９】
つまり、本実施形態では、予め設定されたＰＬＣ１１を停止させる条件に基づいて、ＰＬＣ１１が使用できるか否かを判断し、使用できなくなった場合に、例えばプログラムの実行を阻止する制御を行うことで、なお、本実施形態においては、これに限定されるものではなく、例えば電源ＯＮ／ＯＦＦ、リセット、停止／起動等の制御によりＰＬＣ１１の使用を制御してもよい。また、本実施形態において、提供システム１０が運転中である場合には、ＰＬＣ１１が使用できなくなった場合に、故障情報等を表示して利用者に何らかの対応を促すインタフェースをＰＬＣ１１に設けてもよい。
【００３０】
ここで、利用者端末１２は、内部にＰＬＣ１１の実行等を支援する支援ツールが格納されている。利用者端末１２は、利用者の指示により、予め設定された支援ツールを実行し、ＰＬＣ１１等に対して所定の処理を実行させる。なお、上述した支援ツールは、各ＰＬＣ１１−１〜１１−３に対応した支援ツールを提供者端末１６から通信ネットワーク１７を通じて取得してもよい。
【００３１】
ここで、利用者端末１２は、一般的な汎用のコンピュータを用いることができる。また、利用者端末１２は、ＰＬＣ１１から予め設定された評価期間を経過した旨の通知を受けた場合に、その旨のメッセージを画面に表示させて利用者に通知する処理を行うことができる。また、利用者端末１２は、ＰＬＣ１１に対して正規に購入する場合や、レンタルする場合には、提供者端末１６にその旨の通知やＰＬＣ１１の識別情報（例えば、ＭＡＣアドレス）等を送信する。また、利用者端末１２は、提供者端末１６から情報を取得する際に暗号化が必要な場合には、予め設定されている利用者端末１２の鍵情報を提供者端末１６に送信する。
【００３２】
また、利用者端末１２は、提供者端末１６から正規購入用のコマンド情報やレンタル用のコマンド情報等を取得し、取得した各コマンド情報を対象のＰＬＣ１１に対して実行することで、評価期間経過後もそのまま継続してＰＬＣ１１を使用することができる。なお、利用者端末１２が提供者端末１６から取得される各コマンド情報等は、上述した鍵情報に基づいて暗号化されていることが好ましい。上述したように、コマンドを暗号化して送信するのは、送信したデータが盗難されて他のＰＬＣ１１に流用されるのを防止するためであり、データの内容自体を秘匿するためでもある。
【００３３】
利用者端末１２は、提供者端末１６により得られる暗号化されたコマンド情報を自らの鍵情報により復号し、得られたコマンドを所定のＰＬＣ１１に実行させることにより、ＰＬＣ１１を購入して正規版として使用したり、所定時間のレンタル使用をすることが可能となる。なお、上述したコマンドは、ＰＬＣ１１−１〜１１−３毎に固有のコマンドであることが好ましい。ＰＬＣ１１毎に固有のコマンドとすることで、個々の機器に対する制御を行うことができる。なお、固有のコマンドは、例えばＭＡＣアドレス等のＰＬＣ１１の識別情報を含むコマンドを用いることができる。これにより、上述したネットワーク１５上を巡回するコマンドを取得した各ＰＬＣ１１は、自分のＭＡＣアドレスと、コマンド内のＭＡＣアドレスとを比較し、同一である場合にコマンドを実行する。これにより、ＰＬＣ１１の評価版から正規版又はレンタル版へのモード情報の変更（書き換え等）を個別に行うことができる。
【００３４】
なお、上述したコマンドは、ＰＬＣ１１−１〜１１−３のうち、複数のＰＬＣに対応する共有のコマンドであってもよい。これにより、複数の機器に対して１つのコマンドで効率的に制御することができる。
【００３５】
Ｉ／Ｏモジュール１３は、他のモジュール等とデータの入出力処理を行う。例えば、Ｉ／Ｏモジュール１３は、ＰＬＣ１１からの指示に基づいて、例えば接続機器等から得られるデータ等をＰＬＣ１１に出力（送信）したり、ＰＬＣ１１により処理された結果を、接続機器等に出力したり、記憶したりする。
【００３６】
提供者端末１６は、通信ネットワークを通じて利用者端末１２から取得した情報に基づいて、対象のＰＬＣ１１が使用可能となるように、それぞれのＰＬＣ１１毎に使用を許可する固有のコマンドを生成する。なお、利用者端末１２から取得する情報としては、例えばＰＬＣ１１を正規に購入するか又はレンタル使用するかの要求通知や対象のＰＬＣ１１の識別情報（例えば、ＭＡＣアドレス）等である。また、暗号化が必要な場合には、予め設定されている利用者端末１２の鍵情報を取得する。
【００３７】
なお、提供者端末１６は、生成されたコマンドを、利用者端末１２から得られた鍵情報に基づいて暗号化を行い、暗号化された情報を、通信ネットワーク１７を介して利用者端末１２に送信することができる。
【００３８】
なお、上述した提供システム１０において、利用者端末１２と提供者端末１６とは、通信ネットワーク１７等で接続されていなくてもよい。そのような場合に、利用者端末１２は、例えばＰＬＣ１１の購入要求や鍵情報を郵送等で提供者端末１６に送付する。また、利用者端末１２は、提供者端末１６からＰＬＣ１１の使用を許可する固有のコマンドを含む暗号化情報等が記録された記録媒体（例えば、ＣＤ−ＲＯＭ）等を郵送で受け取り、記録媒体の情報を読み取ることで目的の情報を取得する。
【００３９】
＜ＰＬＣ１１における機能構成例＞
次に、本実施形態におけるＰＬＣ１１の機能構成例について、図を用いて説明する。図２は、本実施形態におけるＰＬＣの機能構成の一例を示す図である。図２に示すＰＬＣ１１は、通信インタフェース手段２１と、コマンド提供手段２２と、ストレージ管理手段２３と、アプリケーション管理手段２４と、システム管理手段２５と、スイッチ（ＳＷ）監視手段２６と、カレンダＩＣ（日時取得手段）２７と、入出力（Ｉ／Ｏ）制御手段２８と、通知手段２９とを有する。
【００４０】
通信インタフェース手段２１は、通信ケーブル１４に接続された利用者端末１２や、他のＰＬＣ１１、Ｉ／Ｏモジュール１３、Ｉ／Ｏモジュール１３に接続された外部機器等とのデータの送受信を行うための通信手段である。なお、通信インタフェース手段２１には、例えばＭＡＣアドレス等の識別情報を含んでいる。また、通信インタフェース手段２１は、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）等のシリアルインタフェースや、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ケーブル等と接続可能なインタフェース等を備えるが、本発明においては、これに限定されるものではない。
【００４１】
コマンド提供手段２２は、例えばローダコマンドサーバとしての機能を有する。具体的には、コマンド提供手段２２は、ＰＬＣ１１やＩ／Ｏモジュール１３との間でデータのやり取りや、予め設定された処理を実行させるためのコマンドをアプリケーション管理手段２４から取得する。また、コマンド提供手段２２は、所定の外部装置に対してローダに関するコマンドを出力する。
【００４２】
なお、本実施形態において、ローダとは、例えばプログラムを外部記憶装置からコンピュータの記憶領域に読み込むために使用される記憶領域内に常駐するプログラム等を意味するが、これに限定されるものではない。また、本実施形態において、コマンドとは、例えば上述したローダに対して所定の実行や制御を与えるためのコマンド等を意味するが、これに限定されるものではない。また、各コマンドは、例えば上述した利用者端末１２から取得してもよく、またアプリケーション管理手段２４やシステム管理手段２５により取得することができる。
【００４３】
ストレージ管理手段２３は、自分のＭＡＣアドレス等のＰＬＣ１１の識別情報やＰＬＣ１１内で動作された内容、出力結果等を記憶するための記憶手段である。また、ストレージ管理手段２３は、評価期間の判定等を行うための領域を有し、その領域に対して、例えばプログラムの実行周期の積算値等を格納する。
【００４４】
また、ストレージ管理手段２３は、例えば、フラッシュメモリやＳＤカード（登録商標）等のような不揮発の書換え可能メモリ（記憶手段）と接続して所定の情報を記憶させ、必要に応じて読み出せるようにしてもよい。ストレージ管理手段２３は、取得した情報をアプリケーション管理手段２４やシステム管理手段２５等に出力したり、アプリケーション管理手段２４やシステム管理手段２５等から得られた情報を記憶する。
【００４５】
アプリケーション管理手段２４は、本実施形態におけるＰＬＣ１１の使用期間等を管理し、利用者に適切な使用を行わせるためのアプリケーション（プログラム）等を管理する。具体的には、アプリケーション管理手段２４は、例えばプログラムの実行周期を積算し、積算により得られた積算値がＰＬＣ１１の評価期間が予め設定された閾値を超えた場合に、アプリケーション（プログラム）の実行を阻止することで、ＰＬＣ１１の使用を停止する。
【００４６】
その場合、アプリケーション管理手段２４は、最初にプログラムの実行周期を積算し、積算により得られた積算値が所定の固定時間値を超過すると計数し、該計数値に基づきプログラムの累積実行時間を求める。次に、アプリケーション管理手段２４は、該累積実行時間が予め設定された評価期間を超過することによりプログラムの実行を阻止することで、ＰＬＣ１１の使用を停止する。
【００４７】
また、アプリケーション管理手段２４は、例えば上述した積算値が、上述した固定時間を超過する毎に所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって累積実行時間を算出してもよい。その場合、アプリケーション管理手段２４は、プログラムの実行回数が、設定された固定回数を超過する毎に所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって積算値を算出してもよい。
【００４８】
なお、フラグを書き込む具体例については後述する。また、アプリケーション管理手段２４は、上述したフラグ数の判定により、プログラムを評価期間の満了期間以上実行した場合に、次回のプログラムの実行を阻止する。
【００４９】
システム管理手段２５は、ＰＬＣ１１全体のシステム動作を管理する。具体的には、システム管理手段２５は、ＳＷ監視手段２６からのスイッチ情報に基づいて、使用時間の計測等を行う。なお、このときの時間情報は、例えばカレンダＩＣ２７から取得することができる。また、システム管理手段２５は、計測された実使用時間と予め設定された使用時間とを比較し、実使用時間が、予め設定された使用時間を超えた場合には、プログラムの実行を阻止するに先立ち、光や音声等で周囲にいる利用者等に対して通知を行う。なお、通知等は、アプリケーション管理手段２４に通知用のコマンドを発生させることで、通知手段２９により所定の通知（例えば、アラーム出力等）を行わせることができる。
【００５０】
また、システム管理手段２５は、利用者端末１２から取得した正規購入用又はレンタル用の所定のコマンドを実行する。これにより、システム管理手段２５は、例えばストレージ管理手段２３内に記憶された評価用コントローラとしての各種設定情報を書き換えて、評価期間の満了後もＰＬＣ１１の継続使用を実現することができる。なお、システム管理手段２５は、例えば外部から得られる固有のコマンドに含まれるＭＡＣアドレスと自分のＭＡＣアドレスとを比較し、同一である場合にコマンドを実行することができるが、これに限定されるものではない。
【００５１】
ＳＷ管理手段２６は、例えば、ＰＬＣ１１自体に設けられた各スイッチ（例えば、電源スイッチやキースイッチ（ＫｅｙＳＷ）、局番スイッチ（ＳＷ）等）から利用者により選択されたスイッチに対する信号をシステム管理手段２５に出力する。
【００５２】
カレンダＩＣ２７は、日時情報を取得し、取得した日時情報（例えば、日付、時間だけでなく、例えば曜日等も含む）をシステム管理手段２５に出力する。なお、カレンダＩＣ２７は、例えばＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）等を用いることができるが、これに限定されるものではない。
【００５３】
Ｉ／Ｏ制御手段２８は、ＰＬＣ１１やＩ／Ｏモジュール１３等の外部装置との間で、制御データやメッセージデータ等の送受信を制御する。また、Ｉ／Ｏ制御手段２８は、取得した各データをアプリケーション管理手段２４やシステム管理手段２５に出力する。
【００５４】
通知手段２９は、例えばＬＥＤ等の発光部やスピーカ等の音声出力部等を有し、外部への通知が必要な場合に、アプリケーション管理手段２４からの指示により、外部への通知を行う。なお、通知手段２９は、ＰＬＣ１１の内部に設けられていてもよく、外部に設けられていてもよい。
【００５５】
＜ＰＬＣ１１におけるハードウェア構成例＞
次に、本実施形態におけるＰＬＣ１１のハードウェア構成例について、図を用いて説明する。図３は、本実施形態におけるＰＬＣのハードウェア構成の一例を示す図である。図３に示すＰＬＣ１１のハードウェア構成は、ＣＰＵ３１と、ドライバ／レシーバ（ネットワーク接続装置）３２と、バスコントローラ３３と、フラッシュ（ＦＬＡＳＨ）メモリ３４と、プログラムメモリ３５と、データメモリ３６と、ＲＴＣ３７と、スイッチ３８と、ＬＥＤ３９と、スピーカ４０と、電池４１と、電源４２と、リセット回路４３とを有する。なお、ＣＰＵ３１、ドライバ／レシーバ３２、バスコントローラ３３、フラッシュメモリ３４、プログラムメモリ３５、データメモリ３６、ＲＴＣ３７、スイッチ３８、ＬＥＤ３９、及びスピーカ４０は、システムバスＢ等により接続されている。
【００５６】
ＣＰＵ３１は、ＰＬＣ１１全体の制御を行う。具体的には、ＣＰＵ３１は、予め設定された支援ツール等に対応するシステムプログラム及びユーザプログラム等を実行する。なお、プログラムの実行は、例えば上述したリング状のネットワーク１５を周回するデータの交換周期に同期して実行される。その一例を説明するが、ＰＬＣ１１−１は、例えば１ｍｓ毎にデータフレームをネットワーク１５に送出し周回させている。Ｉ／Ｏモジュール１３は、周回しているデータフレームを受信すると、自Ｉ／Ｏ情報をデータフレームに付加した上で再びネットワーク１５にデータフレームを送信している。このようにして本発明のプログラマブルコントローラを接続するネットワークは、データフレームをバケツリレーのように伝達している。ＰＬＣ１１−１は、ネットワーク１５を一巡したデータフレームを受信してＩ／Ｏモジュール１３からＩ／Ｏ情報を取得し、自身に搭載されたプログラム（アプリケーションプログラム）にＩ／Ｏ情報を与えて制御の演算を実行している。
【００５７】
また、本実施形態では、上述したシステムプログラム及びユーザプログラムを電源断時も保存しておくために、例えば不揮発の書換え可能メモリであるフラッシュメモリ３４に等に記憶しておくことができる。
【００５８】
また、ＣＰＵ３１には、ドライバ／レシーバ３２が接続されている。ドライバ／レシーバ３２は、支援ツールを有する利用者端末１２から得られる利用者の指示を伝えるための機器である。なお、ドライバ／レシーバ３２は、例えばシリアルバスやネットワーク、イーサネット（登録商標）等を介して利用者端末１２が有する支援ツール等を取得する。また、ドライバ／レシーバ３２は、例えばＵＳＢやＳＤカード等の記録媒体を介して、上述した記録媒体に記録された支援ツール等を取得することができる。この場合、ドライバ／レシーバ３２は、取得した支援ツール等をＣＰＵ３１に出力する。
【００５９】
バスコントローラ３３は、ＰＬＣ１１の制御対象であるＩ／Ｏモジュール１３へのデータ交換を行う。具体的には、バスコントローラ３３は、評価対象機器である所定のＩ／Ｏモジュール１３に対して処理の指示を行い、その処理結果から、処理速度や処理精度等の結果を取得する。なお、バスコントローラ３３は、例えばネットワークＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等を用いることができるがこれに限定されるものではない。
【００６０】
フラッシュメモリ３４は、ＣＰＵ３１による制御に基づいてシステムプログラム及びユーザプログラム（例えば、ＰＬＣ１１の提供プログラム等）を記憶する。なお、フラッシュメモリ３４は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に比べて読み出し／書き込み速度が低速である。そのため、ＰＬＣ１１は、フラッシュメモリ３４に格納されたユーザプログラム（及びシステムプログラム等）を実行する場合には、速度の速いプログラムメモリ３５に展開して実行する。また、本実施形態では、ユーザプログラム及びシステムプログラムが読み出し／書き込みするメモリとしてデータメモリ３６を有する。つまり、プログラムメモリ３５及びデータメモリ３６は、共にＳＲＡＭ等からなる。
【００６１】
ここで、プログラムメモリ３５、及びデータメモリ３６は、別々のメモリとして表現されているが物理的に一つのメモリでもよく、またより高速なアプリケーション実行を行うためプログラムメモリを、例えばＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の高速なデバイスを用いて実現してもよい。なお、メモリは、例えばデータの消去・書き込みを自由に行うことができ、電源を切っても内容が消えない半導体メモリ等を用いることができるが、これに限定されるものではない。
【００６２】
また、本実施形態では、コントローラであるＰＬＣ１１のユーザプログラム実行や異常発生時の記録のため、上述したようにカレンダＩＣ２７が実装されている。このカレンダＩＣ２７は、ＲＴＣ３７により日時等の正確なデータを取得することができる。
【００６３】
また、本実施形態では、スイッチ３８等の操作装置を有し、利用者がＰＬＣ１１に対して直接電源のＯＮ／ＯＦＦ、再起動等の操作を行うことができる。また、本実施形態では、上述したようにＬＥＤ３９やスピーカ４０等の利用者への通知手段２９を有する。ＬＥＤ３９は、光により利用者に所定の使用時間が経過したことや、ＰＬＣ１１が所定の使用時間を超えたために使用できない旨を通知する。また、スピーカ４０は音により利用者に所定の使用時間が経過したことや、ＰＬＣ１１が所定の使用時間を超えたために使用できない旨等を通知する。
【００６４】
ここで、上述したデータメモリ３６及びＲＴＣ３７は、それぞれ電池４１−１，４１−２等を用いてバックアップされていることもある。なお、電池４１−１，４１−２は、同一の電池であってもよく別々の電池であってもよい。なお、通常は、電源４２からの電源供給によりＰＬＣ１１を稼動させる。また、本実施形態では、リセット回路４３により、ＰＬＣ１１の使用時間等をリセットさせることができる。これにより、ＰＬＣ１１の購入時に、所定の使用時間を超えてもそのまま使用させることができる。
【００６５】
＜利用者端末１２における機能構成例＞
次に、上述した利用者端末１２における機能構成例について図を用いて説明する。図４は、利用者端末の機能構成の一例を示す図である。図４に示す利用者端末１２は、入力手段５１と、出力手段５２と、記憶手段５３と、ＰＬＣ（コントローラ）実行手段５４と、通知手段５５と、購入手段５６よ、画面生成手段５７と、送受信手段５８と、制御手段５９とを有する。
【００６６】
入力手段５１は、利用者等からの各ＰＬＣ１１への所定のプログラムの実行指示や、通知指示、購入指示、画面生成指示、送受信指示等の各種指示の開始／終了等の入力を受け付ける。なお、入力手段５１は、例えばキーボードやマウス等のポインティングデバイスからなる。更に、入力手段５１は、音声等を入力する音声入力機能があってもよい。
【００６７】
出力手段５２は、入力手段５１により入力された内容や、入力内容に基づいて実行された結果や経過等を出力する。なお、出力手段５２は、例えばディスプレイやスピーカ等からなる。
【００６８】
記憶手段５３は、本実施形態において必要となる各種情報（例えば、ＰＬＣ１１に所定の実行をさせる支援ツールやシステムプログラム、ユーザプログラム、ＰＬＣ１１の識別情報、鍵情報、各種設定情報等）を記憶する。また、記憶手段５３は、必要に応じて記憶されている各種データを読み出すことができる。
【００６９】
ＰＬＣ実行手段５４は、記憶手段５３等に記憶された支援ツール等に基づいて、ＰＬＣ１１に対して所定の処理（プログラム等）を実行させる。このとき、ＰＬＣ実行手段５４は、ＰＬＣ１１−１〜１１−３毎に対して個別に所定の処理を実行させてもよく、複数のＰＬＣに対して所定の処理を実行させてもよい。なお、ＰＬＣ実行手段５４は、必要に応じて最新の支援ツールを、通信ネットワーク１７を介して提供者端末１６から取得することができる。
【００７０】
通知手段５５は、ＰＬＣ１１から予め設定された評価期間が満了した等の場合に、出力手段５２により利用者に対して所定の通知（例えば、アラーム出力等）を行う。なお、通知手段５５による通知内容は、ＰＬＣ１１から得られる通知内容に基づいて、画面生成手段５７により所定の画面を生成して表示させてもよく、光や音声等により通知してもよい。
【００７１】
購入手段５６は、利用者が評価用のＰＬＣ１１を実際に購入する場合に、提供者端末１６と通信ネットワーク１７を介して接続して所定の購入手続を行う。また、購入手段５６は、所定の購入手続として買い取りによる購入だけでなく、ＰＬＣ１１の所定期間のレンタル使用の手続を行うことができる。
【００７２】
なお、所定の購入手続とは、例えば提供者端末１６に対して、ＰＬＣ１１を購入するか、レンタルするか、購入しないかの何れかを示す通知情報を送信する。また、本実施形態では、ＰＬＣ１１の識別情報（例えば、ＭＡＣアドレス）も提供者端末１６に送信する。また、本実施形態では、例えば購入時又はレンタル時において、ＰＬＣ１１の評価期間経過後も継続して使用できるようにするための所定の情報（例えば、コマンド情報等）を取得する際に暗号化を行うため、予め設定された自分の鍵情報を提供者端末１６に送信してもよい。
【００７３】
また、購入手段５６は、通信ネットワーク１７を介して提供者端末１６から取得した情報が暗号化されていた場合に、予め設定された鍵情報対応する復号化処理を行う。また、購入手段５６は、復号化処理により得られる提供者端末１６から得られる情報に基づいて、ＰＬＣ実行手段５４により所定のＰＬＣ１１に対して正規使用又はレンタル使用の動作を行う処理を実行させる。
【００７４】
画面生成手段５７は、利用者が通信ケーブル１４等に接続された各ＰＬＣ１１に対してどのような処理をさせるかといった支援ツールの設定画面を生成する。また、画面生成手段５７は、ＰＬＣ１１からの評価期間満了を通知する通知情報を表示するための画面を生成する。また、画面生成手段５７は、評価期間があとどのくらい残っているかといった画面等を生成することもできる。
【００７５】
送受信手段５８は、通信ケーブル１４や通信ネットワーク１７を用いて接続可能な外部装置から各種情報（例えば、支援ツール（各種プログラム等）やコマンド情報、各種設定情報、所定の処理の実行結果等）を取得するためのインタフェースである。また、送受信手段５８は、例えば通知手段５５により得られる通知情報やＰＬＣ１１の実行結果等の各種情報を外部装置に送信することもできる。
【００７６】
制御手段５９は、利用者端末１２の各構成部全体の制御を行う。具体的には、制御手段５９は、例えば利用者等による入力手段５１からの指示等に基づいて、ＰＬＣ１１に対する所定処理の実行や、ＰＬＣ１１の購入処理等の各処理における制御等を行う。
【００７７】
＜提供者端末１６の機能構成例＞
次に、上述した提供者端末１６における機能構成例について図を用いて説明する。図５は、提供者端末の機能構成の一例を示す図である。図５に示す提供者端末１６利用者端末１２は、入力手段６１と、出力手段６２と、記憶手段６３と、ＰＬＣ（コントローラ）管理手段６４と、鍵取得手段６５と、コマンド生成手段６６と、暗号化手段６７と、送受信手段６８と、制御手段６９とを有する。
【００７８】
入力手段６１は、提供者等からのＰＬＣ管理指示、鍵取得指示、コマンド生成指示、暗号化指示、送受信指示等の各種指示の開始／終了等の入力を受け付ける。なお、入力手段６１は、例えばキーボードやマウス等のポインティングデバイスからなる。更に、入力手段６１は、音声等を入力する音声入力機能があってもよい。
【００７９】
出力手段６２は、入力手段６１により入力された内容や、入力内容に基づいて実行された結果や経過等を出力する。なお、出力手段６２は、例えばディスプレイやスピーカ等からなる。
【００８０】
記憶手段６３は、本実施形態において必要となる各種情報（例えば、利用者端末１２に送信し、ＰＬＣ１１に所定の実行をさせる支援ツールやシステムプログラム、ユーザプログラム、各種設定情報等）を記憶する。また、記憶手段５３は、必要に応じて記憶されている各種データを読み出すことができる。
【００８１】
ＰＬＣ管理手段６４は、利用者端末１２毎に、評価版として提供しているＰＬＣ１１の識別情報や台数、購入履歴等を管理する。なお、購入履歴としては、例えば購入した場合や現在レンタル中である場合を分けて管理できる履歴情報を含むが、これに限定されるものではない。
【００８２】
鍵取得手段６５は、利用者端末１２から少なくとも１台のＰＬＣ１１の購入時やレンタル使用時に、現在使用しているＰＬＣ１１を評価期間満了後も継続して使用するためのコマンド情報を暗号化するための鍵情報を取得する。なお、鍵情報は、ＰＬＣ１２の購入時やレンタル使用時に利用者端末１２から送信されるが、送信されなかった場合に、鍵情報取得手段６５から利用者端末１２に対して鍵情報を要求することもできる。
【００８３】
コマンド生成手段６６は、利用者端末１２から得られる購入（正規版）要求又はレンタル要求に基づいて対応するコマンドを生成する。なお、コマンドとは、例えば、ＰＬＣ１１に対して正規版として評価期間満了後も継続して無期限で使用可能にするコマンドや、評価期間満了後、レンタル版として更に所定期間だけ継続して使用可能にするコマンドを含む。
【００８４】
なお、コマンド生成手段６６は、生成するコマンドにＰＬＣ１１の識別情報を含める。識別情報としては、ＭＡＣアドレス等を用いることができるが、これに限定されるものではない。この識別情報は、例えば利用者端末１２から送信される。
【００８５】
暗号化手段６７は、コマンド生成手段６６で生成されたコマンドの送信時に、上述した鍵取得手段６５により取得された鍵情報に基づいて暗号化を行う。コマンドを暗号化することで、送信したデータが盗難されても他のＰＬＣ１１に流用されるのを防止することができる。なお、本実施形態では、例えば利用者端末１２と、提供者端末１６とが専用回線で通信される場合には、コマンドを暗号化せずに利用者端末１２に送信してもよい。したがって、そのような場合には、鍵取得手段６５や暗号化手段６７の機能は必要ない。
【００８６】
送受信手段６８は、通信ネットワーク１７を介して接続可能な１又は複数の利用者端末１２から各種情報（例えば、購入要求等）を取得するためのインタフェースである。また、送受信手段６８は、例えばコマンド生成手段６６により生成されたコマンドを、通信ネットワーク１７を介して利用者端末１２に送信する。また、送受信手段６８は、通信ネットワーク１７に接続された外部装置等から必要な各種情報を取得したり、送信したりすることができる。
【００８７】
制御手段６９は、提供者端末１６の各構成部全体の制御を行う。具体的には、制御手段６９は、例えば提供者等による入力手段６１からの指示等に基づいて、ＰＬＣ１１の管理や利用者端末１２に対するコマンド発行等の各処理における制御等を行う。
【００８８】
＜利用者端末１２、提供者端末１６におけるハードウェア構成例＞
次に、利用者端末１２、提供者端末１６におけるハードウェア構成例について図を用いて説明する。図６は、本実施形態における利用者端末及び提供者端末のハードウェア構成の一例を示す図である。
【００８９】
図６における利用者端末１２、提供者端末１６には、入力装置７１と、出力装置７２と、ドライブ装置７３と、補助記憶装置７４と、メモリ装置７５と、各種制御を行うＣＰＵ７６と、ネットワーク接続装置７７とを有するよう構成されており、これらはシステムバスＢで相互に接続されている。
【００９０】
入力装置７１は、ユーザ等が操作するキーボード及びマウス等のポインティングデバイスを有しており、ユーザ等からのプログラムの実行等、各種操作信号を入力する。
【００９１】
出力装置７２は、本発明における処理を行うためのコンピュータ本体を操作するのに必要な各種ウィンドウやデータ等を表示するディスプレイを有し、ＣＰＵ７６が有する制御プログラムによりプログラムの実行経過や結果等を表示することができる。
【００９２】
ここで、本発明においてコンピュータ本体にインストールされる実行プログラムは、例えばＵＳＢメモリやＣＤ−ＲＯＭ等の可搬型の記録媒体７８等により提供される。プログラムを記録した記録媒体７８は、ドライブ装置７３にセット可能であり、記録媒体７８に含まれる実行プログラムが、記録媒体７８からドライブ装置７３を介して補助記憶装置７４にインストールされる。
【００９３】
補助記憶装置７４は、ハードディスク等のストレージ手段であり、本発明における実行プログラムやコンピュータに設けられた制御プログラム等を記憶し、必要に応じて入出力を行うことができる。
【００９４】
メモリ装置７５は、ＣＰＵ７６により補助記憶装置７４から読み出された実行プログラム等を格納する。なお、メモリ装置７５は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等からなる。
【００９５】
ＣＰＵ７６は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等の制御プログラム、及びメモリ装置７５に格納されている実行プログラムに基づいて、各種演算や各ハードウェア構成部とのデータの入出力等、コンピュータ全体の処理を制御して、本実施形態における各処理を実現することができる。なお、プログラムの実行中に必要な各種情報等は、補助記憶装置７４から取得することができ、また実行結果等を格納することもできる。
【００９６】
ネットワーク接続装置７７は、通信ネットワーク等と接続することにより、実行プログラムを通信ネットワークに接続されている他の端末等から取得したり、プログラムを実行することで得られた実行結果又は本発明における実行プログラム自体を他の端末等に提供することができる。
【００９７】
＜Ｉ／Ｏモジュール１３とのデータ交換とユーザアプリケーションの実行手順の関係＞
次に、Ｉ／Ｏモジュール１３とのデータ交換とユーザアプリケーション（プログラム）の実行手順の関係について、図を用いて説明する。図７は、ＰＬＣにおけるプログラムの実行周期例を説明するための図である。
【００９８】
本実施形態において、図７の例に示すユーザアプリケーションは、例えばＩ／Ｏモジュール１３からのデータを取り込み、演算を実行した後、Ｉ／Ｏモジュール１３に演算結果のデータを送ることで一連の演算処理を完了する。図７の説明において、上述した一連の処理を行う期間を「スキャン」と称する。
【００９９】
図７に示すように、スキャンとスキャンの間の期間８１は、コントローラの管理（例えば、異常監視やシステム制御処理）を行っている。以下の説明において、この期間８１は、「スキャンエンド処理期間」という。
【０１００】
コントローラであるＰＬＣ１１は、スキャン開始までに入力データをアプリケーションに提供するため、まず入力データ８２を読み込み、読み込んだ入力データ８２をアプリケーションの入力データ領域にコピーする（図７に示す入力データ８２から入力データ８３への処理）。
【０１０１】
また、図７の例では、前回の出力データ８４を書き出す（図７に示す出力データ８４から出力データ８５への処理）。ここで、入力データ読み込みから次の入力データ読み込みまで、或いは、アプリケーション実行の入力から次アプリケーション実行の入力までの期間８６は、利用者によって定義される数値でありスキャン周期と呼ばれる。コントローラであるＰＬＣ１１は、このスキャン周期に基づいて、所定の演算処理や入出力データ処理（図７に示すユーザプログラム処理期間８７）を行う。また、バス処理では、演算処理としてメッセージ伝送８８等の処理を行う。
【０１０２】
なお、上述した一連の処理は、図７に示すように一定サイクルで実行され、このサイクルは、例えば上述したリング状のネットワーク１５を周回するデータの交換周期に同期して実行される。
【０１０３】
ここで、本実施形態では、コントローラであるＰＬＣ１１の評価用としての提供にあたり、評価期間の判定をアプリケーション実行の積算時間で行うことにする。なお、評価期間の判定には、例えば上述したカレンダＩＣ２７を用いた日付による判定も可能である。しかしながら、例えば利用者が実機評価を行わず（コントローラの電源を入れず）にいた場合に評価期間が短くなることや、評価機を貸し出す毎に評価完了日付を設定する必要があること、更にはバッテリを装着せずに運用する可能性があること等から好ましい方法とはいえない。
【０１０４】
そこで、本実施形態では、評価用コントローラとして使用するＰＬＣ１１に対し、スキャンエンド処理期間８１においてコントローラ管理処理の中でアプリケーションの実行中を判断する。具体的には、本実施形態は、例えばＣＰＵ３１の制御により、プログラムの実行周期を積算し、積算により得られた積算値が予め設定された閾値を超過した場合にプログラムの実行を阻止することで、ＰＬＣ１１の使用を停止する。なお、積算値等は、上述したフラッシュメモリ３４等に記憶して管理される。
【０１０５】
＜ＰＬＣ１１における評価期間の判定及び実行制御例＞
ここで、上述したＰＬＣ１１における評価期間の判定及び実行制御例について具体的に説明する。
【０１０６】
＜第１実施例＞
図８は、評価期間の判定及び実行制御の第１実施例を説明するためのフローチャートである。
【０１０７】
図８の例において、第１実施例では、まず上述したスキャン時間を積算時間に加算する（Ｓ０１）。このように、上述したスキャン時間を基準に積算することで、例えば上述したリング状のネットワーク１５を周回するデータの交換周期に同期して実行されるプログラムの実行周期を積算することができる。
【０１０８】
また、第１実施例では、Ｓ０１により積算された積算時間（積算値）が予め設定された閾値以上であるか否かを判断する（Ｓ０２）。なお、閾値としては、例えば５〜１０時間、１〜２週間、１〜３ヶ月等の時間を設定することができ、この設定は、例えばＰＬＣ１１を提供する提供者側が設定することができる。また、第１実施例の場合には、この閾値が上述した評価期間となる。ここで、第１実施例では、積算時間が閾値以上である場合（Ｓ０２において、ＹＥＳ）、予め設定された通知手段により利用者等に通知を行い（Ｓ０３）、その後、プログラムの実行を阻止する（Ｓ０４）。また、第１実施例では、Ｓ０２の処理において、積算時間が閾値以上でない場合（Ｓ０２において、ＮＯ）、Ｓ０１に戻りプログラムの実行を行うことができる。なお、積算時間は、プログラムの実行周期に対応させて上述したフラッシュメモリ３４等に記憶しておくことで管理することができる。
【０１０９】
これにより、評価期間の満了に対して適切なタイミングでＰＬＣ１１を停止させることができる。なお、図８に示す処理は、例えば上述したアプリケーション管理手段２４等により行われる。
【０１１０】
通常、ＰＬＣ１１は、電源ＯＮ／ＯＦＦ、リセット、或いは利用者端末１２等から得られる支援ツールからのアプリケーション起動指示等によりアプリケーションを実行する。その場合に、第１実施例では、ＰＬＣ１１によるプログラムの実行時に、上述したフラッシュメモリ３４上の積算時間をチェックし、評価期間に対応する閾値を超過している場合にアプリケーションの実行を行わないようにする。
【０１１１】
上述した第１実施例では、例えば１又は複数のＰＬＣ１１と、１又は複数のＩ／Ｏモジュール１３とがデータ交換バスを介して所定の周期でデータ交換を行い、ＰＬＣ１１がＩ／Ｏモジュール１３を介して当該Ｉ／Ｏモジュールに接続された外部機器を制御するプログラマブルコントローラシステム１８で適用することができる。この場合、ＰＬＣ１１は、上述したデータ交換の所定の周期に同期して実行されるプログラムの実行周期を積算し、積算により得られた積算値が予め設定された閾値を超過すると、プログラムの実行を阻止する。これにより、第１実施例では、利用者によるプログラマブルコントローラの不正使用を防止することができる。
【０１１２】
＜第２実施例＞
次に、第２実施例について説明する。第２実施例では、プログラムの実行周期に基づき、複数回のプログラムの実行に対する時間（固定時間）を設定する。例えば、プログラムの実行周期が１００ｍｓであれば、固定時間として１分を設定する。そして、第２実施例では、プログラムの実行周期を積算し、積算された積算時間（積算値）が固定時間を超過すると計数し、この計数値に基づきプログラムの累積実行時間を求める。また、第２実施例では、この累積実行時間が予め設定された評価期間を超過することによりプログラムの実行を阻止する。
【０１１３】
なお、第２実施例では、例えば、上述した積算時間が固定時間を超過する毎に、メモリ等の記憶手段に予め設けられた所定のデータ領域にフラグを書き込み、該書き込まれたフラグ数によって上述した累積実行時間を算出してもよい。なお、第２実施例では、例えばプログラムの実行が１分経過する毎に１つのフラグの書き込みが行われる。つまり、フラグのセットは、上述した積算時間が上述した固定時間を超過した回数を意味する。また、第２実施例では、データ領域にセットされたフラグ数によって得られる累積実行時間と、上述した評価期間に対応する閾値とに基づいて評価時間の判定を行い、実行制御を行う。
【０１１４】
ここで、図９は、評価期間の判定及び実行制御の第２実施例を説明するためのフローチャートである。また、図１０は、図９に対応するフラグ書き込みの一例を示す図である。
【０１１５】
ここで、図１０の例では、フラグを書込む不揮発メモリ領域としてフラッシュメモリ３４を用いているが、これに限定されるものではない。図１０に示すフラッシュメモリ３４は、全領域の一部に評価中ビット９１、閾値９２、判定領域９３の各情報を記憶する領域を含んでいる。評価中ビット９１には、正規版、評価版、レンタル版等のモード情報をそれぞれ識別する識別フラグを含んでいる。なお、図１０の例では、正規版を「０」、評価版を「１」、レンタル版を「２」として分類しているが、分類内容についてはこれに限定されるものではない。
【０１１６】
また、閾値９２は、評価期間に対応する閾値が設定される。なお、閾値９２は、ＰＬＣ１１の提供者側が設定することができるが、これに限定されるものではなく、例えば初期状態として所定の時間（例えば、１０時間等）が設定されていてもよい。
【０１１７】
また、判定領域９３は、上述したフラグの書き込み領域を示しており、閾値９２の時間と上述した固定時間とに応じた領域が設定される。図１０の例において、初期状態では、全ビットに「１」が設定され、閾値９２で設定された単位時間毎に１ビットずつ「０」に書き込みが行われる。例えば、上述した固定時間を１分とした場合には、１分＝１ビットであり、１ケ月＝３０日＝７２０時間＝４３２００分である。したがって、そのときに使用されるデータ量は、約５４００ｂｙｔｅ（約６Ｋｂｙｔｅ弱）の情報の格納領域を設定する。
【０１１８】
なお、図９の例では、評価中ビット９１の所定領域に、評価版である旨の情報が含まれているＰＬＣ１１に対する処理を示しており、図９の処理を行う前には、ＰＬＣ１１が評価版であるか否かの判断が行われる。したがって、本実施形態では、最初に評価中ビット９１の内容を確認し、ＰＬＣ１１が正規版である場合には、以下の処理は行わない。
【０１１９】
図９の例において、第２実施例は、まず上述したスキャン時間を積算時間に加算し（Ｓ１１）、その後、積算時間が上述した固定時間（例えば、１分）以上であるか否かを判断する（Ｓ１２）。第２実施例は、積算時間が固定時間以上である場合（Ｓ１２において、ＹＥＳ）、判定領域９３の所定のフラグの書き込み位置をインクリメント（＋１）し（Ｓ１３）、不揮発性メモリ（例えば、フラッシュメモリ３４）へフラグの書き込みを行う（Ｓ１４）。その後、第２実施例は、積算時間をクリアする（Ｓ１５）。
【０１２０】
ここで、第２実施例は、Ｓ１５の処理が終了後、又はＳ１２の処理において、積算時間が固定時間以上でない場合（Ｓ１２においてＮＯ）、全フラグの書き込みが完了したか否かを判断する（Ｓ１６）。なお、この処理は、言い換えれば、書き込まれたフラグの数により得られるプログラムの累積実行時間が、上述した閾値９２以上か否かを判断することを意味する。
【０１２１】
第２実施例は、全フラグの書き込みが完了している場合（Ｓ１６において、ＹＥＳ）、予め設定された通知手段により利用者等に通知を行い（Ｓ１７）、その後、プログラムの実行を阻止する（Ｓ１８）。また、第２実施例では、Ｓ１６の処理において、全フラグの書き込みが完了していない場合（Ｓ１６において、ＮＯ）、Ｓ１１に戻りプログラムの実行を行うことができる。なお、積算時間は、プログラムの実行周期に対応させて、例えば上述したフラッシュメモリ３４等に記憶しておくことで管理することができる。
【０１２２】
上述した処理により、ＰＬＣ１１における時間監視を適切に行うことができる。なお、図９に示す処理は、例えば上述したアプリケーション管理手段２４等により行われる。
【０１２３】
上述したように、第２実施例では、不揮発性メモリであるフラッシュメモリ３４を例えばセクタ単位で全ビットＯＮ（ビット「１」）の状態で初期化し、ワード単位でビットをＯＮからＯＦＦへの書き込みを行う。そこで、本実施形態では、ビットをＯＦＦする時間を予めシステムプログラムで設定し、その時間が経過する毎に１ビットずつＯＦＦする。これにより、例えばコントローラの電源が、ＯＮ／ＯＦＦされた場合であっても、それまでの経過時間が記録として残ることになる。
【０１２４】
上述した第２実施例によれば、固定時間に対応させてフラグをセットして利用者が使用した時間を管理することで、フラグの書き込み処理にある程度の時間間隔を持たせることができ処理を軽減することができる。また、時間ではなく、フラグで管理されるため、他人がこのデータを見ても評価期間を管理しているとは気付かないため、他人のデータ改竄等による不正使用を防止することができる。
【０１２５】
＜第３実施例＞
次に、第３実施例について説明する。ＰＬＣ１１は、産業用コンピュータであり連続稼動も可能なモジュールである。したがって、ＰＬＣ１１を使用して評価するアプリケーション（プログラム）が、２４時間連続稼動のアプリケーションである可能性もある。この場合には、アプリケーションの起動タイミングでのみ評価満了期間の判定を行っていると、連続稼働中のＰＬＣ１１では評価期間の満了を認識することができない。
【０１２６】
また、評価期間の満了をもってアプリケーションを強制的に終了させることも可能であるが、そのような場合評価中のシステムによっては甚大な事故を引き起こす可能性もあり、悪意のない評価利用者に対し多大な損失を与える可能性がある。
【０１２７】
そこで、第３実施例では、評価用として使用しているＰＬＣ１１に対し、上述した評価期間の満了前の所定のタイミングで利用者に通知を行って利用者に正規品への移行を促す。また、第３実施例では、上述した通知を行っているにもかかわらず、継続して使い続けている場合には、悪意ある利用者と判断し、評価期間満了後にプログラムの実行を阻止する。
【０１２８】
具体的には、第３実施例では、フラッシュメモリ３４上に、上述した評価満了期間判定のための閾値（第１閾値）とは別に、第２の期間満了判定のための閾値（第２閾値）を設ける。また、第３実施例では、第１閾値の経過後も、プログラムの継続使用時間を積算し、積算したこれが一定期間（例えば、２週間）を経過した場合には、強制的にアプリケーション（プログラム）の実行を阻止して、ＰＬＣ１１の使用を停止する。なお、上述した第３実施例では、第１閾値と第２閾値との合計が、プログラムの実行を阻止するまでの評価時間に相当する。
【０１２９】
これにより、第３実施例では、評価期間満了前に通知を行い、その後も所定の期間ＰＬＣ１１が使用できるため、２４時間連続稼動のシステムにも適用することができる。また、第３実施例では、ＰＬＣ１１を使い続けられることを防止し、正規品購入による売上につなげることができる。
【０１３０】
なお、上述した通知としては、例えば軽故障表示等を行うことができる。例えばＰＬＣ１１のモジュール前面等に設けられたＬＥＤ３９、内部に設けられたスピーカ４０、利用者端末１２上の支援ツールによる故障表示画面の表示、アプリケーションデータメモリ上のＲＡＳ領域等に表示される。ここで、ＰＬＣ１１には、アプリケーションの実行に影響はないものの利用者に対処の必要な不具合を通知するためのＲＡＳ通知機能（以下、「軽故障表示」という）がある。これは、例えば「バックアップ用の電池の電圧が低下している」、「一時的にアプリケーションの渋滞が発生した」等のときに通知されるものである。このように、軽故障表示を行うことで、評価期間満了に対する利用者への通知が可能となる。
【０１３１】
ここで、図１１は、評価期間の判定及び実行制御の第３実施例を説明するためのフローチャートである。また、図１２は、図１１に対応するフラグ書き込みの一例を示す図である。
【０１３２】
なお、図１２の例では、上述した図１０に示す例と比較すると、２つの閾値（第１閾値、第２閾値）９２−１，９２−２と、２つの判定領域（第１のデータ領域（以下、単に「第１領域」という）、第２のデータ領域（以下、単に「第２領域」という））９３−１，９３−２とを有する。
【０１３３】
つまり、図１１、図１２の例では、２種類の書き込みフラグ（第１フラグ、第２フラグ）にそれぞれ対応する閾値と、判定領域とを有する。なお、２つの閾値９２−１，９２−２は、それぞれ異なる時間でもよく、同一の時間でもよい。また、２つの判定領域９３−１，９３−２の大きさは、それぞれ閾値９２−１，９２−２と、上述した第２実施例に示す固定時間とに基づいて設定される。例えば、評価期間に対する判定及び期間満了後の通知を行うための判定で用いられる閾値９２−１として、１ヶ月等を設定し、評価期間満了後の所定の期間（強制停止期間満了）の判定用いられる閾値９２−２として２週間等を設定することができるが、これに限定されるものではない。
【０１３４】
したがって、第３実施例では、積算値が固定時間を超過する毎にフラグを書込む場合に、最初に第１領域にフラグを書き込み、第１領域の全てのフラグを書き込んだ後、第１領域とは異なる第２領域にフラグを書き込み、第２領域に書き込まれたフラグ数によって評価期間の満了を判定することになる。
【０１３５】
具体的には、図１１の例において、第３実施例は、まず上述したスキャン時間を積算時間に加算し（Ｓ２１）、その後、積算時間が上述した固定時間（例えば、１分）以上であるか否かを判断する（Ｓ２２）。第３実施例は、積算時間が固定時間以上である場合（Ｓ２２において、ＹＥＳ）、上述した第１領域（例えば、図１２に示す判定領域９３−１）への書き込みが完了しているか否かを判断する（Ｓ２３）。
【０１３６】
第３実施例は、第１領域への書き込みが完了していない場合（Ｓ２３において、ＮＯ）、第１フラグの書き込み位置をインクリメント（＋１）し（Ｓ２４）、第１領域へフラグの書き込みを行う（Ｓ２５）。つまり、Ｓ２４，Ｓ２５の処理では、第１領域中で未だ第１フラグが書き込まれていない位置にフラグの書き込みを行う。
【０１３７】
また、第３実施例は、Ｓ２３の処理において、第１領域への書き込みが完了した場合（Ｓ２３において、ＹＥＳ）、第２フラグの書き込み位置をインクリメント（＋１）し（Ｓ２６）、第２領域（例えば、図１２に示す判定領域９３−２）へフラグの書き込みを行う（Ｓ２７）。つまり、Ｓ２６，Ｓ２７の処理では、第２領域中で未だ第２フラグが書き込まれていない位置にフラグの書き込みを行う。
【０１３８】
その後、第３実施例は、積算時間をクリアする（Ｓ２８）。ここで、第３実施例は、Ｓ２８の処理が終了後、又はＳ２２の処理において、積算時間が固定時間以上でない場合（Ｓ２２においてＮＯ）、第２領域の全フラグの書き込みが完了したか否かを判断する（Ｓ２９）。なお、この処理は、言い換えれば、第１領域及び第２領域に書き込まれたフラグの数により得られるプログラムの累積実行時間が、上述した閾値９２-１及び閾値９２−２の合計時間以上か否かを判断することを意味する。
【０１３９】
第３実施例は、第２領域の全フラグの書き込みが完了している場合（Ｓ２９において、ＹＥＳ）、プログラムの実行を阻止する（Ｓ３０）。また、第３実施例では、Ｓ２９の処理において、全フラグの書き込みが完了していない場合（Ｓ２９において、ＮＯ）、Ｓ２１に戻りプログラムの実行を行うことができる。なお、積算時間は、プログラムの実行周期に対応させて上述したフラッシュメモリ３４等に記憶しておくことで管理することができる。
【０１４０】
上述した処理により、２つの閾値を用いたＰＬＣ１１における時間監視を適切に行うことができる。なお、図１１に示す処理は、例えば上述したアプリケーション管理手段２４等により行われる。
【０１４１】
ここで、第３の実施例では、第１領域への書き込み完了後に利用者への通知処理が行われるが、図１１には通知処理が示されていない。そこで、以下に、第３実施例に対する通知処理の一例について説明する。図１３は、第３実施例に対する通知処理の一例を示すフローチャートである。なお、図１３に示す例では、ＬＥＤにおける通知例を示すが、これに限定されるものではなく、例えば所定の音声等の出力による通知等であってもよく、その他のアラーム出力であってもよい。
【０１４２】
図１３の例において、第３実施例における通知処理は、まず上述したフラッシュメモリ３４等の不揮発性メモリに設けられた判定領域９３を確認し（Ｓ３１）、上述した第２領域（判定領域９３−２）への書き込みが完了したか否かを判断する（Ｓ３２）。
【０１４３】
ここで、通知処理は、第２領域への書き込みが完了していない場合（Ｓ３２において、ＮＯ）、次に、上述した第１領域（判定領域９３−１）への書き込みが完了したか否かを判断する（Ｓ３３）。通知処理は、Ｓ３３において、第１領域への書き込みが完了している場合（Ｓ３３において、ＹＥＳ）、故障ＲＡＳを通知し（Ｓ３４）、故障ＬＥＤを表示する（Ｓ３５）。
【０１４４】
また、通知処理は、第１領域への書き込みが完了していない場合（Ｓ３３において、ＮＯ）、そのまま処理を終了する。また、通知処理は、上述したＳ３２の処理において、第２領域への書き込みが完了している場合（Ｓ３２において、ＹＥＳ）、評価コントローラとしての使用を中止するため、通知を行わずにそのまま処理を終了する。なお、第２領域への書き込みが完了している場合には、Ｓ３４及びＳ３５とは異なる他の通知を行ってもよい。
【０１４５】
また、図１３に示す処理は、上述した図１１に示す処理に統合してもよく、図１１の処理とは別に所定の間隔で図１３に示す通知処理のみを行ってもよい。図１３の処理を図１１の処理と分けることで、図１３に示す通知のみをプログラムの実行とは関係なく、利用者に通知することができる。これにより、利用者は、ＰＬＣ１１の現在の状況を容易に把握することができる。なお、上述した処理は、例えば上述したアプリケーション管理手段２４等により行われる。
【０１４６】
つまり、上述した第３実施例では、第１領域と第２領域を設け、フラグを書込む際、第１領域からフラグを書き込み始め、当該第１領域の全領域に対してフラグを書き込み終えると所定の通知（例えば、アラーム出力等）を行い、以降は前記第２領域にフラグを書き込む。また、第３実施例では、当該第１領域に書き込まれたフラグ数と前記第２領域に書き込まれたフラグ数との総フラグ数によって累積実行時間を算出し、算出した累積実行時間が評価期間を超過することにより、プログラムの実行を阻止する。
【０１４７】
なお、第３実施例では、上述した第１閾値を評価期間とし、第２閾値を猶予期間として実行制御を行うことができる。具体的には、第３実施例では、フラグを書込む際、評価期間に対応する第１領域からフラグを書き込み始め、当該第１領域の全領域に対してフラグを書き込み終えると評価期間満了を示す所定の通知を行う。また、以降の処理では、猶予期間に対応する第２領域にフラグを書き込み、第２領域に書き込まれたフラグ数によって算出される累積時間が猶予時間を超過することにより、プログラムの実行を阻止してもよい。
【０１４８】
更に、第３実施例では、図１１、図１２に示すように、第２領域（判定領域９３−２）を別途設けているが、本発明においてはこれに限定されるものではなく、例えば第１領域を継続使用し、評価満了通知判定と強制停止判定の基準をそれぞれ設けることで対応することも可能である。また、本実施形態では、例えば第３領域や第４領域の多数の領域等を設け、各領域のフラグが書き換わる毎に段階的な通知を利用者に行うこともできる。なお、本実施形態では、最初に評価中ビット９１の内容を確認し、ＰＬＣ１１が正規版である場合に、上述の処理は行わない。
【０１４９】
＜評価状態解除方法（コマンドの具体例）＞
ここで、本実施形態において、ＰＬＣ１１を実際に購入した利用者が評価版ではなく、正規版又はレンタル版として使用する場合には、ＰＬＣ１１を後で回収せずに使い回す場合がある。したがって、本実施形態では、評価版である状態（以下、「評価状態」という）を解除して評価用から正規用への変更の仕組みを提供する。
【０１５０】
具体的には、上述したように、利用者端末１２が、提供者端末１６に対して購入手続をすることで、所定のＰＬＣ１１の評価状態を解除するコマンドを取得する。例えば、本実施形態では、提供者端末１６において、イーサネットのＭＡＣアドレス等の機器固有の情報に基づいたコマンドを作成し、これを利用者端末１２に送信する。利用者端末１２は、このコマンドを対象のＰＬＣ１１に実行させる。
【０１５１】
利用者端末１２は、コマンドをネットワーク１５上で巡回させることで、コマンドを取得した各ＰＬＣ１１が自分のＭＡＣアドレスとコマンド内のＭＡＣアドレスとを比較し、同一である場合にコマンドが実行される。これにより、ＰＬＣ１１の評価版から正規版又はレンタル版へのモード情報の変更（書き換え等）を個別に行うことができる。
【０１５２】
また、コマンド動作は、例えば、上述した図１０、図１２に示す評価中ビット９１に対して、評価版から正規版又はレンタル版の識別情報に書き換えると共に、閾値９２の情報や判定領域の情報を初期化する。
【０１５３】
＜他の機器にアプリケーションを使い回した場合のフラグの立て方＞
また、本実施形態において、他の機器（ＰＬＣ）にアプリケーション（プログラム）を使い回した場合のフラグの立て方について説明する。他の機器にアプリケーションを使い回す場合には、例えばＰＬＣ１１そのものではなく、コントローラアプリケーション（プログラム）の不正利用ということになる。そのため、本実施形態では、例えばＰＬＣ１１からアプリケーションをコピーしたとき、そのコピーしたアプリケーションにコピーフラグを設定する。なお、このフラグの設定は、例えばフラッシュメモリ３４等に行われるが、これに限定されるものではない。ここで、コピーフラグが付与されたアプリケーションがダウンロードされた別のＰＬＣ１１は、評価用コントローラという位置付けで動作させる。
【０１５４】
また逆に、正規にダウンロードされた場合には、予め設定されたキーとなるようなファイルを外部装置から別途ダウンロードし、コピーではこのファイルを移せないようにする。なお、上述の処理は、例えばＰＬＣ１１のアプリケーション管理手段２４等により行われる。
【０１５５】
＜レンタル用ＰＬＣを想定したときのフラグの立て方＞
次に、レンタル用ＰＬＣを想定したときのフラグの立て方について説明する。レンタル用ＰＬＣを想定した場合には、評価用コントローラであるＰＬＣ１１の評価からＰＬＣ１１の購入という使い方が想定されるが、レンタル使用の場合も考えられる。
【０１５６】
このような場合でも、上述と同様に機器毎の識別情報（例えば、ＭＡＣアドレス）に基づいたコマンドをダウンロードすることで対応することができる。例えば、レンタル用ＰＬＣ１１の場合には、評価期間としての判定領域の追加、削除、判定領域のリセット、正規版への移行等のフラグを設定しておくことで、ＰＬＣ１１の多種の使用内容に対応することができ、利用者のニーズに適切に対応することができる。
【０１５７】
＜利用者端末１２における処理手順＞
ここで、利用者端末１２における処理手順について、フローチャートを用いて説明する。図１４は、利用者端末における処理手順の一例を示すフローチャートである。図１４において、利用者端末１２は、まず評価版（評価用コントローラ）として使用しているＰＬＣ１１に対して所定のプログラム等の実行指示を行い（Ｓ４１）、また実行結果等を取得する（Ｓ４２）。なお、実行結果とは、処理結果の他にも例えばエラー情報の取得や残りの評価期間の情報等を取得することができる。
【０１５８】
ここで、利用者端末１２は、ＰＬＣ１１から評価期間が満了した旨の通知があるか否かを判断し（Ｓ４３）、通知がある場合（Ｓ４３において、ＹＥＳ）、画面等に表示して利用者に通知すると共に、利用者から購入する指示があったか否かを判断する（Ｓ４４）。
【０１５９】
ここで、利用者端末１２は、購入指示があった場合（Ｓ４４において、ＹＥＳ）、購入要求（レンタルの場合も含む）、ＰＬＣ１１の識別情報（例えば、ＭＡＣアドレス）、必要に応じて鍵情報を提供者端末１６に送信する（Ｓ４５）。次に、利用者端末１２は、提供者端末１６から暗号化された購入要求に対応するコマンドを取得したか否かを判断し（Ｓ４６）、取得していない場合（Ｓ４６において、ＮＯ）、取得するまで待機する。また、利用者端末１２は、Ｓ４５の処理において、暗号化されたコマンドを取得した場合（Ｓ４５において、ＹＥＳ）、復号化処理を行い（Ｓ４７）、処理されたコマンドを実行する（Ｓ４８）。
【０１６０】
ここで、Ｓ４８の処理の終了後、Ｓ４３の処理においてＰＬＣ１１からの通知がない場合（Ｓ４３において、ＮＯ）、又は、Ｓ４４の処理において利用者からの購入指示がない場合（Ｓ４４において、ＮＯ）、処理を終了する。なお、Ｓ４８の処理の終了後、及びＳ４３の処理においてＰＬＣ１１からの通知がない場合（Ｓ４３において、ＮＯ）には、上述した処理を繰り返すことができる。一方、Ｓ４４の処理において、利用者からの購入指示がない場合（Ｓ４４において、ＮＯ）には、ＰＬＣ１１におけるプログラムの実行が阻止され、ＰＬＣ１１が使用できなくなる。
【０１６１】
＜提供者端末１６における処理手順＞
ここで、提供者端末１６における処理手順について、フローチャートを用いて説明する。図１５は、提供者端末における処理手順の一例を示すフローチャートである。図１５において、提供者端末１６は、まず利用者端末１２からの購入要求（レンタルの場合も含む）があったか否かを判断し（Ｓ５１）、購入要求があった場合（Ｓ５１において、ＹＥＳ）、購入要求に応じて対象のＰＬＣ１１に対する所定のコマンドを生成する（Ｓ５２）。
【０１６２】
次に、提供者端末１６は、Ｓ５２の処理で生成したコマンドに対して利用者端末１２から得られる鍵情報に基づいて暗号化を行い（Ｓ５３）、暗号化されたコマンドを利用者端末１２に送信する（Ｓ５４）。なお、提供者端末１６は、Ｓ５１の処理において、利用者端末１２からの購入要求がない場合（Ｓ５１において、ＮＯ）、処理を終了する。なお、上述した提供者端末１６における処理は、ＰＬＣ１１を提供している利用者端末１２に対してＰＬＣ１１毎に処理が行われる。
【０１６３】
また、図１５に示す処理は、利用者端末１２と提供者端末１６とが通信ネットワーク１７等で接続されている場合の処理を示しているが、本実施形態においては、これに限定されるものではない。例えば、利用者端末１２と提供者端末１６とが通信ネットワーク１７で接続されていない場合には、両者間のデータのやり取りは郵送等により行われる。
【０１６４】
上述したように、本発明によれば、プログラマブルコントローラの使用を適切に制御することができる。つまり、本発明は、プログラマブルコントローラの利用者に対するプログラマブルコントローラとしての提供において、評価期間の高精度な監視を行うことができる。
【０１６５】
これにより、既存のコントローラに対しハードウェア等の変更なく、評価期間を利用者のアプリケーション（プログラム）実行時間の合計として判断し、評価期間満了後のコントローラ起動を制限することができる機能を実現する。また、ユーザアプリケーション実行中に評価期間満了となった場合は、アプリケーションを停止しない形で期間満了を所定の通知手段、又はアプリケーションや支援ツール等に通知し、利用者に対し正規品の購入を促すことができる。これにより、正規品への置換えを行わないシステムに対しては悪意ある使用とみなし、一定期間経過後にコントローラの実行を停止することができる。
【０１６６】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【符号の説明】
【０１６７】
１０  提供システム
１１  ＰＬＣ
１２  利用者端末
１３  入出力モジュール
１４  通信ケーブル
１５  ネットワーク
１６  提供者端末
１７  通信ネットワーク
１８  プログラマブルコントローラシステム
２１  通信インタフェース手段
２２  コマンド提供手段
２３  ストレージ管理手段
２４  アプリケーション管理手段
２５  システム管理手段
２６  スイッチ（ＳＷ）監視手段
２７  カレンダＩＣ（日時取得手段）
２８  入出力（Ｉ／Ｏ）制御手段
２９  通知手段
３１  ＣＰＵ
３２  ドライバ／レシーバ（ネットワーク接続装置）
３３  バスコントローラ
３４  フラッシュ（ＦＬＡＳＨ）メモリ
３５  プログラムメモリ
３６  データメモリ
３７  ＲＴＣ
３８  スイッチ
３９  ＬＥＤ
４０  スピーカ
４１  電池
４２  電源
４３  リセット回路
５１，６１  入力手段
５２，６２  出力手段
５３，６３  記憶手段
５４  ＰＬＣ（コントローラ）実行手段
５５  通知手段
５６  購入手段
５７  画面生成手段
５８，６８  送受信手段
５９，６９  制御手段
６４  ＰＬＣ（コントローラ）管理手段
６５  鍵取得手段
６６  コマンド生成手段
６７  暗号化手段
７１  入力装置
７２  出力装置
７３  ドライブ装置
７４  補助記憶装置
７５  メモリ装置
７６  ＣＰＵ
７７  ネットワーク接続装置
７８  記録媒体
８１，８６  期間
８２，８３  入力データ
８４，８５  出力データ
８７  ユーザプログラム処理期間
８８  メッセージ伝送
９１  評価中ビット
９２  閾値
９３  判定領域
【図１】
2013128603.tif 000003
【図２】
2013128603.tif 000004
【図３】
2013128603.tif 000005
【図４】
2013128603.tif 000006
【図５】
2013128603.tif 000007
【図６】
2013128603.tif 000008
【図７】
2013128603.tif 000009
【図８】
2013128603.tif 000010
【図９】
2013128603.tif 000011
【図１０】
2013128603.tif 000012
【図１１】
2013128603.tif 000013
【図１２】
2013128603.tif 000014
【図１３】
2013128603.tif 000015
【図１４】
2013128603.tif 000016
【図１５】
2013128603.tif 000017
【国際調査報告】
2013128603.tif 000018
2013128603.tif 000019
2013128603.tif 000020
2013128603.tif 000021