(57)【特許請求の範囲】
【請求項１】
演算論理装置と複数個のレジスタとを備えるとともにシーケンスプログラムを実行するプロセッサを有し、開始命令の前に特定条件が成立すると開始命令の後に開始命令と対になる終了命令までの命令を非実行にするマスタコントロール命令をシーケンスプログラムに用いることができるプログラマブルコントローラにおいて、マスタコントロール命令の開始命令と終了命令とはそれぞれ命令番号を有するとともに同じ命令番号を有する開始命令と終了命令とを対とし、開始命令の入力時に設定したフラグを保持するフラグ保持用レジスタと、開始命令の入力時に入力された命令番号を取り込んでフラグが解除されるまで保持する命令番号用レジスタと、終了命令の入力時に入力された命令番号と命令番号用レジスタに保持されている命令番号とを比較し両者が一致すればフラグ保持用レジスタのフラグを解除する比較器とがプロセッサに設けられていることを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項２】
前記命令番号用レジスタをプロセッサに２組設け、外部からの割り込み信号が有るときと無いときとの各命令番号を各命令番号用レジスタにそれぞれ格納することを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項３】
外部からの割り込み信号の有無に応じて各命令番号用レジスタに保持された命令番号を択一的に選択して出力させるセレクタが付加され、前記命令番号用レジスタの一方は、外部からの割り込み信号が無いと開始命令の入力時に入力された命令番号を取り込んでフラグが解除されるまで保持し、前記命令番号用レジスタの他方は、外部からの割り込み信号が有ると開始命令の入力時に入力された命令番号を取り込んでフラグが解除されるまで保持し、前記比較器は、終了命令の入力時に入力された命令番号とセレクタにより選択された命令番号とを比較し両者が一致すればフラグ保持用レジスタのフラグを解除することを特徴とする請求項２記載のプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、開始命令の前に特定条件が成立すると開始命令の後に開始命令と対になる終了命令までのすべての命令を非実行にするマスタコントロール命令をシーケンスプログラムで用いることができるプログラマブルコントローラに関するものである。
【０００２】
【従来の技術】
従来より、図３に示す構成のプログラマブルコントローラが提供されている。このプログラマブルコントローラは、シーケンスプログラムを格納するプログラムメモリ１と、設備との入出力によって生じるデータを格納するデータメモリ２と、プログラムメモリ１に格納されたシーケンスプログラムを記述したシーケンス命令を実行するビット処理装置（以下、ＢＰＵという）３と、プログラマブルコントローラの全体を統括して制御する中央処理装置（以下、ＣＰＵという）４とを備える。近年、シーケンスプログラムはラダー図により記述されることが多く、プログラムメモリ１には、ラダー図を用いて作成され機械語に翻訳されたプログラムが格納されている。
【０００３】
ＢＰＵ３は、プログラムメモリ１に格納されたシーケンスプログラムを実行し、各シーケンス命令に従ってデータメモリ２にデータを読み書きする。また、ＢＰＵ３におけるシーケンスプログラムの実行および停止は、ＣＰＵ４により指示される。ここに、ＢＰＵ３はシーケンスプログラムを実行するための専用のプロセッサであり、ＣＰＵ４には汎用のプロセッサを用いている。
【０００４】
ここに、ＢＰＵ３の機能をハードウェアとして表現すると図４のようになる。ここでは、命令フェッチ→命令デコード→アドレス演算→データ読出→命令実行という５段のパイプライン制御を行なっている。すなわち、命令フェッチでは、プログラムカウンタＰＣの出力を加算器ＡＤＤ1 で順次インクリメントすることによって、プログラムメモリ１からシーケンス命令を順次読み出しレジスタＩＲを通して命令デコーダ１１に入力する。また、命令デコードでは、命令デコーダ１１で命令をデコードし、実行、停止、読出の各命令とアドレスおよび一般命令とにデコードする。アドレスおよび一般命令のうちアドレスの部分は、アドレス演算によって、加算器ＡＤＤ2 によりオフセット値と加算されて絶対アドレスとして出力される。また、一般命令はオペコードとして演算処理部ＰＵに入力される。命令デコーダ１１で読出命令があればデータメモリ２は読出許可状態になり、データメモリ２のデータのうちアドレス演算により求められたアドレスのデータが読み出される。すなわち、データ読出が行なわれる。このデータは演算処理部ＰＵに入力され、オペコードに従って演算処理され、結果が出力される。すなわち、命令の実行が行なわれる。また、オペコードによりデータの書込が指示されていれば、演算処理部ＰＵは書込アドレスと書込命令とを出力して、データメモリ２に所要のデータを書込む。
【０００５】
演算処理部ＰＵでは命令デコーダ１１の出力により実行が許可されているときには上述のように命令を実行するが、実行の停止が指示されたときには実行を停止する。また、外部（ここではＣＰＵ４）からの割り込み信号ＩＮＴを受けることにより、割り込みに対応した処理を行なうこともある。
ところで、プログラマブルコントローラには、マスタコントロール命令と称するシーケンス命令の用意されているものがある。マスタコントロール命令は、開始命令と終了命令とを対にして用いられる。いま、開始命令をＭＣＲｎ（ｎは命令番号）、終了命令をＭＣＥｎとし、ラダー図において図５（ａ）のように、マスタコントロール命令の開始命令ＭＣＲｎと終了命令ＭＣＥｎとを記述しているものとすると、このシーケンスプログラムは次のように実行される。ここで、図５（ａ）におけるＸＡは接点を示し、ＰＢは何らかのシーケンスプログラムが記述されていることを示す。
【０００６】
まず、接点ＸＡがオフになるという条件が成立すると、開始命令ＭＣＲｎが実行され、開始命令ＭＣＲｎの実行中であることを示すフラグがＢＰＵ３に設定される。このフラグは終了命令ＭＣＥｎが実行されるまで設定状態になっている。つまり、命令番号ｎの一致する開始命令ＭＣＲｎと終了命令ＭＣＥｎとが対になり、上記フラグは、開始命令ＭＣＲｎが実行された後に、その開始命令ＭＣＲｎと同じ命令番号を有する終了命令ＭＣＥｎが実行されるまで設定状態になる。フラグの設定状態では、開始命令ＭＣＲｎと終了命令ＭＣＥｎとの間のシーケンスプログラムＰＢは基本的に非実行となる。つまり、実質的に図５（ｂ）のシーケンスプログラムと等価になる。したがって、マスタコントロール命令は、一部のシーケンスプログラムＰＢをモジュールとして一括して実行、停止を制御したい場合に有効である。
【０００７】
【発明が解決しようとする課題】
ところで、マスタコントロール命令を用いるには、開始命令ＭＣＲｎの実行から終了命令ＭＣＥｎの実行までの間は命令番号ｎを保持しておく必要がある。従来は、この命令番号ｎを格納しておく領域をＢＰＵ３とは異なる外部メモリ上に確保していた。すなわち、図４に示した構成においては、演算処理部ＰＵによって開始命令ＭＣＲｎを実行してフラグを設定すると、データメモリ２の特定アドレスに命令番号ｎを書き込むことによって、終了命令ＭＣＥｎが実行されるまでの間に命令番号ｎを保持させていた。マスタコントロール命令における開始命令ＭＣＲｎは、命令フェッチ→命令デコード→アドレス演算→データ読出→命令実行→命令番号書込という手順になる。つまり、通常の制御が５段のパイプライン制御であるとすれば、マスタコントロール命令に対応するには命令番号書込の制御が加わることによって６段のパイプライン制御を要することになる。要するに、パイプライン制御においては１段余分な制御が必要になるのである。
【０００８】
また、シーケンスプログラムに割り込み処理を記述している場合には、マスタコントロール命令を用いると処理の流れが図６のようになる。すなわち、割り込み要求があると（Ｓ１０１）、演算処理部ＰＵを一旦停止させ（Ｓ１０２）、プログラムカウンタＰＣの出力値や他の所要データの退避に加えて、マスタコントロール命令の命令番号ｎおよびフラグを退避することになる（Ｓ１０３）。その後、割り込み処理に必要な値をプログラムカウンタＰＣにセットして、マスタコントロール命令のフラグを消去する（Ｓ１０４）。このように割り込み処理の準備が整ってから演算処理部ＰＵを再び起動し（Ｓ１０５）、割り込み処理を実行する（Ｓ１０６）。割り込み処理が終了すれば（Ｓ１０７）、演算処理部ＰＵを一旦停止させて退避していたデータを復帰させた後（Ｓ１０８）、演算処理部ＰＵを再起動する（Ｓ１０９）。
【０００９】
上記説明から明らかなように、マスタコントロール命令を実行させようとすると、他の命令のみの場合に比較してパイプライン制御の段数が１段（つまり、クロック信号の１サイクル分）多くなり、結果的に実行時間の増加という問題が生じる。また、割り込み処理を可能にする場合には、マスタコントロール命令の命令番号およびフラグの退避と消去、並びに命令番号およびフラグの復帰が必要になるから、それだけ処理時間が長くなり、実行速度が低下することになる。
【００１０】
本発明は上記事由に鑑みて為されたものであり、パイプライン制御に際して制御段数の増加がなく、また割り込み処理に際しても処理速度の低下が生じないようにしたプログラマブルコントローラを提供することにある。
【００１１】
【課題を解決するための手段】
請求項１の発明では、演算論理装置と複数個のレジスタとを備えるとともにシーケンスプログラムを実行するプロセッサを有し、開始命令の前に特定条件が成立すると開始命令の後に開始命令と対になる終了命令までの命令を非実行にするマスタコントロール命令をシーケンスプログラムに用いることができるプログラマブルコントローラにおいて、マスタコントロール命令の開始命令と終了命令とはそれぞれ命令番号を有するとともに同じ命令番号を有する開始命令と終了命令とを対とし、開始命令の入力時に設定したフラグを保持するフラグ保持用レジスタと、開始命令の入力時に入力された命令番号を取り込んでフラグが解除されるまで保持する命令番号用レジスタと、終了命令の入力時に入力された命令番号と命令番号用レジスタに保持されている命令番号とを比較し両者が一致すればフラグ保持用レジスタのフラグを解除する比較器とをプロセッサに設けている。
【００１３】
請求項１の発明では、上述のようにプロセッサに設けたフラグ保持用レジスタと命令番号用レジスタと比較器とにより、マスタコントロール命令の実行を管理するデータを保持するから、マスタコントロール命令の実行を管理するデータをプロセッサの外部に設けたメモリに書き込む処理が不要であって、プロセッサの内部での通常の命令実行と同様の処理になる。すなわち、パイプライン制御を行なうとすれば、従来ではマスタコントロール命令の実行には通常の命令の実行に対して１段多くの処理を要していたのに対して、プロセッサの内部処理とすることで通常の命令の処理に比較して段数が増加することがないのである。
【００１４】
請求項２の発明では、前記命令番号用レジスタをプロセッサに２組設け、外部からの割り込み信号が有るときと無いときとの各命令番号を各命令番号用レジスタにそれぞれ格納する。
【００１５】
請求項３の発明では、外部からの割り込み信号の有無に応じて各命令番号用レジスタに保持された命令番号を択一的に選択して出力させるセレクタが付加され、前記命令番号用レジスタの一方は、外部からの割り込み信号が無いと開始命令の入力時に入力された命令番号を取り込んでフラグが解除されるまで保持し、前記命令番号用レジスタの他方は、外部からの割り込み信号が有ると開始命令の入力時に入力された命令番号を取り込んでフラグが解除されるまで保持し、前記比較器は、終了命令の入力時に入力された命令番号とセレクタにより選択された命令番号とを比較し両者が一致すればフラグ保持用レジスタのフラグを解除する。
【００１６】
請求項２、３の発明では、マスタコンロール命令の実行を管理するための命令番号用レジスタを２組設け、一方の命令番号用レジスタは、割り込み信号が有るときのデータの格納に用い、他方の命令番号用レジスタは、割り込み信号の無いときのデータの格納に用いるから、請求項１の発明の機能に加えて割り込み信号が有るときにも、マスタコントール命令をプロセッサの内部処理とすることができ、マスタコントール命令についてはメモリへの情報の退避が不要になることで、処理速度が向上することになる。
【００１７】
【発明の実施の形態】
（実施形態１）
図１は図４に示したＢＰＵ３の構成のうち演算処理部ＰＵに対応する構成を示している。以下の説明では、論理値の０がＬレベルに対応し、１がＨレベルに対応するものとする。
【００１８】
命令デコーダ１１でデコードされたシーケンス命令にマスタコントロール命令の開始命令ＭＣＲｎないし終了命令ＭＣＥｎが含まれていると、それぞれ命令デコーダ１１の出力Ｑ1 ，Ｑ2 の論理値が１になるものとしている。また、命令番号ｎは開始命令ＭＣＲｎと終了命令ＭＣＥｎとで個別に出力Ｑ3 ，Ｑ4 として得られるものとしてある。
【００１９】
マスタコントロール命令の開始命令ＭＣＲｎが起動される条件は前条件が成立する（従来の技術で説明した接点ＸＡがオフになる）ことであるから、前条件が入力される（たとえば、データメモリ２から情報を読み出す）。ここでは、前条件の成立の論理値が０であるものとしているから、反転回路ＮＴ1 において論理値を反転する。反転回路ＮＴ1 の出力はオア回路ＯＲ1 を通してアンド回路ＡＮＤ1 に入力される。アンド回路ＡＮＤ1 には命令デコーダ１１の出力Ｑ1 も入力されており、出力Ｑ1 の論理値が１になると、アンド回路ＡＮＤ1 の出力が立ち上がってＤフリップフロップＦＦのデータ端子への入力値を１にする。ＤフリップフロップＦＦのクロック端子には、別に設けたクロック発生回路からクロック信号ＣＬＫが入力されており、データ端子への入力値が１になると出力値も１になる。ＤフリップフロップＦＦの出力値はマスタコントロール命令が起動されたことを示すフラグＭＣＲＦとして用いられる。また、ＤフリップフロップＦＦの出力値はオア回路ＯＲ1 に戻されるから、フラグＭＣＲＦが保持されることになる。つまり、アンド回路ＡＮＤ1 とＤフリップフロップＦＦとによりフラグ保持用レジスタが構成される。
【００２０】
開始命令ＭＣＲｎに伴う命令番号ｎは出力Ｑ3 として得られるから、セレクタＳＥＬ1 により出力Ｑ3 を選択し、番号用ラッチＬＴ1 に出力Ｑ3 である命令番号ｎをラッチさせる。ここに、セレクタＳＥＬ1 は、クロック信号ＣＬＫの立ち上がりに同期して２入力の一方を選択するものであり、選択信号として入力されているフラグＭＣＲＦが０のときに出力Ｑ3 を選択する。つまり、出力Ｑ3 が発生した時点ではフラグＭＣＲＦは０であって、セレクタＳＥＬ1 で出力Ｑ3 が選択された後にフラグＭＣＲＦが１になる。ラッチＬＴ1 の出力はセレクタＳＥＬ1 の他方の入力となり、フラグＭＣＲＦが１である期間にはセレクタＳＥＬ1 から命令番号ｎが出力されラッチＬＴ1 は命令番号ｎを保持することになる。つまり、セレクタＳＥＬ1 とラッチＬＴ1 とにより命令番号用レジスタが構成される。
【００２１】
上述のようにして、開始命令ＭＣＲｎの実行後には、ＤフリップフロップＦＦによりフラグＭＣＲＦが保持され、ラッチＬＴ1 に命令番号ｎが保持されることになる。
フラグＭＣＲＦは、終了命令ＭＣＥｎがデコードされると１になる出力Ｑ2 とともにアンド回路ＡＮＤ2 に入力され、開始命令ＭＣＲｎのデコード後にフラグＭＣＲＦが１になっている状態で終了命令ＭＣＥｎがデコードされると、アンド回路ＡＮＤ2 の出力の論理値が１になる。このアンド回路ＡＮＤ2 の出力はナンド回路ＮＡＮＤに入力される。
【００２２】
一方、ラッチＬＴ1 に保持されている命令番号ｎ（＝Ｑ3 ）は、終了信号ＭＣＥｎに伴う命令番号ｎ（＝Ｑ4 ）との比較のために比較器ＣＰに入力される。比較器ＣＰでは開始命令ＭＣＲｎと終了命令ＭＣＥｎとの命令番号ｎが一致すると、出力の論理値を１にし、ナンド回路ＮＡＮＤに入力する。
したがって、ナンド回路ＮＡＮＤの出力値は、開始命令ＭＣＲｎの後に終了命令ＭＣＥｎがデコードされ、かつ両者の命令番号ｎが一致するときに０になる。このナンド回路ＮＡＮＤの出力はＤフリップフロップＦＦのリセット端子に入力され、論理値０でＤフリップフロップＦＦの出力であるフラグＭＣＲＦを０にクリアする。
【００２３】
以上説明したように、マスタコントロール命令の開始命令ＭＣＲｎと終了命令ＭＣＥｎとをともに、クロック信号ＣＬＫの１クロックで処理することができるのであって、演算処理部ＰＵにマスタコントロール命令の処理専用の簡単な論理回路を設けるだけで、パイプライン制御の段数を増加させることなくマスタコントロール命令の実行が可能になる。
【００２４】
（実施形態２）
割り込み処理を可能とするには、図２に示すように、図１に示した構成に割り込み処理専用の構成を付加すればよい。すなわち、割り込み処理専用のセレクタＳＥＬ2 およびラッチＬＴ2 を設け、実施形態１で説明した通常処理のラッチＬＴ1 の出力と割り込み処理専用のラッチＬＴ2 の出力とをセレクタＳＥＬ3 により選択するのである。また、割り込み処理の際には割り込み信号ＩＮＴ（割り込みの発生により１になる）が入力されるから、セレクタＳＥＬ1 ，ＳＥＬ2 は割り込み信号ＩＮＴの有無によって開始命令ＭＣＲｎの命令番号ｎである命令デコーダ１１の出力Ｑ3 を、対応するラッチＬＴ1 ，ＬＴ2 に出力する。この構成としては、セレクタＳＥＬ1 ，ＳＥＬ2 への選択信号を、フラグＭＣＲＦと割り込み信号ＩＮＴまたは割り込み信号を反転した信号との論理積としている。つまり、セレクタＳＥＬ1 では割り込み信号ＩＮＴを反転回路ＮＴ2 で反転した信号とフラグＭＣＲＦとの論理積となるアンド回路ＡＮＤ3 の出力を選択信号とし、セレクタＳＥＬ2 では割り込み信号ＩＮＴとフラグＭＣＲＦとの論理積となるアンド回路ＡＮＤ4 の出力を選択信号とする。
【００２５】
したがって、セレクタＳＥＬ1 では、割り込み信号ＩＮＴが発生していないときにフラグＭＣＲＦに対応した選択信号が入力されることになり、セレクタＳＥＬ2 では、割り込み信号ＩＮＴが発生しているときにフラグＭＣＲＦに対応した選択信号が入力されることになる。また、セレクタＳＥＬ3 では、割り込み信号ＩＮＴの発生時にラッチＬＴ2 の出力が選択され、そうでなければラッチＬＴ1 の出力が選択される。ここに、各ラッチＬＴ1 ，ＬＴ2 は、セレクタＳＥＬ3 によって他方のラッチＬＴ1 ，ＬＴ2 の出力が選択されている間にも、それぞれに格納された命令番号ｎを保持しているから、メモリに格納した場合と同様に機能する。他の構成は実施形態１と同様である。
【００２６】
この構成では、割り込み信号ＩＮＴが１になって割り込み処理が要求されると、マスタコンロール命令の割り込み処理に専用化した構成を用いてマスタコントロール命令の処理を行なうから他の構成に負担がかからず、割り込み処理に伴う処理速度の低下が生じないのである。
【００２７】
【発明の効果】
請求項１の発明では、プロセッサに設けたフラグ保持用レジスタと命令番号用レジスタと比較器とにより、マスタコントロール命令の実行を管理するデータを保持するから、マスタコントロール命令の実行を管理するデータをプロセッサの外部に設けたメモリに書き込む処理が不要であって、プロセッサの内部での通常の命令実行と同様の処理になるという効果がある。すなわち、パイプライン制御を行なうとすれば、従来ではマスタコントロール命令の実行には通常の命令の実行に対して１段多くの処理を要していたのに対して、プロセッサの内部処理とすることで通常の命令の処理に比較して段数が増加することがないという利点を有する。
【００２８】
請求項２、３の発明では、マスタコンロール命令の実行を管理するための命令番号用レジスタを２組設け、一方の命令番号用レジスタは、割り込み信号が有るときのデータの格納に用い、他方の命令番号用レジスタは、割り込み信号の無いときのデータの格納に用いるから、請求項１の発明の機能に加えて、割り込み信号が有るときにも、マスタコントール命令をプロセッサの内部処理とすることができ、マスタコントール命令についてはメモリへの情報の退避が不要になることで、処理速度が向上するという利点を有する。
【図面の簡単な説明】
【図１】実施形態１の要部回路図である。
【図２】実施形態２の要部回路図である。
【図３】プログラマブルコントローラの構成例を示す要部のブロック図である。
【図４】図３に示すプログラマブルコントローラに用いるプロセッサの構成を示す概念図である。
【図５】マスタコントロール命令の概念図である。
【図６】割り込み処理を伴うマスタコンロール命令の処理手順を示す流れ図である。
【符号の説明】
ＡＮＤ1   アンド回路
ＡＮＤ2   アンド回路
ＡＮＤ3   アンド回路
ＡＮＤ4   アンド回路
ＣＰ  比較器
ＦＦ  Ｄフリップフロップ
ＩＮＴ  割り込み信号
ＬＴ1   ラッチ
ＬＴ2   ラッチ
ＭＣＲＦ  フラグ
ＮＴ2   否定回路
ＳＥＬ1   セレクタ
ＳＥＬ2   セレクタ
ＳＥＬ3   セレクタ
Ｑ1   開始命令に対応する出力
Ｑ2   終了命令に対応する出力
Ｑ3   開始命令の命令番号
Ｑ4   終了命令の命令番号
【図１】
0003755168.tif 000002
【図２】
0003755168.tif 000003
【図３】
0003755168.tif 000004
【図４】
0003755168.tif 000005
【図５】
0003755168.tif 000006
【図６】
0003755168.tif 000007