(57)【要約】      （修正有）【課題】ユーザプログラムの実行によって、不適切なアクセス要求が生成および送信されてしまうことを防止できるコントローラ、およびそのコントローラで実行されるユーザプログラムを生成する情報処理装置を提供する。【解決手段】データベース装置４００と通信するための通信インターフェイス６と、制御対象の制御に係るユーザプログラムを実行する命令実行部２と、ユーザプログラムに含まれるデータベース装置へアクセスするためのアクセス命令が命令実行部によって実行されることに応答して、通信インターフェイスにアクセス要求を送信させるアクセス処理部４と、ユーザプログラムに含まれるアクセス命令に従って生成されるアクセス要求が予め定められた条件と一致するときに、アクセス要求の送信を制限する制限部８とを含む。【選択図】図１
2014157483.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するコントローラであって、
データベース部と通信するための通信インターフェイスと、
前記制御対象の制御に係るユーザプログラムを実行する命令実行部と、
前記ユーザプログラムに含まれる前記データベース部にアクセスするためのアクセス命令が前記命令実行部によって実行されることに応答して、前記通信インターフェイスにアクセス要求を送信させるアクセス処理部と、
前記ユーザプログラムに含まれるアクセス命令に従って生成されるアクセス要求が予め定められた条件と一致するときに、前記アクセス要求の送信を制限する制限部とを備える、コントローラ。
【請求項２】
前記制限部は、前記アクセス命令または前記アクセス要求により定義されるアクセス対象の範囲として、無効な値が設定されているときに、前記アクセス要求の送信を制限する、請求項１に記載のコントローラ。
【請求項３】
前記制限部は、前記アクセス命令または前記アクセス要求により定義されるアクセス対象を指定するための条件として、予め定められた不正な条件が設定されているときに、前記アクセス要求の送信を制限する、請求項１に記載のコントローラ。
【請求項４】
前記制限部は、前記ユーザプログラムとは独立して前記コントローラに格納されるプログラムとして実装される、請求項１に記載のコントローラ。
【請求項５】
前記命令実行部は、前記コントローラに接続された外部装置から設定された値に従って、前記ユーザプログラムを実行し、
前記制限部は、前記予め定められた条件と一致するか否かの判断を、前記ユーザプログラムの実行毎に行う、請求項１に記載のコントローラ。
【請求項６】
制御対象を制御するコントローラであって、
１または複数のプロセッサと、
システムプログラムとユーザプログラムとを格納するメモリと、
データベース部と通信するための通信インターフェイスとを備え、
前記コントローラは、前記ユーザプログラムの実行を繰返すことによって制御対象を制御するように構成されており、
前記ユーザプログラムは、前記データベース部にアクセスするためのアクセス命令を含み、
前記アクセス命令は、前記データベース部にアクセスするアクセス範囲を指定する情報を含み、
前記システムプログラムは、前記ユーザプログラムの実行に伴って前記アクセス命令が実行されると、前記アクセス範囲を指定する情報に従って、前記データベース部に対するアクセス要求を生成する処理と、前記アクセス要求を前記通信インターフェイスを介して実行する処理とを含み、
前記システムプログラムは、前記アクセス範囲を指定する情報が予め定められた複数の条件のいずれかと一致するときに、前記アクセス要求の実行を制限する処理を含む、コントローラ。
【請求項７】
制御対象を制御するコントローラで実行されるユーザプログラムを生成する情報処理装置であって、
前記コントローラは、データベース部と通信するための通信インターフェイスを含むとともに、前記ユーザプログラムに含まれる前記データベース部にアクセスするためのアクセス命令の実行に応答して、アクセス要求を送信するように構成されており、
前記情報処理装置は、
前記ユーザプログラムに係るソースプログラムを作成するためのユーザインターフェイスを提供するユーザインターフェイス部と、
前記ソースプログラムから前記ユーザプログラムを生成するためのプログラム生成部とを備え、
前記プログラム生成部は、前記ソースプログラムに含まれる前記アクセス命令の定義が予め定められた条件と一致するときに、前記ユーザプログラムの生成を制限または中止する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御するコントローラおよびそのコントローラで実行されるユーザプログラムを生成する情報処理装置に関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備といった制御対象は、プログラマブルコントローラ（Programmable Logic Controller；以下「ＰＬＣ」とも称す。）といったコントローラによって制御される。近年の情報処理技術の進歩によって、このようなコントローラについても多機能化が進んでいる。
【０００３】
例えば、特開２０１２−１０８６４２号公報（特許文献１）は、プログラマブルコントローラ（ＰＬＣ）等の制御装置が収集した所定のデータをデータベースに保存するデータ収集システムを開示する。このプログラマブルコントローラは、通信路を介して、データベースをアクセスするＳＱＬ文を複数含むＳＱＬ処理群をデータベースに送信するＳＱＬ送信部を含む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１０８６４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のようなコントローラは、データをデータベース装置へ書込んだり、データベース装置上のデータを削除したりするためのアクセス要求を発行する。このようなアクセス要求としては、典型的には、リレーショナルデータベース管理システムにおいて用いられるＳＱＬ文がよく知られている。
【０００６】
ＰＬＣなどのコントローラでは、典型的には、制御対象に応じて設計されるユーザプログラムが実行されることで、このようなアクセス要求が生成および送信される。このようなユーザプログラムを用いてアクセス要求を発行するような構成では、プログラムの再利用性などを考慮して、可変な変数（パラメータ）を用いてデータの書込みや削除の対象となる範囲を指定するように設計されることが多い。
【０００７】
このようなプログラム設計においては、ユーザプログラム自体の間違い、参照するパラメータの指定間違い、パラメータへの誤った値の設定などによって、不適切な範囲を対象とするアクセス要求が発行されてしまう可能性がある。このような不適切な範囲を対象とするアクセス要求がデータベース装置へ送信されることで、意図しないデータ処理が実行されるおそれがある。
【０００８】
本発明は、このような状況を鑑みてなされたものであり、その目的は、ユーザプログラムの実行によって、不適切なアクセス要求が生成および送信されてしまうことを防止できるコントローラ、およびそのコントローラで実行されるユーザプログラムを生成する情報処理装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明のある局面に係る制御対象を制御するコントローラは、データベース部と通信するための通信インターフェイスと、制御対象の制御に係るユーザプログラムを実行する命令実行部と、ユーザプログラムに含まれるデータベース部にアクセスするためのアクセス命令が命令実行部によって実行されることに応答して、通信インターフェイスにアクセス要求を送信させるアクセス処理部と、ユーザプログラムに含まれるアクセス命令に従って生成されるアクセス要求が予め定められた条件と一致するときに、アクセス要求の送信を制限する制限部とを含む。
【００１０】
好ましくは、制限部は、アクセス命令またはアクセス要求により定義されるアクセス対象の範囲として、無効な値が設定されているときに、アクセス要求の送信を制限する。
【００１１】
好ましくは、制限部は、アクセス命令またはアクセス要求により定義されるアクセス対象を指定するための条件として、予め定められた不正な条件が設定されているときに、アクセス要求の送信を制限する。
【００１２】
好ましくは、制限部は、ユーザプログラムとは独立してコントローラに格納されるプログラムとして実装される。
【００１３】
好ましくは、命令実行部は、コントローラに接続された外部装置から設定された値に従って、ユーザプログラムを実行し、制限部は、予め定められた条件と一致するか否かの判断を、ユーザプログラムの実行毎に行う。
【００１４】
本発明の別の局面に係る制御対象を制御するコントローラは、１または複数のプロセッサと、システムプログラムとユーザプログラムとを格納するメモリと、データベース部と通信するための通信インターフェイスとを含む。コントローラは、ユーザプログラムの実行を繰返すことによって制御対象を制御するように構成されている。ユーザプログラムは、データベース部にアクセスするためのアクセス命令を含む。アクセス命令は、データベース部にアクセスするアクセス範囲を指定する情報を含む。システムプログラムは、ユーザプログラムの実行に伴ってアクセス命令が実行されると、アクセス範囲を指定する情報に従って、データベース部に対するアクセス要求を生成する処理と、アクセス要求を通信インターフェイスを介して実行する処理とを含む。システムプログラムは、アクセス範囲を指定する情報が予め定められた複数の条件のいずれかと一致するときに、アクセス要求の実行を制限する処理を含む。
【００１５】
本発明のさらに別の局面に係れば、制御対象を制御するコントローラで実行されるユーザプログラムを生成する情報処理装置が提供される。コントローラは、データベース部と通信するための通信インターフェイスを含むとともに、ユーザプログラムに含まれるデータベース部にアクセスするためのアクセス命令の実行に応答して、アクセス要求を送信するように構成されている。情報処理装置は、ユーザプログラムに係るソースプログラムを作成するためのユーザインターフェイスを提供するユーザインターフェイス部と、ソースプログラムからユーザプログラムを生成するためのプログラム生成部とを含む。プログラム生成部は、ソースプログラムに含まれるアクセス命令の定義が予め定められた条件と一致するときに、ユーザプログラムの生成を制限または中止する。
【発明の効果】
【００１６】
本発明によれば、ユーザプログラムの実行によって、不適切なアクセス要求が生成および送信されてしまうことを防止できる。
【図面の簡単な説明】
【００１７】
【図１】本実施の形態に係るＰＬＣの機能的な概要を説明するための図である。
【図２】本実施の形態に係るＰＬＣを含む制御システムのシステム構成を示す模式図である。
【図３】本実施の形態に係るＰＬＣの主要部を示すハードウエア構成を示す模式図である。
【図４】本実施の形態に係るＰＬＣのソフトウェア構成を示す模式図である。
【図５】本実施の形態に係るＰＬＣに接続して用いられるサポート装置のハードウエア構成を示す模式図である。
【図６】本実施の形態に係るＰＬＣにより提供されるアクセス要求の制限機能の実装例を説明するための模式図である。
【図７】本実施の形態に係るＰＬＣにより提供されるアクセス要求の制限機能の処理手順を示すシーケンス図である。
【図８】本実施の形態に係るアクセス要求の制限機能に搭載したサポート装置における処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１８】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００１９】
＜Ａ．概要＞
まず、本実施の形態に係るコントローラの概要を機能面から説明する。以下の説明においては、機械や設備などの制御対象を制御するプログラマブルコントローラ（ＰＬＣ）をコントローラの具現化例として説明を行う。但し、本発明に係るコントローラは、ＰＬＣに限られることなく、各種のコントローラや情報処理装置へ適用可能である。
【００２０】
図１は、本実施の形態に係るＰＬＣ１００の機能的な概要を説明するための図である。図１を参照して、ＰＬＣ１００は、データベース装置４００との間でデータの送受信が可能に構成される。つまり、ＰＬＣ１００およびデータベース装置４００は、イーサネット（登録商標）などのネットワーク１１２を介して、データを互いに遣り取りできるように構成される。
【００２１】
より具体的には、ＰＬＣ１００は、命令実行部２と、アクセス処理部４と、通信インターフェイス６とを含む。これらのコンポーネントの一部または全部は、後述するようなプロセッサがプログラムを実行することで実現されてもよし、専用のハードウエアで実現されてもよい。すなわち、図１に示されるコンポーネントは、機能的な観点から模式的に表現したものであって、それぞれのコンポーネントの実現方法については、何ら限定されるものではない。
【００２２】
命令実行部２は、機械や装置などの制御対象の制御に係るユーザプログラム１８６を実行する。基本的には、命令実行部２は、ユーザプログラム１８６を周期的またはイベント的に実行する。すなわち、ＰＬＣ１００は、ユーザプログラム１８６の実行を繰返すことによって制御対象を制御するように構成されている。このユーザプログラム１８６は、典型的には、後述するようなサポート装置３００で作成され、ＰＬＣ１００へ送信される。命令実行部２によって実行するユーザプログラム１８６が、データベース装置４００にアクセスするための命令（アクセス命令）を含んでいる場合もあり、この場合には、このアクセス命令が実行されることで、データベース装置４００へのアクセスを要求する内部コマンドがアクセス処理部４へ発行される。
【００２３】
アクセス処理部４は、データベース装置４００へのアクセスを要求する内部コマンドを命令実行部２から受信すると、データベース装置４００へのアクセス要求発行のために必要な内部コマンドを通信インターフェイス６へ発行される。つまり、アクセス処理部４は、ユーザプログラム１８６に含まれるデータベース装置４００にアクセスするためのアクセス命令が命令実行部２によって実行されることに応答して、通信インターフェイス６にアクセス要求を送信させる。すなわち、システムプログラム１８８は、ユーザプログラム１８６の実行に伴ってアクセス命令が実行されると、アクセス範囲を指定する情報に従って、データベース装置４００に対するアクセス要求を生成する処理と、アクセス要求を通信インターフェイス６を介して実行する処理とのための命令を含む。
【００２４】
通信インターフェイス６は、アクセス処理部４からの内部コマンドに従って、データベース装置４００と通信するために必要なコマンド（要求）を生成し、ネットワーク１１２を介して送信する。また、通信インターフェイス６は、データベース装置４００などからネットワーク１１２を介して送信されたデータ（実行結果）を受信する。
【００２５】
図１に示すＰＬＣ１００におけるデータベース装置へのアクセス要求を送信するまでの処理は、（１）命令実行部２によるユーザプログラム１８６の周期的／イベント実行、（２）ユーザプログラム１８６に含まれるアクセス命令の実行に応答した、アクセス処理部４によるアクセス要求発行のための内部コマンド発行、（３）アクセス処理部４からの内部コマンドの発行に応答した、通信インターフェイス６によるアクセス要求の送信、となる。
【００２６】
ＰＬＣ１００は、さらに、ユーザプログラム１８６に含まれるアクセス命令に従って生成されるアクセス要求が予め定められた条件と合致するときに、アクセス要求の送信を制限する制限部８を含む。すなわち、制限部８は、生成されたアクセス要求の内容、または、生成される予定のアクセス要求の内容が不適切または不正であるか否かを逐次判断し、その内容が不適切または不正であると判断すると、アクセス要求の送信を阻止する。
【００２７】
典型的には、制限部８は、送信を阻止すべきアクセス要求の内容を示す制限条件９を予め保持しており、アクセス要求の内容が制限条件９に定義されたいずれかの条件と合致するか否かを必要なタイミングで判断する。
【００２８】
制限部８は、上述したアクセス要求の送信に係る一連の手順のうち、適宜の段階または信号（コマンド）において、いずれかの条件と合致するか否かを判断する。言い換えれば、制限部８がアクセス要求の送信を制限するか否かを判断する段階および対象のデータについては、特に限定されることなく、実装に応じて適宜設計されればよい。すなわち、システムプログラム１８８は、アクセス範囲を指定する情報が予め定められた複数の条件のいずれかと一致するときに、アクセス要求の実行を制限する処理のための命令を含む。
【００２９】
より具体的には、（ａ）命令実行部２においてユーザプログラム１８６に含まれるアクセス命令が解釈されたタイミング、（ｂ）ユーザプログラム１８６に含まれるアクセス命令の実行によって命令実行部２からアクセス処理部４へ内部コマンドが発行されたタイミング、（ｃ）アクセス処理部４がアクセス要求発行のための内部コマンドを生成したタイミング、（ｄ）アクセス処理部４から通信インターフェイス６へ内部コマンドが発行されたタイミング、（ｅ）通信インターフェイス６がアクセス要求を発行するタイミング、といった段階および対象データに基づいて、対象のアクセス要求が制限対象であるか否かが判断されてもよい。
【００３０】
このような構成を採用することで、ユーザプログラム１８６および／またはユーザプログラム１８６が参照する変数（パラメータ）に誤りがある場合などに、不適切なアクセス要求が生成および送信されてしまうことを事前に防止できる。また、制限条件９の内容を適切に定義することで、データベース装置４００への不正なアクセスなどを事前に防止することもできる。
【００３１】
以下、本実施の形態に係るＰＬＣ１００およびそれに実装される機能について、より詳細に説明する。
【００３２】
＜Ｂ．システム構成＞
図２は、本実施の形態に係るＰＬＣ１００を含む制御システム１のシステム構成を示す模式図である。図２を参照して、制御システム１は、ＰＬＣ１００と、ＰＬＣ１００に接続されるサポート装置３００と、ＰＬＣ１００からのアクセスを受けるデータベース装置４００とを含む。ＰＬＣ１００は、ユーザプログラムを周期的またはイベント的に実行する。このユーザプログラムに含まれるアクセス命令が実行されることで、データベース装置４００への処理が実行される。
【００３３】
サポート装置３００は、ＰＬＣ１００で実行されるユーザプログラムを生成する情報処理装置の典型例である。さらに、サポート装置３００は、接続ケーブル１１４を介してＰＬＣ１００に接続され、ＰＬＣ１００との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの機能を提供する。ＰＬＣ１００とサポート装置３００との間は、典型的には、ＵＳＢ（Universal Serial Bus）規格に従って通信可能に構成される。
【００３４】
ＰＬＣ１００は、制御演算を実行するＣＰＵユニット１０４と、１つ以上のＩＯ（Input/Output）ユニット１０６とを含む。これらのユニットは、ＰＬＣシステムバス１０８を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１０２によって適切な電圧の電源が供給される。
【００３５】
制御システム１において、ＰＬＣ１００は、（ＰＬＣシステムバス１０８を介して接続される）ＩＯユニット１０６を介して、および／または、フィールドバス１１０を介して、各種のフィールド機器との間でデータを遣り取りする。これらのフィールド機器は、制御対象に対して何らかの処理を行うためのアクチュエータや、制御対象から各種情報を取得するためのセンサなどを含む。図２には、このようなフィールド機器の一例として、検出スイッチ１０と、リレー２０と、モータ３２を駆動するサーボモータドライバ３０とを含む。ＰＬＣ１００には、フィールドバス１１０を介してリモートＩＯターミナル２００も接続されている。リモートＩＯターミナル２００は、基本的には、ＩＯユニット１０６と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル２００は、フィールドバス１１０でのデータ伝送に係る処理を行うための通信カプラ２０２と、１つ以上のＩＯユニット２０４とを含む。これらのユニットは、リモートＩＯターミナルバス２０８を介して、データを互いに遣り取りできるように構成される。
【００３６】
＜Ｃ．ＰＬＣ１００の構成＞
次に、本実施の形態に係るＰＬＣ１００の構成について説明する。図３は、本実施の形態に係るＰＬＣ１００の主要部を示すハードウエア構成を示す模式図である。図４は、本実施の形態に係るＰＬＣ１００のソフトウェア構成を示す模式図である。
【００３７】
図３を参照して、ＰＬＣ１００のＣＰＵユニット１０４のハードウエア構成について説明する。ＣＰＵユニット１０４は、プロセッサ１２０と、チップセット１２２と、システムクロック１２４と、主メモリ１２６と、不揮発性メモリ１２８と、ＵＳＢコネクタ１３０と、ＰＬＣシステムバスコントローラ１４０と、フィールドバスコントローラ１５０と、上位通信コントローラ１６０と、メモリカードインターフェイス１７０とを含む。チップセット１２２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００３８】
プロセッサ１２０およびチップセット１２２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ１２０は、チップセット１２２から内部クロックに従って順次供給される命令コードを解釈して実行する。説明の便宜上、単一のプロセッサ１２０のみを例示するが、これらに限られることなく、任意の構成を採用できる。例えば、単一のコアを含むプロセッサを複数含む構成や、単一のプロセッサを複数含む構成、複数のコアを含むプロセッサを複数含む構成などを採用してもよい。つまり、本実施の形態に係るコントローラは、１または複数のプロセッサがプログラムを実行することで実現されてもよい。
【００３９】
チップセット１２２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ１２０に必要な命令コードを生成する。システムクロック１２４は、予め定められた周期のシステムクロックを発生してプロセッサ１２０に提供する。チップセット１２２は、プロセッサ１２０での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００４０】
ＣＰＵユニット１０４は、記憶手段として、主メモリ１２６および不揮発性メモリ１２８を有する。主メモリ１２６は、揮発性の記憶領域であり、プロセッサ１２０で実行されるべき各種プログラムを保持するとともに、各種プログラムの実行時の作業用メモリとしても使用される。不揮発性メモリ１２８は、ＯＳ（Operating System）、システムプログラム、ユーザプログラム、データ定義情報、ログ情報などを不揮発的に保持する。
【００４１】
ＵＳＢコネクタ１３０は、サポート装置３００とＣＰＵユニット１０４とを接続するためのインターフェイスである。典型的には、サポート装置３００から転送される実行可能なプログラムなどは、ＵＳＢコネクタ１３０を介してＣＰＵユニット１０４に取込まれる。
【００４２】
ＣＰＵユニット１０４は、通信手段として、ＰＬＣシステムバスコントローラ１４０、フィールドバスコントローラ１５０、および上位通信コントローラ１６０を有する。これらの通信回路は、データの送信および受信を行う。
【００４３】
ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバス１０８を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１４０は、バッファメモリ１４２と、ＰＬＣシステムバス制御回路１４４と、ＤＭＡ（Dynamic Memory Access）制御回路１４６とを含む。ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバスコネクタ１４８を介してＰＬＣシステムバス１０８と接続される。
【００４４】
フィールドバスコントローラ１５０は、バッファメモリ１５２と、フィールドバス制御回路１５４と、ＤＭＡ制御回路１５６とを含む。フィールドバスコントローラ１５０は、フィールドバスコネクタ１５８を介してフィールドバス１１０と接続される。上位通信コントローラ１６０は、バッファメモリ１６２と、上位通信制御回路１６４と、ＤＭＡ制御回路１６６とを含む。上位通信コントローラ１６０は、上位通信コネクタ１６８を介してネットワーク１１２と接続される。
【００４５】
メモリカードインターフェイス１７０は、ＣＰＵユニット１０４に対して着脱可能なメモリカード１７２とプロセッサ１２０とを接続する。
【００４６】
次に、図４を参照して、本実施の形態に係るＰＬＣ１００が提供する各種機能を実現するためのソフトウェア構成について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１０４のプロセッサ１２０によって実行される。
【００４７】
図４を参照して、ＣＰＵユニット１０４で実行されるソフトウェアとしては、ＯＳ１８０と、システムプログラム１８８と、ユーザプログラム１８６との３階層になっている。
【００４８】
ＯＳ１８０は、プロセッサ１２０がシステムプログラム１８８およびユーザプログラム１８６を実行するための基本的な実行環境を提供する。
【００４９】
システムプログラム１８８は、ＰＬＣ１００としての基本的な機能を提供するためのソフトウェア群である。具体的には、システムプログラム１８８は、シーケンス命令ライブラリ１９０と、ＤＢ（データベース）アクセス処理ライブラリ１９１と、監視処理ライブラリ１９２と、入出力処理ライブラリ１９３と、Ｔｏｏｌインターフェイス処理プログラム１９４と、スケジューラ１９５とを含む。
【００５０】
これに対して、ユーザプログラム１８６は、制御対象に対する制御目的に応じて任意に作成されたプログラムである。すなわち、ユーザプログラム１８６は、制御システム１を用いて制御する対象のライン（プロセス）などに応じて、任意に設計される。
【００５１】
ユーザプログラム１８６は、シーケンス命令ライブラリ１９０と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム１８６は、シーケンス命令ライブラリ１９０によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム１８６およびシーケンス命令ライブラリ１９０を「制御プログラム」と総称する場合もある。
【００５２】
これらのプログラムやライブラリなどは、不揮発性メモリ１２８に格納される。すなわち、不揮発性メモリ１２８は、システムプログラム１８８とユーザプログラム１８６とを格納するメモリに相当する。
【００５３】
データ定義情報１８２は、ユーザプログラム１８６などが実行される際に、参照されるデータ（入力データ、出力データ、内部データ）をユニークな変数として扱うための定義を含む。稼動ログ１８４には、システムプログラム１８８およびユーザプログラム１８６の実行に伴って、予め定められた事象が発生した際に、当該発生した事象の情報が時刻情報と関連付けて格納される。すなわち、稼動ログ１８４には、システムプログラム１８８および／またはユーザプログラム１８６の実行に伴う各種情報がログ（履歴情報）として格納される。
【００５４】
以下、各プログラムについてより詳細に説明する。
シーケンス命令ライブラリ１９０は、ユーザプログラム１８６の実行に伴って、ユーザプログラム１８６内で指定されているシーケンス命令の実体を呼び出して、その命令の内容を実現するための命令コード群を含む。
【００５５】
ＤＢアクセス処理ライブラリ１９１は、ユーザプログラム１８６の実行に伴って、データベース装置４００にアクセスするために必要な処理を実現するための命令コード群を含む。ＤＢアクセス処理ライブラリ１９１は、ユーザプログラム１８６において指定可能な命令に対応する実行コードを含む。
【００５６】
監視処理ライブラリ１９２は、本実施の形態に係るアクセス要求の制限機能を実現するためのプログラムである。監視処理ライブラリ１９２によって提供される機能の詳細については、後述する。
【００５７】
入出力処理ライブラリ１９３は、ＩＯユニット１０６や各種のフィールド機器との間で、入力データの取得および出力データの送信を管理するためのプログラムである。
【００５８】
Ｔｏｏｌインターフェイス処理プログラム１９４は、サポート装置３００との間でデータを遣り取りするためのインターフェイスを提供する。
【００５９】
スケジューラ１９５は、予め定められた優先度やシステムタイマの値などに従って、制御プログラムを実行するためのスレッドやプロシージャを生成する。
【００６０】
ユーザプログラム１８６は、上述したように、ユーザにおける制御目的（例えば、対象のラインやプロセス）に応じて作成される。ユーザプログラム１８６は、典型的には、ＣＰＵユニット１０４のプロセッサ１２０で実行可能なオブジェクトプログラム形式になっている。ユーザプログラム１８６は、サポート装置３００などにおいて、ラダー形式やファンクションブロック形式で記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラムは、サポート装置３００からＣＰＵユニット１０４へ転送され、不揮発性メモリ１２８などに格納される。
【００６１】
上述の説明においては、プロセッサ１２０がメモリに格納されているユーザプログラム１８６の実行にあたって、システムプログラムを読み出し、システムプログラム内のＤＢアクセス処理ライブラリ１９１および監視処理ライブラリ１９２に含まれるプログラムを実行する形態について例示した。しかしながら、ユーザプログラム１８６で記述される、アクセス命令の実行を受けて、データベース装置に対するアクセス要求を送受信するプログラム（一例として、データベース接続サービス）、および、命令実行にあたってのデータベースにアクセスする範囲を指定する情報を監視するプログラム（一例として、監視サービス）を含む構成であれば、上述の実施の形態に限定されない。
【００６２】
＜Ｄ．サポート装置３００の構成＞
次に、本実施の形態に係るサポート装置３００について説明する。サポート装置３００は、ＰＬＣ１００のＣＰＵユニット１０４の使用を支援するためのものであり、ＰＬＣ１００との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの機能を提供する。
【００６３】
図５は、本実施の形態に係るＰＬＣ１００に接続して用いられるサポート装置３００のハードウエア構成を示す模式図である。サポート装置３００は、典型的には、汎用のコンピュータで構成される。
【００６４】
図５を参照して、サポート装置３００は、ＯＳを含む各種プログラムを実行するＣＰＵ３０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）３０４と、ＣＰＵ３０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ３０６と、ＣＰＵ３０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）３０８とを含む。より具体的には、ハードディスク３０８には、サポート装置３００が提供する機能を実現するためのサポートプログラム３３０が格納されている。
【００６５】
サポート装置３００は、さらに、ユーザからの操作を受付けるキーボード３１０およびマウス３１２と、情報をユーザに提示するためのモニタ３１４とを含む。さらに、サポート装置３００は、ＰＬＣ１００（ＣＰＵユニット１０４）などと通信するための通信インターフェイス（ＩＦ）３１８を含む。
【００６６】
サポート装置３００で実行されるサポートプログラム３３０などは、典型的には、コンピュータ読取可能な記録媒体の一例である光学ディスク３３２に格納されて流通する。光学ディスク３３２に格納されたサポートプログラムは、光学ディスク読取装置３１６によって読み取られ、ハードディスク３０８などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【００６７】
＜Ｅ．データベース装置４００の構成＞
次に、本実施の形態に係るデータベース装置４００について説明する。データベース装置４００としては、データベースを提供する公知の構成を採用することができる。このようなデータベースとしては、リレーショナルデータ型やオブジェクトデータ型といった任意の構成を採用できる。データベース装置４００は、汎用的なコンピュータアーキテクチャに従って構成されるため、ここではその詳細な説明は繰返さない。
【００６８】
データベース装置４００は、ＰＬＣ１００からの接続要求やアクセス要求（リレーショナルデータ型では、ＳＱＬ文）を受けて、必要な処理を実行し、その処理結果などをＰＬＣ１００へ応答する。典型的には、ＳＱＬ文によって、指定されたデータを指定された位置または範囲に書込む、指定された位置または範囲に格納されているデータを読出す、指定された位置または範囲に格納されているデータを削除する、といった処理が実行される。
【００６９】
上述の説明においては、データベースを提供する装置であるデータベース装置４００を例示したが、このような構成に限定されることなく、各種の構成を採用できる。すなわち、データを保持する機能、アクセス要求に応じて処理を行う機能、処理結果をクライエントに応答する機能といった、データベースとしての基本的な機能を有する構成であれば、任意の構成を採用できる。そのため、単一の装置にデータベース機能に加えて、他の機能を有する構成や、複数の装置が連係して単一のデータベース機能を提供する構成などを採用できる。
【００７０】
＜Ｆ．アクセス要求の制限機能＞
次に、本実施の形態に係るＰＬＣ１００により提供されるアクセス要求の制限機能の実装例について説明する。
【００７１】
図６は、本実施の形態に係るＰＬＣ１００により提供されるアクセス要求の制限機能の実装例を説明するための模式図である。図６には、ユーザプログラム１８６においてデータベース装置４００にアクセスするためのアクセス命令が定義されている例を示す。図６には、アクセス命令の一例として、格納されているデータを削除するための「ＤＢ＿ＤＥＬＥＴＥ」命令を示すが、これに限られることなく、データベース装置４００に送信する対象のデータやデータベース装置４００のデータにアクセスする範囲（アクセス範囲）を指定される情報などを含む、様々な命令を指定できる。このように、アクセス命令は、データベース装置４００にアクセスするアクセス範囲を指定する情報を含む。
【００７２】
典型的には、ユーザがサポート装置３００を操作して、ユーザプログラム１８６内でＤＢアクセス命令（ＤＢ＿ＤＥＬＥＴＥ）を指定したとする。このユーザプログラム１８６が実行され、ＤＢアクセス命令の実行タイミングになると、ＤＢアクセス処理ライブラリ１９１（図４）の対応する命令コードが呼び出されて、データベース装置４００へのアクセス要求を含むＳＱＬ文が生成および送信される。すなわち、システムプログラム１８８に含まれるＤＢアクセス処理ライブラリ１９１によって実現されるＤＢ接続サービスが提供されており、ユーザプログラム１８６内のＤＢアクセス命令の実行に伴って、ＤＢ接続サービスがトリガーされる。そして、ＤＢ接続サービスは、ＳＱＬ文を生成し、生成したＳＱＬ文をデータベース装置に対応するドライバソフトを介してデータベース装置に送信する。具体的には、ＤＢアクセス機能は、上位通信コントローラ１６０（図３）およびＤＢアクセス処理ライブラリ１９１（図４）によって、ＤＢ接続サービスが生成したＳＱＬ文を、ネットワーク１１２を介してデータベース装置４００へ送信する。
【００７３】
データベース装置４００は、ＰＬＣ１００からのＳＱＬ文を受信すると、それに従って処理を実行し、必要に応じて、その結果をＰＬＣ１００へ応答する。
【００７４】
本実施の形態に係るＰＬＣ１００では、さらに、ＤＢアクセス命令の実行に伴って生成される（または、生成される予定の）ＳＱＬ文が予め定められた制限条件と合致するときに、アクセス要求の送信を制限する機能（アクセス要求の制限機能）が実装される。このアクセス要求の制限機能は、システムプログラム１８８に含まれる監視処理ライブラリ１９２によって実現される監視サービスによって提供される。監視サービスは、図１に示す制限部８に相当し、ＤＢ接続サービスと連係して、アクセス要求のうち、その内容が不適切または不正であるものを検知し、その送信を制限する。
【００７５】
図６には、ＤＢ接続サービスとは独立に監視サービスを構成する例を示すが、ＤＢ接続サービスに含まれる一部の機能として監視サービスを実装してもよいし、その他の任意の実装形態を採用してもよい。但し、監視サービスは、ユーザプログラム１８６とは独立してＰＬＣ１００に格納されるプログラム（あるいは、ライブラリ）として実装されることが好ましい。
【００７６】
ＤＢ接続サービスおよび監視サービスは、処理の実行に応じて、その処理の内容を時刻情報と関連付けて（つまり、実行ログとして）稼動ログ１８４（図６に示す例では、メモリカード１７２に格納されるログファイル１８４２）に書込む。つまり、ＰＬＣ１００の稼動状況のログが保存される。ＤＢ接続サービスは、アクセス命令の実行に伴って、ＳＱＬ文を生成および送信したときに、その内容を稼動ログ１８４に書込み、また、監視サービスは、生成されたＳＱＬ文が所定の制限条件に合致して送信が制限されたときに、その内容（例えば、いずれの制限条件に合致したのかという情報など）を稼動ログ１８４に書込む。
【００７７】
サポート装置３００は、稼動ログ１８４の内容を確認するための機能を有しており、何らかのエラーが発生した場合に、ユーザはそのサポート装置３００の機能を利用して、エラーの原因や内容などを確認することができる。
【００７８】
＜Ｇ．制限条件＞
次に、本実施の形態に係るアクセス要求の制限機能で用いる制限条件の一例について説明する。
【００７９】
（ｇ１：誤操作／誤処理の防止）
ＳＱＬ文などのアクセス要求において、データベース装置４００に格納されているデータの選択（ＳＥＬＥＣＴ命令）、データの更新（ＵＰＤＡＴＥ命令）、データの削除（ＤＥＬＥＴＥ命令）などを実行する場合には、実行の対象となるデータの位置や範囲を指定する必要がある。このような命令を実行する際に、実行の対象となるデータの位置や範囲が指定されていないと、無条件に処理が実行されてしまう。この結果、データベース装置４００に格納されているすべてのデータを誤って削除してしまったり、すべてのデータを誤って更新してしまったりする。
【００８０】
特に、ユーザプログラム１８６において、これらの命令の対象となる位置や範囲について、変数（パラメータ）を用いて指定することもできる。例えば、正式稼動前の調整時やデバック時には、ユーザがサポート装置３００を操作して、ＰＬＣ１００上のこれらの変数を任意に変更しつつ、その実行結果を確認するような手順が行われる。このような場合、ユーザが変数として誤った値を設定してしまうと、意図しないアクセス要求が生成および送信されてしまう。
【００８１】
そこで、アクセス命令またはアクセス要求により定義されるアクセス対象の範囲として、無効な値が設定されているときに、アクセス要求の送信が制限される。より具体的には、アクセス対象の範囲として、「ｎｕｌｌ」や「＊（ワイルドカード）」が設定されているような場合に、アクセス要求の送信が制限される。
【００８２】
例えば、「Ｔａｂｌｅ１」という名前が付与されたデータベースのあるデータを削除するために、ユーザプログラム１８６において、（１）に示すようなアクセス命令が定義されているとする。ここで、（ｖａｒｉａｂｌｅ１）は、削除対象の範囲を指定する変数を意味する。
【００８３】
ＤＥＬＥＴＥ  （ｖａｒｉａｂｌｅ１）  ＦＲＯＭ  Ｔａｂｌｅ１  …（１）
この変数の設定値に応じて、（１）のアクセス命令は、以下の（２）〜（４）に示すようなコマンドとして解釈され得る。
【００８４】
ＤＥＬＥＴＥ  １００  ＦＲＯＭ  Ｔａｂｌｅ１  …（２）
ＤＥＬＥＴＥ  （ｎｕｌｌ）  ＦＲＯＭ  Ｔａｂｌｅ１  …（３）
ＤＥＬＥＴＥ  ＊  ＦＲＯＭ  Ｔａｂｌｅ１  …（４）
これらのコマンドのうち、（２）については、例えば、削除対象が１００番目のカラムであることが明示されており、すべてのデータを削除対象にはしないので、データベース装置４００への送信が許可される。
【００８５】
一方、（３）および（４）については、すべてのデータが削除対象になり得るので、データベース装置４００への送信が制限される。より具体的には、（３）については、アクセス要求によって削除されるデータの範囲が明示的に指定されていない（つまり、ｎｕｌｌ（ヌル）コード）ので、すべてのデータが削除されてしまう可能性があり、送信が制限される。
【００８６】
同様に、（３）については、アクセス要求によって削除されるデータの範囲がすべてに指定されている（つまり、＊（ワイルドカード））ので、送信が制限される。
【００８７】
ＳＥＬＥＣＴ命令やＵＰＤＡＴＥ命令についても同様に、送信が制限される。このような対象の位置や範囲を指定するパラメータは、ＳＱＬにおいては、ｗｈｅｒｅ句と呼ばれており、このｗｈｅｒｅ句の内容が監視される。
【００８８】
このように、送信を阻止すべきアクセス要求の内容を示す制限条件９としては、「アクセス対象の範囲として無効な値」が設定されているという条件を含む。この無効な値とは、ｎｕｌｌコードやワイルドカードなどを含む。
【００８９】
（ｇ２：不正操作／不正処理の防止）
命令の実行の対象となるデータの範囲を条件式としてユーザに指定させるように構成する場合においては、悪意のユーザが、データベース装置４００からデータを抜き取るような操作を行うことも想定される。
【００９０】
そこで、アクセス命令またはアクセス要求により定義されるアクセス対象を指定するための条件として、予め定められた不正な条件式が設定されているときに、アクセス要求の送信が制限される。より具体的には、常に成立する（真になる）ような条件式を含めてアクセス対象が定義されているような場合には、そのアクセス要求の送信が制限される。例えば、このような条件の一例としては、公知のセキュリティホールとして知られているＩｎｊｅｃｔｉｏｎがある。
【００９１】
＜Ｈ．処理手順＞
次に、本実施の形態に係るＰＬＣ１００により提供されるアクセス要求の制限機能の処理手順について説明する。図７は、本実施の形態に係るＰＬＣ１００により提供されるアクセス要求の制限機能の処理手順を示すシーケンス図である。図７に示すシーケンス図においては、ＰＬＣ１００の内部処理に加えて、サポート装置３００およびデータベース装置４００との遣り取りについても示す。
【００９２】
あるタイミングにおいて、ユーザがサポート装置３００を操作して、ＰＬＣ１００が保持している変数（パラメータ）を変更する操作を行ったとする（シーケンスＳＱ１００）。この操作に応答して、サポート装置３００は、ＰＬＣ１００が保持している変数（パラメータ）を更新する（シーケンスＳＱ１０２）。
【００９３】
続いて、ＰＬＣ１００は、ユーザプログラム１８６を周期的またはイベント的に実行する。このとき、ユーザプログラム１８６において参照されている変数は、変数テーブルなどに格納されている値に更新される。つまり、ＰＬＣ１００の命令実行部は、ＰＬＣ１００（コントローラ）に接続されたサポート装置３００（外部装置）から設定された値に従って、ユーザプログラム１８６を実行する。
【００９４】
ユーザプログラム１８６にアクセス命令が含まれている場合には、このアクセス命令が実行される（シーケンスＳＱ１０４）ことで、アクセス要求を指示する内部コマンドがシステムプログラム１８８によって提供されるＤＢ接続サービスへ発行される（シーケンスＳＱ１０６）。すると、システムプログラム１８８によって提供される監視サービスは、その発行された内部コマンドによって指示されるアクセス要求の内容を判断する（シーケンスＳＱ１０８）。より具体的には、内部コマンドによって指示されるアクセス要求の内容が制限条件に定義されたいずれかの条件と合致するか否かを判断する。
【００９５】
制限条件に定義されたいずれの条件とも合致しなければ（シーケンスＳＱ１０８において「ＯＫ」）、ＤＢ接続サービスは、データベース装置４００に対して、アクセス命令に含まれるデータアクセス範囲に対するアクセス要求を発行し、アクセス要求をデータベース装置４００へ送信する（シーケンスＳＱ１１０）。
【００９６】
データベース装置４００は、受信したアクセス要求に従って処理を実行し、その実行結果をＤＢ接続サービスへ返送する（シーケンスＳＱ１１６）。ＤＢ接続サービスは、その実行結果をユーザプログラム１８６の実行による戻り値として返す（シーケンスＳＱ１１８）。
【００９７】
また、ＤＢ接続サービスは、アクセス要求の送信および実行結果の受信に係る処理を示す履歴を稼動ログ１８４へ出力する（シーケンスＳＱ１２０）。
【００９８】
これに対して、制限条件に定義されたいずれかの条件と合致すれば（シーケンスＳＱ１０８において「ＮＧ」）、監視サービスは、アクセス要求の送信を遮断する（シーケンスＳＱ１２２）。そして、監視サービスは、アクセス要求の遮断に係る処理を示す履歴を稼動ログ１８４へ出力する（シーケンスＳＱ１２４）。
【００９９】
その後、所定の周期または条件が成立することで、ユーザプログラム１８６が再実行される。このように、ＰＬＣ１００の制限部は、予め定められた制限条件と一致するか否かの判断を、ユーザプログラム１８６の実行毎に行う。
【０１００】
＜Ｉ．その他の実施の形態＞
本実施の形態に係るアクセス要求の制限機能を、ＰＬＣ１００のシステムプログラムの一部として実装する例について説明したが、サポート装置３００においてユーザプログラム１８６を生成する機能の一部として実装してもよい。すなわち、ユーザが作成したユーザプログラム（ソースプログラム）を実行可能な形式に変換（コンパイル）する際の機能として、本実施の形態に係るアクセス要求の制限機能を実装してもよい。ここで、サポート装置３００は、制御対象を制御するＰＬＣ１００で実行されるユーザプログラム１８６を生成する情報処理装置に相当する。
【０１０１】
図８は、本実施の形態に係るアクセス要求の制限機能に搭載したサポート装置３００における処理手順を示すフローチャートである。図８に示す各ステップは、典型的には、コンピュータがサポートプログラム３３０を実行することで実現される。
【０１０２】
図８を参照して、サポート装置３００は、ユーザからのユーザプログラム１８６の作成操作を受付ける（ステップＳ１００）。ステップＳ１００において、サポート装置３００は、ユーザプログラムに係るソースプログラムを作成するためのユーザインターフェイスを提供する。より具体的には、サポート装置３００は、ユーザプログラム１８６の作成に係る編集画面やデバッグ画面を表示するとともに、ユーザ操作を受付ける。
【０１０３】
続いて、サポート装置３００は、実行可能な形式のユーザプログラム１８６を生成（コンパイル）するようにユーザ操作を受けたか否かを判断する（ステップＳ１０２）。ユーザ操作を受けていなければ（ステップＳ１０２においてＮＯ）、ステップＳ１００以下の処理が繰返される。
【０１０４】
これに対して、ユーザ操作を受けると（ステップＳ１０２においてＹＥＳ）、サポート装置３００は、作成されたユーザプログラム（ソースプログラム）を解釈（パース）する（ステップＳ１０４）。そして、サポート装置３００は、作成されたユーザプログラム（ソースプログラム）に含まれるアクセス命令に従って生成されるアクセス要求が予め定められた条件（送信を阻止すべきアクセス要求の内容を示す制限条件）と合致するか否かを判断する（ステップＳ１０６）。
【０１０５】
アクセス要求が予め定められた条件と合致しなければ（ステップＳ１０６においてＮＯ）、サポート装置３００は、作成されたユーザプログラム（ソースプログラム）から実行可能な形式のユーザプログラム１８６を生成する（ステップＳ１０８）。すなわち、サポート装置３００は、ソースプログラムからユーザプログラム１８６を生成する。そして、一連の処理は終了する。この処理の後、生成されたユーザプログラム１８６は、ＰＬＣ１００へ転送される。
【０１０６】
これに対して、アクセス要求が予め定められた条件と合致すれば（ステップＳ１０６においてＹＥＳ）、サポート装置３００は、実行可能な形式のユーザプログラム１８６の生成を制限または中止する（ステップＳ１１０）。併せて、サポート装置３００は、作成されたユーザプログラム（ソースプログラム）の不備をユーザに対して通知してもよい。より具体的には、サポート装置３００は、制限条件に定義されたいずれかの条件と合致するアクセス命令がユーザプログラム（ソースプログラム）に含まれる場合には、ユーザプログラム１８６を生成しない。あるいは、サポート装置３００は、対象のアクセス命令を無視して、残りの部分のみを含むユーザプログラム１８６を生成してもよい。
【０１０７】
つまり、サポート装置３００のプログラム生成部は、ソースプログラムに含まれるアクセス命令の定義が予め定められた条件と一致するときに、ユーザプログラム１８６の生成を制限または中止する。そして、一連の処理は終了する。
【０１０８】
＜Ｊ．利点＞
本実施の形態によれば、何らかの理由によって、データベース装置に対して不適切なアクセス要求が生成および送信されてしまうことを事前に防止できる。これによって、ユーザのミスや意図的なアクセスによってデータベース装置に格納されているデータの破損や不正アクセスを防止できる。
【０１０９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１０】
１  制御システム、１０  検出スイッチ、２０  リレー、３０  サーボモータドライバ、３２  モータ、１００  ＰＬＣ、１０２  電源ユニット、１０４  ＣＰＵユニット、１０６  ＩＯユニット、１０８  ＰＬＣシステムバス、１１０  フィールドバス、１１２  ネットワーク、１１４  接続ケーブル、１２０  プロセッサ、１２２  チップセット、１２４  システムクロック、１２６  主メモリ、１２８  不揮発性メモリ、１３０  ＵＳＢコネクタ、１４０  ＰＬＣシステムバスコントローラ、１４２，１５２，１６２  バッファメモリ、１４４  ＰＬＣシステムバス制御回路、１４６，１５６，１６６  ＤＭＡ制御回路、１４８  ＰＬＣシステムバスコネクタ、１５０  フィールドバスコントローラ、１５４  フィールドバス制御回路、１５８  フィールドバスコネクタ、１６０  上位通信コントローラ、１６４  上位通信制御回路、１６８  上位通信コネクタ、１７０  メモリカードインターフェイス、１７２  メモリカード、１８０  ＯＳ、１８２  データ定義情報、１８４  稼動ログ、１８４２  ログファイル、１８６  ユーザプログラム、１８８  システムプログラム、１９０  シーケンス命令ライブラリ、１９１  ＤＢ（データベース）アクセス処理ライブラリ、１９２  監視処理ライブラリ、１９３  入出力処理ライブラリ、１９４  Ｔｏｏｌインターフェイス処理プログラム、１９５  スケジューラ、２００  リモートＩＯターミナル、２０２  通信カプラ、２０８  ターミナルバス、３００  サポート装置、３０２  ＣＰＵ、３０４  ＲＯＭ、３０６  ＲＡＭ、３０８  ハードディスク、３１０  キーボード、３１２  マウス、３１４  モニタ、３１６  光学ディスク読取装置、３３０  サポートプログラム、３３２  光学記録媒体、４００  データベース装置。
【図１】
2014157483.tif 000003
【図２】
2014157483.tif 000004
【図３】
2014157483.tif 000005
【図４】
2014157483.tif 000006
【図５】
2014157483.tif 000007
【図６】
2014157483.tif 000008
【図７】
2014157483.tif 000009
【図８】
2014157483.tif 000010