(57)【要約】【課題】  特別な回路を付加することなく、任意のデータの演算途中における変化を容易にトレースできるデータトレース方法を提供する。【解決手段】  プログラマブルコントローラ１の制御マイコン４は、ローダ３から受信したトレース設定情報をトレース指定テーブル６に格納する。演算ＡＳＩＣ９は、アプリケーションプログラムの任意のユニットからの戻り命令を実行したときに、トレース指定テーブル６を参照してトレース設定情報の有無を確認し、設定があるとき、該トレース設定情報に設定された対象データについてデータメモリ８をトレースし、該トレース結果が前回のトレース実行時から変化しているときにトレースバッファ１１に格納する。制御マイコン４は、トレースバッファ１１に格納されたトレース結果をローダ３へ返信してユーザへ提示する。【選択図】  図１
2010211555.tif 000002
【特許請求の範囲】
【請求項１】
複数のユニットで構成されたアプリケーションプログラムをもって、テーブルに格納されたトレース設定情報に従ってデータをトレースし、該トレース結果をトレースバッファに格納するプログラマブルコントローラのデータトレース方法であって、
前記アプリケーションプログラムの任意のユニットからの戻り命令の実行時に、前記テーブルを参照して前記トレース設定情報の有無を確認する第１ステップと、
前記テーブルにトレース設定情報があるときに、該トレース設定情報の設定されたデータをトレースする第２ステップと、
前記トレース結果が、前回のトレース実行時から変化しているときに、該トレース結果を前記トレースバッファに格納する第３ステップと、
を有することを特徴とするプログラマブルコントローラのデータトレース方法。
【請求項２】
前記トレース結果は、
トレースしたデータのメモリアドレスおよび変化したデータ値と、
トレースを実行したときの戻り命令が記述されたユニットの識別子と、
トレースを実行した時刻あるいはトレース回数と、
を有することを特徴とする請求項１記載のプログラマブルコントローラのデータトレース方法。
【請求項３】
前記第２ステップは、複数のトレース設定情報が前記テーブルに格納されているときに各トレース設定情報に従って複数データをトレースし、
前記各データのトレース結果に前記各トレース設定情報の識別子を付加するステップをさらに有する
ことを特徴とする請求項１または２のいずれか１項に記載のプログラマブルコントローラのデータトレース方法。
【請求項４】
前記各ステップが、演算処理に特化したマイクロコンピュータあるいは汎用のマイクロコンピュータをもって実行される
ことを特徴とする請求項１〜３のいずれか１項に記載のプログラマブルコントローラのデータトレース方法。
【請求項５】
前記アプリケーションプログラムは、国際標準規格「ＩＥＣ６１１３１−３」で定義されたプログラム言語で記述されていることを特徴とする請求項１〜４のいずれか１項に記載のプログラマブルコントローラのデータトレース方法。
【請求項６】
前記アプリケーションプログラムは、前記戻り命令に相当する命令語を有する任意のプログラム言語で記述されていることを特徴とする請求項１〜４のいずれか１項に記載のプログラマブルコントローラのデータトレース方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、公共システムや自動車産業などの産業システムの制御に広く使用されているプログラマブルコントローラに関し、特に制御実行時の内部データのトレース方法に関する。
【背景技術】
【０００２】
プログラマブルコントローラ（以下、ＰＬＣと呼ぶ）におけるデータトレースでは、アプリケーションプログラムによる演算処理を１回実行する毎に、指定データのトレース結果を取得している。
【０００３】
すなわち、演算処理を行う毎にデータメモリ中の指定データの変化を調べ、変化している場合にそのデータ値と時刻とをトレース用データバッファに格納して、ローダなどのヒューマンマシンインタフェース（ＨＭＩ）にそれらの情報を表示している。これに関連する技術としては、特許文献１．２に示すように、演算途中でのデータを取得する方法が提案されている。
【０００４】
また、特許文献３では、プログラムモニタをプログラムの階層毎に行えるような方法が提案されている。この方法は、プログラムを階層化し、指定された階層のデータのみをトレースするような用途を想定している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１１５９６９号公報
【特許文献２】特開２０００−２５０７７９号公報
【特許文献３】特開２００１−０３４３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記のような従来の方法では、演算処理を１回実行する間にトレース対象データに対して複数回の書込みがあった場合に、途中でデータが変化したにもかかわらず、演算終了時には元の値に戻ってしまい、データの内容に変化が無いことになってしまうおそれがある。
【０００７】
特に、特許文献１．２では、演算途中でアクセスされた指定データをトレースできるものの、マイクロプロセッサを用いた既存の演算回路に特別な回路を付加する必要があり、コストが増大する。さらに、同一データを書込んでデータ値が変化しないような場合にもトレースを行うことになり、無駄な処理を行う可能性もある。
【０００８】
また、特許文献３は、プログラムを階層構造にして、指定された階層のデータをモニタ・トレースデータとして扱う、いわゆるモニタ方式の提案である。しかし、この手法は階層単位にトレースを行うことを目的とし、ユーザが希望する任意のデータのみをトレースするものではなく、さらに、プログラムの階層はその構造や使われ方により変化することが多く、ユーザにとって階層を意識することは困難な場合もある。
【０００９】
本発明は、このような問題に鑑み、特別な回路を付加することなく、任意のデータの演算途中における変化を容易にトレースできるデータトレース方法を提供することを解決課題としている。
【課題を解決するための手段】
【００１０】
そこで本発明は、前記課題を解決するために、アプリケーションプログラムのプログラム実行単位としての各ユニットに記述された戻り命令を実行する毎にトレースを実行し、該トレース結果が前回のトレース実行時から変化していればトレースバッファに格納させている。
【００１１】
本発明の一態様は、複数のユニットで構成されたアプリケーションプログラムをもって、テーブルに格納されたトレース設定情報に従ってデータをトレースし、該トレース結果をトレースバッファに格納するプログラマブルコントローラのデータトレース方法であって、前記アプリケーションプログラムの任意のユニットからの戻り命令の実行時に、前記テーブルを参照して前記トレース設定情報の有無を確認する第１ステップと、前記テーブルにトレース設定情報があるときに、該トレース設定情報の設定されたデータをトレースする第２ステップと、前記トレース結果が、前回のトレース実行時から変化しているときに、該トレース結果を前記トレースバッファに格納する第３ステップと、を有する。
【００１２】
本発明の他の態様は、前記トレース結果は、トレースしたデータのメモリアドレスおよび変化したデータ値と、トレースを実行したときの戻り命令が記述されたユニットの識別子と、トレースを実行した時刻あるいはトレース回数と、を有する。
【００１３】
さらに他の態様は、前記第２ステップは、複数のトレース設定情報が前記テーブルに格納されているときに各トレース設定情報に従って複数データをトレースし、前記各データのトレース結果に前記各トレース設定情報の識別子を付加するステップをさらに有する。
【００１４】
さらに他の態様は、前記各ステップが、演算処理に特化したマイクロコンピュータまたは汎用のマイクロコンピュータをもって実行される。
【００１５】
なお、前記アプリケーションプログラムは、国際標準規格「ＩＥＣ６１１３１−３」で定義されたプログラム言語で記述されていてもよく、あるいは前記戻り命令に相当する命令語を有する任意のプログラム言語で記述されていてもよい。
【発明の効果】
【００１６】
本発明によれば、演算途中のデータ変化をユニット単位で容易に確認することができる。また、実行手順を演算手段の論理プログラムに追加するだけで実現されるため、特別な回路を付加する必要がなく、この点でコストを抑止できる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係るプログラマブルコントローラの構成図。
【図２】同  演算手段（演算ＡＳＩＣ９）のデータトレースの処理フロー。
【図３】同  プログラム・オーガナイゼーション・ユニット（ＰＯＵ）の構成例。
【発明を実施するための形態】
【００１８】
以下、図面に基づき本発明の実施形態を説明する。図１に示すように、本発明の実施形態に係るＰＬＣ１には、動作を制御する対象となる外部の制御対象装置２と、ユーザとのインタフェースであるローダ３とが接続されている。
【００１９】
前記ＰＬＣ１は、あらかじめ作成されたアプリケーションプログラムを内部に記憶しており、このプログラムを実行することにより前記制御対象装置２の動作を制御する。
【００２０】
このとき、該プログラムで使用されるデータのトレースに関する情報（トレース設定情報）が設定されていれば、該情報にしたがってトレース対象データのトレースを行い、結果を前記ローダ３へ返信してユーザに提示する。
【００２１】
前記ＰＬＣ１は、制御用マイコン４，通信インタフェース（Ｉ／Ｆ）５，トレース指定テーブル６，プログラムメモリ７，データメモリ８，演算ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）９，外部装置Ｉ／Ｏ１０，トレースバッファ１１を備えている。
【００２２】
前記制御用マイコン４は、主に前記通信インタフェース５を介して前記ローダ３との間でデータの送受信を行う。例えば、前記ローダ３からトレース設定情報を受信して前記トレース指定テーブル６に格納したり、前記トレースバッファ１１に格納されたトレース結果を前記ローダ３へ返信したりする。
【００２３】
前記プログラムメモリ７には、前記アプリケーションプログラムが記憶され、該プログラムで使用される各データが前記データメモリ８に記憶されている。
【００２４】
前記演算ＡＳＩＣ９は、演算処理の実行に特化した集積回路などで構成され、前記プログラムメモリ７からアプリケーションプログラムを読み出して実行する。このとき、前記トレース設定情報にしたがって、前記データメモリ８に記憶されたトレース対象データのトレースを実行し、結果を前記トレースバッファ１１へ格納する。
【００２５】
前記外部装置Ｉ／Ｏ１０は、ＰＬＣ１と外部の制御対象装置２とを接続するための入出力装置である。したがって、前記演算ＡＳＩＣ９によるアプリケーションプログラムの実行結果は、前記外部装置Ｉ／Ｏ１０を通じて接続された前記制御対象装置２へ送信され、これにより前記制御対象装置２の動作が制御される。
【００２６】
以下、アプリケーションプログラムを実行する前記演算ＡＳＩＣ９が、該プログラム中の特定の命令（ＲＥＴ命令）を実行するときにデータトレースを行う例を説明する。
【００２７】
まず、前記制御用マイコン４は、ユーザが前記ローダ３から入力したトレース設定情報を前記通信インタフェース５を介して受信し、前記トレース指定テーブル６に格納する。
【００２８】
ここで、トレース設定情報には以下の３つの情報、すなわち（１）トレースするデータのメモリアドレス（２）トレースするデータの型（ＢＯＯＬ，ＩＮＴ，ＤＩＮＴ，ＲＥＡＬなど）（３）トレース条件（状態変化検出用マスク、不感帯など）がセットされる。
【００２９】
次に、前記演算ＡＳＩＣ９は、前記プログラムメモリ７に格納されているアプリケーションプログラムを読み出して実行する。このとき、前記演算ＡＳＩＣ９は、前記トレース設定情報で指定されたトレース対象データについて、前記データメモリ８のトレースを行う。
【００３０】
このアプリケーションプログラム実行時のデータトレース方法について、図２の処理フローに基づき詳細に説明する。
【００３１】
Ｓ０１：まず、前記演算ＡＳＩＣ９は、前記プログラムメモリ７に格納されているアプリケーションプログラムを読み出す。
【００３２】
ここで、このアプリケーションプログラムについて補足説明する。近年のＰＬＣで用いられるアプリケーションプログラムは、一般に、その記述方式を規定した国際標準規格「ＩＥＣ６１１３１−３」に準じて記述されている。
【００３３】
国際標準規格「ＩＥＣ６１１３１−３」によれば、プログラムをプログラム・オーガナイゼーション・ユニット（ＰＯＵ）単位に作成し、複数のＰＯＵを組み合わせてアプリケーションプログラムを構成することができる。すなわち、アプリケーションプログラムは複数のＰＯＵを順次実行することができ、各ＰＯＵはタスクの演算周期に同期して起動される。
【００３４】
一般的に、ＰＯＵには３種類の型、すなわち（１）プログラム型（２）ファンクションブロック型（３）ファンクション型に分類される。
【００３５】
プログラム型ＰＯＵは、ファンクションブロック型ＰＯＵやファンクション型ＰＯＵを呼び出すことができる。また、ファンクションブロック型ＰＯＵは、他のファンクションブロック型ＰＯＵやファンクション型ＰＯＵを呼び出すことができる。
【００３６】
このとき、他のＰＯＵを呼び出す場合には「ＣＡＬ命令」が使用され、元のＰＯＵへ戻るときには「ＲＥＴ命令」が使用される。このＰＯＵ間のネストの例を図３に示す。この例では、ＰＯＵ１においてＰＯＵ２およびＰＯＵ３が呼び出され、ＰＯＵ２とＰＯＵ３ではそれぞれＰＯＵ４が呼び出されている。
【００３７】
なお、ファンクション型ＰＯＵではインスタンスを持たないので、データメモリ８の特定データを書き換えすることがなく、ここでの「ＲＥＴ命令」はプログラム型ＰＯＵとファンクションブロック型ＰＯＵのＲＥＴ命令ということになる。
【００３８】
Ｓ０２〜０３：前記演算ＡＳＩＣ９は、ＰＯＵから命令を１つ読み出し、読み出した命令が「ＲＥＴ命令」か否かを確認する。「ＲＥＴ命令」でない場合にはその命令を実行し、後述するＳ０８へ進む。「ＲＥＴ命令」である場合には、Ｓ０４へ進む。
【００３９】
Ｓ０４：Ｓ０３で「ＲＥＴ命令」を確認したとき、前記演算ＡＳＩＣ９は前記トレース指定テーブル６を参照し、トレース設定情報が格納されているか否かを確認する。格納されていない場合にはトレースを行わずにＳ０２で読み出した命令（ここではＲＥＴ命令）を実行し、Ｓ０８へ進む。トレース設定情報が格納されている場合には、Ｓ０５へ進む。
【００４０】
Ｓ０５：前記演算ＡＳＩＣ９は、前記トレース設定情報で指定されたトレース対象データについて、前記データメモリ８のトレースを行う。
【００４１】
Ｓ０６：前記演算ＡＳＩＣ９は、Ｓ０５でのトレース結果について、前回のトレース実行時から状態が変化しているか否かを確認する。この確認には、前記トレース設定情報で設定した状態変化検出用マスクなどを用いればよい。
【００４２】
状態変化が検出されない場合には、トレース結果の出力を行わずにＳ０２で読み出した命令（ここではＲＥＴ命令）を実行し、Ｓ０８へ進む。状態変化が検出された場合には、Ｓ０７へ進む。
【００４３】
Ｓ０７：Ｓ０６でトレース結果の状態変化が検出された場合、前記演算ＡＳＩＣ９は、このトレース結果を前記トレースバッファ１１に格納する。
【００４４】
ここで、格納されたトレース結果には、（１）トレースしたデータのメモリアドレス（２）変化したデータ値（３）トレースを実行したＰＯＵ識別子（ＰＯＵ番号、ＰＯＵインスタンス番号、ＰＯＵインスタンス名称など）（４）トレース実行時刻またはトレース回数のカウンタ値が含まれている。このように、トレース結果にはＰＯＵ識別子が含まれることから、ユーザはどのＰＯＵでの演算でデータが変化したかを確認することができる。
【００４５】
Ｓ０８：アプリケーションプログラムを構成するＰＯＵの全ての命令の実行が終了した場合はＳ０９へ、終了していない場合はＳ０２へ戻り、全ての命令の実行が終了するまでＳ０２〜Ｓ０７を繰り返す。
【００４６】
Ｓ０９：前記演算ＡＳＩＣ９によるアプリケーションプログラムの実行が終了したら、前記制御用マイコン４は、前記トレースバッファ１１を参照してトレース結果の有無を確認する。そして、トレース結果が格納されていれば、前記通信インタフェース５を介して該トレース結果を前記ローダ３へ返信し、ユーザへ提示する。
【００４７】
このように、本実施例のＰＬＣ１によれば、アプリケーションプログラムの各ＰＯＵに記述されたＲＥＴ命令を実行する毎にトレースが実行されるので、演算途中のデータの変化をＰＯＵ単位で容易に確認することができる。
【００４８】
また、かかるトレース方法は、処理手順を前記演算ＡＳＩＣ９の論理プログラムに追加するだけで実現されるため、特許文献１．２のように特別な回路を付加する必要がなく、この点でコストを抑止できる。
【００４９】
さらに、トレースしたデータの状態変化を検出した場合のみトレース結果が出力されることから、データに変化がない場合にもかかわらず結果を出力してしまう処理を回避できる。
【００５０】
また、ＰＯＵがどの階層に位置したとしてもＲＥＴ命令の実行時にトレースが行われるため、ユーザは特許文献３のようにＰＯＵの階層を意識する必要がなく、この点でユーザの煩わしさが解消される。
【００５１】
なお、本発明は上記実施形態に限定されるものではなく、例えば前記トレース指定テーブル６に複数のトレース設定情報を格納できるようにし、前記演算ＡＳＩＣ９がこれら各トレース設定情報にしたがって指定された複数のデータをトレースすることもできる。
【００５２】
この場合には、前記トレースバッファ１１に格納するトレース結果に、前述の情報に加えてトレース設定情報の識別子を併せて格納し、トレース設定情報とトレース結果とを対応づける。これにより、ユーザは各トレース結果がどのトレース設定情報を基にしたものかを容易に確認することができ、複数データのトレースが可能になる。
【００５３】
また、アプリケーションプログラムの実行を前記演算ＡＳＩＣ９のような演算処理に特化した回路を用いることなく、汎用マイコンで実行することもできる。
【００５４】
この場合には、ＰＬＣ１で実行するアプリケーションプログラムをあらかじめコンパイルしておく。このとき、アプリケーションプログラムの「ＲＥＴ命令」の箇所に、前述のＳ０４〜Ｓ０７で説明したデータトレースの処理を追加しておき、前記プログラムメモリ７に格納しておく。これを汎用マイコンで実行することにより、演算ＡＳＩＣ９を使用した場合と同等の効果を得ることができる。
【００５５】
さらに、アプリケーションプログラムを国際標準規格「ＩＥＣ６１１３１−３」で規定されたプログラム言語で記述しているが、本発明はこれに限定されることなく、他の言語で記述したアプリケーションプログラムにも適用することができる。
【００５６】
例えば、メーカオリジナル言語やＣ言語などのコンピュータ言語であっても、プログラム実行単位の最終命令（通常は前記実施例の「ＲＥＴ命令」に相当）の箇所に、前述のＳ０４〜Ｓ０７で説明したデータトレースの処理を追加することで、前記実施例と同様のデータトレースを実現することができる。
【符号の説明】
【００５７】
１…プログラマブルコントローラ（ＰＬＣ）
２…制御対象装置
３…ローダ
４…制御用マイコン
５…通信インタフェース
６…トレース指定テーブル
７…プログラムメモリ
８…データメモリ
９…演算ＡＳＩＣ
１０…外部装置Ｉ／Ｏ
１１…トレースバッファ
【図１】
2010211555.tif 000003
【図２】
2010211555.tif 000004
【図３】
2010211555.tif 000005