(57)【特許請求の範囲】
【請求項１】
制御対象機器を制御する制御装置であって、
ユーザプログラムを含むタスクを実行するタスク実行手段と、
前記タスク実行手段によりタスクが実行されているときに、前記ユーザプログラムにおいて参照および更新される変数を収集する収集手段と、
前記収集手段により収集された変数を管理する管理手段とを備え、
前記ユーザプログラムは、前記収集手段による変数の収集を指示する収集指示プログラムを含み、
前記収集指示プログラムは、利用者により前記ユーザプログラムの任意の位置に挿入可能であり、前記ユーザプログラムにおける当該収集指示プログラムの位置を利用者が識別するための識別情報を有し、
前記識別情報は、利用者により設定可能な値であり、
前記管理手段は、前記収集指示プログラムの実行により変数の収集が指示された場合に、前記収集手段により収集された変数と、前記収集指示プログラムの識別情報とを関連付けるように構成されていること
を特徴とする制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記収集指示プログラムは、前記収集手段により収集される変数を指定する指定情報を有すること
を特徴とする制御装置。
【請求項３】
請求項１または請求項２に記載の制御装置であって、
前記タスク実行手段は、複数の前記タスクを並行に実行し、かつ、前記複数のタスクの各タスクを前記各タスクに応じた周期で実行するように構成されていること
を特徴とする制御装置。
【請求項４】
請求項１から請求項３までのいずれか一つに記載の制御装置であって、
前記収集手段により収集された変数および前記変数に関連付けられた識別情報を、前記変数および前記識別情報を表示するためのツール装置に送信するための第１通信部を備えること
を特徴とする制御装置。
【請求項５】
ユーザプログラムを実行することにより制御対象機器を制御する制御装置と、前記ユーザプログラムを作成するためのツール装置とを備える制御システムであって、
前記制御装置は、
前記ユーザプログラムを含むタスクを実行するタスク実行手段と、
前記タスク実行手段によりタスクが実行されているときに、前記ユーザプログラムにおいて参照および更新される変数を収集する収集手段と、
前記収集手段により収集された変数を管理する管理手段とを含み、
前記ユーザプログラムは、前記収集手段による変数の収集を指示する収集指示プログラムを含み、
前記収集指示プログラムは、利用者により前記ユーザプログラムの任意の位置に挿入可能であり、前記ユーザプログラムにおける当該収集指示プログラムの位置を利用者が識別するための識別情報を有し、
前記識別情報は、利用者により設定可能な値であり、
前記管理手段は、前記収集指示プログラムの実行により変数の収集が指示された場合に、前記収集手段により収集された変数と、前記収集指示プログラムの識別情報とを関連付けるように構成されていること
を特徴とする制御システム。
【請求項６】
制御対象機器を制御する制御装置において実行されるユーザプログラムを作成するためのツール装置であって、
前記ユーザプログラムを作成するプログラム作成手段と、
前記プログラム作成手段により作成されたユーザプログラムを前記制御装置に送信するための第２通信部とを備え、
前記ユーザプログラムは、前記ユーザプログラムにおいて参照および更新される変数の収集を指示する収集指示プログラムを含み、
前記収集指示プログラムは、利用者により前記ユーザプログラムの任意の位置に挿入可能であり、前記ユーザプログラムにおける当該収集指示プログラムの位置を利用者が識別するための識別情報を有し、
前記識別情報は、利用者により設定可能な値であること
を特徴とするツール装置。
【請求項７】
請求項６に記載のツール装置であって、
前記収集指示プログラムは、前記制御装置により収集される変数を指定する指定情報を有すること
を特徴とするツール装置。
【請求項８】
請求項６または請求項７に記載のツール装置であって、
前記プログラム作成手段により作成されるユーザプログラムを表示する表示部を備え、
前記第２通信部は、前記制御装置により収集された変数と、前記変数に関連付けられた識別情報とを前記制御装置から受信するように構成され、
前記表示部は、前記第２通信部により受信した変数と、前記変数に関連付けられた識別情報とを表示するように構成されていること
を特徴とするツール装置。
【請求項９】
ユーザプログラムを含むタスクを実行するタスク実行手段と、前記タスク実行手段によりタスクが実行されているときに、前記ユーザプログラムにおいて参照および更新される変数を収集する収集手段と、前記収集手段により収集された変数を管理する管理手段とを備える制御装置に、前記収集手段による変数の収集を指示する手順を実行させるための収集指示プログラムであって、
前記ユーザプログラムに含まれており、利用者により前記ユーザプログラムの任意の位置に挿入可能であり、前記ユーザプログラムにおける位置を利用者が識別するための識別情報を有し、
前記識別情報は、利用者により設定可能な値であり、
前記管理手段は、前記収集手段により収集された変数と、前記識別情報とを関連付けること
を特徴とする収集指示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象機器を制御する制御装置、その制御装置を備える制御システム、その制御装置において実行されるユーザプログラムを作成するためのツール装置、および、ユーザプログラムに含まれる収集指示プログラムに関する。
【背景技術】
【０００２】
従来、工場の生産ラインに設置される産業用機械などを制御するＰＬＣ（Programmable Logic Controller：プログラマブルロジックコントローラ）が知られている（たとえば、特許文献１参照）。
【０００３】
特許文献１のＰＬＣは、ＰＬＣを制御するＣＰＵユニットと、センサからの信号が入力される入力ユニットと、産業用機械などに制御信号を出力する出力ユニットとを備えている。ＣＰＵユニットは、産業用機械などを制御するためのユーザプログラムを記憶するメモリを有する。このユーザプログラムは、ＣＰＵユニットに接続されるツール装置により編集可能に構成されている。
【０００４】
そして、ＰＬＣでは、入力ユニットに入力された信号をＣＰＵユニットのメモリに取り込む処理と、ユーザプログラムを実行する処理と、ユーザプログラムの実行結果（演算結果）をメモリに書き込んで出力ユニットに送り出す処理と、ツール装置との間でデータの送受信を行うなどの周辺処理とが繰り返し行われる。これにより、ＰＬＣは、センサからの入力に基づいて産業用機械などを制御する。
【０００５】
また、特許文献１のＰＬＣは、ユーザプログラムに含まれるＴＲＳＭ命令（トレースサンプリング命令）が実行された場合に、ユーザプログラムにおいて参照および更新される変数を収集するように構成されている。これにより、ＰＬＣでは、ユーザプログラムの実行に伴う変数の変化についてデータトレースすることが可能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１４６０４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された従来のＰＬＣにおいて、ユーザプログラムに複数のＴＲＳＭ命令が含まれている場合に、どのＴＲＳＭ命令によりどの収集結果が得られたのかを利用者が判断することが困難であるという問題点がある。
【０００８】
本発明は、上記の課題を解決するためになされたものであり、本発明の目的は、収集結果がどの収集指示プログラムにより収集されたのかを利用者が判断することが可能な制御装置、その制御装置を備える制御システム、その制御装置において実行されるユーザプログラムを作成するためのツール装置、および、ユーザプログラムに含まれる収集指示プログラムを提供することである。
【課題を解決するための手段】
【０００９】
本発明による制御装置は、制御対象機器を制御する制御装置であって、ユーザプログラムを含むタスクを実行するタスク実行手段と、前記タスク実行手段によりタスクが実行されているときに、前記ユーザプログラムにおいて参照および更新される変数を収集する収集手段と、前記収集手段により収集された変数を管理する管理手段とを備え、前記ユーザプログラムは、前記収集手段による変数の収集を指示する収集指示プログラムを含み、前記収集指示プログラムは、利用者により前記ユーザプログラムの任意の位置に挿入可能であり、前記ユーザプログラムにおける当該収集指示プログラムの位置を利用者が識別するための識別情報を有し、前記識別情報は、利用者により設定可能な値であり、前記管理手段は、前記収集指示プログラムの実行により変数の収集が指示された場合に、前記収集手段により収集された変数と、前記収集指示プログラムの識別情報とを関連付けるように構成されている。
【００１０】
このように構成することによって、ユーザプログラムにおける位置を利用者が識別するための識別情報を収集指示プログラムが有することにより、管理手段が収集された変数（収集結果）と識別情報とを関連付けることができる。これにより、収集結果がどの収集指示プログラムにより収集されたのかを利用者が識別情報に基づいて判断することができる。
【００１１】
上記制御装置において、前記収集指示プログラムは、前記収集手段により収集される変数を指定する指定情報を有していてもよい。
【００１２】
このように構成すれば、収集手段により、指定された変数を収集することができる。
【００１３】
上記制御装置において、前記タスク実行手段は、複数の前記タスクを並行に実行し、かつ、前記複数のタスクの各タスクを前記各タスクに応じた周期で実行するように構成されていてもよい。なお、複数のタスクを並行に実行するとは、複数のタスクを同時に並行して実行する場合と、時分割により複数のタスクを並行して実行する場合とを含む。
【００１４】
このように構成すれば、タスクの処理を効率的に行うことができる。
【００１５】
上記制御装置において、前記収集手段により収集された変数および前記変数に関連付けられた識別情報を、前記変数および前記識別情報を表示するためのツール装置に送信するための第１通信部を備えていてもよい。
【００１６】
このように構成すれば、利用者がツール装置を用いて、収集結果を識別情報と関連付けて確認することができる。
【００１７】
本発明による制御システムは、ユーザプログラムを実行することにより制御対象機器を制御する制御装置と、前記ユーザプログラムを作成するためのツール装置とを備える制御システムであって、前記制御装置は、前記ユーザプログラムを含むタスクを実行するタスク実行手段と、前記タスク実行手段によりタスクが実行されているときに、前記ユーザプログラムにおいて参照および更新される変数を収集する収集手段と、前記収集手段により収集された変数を管理する管理手段とを含み、前記ユーザプログラムは、前記収集手段による変数の収集を指示する収集指示プログラムを含み、前記収集指示プログラムは、利用者により前記ユーザプログラムの任意の位置に挿入可能であり、前記ユーザプログラムにおける当該収集指示プログラムの位置を利用者が識別するための識別情報を有し、前記識別情報は、利用者により設定可能な値であり、前記管理手段は、前記収集指示プログラムの実行により変数の収集が指示された場合に、前記収集手段により収集された変数と、前記収集指示プログラムの識別情報とを関連付けるように構成されている。
【００１８】
このように構成することによって、ユーザプログラムにおける位置を利用者が識別するための識別情報を収集指示プログラムが有することにより、管理手段が収集された変数（収集結果）と識別情報とを関連付けることができる。これにより、収集結果がどの収集指示プログラムにより収集されたのかを利用者が識別情報に基づいて判断することができる。
【００１９】
本発明によるツール装置は、制御対象機器を制御する制御装置において実行されるユーザプログラムを作成するためのツール装置であって、前記ユーザプログラムを作成するプログラム作成手段と、前記プログラム作成手段により作成されたユーザプログラムを前記制御装置に送信するための第２通信部とを備え、前記ユーザプログラムは、前記ユーザプログラムにおいて参照および更新される変数の収集を指示する収集指示プログラムを含み、前記収集指示プログラムは、利用者により前記ユーザプログラムの任意の位置に挿入可能であり、前記ユーザプログラムにおける当該収集指示プログラムの位置を利用者が識別するための識別情報を有し、前記識別情報は、利用者により設定可能な値である。
【００２０】
このように構成することによって、ユーザプログラムにおける位置を利用者が識別するための識別情報を収集指示プログラムが有することにより、制御装置において収集された変数（収集結果）と識別情報とを関連付けることができる。これにより、収集結果がどの収集指示プログラムにより収集されたのかを利用者が識別情報に基づいて判断することができる。
【００２１】
上記ツール装置において、前記収集指示プログラムは、前記制御装置により収集される変数を指定する指定情報を有していてもよい。
【００２２】
このように構成すれば、制御装置において指定された変数を収集することができる。
【００２３】
上記ツール装置において、前記プログラム作成手段により作成されるユーザプログラムを表示する表示部を備え、前記第２通信部は、前記制御装置により収集された変数と、前記変数に関連付けられた識別情報とを前記制御装置から受信するように構成され、前記表示部は、前記第２通信部により受信した変数と、前記変数に関連付けられた識別情報とを表示するように構成されていてもよい。
【００２４】
このように構成すれば、収集結果を識別情報と関連付けて利用者が確認することができる。
【００２５】
本発明の収集指示プログラムは、ユーザプログラムを含むタスクを実行するタスク実行手段と、前記タスク実行手段によりタスクが実行されているときに、前記ユーザプログラムにおいて参照および更新される変数を収集する収集手段と、前記収集手段により収集された変数を管理する管理手段とを備える制御装置に、前記収集手段による変数の収集を指示する手順を実行させるための収集指示プログラムであって、前記ユーザプログラムに含まれており、利用者により前記ユーザプログラムの任意の位置に挿入可能であり、前記ユーザプログラムにおける位置を利用者が識別するための識別情報を有し、前記識別情報は、利用者により設定可能な値であり、前記管理手段は、前記収集手段により収集された変数と、前記識別情報とを関連付ける。                                                                              
【００２６】
このように構成することによって、ユーザプログラムにおける位置を利用者が識別するための識別情報を収集指示プログラムが有することにより、制御装置において収集された変数（収集結果）と識別情報とを関連付けることができる。これにより、収集結果がどの収集指示プログラムにより収集されたのかを利用者が識別情報に基づいて判断することができる。
【発明の効果】
【００２７】
本発明の制御装置、その制御装置を備える制御システム、その制御装置において実行されるユーザプログラムを作成するためのツール装置、および、ユーザプログラムに含まれる収集指示プログラムによれば、収集結果がどの収集指示プログラムにより収集されたのかを利用者が判断することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態による制御システムの全体構成を示したハードウェアブロック図である。
【図２】図１に示した制御システムのＣＰＵユニットおよびツール装置の構成を示したハードウェアブロック図である。
【図３】図２に示したＣＰＵユニットのＲＯＭに記憶されるユーザプログラムのＴＲＳＭ命令をラダー表示した図である。
【図４】図２に示したＣＰＵユニットのＲＯＭに記憶されるタスクに関する情報を説明するための図である。
【図５】図２に示したＣＰＵユニットのＲＯＭに記憶されるトレース番号情報を説明するための図である。
【図６】図２に示したＣＰＵユニットのＣＰＵの機能ブロック図である。
【図７】本発明の一実施形態による制御システムのデータトレース時の動作を説明するためのフローチャートである。
【図８】本発明の一実施形態によるＣＰＵユニットのデータトレース時の動作を説明するためのタイムチャートである。
【図９】図２に示したＣＰＵユニットのＲＡＭに記憶される変数Ｖ１のトレース結果を説明するための図である。
【図１０】図２に示したＣＰＵユニットのＲＡＭに記憶される変数Ｖ２のトレース結果を説明するための図である。
【図１１Ａ】本発明の一実施形態によるツール装置のトレース結果の表示時の動作を説明するための図であって、変数Ｖ１が選択された状態を示した図である。
【図１１Ｂ】本発明の一実施形態によるツール装置のトレース結果の表示時の動作を説明するための図であって、カーソルＣ２が移動された状態を示した図である。
【図１１Ｃ】本発明の一実施形態によるツール装置のトレース結果の表示時の動作を説明するための図であって、変数Ｖ２が選択された状態を示した図である。
【発明を実施するための形態】
【００２９】
以下、本発明の実施形態について図面を参照して説明する。
【００３０】
まず、図１〜図６を参照して、本発明の一実施形態による制御システム３００の構成について説明する。
【００３１】
制御システム３００は、図１に示すように、産業用機械などの制御対象機器６０を制御するＰＬＣ１００と、ＰＬＣ１００において実行されるユーザプログラムを作成・編集するためのツール装置２００とを備えている。
【００３２】
ＰＬＣ１００は、ＰＬＣ１００を制御するＣＰＵユニット１と、センサ５０からの信号が入力される入力ユニット２と、産業用機械などの制御対象機器６０に制御信号を出力する出力ユニット３と、各ユニットに電力を供給する電源ユニット４と、各ユニットを接続する内部バス５とを含んでいる。なお、ＣＰＵユニット１は、本発明の「制御装置」の一例である。
【００３３】
ＰＬＣ１００は、ユーザプログラムを含むタスクを実行することにより、センサ５０からの入力に基づいて制御対象機器６０を制御するように構成されている。すなわち、ユーザプログラムは、制御対象機器６０を制御するためのプログラムである。
【００３４】
ＣＰＵユニット１では、ユーザプログラムを含むシステムプログラム１２ａ（図２参照）がインストールされており、そのシステムプログラム１２ａが実行されることによりＣＰＵユニット１の動作が制御されるように構成されている。
【００３５】
なお、システムプログラム１２ａには、入力ユニット２に入力された信号をＣＰＵユニット１に取り込む処理を実行するためのプログラムや、ＣＰＵユニット１による演算結果を出力ユニット３に送り出す処理を実行するためのプログラムなどが含まれている。
【００３６】
ＣＰＵユニット１は、制御対象機器６０を制御する通常の動作を行うことが可能であり、かつ、データトレースを行うことが可能なように構成されている。ここで、データトレースとは、ユーザプログラムにおいて参照および更新される変数を収集することをいう。具体的には、データトレースは、ユーザプログラムを含むタスクが実行されているときの変数の経時変化を収集する機能である。また、データトレースは、ユーザプログラムをデバッグする際に、ユーザプログラムの動作を確認するために行われる。すなわち、データトレースは、ユーザプログラムの欠陥を検出するために行われる。
【００３７】
ＣＰＵユニット１は、図２に示すように、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、通信インターフェース（以下、「通信ＩＦ」という）１４および１５とを含んでいる。なお、通信ＩＦ１５は、本発明の「第１通信部」の一例である。
【００３８】
ＣＰＵ１１は、システムプログラム１２ａを実行する機能を有する。ＣＰＵ１１は、シングルコアであり、時分割により複数のタスクを並行して実行するように構成されている。すなわち、ＣＰＵ１１では、マルチタスクで処理が実行される。
【００３９】
ＲＯＭ１２は、不揮発性のメモリであり、たとえば、フラッシュメモリである。ＲＯＭ１２には、ユーザプログラムを含むシステムプログラム１２ａが記憶されるとともに、ＣＰＵユニット１において実行されるタスクに関する情報Ｌ１（図４参照）が記憶されている。タスクに関する情報Ｌ１には、各タスクの名称と、各タスクの優先度と、各タスクが実行される周期と、各タスクで実行されるユーザプログラムとが含まれている。なお、タスクは、優先度の値が小さいタスクが優先的に実行される。また、ＣＰＵユニット１では、予め設定された時間間隔（たとえば、１ｍｓ）の制御サイクルを処理全体の共通サイクルとして採用している。また、ユーザプログラムは、たとえば、ラダー言語で記述されている。
【００４０】
ここで、ユーザプログラムは、プログラム構成単位（Program Organization Unit：ＰＯＵ）により構成されている。プログラム構成単位は、プログラム管理上の最小単位であり、プログラムと、ファンクションと、ファンクションブロックとを含んでいる。そして、ファンクションおよびファンクションブロックは、再利用することが可能である。すなわち、ファンクションおよびファンクションブロックは、複数のユーザプログラムで共用することが可能である。なお、ファンクションは、所定の入力値が入力された場合に、所定の入力値に対応する一定の出力値を出力する関数であり、ファンクションブロックは、内部状態を持てることにより、入力値に対する出力値が一定ではない関数である。
【００４１】
また、プログラム構成単位のファンクションブロックの一つとして、図３に示すように、トレースサンプリング命令（以下、「ＴＲＳＭ命令」という）Ｐがある。このＴＲＳＭ命令Ｐは、ツール装置２００を用いて利用者がユーザプログラムを作成・編集する際に、ユーザプログラムの任意の位置に挿入することが可能である。なお、ＴＲＳＭ命令Ｐは、本発明の「収集指示プログラム」の一例である。
【００４２】
ＴＲＳＭ命令Ｐにはイネーブル入力ENが入力されるとともに、ＴＲＳＭ命令Ｐからはイネーブル出力ENOが出力されている。そして、ＴＲＳＭ命令Ｐでは、イネーブル入力ENが「０」である場合に、ボディ部分のプログラム（データトレースを実行するためのプログラム）を実行することなく、イネーブル出力ENOから「０」が出力される。また、ＴＲＳＭ命令Ｐでは、イネーブル入力ENが「１」である場合に、ボディ部分のプログラムを実行し、イネーブル出力ENOから「１」が出力される。すなわち、ＣＰＵユニット１において通常の動作が行われる場合には、イネーブル入力に「０」が入力され、ＣＰＵユニット１においてデータトレースが行われる場合には、イネーブル入力ENに「１」が入力される。
【００４３】
また、ＴＲＳＭ命令Ｐには、入力パラメータ（引数）TraceNoおよびPointが入力されている。入力パラメータTraceNoは、トレース番号であり、たとえば、「０」〜「３」の値が入力される。また、入力パラメータPointは、ポイント番号であり、たとえば、「０」〜「２５５」の値が入力される。すなわち、ＴＲＳＭ命令Ｐは、トレース番号とポイント番号とを有する。なお、トレース番号は、本発明の「指定情報」の一例であり、ポイント番号は、本発明の「識別情報」の一例である。
【００４４】
トレース番号は、ＴＲＳＭ命令Ｐにより収集される変数を指定するための情報であり、ツール装置２００を用いて利用者がユーザプログラムを作成・編集する際に、「０」〜「３」のうちの所望の値が設定される。すなわち、ユーザプログラムの任意の位置に挿入されるＴＲＳＭ命令Ｐのトレース番号は、ユーザプログラムの作成・編集時に利用者により予め設定されている。
【００４５】
ポイント番号は、ユーザプログラムにおけるＴＲＳＭ命令Ｐの位置を利用者が識別するための情報であり、ツール装置２００を用いて利用者がユーザプログラムを作成・編集する際に、「０」〜「２５５」のうちの所望の値が設定される。すなわち、ユーザプログラムの任意の位置に挿入されるＴＲＳＭ命令Ｐのポイント番号は、ユーザプログラムの作成・編集時に利用者により予め設定されている。そして、ユーザプログラムに複数のＴＲＳＭ命令Ｐが挿入される場合には、各ＴＲＳＭ命令Ｐに異なるポイント番号が利用者により付与されることにより、ユーザプログラムにおけるＴＲＳＭ命令Ｐの位置を利用者が識別することが可能である。
【００４６】
また、ＴＲＳＭ命令Ｐからは、出力パラメータ（戻り値）Outが出力されている。なお、出力パラメータOutは、ブーリアン型であり、常にtrueを出力する。
【００４７】
図４に示すタスクに関する情報Ｌ１において、タスクＡは、タスクＢおよびＣよりも優先的に実行されるとともに、１ｍｓの周期でユーザプログラムＰ１およびＰ２を実行する。すなわち、タスクＡは、１回分の制御サイクル（１ｍｓの時間間隔）を実行サイクルとしている。ここで、たとえば、ユーザプログラムＰ１の最後には、トレース番号が「０」であり、ポイント番号が「１」であるＴＲＳＭ命令Ｐが挿入されている。また、ユーザプログラムＰ２の最後には、トレース番号が「０」であり、ポイント番号が「２」であるＴＲＳＭ命令Ｐが挿入されている。
【００４８】
また、タスクＢは、タスクＣよりも優先的に実行されるとともに、２ｍｓの周期でユーザプログラムＰ３およびＰ４を実行する。すなわち、タスクＢは、２回分の制御サイクル（２ｍｓの時間間隔）を実行サイクルとしている。また、タスクＢの周期は、タスクＡの周期の整数倍（２倍）に設定されている。ここで、たとえば、ユーザプログラムＰ３の最後には、トレース番号が「０」であり、ポイント番号が「３」であるＴＲＳＭ命令Ｐが挿入されている。また、ユーザプログラムＰ４の最後には、トレース番号が「０」であり、ポイント番号が「４」であるＴＲＳＭ命令Ｐが挿入されている。
【００４９】
また、タスクＣは、タスクＡおよびＢよりも劣後して実行されるとともに、４ｍｓの周期でユーザプログラムＰ５を実行する。すなわち、タスクＣは、４回分の制御サイクル（４ｍｓの時間間隔）を実行サイクルとしている。また、タスクＣの周期は、タスクＡの周期の整数倍（４倍）に設定されている。ここで、たとえば、ユーザプログラムＰ５の最後には、トレース番号が「０」であり、ポイント番号が「５」であるＴＲＳＭ命令Ｐが挿入されている。
【００５０】
また、ＲＯＭ１２には、トレース番号に対応付けられた変数に関するトレース番号情報Ｌ２（図５参照）が記憶されている。トレース番号情報Ｌ２には、トレース番号と、各トレース番号に対応付けられた変数名とが含まれている。このトレース番号情報Ｌ２は、利用者がツール装置２００を用いて編集することが可能である。すなわち、利用者がツール装置２００を用いて、トレース番号に対応付けられた変数を変更することが可能である。
【００５１】
図５の例では、トレース番号「０」には、変数Ｖ１およびＶ２が設定されている。このため、ユーザプログラムにおいてトレース番号「０」を有するＴＲＳＭ命令Ｐ（図３参照）が行われるときに、後述するデータ収集部２２（図６参照）により変数Ｖ１およびＶ２の値が収集される。また、トレース番号「１」には、変数Ｖ３が設定されている。このため、ユーザプログラムにおいてトレース番号「１」を有するＴＲＳＭ命令Ｐが行われるときに、データ収集部２２により変数Ｖ３の値が収集される。
【００５２】
また、トレース番号「２」には変数Ｖ４が設定されている。このため、ユーザプログラムにおいてトレース番号「２」を有するＴＲＳＭ命令Ｐが行われるときに、データ収集部２２により変数Ｖ４の値が収集される。また、トレース番号「３」には、変数Ｖ５、Ｖ６およびＶ７が設定されている。このため、ユーザプログラムにおいてトレース番号「３」を有するＴＲＳＭ命令Ｐが行われるときに、データ収集部２２により変数Ｖ５、Ｖ６およびＶ７の値が収集される。
【００５３】
ＲＡＭ１３は、揮発性のメモリであり、たとえば、ＤＲＡＭである。ＲＡＭ１３は、ＣＰＵ１１により実行されるシステムプログラム１２ａなどを一時的に記憶する機能を有する。具体的には、ＲＡＭ１３は、ユーザプログラムが実行される際に、ユーザプログラムにおいて参照および更新される変数を記憶する機能を有する。
【００５４】
通信ＩＦ１４は、内部バス５に接続されており、ＣＰＵユニット１が内部バス５を介して各ユニットと通信するために設けられている。通信ＩＦ１５は、ツール装置２００の通信ＩＦ３６（図２参照）に接続されており、ＣＰＵユニット１がツール装置２００と通信するために設けられている。
【００５５】
また、ＣＰＵユニット１は、図６に示すように、タスク実行部２１と、データ収集部２２と、トレース番号設定部２３と、収集データ管理部２４とを含んでいる。なお、タスク実行部２１、データ収集部２２、トレース番号設定部２３および収集データ管理部２４は、ＣＰＵ１１がシステムプログラム１２ａを実行することにより実現される。また、タスク実行部２１は本発明の「タスク実行手段」の一例であり、データ収集部２２は本発明の「収集手段」の一例であり、収集データ管理部２４は本発明の「管理手段」の一例である。
【００５６】
タスク実行部２１は、複数のタスクを並行に実行し、かつ、複数のタスクの各タスクを各タスクに応じた周期で実行するように構成されている。具体的には、タスク実行部２１は、時分割によりタスクＡ、ＢおよびＣを並行に実行する。また、タスク実行部２１は、タスクＡを１ｍｓの周期で実行し、タスクＢを２ｍｓの周期で実行し、タスクＣを４ｍｓの周期で実行する。
【００５７】
データ収集部２２は、タスク実行部２１によりタスクが実行されているときに、タスクの実行に伴う変数の変化を収集する機能を有する。具体的には、データ収集部２２は、ＴＲＳＭ命令Ｐ（図３参照）により変数の収集が指示された場合に、トレース番号により指定された変数を収集するように構成されている。なお、データ収集部２２は、ＴＲＳＭ命令Ｐのボディ部分がＣＰＵ１１により実行されることによって実現される。
【００５８】
トレース番号設定部２３は、ツール装置２００から受信したトレース番号に基づいて、データトレースの対象となるトレース番号（収集データ管理部２４により管理される変数を指定するトレース番号）を設定する機能を有する。これにより、たとえば、収集データ管理部２４は、トレース番号設定部２３によりトレース番号「０」が設定された場合には、データ収集部２２により収集された変数Ｖ１〜Ｖ７のうち、変数Ｖ１およびＶ２のみを管理する。
【００５９】
収集データ管理部２４は、データ収集部２２により収集されたデータ（収集結果）と、そのデータの収集を指示したＴＲＳＭ命令Ｐのポイント番号とを関連付ける機能を有する。また、収集データ管理部２４は、データ収集部２２により収集されたデータに対して、そのデータが収集された順番を示すインデックス番号や、データトレースが開始されてからの経過時間を関連付ける機能も有する。
【００６０】
ツール装置２００では、サポートプログラム３２ａ（図２参照）がインストールされており、そのサポートプログラム３２ａが実行されることにより各種の機能が実現されるように構成されている。ツール装置２００は、たとえば、パーソナルコンピュータである。
【００６１】
ツール装置２００は、図２に示すように、ＣＰＵ３１と、ＲＯＭ３２と、ＲＡＭ３３と、操作部３４と、表示部３５と、通信ＩＦ３６とを含んでいる。なお、ＣＰＵ３１は、本発明の「プログラム作成手段」の一例であり、通信ＩＦ３６は、本発明の「第２通信部」の一例である。
【００６２】
ＣＰＵ３１は、サポートプログラム３２ａを実行する機能を有する。ＲＯＭ３２は、不揮発性のメモリであり、たとえば、フラッシュメモリである。ＲＯＭ３２には、サポートプログラム３２ａが記憶されている。サポートプログラム３２ａには、たとえば、ユーザプログラムの作成・編集用プログラムや、ＣＰＵユニット１で行われたデータトレースの結果の表示制御プログラムなどが含まれている。
【００６３】
ＲＡＭ３３は、揮発性のメモリであり、たとえば、ＤＲＡＭである。ＲＡＭ３３は、ＣＰＵ３１により実行されるサポートプログラム３２ａなどを一時的に記憶する機能を有する。
【００６４】
操作部３４は、利用者が各種の操作指令を入力するために設けられている。表示部３５は、たとえば、液晶ディスプレイであり、作成・編集されるユーザプログラムや、データトレースの結果などを表示する機能を有する。通信ＩＦ３６は、ＣＰＵユニット１の通信ＩＦ１５に接続されており、ツール装置２００がＣＰＵユニット１と通信するために設けられている。
【００６５】
ツール装置２００は、ＰＬＣ１００のＣＰＵユニット１において実行されるユーザプログラムの作成・編集機能を有する。したがって、利用者は、ツール装置２００を用いて、ユーザプログラムの任意の位置にＴＲＳＭ命令Ｐ（図３参照）を挿入することが可能である。また、利用者は、ツール装置２００を用いて、ユーザプログラムに挿入されるＴＲＳＭ命令Ｐのトレース番号およびポイント番号を所望の値に設定することが可能である。
【００６６】
また、ツール装置２００は、通信ＩＦ３６により、ユーザプログラムをＣＰＵユニット１からダウンロードするとともに、ユーザプログラムをＣＰＵユニット１にアップロードするように構成されている。これにより、ツール装置２００は、ＴＲＳＭ命令Ｐを含むユーザプログラムを通信ＩＦ３６からＣＰＵユニット１に送信可能に構成されている。
【００６７】
また、ツール装置２００は、ＣＰＵユニット１に対してデータトレースの実行を指示する機能を有するとともに、利用者がデータトレースの結果を確認するために、ＣＰＵユニット１によるトレース結果のグラフを表示部３５に表示する機能を有する。
【００６８】
次に、図７を参照して、本実施形態による制御システム３００のデータトレース時の動作について説明する。
【００６９】
まず、ツール装置２００（図２参照）では、ステップＳ１において、ＣＰＵ３１により、データトレースを受け付けたか否かが判断される。具体的には、たとえば、ＣＰＵ３１により、トレース番号を指定する項目と、データトレース開始ボタンとを表示部３５に表示する。その後、利用者により操作部３４が操作されることによって、データトレース開始ボタンが押されたか否かが判断される。そして、データトレースを受け付けていないと判断される場合には、ステップＳ１が繰り返し行われる。すなわち、ツール装置２００は、データトレースを受け付けるまで待機する。そして、データトレースを受け付けたと判断される場合には、ステップＳ２に移る。
【００７０】
次に、ステップＳ２において、ＣＰＵ３１により、データトレース開始指示が通信ＩＦ３６からＰＬＣ１００（図１参照）に送信される。なお、このデータトレース開始指示には、データトレースの対象となる変数を指定するためのトレース番号が含まれている。その後、ステップＳ３に移る。
【００７１】
また、ＰＬＣ１００のＣＰＵユニット１（図２参照）では、ステップＳ１１において、ＣＰＵ１１により、通信ＩＦ１５がデータトレース開始指示を受信したか否かが判断される。そして、データトレース開始指示を受信していないと判断される場合には、ステップＳ１１が繰り返し行われる。すなわち、ＣＰＵユニット１は、データトレース開始指示を受信するまで待機する。そして、データトレース開始指示を受信したと判断される場合には、ステップＳ１２に移る。
【００７２】
次に、ステップＳ１２において、ＣＰＵ１１により、データトレース処理が行われる。これにより、トレース番号により指定された変数が収集される。たとえば、トレース番号が「０」である場合には、変数Ｖ１およびＶ２が収集される。つまり、ＣＰＵユニット１では、ツール装置２００から送信されるトレース番号により指定された変数が収集される。そして、データトレース処理が終了すると、ステップＳ１３に移る。なお、データトレース処理については、後で詳細に説明する。
【００７３】
次に、ステップＳ１３において、ＣＰＵ１１により、トレース結果が通信ＩＦ１５からツール装置２００に送信される。その後、データトレース時のＰＬＣ１００の動作が終了される。
【００７４】
また、ツール装置２００では、ステップＳ３において、ＣＰＵ３１により、通信ＩＦ３６がトレース結果を受信したか否かが判断される。そして、トレース結果を受信したと判断される場合には、ステップＳ４に移る。その一方、トレース結果を受信していないと判断される場合には、ステップＳ３が繰り返し行われる。
【００７５】
次に、ステップＳ４において、ＣＰＵ３１により、通信ＩＦ３６により受信したトレース結果が表示部３５に表示される。なお、トレース結果の表示については、後で詳細に説明する。その後、データトレース時のツール装置２００の動作が終了される。
【００７６】
次に、図８〜図１０を参照して、本実施形態によるＣＰＵユニット１のデータトレース時の動作について説明する。なお、以下の動作は、ＣＰＵユニット１（図２参照）のＣＰＵ１１によりシステムプログラム１２ａが実行されることにより行われる。すなわち、システムプログラム１２ａは、ＣＰＵユニット１に以下の動作を実行させるためのシステムプログラムである。
【００７７】
なお、以下では、トレース番号が「０」であるトレース開始指示をツール装置２００（図２参照）から受信した場合を例に説明する。すなわち、トレース番号設定部２３（図６参照）によりトレース番号「０」が設定されており、収集データ管理部２４（図６参照）により管理される変数が変数Ｖ１およびＶ２である場合を例に説明する。また、以下では、データトレースが開始されてから、変数Ｖ１が１ｍｓ毎に「１、２、３、２、１、２、３・・・」と変化し、変数Ｖ２が１ｍｓ毎に「５、４、５、４、５、４、５・・・」と変化する場合を例に説明する。
【００７８】
まず、ＣＰＵ１１により、制御サイクルと同時にタスクＡ、ＢおよびＣの実行サイクルが開始される。なお、タスクＡは１ｍｓの周期で実行され、タスクＢは２ｍｓの周期で実行され、タスクＣは４ｍｓの周期で実行される。
【００７９】
具体的には、タスク実行部２１（図６参照）により、最も優先度の高いタスクＡの処理が開始される。このとき、タスクＢおよびＣは、タスクＡよりも優先度が低いことから、実際の処理が開始されることなく待機状態になる。
【００８０】
そして、タスクＡのユーザプログラムＰ１が実行される。ここで、ユーザプログラムＰ１の最後には、トレース番号が「０」であり、ポイント番号が「１」であるＴＲＳＭ命令Ｐ（図３参照）が挿入されている。このため、データ収集部２２（図６参照）により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「１」に対して、収集された順番を示すインデックス番号「１」と、データトレースが開始されてからの経過時間「０．１５ｍｓ」と、ＴＲＳＭ命令Ｐのポイント番号「１」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「５」に対して、収集された順番を示すインデックス番号「１」と、データトレースが開始されてからの経過時間「０．１５ｍｓ」と、ＴＲＳＭ命令Ｐのポイント番号「１」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の１番目の収集結果がＲＡＭ１３に蓄積される。
【００８１】
そして、タスクＡのユーザプログラムＰ２が実行される。ここで、ユーザプログラムＰ２の最後には、トレース番号が「０」であり、ポイント番号が「２」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「１」に対して、インデックス番号「２」と、経過時間「０．３ｍｓ」と、ポイント番号「２」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「５」に対して、インデックス番号「２」と、経過時間「０．３ｍｓ」と、ポイント番号「２」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の２番目の収集結果がＲＡＭ１３に蓄積される。
【００８２】
次に、タスクＡの処理が完了すると、タスクＣよりも優先度が高いタスクＢの処理が開始される。このとき、タスクＣは待機状態のままである。
【００８３】
そして、タスクＢのユーザプログラムＰ３が実行される。ここで、ユーザプログラムＰ３の最後には、トレース番号が「０」であり、ポイント番号が「３」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「１」に対して、インデックス番号「３」と、経過時間「０．６ｍｓ」と、ポイント番号「３」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「５」に対して、インデックス番号「３」と、経過時間「０．６ｍｓ」と、ポイント番号「３」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の３番目の収集結果がＲＡＭ１３に蓄積される。
【００８４】
次に、タスクＢのユーザプログラムＰ４が実行される。その後、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから１ｍｓ経過すると、タスクＡの実行サイクルが経過することから、タスクＢのユーザプログラムＰ４が中断され、タスク実行部２１により、タスクＡが実行される。このとき、タスクＢおよびＣは待機状態である。
【００８５】
そして、タスクＡのユーザプログラムＰ１が実行される。ここで、ユーザプログラムＰ１の最後には、トレース番号が「０」であり、ポイント番号が「１」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「２」に対して、インデックス番号「４」と、経過時間「１．１５ｍｓ」と、ポイント番号「１」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「４」に対して、インデックス番号「４」と、経過時間「１．１５ｍｓ」と、ポイント番号「１」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の４番目の収集結果がＲＡＭ１３に蓄積される。
【００８６】
そして、タスクＡのユーザプログラムＰ２が実行される。ここで、ユーザプログラムＰ２の最後には、トレース番号が「０」であり、ポイント番号が「２」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「２」に対して、インデックス番号「５」と、経過時間「１．３ｍｓ」と、ポイント番号「２」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「４」に対して、インデックス番号「５」と、経過時間「１．３ｍｓ」と、ポイント番号「２」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の５番目の収集結果がＲＡＭ１３に蓄積される。
【００８７】
次に、タスクＡの処理が完了すると、タスクＣよりも優先度が高いタスクＢの処理が再開される。このとき、タスクＣは待機状態のままである。そして、タスク実行部２１によりタスクＢのユーザプログラムＰ４の残りが実行される。
【００８８】
ここで、ユーザプログラムＰ４の最後には、トレース番号が「０」であり、ポイント番号が「４」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「２」に対して、インデックス番号「６」と、経過時間「１．４５ｍｓ」と、ポイント番号「４」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「４」に対して、インデックス番号「６」と、経過時間「１．４５ｍｓ」と、ポイント番号「４」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の６番目の収集結果がＲＡＭ１３に蓄積される。
【００８９】
次に、タスクＢの処理が完了すると、タスクＣの処理が開始される。そして、タスク実行部２１によりタスクＣのユーザプログラムＰ５が実行される。その後、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから２ｍｓ経過すると、タスクＡの実行サイクルが経過することから、タスクＣのユーザプログラムＰ５が中断され、タスク実行部２１により、タスクＡが実行される。このとき、タスクＢの実行サイクルも経過することから、タスクＢおよびＣは待機状態である。
【００９０】
そして、タスクＡのユーザプログラムＰ１が実行される。ここで、ユーザプログラムＰ１の最後には、トレース番号が「０」であり、ポイント番号が「１」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「３」に対して、インデックス番号「７」と、経過時間「２．１５ｍｓ」と、ポイント番号「１」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「５」に対して、インデックス番号「７」と、経過時間「２．１５ｍｓ」と、ポイント番号「１」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の７番目の収集結果がＲＡＭ１３に蓄積される。
【００９１】
そして、タスクＡのユーザプログラムＰ２が実行される。ここで、ユーザプログラムＰ２の最後には、トレース番号が「０」であり、ポイント番号が「２」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「３」に対して、インデックス番号「８」と、経過時間「２．３ｍｓ」と、ポイント番号「２」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「５」に対して、インデックス番号「８」と、経過時間「２．３ｍｓ」と、ポイント番号「２」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の８番目の収集結果がＲＡＭ１３に蓄積される。
【００９２】
次に、タスクＡの処理が完了すると、タスクＣよりも優先度が高いタスクＢの処理が開始される。このとき、タスクＣは待機状態のままである。
【００９３】
そして、タスクＢのユーザプログラムＰ３が実行される。ここで、ユーザプログラムＰ３の最後には、トレース番号が「０」であり、ポイント番号が「３」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「３」に対して、インデックス番号「９」と、経過時間「２．６ｍｓ」と、ポイント番号「３」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「５」に対して、インデックス番号「９」と、経過時間「２．６ｍｓ」と、ポイント番号「３」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の９番目の収集結果がＲＡＭ１３に蓄積される。
【００９４】
次に、タスクＢのユーザプログラムＰ４が実行される。その後、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから３ｍｓ経過すると、タスクＡの実行サイクルが経過することから、タスクＢのユーザプログラムＰ４が中断され、タスク実行部２１により、タスクＡが実行される。このとき、タスクＢおよびＣは待機状態である。
【００９５】
そして、タスクＡのユーザプログラムＰ１が実行される。ここで、ユーザプログラムＰ１の最後には、トレース番号が「０」であり、ポイント番号が「１」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「２」に対して、インデックス番号「１０」と、経過時間「３．１５ｍｓ」と、ポイント番号「１」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「４」に対して、インデックス番号「１０」と、経過時間「３．１５ｍｓ」と、ポイント番号「１」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の１０番目の収集結果がＲＡＭ１３に蓄積される。
【００９６】
そして、タスクＡのユーザプログラムＰ２が実行される。ここで、ユーザプログラムＰ２の最後には、トレース番号が「０」であり、ポイント番号が「２」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「２」に対して、インデックス番号「１１」と、経過時間「３．３ｍｓ」と、ポイント番号「２」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「４」に対して、インデックス番号「１１」と、経過時間「３．３ｍｓ」と、ポイント番号「２」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の１１番目の収集結果がＲＡＭ１３に蓄積される。
【００９７】
次に、タスクＡの処理が完了すると、タスクＣよりも優先度が高いタスクＢの処理が再開される。このとき、タスクＣは待機状態のままである。そして、タスク実行部２１によりタスクＢのユーザプログラムＰ４の残りが実行される。
【００９８】
ここで、ユーザプログラムＰ４の最後には、トレース番号が「０」であり、ポイント番号が「４」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「２」に対して、インデックス番号「１２」と、経過時間「３．４５ｍｓ」と、ポイント番号「４」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「４」に対して、インデックス番号「１２」と、経過時間「３．４５ｍｓ」と、ポイント番号「４」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の１２番目の収集結果がＲＡＭ１３に蓄積される。
【００９９】
次に、タスクＢの処理が完了すると、タスクＣの処理が再開される。そして、タスク実行部２１によりタスクＣのユーザプログラムＰ５の残りが実行される。
【０１００】
ここで、ユーザプログラムＰ５の最後には、トレース番号が「０」であり、ポイント番号が「５」であるＴＲＳＭ命令Ｐが挿入されている。このため、データ収集部２２により、トレース番号「０」により指定される変数Ｖ１およびＶ２の値が収集される。そして、収集データ管理部２４により、図９に示すように、収集された変数Ｖ１の値「２」に対して、インデックス番号「１３」と、経過時間「３．８ｍｓ」と、ポイント番号「５」とが関連付けられてＲＡＭ１３に記憶される。また、収集データ管理部２４により、図１０に示すように、収集された変数Ｖ２の値「４」に対して、インデックス番号「１３」と、経過時間「３．８ｍｓ」と、ポイント番号「５」とが関連付けられてＲＡＭ１３に記憶される。これにより、変数Ｖ１およびＶ２の１３番目の収集結果がＲＡＭ１３に蓄積される。
【０１０１】
そして、タスクＡ、ＢおよびＣの実行サイクルが同時に開始されてから４ｍｓ経過すると、タスクＡの実行サイクルが経過することから、タスク実行部２１により、タスクＡが実行される。このとき、タスクＢおよびＣも実行サイクルが経過することから、タスクＢおよびＣは待機状態である。
【０１０２】
その後、上記した動作と同様の動作が繰り返し行われることにより、トレース番号「０」により指定された変数Ｖ１およびＶ２がＲＡＭ１３に蓄積されていく。そして、所定の期間（たとえば、１０秒）経過すると、データトレースが終了される。なお、図８〜図１０では、図面を簡略化するために、データトレースが開始されてから８ｍｓ経過するまでの状態を示した。その後、収集結果が蓄積されたトレース結果が通信ＩＦ１５からツール装置２００に送信される。
【０１０３】
次に、図１１Ａ〜図１１Ｃを参照して、本実施形態によるツール装置２００のトレース結果の表示時の動作について説明する。
【０１０４】
ツール装置２００では、図１１Ａに示すように、表示部３５に、トレース番号が示される項目Ｗ１と、トレース番号により指定されることによってデータトレースの対象となる変数が示される項目Ｗ２とが表示される。図１１Ａの例では、項目Ｗ１にトレース番号「０」が表示され、項目Ｗ２に変数Ｖ１およびＶ２が表示される。表示部３５には、項目Ｗ２の変数を選択するためのカーソルＣ１が表示される。図１１Ａでは、カーソルＣ１が変数Ｖ１を選択している。カーソルＣ１は、後述するカーソルＣ２により選択される変数（アクティブな変数）を選択するために設けられている。
【０１０５】
また、表示部３５には、トレース結果がグラフＧに表示される。このグラフＧでは、カーソルＣ１により選択されている変数Ｖ１が実線の折れ線で表され、カーソルＣ１により選択されていない変数Ｖ２が点線の折れ線で表されている。なお、グラフＧは、横軸が経過時間であり、縦軸が変数の値である。
【０１０６】
ここで、グラフＧには、水平方向（横軸方向）に移動可能なカーソルＣ２が配置されている。そして、カーソルＣ２の近傍には、カーソルＣ２により選択されるデータに関する情報（インデックス番号、経過時間、ポイント番号）を表示する項目Ｗ３が配置されている。図１１Ａの例では、項目Ｗ３には、インデックス番号「１２」、経過時間「３．４５ｍｓ」、ポイント番号「４」が表示されている。なお、項目Ｗ３には、カーソルＣ１により選択される変数について、カーソルＣ２により選択されるデータ（収集結果）に関する情報が表示される。
【０１０７】
そして、利用者が操作部３４を操作することにより、図１１Ｂに示すように、カーソルＣ２が水平方向に移動された場合には、カーソルＣ２により選択されるデータが変更されることにより、項目Ｗ３に表示される内容が変更される。これにより、図１１Ｂの例では、項目Ｗ３には、インデックス番号「２２」、経過時間「６．６ｍｓ」、ポイント番号「３」が表示される。
【０１０８】
また、利用者が操作部３４を操作することにより、図１１Ｃに示すように、カーソルＣ１が切り替えられ、カーソルＣ１が変数Ｖ２を選択する場合には、グラフＧにおいて、変数Ｖ１が点線の折れ線で表され、変数Ｖ２が実線の折れ線で表される。
【０１０９】
本実施形態では、上記のように、ユーザプログラムにおける位置を利用者が識別するためのポイント番号をＴＲＳＭ命令Ｐが有することによって、収集データ管理部２４が収集された変数（収集結果）とポイント番号とを関連付けることができる。これにより、収集結果がどのＴＲＳＭ命令Ｐにより収集されたのかを利用者がポイント番号に基づいて判断することができる。したがって、収集結果がユーザプログラムのどの位置で収集されたのかを利用者が判断することができる。その結果、利用者がユーザプログラムをデバッグする際に、ユーザプログラムの欠陥を検出しやすくすることができる。
【０１１０】
また、本実施形態では、ＴＲＳＭ命令Ｐがトレース番号を有することによって、データ収集部２２により、トレース番号で指定された変数を収集することができる。また、トレース番号には複数の変数を設定することができるので、利用者の所望の変数群について収集結果を収集することができる。
【０１１１】
また、本実施形態では、ユーザプログラムにＴＲＳＭ命令Ｐを利用者の所望の位置に挿入することによって、利用者の所望のタイミングで変数を収集することができる。
【０１１２】
また、本実施形態では、表示部３５の項目Ｗ３にポイント番号を表示することによって、収集結果をポイント番号と関連付けて利用者が確認することができる。
【０１１３】
また、本実施形態では、収集結果が蓄積されたトレース結果をグラフＧに表示することによって、トレース結果を利用者が視覚的に理解しやすい状態で確認することができる。
【０１１４】
また、本実施形態では、ＣＰＵ１１が、シングルコアであり、時分割により複数のタスクを並行して実行することによって、ＣＰＵ１１の処理能力を効率的に利用することができる。
【０１１５】
なお、今回開示した実施形態は、すべての点で例示であって、限定的な解釈の根拠となるものではない。したがって、本発明の技術的範囲は、上記した実施形態のみによって解釈されるものではなく、特許請求の範囲の記載に基づいて画定される。また、本発明の技術的範囲には、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれる。
【０１１６】
たとえば、本実施形態では、ＰＬＣ１００がＣＰＵユニット１と、入力ユニット２と、出力ユニット３と、電源ユニット４とを備える例を示したが、これに限らず、ＰＬＣが通信ユニットなどのその他のユニットを備えていてもよいし、ＰＬＣに入力ユニットが設けられていなくてもよい。
【０１１７】
また、本実施形態では、ＰＬＣ１００が複数のユニットにより構成される例を示したが、これに限らず、ＰＬＣが１つの筐体により構成され、その筐体に各ユニットの機能が組み込まれていてもよい。
【０１１８】
また、本実施形態では、ＣＰＵ１１がシングルコアであり、時分割により複数のタスクを並行して実行する例を示したが、これに限らず、ＣＰＵがマルチコアであり、複数のタスクを同時に並行して実行するようにしてもよい。このように構成すれば、タスクの処理能力の向上を図ることができる。
【０１１９】
また、本実施形態では、ＣＰＵ１１がシステムプログラム１２ａを実行することにより、タスク実行部２１、データ収集部２２、トレース番号設定部２３および収集データ管理部２４が実現される例を示したが、これに限らず、タスク実行部２１、データ収集部２２、トレース番号設定部２３および収集データ管理部２４がそれぞれハードウェアで構成されていてもよい。
【０１２０】
また、本実施形態では、収集された変数の値と、収集された順番を示すインデックス番号と、データトレースが開始されてからの経過時間と、ＴＲＳＭ命令Ｐのポイント番号とが関連付けられてＲＡＭ１３に記憶される例を示したが、これに限らず、収集された変数の値と、収集された順番を示すインデックス番号と、データトレースが開始されてからの経過時間と、ＴＲＳＭ命令Ｐのポイント番号とが関連付けられてＲＯＭ１２に記憶されるようにしてもよい。
【０１２１】
また、本実施形態では、収集された変数の値と、データトレースが開始されてからの経過時間とが関連付けられる例を示したが、これに限らず、収集された変数の値と、変数が収集された時刻情報とが関連付けられるようにしてもよい。なお、時刻情報には、日付に関する情報が含まれていてもよいし、含まれていなくてもよい。
【０１２２】
また、本実施形態では、トレース番号が「０」であるＴＲＳＭ命令ＰがユーザプログラムＰ１〜Ｐ５に挿入され、トレース番号設定部２３によりトレース番号「０」が設定される例を示したが、これに限らず、たとえば、トレース番号が「１」であるＴＲＳＭ命令ＰがユーザプログラムＰ１〜Ｐ５に挿入され、トレース番号設定部２３によりトレース番号「１」が設定されてもよい。この場合には、収集データ管理部２４により、データ収集部２２により収集された変数Ｖ１〜Ｖ７のうち、変数Ｖ３のみが管理される。これにより、変数Ｖ３についてのトレース結果を表示部３５に表示させることができる。なお、同様に、トレース番号を「２」または「３」に設定するようにしてもよい。
【０１２３】
また、本実施形態では、ＴＲＳＭ命令ＰがユーザプログラムＰ１〜Ｐ５の最後に挿入される例を示したが、これに限らず、ＴＲＳＭ命令Ｐがユーザプログラムの先頭に挿入されていてもよい。また、ＴＲＳＭ命令Ｐは、ユーザプログラムのどこに挿入されていてもよく、利用者の所望の位置に挿入することが可能である。
【０１２４】
また、本実施形態では、ユーザプログラムＰ１〜Ｐ５の全てにＴＲＳＭ命令Ｐが挿入される例を示したが、これに限らず、ユーザプログラムＰ１〜Ｐ５のうち少なくとも１つにＴＲＳＭ命令が挿入されていればよい。
【０１２５】
また、本実施形態では、１つのユーザプログラムに１つのＴＲＳＭ命令Ｐが挿入される例を示したが、これに限らず、１つのユーザプログラムに複数のＴＲＳＭ命令が挿入されていてもよい。
【０１２６】
また、本実施形態では、全ての収集結果をグラフ表示する例を示したが、これに限らず、所定のポイント番号（たとえば、ポイント番号「１」）の収集結果のみを選択してグラフ表示するようにしてもよい。このように構成すれば、利用者がユーザプログラムをデバッグする際に、ユーザプログラムの欠陥をより検出しやすくすることができる。
【０１２７】
また、本実施形態では、複数の変数についてのトレース結果を１つのグラフＧに表示する例を示したが、これに限らず、複数の変数についてのトレース結果を変数毎にグラフに表示するようにしてもよい。また、アクティブな変数のみをグラフに表示するようにしてもよい。
【０１２８】
また、本実施形態において、タスクには、定期的に実行されるタスク（定周期タスク）に加えて、予め設定された実行条件が成立した場合に実行されるタスク（イベントタスク）が含まれていてもよい。
【符号の説明】
【０１２９】
１      ＣＰＵユニット（制御装置）
１５    通信ＩＦ（第１通信部）
２１    タスク実行部（タスク実行手段）
２２    データ収集部（収集手段）
２４    収集データ管理部（管理手段）
３１    ＣＰＵ（プログラム作成手段）
３５    表示部
３６    通信ＩＦ（第２通信部）
６０    制御対象機器
２００  ツール装置
３００  制御システム
【図１】
0005252014.tif 000002
【図２】
0005252014.tif 000003
【図３】
0005252014.tif 000004
【図４】
0005252014.tif 000005
【図５】
0005252014.tif 000006
【図６】
0005252014.tif 000007
【図７】
0005252014.tif 000008
【図８】
0005252014.tif 000009
【図９】
0005252014.tif 000010
【図１０】
0005252014.tif 000011
【図１１Ａ】
0005252014.tif 000012
【図１１Ｂ】
0005252014.tif 000013
【図１１Ｃ】
0005252014.tif 000014