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