(57)【要約】【課題】制御装置（コントローラ）とデータベースシステムとを含む制御システムにおいて、プログラムのデバッグや健全性のチェックを効率的に行うことのできる技術を提供する。【解決手段】ＣＰＵユニット１０４は、データベース装置４００と接続するための通信インタフェースを備える。ＣＰＵユニット１０４は、ユーザプログラム１８６を実行し、ユーザプログラムに含まれる命令に応じて、ＤＢ接続サービスを呼び出してデータベース装置４００へアクセスするための命令文を生成する。ＤＢ接続サービスは、アクセス命令に応じた命令文を生成し、生成した命令文をデータベースシステムへ送信した後、データベースシステムからの応答を受信するまでの時間を示す情報を取得し、取得した情報をログとしてメモリに格納する。サポート装置３００は、この情報を取得してモニタに表示する。【選択図】図５
2014157505.tif 000002
【特許請求の範囲】
【請求項１】
コントローラであって、
データベースシステムと接続するための通信インタフェースと、
制御対象を制御するためのユーザプログラムを実行するための命令実行部と、
前記データベースシステムへアクセスするためのアクセス命令を含む前記ユーザプログラムの前記命令実行部による実行時に、前記データベースシステムへの前記通信インタフェースを介したアクセスを制御するアクセス処理部とを備え、
前記アクセス処理部は、
前記アクセス命令に応じた命令文を生成し、生成した命令文を前記データベースシステムへ送信する命令文送信部と、
前記生成した命令文を前記データベースシステムへ送信した後、前記データベースシステムからの応答を受信するまでの時間を示す情報をメモリに格納する取得部とを含む、コントローラ。
【請求項２】
前記取得部は、
前記生成した命令文を前記データベースシステムへ送信することにより、応答時間の計測を開始し、前記命令文を前記データベースシステムへ送信した後、前記データベースシステムからの応答を受信するまでの前記応答時間の計測結果を示す前記情報を前記メモリに格納する、請求項１に記載のコントローラ。
【請求項３】
前記取得部は、
前記生成した命令文を前記データベースシステムへ送信する送信時刻を記録し、前記命令文に対する前記データベースシステムからの応答を受信する受信時刻を記録し、前記送信時刻および前記受信時刻に基づいて、前記データベースシステムからの応答を受信するまでの時間を示す情報を取得し、取得した前記情報を前記メモリに格納する、請求項１に記載のコントローラ。
【請求項４】
前記取得部は、前記命令文を前記データベースシステムへ送信した後、前記データベースシステムから正常な応答を受信した場合に前記応答時間を前記メモリに格納する、請求項１に記載のコントローラ。
【請求項５】
前記命令実行部は、前記データベースシステムからの応答を受信するまでの時間を示す情報を取得するための状態取得命令を含むユーザプログラムを実行し、
前記アクセス処理部は、前記状態取得命令に応じて、前記ユーザプログラムに対し、前記メモリに格納された前記情報を応答する、請求項１に記載のコントローラ。
【請求項６】
前記取得部は、前記命令文の前記データベースシステムへの送信の都度、前記応答を受信するまでの時間を示す情報を時刻情報と対応付けて取得し、
前記入出力部は、前記時刻情報と前記応答を受信するまでの時間を示す情報とを対応付けて前記情報処理装置へ送信する、請求項１に記載のコントローラ。
【請求項７】
コントローラと接続される情報処理装置であって、
前記コントローラは、データベースシステムと接続し、前記データベースシステムへアクセスするためのアクセス命令を含むユーザプログラムの実行時に、前記アクセス命令に応じた命令文を生成し、生成した命令文を前記データベースシステムへ送信する命令文送信部と、
前記命令文送信部により生成した命令文を前記データベースシステムへ前記送信した後、前記データベースシステムからの応答を受信するまでの時間を示す時間情報をメモリに格納する取得部とを含み、
前記情報処理装置は、
前記取得部により前記メモリに格納された前記時間情報を前記コントローラから受信する受信処理部と、
前記受信処理部により受信した前記時間情報をモニタに表示させる表示処理部とを備える、情報処理装置。
【請求項８】
前記コントローラの前記取得部は、前記命令文の前記データベースシステムへの送信の都度、前記応答を受信するまでの時間を示す情報を時刻情報と対応付けて前記メモリに格納し、
前記情報処理装置の前記受信処理部は、前記時刻情報と対応付けられた前記応答を受信するまでの時間を示す時間情報を前記コントローラから受信し、
前記表示処理部は、受信した前記時間情報を、時刻情報と対応付けて表示する、請求項７に記載の情報処理装置。
【請求項９】
コントローラの動作を制御するためのプログラムであって、
前記コントローラは、データベースシステムへアクセスするための通信インタフェースと、プロセッサと、メモリとを備え、
前記プログラムは、前記プロセッサに、
制御対象を制御するためのユーザプログラムを実行するステップと、
前記データベースシステムへアクセスするためのアクセス命令を含む前記ユーザプログラムの前記実行時に、前記アクセス命令に応じた命令文を生成し、生成した命令文を前記通信インタフェースを介して前記データベースシステムへ送信するステップと、
前記生成した命令文を前記データベースシステムへ送信した後、前記データベースシステムからの応答を受信するまでの時間を示す情報を前記メモリに格納するステップと、
前記格納された前記情報を、前記コントローラに接続される前記情報処理装置へ出力するステップとを実行させる、プログラム。
【請求項１０】
コントローラであって、
データベースシステムと接続するための通信インタフェースと、
プロセッサと、
メモリとを備え、
前記プロセッサは、
制御対象を制御するためのユーザプログラムを実行し、前記ユーザプログラムに含まれる、前記データベースシステムへアクセスするためのアクセス命令の前記実行時に、前記アクセス命令に応じた命令文を生成し、生成した命令文を前記データベースシステムへ前記通信インタフェースを介して送信し、前記送信に対して前記データベースシステムからの応答を受信するまでの時間を示す情報を前記メモリに格納する、コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザプログラムを周期的に実行するコントローラを含む制御システムに関し、特に、データベースシステムと接続する制御システムに関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、典型的には、プログラマブルコントローラ（Programmable  Logic  Controller；以下「ＰＬＣ」とも称す）などの制御装置を主たる構成とした制御システムによって制御される。このような制御システムでは、システム構成時や運転時に発生した不具合を事後的に検証できるように、各種のログ出力機能が搭載されている。
【０００３】
このような機能を搭載した制御装置に関する先行技術文献として、特開２０１２−２０８９３２号公報（特許文献１）は、機器の動作を制御するＰＬＣと、ＰＬＣと通信回線を介して接続されるプログラマブル表示器とを備えるＰＬＣシステムを開示する。このＰＬＣシステムにおいて、ＰＬＣは、機器の所定の動作状態を検出した際に、情報記憶手段により記憶した情報の中から、所定の動作状態に該当する該当状態情報を所定の格納部へ格納する該当情報格納手段を含む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２０８９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
また、近年、ＰＬＣがデータベースシステムと接続して、ＰＬＣで保持しているデータをデータベースシステムに蓄積する制御システムも知られている。このような制御システムにおいて、ＰＬＣからデータベースシステムへアクセスする際、一定の時間内に処理が完了することが求められる場合がある。例えば、工場等の生産や検査のプロセスにおいて制御システムが用いられる場合、逐次発生するデータを適切な時間内に処理する必要がある。何らかの原因や不具合が発生することにより、制御システムの性能が、設計者等が想定している処理時間よりも長期化する場合がある。この場合、設計者や制御システムの管理者等は、その原因を解析し、対策を立てる必要がある。対策としては、例えば、コントローラの制御処理をさらに高速化することが必要な場合や、データベースシステムの応答性能を向上させることが必要な場合がある。
【０００６】
したがって、コントローラとデータベースシステムとを含む制御システムの処理に遅延等の不具合が発生する場合においても、その原因を解析することを容易にするための技術が必要とされている。
【課題を解決するための手段】
【０００７】
本発明のある局面に係るコントローラは、データベースシステムと接続するための通信インタフェースと、制御対象を制御するためのユーザプログラムを実行するための命令実行部と、データベースシステムへアクセスするためのアクセス命令を含むユーザプログラムの命令実行部による実行時に、データベースシステムへの通信インタフェースを介したアクセスを制御するアクセス処理部とを備え、アクセス処理部は、アクセス命令に応じた命令文を生成し、生成した命令文をデータベースシステムへ送信する命令文送信部と、生成した命令文をデータベースシステムへ送信した後、データベースシステムからの応答を受信するまでの時間を示す情報をメモリに格納する取得部とを含む。
【０００８】
好ましくは、取得部は、生成した命令文をデータベースシステムへ送信することにより、応答時間の計測を開始し、命令文をデータベースシステムへ送信した後、データベースシステムからの応答を受信するまでの応答時間の計測結果を示す情報をメモリに格納することとしてもよい。
【０００９】
好ましくは、取得部は、生成した命令文をデータベースシステムへ送信する送信時刻を記録し、命令文に対するデータベースシステムからの応答を受信する受信時刻を記録し、送信時刻および受信時刻に基づいて、データベースシステムからの応答を受信するまでの時間を示す情報を取得し、取得した情報をメモリに格納することとしてもよい。
【００１０】
好ましくは、取得部は、命令文をデータベースシステムへ送信した後、データベースシステムから正常な応答を受信した場合に応答時間をメモリに格納することとしてもよい。
【００１１】
好ましくは、命令実行部は、データベースシステムからの応答を受信するまでの時間を示す情報を取得するための状態取得命令を含むユーザプログラムを実行し、アクセス処理部は、状態取得命令に応じて、ユーザプログラムに対し、メモリに格納された情報を応答することとしてもよい。
【００１２】
好ましくは、取得部は、命令文のデータベースシステムへの送信の都度、応答を受信するまでの時間を示す情報を時刻情報と対応付けて取得し、入出力部は、時刻情報と応答を受信するまでの時間を示す情報とを対応付けて情報処理装置へ送信することとしてもよい。
【００１３】
本発明のある局面に係る情報処理装置は、コントローラと接続され、コントローラは、データベースシステムと接続し、データベースシステムへアクセスするためのアクセス命令を含むユーザプログラムの実行時に、アクセス命令に応じた命令文を生成し、生成した命令文をデータベースシステムへ送信する命令文送信部と、命令文送信部により生成した命令文をデータベースシステムへ送信した後、データベースシステムからの応答を受信するまでの時間を示す時間情報をメモリに格納する取得部とを含み、情報処理装置は、取得部によりメモリに格納された時間情報をコントローラから受信する受信処理部と、受信処理部により受信した時間情報をモニタに表示させる表示処理部とを備える。
【００１４】
好ましくは、コントローラの取得部は、命令文のデータベースシステムへの送信の都度、応答を受信するまでの時間を示す情報を時刻情報と対応付けてメモリに格納し、情報処理装置の受信処理部は、時刻情報と対応付けられた応答を受信するまでの時間を示す時間情報をコントローラから受信し、表示処理部は、受信した時間情報を、時刻情報と対応付けて表示することとしてもよい。
【００１５】
本発明のある局面に係るプログラムは、コントローラの動作を制御するためのプログラムであって、コントローラは、データベースシステムへアクセスするための通信インタフェースと、プロセッサと、メモリとを備え、プログラムは、プロセッサに、制御対象を制御するためのユーザプログラムを実行するステップと、データベースシステムへアクセスするためのアクセス命令を含むユーザプログラムの実行時に、アクセス命令に応じた命令文を生成し、生成した命令文を通信インタフェースを介してデータベースシステムへ送信するステップと、生成した命令文をデータベースシステムへ送信した後、データベースシステムからの応答を受信するまでの時間を示す情報をメモリに格納するステップと、格納された情報を、コントローラに接続される情報処理装置へ出力するステップとを実行させる。
【００１６】
本発明のある局面に係るコントローラは、データベースシステムと接続するための通信インタフェースと、プロセッサと、メモリとを備え、プロセッサは、制御対象を制御するためのユーザプログラムを実行し、ユーザプログラムに含まれる、データベースシステムへアクセスするためのアクセス命令の実行時に、アクセス命令に応じた命令文を生成し、生成した命令文をデータベースシステムへ通信インタフェースを介して送信し、送信に対してデータベースシステムからの応答を受信するまでの時間を示す情報をメモリに格納する。
【発明の効果】
【００１７】
本発明によれば、プログラムのデバッグや健全性のチェックを効率的に行うことができ、例えばコントローラとデータベースシステムとを含む制御システムの処理に遅延等の不都合が発生する場合においても、その原因を解析することを容易にすることができる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態に係る制御システム１のシステム構成を示す模式図である。
【図２】本実施の形態に係るＰＬＣ１００の主要部を示すハードウェア構成を示す模式図である。
【図３】本実施の形態に係るＰＬＣ１００のソフトウェア構成を示す模式図である。
【図４】本実施の形態に係るＰＬＣ１００に接続して用いられるサポート装置３００のハードウェア構成を示す模式図である。
【図５】本実施の形態に係る制御システム１により提供されるログ出力機能の概要を説明するための模式図である。
【図６】稼働ログ１８４を示す図である。
【図７】本実施の形態にかかるＰＬＣ１００における処理手順およびデータベース装置４００の処理手順を示すフローチャートである。
【図８】命令タイムアウト発生時におけるＰＬＣ１００の処理手順およびデータベース装置４００の処理手順を示す図である。
【図９】変形例におけるＰＬＣ１００の処理手順およびデータベース装置４００の処理手順を示すフローチャートである。
【図１０】サポート装置３００がＤＢ応答時間１８４Ｊを取得するための処理を示すフローチャートである。
【図１１】サポート装置３００においてＤＢ応答時間１８４Ｊを含む稼働ログ１８４を表示する場合のユーザインタフェースの例を示す図である。
【図１２】本実施形態にかかるサポート装置３００において提供されるユーザインタフェースの一例を示す図である。
【発明を実施するための形態】
【００１９】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２０】
＜Ａ．システム構成＞
まず、本実施の形態に係る制御システムのシステム構成について説明する。本実施の形態においては、機械や設備などの制御対象を制御するプログラマブルコントローラ（ＰＬＣ）を制御装置の典型例として説明を行う。但し、本発明に係る制御装置は、ＰＬＣに限られることなく、各種の制御装置へ適用可能である。
【００２１】
図１は、本実施の形態に係る制御システム１のシステム構成を示す模式図である。図１を参照して、制御システム１は、ＰＬＣ１００と、ＰＬＣ１００に接続されるサポート装置３００と、ＰＬＣ１００からのアクセスを受けるデータベース装置４００とを含む。ＰＬＣ１００は、後述するようなユーザプログラムを周期的またはイベント的に実行する。ユーザプログラムは、ＰＬＣ１００の利用者によって作成される。ユーザは、例えばサポート装置３００を操作することにより、アクセス命令を含むプログラム（ソースプログラム）を作成することができる。サポート装置３００は、ソースプログラムを、ＰＬＣ１００において実行可能な形式に変換し、変換されたユーザプログラムをＰＬＣ１００へ送信する。ＰＬＣ１００は、ユーザプログラムを実行し、ユーザプログラムに含まれるアクセス命令に従って、データベース装置４００にアクセスすることができる。
【００２２】
すなわち、ＰＬＣ１００およびデータベース装置４００は、イーサネット（登録商標）などのネットワーク１１２を介して、データを互いに遣り取りできるように構成される。
【００２３】
サポート装置３００は、ＰＬＣ１００に接続可能な情報処理装置の典型例である。サポート装置３００は、接続ケーブル１１４を介してＰＬＣ１００に接続され、ＰＬＣ１００との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの機能を提供する。ＰＬＣ１００とサポート装置３００との間は、典型的には、ＵＳＢ（Universal Serial Bus）規格に従って通信可能に構成される。
【００２４】
ＰＬＣ１００は、制御演算を実行するＣＰＵユニット１０４と、１つ以上のＩＯ（Input/Output）ユニット１０６とを含む。これらのユニットは、ＰＬＣシステムバス１０８を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１０２によって適切な電圧の電源が供給される。
【００２５】
制御システム１において、ＰＬＣ１００は、（ＰＬＣシステムバス１０８を介して接続される）ＩＯユニット１０６を介して、および／または、フィールドバス１１０を介して、各種のフィールド機器との間でデータを遣り取りする。これらのフィールド機器は、制御対象に対して何らかの処理を行うためのアクチュエータや、制御対象から各種情報を取得するためのセンサなどを含む。図１には、このようなフィールド機器の一例として、検出スイッチ１０、リレー２０およびモータ３２を駆動するサーボモータドライバ３０を含む。また、ＰＬＣ１００は、フィールドバス１１０を介してリモートＩＯターミナル２００も接続されている。リモートＩＯターミナル２００は、基本的には、ＩＯユニット１０６と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル２００は、フィールドバス１１０でのデータ伝送に係る処理を行うための通信カプラ２０２と、１つ以上のＩＯユニット２０４とを含む。これらのユニットは、リモートＩＯターミナルバス２０８を介して、データを互いに遣り取りできるように構成される。
【００２６】
＜Ｂ．ＰＬＣ１００の構成＞
次に、本実施の形態に係るＰＬＣ１００の構成について説明する。図２は、本実施の形態に係るＰＬＣ１００の主要部を示すハードウェア構成を示す模式図である。図３は、本実施の形態に係るＰＬＣ１００のソフトウェア構成を示す模式図である。
【００２７】
図２を参照して、ＰＬＣ１００のＣＰＵユニット１０４のハードウェア構成について説明する。ＣＰＵユニット１０４は、プロセッサ１２０と、チップセット１２２と、システムクロック１２４と、主メモリ１２６と、不揮発性メモリ１２８と、ＵＳＢコネクタ１３０と、ＰＬＣシステムバスコントローラ１４０と、フィールドバスコントローラ１５０と、上位通信コントローラ１６０と、メモリカードインターフェイス１７０とを含む。チップセット１２２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００２８】
プロセッサ１２０およびチップセット１２２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ１２０は、チップセット１２２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１２２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ１２０に必要な命令コードを生成する。システムクロック１２４は、予め定められた周期のシステムクロックを発生してプロセッサ１２０に提供する。チップセット１２２は、プロセッサ１２０での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００２９】
ＣＰＵユニット１０４は、記憶手段として、主メモリ１２６および不揮発性メモリ１２８を有する。主メモリ１２６は、揮発性の記憶領域であり、プロセッサ１２０で実行されるべき各種プログラムを保持するとともに、各種プログラムの実行時の作業用メモリとしても使用される。不揮発性メモリ１２８は、ＯＳ（Operating System）、システムプログラム、ユーザプログラム、ログ情報などを不揮発的に保持する。
【００３０】
ＵＳＢコネクタ１３０は、サポート装置３００とＣＰＵユニット１０４とを接続するためのインタフェースである。典型的には、サポート装置３００から転送される実行可能なプログラムなどは、ＵＳＢコネクタ１３０を介してＣＰＵユニット１０４に取込まれる。
【００３１】
ＣＰＵユニット１０４は、通信手段として、ＰＬＣシステムバスコントローラ１４０、フィールドバスコントローラ１５０、および上位通信コントローラ１６０を有する。これらの通信回路は、データの送信および受信を行う。
【００３２】
ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバス１０８を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１４０は、バッファメモリ１４２と、ＰＬＣシステムバス制御回路１４４と、ＤＭＡ（Dynamic Memory Access）制御回路１４６とを含む。ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバスコネクタ１４８を介してＰＬＣシステムバス１０８と接続される。
【００３３】
フィールドバスコントローラ１５０は、バッファメモリ１５２と、フィールドバス制御回路１５４と、ＤＭＡ制御回路１５６とを含む。フィールドバスコントローラ１５０は、フィールドバスコネクタ１５８を介してフィールドバス１１０と接続される。上位通信コントローラ１６０は、バッファメモリ１６２と、上位通信制御回路１６４と、ＤＭＡ制御回路１６６とを含む。上位通信コントローラ１６０は、上位通信コネクタ１６８を介してネットワーク１１２と接続される。
【００３４】
メモリカードインターフェイス１７０は、ＣＰＵユニット１０４に対して着脱可能なメモリカード１７２とプロセッサ１２０とを接続する。
【００３５】
次に、図３を参照して、本実施の形態に係るＰＬＣ１００が提供する各種機能を実現するためのソフトウェア構成について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１０４のプロセッサ１２０によって実行される。
【００３６】
図３を参照して、ＣＰＵユニット１０４で実行されるソフトウェアとしては、ＯＳ１８０と、システムプログラム１８８と、ユーザプログラム１８６とがある。
【００３７】
ＯＳ１８０は、プロセッサ１２０がシステムプログラム１８８およびユーザプログラム１８６を実行するための基本的な実行環境を提供する。
【００３８】
システムプログラム１８８は、ＰＬＣ１００としての基本的な機能を提供するためのソフトウェア群である。具体的には、システムプログラム１８８は、シーケンス命令プログラム１９０と、ＤＢ（データベース）アクセス処理プログラム１９２と、入出力処理プログラム１９４と、Ｔｏｏｌインタフェース処理プログラム１９６と、スケジューラ１９８とを含む。
【００３９】
これに対して、ユーザプログラム１８６は、制御対象に対する制御目的に応じて任意に作成されたプログラムである。すなわち、ユーザプログラム１８６は、制御システム１を用いて制御する対象に応じて、任意に設計される。
【００４０】
ユーザプログラム１８６は、シーケンス命令プログラム１９０と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム１８６は、シーケンス命令プログラム１９０によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム１８６およびシーケンス命令プログラム１９０を「制御プログラム」と総称する場合もある。
【００４１】
稼働ログ１８４には、システムプログラム１８８およびユーザプログラム１８６の実行に伴って、予め定められた事象が発生した際に、当該発生した事象の情報が時刻情報と関連付けて格納される。すなわち、稼働ログ１８４には、システムプログラム１８８および／またはユーザプログラム１８６の実行に伴う各種情報がログ（履歴情報）として格納される。ＤＢ応答時間１８４Ｊは、後述する処理によって記録されるログであり、ＰＬＣ１００がデータベース装置４００と通信する際の応答時間のログを示す。本実施形態では、ＰＬＣ１００は、ＰＬＣ１００がデータベース装置４００に対する命令文をデータベース装置４００へ送信してから応答があるまでの時間をＤＢ応答時間１８４Ｊとして稼働ログ１８４に記録する。
【００４２】
以下、各プログラムについてより詳細に説明する。
シーケンス命令プログラム１９０は、ユーザプログラム１８６の実行に伴って、ユーザプログラム１８６内で指定されているシーケンス命令の実体を呼び出して、その命令の内容を実現するための命令コード群を含む。
【００４３】
ＤＢアクセス処理プログラム１９２は、ユーザプログラム１８６の実行に伴って、データベース装置４００へアクセスするために必要な処理を実現するための命令コード群を含む。ＤＢアクセス処理プログラム１９２は、ユーザプログラム１８６において指定可能な命令に対応する実行コードを含む。
【００４４】
入出力処理プログラム１９４は、ＩＯユニット１０６や各種のフィールド機器との間で、入力データの取得および出力データの送信を管理するためのプログラムである。
【００４５】
Ｔｏｏｌインタフェース処理プログラム１９６は、サポート装置３００との間でデータを遣り取りするためのインタフェースを提供する。
【００４６】
スケジューラ１９８は、予め定められた優先度やシステムタイマの値などに従って、制御プログラムを実行するためのスレッドやプロシージャを生成する。
【００４７】
ユーザプログラム１８６は、上述したように、ユーザにおける制御目的に応じて作成される。ユーザプログラム１８６は、典型的には、ＣＰＵユニット１０４のプロセッサ１２０で実行可能なオブジェクトプログラム形式になっている。ユーザプログラム１８６は、サポート装置３００などにおいて、ラダー形式やファンクションブロック形式で記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラムは、サポート装置３００からＣＰＵユニット１０４へ転送され、不揮発性メモリ１２８などに格納される。
【００４８】
ＰＬＣ１００は、図２および図３を用いて説明した構成を備えており、プロセッサ１２０がシステムプログラム１８８およびユーザプログラム１８６を実行することにより、「制御対象を制御するためのユーザプログラムを実行するための命令実行部」として機能する。また、ＰＬＣ１００は、プロセッサ１２０がＤＢアクセス処理プログラム１９２およびユーザプログラム１８６を実行することにより、「データベース装置４００へアクセスするためのアクセス命令を含むユーザプログラムの命令実行部による実行時に、データベース装置４００への通信インタフェースを介したアクセスを制御するアクセス処理部」として機能する。ＰＬＣ１００は、プロセッサ１２０が、ユーザプログラム１８６に含まれるアクセス命令に応じてＤＢアクセス処理プログラム１９２を実行することにより、「アクセス命令に応じた命令文（ＳＱＬ文）を生成し、生成した命令文をデータベース装置４００へ送信する命令文送信部」と、「生成した命令文をデータベース装置４００へ送信した後、データベース装置４００からの応答を受信するまでの時間を示す情報をメモリに格納する取得部」として機能する。
【００４９】
＜Ｃ．サポート装置３００の構成＞
次に、本実施の形態に係るサポート装置３００について説明する。サポート装置３００は、ＰＬＣ１００のＣＰＵユニット１０４の使用を支援するためのものであり、ＰＬＣ１００との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの機能を提供する。
【００５０】
図４は、本実施の形態に係るＰＬＣ１００に接続して用いられるサポート装置３００のハードウェア構成を示す模式図である。サポート装置３００は、典型的には、汎用のコンピュータで構成される。
【００５１】
図４を参照して、サポート装置３００は、ＯＳを含む各種プログラムを実行するＣＰＵ３０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）３０４と、ＣＰＵ３０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ３０６と、ＣＰＵ３０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）３０８とを含む。より具体的には、ハードディスク３０８には、サポート装置３００が提供する機能を実現するためのサポートプログラム３３０が格納されている。
【００５２】
サポート装置３００は、さらに、ユーザからの操作を受け付けるキーボード３１０およびマウス３１２と、情報をユーザに提示するためのモニタ３１４とを含む。さらに、サポート装置３００は、ＰＬＣ１００（ＣＰＵユニット１０４）などと通信するための通信インタフェース（ＩＦ）３１８を含む。
【００５３】
サポート装置３００で実行されるサポートプログラム３３０などは、光学記録媒体３３２に格納されて流通する。光学記録媒体３３２に格納されたプログラムは、光学ディスク読取装置３１６によって読み取られ、ハードディスク３０８などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【００５４】
サポート装置３００は、通信ＩＦ３１８によってＰＬＣ１００と接続し、ＣＰＵ３０２がサポートプログラム３３０を実行することで、「ＰＬＣ１００のメモリに格納されたＤＢ応答時間１８４Ｊを含む稼働ログ１８４をＰＬＣ１００から受信する受信処理部」と、「受信処理部により受信したＤＢ応答時間１８４Ｊを含む稼働ログ１８４をモニタ３１４に表示させる表示処理部」としての機能を発揮する。
【００５５】
＜Ｄ．データベース装置４００の構成＞
次に、本実施の形態に係るデータベース装置４００について説明する。データベース装置４００としては、データベースを提供する公知の構成を採用することができる。このようなデータベースとしては、リレーショナルデータ型やオブジェクトデータ型といった任意の構成を採用できる。データベース装置４００は、汎用的なコンピュータアーキテクチャに従って構成されるため、ここではその詳細な説明は繰り返さない。
【００５６】
データベース装置４００は、ＰＬＣ１００からの接続要求やアクセス要求（リレーショナルデータ型では、ＳＱＬ文）を受けて、必要な処理を実行し、その処理結果などをＰＬＣ１００へ応答する。
【００５７】
＜Ｅ．ＤＢ（データベース）応答時間のログの保存の概要＞
次に、本実施の形態に係る制御システム１により提供されるログ出力機能の概要について説明する。本実施の形態に係るログ出力機能は、プログラムにより定められた所定の処理の実行に伴って出力されるログ（以下「実行ログ」とも称す。）や、プログラムの実行失敗やハードウェアの不具合の発生に伴って出力されるログ（以下「イベントログ」とも称す。）を出力することが可能になっている。稼働ログ１８４は、これらのすべてのログを含む。本実施形態では、上述したように、ＰＬＣ１００がデータベース装置４００に対する命令文をデータベース装置４００へ送信してから応答があるまでの時間をＤＢ応答時間１８４Ｊとして稼働ログ１８４に記録する。本実施形態では、ＰＬＣ１００は、後述するように、ＰＬＣ１００に装着されるメモリカード等の記録媒体に稼働ログ１８４を書き込む例を説明する。メモリカード等の記録媒体は、稼働ログ１８４をログファイルとして格納している。
【００５８】
実行ログは、予め定められた種類の処理が実行された際に、その処理内容を時刻情報と関連付けて記録した情報である。この実行ログによって、ユーザプログラム１８６において指定された処理が実行されたことを確認することができる。実行ログは、基本的には、ＰＬＣ１００が稼働中（プログラムによって予め定められた種類の処理を実行している状態）において、常にロギングを行う。イベントログは、指定された処理の実行が失敗したような場合に、その処理内容を時刻情報と関連付けて記録した情報である。典型的には、指定された処理がエラーなどで中断したような場合に、その内容がロギングされる。
【００５９】
図５は、本実施の形態に係る制御システム１により提供されるログ出力機能の概要を説明するための模式図である。図５の例では、ユーザは、サポート装置３００で実行されるサポートプログラムによって、データベース装置４００への接続命令を含むプログラムを作成している。サポート装置３００は、作成されたプログラムを、ＰＬＣ１００で実行可能な形式に変換し、変換されたユーザプログラムを、サポート装置３００からＰＬＣ１００へ送信する。但し、ユーザプログラム１８６に定義される命令は任意に定義でき、この定義される命令の種類は、本発明の範囲に何ら影響を与えるものではない。
【００６０】
より具体的には、ユーザがサポート装置３００を操作して、ユーザプログラム１８６内にＤＢ接続命令（ＤＢ＿Ｉｎｓｅｒｔ）が含まれるようプログラムを作成したとする。サポート装置３００によって生成されたユーザプログラムがＰＬＣ１００によって実行され、ＤＢ接続命令の実行タイミングになると、ＤＢアクセス処理プログラム１９２（図３）の対応する命令コードが呼び出されて、データベース装置４００への接続要求を含むＳＱＬ文が生成および送信される。すなわち、システムプログラム１８８に含まれるＤＢアクセス処理プログラム１９２によって実現されるＤＢ接続サービスが提供されており、ユーザプログラム１８６内のＤＢ接続命令の発行によって、ＤＢ接続サービスがトリガーされる。そして、ＤＢ接続サービスは、ＳＱＬ文を生成し、生成したＳＱＬ文をＤＢアクセス機能へ渡す。ＤＢアクセス機能は、各種のデータベースシステムにアクセスするために用意されているドライバソフトウェアである。ＤＢアクセス機能は、上位通信コントローラ１６０（図２）およびＤＢアクセス処理プログラム１９２（図３）によって実現される機能であり、ＤＢ接続サービスから受取ったＳＱＬ文を、ネットワーク１１２を介してデータベース装置４００へ送信する。
【００６１】
データベース装置４００は、ＰＬＣ１００からのＳＱＬ文を受信すると、それに従って処理を実行し、必要に応じて、その結果をＰＬＣ１００へ応答する。
【００６２】
ＤＢ接続サービスは、このＤＢ接続命令の実行（ＳＱＬ文の作成および送信）に応答し、当該命令によって指定された情報を時刻情報と関連付けて（つまり、実行ログとして）稼働ログ１８４（図５に示す例では、メモリカード１７２に格納されるログファイル１８４２）に書き込む。つまり、ＰＬＣ１００の稼働状況のログが保存される。このとき、ユーザは、稼働ログ１８４への実行ログの書き込みを明示的に指示する必要はなく、ＤＢ接続命令が実行されると、ＤＢ接続サービスが自動的に稼働状況を稼働ログ１８４へ書き込むようなシステム環境が構築されている。
【００６３】
すなわち、ＰＬＣ１００のＣＰＵユニット１０４は、ＤＢアクセス処理プログラム１９２（システムプログラム１８８）を実行することで、予め定められた事象の発生に応答して、当該発生した事象の情報（実行ログおよび／またはイベントログ）を時刻情報と関連付けて記憶部であるメモリカード１７２に書き込む書込手段として機能する。このとき、不揮発性メモリ１２８などに予め格納されたシステムプログラム１８８をＰＬＣ１００のＣＰＵユニット１０４が実行することで、予め定められた事象（例えば、ＤＢ接続命令の実行）を発生させる。また、このとき、ＤＢ接続サービスは、データベース装置４００への命令文の送信後、データベース装置４００から応答があるまでの時間を測定しており、この測定結果をＤＢ応答時間として稼働ログ１８４に保存する。
【００６４】
なお、稼働ログ１８４の書き込み先は、メモリカード１７２に限らず、主メモリ１２６や不揮発性メモリ１２８（図２）であってもよいし、あるいは、ＰＬＣ１００の外部にある記憶装置であってもよい。但し、ＰＬＣ１００の電源が遮断された場合であっても、これらの稼働ログ１８４を保持できる記憶装置が好ましい。
【００６５】
このようなシステム環境において、ユーザは、ユーザプログラム１８６の任意の位置にログ出力命令を追加することができるとともに、ユーザプログラム１８６に含まれる状態取得命令を任意に削除することもできる。例えば、ユーザが、サポート装置３００によって、図５に示すように状態取得命令（ＤＢ＿ＧｅｔＣｏｎｎｅｃｔｉｏｎＳｔａｔｕｓ）を含むユーザプログラム１８６を生成したとする。すると、ＰＬＣ１００がユーザプログラム１８６を実行し、状態取得命令に応じて稼働ログ１８４が参照され、ユーザは、ＤＢ応答時間１８４Ｊを読み出すことができる。
【００６６】
＜Ｆ．稼働ログ１８４＞
図６を参照して、ＰＬＣ１００が記録する稼働ログ１８４について説明する。図６は、稼働ログ１８４を示す図であり、稼働ログ１８４に記録されるログは、エントリ１８４Ａと、日時１８４Ｂと、カテゴリ１８４Ｃと、ログ名１８４Ｄと、結果１８４Ｅと、コネクション名１８４Ｆと、シリアルＩＤ１８４Ｇと、テーブル名１８４Ｈと、ＤＢ応答時間１８４Ｊとを含む。
【００６７】
日時１８４Ｂは、ログの取得対象となる処理が発生した時刻を示す。カテゴリ１８４Ｃは、ログの属性を示す。ログ名１８４Ｄは、ログの内容を一見して把握できる情報を含む。結果１８４Ｅは、処理の結果を示すコードが含まれ、例えばデータベース装置４００との接続が成功したか失敗したかを示す情報が含まれる。ＤＢコネクション名１８４ＦおよびシリアルＩＤ１８４Ｇは、主として、ＤＢ接続に関する情報であり、予め設定されている接続の設定のうち、いずれの設定が使用されたかといった情報を含む。１８４Ｈは、ＰＬＣ１００が接続したデータベーステーブルを識別する情報を含む。ＤＢ応答時間１８４Ｊは、ＰＬＣ１００とデータベース装置４００との通信に要した時間を示し、上述のように、ＰＬＣ１００がデータベース装置４００に対して命令文を送信してから応答があるまでの時間を示す。
【００６８】
＜Ｇ．処理手順＞
次に、本実施の形態にかかるＰＬＣ１００におけるデータベース装置４００との通信時の応答時間をログに出力する処理について説明する。図７は、本実施の形態にかかるＰＬＣ１００における処理手順およびデータベース装置４００の処理手順を示すフローチャートである。図７に示す各ステップは、ＣＰＵユニット１０４のプロセッサ１２０がユーザプログラム１８６およびシステムプログラム１８８をそれぞれ実行することで実現される。なお、図９には、ユーザプログラム１８６およびシステムプログラム１８８が互いに独立して実行される例を示すが、両プログラムを包含する単一のプログラムを実行するようにしてもよい。
【００６９】
図７を参照して、ユーザプログラム１８６の実行に関して、プロセッサ１２０は、予め格納されているユーザプログラム１８６をロードし、ロードしたユーザプログラム１８６を予め定められた周期で繰り返し実行する。なお、このロードされるユーザプログラム１８６は、コンパイルされて実行可能なオブジェクト形式になっているものとする。但し、ユーザによって作成されたソースコードのままロードする、あるいは、ソースコードを中間コードにコンパイルしたものをロードするようにしてもよい。この場合には、ロードされたコードを逐次コンパイルしつつ、プロセッサ１２０は、処理を実行することになる。すなわち、プロセッサ１２０は、ユーザプログラム１８６に含まれる命令に従って、必要に応じてシステムプログラム１８８を呼び出しつつ、指定された処理を実行する。
【００７０】
ステップＳ１０１において、プロセッサ１２０は、ユーザプログラム１８６に含まれる命令に従って処理を実行し、データベース装置４００へアクセスするための命令を実行すると、ＤＢアクセス処理プログラム１９２によってデータベース装置４００へのアクセスを実行する。
【００７１】
ステップＳ２０１において、プロセッサ１２０は、ＤＢアクセス処理プログラム１９２によってデータベース装置４００へのアクセスを実行し、ユーザプログラム１８６に含まれる、データベース装置４００へアクセスするための命令に応じた命令文（ＳＱＬ文）を生成する。
【００７２】
ステップＳ２０３において、プロセッサ１２０は、生成したＳＱＬ文をデータベース装置４００へ送信する。
【００７３】
ステップＳ２０５において、プロセッサ１２０は、データベース装置４００との通信のタイムアウト時間を設定するとともに、データベース装置４００からの応答を受信するまで、応答時間の計測を開始する。
【００７４】
ステップＳ４０１において、データベース装置４００は、ＰＬＣ１００から送信されるＳＱＬ文を受信し、受信したＳＱＬ文を実行する。
【００７５】
ステップＳ４０３において、データベース装置４００は、ＳＱＬ文の実行結果をＰＬＣ１００へ応答する。
【００７６】
ステップＳ２０７において、プロセッサ１２０は、データベース装置４００との通信に設定したタイムアウト時間が経過する前にデータベース装置４００におけるＳＱＬ文の実行結果を示す応答をデータベース装置４００から受信すると、ＳＱＬ文の送信後、データベース装置４００からの応答を受信するまでに要した応答時間の計測結果を取得する。
【００７７】
ステップＳ２０９において、プロセッサ１２０は、データベース装置４００からの応答をＤＢアクセス処理プログラム１９２からユーザプログラム１８６へ渡し、データベース装置４００からの応答を受信するまでに計測した応答時間を稼働ログ１８４にＤＢ応答時間１８４Ｊとして保存する。
【００７８】
ステップＳ１０３において、プロセッサ１２０は、ＳＱＬ文の実行結果に応じてユーザプログラム１８６を実行する。
【００７９】
（命令タイムアウト発生時におけるＤＢとの応答時間の取得）
次に、図８を参照して、命令のタイムアウトが発生した場合の応答時間の格納方法について説明する。プロセッサ１２０は、ユーザプログラム１８６に含まれる命令によってＤＢアクセス処理プログラム１９２を呼び出してデータベース装置４００へアクセスするための処理を行う。このとき、ＤＢアクセス処理プログラム１９２の呼び出しによる命令のタイムアウトが発生した（命令タイムアウト）とする。ユーザプログラム１８６に含まれる命令がタイムアウト（命令タイムアウト）したことによって実行が完了した場合においても、ＤＢ接続サービス自体は、データベース装置４００からのレスポンスを待ち続けている。ＤＢ接続サービスがデータベース装置４００からのレスポンスを待つ時間が経過した場合（通信タイムアウト）は、ＤＢ接続サービスは、データベース装置４００との接続状態が異常切断されたと判断する。例えば、ＰＬＣ１００とデータベース装置４００との通信経路に通信障害等が発生した場合に、通信タイムアウトが発生する。
【００８０】
以下の説明では、命令タイムアウトが発生した場合において、通信タイムアウトが発生する前にデータベース装置４００からＳＱＬ文の実行結果を示す応答をＰＬＣ１００が受信した場合の処理手順を示す。
【００８１】
図８は、命令タイムアウト発生時におけるＰＬＣ１００の処理手順およびデータベース装置４００の処理手順を示す図である。
【００８２】
ステップＳ１０１において、プロセッサ１２０は、ユーザプログラム１８６に含まれる命令に従って処理を実行し、データベース装置４００へアクセスするための命令を実行すると、ＤＢアクセス処理プログラム１９２によってデータベース装置４００へのアクセスを実行する。
【００８３】
ステップＳ２０１において、プロセッサ１２０は、ＤＢアクセス処理プログラム１９２によってデータベース装置４００へのアクセスを実行し、ユーザプログラム１８６に含まれる、データベース装置４００へアクセスするための命令に応じた命令文（ＳＱＬ文）を生成する。
【００８４】
ステップＳ２０３において、プロセッサ１２０は、生成したＳＱＬ文をデータベース装置４００へ送信する。
【００８５】
ステップＳ２１１において、プロセッサ１２０は、データベース装置４００との通信のタイムアウト時間を設定し、データベース装置４００からＳＱＬ文の実行結果を示す応答があるまでの応答時間の計測を開始し、ユーザプログラム１８６に含まれる命令を実行するための時間のタイムアウト（命令タイムアウト）が発生するか監視する。
【００８６】
ステップＳ２１３において、プロセッサ１２０は、通信タイムアウトが発生するまでＤＢアクセス処理プログラム１９２によってデータベース装置４００からの応答を受け付け、通信タイムアウトが発生するまでの間に命令タイムアウトが発生した場合は、ＤＢからの応答時間をログに格納せず、ＤＢアクセス処理プログラム１９２から命令タイムアウトを示す通知をユーザプログラム１８６へ渡す。
【００８７】
ステップＳ４０１において、データベース装置４００は、ＰＬＣ１００から送信されるＳＱＬ文を受信し、受信したＳＱＬ文を実行する。
【００８８】
ステップＳ４０３において、データベース装置４００は、ＳＱＬ文の実行結果をＰＬＣ１００へ応答する。
【００８９】
ステップＳ２１５において、プロセッサ１２０は、データベース装置４００からのＳＱＬ文の実行結果を示す応答を受信すると、ＳＱＬ文の送信後、データベース装置４００からの応答を受信するまでに要した応答時間の計測結果を取得し、ＤＢ応答時間１８４Ｊとして時刻情報と対応付けて稼働ログ１８４に保存する。
【００９０】
＜Ｈ．変形例＞
上述の実施形態の説明では、データベース装置４００からの応答があるまでの時間をＤＢ応答時間１８４Ｊとしてログに保存するため、ＤＢアクセス処理プログラム１９２がデータベース装置４００へＳＱＬ文を送信した後、データベース装置４００からの応答があるまでの応答時間を計測する例を示した。
【００９１】
この他に、データベース装置４００からの応答があるまでの応答時間を取得する方法は、以下のようにしてもよい。例えば、プロセッサ１２０がＳＱＬ文をデータベース装置４００へ送信した送信時刻と、ＰＬＣ１００がデータベース装置４００からＳＱＬ文の実行結果を示す応答を受信した受信時刻とをログに保存する。ＰＬＣ１００は、これら送信時刻と受信時刻との差分を求めることにより、ＰＬＣ１００からデータベース装置４００へアクセスする際のデータベース装置４００からの応答時間を取得することとしてもよい。また、ユーザは、ログに含まれる、これら送信時刻と受信時刻とを参照する命令を含むユーザプログラムをサポート装置３００によって生成し、ＰＬＣ１００に実行させることで、ＰＬＣ１００からデータベース装置４００へアクセスする際のデータベース装置４００からの応答時間を取得することとしてもよい。
【００９２】
図９は、変形例におけるＰＬＣ１００の処理手順およびデータベース装置４００の処理手順を示すフローチャートである。
【００９３】
ステップＳ１０１において、プロセッサ１２０は、ユーザプログラム１８６に含まれる命令に従って処理を実行し、データベース装置４００へアクセスするための命令を実行すると、ＤＢアクセス処理プログラム１９２によってデータベース装置４００へのアクセスを実行する。
【００９４】
ステップＳ２０１において、プロセッサ１２０は、ＤＢアクセス処理プログラム１９２によってデータベース装置４００へのアクセスを実行し、ユーザプログラム１８６に含まれる、データベース装置４００へアクセスするための命令に応じた命令文（ＳＱＬ文）を生成する。
【００９５】
ステップＳ２０３において、プロセッサ１２０は、生成したＳＱＬ文をデータベース装置４００へ送信する。
【００９６】
ステップＳ２２１において、プロセッサ１２０は、ＳＱＬ文を送信した時刻を取得し、ＳＱＬ文の送信処理を実行したことを、時刻情報と対応付けてログに保存する。
【００９７】
ステップＳ４０１において、データベース装置４００は、ＰＬＣ１００から送信されるＳＱＬ文を受信し、受信したＳＱＬ文を実行する。
【００９８】
ステップＳ４０３において、データベース装置４００は、ＳＱＬ文の実行結果をＰＬＣ１００へ応答する。
【００９９】
ステップＳ２２３において、プロセッサ１２０は、ＳＱＬ文のデータベース装置４００への送信後、通信のタイムアウト時間を設定する。プロセッサ１２０は、通信タイムアウトが発生するまでデータベース装置４００からの応答を受け付けており、データベース装置４００からの応答を受信すると、受信時刻を取得する。プロセッサ１２０は、データベース装置４００から応答結果を受信したことを、時刻情報と対応付けてログに保存する。
【０１００】
ステップＳ２２５において、プロセッサ１２０は、データベース装置４００からの応答をＤＢアクセス処理プログラム１９２からユーザプログラム１８６へ渡す。
【０１０１】
ステップＳ１０３において、プロセッサ１２０は、ＳＱＬ文の実行結果に応じてユーザプログラム１８６を実行する。
【０１０２】
上記の処理により、ＰＬＣ１００がデータベース装置４００へＳＱＬ文を送信した送信時刻と、データベース装置４００から応答を受け付けた受信時刻とがログに保存される。そのため、ＰＬＣ１００は、送信時刻と受信時刻との差分を求めることにより、ＤＢ応答時間１８４Ｊを取得することができる。
【０１０３】
＜Ｉ．データベース装置４００からの応答時間の取得＞
ＰＬＣ１００によって記録される稼働ログ１８４は、例えば、サポート装置３００によって取得され、ユーザは、サポート装置３００を操作することによって稼働ログ１８４を参照することができる。例えば、サポート装置３００は、以下のようにして稼働ログ１８４をＰＬＣ１００から取得する。すなわち、サポート装置３００は、ＰＬＣ１００と通信し、ＰＬＣ１００のシステムプログラム１８８によって稼働ログ１８４をメモリから読み出して、読み出された稼働ログ１８４をＰＬＣ１００からサポート装置３００へ応答させる。
【０１０４】
図１０は、サポート装置３００がＤＢ応答時間１８４Ｊを取得するための処理を示すフローチャートである。
【０１０５】
ステップＳ３１１において、サポート装置３００は、ＰＬＣ１００に対し、稼働ログ１８４の取得を指示する。
【０１０６】
ステップＳ２３１において、プロセッサ１２０は、システムプログラム１８８を実行することにより、メモリから稼働ログ１８４を読み出す。
【０１０７】
ステップＳ２３３において、プロセッサ１２０は、システムプログラム１８８の実行により、メモリから読み出した稼働ログ１８４をサポート装置３００へ応答する。
【０１０８】
ステップＳ３１３において、サポート装置３００は、ＰＬＣ１００から稼働ログ１８４を受信して、受信した稼働ログ１８４をモニタ３１４に表示する。
【０１０９】
この他にも、ユーザプログラムに所定の命令を含めることによって、稼働ログ１８４をメモリから読み出すこととしてもよい。ユーザは、サポート装置３００を操作して、状態取得命令（図５の例では「ＤＢ＿ＧｅｔＣｏｎｎｅｃｔｉｏｎＳｔａｔｕｓ］として示す）を含むユーザプログラム１８６を作成することができる。プロセッサ１２０は、ユーザプログラム１８６の状態取得命令により、システムプログラム１８８またはＤＢアクセス処理プログラム１９２を呼び出しつつＤＢ応答時間１８４Ｊを読み出す処理を実行する。ユーザプログラム１８６の実行によって、ＤＢ応答時間１８４Ｊを含む稼働ログ１８４を読み出すことで、例えばユーザプログラム１８６の任意の命令の実行後に稼働ログ１８４を取得することができ、ユーザは、ＰＬＣ１００とデータベース装置４００との通信における不具合等の原因に対処することができる。
【０１１０】
＜Ｊ．サポート装置３００におけるユーザインタフェースの例＞
図１１および図１２は、本実施形態にかかるサポート装置３００において提供されるユーザインタフェースの一例を示す図である。サポート装置３００は、例えば上述の処理によってＰＬＣ１００から稼働ログ１８４を取得し、取得した稼働ログ１８４を、サポート装置３００のモニタに表示させることができる。
【０１１１】
図１１は、サポート装置３００においてＤＢ応答時間１８４Ｊを含む稼働ログ１８４を表示する場合のユーザインタフェースの例を示す図である。
【０１１２】
図１１に示すように、表示画面３８０は、サポート装置３００が取得したＤＢ応答時間１８４Ｊを含む稼働ログ１８４を一覧にして表示する。応答時間ログ３８８の各エントリ（エントリ３８１、エントリ３８２、エントリ３８３、エントリ３８４、エントリ３８５）は、稼働ログ１８４（図６に示す）に含まれる各種のデータを表示する。
【０１１３】
サポート装置３００は、例えば取得ボタン３９０を表示画面３８０に含めて表示し、ユーザから取得ボタン３９０に対する入力操作を受け付けることにより、ＰＬＣ１００からＤＢ応答時間１８４Ｊを含む稼働ログ１８４を取得することとしてもよい。
【０１１４】
図１２は、サポート装置３００においてＤＢ応答時間１８４Ｊを時系列に表示する例を示す図である。図１１に示すように、時刻情報と対応付けてＤＢ応答時間１８４Ｊが記録されているため、例えばＤＢ応答時間トレンドデータ３９２において、サポート装置３００は、縦軸をＤＢ応答時間１８４Ｊとし、横軸を時刻としてグラフ形式でＤＢ応答時間１８４Ｊを時系列に表示することとしてもよい。図１２の例では、コネクション名１８４Ｆをユーザが指定する例を示している。コネクション名表示タブ３９３は、ユーザが指定したコネクション名を示し、ＤＢ応答時間１８４Ｊを時系列に表示している。
【０１１５】
図１２の例では、ＤＢ応答時間１８４Ｊは、ある一定の時間において長期化しているが、それ以外の時間では比較的安定している。そのため、設計者等は、例えば、ＰＬＣ１００とデータベース装置４００との通信経路において一時的に通信が遅延した等の可能性を検討することができる。また、ＤＢ応答時間１８４Ｊが時間の経過とともに徐々に長期化している場合は、設計者等は、例えば、データベース装置４００の処理に遅延が発生し、データベース装置４００の処理性能を増強する可能性を検討することができる。
【０１１６】
上述したような構成を採用することで、ユーザは、ユーザプログラム１８６が適切に実行されているか、および、ユーザプログラム１８６の実行時に不具合が生じたときに、何が原因であるかを容易に特定できる。これによって、プログラムのデバッグや健全性のチェックを効率的に行うことができ、例えばＰＬＣ１００とデータベース装置４００とを含む制御システムの処理に遅延等の不都合が発生する場合においても、その原因を解析することを容易にすることができる。
【０１１７】
また、上記の実施形態の説明では、サポート装置３００が稼働ログ１８４をモニタに表示するため、例えばＰＬＣ１００がサポート装置３００から稼働ログ１８４の読み出し要求をシステムプログラム１８８によって受け付けた場合に、稼働ログ１８４を所定のメモリから読み出してサポート装置３００へ応答する例を説明した。この他にも、例えばＣＰＵユニット１０４がＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバ機能を備え、ＦＴＰクライアントソフトによってＣＰＵユニット１０４にログインし、ＦＴＰクライアントソフトが稼働ログ１８４をＦＴＰによって取得することとしてもよい。
【０１１８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１９】
１  制御システム、１０  検出スイッチ、２０  リレー、３０  サーボモータドライバ、３２  モータ、１００  ＰＬＣ、１０２  電源ユニット、１０４  ＣＰＵユニット、１０６  ＩＯユニット、１０８  ＰＬＣシステムバス、１１０  フィールドバス、１１２  ネットワーク、１１４  接続ケーブル、１２０  プロセッサ、１２２  チップセット、１２４  システムクロック、１２６  主メモリ、１２８  不揮発性メモリ、１３０  ＵＳＢコネクタ、１４０  ＰＬＣシステムバスコントローラ、１４２，１５２，１６２  バッファメモリ、１４４  ＰＬＣシステムバス制御回路、１４６，１５６，１６６  ＤＭＡ制御回路、１４８  ＰＬＣシステムバスコネクタ、１５０  フィールドバスコントローラ、１５４  フィールドバス制御回路、１５８  フィールドバスコネクタ、１６０  上位通信コントローラ、１６４  上位通信制御回路、１６８  上位通信コネクタ、１７０  メモリカードインターフェイス、１７２  メモリカード、１８０  ＯＳ、１８４  稼働ログ、１８４Ｊ  ＤＢ応答時間、１８４２  ログファイル、１８６  ユーザプログラム、１８８  システムプログラム、１９０  シーケンス命令プログラム、１９２  アクセス処理プログラム、１９４  入出力処理プログラム、１９６  インタフェース処理プログラム、１９８  スケジューラ、２００  リモートＩＯターミナル、２０２  通信カプラ、２０８  ターミナルバス、３００  サポート装置、３０２  ＣＰＵ、３０４  ＲＯＭ、３０６  ＲＡＭ、３０８  ハードディスク、３１０  キーボード、３１２  マウス、３１４  モニタ、３１６  光学ディスク読取装置、３３０  サポートプログラム、３３２  光学記録媒体、３８８  応答時間ログ、３９２  ＤＢ応答時間トレンドデータ、３９３  ＤＢコネクション名表示タブ、４００  データベース装置。
【図１】
2014157505.tif 000003
【図２】
2014157505.tif 000004
【図３】
2014157505.tif 000005
【図４】
2014157505.tif 000006
【図５】
2014157505.tif 000007
【図６】
2014157505.tif 000008
【図７】
2014157505.tif 000009
【図８】
2014157505.tif 000010
【図９】
2014157505.tif 000011
【図１０】
2014157505.tif 000012
【図１１】
2014157505.tif 000013
【図１２】
2014157505.tif 000014