(57)【要約】【課題】シーケンスプログラムの任意の位置の信号状態をトレース可能にするシーケンスプログラム処理装置を提供する。【解決手段】プログラム編集装置は、プログラム編集部によりシーケンスプログラムに設定されたトレース開始位置及び終了位置間の命令のアドレスを解析し、トレース用メモリへの信号値の転送命令を挿入し、及び、解析したアドレスを設定したサンプリング用アドレステーブルと実行プログラムとを含むシーケンスプログラムのオブジェクトコードに変換するコンパイル部と、を含み、プログラマブルコントローラは、シーケンスプログラムのオブジェクトコードに含まれるサンプリング用アドレステーブルに基づいてトレース用メモリにサンプリングアドレスを設定するサンプリングアドレス設定部と、シーケンスプログラムのオブジェクトコードを実行し転送命令に従って信号値をトレース用メモリに格納するコード実行部と、を含む。【選択図】図１
2020140502.tif 000002
【特許請求の範囲】
【請求項１】
プログラムメモリに記憶されたシーケンスプログラムのオブジェクトコードを実行するシーケンスプログラム処理装置であって、
プログラム編集装置と、
プログラマブルコントローラと、
を備え、
前記プログラム編集装置は、
シーケンスプログラムにトレース開始位置とトレース終了位置とのペアを設定可能なプログラム編集部と、
前記プログラム編集部により設定された前記トレース開始位置と前記トレース終了位置との間にある命令のアドレスを解析し、トレース用メモリへの信号値の転送命令を挿入し、及び、解析した前記アドレスをサンプリング用アドレステーブルに設定して、実行プログラムと前記サンプリング用アドレステーブルとを含む前記シーケンスプログラムのオブジェクトコードに変換するコンパイル部と、
を含み、
前記プログラマブルコントローラは、
前記コンパイル部により変換された前記シーケンスプログラムのオブジェクトコードに含まれる前記サンプリング用アドレステーブルに基づいて、前記トレース用メモリにサンプリングアドレスを設定するサンプリングアドレス設定部と、
前記シーケンスプログラムのオブジェクトコードを実行し、前記転送命令に従って前記信号値を前記トレース用メモリに格納するコード実行部と、
を含む、シーケンスプログラム処理装置。
【請求項２】
請求項１に記載のシーケンスプログラム処理装置において、
前記プログラム編集部は、設定の指示入力に基づいて、前記ペアを設定し、複数の前記ペアの設定が可能である、シーケンスプログラム処理装置。
【請求項３】
請求項１又は請求項２に記載のシーケンスプログラム処理装置において、
前記コンパイル部は、前記転送命令を、次のネットとの間に挿入する、シーケンスプログラム処理装置。
【請求項４】
請求項１から請求項３までのいずれか一項に記載のシーケンスプログラム処理装置において、
前記コンパイル部は、さらに前記転送命令に対する制御条件を挿入する、シーケンスプログラム処理装置。
【請求項５】
請求項１から請求項４までのいずれか一項に記載のシーケンスプログラム処理装置において、
前記プログラマブルコントローラは、
前記コード実行部により前記トレース用メモリに格納された前記信号値を含むトレース結果を、トレースグラフとして出力するグラフ出力部を備える、シーケンスプログラム処理装置。
【請求項６】
請求項１から請求項５までのいずれか一項に記載のシーケンスプログラム処理装置において、
前記プログラマブルコントローラは、前記プログラム編集装置を含む、シーケンスプログラム処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シーケンスプログラムのトレースに用いるシーケンスプログラム処理装置に関する。
【背景技術】
【０００２】
昨今、シーケンスプログラムのデバッグや保守作業のため、プログラマブルコントローラ（ＰＬＣともいう。）には、トレース機能が用意されている。トレース機能として、一般的には、シーケンスプログラムの開始及び終了時や、全ての命令の実行時に、サンプリングをする。また、サンプリング対象として、指定されたアドレス（変数）や、全てのアドレス（変数）、モニタに表示されるアドレス（変数）を指定する方法がある。
ただし、サンプリングのタイミングがシーケンスプログラムの開始及び終了時の場合、シーケンスプログラムの実行結果しかサンプリングすることができない。そのため、１周期内での信号のＯＮ／ＯＦＦ等、シーケンスプログラム中で信号変化があった場合のサンプリングができない。
【０００３】
他方、シーケンスプログラムを記憶したプログラムメモリと、制御に必要なデータを記憶するデータメモリと、前記シーケンスプログラムの実行と全体の制御を実行するためのマイクロプロセッサと、前記シーケンスプログラムのモニタ範囲を実行中に、マイコンバス上のアドレス信号、データ信号、コマンド信号を監視し、シーケンス命令のオペランドデータがアクセスされたタイミングでオペランドデータをサンプリングして格納するデータトレース回路を備えたプログラマブルコントローラにおいて、前記マイクロプロセッサが前記シーケンスプログラム実行時に使用したオペランドデータを前記データメモリへのアクセスが発生した時点で格納しておき、モニタ装置が前記シーケンスプログラムのモニタ範囲を表示する際に、シーケンス命令と共に前記オペランドデータの内容を表示することにより、前記シーケンスプログラム実行中の実データをモニタ可能にしたプログラマブルコントローラが知られている（例えば、特許文献１）。
しかしながら、前述のプログラマブルコントローラでは、シーケンスプログラム内の全命令の実行時にサンプリングするため、不要な部分もサンプリングしてしまい、シーケンスプログラムのサイクルタイムが長くなるという問題がある。
また、サンプリング対象が指定されたアドレス（変数）の場合、シーケンスプログラムを解析し、サンプリングに必要なアドレス（変数）を見分ける必要があるため、サンプリング対象の選別が難しい。他方、サンプリング対象を全アドレス（変数）とすると、不要なアドレスもサンプリングしてしまうため、シーケンスプログラムのサイクルタイムが長くなるという問題がある。この点、サンプリング対象がモニタに表示されているアドレス（変数）というものもあるが、モニタに表示されているものしかサンプリングされない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３８９２８７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そこで、シーケンスプログラムの任意の位置の信号状態をトレース可能にする仕組みが望まれている。
【課題を解決するための手段】
【０００６】
（１）本開示の一態様は、プログラムメモリに記憶されたシーケンスプログラムのオブジェクトコードを実行するシーケンスプログラム処理装置であって、プログラム編集装置と、プログラマブルコントローラと、を備え、前記プログラム編集装置は、シーケンスプログラムにトレース開始位置とトレース終了位置とのペアを設定可能なプログラム編集部と、前記プログラム編集部により設定された前記トレース開始位置と前記トレース終了位置との間にある命令のアドレスを解析し、トレース用メモリへの信号値の転送命令を挿入し、及び、解析した前記アドレスをサンプリング用アドレステーブルに設定して、実行プログラムと前記サンプリング用アドレステーブルとを含む前記シーケンスプログラムのオブジェクトコードに変換するコンパイル部と、を含み、前記プログラマブルコントローラは、前記コンパイル部により変換された前記シーケンスプログラムのオブジェクトコードに含まれる前記サンプリング用アドレステーブルに基づいて、前記トレース用メモリにサンプリングアドレスを設定するサンプリングアドレス設定部と、前記シーケンスプログラムのオブジェクトコードを実行し、前記転送命令に従って前記信号値を前記トレース用メモリに格納するコード実行部と、を含む。
【０００７】
（２）本開示の一態様は、（１）に記載のシーケンスプログラム処理装置において、前記プログラマブルコントローラは、前記プログラム編集装置を含む。
【発明の効果】
【０００８】
一態様によれば、シーケンスプログラムの任意の位置の信号状態をトレース可能にするシーケンスプログラム処理装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係るシーケンスプログラム処理装置の機能ブロック図である。
【図２】本実施形態に係るプログラム編集装置によるプログラム編集処理を示すフローチャートである。
【図３Ａ】本実施形態に係るプログラム編集装置の処理の説明で使用するラダーの例を示す図である。
【図３Ｂ】本実施形態に係るプログラム編集装置のプログラム編集部による処理後のラダーの例を示す図である。
【図４】本実施形態に係るプログラム編集装置のコンパイル部による処理後のラダーの例を示す図である。
【図５Ａ】本実施形態に係るプログラム編集装置による処理で設定したサンプリング用アドレステーブルの例を示す図である。
【図５Ｂ】本実施形態に係るプログラム編集装置による処理で生成したシーケンスプログラムのオブジェクトコードのブロック図である。
【図６Ａ】本実施形態に係るプログラマブルコントローラによるトレース処理を示すフローチャートである。
【図６Ｂ】本実施形態に係るプログラマブルコントローラによるトレースグラフ出力処理を示すフローチャートである。
【図７】本実施形態に係るプログラマブルコントローラのサンプリングアドレス設定部による処理を説明するための図である。
【図８】本実施形態に係るプログラマブルコントローラのコード実行部による処理を説明するための図である。
【図９】本実施形態に係るプログラマブルコントローラのグラフ出力部による処理を説明するための図である。
【図１０】変形形態に係るプログラム編集装置のコンパイル部による処理後のラダーの例を示す図である。
【図１１】変形形態に係るプログラマブルコントローラの機能ブロック図である。
【発明を実施するための形態】
【００１０】
（実施形態）
まず、一態様の実施形態の概略を説明する。本実施形態は、シーケンスプログラムに基づいて信号の入出力を行うプログラマブルコントローラが、任意の位置の信号値をトレース用メモリに格納するものに関する。
【００１１】
次に、本実施形態であるシーケンスプログラム処理装置１００の構成について、図１を参照して説明をする。
図１に示すシーケンスプログラム処理装置１００は、プログラム編集装置１と、プログラマブルコントローラ４とを備えている。
シーケンスプログラム処理装置１００は、プログラム編集装置１が、シーケンスプログラムに、トレース開始位置及びトレース終了位置のペアを設定した上で、シーケンスプログラムのオブジェクトコードを生成する。そして、プログラマブルコントローラ４が、シーケンスプログラムのオブジェクトコードを実行し、トレース開始位置からトレース終了位置までの信号値を、トレース用メモリに格納する。また、プログラマブルコントローラ４は、トレース用メモリに格納された信号値に関するトレースグラフを生成する。
【００１２】
このように、シーケンスプログラム処理装置１００は、プログラム編集装置１と、プログラマブルコントローラ４との処理によって、シーケンスプログラムの任意の位置の信号状態をトレース可能にする。
プログラム編集装置１と、プログラマブルコントローラ４とは、例えば、ネットワークを介して接続されるか、又は、接続インタフェースを介して直接接続されることで、通信可能に接続されている。
【００１３】
［プログラム編集装置１］
プログラム編集装置１は、シーケンスプログラムを編集し、編集したシーケンスプログラムをコンパイルすることで、編集後のシーケンスプログラムを、シーケンスプログラムのオブジェクトコードに変換するものである。
プログラム編集装置１は、例えば、パーソナルコンピュータ（ＰＣ）、タブレット端末、スマートフォン等任意の端末装置等でもよい。
【００１４】
プログラム編集装置１は、制御部１０と、記憶部２０と、入力部２５と、表示部２６と、通信部２９とを備える。
制御部１０は、ＣＰＵ（中央処理装置）であってよく、記憶部２０に記憶されたプログラム編集装置１を制御する各種のプログラムを実行することにより、プログラム編集装置１を統括制御する。
制御部１０は、プログラム編集部１１と、コンパイル部１３とを備える。これらの各機能部は、制御部１０が記憶部２０に格納されたプログラムを実行することにより実現される。
【００１５】
プログラム編集部１１は、シーケンスプログラムにトレース開始位置とトレース終了位置とのペアを設定する。プログラム編集部１１は、例えば、入力部２５から入力されたトレース開始位置とトレース終了位置の指示入力に基づいて、１以上のペアを設定可能である。
【００１６】
コンパイル部１３は、プログラム編集部１１により設定されたトレース開始位置とトレース終了位置とのペアごとに、トレース開始位置とトレース終了位置との間にある命令のアドレスを解析する。
次に、コンパイル部１３は、トレース用メモリへの転送命令を、次のネットとの間に挿入する。
また、コンパイル部１３は、トレース開始位置とトレース終了位置との間にある命令のアドレスを解析する際に、サンプリング用アドレステーブルに、解析したアドレスを設定する。
【００１７】
そして、コンパイル部１３は、シーケンスプログラムを、実行プログラムとサンプリング用アドレステーブルとを含むシーケンスプログラムのオブジェクトコードに変換する。
なお、コンパイル部１３は、後述するようにトレース機能を実行又は停止するために、トレース用メモリへの転送命令を、次のネットとの間に挿入する際に、トレース用メモリへの転送命令の実行又は停止に係る制御条件をあわせて挿入するものであってもよい。
【００１８】
記憶部２０は、制御部１０により実行されるプログラム等を記憶する記憶領域である。記憶部２０は、前述した制御部１０の各種機能を実行する編集用プログラム２１を記憶している。
また、記憶部２０は、一時記憶領域を備え、例えば、制御部１０により生成されたシーケンスプログラムのオブジェクトコード等を記憶する。
【００１９】
入力部２５は、例えば、キーボード、マウス、スイッチボタン等の各種ボタン等の入力装置である。
表示部２６は、表示装置であり、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等により構成される。
なお、入力部２５と、表示部２６とが一体になったタッチパネルを備えるものであってもよい。
通信部２９は、例えば、ＲＳ２３２Ｃ用コネクタ等の所定のコネクタによって構成され、プログラマブルコントローラ４との間で直接接続するための通信制御デバイスである。
【００２０】
［プログラマブルコントローラ４］
プログラマブルコントローラ４は、シーケンスプログラムのトレースに用いるシステムソフト等のプログラムを実行し、シーケンスプログラムのオブジェクトコードにより、信号の入出力を行う装置である。
プログラマブルコントローラ４は、制御部４０と、記憶部５０と、通信部５９とを備える。
制御部４０は、ＣＰＵであってよく、記憶部５０に記憶されたプログラマブルコントローラ４を制御する各種のプログラムを実行することにより、プログラマブルコントローラ４を統括制御する。
制御部４０は、サンプリングアドレス設定部４５と、コード実行部４７と、グラフ出力部４８とを備える。これらの各機能部は、制御部４０が記憶部５０に格納されたプログラムを実行することにより実現される。
【００２１】
サンプリングアドレス設定部４５は、シーケンスプログラムのオブジェクトコードに含まれるサンプリング用アドレステーブルを解析し、後述するトレース用メモリ５７にサンプリングアドレスを設定する。
コード実行部４７は、シーケンスプログラムのオブジェクトコードを実行することで、トレース用メモリ５７への信号値の転送命令に従って、取得した信号値をトレース用メモリ５７に格納する。
グラフ出力部４８は、トレース用メモリ５７に格納された信号値を含むトレース結果を、トレースグラフとして後述する表示部６２に出力する。
【００２２】
記憶部５０は、制御部４０により実行されるプログラム等を記憶する記憶領域である。記憶部５０は、少なくともＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５１と、ＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５５とを備える。
ＲＯＭ５１は、システムソフト５２を記憶している。システムソフト５２は、前述した制御部４０の各種機能を実行するプログラムである。
【００２３】
ＲＡＭ５５は、一時的な計算データや表示データや、入力部６１を介してオペレータが入力した各種データ等を格納するための領域である。ＲＡＭ５５は、シーケンスプログラムメモリ５６や、トレース用メモリ５７を有する記憶領域である。
シーケンスプログラムメモリ５６は、プログラム編集装置１で生成したシーケンスプログラムのオブジェクトコードを格納する領域である。
トレース用メモリ５７は、シーケンスプログラムのオブジェクトコードに含まれるサンプリング用アドレステーブルに基づいて、サンプリングアドレスを設定する領域である。
【００２４】
通信部５９は、例えば、ＲＳ２３２Ｃ用コネクタ等の所定のコネクタによって構成され、プログラム編集装置１や、入力部６１、表示部６２等との間で直接接続するための通信制御デバイスである。
なお、プログラマブルコントローラ４は、前述した機能部の他、プログラマブルコントローラ４に特有の処理部を有するが、それらは当業者にとって公知であることから、説明を省略する。
【００２５】
入力部６１は、例えば、表示器／ＭＤＩユニットのキーボード等の手動データ入力装置である。
表示部６２は、例えば、表示器／ＭＤＩユニットのディスプレイである。
【００２６】
［プログラム編集処理］
次に、本実施形態のシーケンスプログラム処理装置１００における処理（シーケンスプログラムを編集して、任意の位置の信号値がトレース可能なシーケンスプログラムのオブジェクトコードを生成する処理）を説明する。
最初に、プログラム編集装置１での処理を、図２に基づいて説明する。図２は、プログラム編集装置１によるプログラム編集処理を示すフローチャートである。
【００２７】
図２のステップＳ（以下、ステップＳを、単にＳという。）１１において、プログラム編集装置１の制御部１０（プログラム編集部１１）は、シーケンスプログラムの構成要素のうち、トレース対象とする構成要素をトレース対象区間に含むように、トレース開始位置と、トレース終了位置の指定を受け付ける。
シーケンスプログラムは、例えば、図３Ａに例示されるように、ラダー図の形式で表すことができる。制御部１０は、まず、図３Ａに示すラダー７０を、表示部２６に表示させる。ラダー７０は、ラダー回路からなるネットを１つ以上含み、各ネットにはネット番号が付されている。ネットは、接点（参照信号）やコイル（更新信号）といった構成要素（命令）を含む。
【００２８】
そして、プログラム編集者等のオペレータによる入力部２５を介した入力を受け付けることで、制御部１０は、入力部２５を介してトレース開始位置及びトレース終了位置のペアの指定を受け付ける。
図３Ｂは、図３Ａに示すラダー７０に対して、指定によりトレース開始位置７１ａと、トレース終了位置７１ｂとが設定されたラダー７１である。ラダー７１は、トレース開始位置７１ａと、トレース終了位置７１ｂとの間である区間７１ｘを、トレース対象区間としてシーケンスプログラムのトレース対象にすることを示している。そして、制御部１０は、ラダー７１で示される、編集後のシーケンスプログラムを、記憶部２０に記憶させる。
【００２９】
図２のＳ１２において、制御部１０（コンパイル部１３）は、Ｓ１１で指定されたトレース開始位置及びトレース終了位置を含むシーケンスプログラムに基づいて、トレース開始位置とトレース終了位置との間にある命令のアドレスを解析する。図３Ｂのラダー７１では、区間７１ｘに含まれるネット番号００２及びネット番号００３が示すネット上の各構成要素が、アドレスの解析対象になる。
【００３０】
図２のＳ１３において、制御部１０（コンパイル部１３）は、トレース用メモリへの転送命令を、次のネットとの間に挿入する。図４は、トレース用メモリへの転送命令がネット間に挿入されたラダー７２の例を示す。トレース開始位置の後のネット番号００２に対応するトレース用メモリへの転送命令である追加要素７２ａは、ネット番号００２と、次のネット番号であるネット番号００３との間に挿入されている。同様に、ネット番号００３に対応するトレース用メモリへの転送命令である追加要素７２ｂは、トレース終了位置の前に挿入されている。
【００３１】
図２のＳ１４において、制御部１０（コンパイル部１３）は、記憶部２０にサンプリング用アドレステーブルを用意し、Ｓ１２において解析したアドレスを、用意したサンプリング用アドレステーブルに設定する。図５Ａは、サンプリング用アドレステーブル３２に設定されたサンプリングアドレスの例を示す。例えば、図４に示すネット番号００２に関するアドレスは、Ｒ１０．０と、Ｒ１０．１と、Ｒ１０．２との３つである。また、ネット番号００３に関するアドレスは、Ｒ１０．２と、Ｒ１１．０と、Ｒ１１．１との３つであり、Ｒ１１．１は、２か所に含まれる。このように、同じアドレスが重複している場合には、制御部１０は、重複した登録を避け、１つだけ設定する。
【００３２】
図２のＳ１５において、制御部１０（コンパイル部１３）は、コンパイル処理によって、シーケンスプログラムのオブジェクトコードを生成し、記憶部２０に記憶させる。その後、制御部１０は、本処理を終了する。
図５Ｂは、生成されたシーケンスプログラムのオブジェクトコード３０のブロック図である。図５Ｂに示すように、シーケンスプログラムのオブジェクトコード３０は、ラダー７２を示す実行プログラム３１と、図２のＳ１４で設定したサンプリング用アドレステーブル３２とを含む。
【００３３】
プログラム編集装置１で生成されたシーケンスプログラムのオブジェクトコード３０は、プログラマブルコントローラ４に受け渡されて、プログラマブルコントローラ４のシーケンスプログラムメモリ５６に記憶する。ここで、シーケンスプログラムのオブジェクトコード３０の受け渡しは、例えば、プログラム編集装置１の通信部２９と、プログラマブルコントローラ４の通信部５９との間で行うことができる。
【００３４】
［トレース処理］
次に、プログラマブルコントローラ４での処理（プログラム編集装置１で生成したシーケンスプログラムのオブジェクトコード３０を実行して、指定位置の信号値のサンプリングを行う処理）を、図６に基づいて説明する。図６Ａは、プログラマブルコントローラ４によるトレース処理を示すフローチャートである。
図６Ａおいて、プログラマブルコントローラ４の制御部４０は、ＲＯＭ５１に記憶されたシステムソフト５２に従って、プログラム編集装置１で生成したシーケンスプログラムのオブジェクトコード３０を実行する。
【００３５】
Ｓ２１において、制御部４０（サンプリングアドレス設定部４５）は、シーケンスプログラムメモリ５６に記憶されたシーケンスプログラムのオブジェクトコード３０に含まれるサンプリング用アドレステーブル３２を解析する。そして、制御部４０（サンプリングアドレス設定部４５）は、トレース用メモリ５７にサンプリングアドレスを設定する。図７に、サンプリング用アドレステーブル３２に基づいてサンプリングアドレスが設定されたトレース用メモリ５７の例を示す。図７に示すように、トレース用メモリ５７は、実行順（スキャン順）に各アドレスの信号値を格納できるように構成されたテーブルである。
【００３６】
図６ＡのＳ２２において、制御部４０（コード実行部４７）は、シーケンスプログラムのオブジェクトコード３０を実行することで、トレース用メモリ５７への信号値の転送命令に従って、信号値をトレース用メモリに格納する。
図８に、ラダー７２に対応した実行プログラム３１により、トレース用メモリ５７に各アドレスの信号値が格納されている態様を示す。ここで、信号値の１は、ＯＮを示し、信号値の０は、ＯＦＦを示す。なお、図８では、２スキャン目までを記載しているが、外部からの割り込み命令等が行われない限りにおいて、制御部４０は、３スキャン目以降も処理を行い、２スキャン目までと同様に各アドレスの信号値を格納する。
なお、制御部４０は、シーケンスプログラムのオブジェクトコード３０が実行中において、常にトレースし続ける。
【００３７】
［トレースグラフ出力処理］
次に、プログラマブルコントローラ４でのトレースグラフ出力処理を、図６Ｂに基づいて説明する。
トレース用メモリ５７に格納されたアドレスの信号値の内容を確認したい場合、図６ＢのＳ３１において、プログラマブルコントローラ４の制御部４０（グラフ出力部４８）は、まず、トレース用メモリ５７に格納された信号値の格納結果に基づいて、トレースグラフを生成する。図９に、トレース用メモリ５７の信号値に基づいて生成したトレースグラフ８０の例を示す。このトレースグラフ８０は、信号がＯＮ（つまり、信号値が１）の場合を白色で、信号がＯＦＦ（つまり、信号値が１以外）の場合を黒色で示している。なお、このトレースグラフ８０は、一例であって、白色と黒色とを反転させたものであってもよい。
【００３８】
次に、図６ＢのＳ３２において、制御部４０（グラフ出力部４８）は、生成したトレースグラフ８０を、表示部６２に出力する。そうすることで、表示部６２には、トレースグラフ８０が表示される。
【００３９】
以上により、シーケンスプログラム処理装置１００では、プログラム編集装置１が、トレース開始位置７１ａ及びトレース終了位置７１ｂの指定を含むようにシーケンスプログラムを編集する。その結果、シーケンスプログラムには、トレース対象区間である区間７１ｘが設定される。そして、プログラム編集装置１では、区間７１ｘにある構成要素のアドレスを解析し、トレース用メモリ５７への信号値の転送命令を挿入し、及び、解析したアドレスをサンプリング用アドレステーブル３２に設定する。その後、プログラム編集装置１は、実行プログラム３１とサンプリング用アドレステーブル３２とを含むシーケンスプログラムのオブジェクトコード３０に変換する。
【００４０】
そして、プログラマブルコントローラ４が、プログラム編集装置１により生成されたシーケンスプログラムのオブジェクトコード３０をシーケンスプログラムメモリ５６にローディングさせた後、システムソフト５２に従って、プログラム編集装置１で生成したシーケンスプログラムのオブジェクトコード３０を実行させる。そうすることによって、プログラマブルコントローラ４において、シーケンスプログラムのオブジェクトコード３０が実行される。その結果、トレース用メモリ５７に、トレース対象区間の命令の信号値が設定される。
【００４１】
よって、シーケンスプログラムのうちユーザが指定した開始及び終了位置の間の信号値のトレースが可能になり、必要な信号値のサンプリングができる。また、シーケンスプログラム中で信号変化があった場合のサンプリングを行える。さらに、シーケンスプログラムのサイクルタイムが長くなるのを抑えることができる。
【００４２】
なお、本実施形態で使用するプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００４３】
また、前述した実施形態は、本発明の好適な実施形態の１つではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【００４４】
（変形例１）
前述した実施形態では、シーケンスプログラムのオブジェクトコードを実行すると、順次トレース用メモリへの信号値の転送命令が実行されることによって、信号値を順番にトレース用メモリに格納するものを例に説明したが、これに限定されない。
例えば、プログラム編集装置１の制御部１０（コンパイル部１３）が、トレース機能を実行又は停止するために、トレース用メモリへの信号値の転送命令の実行又は停止に係る制御条件を挿入するものであってもよい。図１０に示すラダー２７２は、トレース用メモリへの転送命令である追加要素７２ａ及び７２ｂの前に、トレース実行の制御条件２７３及び２７４が挿入されている。このようにすることで、例えば、入力部６１からの入力によって、制御条件２７３及び２７４の信号状態が変化し、それに伴って、追加要素７２ａ及び７２ｂの実行が制御できる。
【００４５】
（変形例２）
前述した実施形態では、シーケンスプログラム処理装置１００が、プログラム編集装置１と、プログラマブルコントローラ４とにより構成されるものを例に説明したが、これに限定されない。プログラマブルコントローラ４が、プログラム編集装置１を含むようにしてもよい。具体的には、プログラマブルコントローラ４が、プログラム編集装置１の備えるすべての機能を備えるようにしてもよい。
【００４６】
図１１は、プログラム編集装置１の機能を含むプログラマブルコントローラ２０４を備えたシーケンスプログラム処理装置２００のブロック図である。
プログラマブルコントローラ２０４は、制御部２４０と、記憶部２５０と、通信部５９と、入力部６１と、表示部６２とを備える。
制御部２４０は、プログラム編集部２４１と、コンパイル部２４３と、サンプリングアドレス設定部４５と、コード実行部４７と、グラフ出力部４８とを備える。プログラム編集部２４１及びコンパイル部２４３は、プログラム編集装置１のプログラム編集部１１及びコンパイル部１３と同様の機能を有する。
【００４７】
記憶部２５０は、ＲＯＭ２５１と、ＲＡＭ５５とを備える。
ＲＯＭ２５１は、システムソフト２５２を備える。システムソフト２５２は、プログラム編集装置１の編集用プログラム２１と同様の処理を行うプログラムと、プログラマブルコントローラ４のシステムソフト５２とを含む。
このようにすることで、プログラム編集機能を有した、単体のプログラマブルコントローラ２０４であっても、前述した実施形態と同様の機能を有するものにできる。
【００４８】
（変形例３）
前述した実施形態では、シーケンスプログラムとしてラダー方式のプログラムを例に説明したが、これに限定されない。例えば、ＳＦＣ（Ｓｅｑｕｅｎｔｉａｌ  Ｆｕｎｃｔｉｏｎ  Ｃｈａｒｔ）方式等の他のシーケンスプログラムであってもよい。
【００４９】
（変形例４）
前述した実施形態では、トレース結果を表示部６２に表示するものを例に説明したが、これに限定されない。データとしてファイルに出力するものであってもよい。
【００５０】
（変形例５）
前述した実施形態では、トレース開始位置とトレース終了位置とのペアを１つ設定したものを例に説明したが、これに限定されない。トレース開始位置とトレース終了位置とのペアを複数設定してもよい。
【００５１】
以上のように、本実施形態によれば、例えば以下の作用効果が得られる。
（１）シーケンスプログラムメモリ５６に記憶されたシーケンスプログラムのオブジェクトコード３０を実行するシーケンスプログラム処理装置１００が、プログラム編集装置１と、プログラマブルコントローラ４と、を備え、プログラム編集装置１は、シーケンスプログラムにトレース開始位置とトレース終了位置とのペアを設定可能なプログラム編集部１１と、プログラム編集部１１により設定されたトレース開始位置とトレース終了位置との間にある命令のアドレスを解析し、トレース用メモリ５７への信号値の転送命令を挿入し、及び、解析したアドレスをサンプリング用アドレステーブル３２に設定して、実行プログラム３１とサンプリング用アドレステーブル３２とを含むシーケンスプログラムのオブジェクトコード３０に変換するコンパイル部１３と、を含み、プログラマブルコントローラ４は、コンパイル部１３により変換されたシーケンスプログラムのオブジェクトコード３０に含まれるサンプリング用アドレステーブル３２に基づいて、トレース用メモリ５７にサンプリングアドレスを設定するサンプリングアドレス設定部４５と、シーケンスプログラムのオブジェクトコード３０を実行し、転送命令に従って信号値をトレース用メモリ５７に格納するコード実行部４７と、を含む。
これにより、プログラム編集装置１と、プログラマブルコントローラ４との２つの装置を用いて、シーケンスプログラムのうち開始及び終了位置の間にある信号値のトレースが可能になり、簡単な設定によって必要な信号値のサンプリングができる。
【００５２】
（２）  （１）に記載のシーケンスプログラム処理装置１００において、プログラム編集部１１は、設定の指示入力に基づいて、ペアを設定し、複数のペアの設定が可能であってもよい。
これにより、ユーザがペアを複数設定でき、複数のペアによる各トレース対象区間にある命令の信号値をサンプリングできる。
【００５３】
（３）  （１）又は（２）に記載のシーケンスプログラム処理装置１００において、コンパイル部１３は、転送命令を、次のネットとの間に挿入してもよい。
これにより、次のネットの命令を実行する前に、命令の信号値をサンプリングできる。
【００５４】
（４）  （１）から（３）までのいずれかに記載のシーケンスプログラム処理装置１００において、コンパイル部１３は、さらに転送命令に対する制御条件を挿入してもよい。
これにより、信号値のサンプリングの開始や停止を、入力部６１からの入力によって制御できる。
【００５５】
（５）  （１）から（４）までのいずれかに記載のシーケンスプログラム処理装置１００において、プログラマブルコントローラ４は、コード実行部４７によりトレース用メモリ５７に格納された信号値を含むトレース結果を、トレースグラフとして出力するグラフ出力部４８を備えてもよい。
これにより、命令の信号値を、トレースグラフとして見やすい態様で示すことができる。
【００５６】
（６）  （１）から（５）までのいずれかに記載のシーケンスプログラム処理装置１００において、プログラマブルコントローラ２０４は、プログラム編集装置１を含んでもよい。
これにより、（１）と同様の効果をプログラマブルコントローラ２０４だけで実現できる。
【符号の説明】
【００５７】
１    プログラム編集装置
４，２０４  プログラマブルコントローラ
１０，４０，２４０  制御部
１１，２４１  プログラム編集部
１３，２４３  コンパイル部
２０，５０，２５０  記憶部
２１  編集用プログラム
３０  シーケンスプログラムのオブジェクトコード
３１  実行プログラム
３２  サンプリング用アドレステーブル
４５  サンプリングアドレス設定部
４７  コード実行部
４８  グラフ出力部
５２，２５２  システムソフト
５６  シーケンスプログラムメモリ
５７  トレース用メモリ
６２  表示部
１００，２００  シーケンスプログラム処理装置
【図１】
2020140502.tif 000003
【図２】
2020140502.tif 000004
【図３Ａ】
2020140502.tif 000005
【図３Ｂ】
2020140502.tif 000006
【図４】
2020140502.tif 000007
【図５Ａ】
2020140502.tif 000008
【図５Ｂ】
2020140502.tif 000009
【図６Ａ】
2020140502.tif 000010
【図６Ｂ】
2020140502.tif 000011
【図７】
2020140502.tif 000012
【図８】
2020140502.tif 000013
【図９】
2020140502.tif 000014
【図１０】
2020140502.tif 000015
【図１１】
2020140502.tif 000016