(57)【特許請求の範囲】
【請求項１】
実行させるプログラムについて指定されたトレース開始アドレスとトレース終了アドレスとを格納するアドレス格納手段と、
プログラムの実行中における実行アドレスがトレース開始アドレスとトレース終了アドレスとで特定されたトレース範囲内にあるか否かを検出する検出手段と、
前記検出手段により実行アドレスがトレース範囲内にあると検出されている場合にプログラムを実行した演算結果を格納すると共に、プログラムの実行中に実行制御命令により、トレースの範囲外からトレースの範囲内にジャンプした場合には、そのトレース範囲のトレース開始アドレスから飛び先のアドレスまでの相対アドレスを格納し、トレースの範囲内から同一のトレース範囲内にジャンプした場合には、その実行制御命令のアドレスから飛び先のアドレスまでの相対アドレスを格納し、トレースの範囲内からトレース範囲外にジャンプした場合には、その実行制御命令のアドレスからトレース終了アドレスまでの相対アドレスを格納する格納手段と、
を有することを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、鉄鋼プラントや製紙プラント、上下水道システムなどの公共システム、自動車産業の組み立てシステムなどの産業用システム等を制御するために広く使用されているプログラマブルコントローラに関する。
【０００２】
【従来の技術】
従来、プログラマブルコントローラがシーケンスプログラムを実行した実行結果をモニタに表示させる場合には、そのモニタ範囲を予め指定しておくようになっている。具体的には、シーケンスプログラムのモニタ範囲の開始を示すトレース開始アドレスと、モニタ範囲の終了を示すトレース終了アドレスとを例えばユーザが予め指定しておき、シーケンスプログラムが現在実行している実行アドレスがトレース開始アドレスに一致したときに実行結果をメモリへ格納すること（トレース）を開始し、実行アドレスがトレース終了アドレスに一致したときにトレースを終了する。このようにしてメモリに格納された実行結果がモニタに表示される。
【０００３】
このような従来のプログラマブルコントローラにおいては、シーケンスプログラムが値の低いアドレスから値の高いアドレスへ向かって順に実行されるのであれば、トレース開始アドレスとトレース終了アドレスとで特定されたモニタ範囲で正しくトレースが行われ、その実行結果をモニタ表示することができる。
【０００４】
【発明が解決しようとする課題】
ところが、ジャンプ命令、ＩＦ構文命令、ＣＡＳＥ構文命令などの実行制御命令や、ＦＯＲ構文命令、ＷＨＩＬＥ構文命令、ＲＥＰＥＡＴ構文命令などのループ制御命令等の制御命令が実行された場合には、以下に示すようにトレース範囲内であっても実行結果がトレースされないケースが生じていた。
【０００５】
図８は、ジャンプ命令が記述されたシーケンスプログラム８１を示す図である。同図のシーケンスプログラム８１は、実行アドレスがトレース範囲外にあるジャンプ命令８２によりトレース範囲内にあるラベル命令８３までジャンプするプログラムの一例である。このようなプログラムにおいては、実行アドレスがトレース開始アドレスに一致することなくトレース範囲内に入ってしまうため、プログラマブルコントローラは実行アドレスがトレース範囲に入ったことを認識できず、ラベル命令８３以降の実行結果についてはトレース範囲内のものであってもトレースされないので、その実行結果をモニタ表示することができなかった。
【０００６】
図９は、ジャンプ命令が記述された別のシーケンスプログラム９１を示す図である。同図のシーケンスプログラム９１は、実行アドレスがトレース範囲内にあるジャンプ命令９２により同じトレース範囲内にあるラベル命令９３までジャンプするプログラムの一例である。このようなプログラムにおいては、ジャンプ命令により記述命令の一部を飛び越した場合には、トレース開始アドレスを認識したことが解除されてしまうため、ラベル命令９３以降の実行結果についてはトレース範囲内のものであってもトレースされず、その実行結果をモニタ表示することができなかった。
【０００７】
なお、図８、図９を用いて説明したことは、ジャンプ命令の他、ＩＦ構文命令やＣＡＳＥ構文命令などその他の実行制御命令が実行された場合も同様であった。
【０００８】
図１０は、ＦＯＲ構文命令が記述されたシーケンスプログラム１１０を示す図である。同図のシーケンスプログラム１１０は、トレース範囲内にあるＦＯＲ構文命令１２０およびＦＯＲ構文終了ラベル命令１３０により特定されたループ処理を行なうプログラムの一例である。このようなプログラムにおいては、ＦＯＲ構文命令１２０の第１ループ目を実行した段階でトレース開始アドレスを認識したことが解除されてしまうため、第１ループ以降の実行結果についてはトレース範囲内のものであってもトレースされず、その実行結果をモニタ表示することができなかった。これは、ＦＯＲ構文命令の他、ＷＨＩＬＥ構文命令やＲＥＰＥＡＴ構文命令などその他のループ制御命令が実行された場合も同様であった。
【０００９】
本発明は、上記に鑑みてなされたものであり、その目的とするところは、制御命令に起因するトレースの制約をなくし、トレース範囲における実行結果を確実にトレース可能とすることにより、その実行結果をモニタに表示させた場合にはシーケンスプログラムの監視性やデバッグ効率を向上させ得るプログラマブルコントローラを提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、本発明に係るプログラマブルコントローラは、実行させるプログラムについて指定されたトレース開始アドレスとトレース終了アドレスとを格納するアドレス格納手段と、プログラムの実行中における実行アドレスがトレース開始アドレスとトレース終了アドレスとで特定されたトレース範囲内にあるか否かを検出する検出手段と、前記検出手段により実行アドレスがトレース範囲内にあると検出されている場合にプログラムを実行した演算結果を格納すると共に、プログラムの実行中に実行制御命令により、トレースの範囲外からトレースの範囲内にジャンプした場合には、そのトレース範囲のトレース開始アドレスから飛び先のアドレスまでの相対アドレスを格納し、トレースの範囲内から同一のトレース範囲内にジャンプした場合には、その実行制御命令のアドレスから飛び先のアドレスまでの相対アドレスを格納し、トレースの範囲内からトレース範囲外にジャンプした場合には、その実行制御命令のアドレスからトレース終了アドレスまでの相対アドレスを格納する格納手段と、を有することを要旨とする。
【００１１】
本発明にあっては、プログラムを実行中の実行アドレスがトレース開始アドレスとトレース終了アドレスとで特定されたトレース範囲にあると検出されている限りはプログラムの演算結果を格納していくようにしたことで、制御命令の実行に関係なくトレース範囲における演算結果を確実にトレースすることができる。
【００１５】
また本発明にあっては、トレース範囲外からトレース範囲内にジャンプした場合にはトレース開始アドレスから飛び先のアドレスまでの相対アドレスを格納し、トレース範囲内から同一のトレース範囲内にジャンプした場合には実行制御命令のアドレスから飛び先のアドレスまでの相対アドレスを格納し、トレースの範囲内からトレース範囲外にジャンプした場合にはその実行制御命令のアドレスから少なくともトレース終了アドレスまでの相対アドレスを格納するようにしたことで、ジャンプの前後における演算結果の他、ジャンプすることによって未実行となった部分の相対アドレスについて確認することができる。
【００１６】
なお、トレースの範囲内からトレース範囲外にジャンプした場合にはその実行制御命令のアドレスから飛び先のアドレスまでの相対アドレスを格納するようにしてもよい。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。
【００２１】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係るプログラマブルコントローラの構成を示す図である。同図のプログラマブルコントローラは、指示されたシーケンスプログラムのトレースを開始するアドレス（ＴＳＲ）を格納するトレース開始アドレス格納部１１と、トレースを終了するアドレス（ＴＥＲ）を格納するトレース終了アドレス格納部１２と、シーケンスプログラムの実行中における実行アドレス（ＰＣ）を格納する実行アドレス格納部１３と、これらのアドレス格納部１１乃至１３に格納されているアドレスの値の大小を比較するアドレス比較部１４と、アドレス比較部１４の比較結果に基づいてトレースの開始および終了を指示するトレース制御部１５と、シーケンスプログラムを値の低いアドレスから値の高いアドレスへ向かって順に実行するとともにアドレス比較部１４およびトレース制御部１５からの指示に従ってトレース範囲内でのシーケンスプログラムの実行結果を図示していないトレースバッファに格納する制御用プロセッサ１６とを有する構成である。
【００２２】
アドレス比較部１４は、上記の比較結果に基づいてＴＳＲ・ＰＣ比較信号１ｂおよびＴＥＲ・ＰＣ比較信号１ｃをトレース制御部１５に送信し、トレースを許可するトレース許可信号１ａをトレース制御部１５と制御用プロセッサ１６に送信する。ＴＳＲ・ＰＣ比較信号１ｂは、トレース開始アドレス（ＴＳＲ）と実行アドレス（ＰＣ）とを比較してＴＳＲ≦ＰＣの条件が成立している場合には”１”となり、ＴＳＲ＞ＰＣの場合には”０”となる。ＴＥＲ・ＰＣ比較信号１ｃは、トレース終了アドレス（ＴＥＲ）と実行アドレス（ＰＣ）とを比較してＴＥＲ＜ＰＣの条件が成立している場合には”１”となり、ＴＥＲ≧ＰＣの場合には”０”となる。トレース許可信号１ａは、ＴＳＲ≦ＰＣ＜ＴＥＲの条件が成立している場合には”１”となり、この条件が未成立の場合には”０”となる。
【００２３】
トレース制御部１５は、アドレス比較部１４からのＴＳＲ・ＰＣ比較信号１ｂとＴＥＲ・ＰＣ比較信号１ｃとに基づいてトレース開始信号１ｄとトレース終了信号１ｅとを生成して制御用プロセッサ１６に送信する。トレース開始信号１ｄは、ＴＳＲ・ＰＣ比較信号１ｂが”０”から”１”へ変化した場合に”１”となり、トレース終了信号１ｅは、ＴＥＲ・ＰＣ比較信号１ｃが”０”から”１”へ変化した場合に”１”となる。
【００２４】
制御用プロセッサ１６は、トレース開始信号１ｄが”１”となったときにトレースを開始し、トレース許可信号１ａが”１”である限り制御命令の実行に関係なく以降のシーケンスプログラムの実行結果をトレースバッファに格納していく。そして、トレース終了信号１ｅが”１”となったときに実行結果をトレースバッファへ格納することを終了する。
【００２５】
以下、本プログラマブルコントローラの動作について図２乃至図５を用いて詳細に説明する。
【００２６】
図２は、ジャンプ命令が記述されたシーケンスプログラム２１を実行した様子を示す図である。シーケンスプログラム２１は、プログラムの実行アドレス（ＰＣ）がトレース範囲外にあるジャンプ命令２２によりトレース開始アドレス（ＴＳＲ）２４を超えてトレース範囲内にあるラベル命令２３までジャンプするプログラムの一例である。
【００２７】
ジャンプ命令２２が実行されることにより、実行アドレス（ＰＣ）はジャンプ命令２２のアドレスからラベル命令２３のアドレスにジャンプすることとなるが、トレース範囲に入ったところでアドレス比較部１４及びトレース制御部１５によりトレース許可信号１ａとトレース開始信号１ｄがそれぞれ”１”となる。
【００２８】
制御用プロセッサ１６は、トレース開始アドレス（ＴＳＲ）２４からラベル命令２３の直後に実行される命令Ｊまでの相対アドレスをトレースバッファ２６に格納した後、ラベル命令２３以降の実行結果をトレースバッファ２６に格納していく。そして、実行アドレス（ＰＣ）がトレース終了アドレス（ＴＥＲ）２５を超えたとき、すなわちトレース終了信号１ｅが”１”となったときに実行結果の格納を終了する。
【００２９】
図３は、ジャンプ命令が記述された別のシーケンスプログラム３１を実行した様子を示す図である。シーケンスプログラム２１は、実行アドレス（ＰＣ）がトレース開始アドレス（ＴＳＲ）３４とトレース終了アドレス（ＴＥＲ）３５とで特定されたトレース範囲内にあるジャンプ命令３２により同じトレース範囲内にあるラベル命令３３までジャンプするプログラムの一例である。
【００３０】
シーケンスプログラム３１がトレース開始アドレス（ＴＳＲ）３４の前方から順次実行されていき、実行アドレス（ＰＣ）の値がトレース開始アドレス（ＴＳＲ）３４の値以上となったときにアドレス比較部１４及びトレース制御部１５によりトレース許可信号１ａとトレース開始信号１ｄがそれぞれ”１”となる。
【００３１】
制御用プロセッサ１６は、トレース開始アドレス（ＴＳＲ）３４からその直後に実行される命令Ｄのアドレスまでの相対アドレス（ここでは”０”）をトレースバッファ３６に格納した後、以降の実行結果をトレースバッファ３６に格納していく。ジャンプ命令３２により実行アドレス（ＰＣ）がラベル命令３３までジャンプしたとき、制御用プロセッサ１６は、ジャンプ命令３２からラベル命令３３の直後に実行される命令Ｊまでの相対アドレスをトレースバッファ３６に格納し、ラベル命令３３以降の実行結果をトレースバッファ３６に格納していく。そして、実行アドレス（ＰＣ）がトレース終了アドレス（ＴＥＲ）３５を超えたとき、すなわちトレース終了信号１ｅが”１”となったときに実行結果の格納を終了する。
【００３２】
図４は、ジャンプ命令が記述されたさらに別のシーケンスプログラム４１を実行した様子を示す図である。シーケンスプログラム４１は、実行アドレス（ＰＣ）がトレース開始アドレス（ＴＳＲ）４４とトレース終了アドレス（ＴＥＲ）４５とで特定されたトレース範囲内にあるジャンプ命令４２によりトレース範囲外にあるラベル命令４３までジャンプするプログラムの一例である。
【００３３】
シーケンスプログラム４１がトレース開始アドレス（ＴＳＲ）４４の前方から順次実行されていき、実行アドレス（ＰＣ）の値がトレース開始アドレス（ＴＳＲ）４４の値以上となったとき、アドレス比較部１４及びトレース制御部１５によりトレース許可信号１ａとトレース開始信号１ｄがそれぞれ”１”となる。
【００３４】
制御用プロセッサ１６は、トレース開始アドレス（ＴＳＲ）４４からその直後に実行される命令Ｄのアドレスまでの相対アドレス（ここでは”０”）をトレースバッファ４６に格納し、以降の実行結果をトレースバッファ４６に格納していく。ジャンプ命令４２により実行アドレス（ＰＣ）がラベル命令４３までジャンプしたとき、制御用プロセッサ１６は、ジャンプ命令４２のアドレスからラベル命令４３の直後に実行される命令Ｐのアドレスまでの相対アドレスをトレースバッファ４６に格納する一方、このジャンプ命令４２の実行により実行アドレス（ＰＣ）の値がトレース終了アドレス（ＴＥＲ）４５の値を超え、トレース終了信号１ｅが”１”となるので、実行結果の格納を終了する。
【００３５】
ここで、ジャンプ命令４２のアドレスからラベル命令４３のアドレスまでの相対アドレスに代えて、ジャンプ命令４２のアドレスからトレース終了アドレス（ＴＥＲ）４５までの相対アドレスを格納することとしてもよい。いずれにしても、ジャンプ命令４２のアドレスから少なくともトレース終了アドレス（ＴＥＲ）４５までの相対アドレスは格納されるようにする。
【００３６】
図５は、ジャンプ命令が記述されたさらに別のシーケンスプログラム５１を実行した様子を示す図である。シーケンスプログラム５１は、実行アドレス（ＰＣ）がトレース開始アドレス（ＴＳＲ）５４とトレース終了アドレス（ＴＥＲ）５５とで特定されたトレース範囲内にある条件付きジャンプ命令５２によりトレース範囲外にあるラベル命令５３にジャンプするプログラムの一例である。
【００３７】
シーケンスプログラム５１がトレース開始アドレス（ＴＳＲ）５４の前方から順次実行されていき、実行アドレス（ＰＣ）の値がトレース開始アドレス（ＴＳＲ）５４の値以上となったとき、アドレス比較部１４及びトレース制御部１５によりトレース許可信号１ａとトレース開始信号１ｄがそれぞれ”１”となる。
【００３８】
制御用プロセッサ１６は、トレース開始アドレス（ＴＳＲ）５４からその直後に実行される命令Ｄのアドレスまでの相対アドレス（ここでは”０”）をトレースバッファ５６に格納し、以降の実行結果をトレースバッファ５６に格納していく。条件付きジャンプ命令５２において条件が不成立であった場合、ジャンプは実行せずに相対アドレスとして”０”をトレースバッファ５６に格納し、ジャンプ命令５２のアドレス以降の実行結果をトレースバッファ５６に格納していく。
そして、実行アドレス（ＰＣ）がトレース終了アドレス（ＴＥＲ）５５を超えたとき、すなわちトレース終了信号１ｅが”１”となったときに実行結果の格納を終了する。
【００３９】
したがって、本実施の形態によれば、シーケンスプログラムを実行中の実行アドレス（ＰＣ）がトレース範囲内にあることがアドレス比較部１４およびトレース制御部１５により検出されている限りは制御用プロセッサ１６がプログラムの実行結果をトレースバッファに格納していくようにしたことで、ジャンプ命令の実行に関係なくトレース範囲における実行結果を確実にトレースすることができる。
【００４０】
また、本実施の形態によれば、ジャンプ命令によってトレース範囲外からトレース範囲内へジャンプした場合にはそのトレース範囲のトレース開始アドレスから飛び先のアドレスまでの相対アドレスを格納し、トレース範囲内から同一のトレース範囲内へジャンプした場合にはそのジャンプ命令のアドレスから飛び先のアドレスまでの相対アドレスを格納し、トレース範囲内からトレース範囲外へジャンプした場合にはそのジャンプ命令のアドレスから少なくともトレース終了アドレスまでの相対アドレスを格納するようにしたことで、ジャンプの前後における実行結果の他、ジャンプすることによって未実行となった部分の相対アドレスについて確認することができる。
【００４１】
なお、本実施の形態においては、ジャンプ命令が実行された場合について説明したが、制御命令はジャンプ命令に限られるものではなく、ＩＦ構文命令、ＣＡＳＥ構文命令などの実行制御命令や、ＦＯＲ構文命令、ＷＨＩＬＥ構文命令、ＲＥＰＥＡＴ構文命令などのループ制御命令等が実行される場合にも適用することができる。
【００４２】
［第２の実施の形態］
図６は、本発明の第２の実施の形態に係るプログラマブルコントローラの構成を示す図である。同図のプログラマブルコントローラは、トレース開始アドレス（ＴＳＲ）格納部６１と、トレース終了アドレス（ＴＥＲ）格納部６２と、実行アドレス（ＰＣ）格納部６３と、指定されたループ制御命令の先頭アドレス（ＡＭＲ）を格納する指定アドレス格納部６４と、ループ制御命令のループ範囲において指定されたトレースを行なう階層の深さ値（以下、「トレースカウント値」という）を格納するとともに、ループの実行回数をカウントするトレースループカウンタ（ＬＣＴＲ）６５と、アドレス比較部６６と、トレース制御部６７と、制御用プロセッサ６８と、管理用プロセッサ６９とを有する構成である。
【００４３】
アドレス比較部６６は、実行アドレス（ＰＣ）の値と指定アドレス（ＡＭＲ）の値とを比較し、両者が一致したときにアドレス一致信号６ｄを”１”にして管理用プロセッサ６９に送信する。管理用プロセッサ６９は、アドレス一致信号６ｄが”１”となったときにトレースカウント値をトレースループカウンタ（ＬＣＴＲ）６５に送信する。トレースループカウンタ（ＬＣＴＲ）６５は、トレースカウント値を格納するとともに、ループが１回実行される毎にトレースカウント値から”１”を減算することをトレースカウント値が”０”になるまで継続する。アドレス比較部６６は、このトレースカウント値が０よりも大きい場合に、トレース許可信号６ａやＴＳＲ・ＰＣ比較信号６ｂ、ＴＥＲ・ＰＣ比較信号６ｃを生成する。なお、アドレス比較部６６におけるこれらの信号の生成や、トレース制御部６７、制御用プロセッサ６８における動作は、第１の実施の形態で説明したものと同様であるのでここでは説明を省略する。
【００４４】
図７は、ＦＯＲ構文命令が記述されたシーケンスプログラム７１を実行した様子を示す図である。シーケンスプログラム７１は、ＦＯＲ構文命令７２の直後にトレース開始アドレス（ＴＳＲ）７４が配置され、ＦＯＲ構文命令７２が実質的にトレース開始アドレス（ＴＳＲ）７４とトレース終了アドレス（ＴＥＲ）７５とで特定されたトレース範囲内において実行されるプログラムの一例であり、指定アドレス（ＡＭＲ）７７には、ＦＯＲ構文命令７２の先頭アドレスが指定されている。
【００４５】
シーケンスプログラム７１が指定アドレス（ＡＭＲ）７７の前方から順次実行されていき、実行アドレス（ＰＣ）の値が指定アドレス（ＡＭＲ）７７の値に一致したとき、アドレス一致信号１ｄが”１”となり、管理用プロセッサ６９は、トレースカウント値をトレースループカウンタ（ＬＣＴＲ）６５に送信する。ここでは、トレースカウンタ値が”２”に指定されているものとする。
【００４６】
実行アドレス（ＰＣ）の値がトレース開始アドレス（ＴＳＲ）７４の値以上となったところで、アドレス比較部６６及びトレース制御部６７によりトレース許可信号６ａとトレース開始信号６ｅがそれぞれ”１”となる。
【００４７】
制御用プロセッサ６８は、トレース開始アドレス（ＴＳＲ）７４からその直後に実行される命令Ｇのアドレスまでの相対アドレス（ここでは”０”）をトレースバッファ７６に格納し、以降の実行結果をトレースバッファ７６に格納していく。実行アドレス（ＰＣ）の値がＦＯＲ構文終了ラベル命令７３のアドレスの値に一致しとき、トレースループカウンタ（ＬＣＴＲ）６５は、トレースカウント値を１減算して”１”とする。制御用プロセッサ６８は、実行アドレス（ＰＣ）を命令Ｇに戻してループ制御命令の２回目の実行結果をトレースバッファ７６に格納していく。そして、実行アドレス（ＰＣ）の値が再びＦＯＲ構文終了ラベル命令７３のアドレスの値に一致しとき、トレースループカウンタ（ＬＣＴＲ）６５は、トレースカウント値を１減算して”０”とする。
【００４８】
ここで、制御用プロセッサ６８は、以降のＦＯＲ構文命令７２のループ範囲内での実行結果についてはトレースバッファ７６への格納を停止する。そして、指定回数だけＦＯＲ構文命令７２のループを実行しところでＦＯＲ構文命令を終了し、ＦＯＲ構文終了ラベル命令７３以降の実行結果についてトレースバッファ７６に格納する。ただし、同図においてはＦＯＲ構文終了ラベル命令７３の直後にトレース終了アドレス（ＴＥＲ）７５があり、トレース終了信号６ｆが”１”となるので、実行結果の格納を終了する。
【００４９】
したがって、本実施の形態によれば、ＦＯＲ構文命令を実行する際に、指定された階層についての実行結果がトレースバッファ７６に格納されるようにしたことで、トレースバッファ７６の限られた記憶容量を効率的に使用することができる。
【００５０】
なお、本実施の形態においては、ＦＯＲ構文命令によるループ処理の実行が開始されてからトレースカウンタ値が”０”となるまでの期間に限って、そのループの範囲内における実行結果をトレースバッファに格納することとしたが、ＦＯＲ構文命令の実行開始からトレースカウンタ値が”０”となるまでの期間においてはそのループ範囲における実行結果を格納しないこととして、トレースカウント値が”０”になった後からの実行結果をトレースバッファに格納するようにしてもよい。かかる場合にも上記と同様の効果を得ることができる。
【００５１】
また、本実施の形態においては、ＦＯＲ構文命令が実行された場合について説明したが、ＦＯＲ構文命令に限られるものではなく、ＷＨＩＬＥ構文命令、ＲＥＰＥＡＴ構文命令などの他のループ制御命令が実行された場合にも本発明を適用することができる。
【００５２】
【発明の効果】
以上説明したように、本発明によれば、プログラムを実行中の実行アドレスがトレース開始アドレスとトレース終了アドレスとで特定されたトレース範囲にあると検出されている限りはプログラムの演算結果を格納していくようにしたことで、制御命令の実行に関係なくトレース範囲における演算結果を確実にトレースすることができる。
【００５３】
また本発明によれば、トレース範囲外からトレース範囲内にジャンプした場合にはトレース開始アドレスから飛び先のアドレスまでの相対アドレスを格納し、トレース範囲内から同一のトレース範囲内にジャンプした場合には実行制御命令のアドレスから飛び先のアドレスまでの相対アドレスを格納し、トレースの範囲内からトレース範囲外にジャンプした場合にはその実行制御命令のアドレスから少なくともトレース終了アドレスまでの相対アドレスを格納するようにしたことで、ジャンプの前後における演算結果の他、ジャンプすることによって未実行となった部分の相対アドレスについて確認することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るプログラマブルコントローラの構成を示す図である。
【図２】ジャンプ命令が記述されたシーケンスプログラムを実行した様子を示す図である。
【図３】ジャンプ命令が記述された別のシーケンスプログラムを実行した様子を示す図である。
【図４】ジャンプ命令が記述されたさらに別のシーケンスプログラムを実行した様子を示す図である。
【図５】ジャンプ命令が記述されたさらに別のシーケンスプログラムを実行した様子を示す図である。
【図６】本発明の第２の実施の形態に係るプログラマブルコントローラの構成を示す図である。
【図７】ＦＯＲ構文命令が記述されたシーケンスプログラムを実行した様子を示す図である。
【図８】ジャンプ命令が記述されたシーケンスプログラムを示す図である。
【図９】ジャンプ命令が記述された別のシーケンスプログラムを示す図である。
【図１０】ＦＯＲ構文命令が記述されたシーケンスプログラムを示す図である。
【符号の説明】
１１，６１…トレース開始アドレス（ＴＳＲ）格納部
１２，６２…トレース終了アドレス（ＴＥＲ）格納部
１３，６３…実行アドレス（ＰＣ）格納部
１４，６６…アドレス比較部
１５，６７…トレース制御部
１６，６８…制御用プロセッサ
６４…指定アドレス（ＡＭＲ）格納部
６５…トレースループカウンタ（ＬＣＴＲ）
６９…管理用プロセッサ
１ａ，６ａ…トレース許可信号
１ｂ，６ｂ…ＴＳＲ・ＰＣ比較信号
１ｃ，６ｃ…ＴＥＲ・ＰＣ比較信号
１ｄ，６ｅ…トレース開始信号
１ｅ，６ｆ…トレース終了信号
６ｄ…アドレス一致信号
２１，３１，４１，５１，７１，８１，９１，１１０…シーケンスプログラム
２４，３４，４４，５４，７４…トレース開始アドレス（ＴＳＲ）
２５，３５，４５，５５，７５…トレース終了アドレス（ＴＥＲ）
７７…指定アドレス（ＡＭＲ）
２２，３２，４２，５２，８２，９２…ジャンプ命令
２３，３３，４３，５３，８３，９２…ラベル命令
７２，１２０…ＦＯＲ構文命令
７３，１３０…ＦＯＲ構文終了ラベル命令
【図１】
0004580491.tif 000002
【図２】
0004580491.tif 000003
【図３】
0004580491.tif 000004
【図４】
0004580491.tif 000005
【図５】
0004580491.tif 000006
【図６】
0004580491.tif 000007
【図７】
0004580491.tif 000008
【図８】
0004580491.tif 000009
【図９】
0004580491.tif 000010
【図１０】
0004580491.tif 000011