(57)【要約】【課題】マイクロプロセッサでシーケンスプログラムを実行する場合に、データトレース回路を付加したり、専用のデータトレースプログラムを使用してシーケンスプログラム実行中の実データをモニタ可能とするプログラマブルコントローラを得ること。【解決手段】シーケンスプログラムを記憶したプログラムメモリと制御に必要なデータを記憶するデータメモリと、前記シーケンスプログラムの実行と全体の制御を実行するためのマイクロプロセッサを備えたプログラマブルコントローラにおいて、シーケンスプログラムの実行中に使用したデータを即時トレースするデータトレース回路を付加することにより、シーケンスプログラム実行中の実データをモニタすることが可能なようにしたプログラマブルコントローラ。【選択図】    図１
2005115969.tif 000002
【特許請求の範囲】
【請求項１】
シーケンスプログラムを記憶したプログラムメモリと、制御に必要なデータを記憶するデータメモリと、前記シーケンスプログラムの実行と全体の制御を実行するためのマイクロプロセッサを備えたプログラマブルコントローラにおいて、
前記シーケンスプログラムのモニタ範囲を実行中に使用したデータを前記データメモリへのアクセスが発生した時トレースするデータトレース手段を付加することにより、前記シーケンスプログラム実行中の実データをモニタすることが可能なように構成したことを特徴とするプログラマプルコントローラ。
【請求項２】
請求項１記載のプログラマブルコントローラにおいて、インタプリタ方式で前記シーケンスプログラムを実行する場合に、前記シーケンスプログラムの実行中に使用したデータを即時トレースするデータ卜レース手段を付加することにより、前記マイクロプロセッサがプログラムを実行するときに作業領域として使用するワークメモリの内容や一時的に使用されたデータのトレースが可能なように構成したことを特徴とするプログラマブルコントローラ。
【請求項３】
請求項１記載のプログラマブルコントローラにおいて、コンパイラ方式で前記シーケンスプログラムを実行する場合に、前記シーケンスプログラムの実行中に使用したデータを即時トレースするデータトレース手段を付加することにより、前記マイクロプロセッサがプログラムを実行するときに作業領域として使用するワークメモリの内容や一時的に使用されたデータのトレースが可能なように構成したことを特徴とするプログラマブルコントローラ。
【請求項４】
請求項１記載のプログラマブルコントローラにおいて、ループ実行を行うシーケンスプログラムのデータトレースを行う際に、ループ実行の階層の深さを指定してデータのトレースを実行可能なように構成したこと特徴とするプログラマブルコントローラ。
【請求項５】
請求項１記載のプログラマブルコントローラにおいて、前記シーケンスプログラムの中にジャンプ命令などを実行フローを制御する命令が存在した場合に、その命令の実行アドレスと飛び先のアドレスを順次トレースすることにより、前記シーケンスプログラムの不実行部分も含めて実使用データのトレースを実行可能なように構成したことを特徴とするプログラマブルコントローラ。
【請求項６】
請求項１記載のプログラマブルコントローラにおいて、前記シーケンスプログラムのデータトレースを行う際に、実行した命令の種類に従ってトレースデータを加工し、データ格納領域が最小になるように構成したことを特徴とするプログラマブルコントローラ。
【請求項７】
請求項１記載のプログラマブルコントローラにおいて、前記シーケンスプログラムのデータトレースを行う際に、複数スキャン分のトレースデータを連続して格納可能なように構成したことを特徴とするプログラマブルコントローラ。
【請求項８】
シーケンスプログラムを記憶したプログラムメモリと、制御に必要なデータを記憶するデータメモリと、前記シーケンスプログラムの実行と全体の制御を実行するためのマイクロプロセッサを備えたプログラマブルコントローラにおいて、
モニタするデータを記憶するトレースバッファと、
モニタ開始アドレスを記憶するモニタ開始アドレスレジスタと、
モニタ終了アドレスを記憶するモニタ終了アドレスレジスタと、
前記プログラマブルコントローラのマイコンバス上のアドレスと前記モニタ開始アドレスレジスタに記憶されたモニタ開始アドレスが一致した後に前記データメモリへのアクセスが発生した時にアクセスされた前記データメモリのデータを前記データバッファに格納し、前記プログラマブルコントローラのマイコンバス上のアドレスと前記モニタ終了アドレスレジスタに記憶されたモニタ終了アドレスが一致した後に前記データバッファへのデータの格納を終了することを特徴とするトレース制御手段とを有することを特徴とするプログラマブルコントローラ。
【請求項９】
シーケンスプログラムを記憶したプログラムメモリと、制御に必要なデータを記憶するデータメモリと、前記シーケンスプログラムの実行と全体の制御を実行するためのマイクロプロセッサを備えたプログラマブルコントローラにおいて、
モニタするデータを記憶するトレースバッファと、
モニタ開始アドレスを記憶するモニタ開始アドレスレジスタと、
モニタ終了アドレスを記憶するモニタ終了アドレスレジスタと、
前記プログラマブルコントローラのマイコンバス上のアドレスと前記モニタ開始アドレスレジスタに記憶されたモニタ開始アドレスが一致した後に前記データメモリへのアクセスが発生した時にアクセスされた前記データメモリのアドレスとデータおよび読み出しまたは書き込みの識別を前記データバッファに格納し、前記プログラマブルコントローラのマイコンバス上のアドレスと前記モニタ終了アドレスレジスタに記憶されたモニタ終了アドレスが一致した後に前記データバッファへのデータの格納を終了することを特徴とするトレース制御手段とを有することを特徴とするプログラマブルコントローラ。
【請求項１０】
前記トレース制御手段は、プログラムがマイクロプロセッサで実行されたものであることを特徴とする請求項８または請求項９に記載のプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鉄鋼、製紙プラントや上下水道などの公共システム、自動車産業な
ど、産業用システムの制御に広く使用されているプログラマブルコントローラに
関する。
【背景技術】
【０００２】
従来、この種のプログラマブルコントローラ（以下、ＰＬＣと略称）において
、プログラム実行状態をモニタするには、１スキャン分のシーケンスプログラム
を実行した後で、モニタ対象のプログラム範囲で使用されている変数のデータ内
容をＰＬＣのデータメモリから読み出し、シーケンスプログラムを表示したモニ
タ装置の画面上で、変数を使用している命令の近傍にデータ内容を表示させたり
、該当するシーケンス命令の表示色を変えるなどの方法を採用していた。
【０００３】
この方法はシーケンスプログラム中でモニタの対象となる変数が一度だけ使用
されている場合には正しい内容を表示できるが、同一変数が繰り返し使用されて
いる場合には正しい内容を表示できない、という問題があった。
【０００４】
従来のコントローラのプログラムモニタの状態を図８で説明する。図８のプロ
グラムは変数Ａ、Ｂを加えて変数Ｃに格納し、変数Ｃに変数Ｄを乗じてその結果
を再び変数Ｃに格納するというものである。このとき、実際の変数の内容は図８
（ａ）のようになるが、この実行完了後に変数の内容をモニタして表示すると図
８（ｂ）のようになってしまい、変数Ｃに着目してみれば、乗算の入力側と出力
側で内容が同じ、という正しくないモニタ表示となっていた。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように構成された従来の装置においては、次のような問題点が存在する。
【０００６】
シーケンスプログラムで使用したデータや結果を正しくモニタするためには、
モニタ対象となるプログラムを実行した直後にデータを１個ずつトレースすれば
可能であるが、従来は専用のシーケンス実行ハードウェア以外では、そのような
実施例はなかった。
【０００７】
近年、マイクロプロセッサの性能向上に伴い、シーケンスプログラムを汎用の
マイクロプロセッサを使用してインタプリタ方式やコンパイラ方式で実行する事
例が多くなっている。汎用マイクロプロセッサを使用した場合にはシーケンス命
令実行直後のデータトレースを実施した例はなかった。
【０００８】
本発明は、上記の事情に基づいてなされたもので、シーケンスプログラム実行
中の実データをモニタ可能とするプログラマブルコントローラを提供することを
目的としている。
【課題を解決するための手段】
【０００９】
前記目的を達成するため、請求項１に対応する発明は、シーケンスプログラムを記憶したプログラムメモリと、制御に必要なデータを記憶するデータメモリと、前記シーケンスプログラムの実行と全体の制御を実行するためのマイクロプロセッサを備えたプログラマブルコントローラにおいて、前記シーケンスプログラムのモニタ範囲を実行中に使用したデータを前記データメモリへのアクセスが発生した時トレースするデータトレース手段を付加することにより、前記シーケンスプログラム実行中の実データをモニタすることが可能なように構成したことを特徴とするプログラマプルコントローラである。
【００１０】
請求項１に対応する発明によれば、付加されたデータトレース手段がモニタ対
象範囲の検出、例えばユーザが作成したシーケンスプログラムの解釈、データ形
の判定などを実行し、演算対象データと演算結果のデータを自動的にトレースバ
ッファに格納するので、シーケンスプログラムの実時間でのモニタが可能となる
。
【００１１】
前記目的を達成するため、請求項２に対応する発明は、請求項１記載のプログラマブルコントローラにおいて、インタプリタ方式で前記シーケンスプログラムを実行する場合に、前記シーケンスプログラムの実行中に使用したデータを即時トレースするデータ卜レース手段を付加することにより、前記マイクロプロセッサがプログラムを実行するときに作業領域として使用するワークメモリの内容や一時的に使用されたデータのトレースが可能なように構成したことを特徴とするプログラマブルコントローラである。
【００１２】
請求項２に対応する発明によれば、インタプリタ方式に対応したデータトレー
ス手段を付加することにより、シーケンスプログラムを実行する際にマイクロプ
ロセッサがシーケンスプログラムメモリから読み出したプログラムのアドレスと
内容からトレース範囲とトレース内容を判定し、その後データメモリに入出力さ
れたデータを順次トレースするので、シーケンスプログラムの実時間モニタが可
能となる。
【００１３】
前記目的を達成するため、請求項３に対応する発明は、請求項１記載のプログラマブルコントローラにおいて、コンパイラ方式で前記シーケンスプログラムを実行する場合に、前記シーケンスプログラムの実行中に使用したデータを即時トレースするデータトレース手段を付加することにより、前記マイクロプロセッサがプログラムを実行するときに作業領域として使用するワークメモリの内容や一時的に使用されたデータのトレースが可能なように構成したことを特徴とするプログラマブルコントローラである。
【００１４】
請求項３に対応する発明によれば、コンパイラ方式に対応したデータトレース
手段を付加することにより、コンパイラ方式でシーケンスプログラムを実行する
際に、データメモリをアクセスしたときのアドレスとデータを組にしてトレース
バッファに格納するので、シーケンスプログラムの実時間モニタが可能となる。
【００１５】
前記目的を達成するため、請求項４に対応する発明は、請求項１記載のプログラマブルコントローラにおいて、ループ実行を行うシーケンスプログラムのデータトレースを行う際に、ループ実行の階層の深さを指定してデータのトレースを実行可能なように構成したこと特徴とするプログラマブルコントローラである。
【００１６】
請求項４に対応する発明によれば、データトレース手段にループ実行の回数を
指定してデータのトレースをすることができるので、ループ実行の途中のデータ
についても実時間モニタが可能となる。
【００１７】
前記目的を達成するため、請求項５に対応する発明は、請求項１記載のプログラマブルコントローラにおいて、前記シーケンスプログラムの中にジャンプ命令などを実行フローを制御する命令が存在した場合に、その命令の実行アドレスと飛び先のアドレスを順次トレースすることにより、前記シーケンスプログラムの不実行部分も含めて実使用データのトレースを実行可能なように構成したことを特徴とするプログラマブルコントローラ。である。
【００１８】
請求項５に対応する発明によれば、データトレース手段が使用したデータと併
せてジャンプ元アドレスとジャンプ先アドレスもトレースするので、モニタの対
象範囲にジャンプ命令が存在しても正しく実時間モニタが可能となる。
【００１９】
前記目的を達成するため、請求項６に対応する発明は、請求項１記載のプログラマブルコントローラにおいて、前記シーケンスプログラムのデータトレースを行う際に、実行した命令の種類に従ってトレースデータを加工し、データ格納領域が最小になるように構成したことを特徴とするプログラマブルコントローラである。
【００２０】
請求項６に対応する発明によれば、データトレース手段が実行した命令のデー
タ形を判定し、不要なデータを削除してトレースバッファに無駄なく格納するの
で、モニタ装置との間での通信データ量を削減することが可能となる。
【００２１】
前記目的を達成するため、請求項７に対応する発明は、請求項１記載のプログラマブルコントローラにおいて、前記シーケンスプログラムのデータトレースを行う際に、複数スキャン分のトレースデータを連続して格納可能なように構成したことを特徴とするプログラマブルコントローラである。
【００２２】
請求項７に対応する発明によれば、データトレース手段が連続した複数スキ
ャン分のデータを卜レース可能なので、モニタ装置との間での通信周期とは係わ
りなく、高速なスキャン実行のモニタが可能となる。
【００２３】
前記目的を達成するため、請求項８に対応する発明は、シーケンスプログラムを記憶したプログラムメモリと、制御に必要なデータを記憶するデータメモリと、前記シーケンスプログラムの実行と全体の制御を実行するためのマイクロプロセッサを備えたプログラマブルコントローラにおいて、モニタするデータを記憶するトレースバッファと、モニタ開始アドレスを記憶するモニタ開始アドレスレジスタと、モニタ終了アドレスを記憶するモニタ終了アドレスレジスタと、前記プログラマブルコントローラのマイコンバス上のアドレスと前記モニタ開始アドレスレジスタに記憶されたモニタ開始アドレスが一致した後に前記データメモリへのアクセスが発生した時にアクセスされた前記データメモリのデータを前記データバッファに格納し、前記プログラマブルコントローラのマイコンバス上のアドレスと前記モニタ終了アドレスレジスタに記憶されたモニタ終了アドレスが一致した後に前記データバッファへのデータの格納を終了することを特徴とするトレース制御手段とを有することを特徴とするプログラマブルコントローラである。
【００２４】
前記目的を達成するため、請求項９に対応する発明は、シーケンスプログラムを記憶したプログラムメモリと、制御に必要なデータを記憶するデータメモリと、前記シーケンスプログラムの実行と全体の制御を実行するためのマイクロプロセッサを備えたプログラマブルコントローラにおいて、モニタするデータを記憶するトレースバッファと、モニタ開始アドレスを記憶するモニタ開始アドレスレジスタと、モニタ終了アドレスを記憶するモニタ終了アドレスレジスタと、前記プログラマブルコントローラのマイコンバス上のアドレスと前記モニタ開始アドレスレジスタに記憶されたモニタ開始アドレスが一致した後に前記データメモリへのアクセスが発生した時にアクセスされた前記データメモリのアドレスとデータおよび読み出しまたは書き込みの識別を前記データバッファに格納し、前記プログラマブルコントローラのマイコンバス上のアドレスと前記モニタ終了アドレスレジスタに記憶されたモニタ終了アドレスが一致した後に前記データバッファへのデータの格納を終了することを特徴とするトレース制御手段とを有することを特徴とするプログラマブルコントローラである。
【００２５】
前記目的を達成するため、請求項１０に対応する発明は、次のようにしたものである。すなわち、前記トレース制御手段は、プログラムがマイクロプロセッサで実行されたものであることを特徴とする請求項８または請求項９に記載のプログラマブルコントローラである。
【発明の効果】
【００２６】
以上述べた本発明によれば、次のような作用効果が得られるプログラマブルコ
ントローラを提供できる。即ち、マイクロプロセッサによってシーケンスプログ
ラムを実行するプログラマブルコントローラにおいて、シーケンスプログラムを
実行した時点で使用されたデータをモニタすることが可能となるので、常にシー
ケンス命令と対応するオペランドデータが正しくモニタでき、プログラムの実行
状態の確認に有効である。
【００２７】
また、シーケンスプログラム中に繰り返し実行部分やジャンプが存在しても正
しくデータをモニタ可能なプログラマブルコントローラを提供することができる
。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施形態について図面を参照して説明する。
【００２９】
＜第１の実施形態＞
図１により本発明の第１の実施形態について説明する。図１において、ＣＰＵ
１はマイクロプロセッサで、ＰＬＣの中枢部分であり、シーケンスの実行及び実
行制御を行う。
【００３０】
プログラムメモリ２はＣＰＵ１が実行するプログラムが格納されているメモリ
であり、ＯＳやシーケンスプログラムの解釈、実行プログラムが格納される。
【００３１】
ワークメモリ３はＣＰＵ１がプログラムを実行するときに作業領域として使用
する。シーケンスプログラムメモリ（ユーザプログラムメモリ）４はユーザが作
成したシーケンスプログラムを格納するメモリである。データメモリ５はユーザ
が使用する変数などのデータを格納するメモリである。
【００３２】
マイコンバス６はＰＬＣ内の要素をＣＰＵ１と接続するためのバスであり、ア
ドレスバス、データバス、制御バスの総体である。Ｉ／Ｏ７はＰＬＣと外部の制
御対象を接続するための入出力装置である。
【００３３】
通信インタフェース（通信Ｉ／Ｆ）８はＰＬＣとモニタ装置２０などを通信媒
体を介して接続するための回路である。
【００３４】
データトレース回路９はマイコンバス６を介してＣＰＵ１や各種メモリに接続
されており、マイコンバス６上の信号を監視しながら自立して動作できるように
構成されている。
【００３５】
図２はデータトレース手段、例えばデータトレース回路９の構成を説明するた
めの図である。トレース制御回路９１はトレースの開始、停止タイミングを制御
したり、トレースすべきデータの形を実行中の命令種別によって判定するなどの
動作を行い、データトレース回路９全体の制御を行う。
【００３６】
アドレス比較回路９２は、付属するアドレスレジスタとマイコンバス６上のア
ドレスを比較して一致信号をトレース制御回路９１に送る。アドレスレジスタ９
３，９４はＣＰＵ１によってセットされ、ここにセットされたアドレスがマイコ
ンバス６上に現れるとアドレス比較回路９２がトレース制御回路９１にアドレス
ー致信号を出力する。
【００３７】
アドレスレジスタは次の３個である。トレース開始アドレスレジスタ９３はト
レース開始アドレスをセットするためのレジスタである。トレース終了アドレス
レジスタ９４はトレース終了アドレスをセットするためのレジスタである。アド
レスマッチレジスタ９５は、ループアドレス用他、汎用に使用されるレジスタで
ある。
【００３８】
トレースカウンタ９６はトレースしたデータ数をカウントするカウンタであり
、次に述べるトレースバッファが一杯になったときにトレース制御回路９１を介
してＣＰＵ１に割り込み信号１０を発生させる。ビットトレースメモリ（ビット
トレースバッファ）９７とワードトレースメモリ９８及びアドレストレースメモ
リ９９はトレースバッファとして使用されるメモリであり、それぞれ、ビットデ
ータ、ワードデータ、アドレスデータを格納する。
【００３９】
データトレース回路９は必要なときに割込み信号１０を介してＣＰＵ１に割込
みをかけることができる。モニタ装置２０はＰＬＣのシーケンスプログラム実行
状態を監視したり、シーケンスプログラムの作成、修正に使用される。モニタ装
置２０はＣＲＴ、他の表示装置とキーボード、他の入力装置を持っている。
【００４０】
ＣＰＵ１はＩ／Ｏ７を介して外部の制御対象の状態を入力した後、シーケンス
プログラムメモリ４からシーケンスプログラムを読み出し、必要に応じてデータ
メモリ５内のデータをアクセスしながら実行し、結果をＩ／Ｏ７を介して外部の
制御対象に出力する。
【００４１】
シーケンスプログラムの実時間モニタを行うときには、まずモニタ開始アドレ
スをＣＰＵ１からトレース開始アドレスレジスタ９３にセットし、モニタ終了ア
ドレスをトレース終了アドレスレジスタ９４にセットする。
【００４２】
その後、シーケンスプログラムの実行を開始するとモニタ対象範囲のシーケン
スプログラムを実行した際に、トレース制御回路９１がトレース開始アドレスを
検出して、それ以降の必要なデータをマイコンバス６から取り出して対応するト
レースバッファに格納し、トレースカウンタ９６を更新していく。
【００４３】
トレース終了アドレスが検出されるか、トレースカウンタ９６が規定の値にな
るとトレース制御回路９１が割込み信号１０を使用してそれをＣＰＵ１に知らせ
、トレースバッフアの読みとりやトレースの終了処理を要求する。
【００４４】
このようにしてデータトレース回路９を使用してシーケンスプログラムの実時
間モニタが可能になる。
【００４５】
次に、インタプリタ方式でシーケンスプログラムを実行する場合の動作につい
て説明する。ここで、インタプリタとは、必要最低限のソース、プログラムをそ
の都度変換して実行する方式で、例えば図式表示を図式単位毎に機械語に変換す
る方式である。
【００４６】
ここで、シーケンスプログラムをインタプリタ方式で実行するときの動作を図
３を使用して説明する。シーケンスプログラムメモリ４のＡ接点命令を実行しよ
うとすると、まずＣＰＵ１はシーケンスプログラムメモリ４からＡ接点命令のコ
ードを読み出す。ＣＰＵ１はこの命令コードに対応した処理プログラムをプログ
ラムメモリ２から読み出して実行する。このプログラムの処理中にデータメモリ
５へのアクセスが発生する。
【００４７】
ここでは、オペランドであるＸというビットの読み出しが発生する。この命令
がモニタの対象となっているときには、トレース制御回路９１はシーケンスプロ
グラムメモリ４からの読み出しは命令コードであると判定してこのコードを取り
込み、コードをデコードしてトレースするべきデータの種別を決定する。
【００４８】
Ａ接点の場合には、データメモリ５から読み出したビットデータがモニタ対象
となるので、トレース制御回路９１はマイコンバス６の状態を監視し、データメ
モリからの読み出しが発生したときにそのデータを取り込み、命令コードから必
要なビットを判定して、ビットトレースメモリ９７に格納する。トレースの開始
と終了アドレスの決定については前述した通りである。
【００４９】
このようにインタプリタ方式に対応したデータトレース回路９ではシーケンス
プログラムメモリ４とデータメモリ５へのアクセスを監視し、ＣＰＵ１でのシー
ケンスプログラムの実行と並行して、適宜データバッファヘデータを格納するこ
とで実時間でのモニタが可能となる。
【００５０】
＜第２の実施形態＞
次に、図２を使用して第２の実施形態について、具体的に説明する。コンパイ
ラ方式でのシーケンスプログラムの実行は図４に示すようにシーケンスプログラ
ムメモリ４内にシーケンス命令をＣＰＵ１が解釈できる形にしたプログラムが直
接書かれている。
【００５１】
ここで、コンパイラはすべてのプログラムを一括して変換し、機械語プログラ
ムを生成することで、例えば図式表示を一括して機械語プログラムに変換するこ
とである。
【００５２】
トレース開始、終了の設定をシーケンスプログラムメモリ４のアドレスを使用
して実施することは前述の場合と同様である。
【００５３】
ただ、コンパイラ方式の場合では、シーケンスプログラムメモリ４内のコード
から元のシーケンス命令の内容やデータ形を判別することが困難なので、データ
トレース回路９ではトレースを開始した後は、データメモリ５への全てのアクセ
スについて、アドレスとデータ及び読み出し／書込みの別を組にしてトレースバ
ッファに書き込むものとする。この様子を図５に示す。
【００５４】
前記のデータの組はモニタ装置２０に送り、モニ夕装置２０側でモニタ中のプ
ログラム内容と照合することによってデータ形の判別や必要なデータの抽出を行
いモニタに使用するものとする。
【００５５】
上述のように構成することにより、コンパイラ方式のシーケンスプログラムの
実行においても実時間でのモニタが可能となる。
【００５６】
＜第３の実施形態＞
次に、第３の実施形態について、具体的に説明するが、第３の実施形態の構成
は図２においてデータトレース回路９を省略したものである。従って、この場合
はデータトレースをハードウェアではなく、ソフトウェアで実行する。もともと
、マイクロプロセッサはシーケンスプログラムをソフトウェアで実行しているの
であるが、モニタ範囲のシーケンスブログラムを実行するときには通常のシーケ
ンスプログラム処理用のプログラムとは異なるデータトレース時専用のプログラ
ムに切り替えて実行する。データトレース時専用のプログラムではシーケンスプ
ログラムのオペランドとなる変数データをデータメモリ５との間で入出力する際
に、そのデータをワークメモリ３などに設定したトレースバッファに格納するよ
うにプログラミングされている。
【００５７】
このように構成することにより、特別なハードウェアを使用することなく、実
時間でのモニタが可能となる。もちろん、この方法は、データトレース回路９を
使用する方式に比較してシーケンスプログラム処理時間が長くなる、という欠点
がある。
【００５８】
＜第４の実施形態＞
次に、第４の実施形態について、具体的に説明する。インタプリタ方式でシーケ
ンスプログラムを実行する場合には、図６に示すようにシーケンス命令に対応し
た処理プログラムがプログラムメモリ２内に用意されている。
【００５９】
実時間でのモニタを実行するために、この処理プログラムを２種類設けるもの
とする。一つは通常のシーケンス処理プログラムであり、他方はシーケンスプロ
グラムの実行と並行してデータのトレースを実行する処理を含んだプログラムで
ある。
【００６０】
ＣＰＵ１がシーケンスプログラムをシーケンスプログラムメモリ４から１命令
分読み出して解釈し、プログラムメモリ２中の対応する処理プログラムを呼び出
す場合に、このシーケンスプログラムがモニタ対象となっている、という情報（
フラグなど）を使用してプログラムメモリ２からの呼び出しアドレスにオフセッ
トを設定してデータトレース用の処理プログラムが呼び出されるように構成する
。
【００６１】
このようにすることにより、インタプリタ方式のシーケンスプログラムにおい
て実時間のモニタが可能となる。
【００６２】
＜第５の実施形態＞
次に、第５の実施形態について、図７を使用して具体的に説明する。コンパイラ
方式でシーケンスプログラムを実行する場合には、ユーザが作成したシーケンス
プログラムをコンパイルする際に通常の処理用と、データトレース用の２種類の
コンパイルプログラムを作成しておく。２つのシーケンスプログラムは適当な大
きさを単位として分割しておき、モニタ実行はこのブロック単位で実行するよう
に構成する。
【００６３】
通常のシーケンスプログラムを実行中にモニタ対象となっているブロックに入
ったときには、そこでデータトレース用プログラムのルーチンにジャンプしてデ
ータトレースを命令処理と並行して実施し、データをトレースバッファに格納す
る。そして、モニタ対象のブロックの実行を終了したときには再び通常の処理プ
ログラムのブロックに戻るようにする。
【００６４】
このように構成することにより、データトレース用のプログラムでは必要なデ
ータ数や形が分かっているので効率の良い実時間でのモニタが可能となる。
【００６５】
＜第６の実施形態＞
次に第６の実施形態について、具体的に説明する。シーケンスプログラム中に
ループ実行等の繰り返し実行要素があると、その部分のデータだけが繰り返しト
レースされることになるが、モニタ装置２０での表示では１種類のデータしか表
示できないので、着目した実行タイミングでのデータだけが必要となる。
【００６６】
ここでは、図２のデータトレース回路９を使用して動作を説明する。モニタ範
囲のシーケンスプログラム中に繰り返し実行部分があるときは、ＣＰＵ１はモニ
タ開始後、繰り返し部分のプログラムの先頭アドレスをデータトレース回路９の
アドレスマッチレジスタ９５に設定し、繰り返し回数をループカウンタ９０に設
定する。シ−ケンースプログラムがこの命令を実行しようとしたときに、アドレ
ス比較回路９２とトレース制御回路９１は繰り返し演算であることを検出してこ
のアドレスの実行ごとにループカウンタ９０を減算し始める。
【００６７】
そして、実行回数がＣＰＵ１からの指定回数になったときにだけデータトレー
スを実行するように制御するのである。繰り返し処理の部分が複数個ある場合に
は１個の繰り返し処理部分を実行後、繰り返しＣＰＵ１からアドレスマッチレジ
スタ９５に次の繰り返し部分の先頭アドレスを設定することにより、上記と同様
に処理可能である。
【００６８】
このようにして繰り返し実行部分が存在しても実時間のモニタが可能となる。
【００６９】
＜第７の実施形態＞
次に、第７の実施形について、具体的に説明する。シーケンスプログラム中に
ジャンプ命令が存在するときには、通常の方法でデータトレースを実行すると、
モニタ時にデータとプログラムの表示が一致しなくなるという問題が生じる。
【００７０】
そこで、本実施形態のデータトレース回路９ではトレース制御回路９１がジャ
ンプ命令の実行を検出すると、そのときのシーケンスプログラムメモリ４のアド
レスと、ジャンプ先のアドレスをアドレストレースメモリ９９に格納するように
制御する。
【００７１】
こうすることにより、モニタ装置２０側でアドレストレースメモリ９９の内容
とモニタ中のプログラム内容を比較することによってトレースデータをモニタ表
示中のプログラムと正しく対応させることが可能となる。
【００７２】
＜第８の実施形態＞
次に第８の実施形態について、具体的に説明する。図２及び図３に示すように
データトレース回路９ではデータメモリ５に入出力されたデータをメモリの語長
に合わせてトレースするのではなく、シーケンス命令の種別から使用するデータ
形を判定してトレースバッファに格納するように構成している。つまり、ビット
データをオペランドとする命令を実行している場合には、データメモリ５に対し
てワード単位でのアクセスが発生したとしても、命令コードを解釈して必要なビ
ットデータを抽出し、そのデータだけをビットトレースメモリ９７に格納する。
【００７３】
このように構成することにより、トレースデータ量を削減し、モニタ装置２０
へのデータ伝送量を削減して高速のモニタを可能にしている。
【００７４】
＜第９の実施形態＞
次に、第９の実施形態について、具体的に説明する。一般にシーケンスプログ
ラムのスキャン実行時間はモニタ装置２０とのデータ転送時間に比較すると大変
に短く、スキャン毎のトレースデータをモニタ装置２０に伝送することには無理
がある。また、モニタ装置２０に全スキャン分のデータが表示されても高速すぎ
て確認はほとんど不可能である。それでも連続したスキャン実行の結果を確認し
たい、という要求は存在する。
【００７５】
そこで、本実施形態のデータトレース回路９ではシーケンスプログラムの連続
したスキャン実行でのデータトレースを可能としている。これは、１スキャン分
のデータトレースが完了した後も、ＣＰＵ１に割込み信号を送らず、所望のスキ
ャン分の実行完了後に割込みを発生させることによって実現する。データトレー
スレジスタやアドレストレースレジスタには１スキャン完了毎に境界を示す特別
なコードを書き込み、モニタ装置側でスキャンの境界を判別できるように構成す
る。
【００７６】
このようにすることにより、複数スキャン分のデータトレースが可能となる。
【図面の簡単な説明】
【００７７】
【図１】本発明のプログラマブルコントローラを説明するためのブロック図。
【図２】図１のデータトレース回路を説明するための図。
【図３】図１の動作を説明するための図であって、インタプリタ方式のプログラム実行を説明する図。
【図４】図１の動作を説明するための図であって、コンパイラ方式のプログラム実行を説明する図。
【図５】図１の動作を説明するための図であって、データトレースの様子を説明する図。
【図６】図１の動作を説明するための図であって、インタプリタ方式でのプログラムメモリの構成を説明する図。
【図７】図１の動作を説明するための図であって、コンパイラ方式でのシーケンスプログラムメモリの構成を説明する図。
【図８】従来のコントローラでのプログラムモニタの状態を説明するための図。
【符号の説明】
【００７８】
１…マイクロプロセッサ（ＣＰＵ）、２…プログラムメモリ、３…ワークメモリ
、４…シーケンスプログラムメモリ、５…データメモリ、６…マイコンバス、７…Ｉ／Ｏ、８…通信インタフェース、９…データトレース回路、９０…ループカウンタ、９１…トレース制御回路、９２…アドレス比較回路、９３…トレース開始アドレスレジスタ、９４…トレース終了アドレスレジスタ、９５…アドレスマッチレジスタ、９６…トレースカウンタ、９７…ビットトレースメモリ、９８…ワードトレースメモリ、９９…アドレストレースメモリ、１０…割込み信号、  ２０…モニタ装置。
【図１】
2005115969.tif 000003
【図２】
2005115969.tif 000004
【図３】
2005115969.tif 000005
【図４】
2005115969.tif 000006
【図５】
2005115969.tif 000007
【図６】
2005115969.tif 000008
【図７】
2005115969.tif 000009
【図８】
2005115969.tif 000010