(57)【要約】【課題】補正したトレース結果をラダー図で見せるトレース装置を提供する。【解決手段】ラダープログラムに基づいて信号の入出力を行うＰＬＣ４００に通信可能に接続されるトレース装置１００は、ラダープログラムにおけるネットの並び順を解析し、ネットが実行される順番を示す実行順信号テーブル１２４１を作成するラダープログラム解析部１１１と、トレース対象とするネットを１個以上設定するトレース対象設定部１１２と、トレースデータを、所定のサンプリング周期で取得するトレースデータ取得部１１３と、実行順信号テーブル１２４１に基づいて、トレース対象のラダー回路に含まれる接点の信号の状態（参照信号）の補正要否を判定する補正判定部１１４と、補正判定部１１４の判定結果に基づいて、補正したトレース結果をラダー図を出力する出力部１１５と、を備える。【選択図】図１
2020077150.tif 000002
【特許請求の範囲】
【請求項１】
複数のラダー回路を含むラダープログラムを実行するプログラマブルコントローラに通信可能に接続されるトレース装置であって、
前記ラダープログラムの実行時におけるトレース対象の構成要素を１つ以上設定するトレース対象設定部と、
前記ラダー回路が実行される順序を解析するラダープログラム解析部と、
指定された前記ラダープログラムの実行周期における前記トレース対象の構成要素に係るラダー回路のラダー図を出力する出力部と、
前記トレース対象の構成要素に係るラダー回路の実行される実行順序と、前記ラダー回路に含まれる接点の信号の状態が更新される実行順序と、に基づいて、前記ラダー回路に含まれる接点の信号の状態の補正要否を判定する補正判定部と、を備え、
前記出力部は、前記補正判定部により、前記ラダー回路に含まれる接点の信号の状態の補正が必要と判定された場合、前記ラダー回路に含まれる接点の信号の状態を１つ前の実行周期のトレース結果に基づいて補正した前記ラダー図を出力する、トレース装置。
【請求項２】
前記出力部は、さらに、前記ラダープログラムの実行周期における、前記トレース対象の構成要素に係るラダー回路に含まれるすべての信号の状態を含むトレース結果を時系列で出力する、請求項１に記載のトレース装置。
【請求項３】
前記出力部は表示器に出力する、請求項１又は請求項２に記載のトレース装置。
【請求項４】
前記出力部は、前記ラダープログラムの指定された実行周期における前記トレース対象の構成要素に係るラダー回路のラダー図を前記表示器に出力する、請求項３に記載のトレース装置。
【請求項５】
プログラマブルコントローラであって、請求項１から請求項４までのいずれかに記載のトレース装置を含むプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シーケンス制御プログラムのトレース装置及びプログラマブルコントローラに関する。
【背景技術】
【０００２】
機械の動作には、指令に対する各動作の完了を待ってから、次の動作を行う工程が多くあり、そのような工程を実現するための一手法として、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）（以下、「プログラマブルコントローラ」ともいう）における信号の状態により、動作の実行中や動作の完了等の判断を行い、次の動作へと移行する待ち合わせ処理が多くの場合において用いられている。
プログラマブルコントローラは、シーケンスプログラムに従って制御対象の制御を行っている。シーケンスプログラムは、例えば図２に例示されるようにラダー図の形式（「ラダープログラム」という）で表され、接点で信号状態の待ち合わせを示し、コイルにより負荷の駆動や信号の出力等を示すことができ、また、タイマ回路等による時間待ち処理をすることも可能である。
【０００３】
通常、ラダープログラム（シーケンスプログラム）によって期待通りの制御ができているかを、デバッグ装置によりデバッグすることが行われている（例えば、特許文献１、２、３参照）。また、プログラマブルコントローラの運転において、ユーザが予期していない現象が発生した場合に、トレース装置又はプログラマブルコントローラにより提供されるトレース機能を使用することで、原因の信号を調査する方法が知られている。
トレース機能には、トレースサンプリング周期があり、例えば、特許文献３には、トレース対象とする信号のトレースサンプリング周期に対応する任意の時刻にカーソルを合わせると、そのサンプリング周期（時刻）に対応するラダー図を表示する機能が提供されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５３６２１４８号公報
【特許文献２】特開平８−３０５４１８号公報
【特許文献３】特許第５６４９７４８号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
通常、トレースサンプリング周期はラダープログラムの実行周期と同期している。このため、トレース対象となる信号は、当該信号の書き込まれたネットを含むラダープログラムの実行直後（実行周期時）の信号がトレースサンプリング周期に対応する時刻の信号として表示される。例えば、トレース対象のコイルの信号（以下「更新信号」ともいう）が存在するネット中で参照される接点の信号の状態（以下「参照信号」ともいう）が、当該ネットが実行された後に別のネットにおいて書込まれた場合、当該トレースサンプリング周期（ラダープログラム実行周期）に対応する時刻におけるトレースサンプリング結果を見ると、トレース対象のネット内の接点（参照信号）とコイル（更新信号）の関係に矛盾が生じる場合がある。
【０００６】
矛盾が生じる様子を具体的に図４Ａ〜図４Ｄを参照して説明する。図４Ａには、ラダープログラム及び実行順信号テーブルを例示する。図４Ｂには、トレースサンプリング周期の１周期目と２周期目のトレース結果を示す。図４Ｃには、１周期目及び２周期目における各信号の状態を示すトレースグラフを示す。図４Ｄには、２周期目のネット番号１００のラダー図を示す。図４Ｂ及び図４Ｃに示すように、２周期目にネット番号１００のネットが実行されると、参照信号であるＡ及びＢがいずれもオンであることから、トレース対象となる信号Ｃはオンとなる。ところが、ネット番号１００のネットが実行された後にネット番号１５１のネットが実行されるため、信号Ｂがオフとなる。このため、２周期目のトレースサンプリング周期（ラダープログラムの実行周期）に対応する時刻におけるネット番号１００のトレース結果をラダー図で表示すると、図４Ｄに例示するように、接点Ｂの信号の状態（参照信号）とコイルＣの信号の状態（更新信号）との関係に矛盾が生じる。
このように、複雑なラダープログラムにおいて、例えば、トレース対象のコイルが存在するネット中の参照される接点の信号の状態が、当該ネットが実行された後に別のネットにおいて更新された（書込まれた）場合、トレースサンプリング周期（ラダープログラムの実行周期）時の信号の状態に基づいて当該ネットの信号の状態をラダー図に表示すると、例示したラダープログラムのように矛盾を生じる可能性がある。
そうすると、ユーザは、信号の変化とラダーの実行順序の関係を把握することが必要となる。しかしながら、複雑なラダープログラムにおいて、信号の変化とラダーの実行順序の関係を把握することはユーザにとって困難である。
【０００７】
この点、特許文献３には、ＰＬＣのデバッグ支援プログラムの表示画面において、表示画面１００中の上半分に、ユーザプログラムを表示する回路モニタ表示領域１１０が設けられ、下半分にトレンドグラフを表示するトレンドグラフ表示領域１２０が設けられ、下半分のトレンドグラフ上のカーソルの移動と連動して、回路モニタ表示領域１１０で回路モニタ表示上のデバイスの値を表示することが開示されている。
しかしながら、特許文献３には、前述した課題とその対策については、記載も示唆もなく、複雑なラダープログラムにおいて、トレースサンプリング周期に対応するトレース対象のネットのラダー図を表示した場合、例示したラダープログラムと同様に矛盾が生じる可能性がある。
【０００８】
本発明は、トレース対象の構成要素（例えばネット又はコイル）に係るラダー回路の実行直後の信号状態を表示することを可能としたトレース装置又はトレース機能を備えたプログラマブルコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００９】
（１）本発明は、複数のラダー回路を含むラダープログラムを実行するプログラマブルコントローラ（例えば後述の「ＰＬＣ４００」）に通信可能に接続されるトレース装置（例えば後述の「トレース装置１００」）であって、前記ラダープログラムの実行時におけるトレース対象の構成要素（例えば後述の「ネット」又は「コイル」）を１つ以上設定するトレース対象設定部（例えば後述の「トレース対象設定部１１２」）と、前記ラダー回路が実行される順序を解析するラダープログラム解析部（例えば後述の「ラダープログラム解析部１１１」）と、指定された前記ラダープログラムの実行周期における前記トレース対象の構成要素に係るラダー回路のラダー図を出力する出力部（例えば後述の「出力部１１５」）と、前記トレース対象の構成要素に係るラダー回路の実行される実行順序と、前記ラダー回路に含まれる接点の信号の状態が更新される実行順序と、に基づいて、前記ラダー回路に含まれる接点の信号の状態の補正要否を判定する補正判定部（例えば後述の「補正判定部１１４」）と、を備え、前記出力部は、前記補正判定部により、前記ラダー回路に含まれる接点の信号の状態の補正が必要と判定された場合、前記ラダー回路に含まれる接点の信号の状態を１つ前の実行周期のトレース結果に基づいて補正した前記ラダー図を出力する、トレース装置に関する。
【００１０】
（２）  （１）に記載のトレース装置において、前記出力部は、さらに、前記ラダープログラムの実行周期における、前記トレース対象の構成要素に係るラダー回路に含まれるすべての信号の状態を含むトレース結果を時系列で出力するようにしてもよい。
【００１１】
（３）  （１）または（２）に記載のトレース装置において、前記出力部は表示器（例えば後述の「表示部１４０」）に出力するようにしてもよい。
【００１２】
（４）  （３）に記載のトレース装置において、前記出力部は、前記ラダープログラムの指定された実行周期における前記トレース対象の構成要素に係るラダー回路のラダー図を前記表示器に出力するようにしてもよい。
【００１３】
（５）  （１）から（４）までのいずれかに記載のトレース装置は、前記プログラマブルコントローラに含まれるようにしてもよい。
【発明の効果】
【００１４】
本発明によれば、トレース対象の構成要素に係るラダー回路の実行直後の信号状態を表示することを可能としたトレース装置又はトレース機能を備えたプログラマブルコントローラを提供できる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態の基本的構成の概略図及びトレース装置１００の機能ブロック図である。
【図２】ラダープログラムの一例を示す図である。
【図３】実行順信号テーブルの一例を示す図である。
【図４Ａ】トレース対象ネット中の全ての接点について、各接点の信号の状態が書き込まれたネットの位置情報（ネット番号）と実行順序番号の一例を示す図である。
【図４Ｂ】トレースサンプリング周期（ラダープログラム実行周期）が１周期目と２周期目のトレース結果を示す一例を示す図である。
【図４Ｃ】トレースグラフの一例を示す図である。
【図４Ｄ】トレース対象ネットの補正前のラダー図の一例を示す図である。
【図４Ｅ】補正後のトレースグラフの一例を示す図である。
【図４Ｆ】トレース対象ネットの補正後のラダー図の一例を示す図である。
【図５Ａ】本実施形態のトレース装置によるトレース処理を示すフローチャートである。
【図５Ｂ】本実施形態のトレース装置によるトレース処理を示すフローチャートである。
【図６Ａ】ネットの位置情報（ネット番号）と実行順序番号の一例を示す図である。
【図６Ｂ】補正の必要のないラダー図及びトレースグラフの表示例を示す図である。
【図６Ｃ】本実施形態のトレース装置による補正されたラダー図及びトレースグラフの表示例を示す図である。
【発明を実施するための形態】
【００１６】
（第１実施形態）
まず、本発明の１つの実施形態の概略を説明する。本実施形態は、ラダープログラムに基づいて信号の入出力を行うＰＬＣに通信可能に接続されたトレース装置１００であって、トレース対象の構成要素（ネット）に係るラダー回路に含まれる接点の信号の状態（参照される信号）が当該ラダー回路の実行後に、後続の別のラダー回路により書き込まれた場合であっても、当該トレースサンプリング周期における当該ラダー回路のラダー図を表示するとき、当該接点の信号の状態（参照される信号）を当該サンプリング周期の１つ前の周期のトレース結果で補正することで、当該ラダー回路の実行直後の信号状態を表示することを可能としたトレース装置１００に関する。以下の説明では、構成要素としてネットを例示する。特に断らない限り、本実施形態においては、構成要素はネットを指すものとする。
【００１７】
次に、本実施形態におけるトレースシステム１０００及びトレース装置１００の構成について、図１を参照して説明をする。
図１は、本実施形態の基本的構成の概略図及びトレース装置１００の機能ブロック図である。
本実施形態の基本的構成として、図１に示すトレースシステム１０００は、トレース装置１００と、ＰＬＣ（プログラマブルコントローラ）４００とを備えている。
トレース装置１００と、ＰＬＣ４００とは、例えば、接続インタフェースを介して、通信可能に接続されている。なお、トレース装置１００と、ＰＬＣ４００とは、直接又はネットワークを介して接続されてもよい。なお、ＰＬＣ４００は、例えば数値制御装置（図示せず）に含まれてもよい。
【００１８】
［ＰＬＣ４００］
ＰＬＣ４００は、ラダープログラム等のシーケンス制御プログラムを実行して、信号の入出力を行う装置である。ＰＬＣ４００は、ラダープログラムにしたがって各種制御や演算処理、通信処理を行うためのＣＰＵやメモリ、通信部等を備えるが、これらの機能は、当業者にとって公知であり、説明及び図示を省略する。
【００１９】
［トレース装置１００］
トレース装置１００は、ＰＬＣ４００で実行されるラダープログラムに含まれる構成要素（ネット）のうち、トレース対象とする構成要素が１つ以上設定されると、ラダープログラムの実行周期毎にトレース対象として設定された構成要素に係るラダー回路のラダー図を出力する。
図１に示すように、トレース装置１００は、制御部１１０と、記憶部１２０と、入力部１３０と、表示部１４０と、通信インタフェース部１５０と、を備える。
制御部１１０は、例えばＣＰＵ（中央処理装置）であって、記憶部１２０に記憶されたトレース装置１００を制御する各種のプログラムを実行することにより、トレース装置１００を統括制御する。制御部１１０の機能の詳細については、後述する。
【００２０】
記憶部１２０は、制御部１１０により実行されるプログラム等を記憶する記憶領域である。記憶部１２０は、プログラム記憶部１２１と、構成要素記憶部１２２と、トレースデータ記憶部１２３と、テーブル記憶部１２４と、を備える。
プログラム記憶部１２１は、例えば、上述した制御部１１０の各種機能を実行するプログラムを記憶する記憶領域である。
構成要素記憶部１２２は、入力部１３０を介してトレース対象として設定された構成要素を記憶する記憶領域である。
トレースデータ記憶部１２３は、取得したトレースデータを記憶する記憶領域である。
テーブル記憶部１２４は、ラダープログラムが実行された場合に、どのような順番でラダー回路が実行されていくかを示す実行順信号テーブル１２４１を記憶する記憶領域である。
【００２１】
入力部１３０は、例えば、キーボード、マウス、スイッチボタン等の各種ボタン等の入力装置である。
表示部１４０は表示装置であり、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等により構成される。
なお、入力部１３０と表示部１４０とが一体になったタッチパネルや、表示器を備えてもよい。
通信インタフェース部１５０は、例えば、ＲＳ２３２Ｃ用コネクタ等の所定のコネクタによって構成され、ＰＬＣ４００との間で直接接続するための通信制御デバイスである。
【００２２】
制御部１１０は、例えばＣＰＵ（中央処理装置）であって、記憶部１２０に記憶されたトレース装置１００を制御する各種のプログラムを実行することにより、トレース装置１００に所定の機能部（以下、「トレース制御機能部」と総称する）として機能させる。
制御部１１０（トレース制御機能部）は、任意のトレースサンプリング周期において、トレース対象とする信号の存在するネットのラダー図を表示するとき、当該ネットの実行直後の信号状態を表示することを可能とする。
このため、制御部１１０は、ラダープログラム解析部１１１と、トレース対象設定部１１２と、トレースデータ取得部１１３と、補正判定部１１４と、出力部１１５と、を備える。
【００２３】
［ラダープログラム解析部１１１］
ラダープログラム解析部１１１は、ラダープログラムにおけるラダー回路の並び順を解析し、ラダープログラムが実行された場合に、どのような順番（実行順）でラダー回路が実行されていくかを示す実行順信号テーブル１２４１を作成する。実行順信号テーブル１２４１は、テーブル記憶部１２４に記憶される。
図２にラダープログラムの一例を示す。図２に示すように、ラダープログラムは、一般に複数のプログラム（メインプログラムと、メインプログラム又はサブプログラムから呼び出される１以上のサブプログラム）を含む。各プログラムは、ラダー回路からなるネットを１つ以上含み、各ネットにはネット番号が付され、ネット番号の昇順に順次実行される。
ラダープログラム解析部１１１は、ラダープログラムを先頭から終端までラダー回路の実行順序にしたがって、各ネットを順次解析する。ラダープログラム解析部１１１は、各ネットに実行順序番号を付与して、当該ネットの位置情報、参照信号、及び更新信号を実行順信号テーブル１２４１に記録する。ここで、位置情報とは、そのネットが属するプログラム名称及びそのネットが属するプログラムにおけるネット位置（例えばネット番号）を含む情報である。なお、ラダープログラムが１つのプログラムで構成されている場合、プログラム名を含まなくてもよい。また、参照信号とは、前述したように、そのネットで参照される信号の名称、更新信号とは、そのネットで更新される信号の名称を意味する。
【００２４】
［実行順信号テーブル１２４１］
図３に、ラダープログラム解析部１１１により、図２に例示したラダープログラムを解析して作成される実行順信号テーブル１２４１の一例を示す。
図３を参照すると、例えば実行順序番号３において、信号Ｃを参照して信号Ａが更新されている。その後、実行順序番号７において、信号Ｃが更新されていることがわかる。そうすると、このラダープログラムの実行周期に対応するトレースサンプリング周期で、実行順３に対応するネットのラダー図をそのまま表示した場合、信号Ｃと信号Ａとが矛盾する可能性があることがわかる。
後述の補正判定部１１４は、実行順信号テーブル１２４１に基づいて、トレース対象の構成要素（ネット又はコイル）に係るラダー回路の実行される実行順序と、当該ラダー回路に含まれる参照される接点の信号の状態（すなわち参照信号）が更新される実行順序と、を参照することで、当該ラダー回路に含まれる接点の信号の状態（参照信号）の補正要否を判定する。補正判定部１１４の詳細は後述する。
【００２５】
［トレース対象設定部１１２］
トレース対象設定部１１２は、ＰＬＣ４００で実行されるラダープログラムに含まれる構成要素のうち、トレース対象とする構成要素が、例えば、入力部１３０を介してユーザにより、１個以上指定される。ユーザは、構成要素として、１個以上指定してもよい。なお、構成要素としてのネットを指定する場合、当該ネットの位置情報を指定する。
トレース対象設定部１１２は、実行順信号テーブル１２４１を参照して、トレース対象として指定された構成要素（ネット）に係るラダー回路中の全ての参照される接点（参照信号）について、当該参照信号が書き込まれる（更新される）ネットについてもトレース対象とする。トレース対象設定部１１２は、以上のように設定された構成要素を、構成要素記憶部１２２に記憶させる。
なお、トレース対象設定部１１２は、トレース対象とする構成要素（ネット）を指定する替わりに、トレース対象とする構成要素（ネット）に係るラダー回路に含まれるコイル（すなわち更新される更新信号）を指定してもよい。その場合、トレース対象設定部１１２は、当該コイルの存在する構成要素（ネット）の位置情報を、例えば実行順信号テーブル１２４１を参照して特定してもよい。
【００２６】
［トレースデータ取得部１１３］
トレースデータ取得部１１３は、トレースサンプリング周期毎にトレース対象の構成要素（ネット）に係るラダー回路に含まれる接点（参照信号）及びコイル（更新信号）の信号の状態を示すトレースデータを、所定のサンプリング周期で取得する。トレースデータ取得部１１３は、例えば、ＰＬＣ４００からトレースデータを取得する。トレースデータ取得部１１３は、トレース対象として設定された各構成要素に含まれるすべての信号の状態（ＯＮ／ＯＦＦ）をトレースサンプリング周期毎に取得する。トレースデータ取得部１１３は、トレースサンプリング周期毎に取得した各構成要素に含まれるすべての信号の状態をトレースサンプリング周期毎に、トレースデータ記憶部１２３に記憶する。
図２及び図３を参照すると、例えば、ユーザがプログラムＰ１のネット１番をトレース対象と指定した場合、トレース対象設定部１１２は、少なくともサブプログラムＰ１のネット１番で参照される信号Ｃを更新するサブプログラムＰ２のネット１番についてもトレースする。
また、図４Ａを参照すると、例えば、ユーザがネットの位置情報（例えばネット１００番）をトレース対象と指定した場合、トレース対象設定部１１２は、少なくともネット１００番で参照される信号Ａを更新するネット１０番及びネット１００番で参照される信号Ｂを更新するネット番号１５１についてもトレースする。
【００２７】
［補正判定部１１４］
補正判定部１１４は、トレース対象の構成要素（ネット）に係るラダー回路のラダー図を出力する場合に、トレース対象の構成要素（ネット）に係るラダー回路の実行される実行順序と、当該ラダー回路に含まれる参照される接点の信号（参照信号）が更新される実行順序と、に基づいて、当該ラダー回路に含まれる参照される接点の信号（参照信号）の補正要否を判定する。
より具体的には、補正判定部１１４は、トレース対象の構成要素（ネット）に係るラダー回路に含まれるすべての参照される接点の信号（参照信号）について、各接点（参照信号）が更新される（書き込まれる）ラダー回路の実行順序番号を実行順信号テーブル１２４１を参照して特定する。
図４Ａを参照しながら、説明する。前述したように、図４Ａは、トレース対象ネット１００中の全ての参照される接点の信号（Ａ，Ｂ）について、各接点の信号が書き込まれたネットの位置情報（ネット番号）と実行順序番号を抽出する一例を示す図である。
図４Ａに示すように、ネット番号１００をトレース対象ネットとした場合、接点Ａ及び接点Ｂが参照信号である。接点Ａの信号は、ネット番号１０のネットにより更新され、接点Ｂの信号はネット番号１５１のネットにより更新される。
【００２８】
補正判定部１１４は、トレース対象の構成要素（ネット）に係るラダー回路の実行順序番号（Ｎ０）と、参照される各接点の信号（参照信号）が更新される（書き込まれる）ラダー回路の実行順序番号（Ｎｉ：（１≦ｉ≦Ｍ））と、を比較する。ここで、ｉは、参照される各接点（参照信号）が更新される（書き込まれる）ラダー回路を識別するためのインデックス、Ｍは、参照される各接点の信号（参照信号）が更新される（書き込まれる）ラダー回路の個数とする。
補正判定部１１４は、すべてのｉ（１≦ｉ≦Ｍ）に対して、式１を満たす場合、補正不要と判定する。
Ｎ０＞  Ｎｉ        （式１）
すなわち、補正判定部１１４は、トレース対象の構成要素（ネット）に係るラダー回路が実行される前に、参照されるすべての接点の信号（参照信号）が更新されている場合、信号の関係に矛盾が生じないことから、補正不要と判定する。
これに対して、補正判定部１１４は、式２を満たすｉが存在する場合、式２を満たす全てのｉに対応するラダー回路により更新される（書き込まれる）接点の信号（参照信号）について、信号の関係に矛盾が生じる可能性があることから補正が必要と判定する。
Ｎ０＜  Ｎｉ        （式２）
すなわち、補正判定部１１４は、トレース対象の構成要素（ネット）に係るラダー回路が実行された後に、更新される（書き込まれる）当該ラダー回路に含まれる接点の信号（すなわち参照される信号）については、補正が必要と判定する。
【００２９】
また、別の例として、図２及び図３を参照すると、例えば、ユーザがプログラムＰ１のネット１番をトレース対象と指定した場合、参照される信号Ｃは、信号Ａが更新された後に更新されていることから、補正が必要と判定する。また、メインプログラムのネット３番をトレース対象と指定した場合、参照される信号Ｄは、信号Ｙが更新される前に更新されていることから、補正が不要と判定する。
【００３０】
図４Ｂを参照しながら、補正の要否について具体例で説明する。前述したように、図４Ｂは、トレースサンプリング周期（ラダープログラム実行周期）の１周期目及び２周期目のトレース結果を示す図である。図４Ｂに示すラダープログラム及びトレース対象のネットは、図４Ａで示したものと同じである。
図４Ａで説明したように、接点Ａの信号はトレース対象のネット（番号１００）が実行される前に、ネット番号１０のネットにより更新されることから、接点Ａの信号は補正が不要と判定される。これに対して、接点Ｂの信号はトレース対象のネット（番号１００）が実行された後に、ネット番号１５１のネットにより更新されることから、接点Ｂの信号は補正が必要と判定される。
【００３１】
［出力部１１５］
出力部１１５は、トレースサンプリング周期（ラダープログラム実行周期）における、トレース対象の構成要素（ネット）に係るラダー回路に含まれるすべての信号の状態を含むトレース結果を時系列で例えば表示部１４０に出力するようにしてもよい。以下、トレースサンプリング周期（ラダープログラム実行周期）の時系列で出力される表をトレースグラフという。
より具体的には、トレースグラフには、トレース対象の構成要素（ネット）に係るラダー回路に存在する参照される各接点の信号（参照信号）が更新される（書き込まれる）ラダー回路を含める。
図４Ｃは、図４Ａに示すラダープログラムのネット番号１００のネットをトレース対象としたときに、トレースサンプリング周期（ラダープログラム実行周期）の時系列（１周期目及び２周期目）で出力されたトレースグラフを示す一例である。
図４Ｃに記載のトレースグラフを参照すると、例えば、ユーザがネット１００番をトレース対象に指定した場合、トレースグラフには、信号Ａ、Ｂ、Ｃに加えて、信号Ａを更新するネット１０番に存在する信号Ｘ、信号Ｂを更新するネット番号１５１のネットに存在する信号Ｙを含める。
【００３２】
出力部１１５は、指定されたトレースサンプリング周期（ラダープログラム実行周期）におけるトレース対象のネットのラダー図を出力する。
ここで、トレースサンプリング周期の指定は、例えば、表示部１４０がタッチパネルの場合、表示部１４０に出力されたトレースグラフ上の周期にカーソルを合わせることで、指定するようにしてもよい。また、入力部１３０を介してユーザにより周期番号を入力させるようにしてもよい。
出力部１１５は、ラダー図の出力に際して、補正判定部１１４により補正が必要と判定された、トレース対象の構成要素（ネット）に係るラダー回路に含まれる参照される接点の信号（参照信号）については、当該接点の信号（参照信号）を１つ前の実行周期のトレース結果に基づいて補正したラダー図を出力する。
図４Ｄに補正前のラダー図を、図４Ｆに補正後のラダー図を示す。出力部１１５は、補正判定部１１４により、補正が必要と判定された場合、図４Ｆに示すように、信号Ｂの状態を１つ前の実行周期のトレース結果に基づいて補正したラダー図を出力する。
なお、以上の説明では、出力部１１５の出力するラダー図が１個の場合を例示したが、これに限られない。トレース対象の構成要素（ネット）が複数個指定された場合、各構成要素（ネット）に係るラダー回路のラダー図を出力する。
【００３３】
また、出力部１１５は、表示部１４０に表示されたラダー図のうち、１つのラダー図が指定されると、指定されたラダー図のネットが実行された直後のトレースグラフを出力するようにしてもよい。図４Ｅにラダープログラムの実行周期（２周期目）で、ネット１００が実行された直後の補正されたトレースグラフを表示する例を示す。
【００３４】
出力部１１５は、上記ラダー図及びトレースグラフを任意の装置に出力することができる。例えば、出力部１１５は、上記ラダー図及びトレースグラフをファイルに出力してもよい。また、出力部１１５は、上記ラダー図及びトレースグラフを例えば通信可能に接続される、スマートフォン、タブレット端末、ＰＣ等の端末（図示せず）に出力するようにしてもよい。これは、当業者にとって周知のＷｅｂ技術によって実施してもよい。
以上、本実施形態のトレースシステム１０００の各機能部の実施形態をトレース装置１００及びＰＬＣ４００の構成に基づいて説明した。
【００３５】
次に、図５Ａ及び図５Ｂのフローチャートを参照して、本実施形態の動作について説明する。図５Ａ及び図５Ｂは、トレース装置１００のラダープログラム解析部１１１、トレース対象設定部１１２、トレースデータ取得部１１３、補正判定部１１４、及び出力部１１５により行われる、指定されたトレースサンプリング周期において、指定されたネットの実行直後のラダー図を表示する動作を示すフローチャートである。説明を簡単にするために、トレース対象のネットを１個とするが、複数個の場合、例えば、ステップＳ１３〜ステップＳ２１を各ネットについて実行すればよい。なお、図５Ａ及び図５Ｂで示すフローチャートは一例であって、これに限られない。
【００３６】
図５Ａを参照すると、ステップＳ１０において、トレース装置１００（ラダープログラム解析部１１１）は、ラダープログラムを解析して、実行順信号テーブル１２４１を作成し、テーブル記憶部１２４に記憶する。
ステップＳ１１において、トレース装置１００（トレース対象設定部１１２）は、トレース対象とするネットの位置情報を、例えば入力部１３０を介して取得する。
ステップＳ１２において、トレース装置１００（トレースデータ取得部１１３）は、ＰＬＣにラダープログラムを実行させることで、トレースサンプリング周期毎に、トレースデータを取得し、トレースデータ記憶部１２３に記憶する。
【００３７】
ステップＳ１３において、トレース装置１００（補正判定部１１４）は、実行順信号テーブル１２４１を参照して、トレース対象のネットの実行順序番号Ｌを取得する。
ステップＳ１４において、トレース装置１００（補正判定部１１４）は、実行順信号テーブル１２４１を参照して、トレース対象のネットに含まれる参照される全ての接点ｉの信号（参照信号）について、当該参照信号が書き込まれる（更新される）ネットの実行順序番号Ｌｉ（１≦ｉ≦Ｍ）を抽出する。
【００３８】
ステップＳ１５において、トレース装置１００（出力部１１５）は、ユーザにより選択される、補正対象とするトレース結果の第Ｎ周期を、例えば入力部１３０を介して取得する。
ステップＳ１６において、トレース装置１００（補正判定部１１４）は、ｉ＝１とする。
【００３９】
図５Ｂを参照すると、ステップＳ１７において、トレース装置１００（補正判定部１１４）は、Ｌｉ＞Ｌか否かを判定する。Ｌｉ＞Ｌの場合（Ｙｅｓの場合）、ステップＳ１８に移る。Ｌｉ＜Ｌの場合（Ｎｏの場合）、ステップＳ１９に移る。
ステップＳ１８において、トレース装置１００（補正判定部１１４）は、第Ｎ周期の実行順序Ｌｉのネットのコイル信号を（Ｎ−１）周期のトレース結果で補正して、記憶部１２０に記憶する。
【００４０】
ステップＳ１９において、トレース装置１００（補正判定部１１４）は、ｉ＝ｉ＋１とする。
ステップＳ２０において、トレース装置１００（補正判定部１１４）は、ｉ＞Ｍか否かを判定する。ｉ＞Ｍの場合（Ｙｅｓの場合）、ステップＳ２１に移る。ｉ≦Ｍの場合（Ｎｏの場合）、ステップＳ１７に移る。
【００４１】
ステップＳ２１において、トレース装置１００（出力部１１５）は、補正されたトレース結果に基づいてトレースサンプリング周期Ｎにおける当該ネットのラダー図を出力する。
【００４２】
次に、トレース結果をラダー図及びトレースグラフで見せる場合の具体例を説明する。
（具体例１）ラダー図を補正する必要がない場合
前述した図４Ａ〜図４Ｆでは、トレース対象の構成要素（ネット）に係るラダー回路の実行順序番号にしたがって、補正の必要な場合の具体例を説明したが、ここでは、補正の必要がない例について説明する。
図６Ａは、ネットの位置情報（ネット番号）と実行順序番号の一例を示す図である。図６Ｂは、補正の必要のないネット番号２００（エ）のラダー図及びトレースグラフを表示する一例を示す図である。図６Ａ及び図６Ｂから明らかなように、ネット番号２００（エ）の接点Ａ及び接点Ｂともに、ネット番号２００（エ）の実行以前に更新される。したがって、出力部１１５は、ネット番号２００（エ）のラダー図及びトレースグラフを表示する際、ラダー図及びトレースグラフを補正する必要がない。
【００４３】
次に、選択したネットに係るラダー回路が実行された直後の（補正された）トレースグラフを表示する具体例を説明する。
（具体例２）
図６Ｃは、ネット番号１００（イ）のラダー図及びトレースグラフを表示する一例を示す図である。図６Ａ及び図６Ｂから明らかなように、接点Ｂの信号がネット番号１５１のネットで更新される。したがって、図６Ｃに示すように、出力部１１５は、ネット番号１００（イ）のラダー図及びトレースグラフを表示する際、ラダー図及びトレースグラフを補正する。
【００４４】
以上により、トレース対象の構成要素（ネット又はコイル）に係るラダー回路に含まれるすべての信号について参照される接点の信号（参照信号）が当該ラダー回路の実行後に、後続の別のラダー回路により書き込まれた場合であっても、当該トレースサンプリング周期における当該ラダー回路のラダー図を表示するとき、当該接点の信号（参照信号）を当該サンプリング周期の１つ前の周期のトレース結果で補正することができる。
それにより、当該ラダー回路を実行した直後の信号状態を確認することができる。また、複雑なラダーを分析する必要がなくなり、デバッグの効率が向上する。
【００４５】
また、出力部１１５は、補正されたラダー図に加えて、当該ネットに係る補正されたトレースグラフを出力することができる。これにより、当該ラダー回路を実行した直後の関連する信号の状態を確認することができ、デバッグの効率が向上する。
【００４６】
また、出力部１１５は、ユーザにより指定された実行周期を含む時系列にしたがって、トレース結果を表示部１４０に出力することができる。これにより、当該ラダー回路の信号の状態を時系列で確認することができる。該当ネットの実行する直前及び直後の状態が確認でき、デバッグの効率が向上する。
【００４７】
本発明で使用する動作プログラムを初めとするプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００４８】
また、上述した実施形態は、本発明の好適な実施形態の１つではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【００４９】
＜変形例１＞
前述した実施形態では、構成要素として、ネットを例示したが、構成要素としてコイルを含めてもよい。また、トレース対象設定部１１２は、トレース対象として、ラダープログラムに含まれるネットの位置情報を１個以上指定することで、トレース対象とするネットが設定されたが、これに限られない。前述したように、トレース対象設定部１１２は、トレース対象としてコイルを指定してもよい。その場合、トレース対象設定部１１２は、当該コイルの存在するネットの位置情報を、例えば実行順信号テーブル１２４１を参照して特定することができる。
【００５０】
＜変形例２＞
トレース装置１００として、前述した実施形態では、パーソナルコンピュータ（ＰＣ）又はサーバ装置を例示したが、トレース装置１００をＰＬＣが備えるものであってもよい。また、トレース装置１００を数値制御装置（図示せず）が備えるものであってもよい。また、ＰＬＣ４００を数値制御装置（図示せず）が備えるものであってもよい。
【００５１】
＜変形例３＞
上述した実施形態では、シーケンス制御プログラムとしてラダー方式のプログラムを例に説明したが、これに限定されない。例えば、ＳＦＣ（Ｓｅｑｕｅｎｔｉａｌ  Ｆｕｎｃｔｉｏｎ  Ｃｈａｒｔ）方式等の他のシーケンス制御プログラムであってもよい。
【符号の説明】
【００５２】
１００  トレース装置
１１０  制御部
１１１  ラダープログラム解析部
１１２  トレース対象設定部
１１３  トレースデータ取得部
１１４  補正判定部
１１５  出力部
１２０  記憶部
１２２  構成要素記憶部
１２３  トレースデータ記憶部
１２４  テーブル記憶部
１２４１  実行順信号テーブル
１３０  入力部
１４０  表示部
４００  ＰＬＣ
１０００  トレースシステム
【図１】
2020077150.tif 000003
【図２】
2020077150.tif 000004
【図３】
2020077150.tif 000005
【図４Ａ】
2020077150.tif 000006
【図４Ｂ】
2020077150.tif 000007
【図４Ｃ】
2020077150.tif 000008
【図４Ｄ】
2020077150.tif 000009
【図４Ｅ】
2020077150.tif 000010
【図４Ｆ】
2020077150.tif 000011
【図５Ａ】
2020077150.tif 000012
【図５Ｂ】
2020077150.tif 000013
【図６Ａ】
2020077150.tif 000014
【図６Ｂ】
2020077150.tif 000015
【図６Ｃ】
2020077150.tif 000016