(57)【要約】      （修正有）【課題】所望のデータ量及び／又は数のトレースを実行する。【解決手段】制御システムは、制御装置と開発支援装置３とを備える。制御装置は、サンプリングデータをサンプリングデータ格納領域１１３７内の空き領域に格納可能であればトレースを実行可能と判断するトレース実行管理部１１１３と、空き領域を検出し、トレースが実行可能であると判断されたときに、記憶領域を空き領域に確保するメモリ管理部１１１５と、トレースが実行可能であると判断されたときに、サンプリングデータを取得し記憶領域に格納するトレース実行部１１１７とを有する。開発支援装置３は、制御装置からサンプリングデータを受信するサンプリングデータ受信部と、制御装置におけるトレースの実行状態を監視するトレース監視部と、トレースの実行状態を表示するトレース実行状態表示部と、を有する。【選択図】図３
2015176387.tif 000002
【特許請求の範囲】
【請求項１】
サンプリングデータ格納領域を有するメモリと、
所定のタスクを所定の周期にて繰り返し実行するタスク実行部と、
前記タスクを実行することによる入出力信号及び／又は内部変数の時間的な変化を前記入出力信号及び／又は前記内部変数をサンプリングして記憶したサンプリングデータを用いて追跡するトレースの実行要求を外部から受信した際に、前記サンプリングデータを前記サンプリングデータ格納領域内の空き領域に格納可能であれば、前記トレースを実行可能と判断するトレース実行管理部と、
前記空き領域を検出し、前記トレースが実行可能であると判断されたときに、前記サンプリングデータを格納する記憶領域を前記空き領域に確保するメモリ管理部と、
前記トレースが実行可能であると判断されたときに、前記サンプリングデータを取得し前記記憶領域に格納するトレース実行部と、
を備える制御装置。
【請求項２】
前記メモリ管理部は、前記サンプリングデータ格納領域中の複数の空き領域を１つの記憶領域として確保する、請求項１に記載の制御装置。
【請求項３】
前記メモリ管理部は、前記トレースの終了後、終了したトレースのサンプリングデータを記憶していた記憶領域を空き領域とする、請求項１又は２に記載の制御装置。
【請求項４】
サンプリングデータ格納領域を有するメモリと、
タスクを所定の周期にて繰り返し実行するタスク実行部と、
前記タスクを実行することによる入出力信号及び／又は内部変数の時間的な変化を前記入出力信号及び／又は前記内部変数をサンプリングして記憶したサンプリングデータを用いて追跡するトレースの実行要求を外部から受信した際に、前記入出力信号及び／又は前記内部変数をサンプリングして記憶したサンプリングデータを前記サンプリングデータ格納領域内の空き領域に格納可能であれば、前記トレースを実行可能と判断するトレース実行管理部と、
前記空き領域を検出し、前記トレースが実行可能であると判断されたときに、前記サンプリングデータを格納する記憶領域を前記空き領域に確保するメモリ管理部と、
前記トレースが実行可能であると判断されたときに、前記サンプリングデータを取得し前記記憶領域に格納するトレース実行部と、を有する制御装置と、
前記制御装置から前記サンプリングデータを受信するサンプリングデータ受信部と、前記制御装置におけるトレースの実行状態を監視するトレース監視部と、前記トレースの実行状態を表示するトレース実行状態表示部と、を有する開発支援装置と、
を備える制御システム。
【請求項５】
前記メモリ管理部は、前記サンプリングデータ格納領域中の複数の空き領域を１つの記憶領域として確保する、請求項４に記載の制御システム。
【請求項６】
前記メモリ管理部は、前記トレースの終了後、終了したトレースのサンプリングデータを記憶していた記憶領域を空き領域とする、請求項４又は５に記載の制御システム。
【請求項７】
前記トレース監視部は、前記空き領域のサイズを前記トレースの実行状態として監視する、請求項４〜６のいずれかに記載の制御システム。
【請求項８】
前記トレース監視部は、現在の空き領域に格納可能なデータ量を、前記トレースの実行状態として監視する、請求項４〜７のいずれかに記載の制御システム。
【請求項９】
前記トレース監視部は、前記制御装置における実行トレース数と、前記制御装置において現在登録されている登録トレース数とを、前記トレースの実行状態として監視する、請求項４〜８のいずれかに記載の制御システム。
【請求項１０】
前記トレース監視部は、実行中のトレースの設定状態を、トレースの実行状態として監視する、請求項４〜９のいずれかに記載の制御システム。
【請求項１１】
タスクを所定の周期にて繰り返し実行するステップと、
前記タスクを実行することによる入出力信号及び／又は内部変数の時間的な変化を前記入出力信号及び／又は前記内部変数をサンプリングして記憶したサンプリングデータを用いて追跡するトレースの実行要求を外部から受信した際に、メモリに確保されたサンプリングデータ格納領域内の空き領域を検出するステップと、
前記入出力信号及び／又は前記内部変数をサンプリングして記憶したサンプリングデータを前記サンプリングデータ格納領域内の空き領域に格納可能であれば、前記トレースを実行可能と判断するステップと、
トレースが実行可能であると判断されたときに、前記サンプリングデータを格納する記憶領域を前記空き領域に確保するステップと、
トレースが実行可能であると判断されたときに、前記サンプリングデータを取得し前記記憶領域に格納するステップと、
を含むデータトレース方法。
【請求項１２】
前記記憶領域を前記空き領域に確保するステップにおいて、前記サンプリングデータ格納領域中の複数の空き領域が１つの記憶領域として確保される、請求項１１に記載のデータトレース方法。
【請求項１３】
終了したトレースのサンプリングデータを記憶していた記憶領域を空き領域とするステップをさらに含む、請求項１１又は１２に記載のデータトレース方法。
【請求項１４】
前記トレースの実行状態を監視し表示するステップをさらに含む、請求項１１〜１３のいずれかに記載のデータトレース方法。
【請求項１５】
請求項１１〜１４のいずれかに記載のデータトレース方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入出力信号及び内部変数をトレース可能な制御装置、制御システム、データトレース方法、及び、プログラムに関する。
【背景技術】
【０００２】
従来、所定のタスクを所定の周期にて繰り返し実行することにより入出力信号及び／又は制御装置内部において使用される内部変数が時間的に変化する制御装置において、入出力信号及び／又は内部変数の時間的変化を追跡（トレース）する制御装置が知られている。例えば、特許文献１には、トレースを実行可能な制御用マイクロコンピュータ装置が開示されている。
【０００３】
特許文献１の制御用マイクロコンピュータ装置は、トレース条件データによるサンプリングデータ収集周期になると、設定された入力点のアドレス情報に従って演算用メモリの該当するデータを読み出しサンプリングデータ格納メモリへ順次書込む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−９１４７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
制御装置においてはこれらの上記のトレースの機能は主にプログラミングのデバッグのシーンで用いられる。これらのデバッグのシーンにおいてはタスクに割り当てられたプログラムを実行しながらデバッグを行う。
これらの制御装置においては、タスクの実行周期のさらなる短縮が求められており、デバッグについては通常の制御動作に対して影響がされないようにする必要がある。そのため従来の制御装置（制御用マイクロコンピュータ装置）においては、取得可能なデータ量及び同時に実行可能なトレース数は固定されていた。そのため、制御装置（制御用マイクロコンピュータ装置）の記憶領域に十分な空き容量があるにもかかわらず、サンプリングされたデータを蓄積したサンプリングデータの最大値は予め制限されており、又は、同時に実行できるトレース数も制限されていた。
【０００６】
特に、同時に実行できるトレースの数が制限されることは、制御装置において実行される大規模なユーザプログラムを多人数にて開発する際には、ユーザプログラムの開発の効率を低下させる。なぜなら、同時に実行できるトレースの数以上のプログラム開発者が存在する場合には、各プログラム開発者がいつトレースを実行するかの計画を立てる必要があるからである。すなわち、同時に実行できるトレース数に制限があると、各プログラム開発者が自由にトレースを実行できない。
【０００７】
本発明の課題は、所定のタスクを所定の周期にて繰り返し実行することにより入出力信号及び／又は制御装置内部において使用される内部変数が時間的に変化する制御装置、又は、当該制御装置を有する制御システムにおいて、所望のデータ量及び／又は数のトレースを実行することにある。
【課題を解決するための手段】
【０００８】
以下に、課題を解決するための手段として複数の態様を説明する。これら態様は、必要に応じて任意に組み合せることができる。
本発明の一形態に係る制御装置は、メモリと、タスク実行部と、トレース実行管理部と、メモリ管理部と、トレース実行部と、を備える。
メモリは、サンプリングデータ格納領域を有する。タスク実行部は、所定のタスクを所定の周期にて繰り返し実行する。トレース実行管理部は、トレースの実行要求を外部から受信した際に、サンプリングデータをサンプリングデータ格納領域内の空き領域に格納可能であれば、トレースを実行可能と判断する。
【０００９】
トレースとは、タスクを実行することによる入出力信号及び／又は内部変数の時間的な変化を、サンプリングデータを用いて追跡することを言う。サンプリングデータは、入出力信号及び／又は内部変数をサンプリングして記憶したデータである。
【００１０】
メモリ管理部は、サンプリングデータ格納領域内の空き領域を検出する。また、メモリ管理部は、トレースが実行可能であると判断されたときに、記憶領域を空き領域に確保する。記憶領域は、サンプリングデータを格納するための領域である。トレース実行部は、トレースが実行可能であると判断されたときに、サンプリングデータを取得し記憶領域に格納する。
【００１１】
上記の制御装置においては、タスク実行部によって所定のタスクが所定の周期にて繰り返し実行されている。タスクが所定の周期にて繰り返し実行されることにより、制御装置における入出力信号及び／又は内部変数は時間的に変化する。タスクが繰り返し実行されているときに、トレースの実行要求が外部から受信されると、トレース実行管理部が、メモリ管理部に対してサンプリングデータ格納領域内の空き領域を検出するように指令する。
【００１２】
メモリ管理部がサンプリングデータ格納領域内の空き領域を検出後、トレース実行管理部が、検出された空き領域にサンプリングデータを格納可能かどうか判断する。サンプリングデータを空き領域に格納できると判断した場合には、トレース実行管理部は、実行要求されたトレースが実行可能であると判断する。
【００１３】
トレース実行管理部においてトレースが実行可能と判断された場合、メモリ管理部が、サンプリングデータを格納する記憶領域を空き領域に確保する。その後、トレース実行部が、サンプリングデータを取得し、確保された記憶領域にサンプリングデータを記憶する。
【００１４】
上記の制御装置においては、トレース実行管理部が、トレースの実行要求を外部から受信した際に、サンプリングデータをサンプリングデータ格納領域内の空き領域に格納可能であれば、トレースを実行可能と判断する。そして、トレースが実行可能であると判断されたときに、メモリ管理部がサンプリングデータを記憶する記憶領域を空き領域に確保する。
【００１５】
これにより、上記の制御装置は、メモリ中（サンプリングデータ格納領域内）の空き領域をサンプリングデータのデータ量に応じて任意のサイズにて効率よく確保して、サンプリングデータをサンプリングデータ格納領域内に格納できる。その結果、上記の制御装置においては、所望のデータ量及び／又は数のトレースを実行できる。
【００１６】
メモリ管理部は、サンプリングデータ格納領域中の複数の空き領域を１つの記憶領域として確保してもよい。これにより、上記の制御装置においては、サンプリングデータ格納領域中の空き領域を無駄なく使用できる。
【００１７】
メモリ管理部は、トレースの終了後、終了したトレースのサンプリングデータを記憶していた記憶領域を空き領域としてもよい。これにより、上記の制御装置においては、以後実行されるトレースのための記憶領域をサンプリングデータ格納領域内により多く確保できる。
【００１８】
本発明の他の見地に係る制御システムは、上記の制御装置と開発支援装置とを備える。
開発支援装置は、サンプリングデータ受信部と、トレース監視部と、トレース実行状態表示部と、を有する。サンプリングデータ受信部は、制御装置からサンプリングデータを受信する。トレース監視部は、制御装置におけるトレースの実行状態を監視する。トレース実行状態表示部は、トレースの実行状態を表示する。
【００１９】
上記の制御システムにおいては、開発支援装置がサンプリングデータ受信部を有することにより、制御装置において取得したサンプリングデータを開発支援装置において取得し参照できる。その結果、開発支援装置においてトレース結果を参照できる。
【００２０】
また、上記の制御システムにおいては、開発支援装置がトレース監視部を有することにより、開発支援装置においてトレースの実行状態を監視できる。さらに、開発支援装置がトレース実行状態表示部を有することにより、開発支援装置においてトレースの実行状態を視覚的に確認できる。
【００２１】
トレース監視部は、空き領域のサイズをトレースの実行状態として監視してもよい。これにより、開発支援装置において、サンプリングデータ格納領域の空き領域のサイズを確認しながらトレース条件を設定できる。
【００２２】
トレース監視部は、現在の空き領域に格納可能なデータ量を、トレースの実行状態として監視してもよい。これにより、開発支援装置において、どの程度のサンプリングデータが取得可能であるかを確認しながらトレース条件を設定できる。
【００２３】
トレース監視部は、制御装置における実行トレース数と、制御装置において現在登録されている登録トレース数とを、トレースの実行状態として監視してもよい。これにより、自身および他の開発支援装置から要求されたトレースの実行状態を確認できる。
【００２４】
トレース監視部は、実行中のトレースの設定状態を、トレースの実行状態として監視してもよい。これにより、どの設定のトレースが実行中であるかを確認できる。
【００２５】
本発明のさらに他の見地に係るデータトレース方法は、以下のステップを含む。
◎タスクを所定の周期にて繰り返し実行するステップ。
◎トレースの実行要求を外部から受信した際に、メモリに確保されたサンプリングデータ格納領域内の空き領域を検出するステップ。
◎サンプリングデータをサンプリングデータ格納領域内の空き領域に格納可能であれば、トレースを実行可能と判断するステップ。
◎トレースが実行可能であると判断されたときに、サンプリングデータを格納する記憶領域を空き領域に確保するステップ。
◎トレースが実行可能であると判断されたときに、サンプリングデータを取得し記憶領域に格納するステップ。
【００２６】
上記のデータトレース方法においては、トレースの実行要求を外部から受信した際に、サンプリングデータをサンプリングデータ格納領域内の空き領域に格納可能であれば、トレースを実行可能と判断する。そして、トレースが実行可能であると判断されたときに、サンプリングデータを記憶する記憶領域を空き領域に確保する。
【００２７】
これにより、上記のデータトレース方法においては、メモリ中（サンプリングデータ格納領域内）の空き領域をトレースのデータ量に応じて任意のサイズにて効率よく確保して、サンプリングデータをサンプリングデータ格納領域内に格納できる。その結果、所望のデータ量及び／又は数のトレースを実行できる。
【００２８】
記憶領域を空き領域に確保するステップにおいて、サンプリングデータ格納領域中の複数の空き領域が１つの記憶領域として確保されてもよい。これにより、より効率よくサンプリングデータ領域中の空き領域を使用できる。
【００２９】
上記のデータトレース方法は、さらに、終了したトレースのサンプリングデータを記憶していた記憶領域を空き領域とするステップをさらに含んでもよい。これにより、以後実行されるトレースのための記憶領域をサンプリングデータ格納領域内により多く確保できる。
【００３０】
本発明のさらに他の見地に係るプログラムは、上記のデータトレース方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００３１】
上記の制御装置、制御システム、及びデータトレース方法によって、所望のデータ量及び／又は数のトレースを実行できる。
【図面の簡単な説明】
【００３２】
【図１】制御システムの全体構成を示す図。
【図２】制御装置及び開発支援装置の構成を示す図。
【図３】制御装置の詳細構成を示す図。
【図４Ａ】トレース管理テーブルの一例を示す図。
【図４Ｂ】トレースＩＤｎのトレース情報が追加されたトレース管理テーブルを示す図。
【図４Ｃ】サンプリングデータ取得終了後のトレース管理テーブル一例を示す図。
【図５】開発支援装置の詳細構成を示す図。
【図６Ａ】トレース実行表示画面の一例を示す図。
【図６Ｂ】実行トレースの実行状態と、登録トレースの実行状態とをトレースの実行状態として表示したときのトレース実行表示画面の一例を示す図。
【図７Ａ】タスクの実行処理を示すフローチャート。
【図７Ｂ】トレース実行処理の概略を示すフローチャート。
【図７Ｃ】トレースの実行状態表示処理時の動作を示すフローチャート。
【図７Ｄ】制御装置においてトレースデータ格納領域の使用量を算出する場合のトレース条件設定処理時の動作を示すフローチャート。
【図７Ｅ】開発支援装置においてトレースデータ格納領域の使用量を算出する場合のトレース条件設定処理時の動作を示すフローチャート。
【図７Ｆ】サンプリングデータ取得処理時の動作を示すフローチャート。
【図７Ｇ】サンプリングデータ取得終了処理時の動作を示すフローチャート。
【図８Ａ】サンプリングデータ格納領域の使用状況の一例を示す図。
【図８Ｂ】トレースＩＤｎのトレースのために新たに記憶領域を確保した後のサンプリングデータ格納領域の使用状況を示す図。
【図８Ｃ】サンプリングデータ取得終了後のサンプリングデータ格納領域の使用状況の一例を示す図。
【発明を実施するための形態】
【００３３】
１．第１実施形態
（１）制御システムの全体構成
まず、第１実施形態に係る制御システム１００の全体構成について、図１を用いて説明する。図１は、制御システムの全体構成を示す図である。制御システム１００は、ＰＬＣシステム１と開発支援装置３とを備える。
ＰＬＣシステム１は、例えば、センサやスイッチなどにより構成される信号入力部５から信号を入力する。また、ＰＬＣシステム１は、信号入力部５（後述）からの入力信号を必要の応じて用いプログラムを実行して、制御対象機器７を制御する出力信号を算出する。
【００３４】
開発支援装置３は、ＰＬＣシステム１の制御装置１１において実行されるユーザプログラム１１３１（図３）を作成するための各種機能を実現する。また、ＰＬＣシステム１に接続可能な開発支援装置３の数は１に限られず、例えば、開発支援装置３に割当可能なアドレス数などが許す限り、任意の数の開発支援装置３を接続できる。
以下に、ＰＬＣシステム１、制御装置１１、及び開発支援装置３の詳細な構成についてそれぞれ説明する。
【００３５】
（２）ＰＬＣシステムの構成
次に、ＰＬＣシステム１の詳細な構成について図１を用いて説明する。本実施形態に係るＰＬＣシステム１は、制御装置１１と、入力ユニット１３と、出力ユニット１５と、電源ユニット１７と、を有する。
【００３６】
本実施形態に係る制御装置１１は、プログラマブル・ロジック・コントローラ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ、ＰＬＣ）のＣＰＵユニットである。制御装置１１においては、入力ユニット１３（後述）に入力される入力信号が制御装置１１内部において用いられる入力変数に関連づけられている。また、出力ユニット１５（後述）への出力信号が制御装置１１内部において用いられる出力変数に関連づけられている。
【００３７】
また、制御装置１１においては、所定のタスクが所定の周期にて繰り返し実行されている。ここで、タスクとは、入力ユニット１３からの入力信号に基づいて入力変数を更新し、出力変数に基づいて出力ユニット１５へ出力する出力信号を更新するＩ／Ｏリフレッシュ処理と、ユーザプログラム１１３１及び／又はシステムプログラム１１５ａ（後述）を実行する処理とを含む処理単位のことである。なお、タスクには、モーションコントロール処理などの他の処理がさらに含まれていてもよく、また、プログラムの実行処理のみが含まれていてもよい。
【００３８】
また、以下に説明するトレース機能によるサンプリングデータの取得は、タスク実行中の所定のタイミングにおいて行われる。なお、具体的にどのタイミングにおいてサンプリングデータの取得が行われるかは、後ほど説明する。
【００３９】
制御装置１１において実行されるプログラムは、上記の入力変数と必要に応じて内部変数とを用いて、上記の出力変数を算出している。そのため、タスクが所定の周期にて繰り返し実行されることにより、入力信号及び出力信号（入出力信号）、及び／又は、入力変数と出力変数と内部変数とを含む変数は時間的に変化している。
【００４０】
よって、実行中のユーザプログラムが適切に動作しているかどうかを確認することを主な目的として、制御装置１１は、上記の信号値（入出力信号に関連づけられた入力変数値及び出力変数値）及び内部変数値の時間的な変化を、当該信号値及び内部変数値をサンプリングして記憶することにより追跡する機能（トレース機能）を有している。
【００４１】
入力ユニット１３は、センサやスイッチなどの信号入力部５から入力信号を入力し、制御装置１１に当該入力信号を出力する。入力ユニット１３としては、信号入力部５から入力される信号種類に応じた入力ユニットを使用できる。具体的には、例えば、信号入力部５が温度を測定する熱電対により構成されている場合には、熱電対において発生する電圧を入力信号とする入力ユニットを入力ユニット１３として用いることができる。また、例えば、信号入力部５が電気スイッチにより構成されている場合には、当該スイッチのＯＮ／ＯＦＦ状態を入力信号とする入力ユニットを入力ユニット１３として用いることができる。
【００４２】
出力ユニット１５は、制御装置１１の出力変数に関連づけられた出力信号を、対応する制御対象機器７に出力する。これにより、制御装置１１は、プログラムを実行することにより算出された出力変数に基づいて、制御対象機器７を制御できる。
【００４３】
出力ユニット１５は、出力信号の種類に応じた出力ユニットとして構成できる。例えば、制御対象機器７がモータであり、モータの位置制御などを行う場合には、モーションコントローラ機能を有した出力ユニットを用いることができる。また、例えば、制御対象機器７が電気炉である場合には、電気炉を制御するリレーを制御する信号（例えば、ＯＮ／ＯＦＦデューティ比を制御する信号）を出力する出力ユニットを用いることができる。
【００４４】
電源ユニット１７は、制御装置１１、入力ユニット１３、及び出力ユニット１５に電力を供給する。
なお、ＰＬＣシステム１は、上記の構成要素の全てを１の筐体内に組み込んだシステムであってもよいし、各構成要素を個別の筐体に組み込んで当該構成要素を接続してＰＬＣシステムとしてもよい。特に、入力ユニット１３及び出力ユニット１５を個別の構成要素とすることにより、ＰＬＣシステム１は、所望する制御対象機器及び信号入力部を所望の数接続できる。
【００４５】
（３）制御装置の構成
Ｉ．全体構成
次に、制御装置１１の構成の詳細について、図２及び図３を用いて説明する。図２は、制御装置及び開発支援装置の構成を示す図である。図３は、制御装置の詳細構成を示す図である。
上記のように、制御装置１１はＰＬＣシステムにおけるＣＰＵユニットである。図２に示すように、制御装置１１は、プログラムの実行などの演算処理を行うＣＰＵ１１１と、書き込みと読み出しとが可能な記憶領域を提供するＲＡＭ１１３と、読み出しのみを主目的としている記憶領域を提供するＲＯＭ１１５と、開発支援装置３との通信を行う通信インターフェース１１７と、を有する。
【００４６】
通信インターフェース１１７は、例えば、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）などのデータ通信プロトコルを用いてデータ送受信を実行する。これにより、制御装置１１と、開発支援装置３に割当可能なアドレス数分の開発支援装置３との間にてデータ送受信できる。
【００４７】
次に、制御装置１１の各種機能を実現する各部について、図３を用いてさらに詳しく説明する。本実施形態において、以下に説明する制御装置１１の各部の機能は、図２に示す制御装置１１のＣＰＵ１１１において、ＲＯＭ１１５に記憶されたシステムプログラム１１５ａを実行することにより実現されている。
【００４８】
図３に示すように、制御装置１１は、タスク実行部１１１１と、トレース実行管理部１１１３と、メモリ管理部１１１５と、トレース実行部１１１７と、を有する。
タスク実行部１１１１は、ＲＡＭ１１３に記憶されたユーザプログラム１１３１を参照し、ユーザプログラム１１３１の実行処理を含んだ所定のタスクを所定の周期にて繰り返し実行する。なお、タスク実行部１１１１において実行されるタスクの数は複数であってもよい。
【００４９】
トレース実行管理部１１１３は、通信インターフェース１１７（図２）に接続された開発支援装置３からトレースの実行要求（後述）を受信した際に、トレースの実行要求により実行すべきトレースが実行可能かどうかを判断する。トレースが実行可能かどうかを判断は、メモリ管理部１１１５（後述）が検出したサンプリングデータ格納領域内の空き領域に、サンプリングデータを格納可能かどうかにより判断される。
【００５０】
トレース実行管理部１１１３は、ＲＡＭ１１３に確保されているサンプリングデータ格納領域１１３７内の空き領域のサイズがサンプリングデータのデータサイズ（サンプリングデータ格納領域１１３７（後述）の使用量と呼ばれることもある）以上であれば、サンプリングデータを上記の空き領域に格納可能と判断する。
【００５１】
その後、トレース実行管理部１１１３は、サンプリングデータ格納領域１１３７内の空き領域にサンプリングデータを格納可能であると判断したときに、トレースの実行要求があったトレースを実行可能と判断する。
【００５２】
さらに、トレース実行管理部１１１３は、現在の実行トレース及びトレース実行のために現在登録されている登録トレースに関する情報を、例えば、ＲＡＭ１１３に記憶されたトレース管理テーブル１１３３（図４Ａ）に記憶して管理している。これにより、トレース実行管理部１１１３は、複数の実行トレース及び登録トレースに関する情報（トレース情報）を参照して一元管理できる。
【００５３】
メモリ管理部１１１５は、サンプリングデータ格納領域１１３７の使用状況を確認する。具体的には、メモリ管理部１１１５は、トレース実行管理部１１１３からの空き領域検出要求に対して、サンプリングデータ格納領域１１３７内の空き領域の検出を行う。本実施形態においては、メモリ管理部１１１５は、サンプリングデータ格納領域１１３７のメモリアドレスをスキャンして、スキャンしたメモリアドレスにおける記憶内容が未使用状態（例えば、“００”又は“ＦＦ”（１６進数表示）を記憶）であれば、当該メモリアドレスの記憶領域は空き領域と判断する。
【００５４】
また、メモリ管理部１１１５は、トレース実行管理部１１１３においてトレースが実行可能と判断されたときに、検出した空き領域に、トレースに用いるサンプリングデータのデータ量に対応する記憶領域を確保する。なお、トレースに用いるサンプリングデータのデータ量は、入出力信号（入力変数、出力変数）及び内部変数のサンプリング数により決定される。なお、上記のサンプリング数は、トレース条件のサンプリング時間（後述）と収集タイミング（サンプリングタイミング）により決定される。
【００５５】
トレース実行部１１１７は、トレース実行管理部１１１３においてトレースが実行可能と判断されたときに、サンプリングデータを取得し、取得したサンプリングデータをサンプリングデータ格納領域１１３７に確保した記憶領域に格納する。具体的には、トレース実行部１１１７は、変数格納領域１１３５から、トレース条件においてトレース対象として指定されている入力変数の変数値、出力変数の変数値、及び／又は内部変数（トレース対象変数）の変数値を、予め設定されたタイミング（収集タイミング）において、トレース条件において指定されたサンプリング時間の期間中サンプリングし、サンプリングした変数値を上記の記憶領域に格納する。
【００５６】
本実施形態の制御装置１１が上記の構成要素を有することにより、制御装置１１は、サンプリングデータ格納領域１１３７の空き領域をサンプリングデータのデータ量に応じて任意のサイズにて効率よく確保して、サンプリングデータをサンプリングデータ格納領域１１３７内に格納できる。その結果、制御装置１１は、サンプリングデータ格納領域１１３７内の空き領域のサイズに応じて、所望のデータ量及び／又は数のトレースを実行できる。
【００５７】
ＩＩ．トレース管理テーブルの構成
【００５８】
ここで、トレース実行管理部１１１３において用いられるトレース管理テーブル１１３３の例について、図４Ａを用いて説明する。図４Ａは、トレース管理テーブルの一例を示す図である。図４Ａに示すトレース管理テーブル１１３３においては、ｎ−１個のトレースが登録されている。
トレース管理テーブル１１３３は、トレースＩＤ記録領域１１３３−１と、トレース要求元記録領域１１３３−２と、トレース条件記録領域１１３３−３と、データ格納領域記録領域１１３３−４と、トレース実行状態記録領域１１３３−５と、を有する。
【００５９】
トレースＩＤ記録領域１１３３−１は、実行中のトレース（実行トレース）及び登録トレースに割り当てられた識別番号であるトレースＩＤが記録される。トレース要求元記録領域１１３３−２は、トレースＩＤにより示されたトレースの実行を要求した開発支援装置に関する情報（例えば、開発支援装置のＩＰアドレスなど）を記録している。
【００６０】
トレース条件記録領域１１３３−３は、各トレースのトレース条件（後述）を記録している。トレース条件として、例えば、トレースの対象となる変数（トレース対象変数）の種類と、各トレース対象変数のサンプリングタイミングである収集タイミングと、トレース対象変数をサンプリングする時間であるサンプリング時間とが存在する。
【００６１】
データ格納領域記録領域１１３３−４は、記憶領域（後述）に関する情報を記録している。図４Ａに示す例では、データ格納領域記録領域１１３３−４には、記憶領域の開始メモリアドレスと終了メモリアドレスとが記憶されている。しかし、これに限られず、データ格納領域記録領域１１３３−４は、記憶領域の開始メモリアドレスと記憶領域サイズとを記憶していてもよい。
【００６２】
トレース実行状態記録領域１１３３−５は、各トレースが実行されているかどうかを記録している。例えば、「実行中」と記録されたトレースは、実行されている状態のトレース（実行トレース）である。一方、「待機中」と記録されたトレースは、サンプリングデータ格納領域１１３７内に記憶領域が確保されているが、まだ実行されていない登録トレースである。
【００６３】
図４Ａに示すようなトレース管理テーブル１１３３を用いることにより、トレース実行管理部１１１３は、各トレースのトレースに関する情報を、トレースＩＤに基づいて管理できる。
【００６４】
（４）開発支援装置の構成
Ｉ．全体構成
次に、開発支援装置３の構成の詳細について、図２及び図５を用いて説明する。図５は、開発支援装置の詳細構成を示す図である。なお、図１及び図２においては、開発支援装置３は制御装置１１に複数台接続されているが、以下においては、１個の開発支援装置３−ｎの構成について説明する。
【００６５】
開発支援装置３は、例えば、パーソナルコンピュータなどのコンピュータである。よって、図２に示すように、開発支援装置３−ｎは、プログラムの実行などの演算処理を行うＣＰＵ３１と、記憶領域を提供する記憶部３３と、キーボードやマウスなどの入力手段により構成されている操作部３５と、制御装置１１との通信を行う通信インターフェース３７と、トレース実行表示画面Ｄ（後述）などを表示する表示部３９と、を有する。
【００６６】
なお、通信インターフェース３７は、制御装置１１におけるデータ通信プロトコルと同一のプロトコルを用いて、制御装置１１とデータ送受信を行う。従って、本実施形態において、通信インターフェース３７は、例えば、ＴＣＰ／ＩＰプロトコルにて通信可能なインターフェースである。
【００６７】
次に、開発支援装置３−ｎにおける各種機能を実現する各部について図５を用いて説明する。以下に説明する開発支援装置３の各部の機能は、図２に示す開発支援装置３のＣＰＵ３１において、記憶部３３に記憶された開発支援プログラム３３ａを実行することにより実現されている。
図５に示すように、開発支援装置３−ｎは、プログラミング部３１１と、デバッグ部３１３と、トレース部３１５と、を有する。
プログラミング部３１１は、ユーザプログラム１１３１を編集する。具体的には、プログラミング部３１１は、操作部３５のユーザによる操作により、ユーザプログラム１１３１を新たに作成し、又は、制御装置１１に記憶されているユーザプログラム１１３１を修正する。また、プログラミング部３１１は、ユーザにより作成又は修正されたユーザプログラム１１３１から制御装置１１において実行可能なユーザプログラムを生成する。
【００６８】
デバッグ部３１３は、ユーザにより作成又は修正されたユーザプログラム１１３１が正常に動作するかどうかを確認する（デバッグ機能）。
例えば、デバッグ部３１３は、ユーザが作成又は修正したユーザプログラム１１３１から制御装置１１にて実行可能なユーザプログラムを生成する際に、プログラミング部３１１から出力されたエラーコードを表示するデバッグ機能を提供する。
【００６９】
また、デバッグ部３１３は、トレース部３１５（後述）において取得したサンプリングデータを用いて、入出力信号（入力変数、出力変数）及び／又は内部変数の時間的変化（トレース結果）を確認することにより、作成又は修正したユーザプログラム１１３１が正常に動作しているかどうかを確認するデバッグ機能を提供する。
【００７０】
さらに、デバッグ部３１３は、制御装置１１の動作中に、ユーザプログラム１１３１の実際の実行状態を表示することによるデバッグ機能を提供する。
上記のトレース結果を用いたデバッグ機能、及び／又は、上記のプログラムの実行状態の表示を用いたデバッグ機能により、ユーザプログラム１１３１を作成又は修正するユーザは、ユーザプログラム１１３１中のエラー発生箇所を視覚的に確認できる。
【００７１】
トレース部３１５は、実行したいトレースのトレース条件を設定し、制御装置１１に対してトレース条件に設定したトレースを実行するよう指示する。また、トレース部３１５は、制御装置１１において取得されたサンプリングデータを受信し、サンプリングデータを時間軸上に表示することにより、トレース結果を表示する。
【００７２】
また、トレース部３１５は、制御装置１１における現在のトレースの実行状態をモニター（監視）し、トレースの実行状態を視覚的に示す。これにより、ユーザは、トレースの実行状態を確認して、実行したいトレースのトレース条件を決定でき、又は、トレースを実行するか中止するかを決定できる。
以下に、トレース部３１５のさらに詳細な構成ついて説明する。
【００７３】
ＩＩ．トレース部の構成
ここで、開発支援装置３におけるトレース部３１５のさらに詳細な構成について図５を用いて説明する。
図５に示すように、トレース部３１５は、サンプリングデータ受信部３１５−１と、トレース結果表示部３１５−３と、トレース条件設定部３１５−５と、トレース開始指示部３１５−７と、トレース監視部３１５−９と、トレース実行状態表示部３１５−１１と、を有する。
サンプリングデータ受信部３１５−１は、通信インターフェース３７に接続された制御装置１１から、サンプリングデータ格納領域１１３７に格納されたサンプリングデータを受信し、開発支援装置３の記憶部３３に記憶する。サンプリングデータ受信部３１５−１が、制御装置１１からサンプリングデータを受信し記憶部３３に記憶することにより、開発支援装置３においてサンプリングデータを参照できる。
【００７４】
トレース結果表示部３１５−３は、制御装置１１から受信し記憶部３３に記憶したサンプリングデータを表示する。トレース結果表示部３１５−３は、例えば、入出力信号（入力変数、出力変数）及び／又は内部変数をサンプリングした時刻を横軸とし、当該サンプリングした時刻に対応する上記の変数値を縦軸としたグラフ上に、サンプリングデータをプロットする。これにより、トレース結果表示部３１５−３は、入出力信号及び／又は内部変数の時間的変化（トレース結果）を視覚的に表示できる。
【００７５】
トレース条件設定部３１５−５は、実行したいトレースのトレース条件を設定する。具体的には、トレース条件設定部３１５−５は、例えば、トレースしたいトレース対象変数（入出力信号及び内部変数）と、各トレース対象変数のサンプリング（収集）タイミングと、トレース結果を表示するためのサンプリングデータの取得時間（サンプリング時間）と、をトレース条件として設定する。
また、トレース条件設定部３１５−５は、トレースを開始したいタイミング（トレース開始トリガー）をトレース条件として設定可能となっていてもよい。
【００７６】
トレース開始指示部３１５−７は、トレースの開始を制御装置１１に対して指令する。トレース監視部３１５−９は、制御装置１１におけるトレースの実行状態を監視する。
【００７７】
本実施形態においては、トレース監視部３１５−９は、サンプリングデータ格納領域１１３７内の空き領域のサイズ、及び、現在の領域に格納可能なデータ量を、トレースの実行状態として監視している。
また、トレース監視部３１５−９は、制御装置１１における実行トレース数と登録トレース数とを、トレースの実行状態として監視してもよい。さらに、トレース監視部３１５−９は、実行中のトレースの実行状態をトレースの実行状態として監視してもよい。
【００７８】
トレース実行状態表示部３１５−１１は、トレース監視部３１５−９において監視されているトレースの実行状態をトレース実行表示画面Ｄ（図６Ａ、図６Ｂ）に表示する。トレースの実行状態をトレース実行表示画面Ｄに表示することにより、開発支援装置３においてトレースの実行状態を視覚的に確認できる。
【００７９】
ＩＩＩ．トレース実行表示画面
次に、トレース部３１５によりトレースが開始された際に、開発支援装置３−ｎの表示部３９に表示されるトレース実行表示画面Ｄについて、図６Ａ及び図６Ｂを用いて説明する。図６Ａは、トレース実行表示画面の一例を示す図である。図６Ｂは、実行トレースの実行状態と、登録トレースの実行状態とをトレースの実行状態として表示したときのトレース実行表示画面の一例を示す図である。
図６Ａに示すように、トレース実行表示画面Ｄは、空き領域サイズ表示領域Ｄ１と、格納可能データ量表示領域Ｄ２と、サンプリング時間設定値表示領域Ｄ３と、トレース対象変数設定表示領域Ｄ４と、トレース開始ボタン表示領域Ｄ５と、メモリ使用量表示領域Ｄ６と、収集タイミング設定表示領域Ｄ７と、を有する。
【００８０】
空き領域サイズ表示領域Ｄ１は、サンプリングデータ格納領域１１３７の空き領域のサイズを、トレースの実行状態として表示する。
【００８１】
格納可能データ量表示領域Ｄ２は、現在の空き領域に格納可能なデータ量を、トレースの実行状態として表示する。図６Ａに示す格納可能データ量表示領域Ｄ２は、現在の空き領域に格納可能なデータ量として、トレース対象変数設定表示領域Ｄ４（後述）に示されたトレース対象変数を選択したときに、サンプリング時間として設定可能な最大値（最大サンプリング可能時間）を表示している。
【００８２】
最大サンプリング可能時間は、空き領域のサイズと、トレース対象変数の選択数と、選択されているトレース対象変数のデータ型と、トレース対象変数の収集タイミング（サンプリングタイミング、又は、サンプリング周期）により決定される。従って、トレース条件設定部３１５−５によりトレース対象変数の設定条件が変更されると、トレース対象変数設定表示領域Ｄ４の表示は変化する。
【００８３】
サンプリング時間設定値表示領域Ｄ３は、現在のトレース条件におけるサンプリング時間の設定値を表示する。サンプリング時間設定値表示領域Ｄ３に表示されているサンプリング時間は、操作部３５の操作により変更可能となっている。そして、当該表示領域においてサンプリング時間が変更されたことを検知すると、トレース条件設定部３１５−５は、サンプリング時間を変更した新たなトレース条件を設定し直す。
【００８４】
トレース対象変数設定表示領域Ｄ４は、現在のトレース条件におけるトレース対象変数の設定を表示する。トレース対象変数設定表示領域Ｄ４においては、各トレース対象変数名と各トレース対象変数のデータ型とが表示されている。
また、サンプリング時間設定値表示領域Ｄ３と同様に、トレース対象変数設定表示領域Ｄ４に表示されているトレース対象変数の設定条件は、操作部３５の操作により変更可能となっている。そして、当該表示領域においてトレース対象変数の設定条件が変更されたことを検知すると、トレース条件設定部３１５−５は、トレース対象変数の設定条件を変更した新たなトレース条件を設定し直す。
【００８５】
なお、トレース対象変数設定表示領域Ｄ４に表示されているトレース対象変数名及びトレース対象変数のデータ型と、収集タイミング設定表示領域Ｄ７（後述）に表示されている収集タイミング（サンプリングタイミング）とが、上記のトレース管理テーブル１１３３のトレース条件記録領域１１３３−３に記録されている「設定」を構成する情報となる。
【００８６】
トレース開始ボタン表示領域Ｄ５は、トレース開始ボタンを表示する。操作部３５によりトレース開始ボタンが押されたことが検知されると、トレース開始指示部３１５−７は、トレースの開始を制御装置１１に対して指令する。
メモリ使用量表示領域Ｄ６は、現在表示されているトレース条件を実行したときに使用される空き領域（メモリ）の使用量を表示する。トレース条件を設定するユーザは、メモリ使用量表示領域Ｄ６に表示されている使用量と、空き領域サイズ表示領域Ｄ１に表示されている空き領域のサイズとを比較しながら、トレース条件を設定できる。
【００８７】
収集タイミング設定表示領域Ｄ７は、トレース対象変数設定表示領域Ｄ４に表示されたトレース対象変数をサンプリングするタイミング（収集タイミング、又は、サンプリングタイミング）を表示する。
【００８８】
上記のトレース実行表示画面Ｄを開発支援装置３の表示部３９に表示することにより、ユーザは、表示された情報を確認しながら、トレース条件を設定できる。
【００８９】
また、トレース実行表示画面Ｄの格納可能データ量表示領域Ｄ２に現在の空き領域に格納可能なデータ量（最大サンプリング可能時間）を表示することにより、ユーザは、どの程度のサンプリングデータが取得可能であるかを確認しながらトレース条件を設定できる。
【００９０】
上記のトレース実行表示画面Ｄは、図６Ａに示した表示例に限られない。変形例として、例えば、図６Ｂに示すように、トレース監視部３１５−９が制御装置１１における実行トレース数及び登録トレース数の実行状態をトレースの実行状態として監視している場合には、トレース実行表示画面Ｄは、さらに、トレース数表示領域Ｄ８と、トレース実行状態表示領域Ｄ９と、現在表示トレース設定名表示領域Ｄ１０を有していてもよい。
【００９１】
トレース数表示領域Ｄ８は、現在トレースＩＤが割り当てられており、トレース実行のために現在登録されているトレースの数（登録トレース数）と、制御装置１１において実行中の実行トレースの数（実行トレース数）とを、トレースの実行状態として表示する。トレース実行表示画面Ｄのトレース数表示領域Ｄ８に、実行トレース数と登録トレース数とをトレースの実行状態として表示することにより、自身および他の開発支援装置３から要求されたトレースの実行状態を確認できる。
【００９２】
トレース実行状態表示領域Ｄ９は、トレースの実行状態を表示する。図６Ｂに示すトレース実行状態表示領域Ｄ９においては、各トレースが、自身の開発支援装置３−ｎにより設定されたトレースであるかどうか（○印がついた実行トレースが、自身の開発支援装置３において設定されたトレース）と、各トレースのトレース設定（トレース条件）と、各トレースが実行中であるか待機中であるかを示す実行状態と、が表示されている。トレース実行表示画面Ｄのトレース実行状態表示領域Ｄ９に、トレースの実行状態を表示することにより、どの設定（トレース条件）のトレースが実行中であるかを確認できる。
【００９３】
現在表示トレース設定名表示領域Ｄ１０は、トレース実行表示画面Ｄに現在表示されているトレース条件の設定名が表示される。例えば、図６Ｂに示す例においては、「設定Ｅ」が設定名として表示されている。なお、「番号」に表示されている番号は、トレースＩＤであるとは限らない。
【００９４】
（５）制御システムの動作
Ｉ．タスク実行処理
次に、本実施形態における制御システム１００の動作について説明する。まず、制御システム１００におけるタスクの実行処理について、図７Ａを用いて説明する。図７Ａは、タスクの実行処理を示すフローチャートである。図７Ａに示すフローチャートにより説明する制御システム１００のタスクの実行処理は、制御装置１１において、Ｉ／Ｏリフレッシュ処理とユーザプログラムなどの実行処理とを含むタスクが所定の周期にて繰り返し実行される場合の動作である。
【００９５】
制御システム１００が動作を開始すると、まず、タスク実行部１１１１は、Ｉ／Ｏリフレッシュ処理を実行する（ステップＳ１００１）。具体的には、タスク実行部１１１１は、入力ユニット１３から受信した入力信号値を、変数格納領域１１３５に格納され当該入力信号に関連づけられた入力変数に反映させる。また、変数格納領域１１３５に格納された出力変数の値を、当該出力変数に関連づけられている出力信号値に反映させて、出力ユニット１５に出力する。
【００９６】
ステップＳ１００１においてＩ／Ｏリフレッシュ処理を実行した段階においては、入力信号値が変更していれば、関連づけられた入力変数値が前回のタスク実行時の値から変化する。
【００９７】
次に、タスク実行部１１１１は、ユーザプログラム１１３１を実行する（ステップＳ１００２）。ステップＳ１００２におけるユーザプログラム１１３１の実行後の時点おいて、出力変数の値とユーザプログラム１１３１などにおいて用いられた内部変数の値が、前回のタスク実行時の値から変化している（場合がある）。
なぜなら、入力変数が前回のタスク実行時から変化していれば、ユーザプログラム１１３１などを値変化後の入力変数を用いて実行した結果、出力変数及び／又は内部変数の算出結果も変化する（ことがある）からである。
【００９８】
ステップＳ２においてプログラムを実行後、タスク実行部１１１１は、再びステップＳ１００１に戻り、Ｉ／Ｏリフレッシュ処理を行う。
【００９９】
制御システム１００の動作を継続する間、制御システム１００（制御装置１１）は、図７Ａに示すフローチャートに示すタスク実行処理を所定の周期にて繰り返し実行している。その結果、タスクが繰り返し実行されている間に入力信号値が時間的に変化した場合には、関連づけられた入力変数が時間的に変化する。また、入力変数の時間的な変化に伴って、出力信号に関連づけられる出力変数の値、場合によっては、プログラム内部において用いられた内部変数の値も時間的に変化する。
【０１００】
図７Ａに示すタスクの実行時において、トレース対象変数の収集タイミングとしては、タスク実行周期（すなわし、所定の周期毎）（図７Ａにおいて（１）にて示すタイミング）と、ユーザプログラム１１３１中の所定のタイミング（図７Ａにおいて（２）にて示すタイミング）と、所定の時刻又は所定のトリガタイミング（図７Ａにおいて（３）にて示すタイミング）とがある。
どのタイミングにおいてトレース対象変数を取得するかは、トレース条件の設定時に設定する。また、収集タイミングは、トレース対象変数ごとに個別に指定できる。
【０１０１】
ＩＩ．トレース実行処理の概略
次に、トレース実行処理の概略について図７Ｂを用いて説明する。図７Ｂは、トレース実行処理の概略を示すフローチャートである。
なお、以下のトレース実行処理の詳細説明においては、制御装置１１に接続されたｎ−１個の開発支援装置３−１、３−２、・・・３−（ｎ−１）（図１〜図３）からトレースが実行されている（あるいは実行予定とされている（登録されている））状態において、ｎ個目の開発支援装置３−ｎ（図１〜図３）からトレースの実行が要求される場合を例にとって説明する。
【０１０２】
まず、開発支援装置３−ｎにおいてトレースの実行が開始されると、開発支援装置３−ｎは、表示部３９にトレース実行表示画面Ｄを表示する。このとき、上記のように、トレース実行表示画面Ｄには、トレースの実行状態が表示される（ステップＳ１）。これにより、開発支援装置３−ｎを使用してトレースを実行しようとしているユーザは、現在のトレースの実行状態を確認しながら、トレース条件の設定等ができる。
【０１０３】
トレースの実行状態を表示後、開発支援装置３−ｎにおいてトレース条件が設定される（ステップＳ２）。トレース条件の設定は、開発支援装置３−ｎにおいて、トレース実行表示画面Ｄに表示されたトレース条件を、操作部３５を用いて変更することにより設定できる。トレース実行表示画面Ｄ上のトレース条件の設定内容が変更されると、トレース条件設定部３１５−５が、変更されたトレース条件を新たなトレース条件として設定する。
【０１０４】
トレース条件の設定を完了して開発支援装置３からトレースの実行要求を送信後、実行指令されたトレースが実行可能である場合には、制御装置１１は、トレース条件に示されたトレース対象変数をトレース条件の上記の収集タイミングにてサンプリングし、サンプリングデータを取得する（ステップＳ３）。
【０１０５】
サンプリングデータの取得後、サンプリングデータ取得終了処理を実行する（ステップＳ４）。具体的には、制御装置１１において取得したサンプリングデータを開発支援装置３−ｎにおいて受信して、トレースを終了する。
その後、トレース結果表示部３１５−３を用いて、受信したサンプリングデータを表示する。これにより、サンプリングデータを用いて、取得したトレース対象変数の時間的変化（すなわち、トレース結果）を視覚的に確認できる。
【０１０６】
ＩＩＩ．トレース実行処理において実行される各処理の詳細
（ｉ）トレースの実行状態表示処理の動作
図７Ｂに示したフローチャートの各処理の詳細について、図７Ｃ〜図７Ｇを用いて説明する。図７Ｃは、トレースの実行状態表示処理時の動作を示すフローチャートである。図７Ｄは、制御装置においてトレースデータ格納領域の使用量を算出する場合のトレース条件設定処理時の動作を示すフローチャートである。図７Ｅは、開発支援装置においてトレースデータ格納領域の使用量を算出する場合のトレース条件設定処理時の動作を示すフローチャートである。図７Ｆは、サンプリングデータ取得処理時の動作を示すフローチャートである。図７Ｇは、サンプリングデータ取得終了処理時の動作を示すフローチャートである。
【０１０７】
まず、トレースの実行状態表示処理時の動作について、図７Ｃを用いて説明する。
開発支援装置３−ｎにおいて、トレース実行プログラムが実行され、トレース実行表示画面Ｄが表示部３９に表示されると、まず、開発支援装置３−ｎのトレース監視部３１５−９から制御装置１１へ、トレース実行状態送信要求が送信される（ステップＳ１０１）。
【０１０８】
制御装置１１がトレース実行状態送信要求を受信すると、トレース実行管理部１１１３は、制御装置１１におけるトレースの実行状態を監視する（ステップＳ１０２）。具体的には、トレース実行管理部１１１３は、メモリ管理部１１１５に対して、ＲＡＭ１１３に確保されたサンプリングデータ格納領域１１３７内の空き領域を検出するよう指令する。その後、メモリ管理部１１１５は、検出した空き領域のサイズをトレース実行管理部１１１３に通知する。これにより、トレース実行管理部１１１３は、サンプリングデータ格納領域１１３７内の空き領域のサイズをトレースの実行状態として取得できる。
【０１０９】
なお、開発支援装置３−ｎのトレース実行表示画面Ｄにおいて、実行トレースと登録トレースの実行状態（具体的には、実行トレース数、登録トレース数、実行トレースの実行状態）を表示する場合には、トレース実行管理部１１１３は、トレース管理テーブル１１３３を参照し、上記の実行トレースと登録トレースの実行状態を取得する。
【０１１０】
トレースの実行状態を取得後、トレース実行管理部１１１３は、開発支援装置３−ｎにトレースの実行状態を送信する（ステップＳ１０３）。
開発支援装置３−ｎがトレースの実行状態を受信後、トレース監視部３１５−９は、受信したトレースの実行状態をトレースの実行状態として保持する。また、トレース監視部３１５−９は、トレース実行状態表示部３１５−１１に対して、トレース実行表示画面Ｄの所定の表示領域に、各トレースの実行状態を表示するよう指令する（ステップＳ１０４）。これにより、トレース実行表示画面Ｄには、制御装置１１におけるトレースの実行状態を表示できる。
【０１１１】
なお、トレース実行表示画面Ｄに格納可能データ量（最大サンプリング可能時間）を表示する場合、トレース監視部３１５−９は、サンプリングデータ格納領域１１３７内の空き領域のサイズと、トレース対象変数のデータ型と、トレース対象変数の収集タイミング（サンプリングタイミング）と、サンプリング時間と、に基づいて、最大サンプリング可能時間を算出する。
【０１１２】
トレース実行表示画面Ｄにトレースの実行状態を表示することにより、ユーザは、表示されたトレースの実行状態を参考にしながらトレース条件を設定できる。特に、サンプリングデータ格納領域１１３７の空き領域のサイズ、及び／又は、現在の空き領域に格納可能なデータ量をトレース実行表示画面Ｄに表示することにより、ユーザは、どのような（どのような、サンプリング時間、トレース対象変数の種類及び数、及び／又は収集タイミングをトレース条件とした）サンプリングデータを取得可能であるかを確認しながら、トレース条件を設定できる。
【０１１３】
（ｉｉ）トレース条件設定処理の動作
次に、トレース条件設定処理の動作について、図７Ｄ及び図７Ｅを用いて説明する。トレース条件設定処理が開始されると、まず、開発支援装置３−ｎにおいてトレース条件が入力される（ステップＳ２０１）。上記のように、トレース条件の入力は、トレース実行表示画面Ｄのサンプリング時間設定値表示領域Ｄ３及びトレース対象変数設定表示領域Ｄ４などの表示内容を、操作部３５を用いて入力又は変更することにより実行できる。上記の表示領域の内容が変更されたことを検出すると、トレース条件設定部３１５−５が、入力又は変更されたトレース条件を新たなトレース条件とする。
【０１１４】
次に、開発支援装置３−ｎにおいて、トレース条件の設定が完了したかどうかを判断する（ステップＳ２０２）。開発支援装置３−ｎは、例えば、トレース実行表示画面Ｄのトレース開始ボタンが押されたかどうかにより、トレース条件の設定が完了したかどうかを判断できる。
【０１１５】
トレース開始ボタンが押されてトレース条件の設定が完了したと判断された場合（ステップＳ２０２において「Ｙｅｓ」の場合）、トレース開始指示部３１５−７が、制御装置１１に対して、設定が確定されたトレース条件を送信する（ステップＳ２０３）。
これにより、開発支援装置３―ｎにおいて確定したトレース条件を制御装置１１に通知できる。また、ステップＳ２０３におけるトレース条件の送信が、トレースの実行要求となる。
【０１１６】
一方、トレース開始ボタンが押されていないために、トレース条件の設定が終了していないと判断された場合（ステップＳ２０２において「Ｎｏ」の場合）、ステップＳ２０１に戻る。これにより、開発支援装置３−ｎにおいては、トレース開始ボタンが押されることによりトレース条件の設定が確定されるまで、トレース条件の設定を実行できる。
【０１１７】
上記のステップＳ２０１〜Ｓ２０３が実行される間、制御装置１１は、トレースの実行要求としてのトレース条件が受信されたかどうかを判断する（ステップＳ２０４）。トレース条件が制御装置１１において受信されたと判断された場合（ステップＳ２０４において「Ｙｅｓ」の場合）、次のステップＳ２０５に進む。
一方、トレース条件が制御装置１１において受信されていないと判断された場合（ステップＳ２０４において「Ｎｏ」の場合）、ステップＳ２０４に戻り、制御装置１１はトレース条件が受信されるまで待機する。
【０１１８】
トレース条件を受信後、トレース実行管理部１１１３は、サンプリングデータ格納領域１１３７の使用量を算出する（ステップＳ２０５）。サンプリングデータ格納領域の使用量とは、トレースを実行するために取得すべきトレース対象変数のデータ量に対応する。すなわち、サンプリングデータ格納領域１１３７の使用量は、サンプリングデータのデータサイズに対応する。従って、サンプリングデータ格納領域１１３７に使用量は、例えば、トレース条件に基づいて、各トレース対象変数のデータ型とサンプリング中に取得されるデータ数（例えば、サンプリング時間／サンプリング周期）との積を、トレース対象変数分合計することにより算出できる。
【０１１９】
サンプリングデータ格納領域１１３７の使用量を算出後、トレース実行管理部１１１３は、サンプリングデータ格納領域１１３７の使用量と、ステップＳ１０２において検出されたサンプリングデータ格納領域１１３７の空き領域のサイズとを比較する（ステップＳ２０６）。
【０１２０】
サンプリングデータ格納領域１１３７の空き領域のサイズが上記の使用量（サンプリングデータのデータサイズ）よりも小さいと判定された場合（ステップＳ２０６において「Ｙｅｓ」の場合）、トレース実行管理部１１１３は、トレースの実行要求（トレース条件の送信）により開始すべきトレースが実行できないと判定する。なぜなら、後の処理によって得られるサンプリングデータを、サンプリングデータ格納領域１１３７の空き領域に格納できないからである。
【０１２１】
このように、トレース実行管理部１１１３は、サンプリングデータの取得前に、サンプリングデータ格納領域１１３７に十分な空き領域がなく、トレース結果を表示するためのサンプリングデータを取得できないことを判断できる。また、トレース実行管理部１１１３は、サンプリングデータの取得前に、上記のトレース実行指令とともに送信されてきたトレース条件の適否を判断できる。
【０１２２】
トレース実行管理部１１１３が開始したいトレースの実行が不可能であると判定した場合、トレース実行管理部１１１３は、開発支援装置３−ｎにトレース実行不可通知を送信（ステップＳ２０７）し、ステップＳ２０４に戻る。
【０１２３】
一方、サンプリングデータ格納領域１１３７の空き領域のサイズが上記の使用量以上の場合（ステップＳ２０６において「Ｎｏ」の場合）、すなわち、サンプリングデータをサンプリングデータ格納領域１１３７の空き領域に格納可能であると判定された場合、トレース実行管理部１１１３は、トレースの実行要求により開始したいトレースが実行可能であると判定する。
【０１２４】
開始したいトレースが実行可能であると判定されると、トレース実行管理部１１１３は、開始したいトレースにトレースＩＤを割り当てる（ステップＳ２０８）。ここで説明する例においては、開発支援装置３−ｎから今回開始されるトレースに対して、トレースＩＤ「ｎ」が割り当てられたとする。
【０１２５】
トレースＩＤを割当後、トレース実行管理部１１１３は、トレース管理テーブル１１３３に、割り当てたトレースＩＤと、当該トレースＩＤのためのトレース実行指令を送信した開発支援装置３−ｎに関する情報（例えば、開発支援装置３−ｎのＩＰアドレス）と、トレースＩＤｎのトレースのトレース条件と、を追加する（図４Ｂ）。
【０１２６】
その後、トレース実行管理部１１１３は、メモリ管理部１１１５に対して、サンプリングデータ格納領域１１３７の空き領域に、サンプリングデータを記憶する記憶領域を確保するよう指令する（ステップＳＳ２０９）。
【０１２７】
記憶領域の確保を指令されたメモリ管理部１１１５は、検出したサンプリングデータ格納領域１１３７の空き領域に記憶領域を確保する処理を行う。
例えば、今、図８Ａに示すように、サンプリングデータ格納領域１１３７が、ＲＡＭ１１３のメモリアドレスａからメモリアドレスｅｎｄ（最終アドレス）まで確保されている場合を考える。図８Ａは、サンプリングデータ格納領域の使用状況の一例を示す図である。今、トレース管理テーブル１１３３に登録されているトレースＩＤ１、２、・・・ｎ−１のトレースが、図４Ａに示すデータ格納領域記録領域１１３３−４に記録されているアドレスに記憶領域を確保しているとする。
【０１２８】
すなわち、図８Ａに示すように、トレースＩＤ１のトレースが開始アドレスａから終了アドレスｂまでの領域Ａを記憶領域として確保し、トレースＩＤ２のトレースが開始アドレスｂ＋１から終了アドレスｃまでの領域Ｂと、開始アドレスｄ＋１から終了アドレスｅまでの領域Ｃとを記憶領域として確保し、トレースＩＤｎ−１のトレースが開始アドレスｃ＋１から終了アドレスｄまでの領域Ｅを記憶領域として確保しているとする。また、トレース管理テーブルに登録された他のトレースが、アドレスｄ〜ｆまでの領域を記憶領域として確保しているとする。
【０１２９】
サンプリングデータ格納領域１１３７において、開始アドレスｆから最終アドレスｅｎｄまでの領域は、未使用の空き領域となる。なお、サンプリングデータ格納領域１１３７において記憶領域として確保されている領域を「確保領域」と呼び、未使用の空き領域を「確保可能領域」と呼ぶこともある。
【０１３０】
また、上記のように、トレースＩＤ２のトレースに対しては、連続していない２つの領域（領域Ｂ及び領域Ｃ）が１つの記憶領域として確保されている。このように、メモリ管理部１１１５は、複数の空き領域（空き領域のそれぞれが、連続していても連続していなくてもよい）を１つの記憶領域として確保できる。これにより、制御装置１１においては、サンプリングデータ格納領域中の空き領域を無駄なく使用できる。
【０１３１】
サンプリングデータ格納領域１１３７の確保領域と確保可能領域（空き領域）とが、図８Ａに示すように確保されているときに、メモリ管理部１１１５は、トレースＩＤｎとして割り当てられたトレースに対して、アドレスｆ＋１から最終アドレスｅｎｄまでの所定の位置に、トレースＩＤｎのトレースのためのサンプリングデータを格納する記憶領域を確保する。
【０１３２】
例えば、メモリ管理部１１１５は、図８Ｂに示すように、アドレスｆ＋１からアドレスｇまでの領域Ｎを、トレースＩＤｎのトレースのための記憶領域として確保する。図８Ｂは、トレースＩＤｎのトレースのために新たに記憶領域を確保した後のサンプリングデータ格納領域の使用状況を示す図である。本実施形態において、メモリ管理部１１１５は、トレース条件に基づいて算出されたサンプリングデータのデータ量分の領域を記憶領域として新たに確保する。これにより、メモリ管理部１１１５は、サンプリングデータ格納領域１１３７に無駄な空き領域を形成しないように記憶領域を確保できる。
【０１３３】
なお、開発支援装置３−ｎ又は他の開発支援装置３から他のトレース実行指令がさらに送信された場合、メモリ管理部１１１５は、サンプリングデータ格納領域１１３７のアドレスｇ＋１から最終アドレスｅｎｄまでの空き領域に、当該他のトレース実行指令により開始すべきトレースのためのサンプリングデータが格納可能であれば、当該空き領域に記憶領域を確保する。
【０１３４】
すなわち、メモリ管理部１１１５は、サンプリングデータ格納領域１１３７の空き領域が許す限り、いくつでも記憶領域を確保できる。その結果、制御装置１１においては、サンプリングデータ格納領域１１３７の空き領域が存在する限り、いくつでも（任意の数の）トレースを実行できる。
【０１３５】
又は、例えば、全空き領域を１つのトレースのための記憶領域とするというように、サンプリングデータ格納領域１１３７の空き領域が許す限り、任意のサンプリング数（任意のデータ量）のサンプリングデータを取得できる。
【０１３６】
記憶領域を確保後、メモリ管理部１１１５は、トレースＩＤｎのトレースのために確保した記憶領域の開始アドレス（アドレスｆ＋１）と終了アドレス（アドレスｇ）とを、トレース実行管理部１１１３に通知する。
【０１３７】
その後、トレース実行管理部１１１３は、通知された開始アドレスｆ＋１と終了アドレスｇとを、トレース管理テーブル１１３３のデータ格納領域記録領域１１３３−４に記録する。その結果、図４Ｂに示すような、トレースＩＤｎのトレースに関する情報（トレース情報）を追加したトレース管理テーブル１１３３が新たに生成される。図４Ｂは、トレースＩＤｎのトレース情報が追加されたトレース管理テーブルを示す図である。
【０１３８】
トレースＩＤの割当及び記憶領域の確保後、トレース実行管理部１１１３は、開発支援装置３−ｎに、割り当てたトレースＩＤを送信する（ステップＳ２１０）。これにより、開発支援装置３−ｎは、今回開始したいトレースに割り当てられたトレースＩＤを知ることができる。
なお、以後、開発支援装置３−ｎと制御装置１１との間でトレースの実行に関する通信を行う場合、トレースＩＤを通信内容と一緒に送信する。これにより、開発支援装置３−ｎ及び制御装置１１は、受信したトレースに関する通信内容が、どのトレースに関する通信内容であるかを判定できる。
【０１３９】
上記のステップＳ２０１〜Ｓ２１０を実行することにより、制御装置１１において、サンプリングデータ取得準備が完了する。
【０１４０】
一方、制御装置１１においてトレースの実行可否を判断し、サンプリングデータ格納領域１１３７に記憶領域を確保する間、開発支援装置３−ｎのトレース部３１５は、制御装置１１からトレース実行不可通知又はトレースＩＤ（トレース実行可否結果）の受信を検出した場合、例えばトレース実行表示画面Ｄに、受信結果を表示する（ステップＳ２１１）。
例えば、トレース実行表示画面Ｄのトレース実行状態表示領域Ｄ９の「実行状態」に「実行中」又は「待機中」と表示できる。その他、受信結果に基づいて、トレース実行表示画面Ｄの一部の表示色を変化させてもよい。
【０１４１】
制御装置１１からの受信結果を表示後、トレース部３１５は、制御装置１１からの受信結果がトレース実行不可通知であるかトレースＩＤであるかどうかを判断する（ステップＳ２１２）。
【０１４２】
トレース部３１５がトレース実行不可通知を受信したと判断した場合（ステップＳ２１２において「トレース実行不可」の場合）、ステップＳ２０１に戻る。すなわち、トレースが実行不可である間、開発支援装置３−ｎは待機状態となる。開発支援装置３−ｎが待機状態にある間、開発支援装置３−ｎの操作が可能であってもよい。この場合、例えば、トレース条件を新たに設定し直してもよい。これにより、開発支援装置３−ｎにおいて新たにトレース条件を設定可能となり、その後、新たに設定したトレース条件に基づいてトレースの実行可否を改めて判断できる。
【０１４３】
一方、トレース部３１５が、トレース実行指令を送信した開始したいトレースに割り当てられたトレースＩＤを取得した場合、トレース部３１５は開始したいトレースが実行可能であると判断し、制御装置１１に対してトレース実行指令を送信する（ステップＳ２１３）。そして、次のステップＳ３（サンプリングデータ取得）へ進む。
【０１４４】
なお、上記の図７Ｄに示したトレース条件設定処理においては、制御装置１１のトレース実行管理部１１１３がサンプリングデータ格納領域１１３７の使用量を算出していた。しかし、これに限られない。変形例として、図７Ｅに示すように、サンプリングデータ格納領域１１３７の使用量を、開発支援装置３−ｎのトレース部３１５において算出してもよい（ステップＳ２０３’）。この場合、開発支援装置３−ｎから、トレース条件に加えて、サンプリングデータ格納領域１１３７の使用量も制御装置１１に送信される（ステップＳ２０４’）。
【０１４５】
トレース条件を受信後は、制御装置１１は、空き領域のサイズと上記の使用量との大小関係の比較のみを実行している（ステップＳ２０５’）。これにより、制御装置１１における計算負荷を軽減できる。
【０１４６】
（ｉｉｉ）サンプリングデータ取得処理の動作
次に、サンプリングデータ取得処理の動作について、図７Ｆを用いて説明する。
サンプリングデータの取得処理を開始すると、開発支援装置３−ｎにおいて、トレースの実行状態が監視される。サンプリングデータ取得処理時におけるトレースの実行状態の監視方法（ステップＳ３０１〜Ｓ３０４）は、図７Ｃを用いて説明したトレースの実行状態の表示方法（ステップＳ１０１〜Ｓ１０４）と同じであるため、説明を省略する。
【０１４７】
トレースの実行状態を表示後、制御装置１１において、サンプリングデータの取得が開始される。具体的には、トレース対象変数がサンプリングされ、サンプリングされたトレース対象変数が記憶領域に格納（記憶）される。さらに具体的には、以下のようにしてトレース対象変数がサンプリングされ記憶領域に格納される。
まず、トレース実行部１１１７が、トレース条件において設定されたタイミング（収集タイミング）にて、変数格納領域１１３５に格納されているトレース対象変数を取得（サンプリング）する（ステップＳ３０５）。その後、トレース実行部１１１７は、サンプリングしたトレース対象変数を対応する記憶領域に格納する（ステップＳ３０６）。
【０１４８】
なお、トレース対象変数をサンプリングする際、トレース実行部１１１７は、トレース対象変数をサンプリングした時刻を取得して記憶領域に格納してもよい。この場合、トレース実行部１１１７は、サンプリングしたトレース対象変数と上記の時刻とを関連づけて記憶領域に格納する。これにより、サンプリングデータをグラフ上に表示する際に実時間のグラフ上にプロットしやすくなる。
【０１４９】
ステップＳ３０６において、トレース実行部１１１７は、トレース管理テーブル１１３３の内容を参照して、サンプリングしたトレース対象変数をどの記憶領域に格納するか決定する。具体的には、トレースＩＤｎのトレースのためのトレース対象変数を記憶領域に格納する場合には、トレース実行部１１１７は、トレース管理テーブル１１３３のトレースＩＤｎのトレース情報を記録した行のデータ格納領域記録領域１１３３−４の内容を参照することにより、サンプリングデータ格納領域１１３７のアドレスｆ＋１からアドレスｇの範囲に、サンプリングしたトレース対象変数を格納すべき記憶領域が確保されていると判断できる。
【０１５０】
なお、記憶領域にすでにいくつかのトレース対象変数が格納されている場合には、トレース実行部１１１７は、すでに格納されたデータの終端の直後に、取得したトレース対象変数値を格納する。
【０１５１】
トレース対象変数を記憶領域に格納後、トレース実行管理部１１１３は、サンプリングデータの取得が終了したかどうかを確認する（ステップＳ３０７）。トレース実行管理部１１１３は、例えば、現在時刻が、サンプリングデータの取得（トレース対象変数のサンプリング）の開始時刻からトレース条件に示されていたサンプリング時間だけ経過した時刻となっているかどうかを判断することにより、サンプリングデータの取得が終了したかどうかを確認できる。
【０１５２】
あるいは、トレース実行管理部１１１３は、取得したトレース対象変数の個数をカウントしておき、カウントされた個数がサンプリング時間内に取得されるトレース対象変数の個数と一致する場合に、サンプリングデータの取得が終了したと判断してもよい。
【０１５３】
トレース実行管理部１１１３が、サンプリングデータの取得が完了していないと判断した場合（ステップＳ３０７において「Ｎｏ」の場合）、ステップＳ３０１に戻る。これにより、制御装置１１においては、サンプリングデータの取得が完了するまで、トレースの実行状態の表示（監視）と、トレース対象変数のサンプリングを継続できる。
【０１５４】
一方、サンプリングデータの取得が完了したと判断された場合（ステップＳ３０７において「Ｙｅｓ」の場合）、トレース実行管理部１１１３は、開発支援装置３−ｎに、サンプリングデータ取得終了通知を送信し（ステップＳ３０８）、次のステップＳ４（サンプリングデータ取得終了処理）に進む。
【０１５５】
制御装置１１においてトレース対象変数をサンプリングし記憶領域に格納する間、開発支援装置３−ｎのトレース部３１５は、サンプリングデータ取得終了通知を受信したかどうかを確認する（ステップＳ３０９）。トレース部３１５がサンプリングデータ取得終了通知を受信していないと判断した場合（ステップＳ３０９において「Ｎｏ」の場合）、ステップＳ３０１へ戻る。すなわち、トレース部３１５は、サンプリングデータ取得終了通知を受信するまで、トレースの実行状態を表示（監視）しつつ、サンプリングデータ取得の終了まで待機する。
【０１５６】
一方、トレース部３１５がサンプリングデータ取得終了通知を受信したと判断した場合（ステップＳ３０９において「Ｙｅｓ」の場合）、次のステップＳ４（サンプリングデータ取得終了処理）に進む。
【０１５７】
（ｉｖ）サンプリングデータ取得終了処理の動作
次に、サンプリングデータ取得終了処理の動作について、図７Ｇを用いて説明する。制御装置１１においてサンプリングデータの取得が終了し、開発支援装置３−ｎがサンプリングデータ取得終了通知を受信後、サンプリングデータ受信部３１５−１が、制御装置１１に対して、サンプリングデータ送信要求を送信する（ステップＳ４０１）。
【０１５８】
制御装置１１がサンプリングデータ送信要求を受信後、トレース実行管理部１１１３は、開発支援装置３−ｎにサンプリングデータを送信する（ステップＳ４０２）。
このとき、トレース実行管理部１１１３は、サンプリングデータ送信要求とともに送信されてきたトレースＩＤと、トレース管理テーブル１１３３に登録されているトレースＩＤとを比較して、一致するトレースＩＤのトレース情報に記録された開発支援装置（開発支援装置３−ｎ）に、当該トレースＩＤのトレース情報に記録されている記憶領域に格納されているサンプリングデータを送信する。
【０１５９】
サンプリングデータを送信中、サンプリングデータ受信部３１５−１が、サンプリングデータを受信し、開発支援装置３−ｎの記憶部３３などに記憶する（ステップＳ４０３）。また、サンプリングデータ受信部３１５−１は、サンプリングデータの受信が完了したかどうかを判断する（ステップＳ４０４）。
【０１６０】
サンプリングデータの受信が完了していないと判断された場合（ステップＳ４０４において「Ｎｏ」の場合）、ステップＳ４０２に戻り、サンプリングデータ受信部３１５−１は、サンプリングデータの受信を継続する。
一方、サンプリングデータの受信が完了したと判断された場合（ステップＳ４０４において「Ｙｅｓ」の場合）、サンプリングデータ受信部３１５−１は、サンプリングデータ受信完了通知を、制御装置１１に送信する（ステップＳ４０５）。そして、開発支援装置３−ｎにおいて、サンプリングデータ取得を完了する。
【０１６１】
このように、サンプリングデータ受信部３１５−１は、制御装置１１において取得したサンプリングデータを開発支援装置３−ｎにおいて取得し参照できる。その結果、開発支援装置３−ｎにおいてサンプリングデータ（トレース結果）を参照できる。
【０１６２】
一方、サンプリングデータを開発支援装置３−ｎに送信中、トレース実行管理部１１１３は、サンプリングデータ受信完了通知を受信したかどうかを判断する（ステップＳ４０６）。サンプリングデータ受信完了通知を受信していないと判断された場合（ステップＳ４０６において「Ｎｏ」の場合）、ステップＳ４０２に戻り、トレース実行管理部１１１３は、サンプリングデータの送信を継続する。
【０１６３】
一方、サンプリングデータ受信完了通知を受信したと判断された場合（ステップＳ４０６において「Ｙｅｓ」の場合）、次のステップＳ４０７に進む。
【０１６４】
制御装置１１においてサンプリングデータ受信完了通知が受信された後、トレース実行管理部１１１３は、メモリ管理部１１１５に対して、送信が完了したサンプリングデータが格納されていた記憶領域を開放するように指令する（ステップＳ４０７）。
具体的には、メモリ管理部１１１５は、トレース実行管理部１１１３から受信した開始アドレスから終了アドレスまでの記憶領域を、空き領域とする。
【０１６５】
すなわち、メモリ管理部１１１５は、トレース（サンプリングデータ取得）の終了後、終了したトレース（サンプリングデータの取得が終了したトレース）のサンプリングデータを記憶していた記憶領域を空き領域とする。
これにより、制御装置１１においては、以後実行されるトレースのための記憶領域をサンプリングデータ格納領域１１３７内により多く確保できる。
【０１６６】
例えば、次のようにして、メモリ管理部１１１５は、トレース実行管理部１１１３から受信した開始アドレスから終了アドレスまでの記憶領域を、空き領域とする。
【０１６７】
まず、トレースＩＤｎのトレースのためのサンプリングデータが開発支援装置３−ｎにおいて受信が完了した後、トレース実行管理部１１１３は、トレース管理テーブル１１３３において、トレースＩＤｎのトレースのために確保されていた記憶領域の開始アドレス（アドレスｆ＋１）と終了アドレス（アドレスｇ）とを参照する。
【０１６８】
その後、トレース実行管理部１１１３は、当該開始アドレス（アドレスｆ＋１）と終了アドレス（アドレス）ｇを、メモリ管理部１１１５に対して通知して、開始アドレスと終了アドレスとにより定められる記憶領域を空き領域にするように指令する。これにより、メモリ管理部１１１５は、開始アドレスと終了アドレスとにより定められる記憶領域を空き領域にできる。なお、メモリ管理部１１１５は、例えば、空き領域とするサンプリングデータ格納領域１１３７内の領域に、上記の空き領域を表す記憶値（“００”又は“ＦＦ”（１６進数表示））を書き込むことにより、当該領域を空き領域とできる。
【０１６９】
記憶領域を開放後、トレース実行管理部１１１３は、トレース実行状態を更新する（ステップＳ４０８）。具体的には、トレース実行管理部１１１３は、サンプリングデータの送信が完了したトレースＩＤｎのトレース情報を、トレース管理テーブル１１３３から削除する。トレース管理テーブル１１３３からトレースＩＤｎのトレース情報が削除されることに伴い、割り当てられていたトレースＩＤも削除（開放）される（ステップＳ４０９）。そして、制御装置１１おいても、トレースＩＤｎのトレースのためのサンプリングデータ取得が終了する。
【０１７０】
なお，開発支援装置３−ｎにおいては、サンプリングデータ受信完了通知を送信後、サンプリングデータを受信完了したトレースのトレースＩＤを削除する。
【０１７１】
上記において説明したステップＳ４０９後のトレース管理テーブル１１３３は、例えば、図４Ｃに示すようになっている。図４Ｃは、サンプリングデータ取得終了後のトレース管理テーブルの一例を示す図である。
図４Ｃに示すように、トレースＩＤｎのトレース情報は、サンプリングデータ取得終了後に削除されている。また、トレースＩＤｎ−１のトレース以外のトレース情報も削除されている（すなわち、サンプリングデータの取得が完了している）。
【０１７２】
トレースの実行状態が、図４Ｃのトレース管理テーブル１１３３に示す実行状態である場合、サンプリングデータ格納領域１１３７の使用状況は、図８Ｃとなっている。図８Ｃは、サンプリングデータ取得終了後のサンプリングデータ格納領域の使用状況の一例を示す図である。
【０１７３】
図８Ｃに示すように、実行中のトレースＩＤｎ−１のトレースのための記憶領域（領域Ｅ）以外は、空き領域となっている。すなわち、サンプリングデータの取得が終了した記憶領域は、新たに記憶領域を確保可能（サンプリングデータを格納可能）な領域となっており、以後新たなトレース条件が送信され、サンプリングデータを格納可能と判断されたときは、新たな記憶領域が確保される。
【０１７４】
図８Ａ〜図８Ｃに示すように、本実施形態の制御装置１１においては、実行中（または実行予定）のトレースの数及び確保されている記憶領域に応じて、記憶領域を確保可能な空き領域のサイズが動的に変化している。このように、本実施形態の制御装置１１においては、未使用又は使用済みとなったサンプリングデータ格納領域１１３７内の領域に新たに記憶領域を確保して、効率よくサンプリングデータ格納領域１１３７を使用できる。
【０１７５】
その結果、未使用又は使用済みとなった領域の許す限り、任意のデータ量のサンプリングデータを取得でき、又は、任意の数の記憶領域を確保できる。すなわち、任意のデータ量のサンプリングデータを取得でき、又は、任意の数のトレースを実行できる。
【０１７６】
２．実施形態の効果
第１実施形態の効果は、下記のように記載できる。
制御装置１１（制御装置の一例）は、ＲＡＭ１１３（メモリの一例）と、タスク実行部１１１１（タスク実行部の一例）と、トレース実行管理部１１１３（トレース実行管理部の一例）と、メモリ管理部１１１５（メモリ管理部の一例）と、トレース実行部１１１７（トレース実行部の一例）と、を備える。
ＲＡＭ１１３は、サンプリングデータ格納領域１１３７（サンプリングデータ格納領域の一例）を有する。タスク実行部１１１１は、所定のタスクを所定の周期にて繰り返し実行する。トレース実行管理部１１１３は、トレースの実行要求（トレースの実行要求の一例）を外部から受信した際に、サンプリングデータ（サンプリングデータの一例）をサンプリングデータ格納領域１１３７内の空き領域（空き領域の一例）に格納可能であれば、トレースを実行可能と判断する。
【０１７７】
メモリ管理部１１１５は、サンプリングデータ格納領域１１３７内の空き領域を検出する。また、メモリ管理部１１１５は、トレースが実行可能であると判断されたときに、記憶領域（記憶領域の一例）を空き領域に確保する。トレース実行部１１１７は、トレースが実行可能であると判断されたときに、サンプリングデータを取得し記憶領域に格納する。
【０１７８】
制御装置１１においては、タスク実行部１１１１によって所定のタスクが所定の周期にて繰り返し実行されている。タスクが所定の周期にて繰り返し実行されることにより、制御装置１１における入出力信号及び／又は内部変数は時間的に変化する。タスクが繰り返し実行されているときに、トレースの実行要求が外部から受信されると、トレース実行管理部１１１３が、メモリ管理部１１１５に対してサンプリングデータ格納領域１１３７内の空き領域を検出するように指令する。
【０１７９】
メモリ管理部１１１５がサンプリングデータ格納領域１１３７内の空き領域を検出後、トレース実行管理部１１１３が、検出された空き領域にサンプリングデータを格納可能かどうか判断する。サンプリングデータを空き領域に格納できると判断した場合には、トレース実行管理部１１１３は、実行要求されたトレースが実行可能であると判断する。
【０１８０】
トレース実行管理部１１１３においてトレースが実行可能と判断された場合、メモリ管理部１１１５が、サンプリングデータを格納する記憶領域を空き領域に確保する。その後、トレース実行部１１１７が、サンプリングデータを取得し、確保された記憶領域にサンプリングデータを記憶する。
【０１８１】
制御装置１１においては、トレース実行管理部１１１３が、トレースの実行要求を外部から受信した際に、サンプリングデータをサンプリングデータ格納領域１１３７内の空き領域に格納可能であれば、トレースを実行可能と判断する。そして、トレースが実行可能であると判断されたときに、メモリ管理部１１１５がサンプリングデータを記憶する記憶領域を空き領域に確保する。
【０１８２】
これにより、制御装置１１は、ＲＡＭ１１３中（サンプリングデータ格納領域１１３７内）の空き領域をサンプリングデータのデータ量に応じて任意のサイズにて効率よく確保して、サンプリングデータをサンプリングデータ格納領域内に格納できる。その結果、制御装置１１においては、所望のデータ量及び／又は数のトレースを実行できる。
【０１８３】
本実施形態において、メモリ管理部１１１５は、サンプリングデータ格納領域１１３７中の複数の空き領域を１つの記憶領域として確保している。これにより、制御装置１１においては、サンプリングデータ格納領域１１３７内の空き領域を無駄なく使用できる。
【０１８４】
本実施形態において、メモリ管理部１１１５は、トレースの終了後、終了したトレースのサンプリングデータを記憶していた記憶領域を空き領域としている。これにより、制御装置１１においては、以後実行されるトレースのための記憶領域をサンプリングデータ格納領域１１３７内により多く確保できる。
【０１８５】
制御システム１００（制御システムの一例）は、制御装置１１と開発支援装置３（又は、開発支援装置３−ｎ）（開発支援装置の一例）とを備える。
開発支援装置３は、サンプリングデータ受信部３１５−１（サンプリングデータ受信部の一例）と、トレース監視部３１５−９（トレース監視部の一例）と、トレース実行状態表示部３１５−１１（トレース実行状態表示部の一例）と、を有する。サンプリングデータ受信部３１５−１は、制御装置１１からサンプリングデータを受信する。トレース監視部３１５−９は、制御装置１１におけるトレースの実行状態を監視する。トレース実行状態表示部３１５−１１は、トレースの実行状態を表示する。
【０１８６】
制御システム１００においては、開発支援装置３（又は、開発支援装置３−ｎ）がサンプリングデータ受信部３１５−１を有することにより、制御装置１１において取得したサンプリングデータを開発支援装置３（又は、開発支援装置３−ｎ）において取得し参照できる。その結果、開発支援装置３（又は、開発支援装置３−ｎ）においてトレース結果を参照できる。
【０１８７】
また、制御システム１００においては、開発支援装置３（又は、開発支援装置３−ｎ）がトレース監視部３１５−９を有することにより、開発支援装置３（又は、開発支援装置３−ｎ）においてトレースの実行状態を監視できる。さらに、開発支援装置３（又は、開発支援装置３−ｎ）がトレース実行状態表示部３１５−１１を有することにより、開発支援装置３（又は、開発支援装置３−ｎ）においてトレースの実行状態を視覚的に確認できる。
【０１８８】
制御システム１００において、トレース監視部３１５−９は、空き領域のサイズをトレースの実行状態として監視している。これにより、開発支援装置３（又は、開発支援装置３−ｎ）において、サンプリングデータ格納領域の空き領域のサイズを確認しながらトレース条件を設定できる。
【０１８９】
制御システム１００において、トレース監視部３１５−９は、現在の空き領域に格納可能なデータ量を、トレースの実行状態として監視している。これにより、開発支援装置３（又は、開発支援装置３−ｎ）において、どの程度のサンプリングデータが取得可能であるかを確認しながらトレース条件を設定できる。
【０１９０】
制御システム１００において、トレース監視部３１５−９は、制御装置１１における実行トレース数（実行トレース数の一例）と、制御装置１１において現在登録されているトレース数である登録トレース数（登録トレース数の一例）とを、トレースの実行状態として監視している。これにより、開発支援装置３（又は、開発支援装置３−ｎ）（自身の開発支援装置の一例）および開発支援装置３（又は，開発支援装置３−１、３−２、・・・３−（ｎ−１））（他の開発支援装置の一例）から要求されたトレースの実行状態を確認できる。
【０１９１】
トレース監視部３１５−９は、実行中のトレースの設定状態を、トレースの実行状態として監視してもよい。これにより、どの設定のトレースが実行中であるかを確認できる。
【０１９２】
３．他の実施形態
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。
【産業上の利用可能性】
【０１９３】
本発明は、入出力信号及び内部変数をトレース可能な制御装置、制御システム、データトレース方法、及び、プログラムに広く適用できる。
【符号の説明】
【０１９４】
１００ 制御システム
１     ＰＬＣシステム
１１   制御装置
１１１ ＣＰＵ
１１１１      タスク実行部
１１１３      トレース実行管理部
１１１５      メモリ管理部
１１１７      トレース実行部
１１３ ＲＡＭ
１１３１      ユーザプログラム
１１３３      トレース管理テーブル
１１３３−１  トレースＩＤ記録領域
１１３３−２  トレース要求元記録領域
１１３３−３  トレース条件記録領域
１１３３−４  データ格納領域記録領域
１１３３−５  トレース実行状態記録領域
１１３５      変数格納領域
１１３７      サンプリングデータ格納領域
１１５ ＲＯＭ
１１５ａ      システムプログラム
１１７ 通信インターフェース
１３   入力ユニット
１５   出力ユニット
１７   電源ユニット
３、３−１、３−２、・・・、３−ｎ 開発支援装置
３１   ＣＰＵ
３１１ プログラミング部
３１３ デバッグ部
３１５ トレース部
３１５−１    サンプリングデータ受信部
３１５−３    トレース結果表示部
３１５−５    トレース条件設定部
３１５−７    トレース開始指示部
３１５−９    トレース監視部
３１５−１１  トレース実行状態表示部
３３   記憶部
３３ａ 開発支援プログラム
３５   操作部
３７   通信インターフェース
３９   表示部
５     信号入力部
７     制御対象機器
Ａ、Ｂ、Ｃ、Ｅ、Ｎ   領域
Ｄ     トレース実行表示画面
Ｄ１   空き領域サイズ表示領域
Ｄ２   格納可能データ量表示領域
Ｄ３   サンプリング時間設定値表示領域
Ｄ４   トレース対象変数設定表示領域
Ｄ５   トレース開始ボタン表示領域
Ｄ６   メモリ使用量表示領域
Ｄ７   収集タイミング設定表示領域
Ｄ８   トレース数表示領域
Ｄ９   トレース実行状態表示領域
Ｄ１０ 現在表示トレース設定名表示領域
【図１】
2015176387.tif 000003
【図２】
2015176387.tif 000004
【図３】
2015176387.tif 000005
【図４Ａ】
2015176387.tif 000006
【図４Ｂ】
2015176387.tif 000007
【図４Ｃ】
2015176387.tif 000008
【図５】
2015176387.tif 000009
【図６Ａ】
2015176387.tif 000010
【図６Ｂ】
2015176387.tif 000011
【図７Ａ】
2015176387.tif 000012
【図７Ｂ】
2015176387.tif 000013
【図７Ｃ】
2015176387.tif 000014
【図７Ｄ】
2015176387.tif 000015
【図７Ｅ】
2015176387.tif 000016
【図７Ｆ】
2015176387.tif 000017
【図７Ｇ】
2015176387.tif 000018
【図８Ａ】
2015176387.tif 000019
【図８Ｂ】
2015176387.tif 000020
【図８Ｃ】
2015176387.tif 000021