制御対象機器を制御する制御装置であって、プログラムを含むタスクを実行するタスク実行手段と、プログラムにおいて参照および更新することが可能な変数を記憶する記憶手段と、前記タスク実行手段によりプログラムを含むタスクが実行されているときに、前記変数を収集する収集手段とを備え、前記タスク実行手段は、複数の前記タスクを並行に実行し、かつ、前記複数のタスクの各タスクを前記各タスクに応じた周期で実行するように構成され、前記記憶手段には、前記変数に対応する参照用データが記憶され、前記複数のタスクは、前記変数を更新および参照することが可能な更新タスクと、前記参照用データを参照することが可能な参照タスクとを含み、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記参照用データを収集するように構成されていることを特徴とする制御装置。請求項1に記載の制御装置であって、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記更新タスクにより更新および参照される変数を収集するように構成されていることを特徴とする制御装置。請求項1または請求項2に記載の制御装置であって、前記複数のタスクは、1個の前記更新タスクと、複数の前記参照タスクとを含み、前記記憶手段には、前記変数に対応する参照用データが前記複数の参照タスク毎に記憶され、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、複数の前記参照用データを収集するように構成されていることを特徴とする制御装置。請求項1から請求項3までのいずれか一つに記載の制御装置であって、前記記憶手段に記憶される参照用データを管理する参照用データ管理手段を備え、前記参照用データ管理手段は、前記参照タスクが実行される前に、前記参照用データの値を前記変数の値に変更するように構成されていることを特徴とする制御装置。請求項1から請求項4までのいずれか一つに記載の制御装置であって、前記収集手段による収集対象を設定する設定手段を備え、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記設定手段により設定された収集対象の値を収集するように構成されていることを特徴とする制御装置。請求項1から請求項5までのいずれか一つに記載の制御装置であって、前記収集手段による収集対象と、前記収集対象の値を収集する収集周期とをツール装置から受信するための通信手段を備え、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記通信手段により受信した収集対象の値を、前記通信手段により受信した収集周期で収集するように構成されていることを特徴とする制御装置。請求項6に記載の制御装置であって、前記通信手段は、前記収集手段により収集された収集結果を前記ツール装置に送信する機能を有することを特徴とする制御装置。請求項1から請求項7までのいずれか一つに記載の制御装置であって、前記記憶手段は、前記収集手段により収集された収集結果を記憶することを特徴とする制御装置。制御対象機器を制御する制御装置を、プログラムを含むタスクを実行するタスク実行手段と、プログラムにおいて参照および更新することが可能な変数を記憶する記憶手段と、前記タスク実行手段によりプログラムを含むタスクが実行されているときに、前記変数を収集する収集手段として機能させるシステムプログラムであって、前記記憶手段には、前記変数に対応する参照用データが記憶され、前記タスク実行手段は、前記変数を更新および参照することが可能な更新タスクと、前記参照用データを参照することが可能な参照タスクとを含む複数のタスクを並行に実行し、かつ、前記複数のタスクの各タスクを前記各タスクに応じた周期で実行し、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記参照用データを収集することを特徴とするシステムプログラム。しかしながら、特許文献1に開示された従来のPACにおいて、プログラム全体に対して定義されるグローバル変数広域変数に対して複数のタスクがアクセスする場合には、たとえば、所定のタスクの実行が開始されてから終了されるまでの間に、所定のタスク以外のタスクが実行されることによりグローバル変数の値が更新された場合に、所定のタスクがグローバル変数を用いた一貫性のある演算を行うことができなくなるという問題点がある。本発明は、上記の課題を解決するためになされたものであり、本発明の目的は、変数に対して複数のタスクがアクセスする場合にも、一貫性のある演算を行うことが可能な制御装置およびその制御装置で実行されるシステムプログラムを提供することである。本発明による制御装置は、制御対象機器を制御する制御装置であって、プログラムを含むタスクを実行するタスク実行手段と、プログラムにおいて参照および更新することが可能な変数を記憶する記憶手段と、前記タスク実行手段によりプログラムを含むタスクが実行されているときに、前記変数を収集する収集手段とを備え、前記タスク実行手段は、複数の前記タスクを並行に実行し、かつ、前記複数のタスクの各タスクを前記各タスクに応じた周期で実行するように構成され、前記記憶手段には、前記変数に対応する参照用データが記憶され、前記複数のタスクは、前記変数を更新および参照することが可能な更新タスクと、前記参照用データを参照することが可能な参照タスクとを含み、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記参照用データを収集するように構成されている。なお、複数のタスクを並行に実行するとは、複数のタスクを同時に並行して実行する場合と、時分割により複数のタスクを並行して実行する場合とを含む。また、変数に対応する参照用データとは、変数の参照用のバッファである。このように構成することによって、更新タスクのみが変数に対して更新および参照するとともに、参照タスクが変数に対応する参照用データを参照することにより、参照タスクの実行中参照タスクのプログラムが開始されてから完了されるまでの間に、更新タスクにより変数の値が更新された場合にも、参照タスクが参照用データを参照するので、参照タスクにおいて一貫性のある演算を行うことができる。すなわち、参照タスクの実行中に、参照タスクにより参照される参照用データが更新タスクにより更新されることがないので、参照タスクにおいて一貫性のある演算を行うことができる。また、更新タスクでは、更新タスクのみが変数に対して更新および参照することにより、更新タスクにおいて一貫性のある演算を行うことができる。したがって、変数に対して複数のタスクがアクセスする場合にも、参照タスクに参照用データを参照させることにより、一貫性のある演算を行うことができる。さらに、収集手段により、タスクが実行されているときに、参照用データを収集することによって、参照タスクにより参照される参照用データについてデータトレースすることができる。これにより、変数に対して複数のタスクがアクセスする場合において、一貫性のある演算を行うために、参照タスクに参照用データを参照させる場合にも、参照タスクの参照先である参照用データを適切にデータトレースすることができる。上記制御装置において、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記更新タスクにより更新および参照される変数を収集するように構成されていてもよい。このように構成すれば、収集手段により、タスクが実行されているときに、変数を収集することによって、更新タスクにより更新および参照される変数についてデータトレースすることができる。上記制御装置において、前記複数のタスクは、1個の前記更新タスクと、複数の前記参照タスクとを含み、前記記憶手段には、前記変数に対応する参照用データが前記複数の参照タスク毎に記憶され、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、複数の前記参照用データを収集するように構成されていてもよい。このように構成すれば、参照タスクが複数ある場合にも、各参照タスクにおいて一貫性のある演算を行うことができる。さらに、参照タスクが複数ある場合にも、各参照タスクの参照先である参照用データを適切にデータトレースすることができる。上記制御装置において、前記記憶手段に記憶される参照用データを管理する参照用データ管理手段を備え、前記参照用データ管理手段は、前記参照タスクが実行される前に、前記参照用データの値を前記変数の値に変更するように構成されていてもよい。このように構成すれば、参照用データを変数に対応させながら、更新タスクにおいて一貫性のある演算を行うことができる。上記制御装置において、前記収集手段による収集対象を設定する設定手段を備え、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記設定手段により設定された収集対象の値を収集するように構成されていてもよい。このように構成すれば、設定手段により、データトレースの対象を容易に設定することができる。上記制御装置において、前記収集手段による収集対象と、前記収集対象の値を収集する収集周期とをツール装置から受信するための通信手段を備え、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記通信手段により受信した収集対象の値を、前記通信手段により受信した収集周期で収集するように構成されていてもよい。このように構成すれば、利用者がツール装置を用いてデータトレースの収集対象および収集周期を設定することができる。この場合において、前記通信手段は、前記収集手段により収集された収集結果を前記ツール装置に送信する機能を有していてもよい。このように構成すれば、ツール装置が収集結果を得ることができるので、利用者がツール装置を用いて収集結果を確認することができる。上記制御装置において、前記記憶手段は、前記収集手段により収集された収集結果を記憶するようにしてもよい。このように構成すれば、収集結果を記憶手段に蓄積することができる。本発明によるシステムプログラムは、制御対象機器を制御する制御装置を、プログラムを含むタスクを実行するタスク実行手段と、プログラムにおいて参照および更新することが可能な変数を記憶する記憶手段と、前記タスク実行手段によりプログラムを含むタスクが実行されているときに、前記変数を収集する収集手段として機能させるシステムプログラムであって、前記記憶手段には、前記変数に対応する参照用データが記憶され、前記タスク実行手段は、前記変数を更新および参照することが可能な更新タスクと、前記参照用データを参照することが可能な参照タスクとを含む複数のタスクを並行に実行し、かつ、前記複数のタスクの各タスクを前記各タスクに応じた周期で実行し、前記収集手段は、前記タスク実行手段により前記複数のタスクが実行されているときに、前記参照用データを収集する。このように構成することによって、制御装置に、参照タスクに参照用データを参照させることにより、一貫性のある演算を行わせながら、参照タスクの参照先である参照用データを適切にデータトレースさせることができる。本発明によれば、変数に対して複数のタスクがアクセスする場合にも、一貫性のある演算を行うことが可能な制御装置およびその制御装置で実行されるシステムプログラムを提供することができる。以下、本発明の実施形態について図面を参照して説明する。まず、図1~図8を参照して、本発明の一実施形態によるCPUユニット1を備えるPAC100の構成について説明する。PAC100は、図1に示すように、PAC100を制御するCPUユニット1と、センサ50からの信号が入力される入力ユニット2と、産業用機械などの制御対象機器60に制御信号を出力する出力ユニット3と、各ユニットに電力を供給する電源ユニット4と、各ユニットを接続する内部バス5とを備えている。なお、CPUユニット1は、本発明の制御装置の一例である。PAC100は、タスクを実行することにより、センサ50からの入力に基づいて制御対象機器60を制御するように構成されている。ここで、タスクには、制御対象機器60を制御するためのユーザプログラムの実行が含まれている。CPUユニット1では、ユーザプログラムを含むシステムプログラム121図2参照がインストールされており、そのシステムプログラム121が実行されることによりCPUユニット1の動作が制御されるように構成されている。なお、システムプログラム121には、入力ユニット2に入力された信号をCPUユニット1に取り込む処理を実行するためのプログラムや、CPUユニット1による演算結果を出力ユニット3に送り出す処理を実行するためのプログラムなどが含まれている。また、システムプログラム121には、プログラム全体に対して定義されるグローバル変数広域変数が含まれている。グローバル変数は、複数のタスクプログラムからアクセス可能な変数である。CPUユニット1は、図2に示すように、CPU11と、ROM12と、RAM13と、通信インターフェース以下、通信IFという14および15とを含んでいる。なお、RAM13は、本発明の記憶手段の一例であり、通信IF15は、本発明の通信手段の一例である。CPU11は、システムプログラム121を実行する機能を有する。CPU11は、時分割により複数のタスクを並行して実行するように構成されている。すなわち、CPU11では、マルチタスクで処理が実行される。ROM12は、不揮発性のメモリであり、たとえば、フラッシュメモリである。ROM12には、システムプログラム121が記憶されるとともに、CPUユニット1において実行されるタスクに関する情報L1図3参照が記憶されている。タスクに関する情報L1には、各タスクの名称と、各タスクの優先度と、各タスクが実行される周期と、各タスクで実行されるプログラムとが含まれている。なお、タスクは、優先度の値が小さいタスクが優先的に実行される。また、CPUユニット1では、予め設定された時間間隔たとえば、1msの制御サイクルを処理全体の共通サイクルとして採用している。また、プログラムは、たとえば、ユーザプログラムであり、ラダー言語で記述されている。図3の例では、タスクAは、タスクBおよびCよりも優先的に実行されるとともに、1msの周期でプログラムP1およびP2を実行する。すなわち、タスクAは、1回分の制御サイクル1msの時間間隔を実行サイクルとしている。また、タスクBは、タスクCよりも優先的に実行されるとともに、2msの周期でプログラムP3およびP4を実行する。すなわち、タスクBは、2回分の制御サイクル2msの時間間隔を実行サイクルとしている。また、タスクBの周期は、タスクAの周期の整数倍2倍に設定されている。また、タスクCは、タスクAおよびBよりも劣後して実行されるとともに、4msの周期でプログラムP5を実行する。すなわち、タスクCは、4回分の制御サイクル4msの時間間隔を実行サイクルとしている。また、タスクCの周期は、タスクAの周期の整数倍4倍に設定されている。また、ROM12には、システムプログラム121で定義されたグローバル変数に対する設定情報L2図4参照が記憶されている。設定情報L2には、グローバル変数の名称と、更新タスクの名称と、参照タスクの名称とが含まれている。ここで、更新タスクとは、グローバル変数を更新および参照することが可能なタスクであり、参照タスクとは、グローバル変数を参照することが可能であるが、更新することが不可能なタスクである。更新タスクは、1個のグローバル変数に対して1個だけ設定可能であり、参照タスクは、1個のグローバル変数に対して1個以上設定可能である。なお、参照タスクは、実際には、後述するようにグローバル変数に対応する参照用データを参照する。図4の例では、グローバル変数GV1の更新タスクとしてタスクAが設定され、グローバル変数GV1の参照タスクとしてタスクBおよびCが設定されている。すなわち、タスクAでは、グローバル変数GV1に対して更新および参照することが可能である。その一方、タスクBおよびCでは、グローバル変数GV1に対して参照のみが可能であり、グローバル変数GV1に対して更新することができない。RAM13は、揮発性のメモリであり、たとえば、DRAMである。RAM13は、CPU11により実行されるシステムプログラム121などを一時的に記憶する機能を有する。具体的には、RAM13は、システムプログラム121が実行される際に、更新タスクであるタスクAにより更新および参照されるグローバル変数GV1図6参照と、参照タスクであるタスクBおよびCにより参照される参照用データRD1およびRD2図6参照とを記憶する機能を有する。ここで、参照用データRD1およびRD2は、グローバル変数GV1の参照用のバッファであり、参照タスクであるタスクBおよびCにそれぞれ対応するように設けられる。通信IF14は、内部バス5に接続されており、CPUユニット1が内部バス5を介して各ユニットと通信するために設けられている。通信IF15は、ツール装置70に接続されており、CPUユニット1がツール装置70と通信するために設けられている。また、CPUユニット1は、図5に示すように、タスク実行部21と、参照用データ管理部22と、収集部23と、設定部24とを含んでいる。なお、タスク実行部21、参照用データ管理部22、収集部23および設定部24は、CPU11がシステムプログラム121を実行することにより実現される。また、タスク実行部21は、本発明のタスク実行手段の一例であり、参照用データ管理部22は、本発明の参照用データ管理手段の一例である。また、収集部23は、本発明の収集手段の一例であり、設定部24は、本発明の設定手段の一例である。タスク実行部21は、複数のタスクを並行に実行し、かつ、複数のタスクの各タスクを各タスクに応じた周期で実行するように構成されている。具体的には、タスク実行部21は、時分割によりタスクA、BおよびCを並行に実行する。また、タスク実行部21は、タスクAを1msの周期で実行し、タスクBを2msの周期で実行し、タスクCを4msの周期で実行する。参照用データ管理部22は、システムプログラム121が実行されるときに、RAM13に記憶される参照用データを管理する機能を有する。具体的には、参照用データ管理部22は、参照タスクが実行される前参照タスクのプログラムの実行が開始される前に、参照用データの値をグローバル変数の値に変更するように構成されている。すなわち、参照用データ管理部22は、参照タスクであるタスクBが実行される前に、参照用データRD1の値をグローバル変数GV1の値に変更し、参照タスクであるタスクCが実行される前に、参照用データRD2をグローバル変数GV1の値に変更するように構成されている。収集部23は、タスク実行部21によりタスクが実行されているときに、グローバル変数の値を収集する機能を有する。また、収集部23は、タスク実行部21によりタスクが実行されているときに、参照用データの値を収集する機能を有する。具体的には、収集部23は、グローバル変数GV1、参照用データRD1およびRD2の値を収集する機能を有する。これにより、CPUユニット1では、システムプログラム121が実行されているときの変数グローバル変数GV1や参照用データRD1およびRD2などの経時変化を収集することが可能である。すなわち、CPUユニット1では、システムプログラム121が実行されているときに、変数をデータトレースすることが可能である。設定部24は、収集部23による収集対象を設定する機能を有する。すなわち、設定部24は、データトレースされる変数を設定する機能を有する。具体的には、設定部24は、後述するデータトレース情報T図7参照に基づいて、データトレースされる変数を設定するように構成されている。また、CPUユニット1は、グローバル変数に対するタスク間の排他制御を行うように構成されている。たとえば、CPUユニット1では、図6に示すように、グローバル変数GV1に対して、更新タスクであるタスクAと、参照タスクであるタスクBおよびCとがアクセスする。具体的には、タスクAのプログラムP1に外部変数グローバル変数GV1が登録されている。このプログラムP1の外部変数P1.GV1は、タスクAが更新タスクであることから、RAM13のグローバル変数GV1の本体に直接アクセスする。また、タスクBのプログラムP4に外部変数GV1が登録されている。このプログラムP4の外部変数P4.GV1は、タスクBが参照タスクであることから、RAM13のタスクB用の参照用データRD1にアクセスする。このタスクB用の参照用データRD1の値は、タスク実行部21図5参照によりタスクBが実行されるときに、参照用データ管理部22図5参照によりグローバル変数GV1の値に変更更新される。また、タスクCのプログラムP5に外部変数GV1が登録されている。このプログラムP5の外部変数P5.GV1は、タスクCが参照タスクであることから、RAM13のタスクC用の参照用データRD2にアクセスする。このタスクC用の参照用データRD2の値は、タスク実行部21によりタスクCが実行されるときに、参照用データ管理部22によりグローバル変数GV1の値に変更更新される。ツール装置70は、たとえば、パーソナルコンピュータであり、PAC100において実行されるユーザプログラムの作成編集機能を有する。また、ツール装置70は、ユーザプログラムをPAC100からダウンロードする機能を有するとともに、ユーザプログラムをPAC100にアップロードする機能を有する。また、ツール装置70は、ROM12に記憶されたグローバル変数に対する設定情報L2図4参照を変更する機能を有する。これにより、利用者は、ツール装置70を用いて、グローバル変数に対する更新タスクおよび参照タスクを設定することが可能である。また、ツール装置70は、CPUユニット1に対してデータトレースの実行を指示する機能を有する。具体的には、ツール装置70は、データトレースの対象となる変数名と、データトレースのサンプリング周期収集周期とを含むデータトレース情報T図7参照をCPUユニット1に送信するように構成されている。また、ツール装置70は、利用者がデータトレースの結果を確認するために、図8に示すように、CPUユニット1によるトレース結果のグラフを表示部図示省略に表示する機能を有する。次に、図9および図10を参照して、本実施形態によるCPUユニット1のデータトレース時の動作について説明する。なお、以下の動作は、CPUユニット1図2参照のCPU11によりシステムプログラム121が実行されることにより行われる。すなわち、システムプログラム121は、CPUユニット1に以下の動作を実行させるためのシステムプログラムである。また、データトレースは、プログラムをデバッグする際に、プログラムの動作を確認するために行われる。すなわち、データトレースは、プログラムの欠陥を検出するために行われる。なお、以下では、データトレースが開始される前において、グローバル変数GV1が0に設定されるとともに、参照用データRD1およびRD2が0に設定されている場合を例に説明する。まず、ツール装置70図2参照からデータトレース情報T図7参照がCPUユニット1に送信される。なお、このデータトレース情報Tには、データトレースによるデータ値の収集対象変数名と、収集対象のデータを収集する収集周期サンプリング周期とが含まれている。図7の例では、収集対象として、プログラムP1の外部変数P1.GV1と、プログラムP4の外部変数P4.GV1と、プログラムP5の外部変数P5.GV1とが指定され、収集周期として1msが指定されている。CPUユニット1では、通信IF15図2参照により、ツール装置70からデータトレース情報Tを受信した場合に、データトレースが開始される。このとき、設定部24図5参照により、通信IF15が受信したデータトレース情報Tに基づいて、収集部23図5参照によるデータの収集対象が設定される。具体的には、プログラムP1の外部変数P1.GV1と、プログラムP4の外部変数P4.GV1と、プログラムP5の外部変数P5.GV1とが収集対象として設定される。そして、CPU11により、制御サイクルと同時にタスクA、BおよびCの実行サイクルが開始される。なお、タスクAは1msの周期で実行され、タスクBは2msの周期で実行され、タスクCは4msの周期で実行される。具体的には、まず、タスク実行部21図5参照により、最も優先度の高いタスクAの処理が開始される。このとき、タスクBおよびCは、タスクAよりも優先度が低いことから、実際の処理が開始されることなく待機状態になる。そして、更新タスクであるタスクAのプログラムP1が実行され、そのプログラムP1において外部変数グローバル変数GV1に対して1が書き込まれる。これにより、RAM13に記憶されるグローバル変数GV1の値が0から1に更新される。このとき、タスクAは、更新タスクであることから、RAM13のグローバル変数GV1の本体に直接アクセスする。その後、タスクAのプログラムP2が実行され、タスクAの処理が完了する。そして、タスクCよりも優先度の高いタスクBが実行される前に、参照用データ管理部22により、タスクBに用いられる参照用データRD1の値がグローバル変数GV1の値に変更される。このとき、グローバル変数GV1の値が1であることから、参照用データRD1の値が0から1に更新される。その後、タスク実行部21により、参照タスクであるタスクBのプログラムP3およびP4が実行される。なお、プログラムP4において外部変数GV1の読み出しが行われる。このとき、タスクBは、参照タスクであることから、RAM13の参照用データRD1にアクセスする。これにより、参照用データRD1の1が読み出される。次に、タスクA、BおよびCの実行サイクルが同時に開始されてから1ms経過すると、タスクBのプログラムP4が中断される。そして、収集部23図5参照により、設定部24により設定されたプログラムP1の外部変数P1.GV1、プログラムP4の外部変数P4.GV1、および、プログラムP5の外部変数P5.GV1の値が収集される。このとき、グローバル変数GV1が1であり、参照用データRD1が1であり、参照用データRD2が0であることから、外部変数P1.GV1が1であり、外部変数P4.GV1が1であり、外部変数P5.GV1が0である。そして、CPU11により、収集部23による収集結果が、データトレースが開始されてからの経過時間1msと関連付けられてRAM13に格納されることにより、RAM13にトレース結果L3図10参照が蓄積される。そして、タスクAの実行サイクルが経過することから、タスク実行部21により、タスクAが実行される。このとき、タスクBおよびCは待機状態である。このため、更新タスクであるタスクAのプログラムP1が実行され、そのプログラムP1において外部変数グローバル変数GV1に対して2が書き込まれる。これにより、RAM13に記憶されるグローバル変数GV1の値が1から2に更新される。その後、タスクAのプログラムP2が実行され、タスクAの処理が完了すると、中断されたタスクBの処理が再開される。なお、このとき、タスクBが中断されていたことにより、参照用データRD1の値は更新されない。そして、タスク実行部21によりタスクBのプログラムP4の残りが実行され、タスクBの処理が完了する。そして、タスクCが実行される前に、参照用データ管理部22により、タスクCに用いられる参照用データRD2の値がグローバル変数GV1の値に変更される。このとき、グローバル変数GV1の値が2であることから、参照用データRD2の値が0から2に更新される。その後、タスク実行部21により、参照タスクであるタスクCのプログラムP5が実行される。なお、プログラムP5において外部変数GV1の読み出しが行われる。このとき、タスクCは、参照タスクであることから、RAM13の参照用データRD2にアクセスする。これにより、参照用データRD2の2が読み出される。次に、タスクA、BおよびCの実行サイクルが同時に開始されてから2ms経過すると、タスクCのプログラムP5が中断される。そして、収集部23により、プログラムP1の外部変数P1.GV1、プログラムP4の外部変数P4.GV1、および、プログラムP5の外部変数P5.GV1の値が収集される。このとき、グローバル変数GV1が2であり、参照用データRD1が1であり、参照用データRD2が2であることから、外部変数P1.GV1が2であり、外部変数P4.GV1が1であり、外部変数P5.GV1が2である。そして、CPU11により、収集部23による収集結果が、データトレースが開始されてからの経過時間2msと関連付けられてRAM13に格納されることにより、RAM13にトレース結果L3が蓄積される。そして、タスクAの実行サイクルが経過することから、タスク実行部21により、タスクAが実行される。このとき、タスクBの実行サイクルも経過することから、タスクBおよびCが待機状態である。このため、更新タスクであるタスクAのプログラムP1が実行され、そのプログラムP1において外部変数グローバル変数GV1に対して3が書き込まれる。これにより、RAM13に記憶されるグローバル変数GV1の値が2から3に更新される。その後、タスクAのプログラムP2が実行され、タスクAの処理が完了する。そして、タスクCよりも優先度の高いタスクBが実行される前に、参照用データ管理部22により、タスクBに用いられる参照用データRD1の値がグローバル変数GV1の値に変更される。このとき、グローバル変数GV1の値が3であることから、参照用データRD1の値が1から3に更新される。その後、タスク実行部21により、参照タスクであるタスクBのプログラムP3およびP4が実行される。なお、プログラムP4において外部変数GV1の読み出しが行われる。このとき、タスクBは、参照タスクであることから、RAM13の参照用データRD1にアクセスする。これにより、参照用データRD1の3が読み出される。次に、タスクA、BおよびCの実行サイクルが同時に開始されてから3ms経過すると、タスクBのプログラムP4が中断される。そして、収集部23により、プログラムP1の外部変数P1.GV1、プログラムP4の外部変数P4.GV1、および、プログラムP5の外部変数P5.GV1の値が収集される。このとき、グローバル変数GV1が3であり、参照用データRD1が3であり、参照用データRD2が2であることから、外部変数P1.GV1が3であり、外部変数P4.GV1が3であり、外部変数P5.GV1が2である。そして、CPU11により、収集部23による収集結果が、データトレースが開始されてからの経過時間3msと関連付けられてRAM13に格納されることにより、RAM13にトレース結果L3が蓄積される。そして、タスクAの実行サイクルが経過することから、タスク実行部21により、タスクAが実行される。このとき、タスクBおよびCは待機状態である。このため、更新タスクであるタスクAのプログラムP1が実行され、そのプログラムP1において外部変数グローバル変数GV1に対して4が書き込まれる。これにより、RAM13に記憶されるグローバル変数GV1の値が3から4に更新される。その後、タスクAのプログラムP2が実行され、タスクAの処理が完了すると、中断されたタスクBの処理が再開される。なお、このとき、タスクBが中断されていたことにより、参照用データRD1の値は更新されない。このとき、タスクCは待機状態である。そして、タスク実行部21により、タスクBのプログラムP4の残りが実行される。その後、タスクBの処理が完了すると、中断されたタスクCの処理が開始される。なお、このとき、タスクCが中断されていたことにより、参照用データRD2の値は更新されない。そして、タスク実行部21により、参照タスクであるタスクCのプログラムP5の残りが実行される。なお、プログラムP5において外部変数GV1の読み出しが行われる。このとき、タスクCは、参照タスクであることから、RAM13の参照用データRD2にアクセスする。これにより、参照用データRD2の2が読み出される。そして、タスクCの処理が完了した後、タスクA、BおよびCの実行サイクルが同時に開始されてから4ms経過すると、収集部23により、プログラムP1の外部変数P1.GV1、プログラムP4の外部変数P4.GV1、および、プログラムP5の外部変数P5.GV1の値が収集される。このとき、グローバル変数GV1が4であり、参照用データRD1が3であり、参照用データRD2が2であることから、外部変数P1.GV1が4であり、外部変数P4.GV1が3であり、外部変数P5.GV1が2である。そして、CPU11により、収集部23による収集結果が、データトレースが開始されてからの経過時間4msと関連付けられてRAM13に格納されることにより、RAM13にトレース結果L3が蓄積される。そして、タスクAの実行サイクルが経過することから、タスク実行部21により、タスクAが実行される。このとき、タスクBおよびCの実行サイクルも経過することから、タスクBおよびCが待機状態である。そして、上記した動作と同様の動作が繰り返し行われる。その後、CPUユニット1によるデータトレースが終了されると、CPU11により、通信IF15からトレース結果L3がツール装置70に送信される。これにより、ツール装置70では、受信したトレース結果L3に基づいて、図8に示すようグラフを表示部図示省略に表示することが可能になる。図8に示すグラフでは、データトレースの対象であったプログラムP1の外部変数P1.GV1、プログラムP4の外部変数P4.GV1、および、プログラムP5の外部変数P5.GV1について、データトレースが開始されてからの経過時間と、各外部変数の値との関係が折れ線で示されている。本実施形態では、上記のように、更新タスクであるタスクAのみがグローバル変数GV1に対して更新および参照するとともに、参照タスクであるタスクBがグローバル変数GV1に対応する参照用データRD1を参照することによって、タスクBのプログラムP3が開始されてからプログラムP4が完了されるまでの間に、タスクAによりグローバル変数GV1の値が更新された場合にも、タスクBが参照用データRD1を参照するので、タスクBにおいて一貫性のある演算を行うことができる。すなわち、タスクBのプログラムP3が開始される前にグローバル変数GV1と対応するように更新され、プログラムP3が開始されてからプログラムP4が完了されるまでの間は一定である参照用データRD1をタスクBが参照することにより、プログラムP3が開始されてからプログラムP4が完了されるまでの間に、タスクBが予期しない更新が参照用データRD1に対して行われることがないので、タスクBにおいて一貫性のある演算を行うことができる。同様に、更新タスクであるタスクAのみがグローバル変数GV1に対して更新および参照するとともに、参照タスクであるタスクCがグローバル変数GV1に対応する参照用データRD2を参照することによって、タスクCのプログラムP5が開始されてから完了されるまでの間に、タスクAによりグローバル変数GV1の値が更新された場合にも、タスクCが参照用データRD2を参照するので、タスクCにおいて一貫性のある演算を行うことができる。すなわち、タスクCのプログラムP5が開始される前にグローバル変数GV1と対応するように更新され、プログラムP5が開始されてから完了されるまでの間は一定である参照用データRD2をタスクCが参照することにより、プログラムP5が開始されてから完了されるまでの間に、タスクCが予期しない更新が参照用データRD2に対して行われることがないので、タスクCにおいて一貫性のある演算を行うことができる。また、更新タスクであるタスクAでは、タスクAのみがグローバル変数GV1に対して更新および参照することにより、タスクAにおいて一貫性のある演算を行うことができる。したがって、グローバル変数GV1に対して複数のタスクA、BおよびCがアクセスする場合にも、参照タスクであるタスクBおよびCにそれぞれ参照用データRD1およびRD2を参照させることにより、一貫性のある演算を行うことができる。その結果、グローバル変数GV1に対するタスクA、BおよびC間の排他制御を適切に行うことができる。また、本実施形態では、収集部23により、タスクA、BおよびCが実行されているときに、グローバル変数GV1の値を収集することによって、更新タスクであるタスクAにより更新および参照されるグローバル変数GV1外部変数P1.GV1についてデータトレースすることができる。また、収集部23により、タスクA、BおよびCが実行されているときに、参照用データRD1およびRD2の値を収集することによって、参照タスクであるタスクBおよびCにより参照されるグローバル変数GV1外部変数P4.GV1およびP5.GV1についてデータトレースすることができる。これにより、グローバル変数GV1に対してタスクA、BおよびCがアクセスする場合において、一貫性のある演算を行うために、参照タスクであるタスクBおよびCにそれぞれ参照用データRD1およびRD2を参照させる場合にも、タスクBおよびCの参照先である参照用データRD1およびRD2を適切にデータトレースすることができる。また、本実施形態では、参照タスクであるタスクBが実行されるときに、参照用データRD1の値をグローバル変数GV1の値に変更し、参照タスクであるタスクCが実行されるときに、参照用データRD2の値をグローバル変数GV1の値に変更することによって、参照用データRD1およびRD2をグローバル変数GV1に対応させながら、更新タスクであるタスクBおよびCにおいて一貫性のある演算を行うことができる。また、本実施形態では、通信IF15がツール装置70から受信したデータトレース情報Tに基づいて、データトレースの収集対象と収集周期とを設定することによって、利用者がツール装置70を用いて収集対象および収集周期を設定することができる。また、本実施形態では、通信IF15からツール装置70にトレース結果L3が送信されることによって、ツール装置70がトレース結果L3を得ることができるので、利用者がツール装置70を用いてトレース結果L3を確認することができる。また、本実施形態では、CPU11が、時分割により複数のタスクを並行して実行することによって、CPU11の処理能力を効率的に利用することができる。なお、今回開示した実施形態は、すべての点で例示であって、限定的な解釈の根拠となるものではない。したがって、本発明の技術的範囲は、上記した実施形態のみによって解釈されるものではなく、特許請求の範囲の記載に基づいて画定される。また、本発明の技術的範囲には、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれる。たとえば、本実施形態では、PAC100がCPUユニット1と、入力ユニット2と、出力ユニット3と、電源ユニット4とを備える例を示したが、これに限らず、PACが通信ユニットなどのその他のユニットを備えていてもよいし、PACに入力ユニットが設けられていなくてもよい。また、本実施形態では、PAC100が複数のユニットにより構成される例を示したが、これに限らず、PACが1つの筐体により構成され、その筐体に各ユニットの機能が組み込まれていてもよい。また、本実施形態において、タスクAのプログラムP2に外部変数グローバル変数GV1が登録されていてもよい。この場合、このプログラムP2の外部変数P2.GV1では、タスクAが更新タスクであることから、RAM13のグローバル変数GV1の本体に直接アクセスする。また、本実施形態において、タスクBのプログラムP3に外部変数GV1が登録されていてもよい。この場合、このプログラムP3の外部変数P3.GV1は、タスクBが参照タスクであることから、RAM13のタスクB用の参照用データRD1にアクセスする。また、本実施形態では、CPU11が時分割により複数のタスクを並行して実行する例を示したが、これに限らず、CPUがマルチコアであり、複数のタスクを同時に並行して実行するようにしてもよい。このように構成すれば、タスクの処理能力の向上を図ることができる。また、本実施形態では、CPU11がシステムプログラム121を実行することにより、タスク実行部21、参照用データ管理部22、収集部23および設定部24が実現される例を示したが、これに限らず、タスク実行部21、参照用データ管理部22、収集部23および設定部24がそれぞれハードウェアで構成されていてもよい。また、本実施形態では、データトレース情報Tに含まれるサンプリング周期が時間間隔で設定される例を示したが、これに限らず、指定されるタスクの周期によりサンプリング周期が設定されるようにしてもよい。また、本実施形態では、説明を簡略化するために、1ms~8msまでのトレース結果L3を示したが、実際には、データトレースはより長い期間実行される。たとえば、データトレースは10秒10000ms間実行される。また、本実施形態では、トレース結果L3に収集結果と経過時間が含まれる例を示したが、これに限らず、トレース結果に、データが収集された時刻情報や、収集された順番を示すインデックス情報などが含まれていてもよい。また、本実施形態では、トレース結果L3がRAM13に記憶される例を示したが、これに限らず、トレース結果L3がROM12に記憶されるようにしてもよい。また、本実施形態では、複数のタスクに、1個の更新タスクタスクAと、2個の参照タスクタスクBおよびCとが含まれる例を示したが、これに限らず、更新タスクが1個であれば、参照タスクが1個であってもよいし、参照タスクが3個以上であってもよい。また、本実施形態において、タスクには、定期的に実行されるタスク定周期タスクに加えて、予め設定された実行条件が成立した場合に実行されるタスクイベントタスクが含まれていてもよい。