JPH0731527B2 - プログラマブルコントロ−ラ - Google Patents
プログラマブルコントロ−ラInfo
- Publication number
- JPH0731527B2 JPH0731527B2 JP61244223A JP24422386A JPH0731527B2 JP H0731527 B2 JPH0731527 B2 JP H0731527B2 JP 61244223 A JP61244223 A JP 61244223A JP 24422386 A JP24422386 A JP 24422386A JP H0731527 B2 JPH0731527 B2 JP H0731527B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- sequence
- program
- execution
- stack
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Programmable Controllers (AREA)
Description
【発明の詳細な説明】 〔発明の目的〕 (産業上の利用分野) 本発明はベルトコンベヤやロボットなどを用いた移送装
置や組立装置などのステップシーケンス制御に使用する
プログラマブルコントローラに関するものである。
置や組立装置などのステップシーケンス制御に使用する
プログラマブルコントローラに関するものである。
(従来の技術) 最近IECによりプログラマブルコントローラ(以下PCと
呼ぶ)の標準化言語の1つとして、GRAFCET型のステッ
プシーケンスプログラム言語が提案されている。
呼ぶ)の標準化言語の1つとして、GRAFCET型のステッ
プシーケンスプログラム言語が提案されている。
このステップシーケンスプログラム言語は第3図に示す
ように、処理を記述する複数のステップと、1つのステ
ップから次のステップへの実行の遷移条件を検査するWA
IT命令から成り、現在実行中のステップmの直後のWAIT
命令に付随する遷移条件TRmが成立するまでは次のステ
ップm+1の実行を行わず、遷移条件が成立したときに
前ステップの出力をオフにし、次のステップの処理を実
行する。
ように、処理を記述する複数のステップと、1つのステ
ップから次のステップへの実行の遷移条件を検査するWA
IT命令から成り、現在実行中のステップmの直後のWAIT
命令に付随する遷移条件TRmが成立するまでは次のステ
ップm+1の実行を行わず、遷移条件が成立したときに
前ステップの出力をオフにし、次のステップの処理を実
行する。
このプログラムの特徴はWAIT命令を持ち、WAIT命令に付
随する条件が成立していない間は次のステップの実行を
行わずその条件の判定を繰返し実行することである。
随する条件が成立していない間は次のステップの実行を
行わずその条件の判定を繰返し実行することである。
ステップシーケンス型のPCでは、WAIT命令に付随する条
件が不成立の時にはその条件判定を繰返し実行する必要
がある。例えば第4図に示すようなWAIT命令では、WAIT
の前の演算の結果が“1"の時に、実行が次のステップに
進む。もし、演算結果が“1"でない場合にはX番地の命
令から再実行しなければならない。従って、一群の条件
命令の先頭アドレスを保存しておき、再実行の際にそれ
をプロセッサのプログラムカウンタにロードしなければ
ならない。
件が不成立の時にはその条件判定を繰返し実行する必要
がある。例えば第4図に示すようなWAIT命令では、WAIT
の前の演算の結果が“1"の時に、実行が次のステップに
進む。もし、演算結果が“1"でない場合にはX番地の命
令から再実行しなければならない。従って、一群の条件
命令の先頭アドレスを保存しておき、再実行の際にそれ
をプロセッサのプログラムカウンタにロードしなければ
ならない。
上記の方法では例えば第5図のようにシーケンスユニッ
トを複数持つ並列実行シーケンス(複数のステップが同
時に実行されるように1つのステップから分岐している
シーケンス)を実行する場合には、並列実行可能なシー
ケンスユニットの数だけの再実行アドレスのセーブエリ
アが必要である。
トを複数持つ並列実行シーケンス(複数のステップが同
時に実行されるように1つのステップから分岐している
シーケンス)を実行する場合には、並列実行可能なシー
ケンスユニットの数だけの再実行アドレスのセーブエリ
アが必要である。
またサブルーチンを呼び出す場合には、サブルーチン側
でも並列分岐が可能なので同様に再実行アドレスのセー
ブエリアを必要とする。
でも並列分岐が可能なので同様に再実行アドレスのセー
ブエリアを必要とする。
また第6図に示すようにWAITの前に置かれる条件命令の
先頭アドレスを常に検出し、これを該当するシーケンス
ユニットのセーブエリアに再実行アドレスとして登録し
なければならない。
先頭アドレスを常に検出し、これを該当するシーケンス
ユニットのセーブエリアに再実行アドレスとして登録し
なければならない。
以上に述べたように一般的なステップシーケンスの実行
方法では、実行管理のためのテーブルが大量に必要であ
り、再実行アドレスの登録などのためのOS(オペレーテ
ィングシステム)処理が多くなるが、OSのソフト処理に
は通常マイクロプロセッサを用いているので、高速化に
は限界がある。
方法では、実行管理のためのテーブルが大量に必要であ
り、再実行アドレスの登録などのためのOS(オペレーテ
ィングシステム)処理が多くなるが、OSのソフト処理に
は通常マイクロプロセッサを用いているので、高速化に
は限界がある。
(発明が解決しようとする問題点) 本発明はステップ間の実行遷移条件の演算やステップシ
ーケンスプログラムの分岐処理などをビット演算ハード
ウェアを用いて行うことによってステップシーケンスプ
ログラムを高速で実行できる合理的なプログラマブルコ
ントローラを提供することを目的としている。
ーケンスプログラムの分岐処理などをビット演算ハード
ウェアを用いて行うことによってステップシーケンスプ
ログラムを高速で実行できる合理的なプログラマブルコ
ントローラを提供することを目的としている。
(問題点を解決する為の手段と作用) 本発明のPCはステップシーケンスの各ステップの実行状
態に対応するフラグ(以後BUSYフラグと呼ぶ)と、各ス
テップの実行完了を示すと共に次のステップへの実行の
遷移が可能なことを示す遷移フラグ(以後TRフラグと呼
ぶ)を持ち、またビット演算プロセッサの内部に、シー
ケンスプログラムの分流および合流時の実行状態を記憶
しておく分流スタックおよび合流スタックを持ってい
る。
態に対応するフラグ(以後BUSYフラグと呼ぶ)と、各ス
テップの実行完了を示すと共に次のステップへの実行の
遷移が可能なことを示す遷移フラグ(以後TRフラグと呼
ぶ)を持ち、またビット演算プロセッサの内部に、シー
ケンスプログラムの分流および合流時の実行状態を記憶
しておく分流スタックおよび合流スタックを持ってい
る。
PCはプログラムを先頭から順に実行して行き、アクティ
ブ状態のステップを実行するときにそのステップのBUSY
フラグをセットし、アクティブなステップの直後のWAIT
命令に付随する前ステップから次ステップへの実行の遷
移条件が成立したときWAIT命令によって前ステップのBU
SYフラグをリセットする。
ブ状態のステップを実行するときにそのステップのBUSY
フラグをセットし、アクティブなステップの直後のWAIT
命令に付随する前ステップから次ステップへの実行の遷
移条件が成立したときWAIT命令によって前ステップのBU
SYフラグをリセットする。
遷移条件が不成立のときは実行状態レジスタ(ステップ
間で実行状態を伝えるための1ビットのレジスタ。以後
BRと呼ぶ)を“0"にしたまま以降のプログラムを最後ま
で実行する。不成立であった遷移条件は次のスキャンで
再びチェックされる。
間で実行状態を伝えるための1ビットのレジスタ。以後
BRと呼ぶ)を“0"にしたまま以降のプログラムを最後ま
で実行する。不成立であった遷移条件は次のスキャンで
再びチェックされる。
上記のように同一の遷移条件を繰返しチェックするの
で、一群の条件命令の先頭アドレスを記憶しておいてそ
こから再実行する必要がなく、プログラムの全体を繰返
し実行することによってステップシーケンスの動作を実
現するものであり、これによってOSによる条件命令の先
頭アドレスの検索や、先頭アドレス登録のための複雑な
テーブル操作を不要にし、専用のハードウェアによって
機能の実行を可能にする。
で、一群の条件命令の先頭アドレスを記憶しておいてそ
こから再実行する必要がなく、プログラムの全体を繰返
し実行することによってステップシーケンスの動作を実
現するものであり、これによってOSによる条件命令の先
頭アドレスの検索や、先頭アドレス登録のための複雑な
テーブル操作を不要にし、専用のハードウェアによって
機能の実行を可能にする。
すなわちワード演算プロセッサはPC全体のOSの処理の
他、ビット演算プロセッサが処理できないシーケンス命
令以外の応用命令処理を行う。
他、ビット演算プロセッサが処理できないシーケンス命
令以外の応用命令処理を行う。
ビット演算プロセッサはラダーダイアグラム式のシーケ
ンス命令(論理積,論理和などビット単位の論理演算)
の結果をI/OレジスタやBRに格納する。
ンス命令(論理積,論理和などビット単位の論理演算)
の結果をI/OレジスタやBRに格納する。
プログラムメモリはステップシーケンスプログラムを格
納し、I/Oレジスタは入力用I/Oから入力したデータおよ
び出力用I/Oに出力するデータを格納する。
納し、I/Oレジスタは入力用I/Oから入力したデータおよ
び出力用I/Oに出力するデータを格納する。
BUSYフラグはステップシーケンスの全ステップに対応し
ており、対応するステップがアクティブのときのみセッ
トされる。またTRフラグは対応するステップの実行終了
を示す遷移条件が成立した時にプログラムでセットされ
る。
ており、対応するステップがアクティブのときのみセッ
トされる。またTRフラグは対応するステップの実行終了
を示す遷移条件が成立した時にプログラムでセットされ
る。
BUSYスタックはアクティブなステップのBUSYフラグのア
ドレスを登録しておくためのスタックであり、登録され
たアドレスはステップからステップへの実行の遷移時に
前のアクティブであったステップのBUSYフラグをリセッ
トするためにWAIT命令などで利用され、またBUSYスタッ
クポインタはBUSYスタック内の最新データの位置を示す
のに用いられる。
ドレスを登録しておくためのスタックであり、登録され
たアドレスはステップからステップへの実行の遷移時に
前のアクティブであったステップのBUSYフラグをリセッ
トするためにWAIT命令などで利用され、またBUSYスタッ
クポインタはBUSYスタック内の最新データの位置を示す
のに用いられる。
ビット演算プロセッサの内部には実行状態レジスタ(B
R),分流スタックおよび合流スタックがある。BRはプ
ログラムの各命令の演算結果を格納しておくレジスタで
あり、次の命令の入力となる。
R),分流スタックおよび合流スタックがある。BRはプ
ログラムの各命令の演算結果を格納しておくレジスタで
あり、次の命令の入力となる。
分流スタックはシーケンスの分岐時のBRの状態を時系列
的に記憶しておくための双方向性のシフトレジスタであ
り、最下位のビットに最新のデータが格納されている。
的に記憶しておくための双方向性のシフトレジスタであ
り、最下位のビットに最新のデータが格納されている。
合流スタックは一旦分流したシーケンスの合流時の実行
状態を決定するために各シーケンスの合流点での実行状
態を格納しておくための双方向性シフトレジスタであ
り、最下位ビットに最新のデータが格納されている。
状態を決定するために各シーケンスの合流点での実行状
態を格納しておくための双方向性シフトレジスタであ
り、最下位ビットに最新のデータが格納されている。
(実施例) 本発明の一実施例を第1図に示す。
第1図において、1はワード演算プロセッサ、2はシー
ケンス命令演算用のビット演算プロセッサ、2−1はB
R、2−2は分流スタック、2−3は合流スタック、3
はプログラムメモリ、4はI/Oレジスタ、5はCPUバス、
6はワーキングメモリ、6−1はBUSYスタック、6−2
はBUSYスタックポインタ、6−3はBUSYフラグ、6−4
はTRフラグ、7はI/O、8はI/Oバスである。
ケンス命令演算用のビット演算プロセッサ、2−1はB
R、2−2は分流スタック、2−3は合流スタック、3
はプログラムメモリ、4はI/Oレジスタ、5はCPUバス、
6はワーキングメモリ、6−1はBUSYスタック、6−2
はBUSYスタックポインタ、6−3はBUSYフラグ、6−4
はTRフラグ、7はI/O、8はI/Oバスである。
本発明によるPCで実行されるプログラムの構造の一例を
第2図に示す。
第2図に示す。
第2図に示すように、プログラムは大きく3つの部分に
分けられ、最初の部分(A)は各種の入出力の状態を判
定してTRフラグを設定する部分であり、次の部分(B)
はステップシーケンスプログラムの本体であってステッ
プ間の実行の遷移が行われ、最後部分(C)はステップ
のBUSYフラグの状態を基にして外界への出力を行う部分
であり、これらの3つの部分を先頭から最後まで繰返し
実行することによってステップシーケンスが実現する。
分けられ、最初の部分(A)は各種の入出力の状態を判
定してTRフラグを設定する部分であり、次の部分(B)
はステップシーケンスプログラムの本体であってステッ
プ間の実行の遷移が行われ、最後部分(C)はステップ
のBUSYフラグの状態を基にして外界への出力を行う部分
であり、これらの3つの部分を先頭から最後まで繰返し
実行することによってステップシーケンスが実現する。
次にステップシーケンスプログラムの代表的な機能であ
る単純遷移,選択実行および並列実行について説明す
る。
る単純遷移,選択実行および並列実行について説明す
る。
単純遷移は第3図に示すように、ステップmがアクティ
ブであるとき、WAIT命令に付随する条件TRm(ステップ
mのTRフラグ)が“1"になるとステップmがイナクティ
ブ、ステップm+1がアクティブになるプログラムであ
る。
ブであるとき、WAIT命令に付随する条件TRm(ステップ
mのTRフラグ)が“1"になるとステップmがイナクティ
ブ、ステップm+1がアクティブになるプログラムであ
る。
ステッmがイナクティブのとき、またはステップmがア
クティブでもTRmが“0"の時はステップm+1はアクテ
ィブにならない。
クティブでもTRmが“0"の時はステップm+1はアクテ
ィブにならない。
各ステップ11は第7図に示すように5ワードの命令から
成り、各STEP命令はこの命令が実行される時の実行状態
レジスタBRの内容すなわち入力BRが“1"の時だけワード
演算プロセッサによって処理が行われる。入力BRが“0"
の時はビット演算プロセッサ1はこの命令をNOPとして
読み飛ばす。
成り、各STEP命令はこの命令が実行される時の実行状態
レジスタBRの内容すなわち入力BRが“1"の時だけワード
演算プロセッサによって処理が行われる。入力BRが“0"
の時はビット演算プロセッサ1はこの命令をNOPとして
読み飛ばす。
次のOPR命令はSTEP命令のオペランドであり、ここでは
ステップ番地mを指定している。OPR命令はSTEP命令を
実行する際にワード演算プロセッサが使用するもので、
ビット演算プロセッサはOPR命令を読み飛ばす。
ステップ番地mを指定している。OPR命令はSTEP命令を
実行する際にワード演算プロセッサが使用するもので、
ビット演算プロセッサはOPR命令を読み飛ばす。
次のロード命令 はビット演算プロセッサによってのみ実行される命令で
あり、ステップmのBUSYフラグの内容を実行状態レジス
タにロードする命令である。従ってステップmがアクテ
ィブの時は、このロード命令の次の命令の入力BRは“1"
になり、イナクティブの時は次の命令の入力BRが“0"に
なる。
あり、ステップmのBUSYフラグの内容を実行状態レジス
タにロードする命令である。従ってステップmがアクテ
ィブの時は、このロード命令の次の命令の入力BRは“1"
になり、イナクティブの時は次の命令の入力BRが“0"に
なる。
次のREG命令は入力BRが“1"の時のみワード演算プロセ
ッサで処理が行われる。ワード演算プロセッサはステッ
プmのBUSYフラグアドレスをBUSYスタックに登録し、ス
タックポインタを更新する。入力BRが“0"の時REG命令
はビット演算プロセッサにより読み飛ばされる。
ッサで処理が行われる。ワード演算プロセッサはステッ
プmのBUSYフラグアドレスをBUSYスタックに登録し、ス
タックポインタを更新する。入力BRが“0"の時REG命令
はビット演算プロセッサにより読み飛ばされる。
次のOPR命令はREG命令で登録されるステップmのBUSYフ
ラグアドレスを示しており、ワード演算プロセッサがRE
G命令を実行する時に使用する。REG命令の入力BRが“0"
の時はこの命令もREG命令と同様にビット演算プロセッ
サにより読み飛ばされる。
ラグアドレスを示しており、ワード演算プロセッサがRE
G命令を実行する時に使用する。REG命令の入力BRが“0"
の時はこの命令もREG命令と同様にビット演算プロセッ
サにより読み飛ばされる。
WAIT命令は第8図に示すように2ワードで構成され、A
接点 命令は入力BRと遷移条件の値(主としてTRフラグの内
容)の論理積をとる命令である。従ってステップmがア
クティブで、かつ遷移条件が成立している時のみ次のWA
IT命令の入力BRが“1"になる。A接点命令は常にビット
演算プロセッサにより実行される。
接点 命令は入力BRと遷移条件の値(主としてTRフラグの内
容)の論理積をとる命令である。従ってステップmがア
クティブで、かつ遷移条件が成立している時のみ次のWA
IT命令の入力BRが“1"になる。A接点命令は常にビット
演算プロセッサにより実行される。
WAIT命令は入力BRが“1"の時のみワード演算プロセッサ
によって実行され、入力BRが“0"の時はビット演算プロ
セッサにより読み飛ばされる。
によって実行され、入力BRが“0"の時はビット演算プロ
セッサにより読み飛ばされる。
ワード演算プロセッサはBUSYスタックからBUSYフラグの
アドレスを1個読み出し、そのアドレスのフラグをリセ
ットする。すなわち前のステップのREG命令で登録され
たフラグアドレスはここで使用される。その後スタック
ポインタを1個分戻しておく。入力BRが“1"の時、出力
BRも“1"とする。従って前ステップがイナクティブにな
った時、次のステップの入力BRは“1"となる。そこで次
のステップはアクティブになる。以上のようにして単純
遷移が実行される。
アドレスを1個読み出し、そのアドレスのフラグをリセ
ットする。すなわち前のステップのREG命令で登録され
たフラグアドレスはここで使用される。その後スタック
ポインタを1個分戻しておく。入力BRが“1"の時、出力
BRも“1"とする。従って前ステップがイナクティブにな
った時、次のステップの入力BRは“1"となる。そこで次
のステップはアクティブになる。以上のようにして単純
遷移が実行される。
選択実行は第9図のような形で表わされ、ステップmが
アクティブの時、以降の分岐条件が調べられる。遷移条
件aが成立している時はシーケンスaが、遷移条件bが
成立している時にはシーケンスbが、遷移条件cが成立
している時にはシーケンスcが実行される。合流点にお
いてどれか1つの完了条件が成立していると合流が成立
して次のステップに実行が移る。
アクティブの時、以降の分岐条件が調べられる。遷移条
件aが成立している時はシーケンスaが、遷移条件bが
成立している時にはシーケンスbが、遷移条件cが成立
している時にはシーケンスcが実行される。合流点にお
いてどれか1つの完了条件が成立していると合流が成立
して次のステップに実行が移る。
第9図のシーケンスプログラムは第10図に示す命令語で
構成される。分流命令(BRANCH)はステップmのアクテ
ィブ状態を各分岐シーケンスに伝えるために、BRを分流
スタックにプッシュする命令である。ここでプッシュさ
れた値は後で各シーケンスの先頭で取り出され、BRにロ
ードされる。WAIT命令,ステップ命令は単純遷移で説明
したものと全く同じである。
構成される。分流命令(BRANCH)はステップmのアクテ
ィブ状態を各分岐シーケンスに伝えるために、BRを分流
スタックにプッシュする命令である。ここでプッシュさ
れた値は後で各シーケンスの先頭で取り出され、BRにロ
ードされる。WAIT命令,ステップ命令は単純遷移で説明
したものと全く同じである。
SELSEQ(A)命令は分流シーケンスの先頭に置かれ、分
流スタックの最新値をBRにロードする。分流スタックの
ポップはしない。従ってBRANCH命令でプッシュされた値
は分流スタックの最新値として残っている。また前の列
のシーケンスの完了条件(合流点直前の遷移条件)の演
算結果を合流スタックにプッシュする。この値は後の合
流点で分岐シーケンスの完了チェックに使用される。
流スタックの最新値をBRにロードする。分流スタックの
ポップはしない。従ってBRANCH命令でプッシュされた値
は分流スタックの最新値として残っている。また前の列
のシーケンスの完了条件(合流点直前の遷移条件)の演
算結果を合流スタックにプッシュする。この値は後の合
流点で分岐シーケンスの完了チェックに使用される。
END SELSEQ命令は分岐シーケンスの最後に置かれる。
これは合流スタックから最新値をポップし、BR(シーケ
ンス完了で“1")との論理和をとってBRにロードする。
このように各シーケンスの完了結果は次のシーケンスの
最後でそのシーケンスの完了結果との論理和がとられる
ので、どれか1つのシーケンスが完了すれば、全ての分
岐シーケンスの最後でBRが必ず“1"になり、分岐シーケ
ンスが完了したことが分る。
これは合流スタックから最新値をポップし、BR(シーケ
ンス完了で“1")との論理和をとってBRにロードする。
このように各シーケンスの完了結果は次のシーケンスの
最後でそのシーケンスの完了結果との論理和がとられる
ので、どれか1つのシーケンスが完了すれば、全ての分
岐シーケンスの最後でBRが必ず“1"になり、分岐シーケ
ンスが完了したことが分る。
SELSEQ(B)命令は最も右側の分岐シーケンス(最後の
分岐シーケンス)の先頭に置かれる。これはBRの内容を
合流スタックにプッシュする。またSELSEQ(A)命令と
は異なり、分流スタックの最新値をポップしてBRにロー
ドする。これによりBRにはBRANCH命令でプッシュしたス
テップmのアクティブ状態がロードされ、ここまでの分
岐シーケンスの完了状態の論理和が合流スタックにプッ
シュされたことになる。
分岐シーケンス)の先頭に置かれる。これはBRの内容を
合流スタックにプッシュする。またSELSEQ(A)命令と
は異なり、分流スタックの最新値をポップしてBRにロー
ドする。これによりBRにはBRANCH命令でプッシュしたス
テップmのアクティブ状態がロードされ、ここまでの分
岐シーケンスの完了状態の論理和が合流スタックにプッ
シュされたことになる。
このシーケンスの最後にもEND SELSEQ命令が置かれ
る。ここで合流スタックから最新値をポップし、BR(こ
のシーケンスの完了状態を示している)との論理和をと
ってBRにロードする。このBRの内容はこれまで全ての分
岐シーケンスの完了状態を示している。従ってこの内容
が“1"であれば合流点以下のステップが実行されること
になる。この時アクティブだったステップは完了条件を
チェックしたWAIT命令によってすでにイナクティブにさ
れている。
る。ここで合流スタックから最新値をポップし、BR(こ
のシーケンスの完了状態を示している)との論理和をと
ってBRにロードする。このBRの内容はこれまで全ての分
岐シーケンスの完了状態を示している。従ってこの内容
が“1"であれば合流点以下のステップが実行されること
になる。この時アクティブだったステップは完了条件を
チェックしたWAIT命令によってすでにイナクティブにさ
れている。
なおBRANCH,SELSEQ(A),SELSEQ(B),END SELSEQ命
令は全てビット演算プロセッサによりハードウェアで実
行される。
令は全てビット演算プロセッサによりハードウェアで実
行される。
並列実行は第11図に示すような形式で表わされ、ステッ
プmがアクティブでかつ直後の遷移条件aが成立してい
る時、ステップm+1,m+3,m+5が同時アクティブにな
り、従って並列に実行される。この点が選択実行と異な
る。合流点では直前のステップm+2,m+4,m+6が全て
アクティブで、かつ遷移条件bが成立した時にのみ合流
が完了する。
プmがアクティブでかつ直後の遷移条件aが成立してい
る時、ステップm+1,m+3,m+5が同時アクティブにな
り、従って並列に実行される。この点が選択実行と異な
る。合流点では直前のステップm+2,m+4,m+6が全て
アクティブで、かつ遷移条件bが成立した時にのみ合流
が完了する。
第11図のプログラムの命令後の構成を第12図に示す。ス
テップ命令およびWAIT命令は単純遷移の場合と同じであ
る。またBRANCH命令は選択実行の場合と同じであり、ス
テップmの完了状態を分流スタックにプッシュする。
テップ命令およびWAIT命令は単純遷移の場合と同じであ
る。またBRANCH命令は選択実行の場合と同じであり、ス
テップmの完了状態を分流スタックにプッシュする。
並列実行では選択実行の場合とは異なり、最後のシーケ
ンス以外ではシーケンスの最後に特別の命令はない。PA
RSEQ命令は並列シーケンスの先頭に置かれ、その機能は
SELSEQ命令と同じであり、表示シンボルのみが異なる。
並列シーケンスの最後にだけEND PARSEQ命令が置かれ
る。これはEND PARSEQ(A)とEND PARSEQ(B)命令
に分かれている。END PARSEQ(A)命令は入力BRが
“1"の時のみワード演算プロセッサにより実行される。
オペランドに示された並列シーケンスの数マイナス1個
のデータを合流スタックからポップし、それらの全ての
データとBRの論理積をとってBRにロードする。従って出
力BRが“1"になるのはステップm+2,m+4,m+6が全て
アクティブの時だけである。
ンス以外ではシーケンスの最後に特別の命令はない。PA
RSEQ命令は並列シーケンスの先頭に置かれ、その機能は
SELSEQ命令と同じであり、表示シンボルのみが異なる。
並列シーケンスの最後にだけEND PARSEQ命令が置かれ
る。これはEND PARSEQ(A)とEND PARSEQ(B)命令
に分かれている。END PARSEQ(A)命令は入力BRが
“1"の時のみワード演算プロセッサにより実行される。
オペランドに示された並列シーケンスの数マイナス1個
のデータを合流スタックからポップし、それらの全ての
データとBRの論理積をとってBRにロードする。従って出
力BRが“1"になるのはステップm+2,m+4,m+6が全て
アクティブの時だけである。
次にこのBRを入力として遷移条件bが実行され、条件が
成立すると出力BRが“1"になる。出力BRが“1"のとき次
のEND PARSEQ(B)命令が実行され、“0"の時は実行
されない。また入力BRが“0"の時、END PARSEQ
(A),(B)命令は共にビット演算プロセッサにより
読み飛ばされる。
成立すると出力BRが“1"になる。出力BRが“1"のとき次
のEND PARSEQ(B)命令が実行され、“0"の時は実行
されない。また入力BRが“0"の時、END PARSEQ
(A),(B)命令は共にビット演算プロセッサにより
読み飛ばされる。
END PARSEQ(B)命令は入力BRが“1"の時のみワード
演算プロセッサにより実行される。入力BRが“1"の時、
オペランドで示される並列実行シーケンスの数だけのBU
SYフラグアドレスをBUSYスタックからポップし、そのア
ドレスのプラグをリセットする。これによってステップ
m+2,m+4,m+6のBUSYフラグがリセットされ、出力BR
は“1"となる。出力BRが“1"の時は合流点以下のステッ
プが実行されて行く。もし並列完了が成立しなかった場
合にはスキャンごとにEND PARSEQ(A)命令から同様
のチェックが行われる。
演算プロセッサにより実行される。入力BRが“1"の時、
オペランドで示される並列実行シーケンスの数だけのBU
SYフラグアドレスをBUSYスタックからポップし、そのア
ドレスのプラグをリセットする。これによってステップ
m+2,m+4,m+6のBUSYフラグがリセットされ、出力BR
は“1"となる。出力BRが“1"の時は合流点以下のステッ
プが実行されて行く。もし並列完了が成立しなかった場
合にはスキャンごとにEND PARSEQ(A)命令から同様
のチェックが行われる。
シーケンスの最後にはEND STEP命令を置く。END STEP
命令は常にワード演算プロセッサにより実行される。EN
D STEP命令は入力BRの内容にかかわらずBUSYスタック
ポインタをリセットする。これによってスキャンの間に
リセットされずにBUSYスタックにたまったBUSYフラグア
ドレスは捨てられ、次のスキャン実行において、アクテ
ィブなステップのBUSYフラグアドレスが再び登録され
る。入力BRが“1"の時のみ、そのシーケンスのスタート
ステップのBUSYフラグをセットする。これにより次のス
キャンにおいてはスタートステップから実質的な実行が
始まることになる。
命令は常にワード演算プロセッサにより実行される。EN
D STEP命令は入力BRの内容にかかわらずBUSYスタック
ポインタをリセットする。これによってスキャンの間に
リセットされずにBUSYスタックにたまったBUSYフラグア
ドレスは捨てられ、次のスキャン実行において、アクテ
ィブなステップのBUSYフラグアドレスが再び登録され
る。入力BRが“1"の時のみ、そのシーケンスのスタート
ステップのBUSYフラグをセットする。これにより次のス
キャンにおいてはスタートステップから実質的な実行が
始まることになる。
次に具体的なスキャン実行手順を第13図を参照して説明
する。
する。
第13図は実際のプログラムの構成の一例を示したもの
で、第1図の場合と同じように3つの部分に分かれてい
る。
で、第1図の場合と同じように3つの部分に分かれてい
る。
最初の部分(A)は遷移条件の設定プログラムであり、
ラダーダイアグラムまたはステートメント命令で書かれ
ている。このプログラムでは各種の入力を演算し、出力
としては遷移フラグ(TRフラグ)をオン/オフさせる。
このTRフラグはステップシーケンスプログラムにおいて
ステップの実行完了の判定および次のステップへの遷移
条件の判定に使用される。
ラダーダイアグラムまたはステートメント命令で書かれ
ている。このプログラムでは各種の入力を演算し、出力
としては遷移フラグ(TRフラグ)をオン/オフさせる。
このTRフラグはステップシーケンスプログラムにおいて
ステップの実行完了の判定および次のステップへの遷移
条件の判定に使用される。
第2の部分(B)はプログラムの中心となるステップシ
ーケンスプログラムであり、ここでは第11図に示した並
列実行シーケンスをそのまま使用している。
ーケンスプログラムであり、ここでは第11図に示した並
列実行シーケンスをそのまま使用している。
第3の部分(C)は出力プログラムであり、ステップに
対応する実際の処理はここにラダーダイアグラムまたは
ステートメント命令を使用して書かれる。あるステップ
に対応する処理はすべて先頭にそのステップのBUSYフラ
グを接点情報として持つようにプログラミングする。こ
うすることによりこの処理は対応するステップがアクテ
ィブの時のみ実行され、イナクティブの時には全ての出
力がオフになるようにすることができる。
対応する実際の処理はここにラダーダイアグラムまたは
ステートメント命令を使用して書かれる。あるステップ
に対応する処理はすべて先頭にそのステップのBUSYフラ
グを接点情報として持つようにプログラミングする。こ
うすることによりこの処理は対応するステップがアクテ
ィブの時のみ実行され、イナクティブの時には全ての出
力がオフになるようにすることができる。
出力プログラムを全て実行すると、PCは再び遷移条件プ
ログラムを先頭から実行して行く。
ログラムを先頭から実行して行く。
先ずステップmのみアクティブであるとする。この時の
状態が命令実行説明図第14図(図面の都合上A,Bに分割
して示した)の命令番号1に相当する。命令番号は第12
図によるものとし、また分流スタック,合流スタックは
全てリセットされ、ステップmのBUSYフラグのみがセッ
トされているものとする。
状態が命令実行説明図第14図(図面の都合上A,Bに分割
して示した)の命令番号1に相当する。命令番号は第12
図によるものとし、また分流スタック,合流スタックは
全てリセットされ、ステップmのBUSYフラグのみがセッ
トされているものとする。
遷移条件設定プログラム(以下TRプログラムと呼ぶ)を
実行してもaの出力はオンしなかったものとする。
実行してもaの出力はオンしなかったものとする。
次にステップシーケンスプログラムを実行する。FNC S
TEP命令1の入力BRが“0"であったとすると、これは次
のOPR命令と共にビット演算プロセッサにより読み飛ば
される。
TEP命令1の入力BRが“0"であったとすると、これは次
のOPR命令と共にビット演算プロセッサにより読み飛ば
される。
次のロード命令 を実行すると、ステップmのBUSYフラグがBRにロードさ
れる。従ってFNC REG命令の入力BRは“1"となる。
れる。従ってFNC REG命令の入力BRは“1"となる。
FNC REG命令は入力BRが“1"なのでワード演算プロセッ
サにより実行される。ここでステップmのBUSYフラグア
ドレスがBUSYスタックに登録され、出力BRは“1"であ
る。
サにより実行される。ここでステップmのBUSYフラグア
ドレスがBUSYスタックに登録され、出力BRは“1"であ
る。
次にA接点 を実行する。入力BRは“1"となっているがTRプログラム
においてコイルaがまだオンしていないので、出力BRは
“0"である。従って以下のステップシーケンスプログラ
ムは全てビット演算プロセッサが実行し、実質的に読み
飛ばしとなる。
においてコイルaがまだオンしていないので、出力BRは
“0"である。従って以下のステップシーケンスプログラ
ムは全てビット演算プロセッサが実行し、実質的に読み
飛ばしとなる。
出力プログラムではステップmのBUSYフラグの条件を持
っているシーケンスのみがオンになり、第13図の場合は
Y1,Y2,Y3がオンになる。他のシーケンスでは出力がオン
になるものはなくこれで1回目のスキャンの実行を終了
する。
っているシーケンスのみがオンになり、第13図の場合は
Y1,Y2,Y3がオンになる。他のシーケンスでは出力がオン
になるものはなくこれで1回目のスキャンの実行を終了
する。
2度目のスキャン実行では、TRプログラムにおいて、条
件Y1,Y2,Y3がオンしたことからコイルaがオンとなり、
ステップシーケンスプログラムにおいて、FNC REG命令
4迄実行した時の各種レジスタの状態はやはり第14図の
命令番号4の状態と同じになる。BUSYスタックは1回目
のスキャンでステッププログラムの最後にあるEND STE
P命令によりリセットされるが、このFNC REG命令によ
り再び登録が行われている。
件Y1,Y2,Y3がオンしたことからコイルaがオンとなり、
ステップシーケンスプログラムにおいて、FNC REG命令
4迄実行した時の各種レジスタの状態はやはり第14図の
命令番号4の状態と同じになる。BUSYスタックは1回目
のスキャンでステッププログラムの最後にあるEND STE
P命令によりリセットされるが、このFNC REG命令によ
り再び登録が行われている。
次にA接点を再び実行すると、今回はaがオンなので出
力BRは“1"となり、FNC WAIT命令の入力BRは“1"とな
る。
力BRは“1"となり、FNC WAIT命令の入力BRは“1"とな
る。
FNC WAIT命令では入力BRが“1"なので、ワード演算プ
ロセッサにより実行が行われる。これによってステップ
mからステップm+1への遷移が可能となり、BUSYスタ
ックからステップmのBUSYフラグアドレスを読み出して
BUSYフラグをリセットする。またBUSYスタックポインタ
も1ビット戻し、出力BRは“1"となる。この時の各レジ
スタの様子は第14図の命令番号7に示す通りとなり、全
てのスタック,フラグがリセットされている。
ロセッサにより実行が行われる。これによってステップ
mからステップm+1への遷移が可能となり、BUSYスタ
ックからステップmのBUSYフラグアドレスを読み出して
BUSYフラグをリセットする。またBUSYスタックポインタ
も1ビット戻し、出力BRは“1"となる。この時の各レジ
スタの様子は第14図の命令番号7に示す通りとなり、全
てのスタック,フラグがリセットされている。
次に並列実行のためにBRANCH命令を実行する。これはビ
ット演算プロセッサが行う。BRANCH命令はBRを分流スタ
ックにプッシュするものでこの時の状態は第14図の8に
示すようになり、分流スタックの最下位に“1"がプッシ
ュされている。
ット演算プロセッサが行う。BRANCH命令はBRを分流スタ
ックにプッシュするものでこの時の状態は第14図の8に
示すようになり、分流スタックの最下位に“1"がプッシ
ュされている。
次にステップm+1のSTEP命令を実行すると、m+1の
BUSYフラグがセットされる。この時のスタック,フラグ
の様子を第14図の9に示す。同様にFNC REG命令の実行
後の様子を第14図の12に示す。すなわちステップm+1
のBUSYフラグアドレスがBUSYスタックに登録されてい
る。
BUSYフラグがセットされる。この時のスタック,フラグ
の様子を第14図の9に示す。同様にFNC REG命令の実行
後の様子を第14図の12に示す。すなわちステップm+1
のBUSYフラグアドレスがBUSYスタックに登録されてい
る。
ステップm+1の後のWAIT命令を実行すると、TRm+1フ
ラグが“0"なので以降のBRは“0"になり、ステップm+
2の出力BRも“0"である。
ラグが“0"なので以降のBRは“0"になり、ステップm+
2の出力BRも“0"である。
第12図21のPARSEQ(A)命令を実行すると、分流スタッ
クの最下位ビットがBRにロードされ、BRは“1"になる。
従ってステップm+3はアクティブとなり、25のFNC R
EG命令が実行された時には、ステップm+3のBUSYフラ
グがセットされ、そのBUSYフラグアドレスがBUSYスタッ
クに登録される。この様子を第14図の25に示す。
クの最下位ビットがBRにロードされ、BRは“1"になる。
従ってステップm+3はアクティブとなり、25のFNC R
EG命令が実行された時には、ステップm+3のBUSYフラ
グがセットされ、そのBUSYフラグアドレスがBUSYスタッ
クに登録される。この様子を第14図の25に示す。
また上記21のPARSEQ命令では19のFNCREG命令の出力BR
(ステプm+2の出力で、ここでは“0")を合流スタッ
クにプッシュしているのだが、値が“0"なので何の変化
もない。
(ステプm+2の出力で、ここでは“0")を合流スタッ
クにプッシュしているのだが、値が“0"なので何の変化
もない。
ステップm+3の後のWAIT命令を実行すると、TRm+3フ
ラグ“0"なので、以降のBRは“0"になり、ステップm+
4はイナクティブであり、出力BRも“0"である。
ラグ“0"なので、以降のBRは“0"になり、ステップm+
4はイナクティブであり、出力BRも“0"である。
34のPARSEQ(B)命令を実行すると、分流スタックの最
下位ビットはポップされてBRにロードされ、BRは“1"に
なる。またステップm+4の出力BR(ここでは“0")が
合流スタックにプッシュされる。
下位ビットはポップされてBRにロードされ、BRは“1"に
なる。またステップm+4の出力BR(ここでは“0")が
合流スタックにプッシュされる。
ステップm+5の入力BRは“1"となるのでアクティブと
なり、38のFNC REG命令を実行した時にはステップm+
5のBUSYフラグがセットされ、そのBUSYフラグアドレス
がBUSYスタックに登録されている。従ってこの時点でス
テップm+1,m+3,m+5は同時にアクティブになり、並
列実行が行われる。この様子を第14図の38に示す。
なり、38のFNC REG命令を実行した時にはステップm+
5のBUSYフラグがセットされ、そのBUSYフラグアドレス
がBUSYスタックに登録されている。従ってこの時点でス
テップm+1,m+3,m+5は同時にアクティブになり、並
列実行が行われる。この様子を第14図の38に示す。
ステップm+5の後のWAIT命令を実行すると、TRm+5フ
ラグは“0"なので以降のBRは“0"になり、ステップm+
6はイナクティブであり、出力BRも“0"である。従って
47以降のEND PARSEQ命令はビット演算プロセッサによ
り読み飛ばされ、ステップm+7がアクティブになるこ
とはない。
ラグは“0"なので以降のBRは“0"になり、ステップm+
6はイナクティブであり、出力BRも“0"である。従って
47以降のEND PARSEQ命令はビット演算プロセッサによ
り読み飛ばされ、ステップm+7がアクティブになるこ
とはない。
ステップシーケンス命令の最後のEND STEP命令によ
り、BUSYスタックに残っていた3個のBUSYフラグアドレ
スはクリアされ、次のスキャンではまた新たに登録が可
能になる。BUSYフラグはリセットされない。
り、BUSYスタックに残っていた3個のBUSYフラグアドレ
スはクリアされ、次のスキャンではまた新たに登録が可
能になる。BUSYフラグはリセットされない。
つぎに出力プログラムを実行する。この時点ではステッ
プm+1,m+3,m+5のBUSYフラグがセットされているの
で、それらの条件を回路に持つシーケンスが実行され、
各ステップの処理が行われる。以上で2スキャン目の実
行が完了した。
プm+1,m+3,m+5のBUSYフラグがセットされているの
で、それらの条件を回路に持つシーケンスが実行され、
各ステップの処理が行われる。以上で2スキャン目の実
行が完了した。
次に3スキャン目の実行を開始する。先ずTRプログラム
を実行する。ここでは前回のスキャンの出力プログラム
でステップm+1,m+3,m+5の処理が実行されたので、
それにより遷移フラグTRm+1,TRm+3,TRm+5がセットされ
たものとする。
を実行する。ここでは前回のスキャンの出力プログラム
でステップm+1,m+3,m+5の処理が実行されたので、
それにより遷移フラグTRm+1,TRm+3,TRm+5がセットされ
たものとする。
ステップシーケンスプログラムの11のロード命令 により、ステップm+1のBUSYフラグの内容がBRにロー
ドされ、BRは“1"となる。従って12のFNC REG命令がワ
ード演算プロセッサによって実行され、BUSYスタックに
ステップm+1のBUSYフラグアドレスが登録され、出力
BR“1"となる。
ドされ、BRは“1"となる。従って12のFNC REG命令がワ
ード演算プロセッサによって実行され、BUSYスタックに
ステップm+1のBUSYフラグアドレスが登録され、出力
BR“1"となる。
次に14の遷移条件チェックを実行すると、TRプログラム
でTRm+1フラグがセットされているので、15のWAIT命令
の入力BRは“1"となる。そこでワード演算プロセッサに
よりWAIT命令が実行され、BUSYスタックに登録されたス
テップm+1のBUSYフラグアドレスはポップされ、BUSY
フラグもリセットされ、出力BRは“1"となる。従ってス
テップm+2の入力BRが初めて“1"になり、ステップm
+2がアクティブになる。
でTRm+1フラグがセットされているので、15のWAIT命令
の入力BRは“1"となる。そこでワード演算プロセッサに
よりWAIT命令が実行され、BUSYスタックに登録されたス
テップm+1のBUSYフラグアドレスはポップされ、BUSY
フラグもリセットされ、出力BRは“1"となる。従ってス
テップm+2の入力BRが初めて“1"になり、ステップm
+2がアクティブになる。
19のFNC REG命令を実行後の各種レジスタの様子を第14
図の19に示す。すなわちステップm+2のBUSYフラグが
セットされ、BUSYスタックにそのBUSYフラグアドレスが
登録されている。出力BRは“1"であり、このシーケンス
ユニットについての実行が完了した。
図の19に示す。すなわちステップm+2のBUSYフラグが
セットされ、BUSYスタックにそのBUSYフラグアドレスが
登録されている。出力BRは“1"であり、このシーケンス
ユニットについての実行が完了した。
次に21のPARSEQ(A)命令を実行する。分流スタックの
最新値はここでは“0"(ステップmがイナクティブなの
で)であるから、BRも“0"となる。ステップm+2の出
力BRは合流スタックにプッシュされる。この時点でのス
タックの様子は第14図の21のようになっている。
最新値はここでは“0"(ステップmがイナクティブなの
で)であるから、BRも“0"となる。ステップm+2の出
力BRは合流スタックにプッシュされる。この時点でのス
タックの様子は第14図の21のようになっている。
ステップm+3からステップm+4への遷移条件TRm+3
も成立しているのでステップm+4もアクティブにな
る。従ってステップm+4のBUSYフラグがセットされ、
そのプラグアドレスがBUSYスタックに登録され、出力BR
は“1"である。
も成立しているのでステップm+4もアクティブにな
る。従ってステップm+4のBUSYフラグがセットされ、
そのプラグアドレスがBUSYスタックに登録され、出力BR
は“1"である。
次に34のPARSEQ(B)命令を実行すると、ステップm+
4の出力BRが合流スタックにプッシュされ、分流スタッ
クの最新値がポップされてBRにロードされる。分流スタ
ックの内容は“0"なのでBRは“0"となる。この時点での
スタックの様子は第14図の34のようになっており、合流
スタックに“1"が2個プッシュされている。
4の出力BRが合流スタックにプッシュされ、分流スタッ
クの最新値がポップされてBRにロードされる。分流スタ
ックの内容は“0"なのでBRは“0"となる。この時点での
スタックの様子は第14図の34のようになっており、合流
スタックに“1"が2個プッシュされている。
ステップm+5からステップm+6へ遷移条件TRm+5も
成立しているのでステップm+6もアクティブになる。
従ってステップm+6のBUSYフラグがセットされ、その
フラグアドレスがBUSYスタックに登録される。ステップ
m+6のFNC REG命令が実行された後の各種スタックの
様子を第14図の45に示す。
成立しているのでステップm+6もアクティブになる。
従ってステップm+6のBUSYフラグがセットされ、その
フラグアドレスがBUSYスタックに登録される。ステップ
m+6のFNC REG命令が実行された後の各種スタックの
様子を第14図の45に示す。
これによって47のFNC END PARSEQ(A)命令の入力BR
が初めて“1"になり、その処理がワード演算プロセッサ
により行われる。この命令は48のオペランド命令に示さ
れる並列実行シーケンス数マイナス1個のデータ(ここ
では2個)を合流スタックからポップし、それらとBRの
論理積をとり、それをBRにロードる。つまりスタップm
+2とm+4とm+6が全てアクティブの時のみ、この
命令の出力BRが“1"になる。
が初めて“1"になり、その処理がワード演算プロセッサ
により行われる。この命令は48のオペランド命令に示さ
れる並列実行シーケンス数マイナス1個のデータ(ここ
では2個)を合流スタックからポップし、それらとBRの
論理積をとり、それをBRにロードる。つまりスタップm
+2とm+4とm+6が全てアクティブの時のみ、この
命令の出力BRが“1"になる。
次にこれら3個の並列シーケンスの完了遷移条件bのチ
ェックを行う。49のA接点 命令の入力BRは“1"であるが、bはオフであったとする
と、次のEND PARSEQ(B)命令の入力BRは“0"とな
り、この命令以降の命令は全てビット演算プロセッサに
より読み飛ばされる。
ェックを行う。49のA接点 命令の入力BRは“1"であるが、bはオフであったとする
と、次のEND PARSEQ(B)命令の入力BRは“0"とな
り、この命令以降の命令は全てビット演算プロセッサに
より読み飛ばされる。
出力プログラムの実行が行われると、今回のスキャンで
はステップm+2,m+4,m+6の条件を含むシーケンスが
実行され、各ステップの処理が行われる。以上で3スキ
ャン目の実行が完了した。
はステップm+2,m+4,m+6の条件を含むシーケンスが
実行され、各ステップの処理が行われる。以上で3スキ
ャン目の実行が完了した。
次に4スキャン目の実行を開始する。先ずTRプログラム
を実行する。ここでは前回のスキャンの出力プログラム
でステップm+2,m+4,m+6の処理が実行されたので、
それにより遷移条件bがセットされたものとする。
を実行する。ここでは前回のスキャンの出力プログラム
でステップm+2,m+4,m+6の処理が実行されたので、
それにより遷移条件bがセットされたものとする。
ステップシーケンスプログラムの実行を行って行くと、
先ずステップm+2のBUSYフラグが“1"なのでステップ
m+2がアクティブになり、この出力が次のシーケンス
ユニットの先頭で合流スタックにプッシュされる。次に
ステップm+4のBUSYフラグも“1"たのでステップm+
4のBUSYフラグも“1"なのでステップm+4をアクティ
ブになり、その出力が最後のシーケンスユニットの先頭
で合流スタックにプッシュされる。次にステップm+6
のBUSYフラグも“1"なのでステップm+6もアクティブ
になり、ステップm+6のFNC REG命令を実行した後の
各種スタックの状態は3スキャン目の状態(第14図の4
5)と全く同一になっている。従って、END PARSEQ
(A)命令の実行も全く同様に行われ、実行後の各種ス
タックの状態は第14図の47のようになる。
先ずステップm+2のBUSYフラグが“1"なのでステップ
m+2がアクティブになり、この出力が次のシーケンス
ユニットの先頭で合流スタックにプッシュされる。次に
ステップm+4のBUSYフラグも“1"たのでステップm+
4のBUSYフラグも“1"なのでステップm+4をアクティ
ブになり、その出力が最後のシーケンスユニットの先頭
で合流スタックにプッシュされる。次にステップm+6
のBUSYフラグも“1"なのでステップm+6もアクティブ
になり、ステップm+6のFNC REG命令を実行した後の
各種スタックの状態は3スキャン目の状態(第14図の4
5)と全く同一になっている。従って、END PARSEQ
(A)命令の実行も全く同様に行われ、実行後の各種ス
タックの状態は第14図の47のようになる。
次に並列シーケンスの完了遷移条件であるbのチェック
を行う。49のA接点 命令の入力BRは3スキャン目の実行後と同様に“1"であ
り、今回のスキャンではbもオンなので出力BRは“1"と
なり、並列完了が成立し、次のステップへの実行の遷移
が可能になる。
を行う。49のA接点 命令の入力BRは3スキャン目の実行後と同様に“1"であ
り、今回のスキャンではbもオンなので出力BRは“1"と
なり、並列完了が成立し、次のステップへの実行の遷移
が可能になる。
これによって、END PARSEQ(B)命令の入力BRが初め
て“1"になり、ワード演算プロセッサによりこの命令の
処理が行われる。この命令はオペランド命令で示される
並列実行シーケンス数(ここでは3)だけのBUSYフラグ
アドレスをBUSYスタックからポップし、それらの指すフ
ラグをリセットする。すなわちこの時点でステップm+
2,m+4,m+6のBUSYフラグはリセットされ、ステップは
イナクティブになり、出力BRは“1"である。この時点で
の各種スタックの状態を第14図の50に示す。
て“1"になり、ワード演算プロセッサによりこの命令の
処理が行われる。この命令はオペランド命令で示される
並列実行シーケンス数(ここでは3)だけのBUSYフラグ
アドレスをBUSYスタックからポップし、それらの指すフ
ラグをリセットする。すなわちこの時点でステップm+
2,m+4,m+6のBUSYフラグはリセットされ、ステップは
イナクティブになり、出力BRは“1"である。この時点で
の各種スタックの状態を第14図の50に示す。
次のステップm+7の入力BRは“1"となり、ステップm
+7はアクティブになる。以上のようにしてスキャンが
行われる。
+7はアクティブになる。以上のようにしてスキャンが
行われる。
以上説明したように本発明のプログラマブルコントロー
ラは、ステップシーケンス型のプログラムの実行のため
に、OS処理および応用命令処理用のワード演算プロセッ
サに加えて、ラダーダイアグラム式シーケンス命令をハ
ードウェアにより高速処理するビット演算プロセッサを
持ち、プログラム全体をスキャン実行する事により、ス
テップシーケンスの機能を実現する事が可能である。
ラは、ステップシーケンス型のプログラムの実行のため
に、OS処理および応用命令処理用のワード演算プロセッ
サに加えて、ラダーダイアグラム式シーケンス命令をハ
ードウェアにより高速処理するビット演算プロセッサを
持ち、プログラム全体をスキャン実行する事により、ス
テップシーケンスの機能を実現する事が可能である。
ビット演算プロセッサが、ハードウェアにより、論理
積,論理和命令を処理する他に、内蔵の分流,合流スタ
ックを使用して、選択実行,並列実行時の分岐,合流の
処理を効率良く実行するので、OS処理用ワード演算プロ
セッサが分岐,合流時のアドレス制御や実行状態のデー
タを管理する方法に比べて、はるかに高速にプログラム
を実行可能である。
積,論理和命令を処理する他に、内蔵の分流,合流スタ
ックを使用して、選択実行,並列実行時の分岐,合流の
処理を効率良く実行するので、OS処理用ワード演算プロ
セッサが分岐,合流時のアドレス制御や実行状態のデー
タを管理する方法に比べて、はるかに高速にプログラム
を実行可能である。
また単純遷移において、WAIT命令に付随する遷移条件が
不成立の場合に、その条件が成立するまで繰返しチェッ
クする必要がある。この場合に、OS処理用ワード演算プ
ロセッサによる処理では、条件命令の先頭アドレスを再
実行アドレスとして保存しておき、条件不成立の場合に
はそのアドレスから再実行しなければならずこの処理に
加えて、常に条件命令の先頭を検出して再実行アドレス
として保存する処理が必要であり、また、再実行アドレ
スの保存エリアは並列実行可能なシーケンスの数だけ必
要になり、そのテーブルの管理も大きな負担となるが本
発明のプログラマブルコントローラではスキャン実行を
行い、不成立の遷移条件があっても全体を繰返しチェッ
クするので、条件命令の先頭アドレスを検出したり、保
存したりしておく必要はなく、従ってOS処理用のワード
演算プロセッサを要するのは応用命令の処理時のみとな
り、ワード演算プロセッサは他のテーブル管理等の処理
からも解放され、OSの処理が単純化され、余った能力を
他の処理に使用することも可能になる。
不成立の場合に、その条件が成立するまで繰返しチェッ
クする必要がある。この場合に、OS処理用ワード演算プ
ロセッサによる処理では、条件命令の先頭アドレスを再
実行アドレスとして保存しておき、条件不成立の場合に
はそのアドレスから再実行しなければならずこの処理に
加えて、常に条件命令の先頭を検出して再実行アドレス
として保存する処理が必要であり、また、再実行アドレ
スの保存エリアは並列実行可能なシーケンスの数だけ必
要になり、そのテーブルの管理も大きな負担となるが本
発明のプログラマブルコントローラではスキャン実行を
行い、不成立の遷移条件があっても全体を繰返しチェッ
クするので、条件命令の先頭アドレスを検出したり、保
存したりしておく必要はなく、従ってOS処理用のワード
演算プロセッサを要するのは応用命令の処理時のみとな
り、ワード演算プロセッサは他のテーブル管理等の処理
からも解放され、OSの処理が単純化され、余った能力を
他の処理に使用することも可能になる。
また全体をスキャン実行すると言っても、ワード演算プ
ロセッサが処理を行うのはアクティブなステップについ
てのみであり、アクティブなステップは1個のシーケン
スユニットに1個だけなので、その処理は少ない。また
残りのプログラムはビット演算プロセッサが全て読み飛
ばすが、その速度は1命令に付き200ns以下なので、100
0ワードの命令から成るプログラムでも200μsで処理可
能であり、スキャン速度は十分である。
ロセッサが処理を行うのはアクティブなステップについ
てのみであり、アクティブなステップは1個のシーケン
スユニットに1個だけなので、その処理は少ない。また
残りのプログラムはビット演算プロセッサが全て読み飛
ばすが、その速度は1命令に付き200ns以下なので、100
0ワードの命令から成るプログラムでも200μsで処理可
能であり、スキャン速度は十分である。
さらにステップシーケンス型のプログラムではステップ
からステップへ実行を遷移させた時に、前のステップで
の出力をオフにする必要があるが、本発明の方式では出
力プログラムでの出力条件に、該当するステップのアク
ティブ状態を使用するので、ステップがイナクティブに
なった時には、そのスキャンの実行で出力がオフされる
ので、わざわざ前ステップでの出力を捜してオフする必
要がない。
からステップへ実行を遷移させた時に、前のステップで
の出力をオフにする必要があるが、本発明の方式では出
力プログラムでの出力条件に、該当するステップのアク
ティブ状態を使用するので、ステップがイナクティブに
なった時には、そのスキャンの実行で出力がオフされる
ので、わざわざ前ステップでの出力を捜してオフする必
要がない。
すなわち本発明によればビット演算用ハードウェアをOS
処理用のワード演算プロセッサと併用し、前者によりス
テップ間の実行遷移条件の演算、アクティブなステップ
の出力処理,イナクティブなステップの読飛ばし,ステ
ップシーケンスプログラムの分岐処理そして合流処理の
一部を実行させると共に、ステップシーケンスプログラ
ムのステップ自身が自ステップのアクティブ状態を検出
して以降の処理が実行でき、また実行遷移条件成立時に
はWAIT命令が対応するステップをイナクティブにできる
ように命令語を構成することにより、ステップシーケン
スプログラムのスキャン実行を可能にし、OSでのテーブ
ル管理等の複雑な処理を削減すると共にプログラムを高
速に実行可能なプログマブルコントローラを提供するこ
とができる。
処理用のワード演算プロセッサと併用し、前者によりス
テップ間の実行遷移条件の演算、アクティブなステップ
の出力処理,イナクティブなステップの読飛ばし,ステ
ップシーケンスプログラムの分岐処理そして合流処理の
一部を実行させると共に、ステップシーケンスプログラ
ムのステップ自身が自ステップのアクティブ状態を検出
して以降の処理が実行でき、また実行遷移条件成立時に
はWAIT命令が対応するステップをイナクティブにできる
ように命令語を構成することにより、ステップシーケン
スプログラムのスキャン実行を可能にし、OSでのテーブ
ル管理等の複雑な処理を削減すると共にプログラムを高
速に実行可能なプログマブルコントローラを提供するこ
とができる。
第1図は本発明のPCの構成を示すブロック図、第2図は
本発明のPCが使用するプログラムの構成図、第3図はGR
AFCETタイプのステップシーケンスプログラムの図、第
4図はWAIT命令の命令語構成を示す図、第5図は並列実
行シーケンスを説明するための図、第6図は第5図のプ
ログラムを実行するのに必要なテーブルの図、第7図は
ステップの命令語構成を説明する図、第8図はWAITの命
令語構成を示す図、第9図は選択実行プログラムを説明
する図、第10図は第9図のプログラムの命令語構成を示
す図、第11図は並列実行プログラムを説明する図、第12
図は第11図のプログラムの命令語構成を示す図、第13図
はスキャン実行の説明に使用するプログラムの構成図、
第14図(A)および第14図(B)はスキャン実行時の各
種スタック,フラグの状態を説明する図である。 1……ワード演算プロセッサ 2……ビット演算プロセッサ 2−1……実行状態レジスタ(BR) 2−2……分流スタック、2−3……合流スタック 3……プログラムメモリ、4……I/Oレジスタ 5……CPUバス、6……ワーキングメモリ 6−1……BUSYスタック 6−2……BUSYスタックポインタ 6−3……BUSYフラグ、6−4……TRフラグ 7……I/O、8……I/Oバス
本発明のPCが使用するプログラムの構成図、第3図はGR
AFCETタイプのステップシーケンスプログラムの図、第
4図はWAIT命令の命令語構成を示す図、第5図は並列実
行シーケンスを説明するための図、第6図は第5図のプ
ログラムを実行するのに必要なテーブルの図、第7図は
ステップの命令語構成を説明する図、第8図はWAITの命
令語構成を示す図、第9図は選択実行プログラムを説明
する図、第10図は第9図のプログラムの命令語構成を示
す図、第11図は並列実行プログラムを説明する図、第12
図は第11図のプログラムの命令語構成を示す図、第13図
はスキャン実行の説明に使用するプログラムの構成図、
第14図(A)および第14図(B)はスキャン実行時の各
種スタック,フラグの状態を説明する図である。 1……ワード演算プロセッサ 2……ビット演算プロセッサ 2−1……実行状態レジスタ(BR) 2−2……分流スタック、2−3……合流スタック 3……プログラムメモリ、4……I/Oレジスタ 5……CPUバス、6……ワーキングメモリ 6−1……BUSYスタック 6−2……BUSYスタックポインタ 6−3……BUSYフラグ、6−4……TRフラグ 7……I/O、8……I/Oバス
Claims (1)
- 【請求項1】プログラム中のラダーシーケンス命令を実
行するビット演算プロセッサと、ラダーシーケンス命令
以外の応用命令を実行するワード演算プロセッサと、プ
ログラム中の各ステップの実行状態を実行状態フラグと
して記憶すると共に、各ステップに付随する遷移条件の
演算結果を遷移フラグとして記憶するメモリを備え、プ
ログラム中の前記応用命令の直前に前記実行状態フラグ
または遷移フラグをオペランドするラダーシーケンス命
令を配置し、前記ビット演算プロセッサにラダーシーケ
ンス命令と応用命令のデコードを実行させると共に、ラ
ダーシーケンス命令の出力と応用命令の命令コードの組
み合わせに従って前記ワード演算プロセッサを起動さ
せ、ラダーシーケンス命令の実行結果によってステップ
命令の処理条件やステップ間の遷移条件を判定させ、応
用命令の一種であるステップシーケンス処理命令への入
力を制御して、実行中のステップの処理とステップ間の
遷移に必要な処理をワード演算プロセッサに実行させ、
プログラム全体をスキャン実行させながらステップシー
ケンスプログラムを高速に実行することを特徴とするプ
ログラマブルコントローラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61244223A JPH0731527B2 (ja) | 1986-10-16 | 1986-10-16 | プログラマブルコントロ−ラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61244223A JPH0731527B2 (ja) | 1986-10-16 | 1986-10-16 | プログラマブルコントロ−ラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS6398704A JPS6398704A (ja) | 1988-04-30 |
JPH0731527B2 true JPH0731527B2 (ja) | 1995-04-10 |
Family
ID=17115575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61244223A Expired - Lifetime JPH0731527B2 (ja) | 1986-10-16 | 1986-10-16 | プログラマブルコントロ−ラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0731527B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001083076A1 (fr) | 2000-04-27 | 2001-11-08 | Nihon Genryo Co., Ltd. | Dispositif de filtrage et procede d'epuration du materiau de filtrage contenu dans le dispositif de filtrage |
JP3919098B2 (ja) | 2001-11-19 | 2007-05-23 | 日本原料株式会社 | 濾過装置 |
JP2005131443A (ja) | 2003-10-28 | 2005-05-26 | Nippon Genryo Kk | 濾過装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5523510A (en) * | 1978-08-02 | 1980-02-20 | Hitachi Ltd | Sequence control unit |
JPS58158709A (ja) * | 1982-03-15 | 1983-09-21 | Kensuke Hasegawa | プログラマブルコントロ−ラ |
JPS58222305A (ja) * | 1982-06-18 | 1983-12-24 | Idec Izumi Corp | スキヤニング型シ−ケンスコントロ−ラ |
JPS6162902A (ja) * | 1984-09-05 | 1986-03-31 | Toshiba Corp | プログラマブルコントロ−ラ |
-
1986
- 1986-10-16 JP JP61244223A patent/JPH0731527B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPS6398704A (ja) | 1988-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS6028015B2 (ja) | 情報処理装置 | |
JPH0731527B2 (ja) | プログラマブルコントロ−ラ | |
JPS62226231A (ja) | プロセツサ | |
KR100301391B1 (ko) | 서브루틴분기명령실행방법및그장치 | |
JP2529429B2 (ja) | プログラマブルコントロ―ラ | |
JPH082727Y2 (ja) | プログラマブルシ−ケンサ | |
JPH04268928A (ja) | エミュレーション装置及び半導体装置 | |
JP2876791B2 (ja) | 例外処理装置および例外処理方法 | |
JP2506591B2 (ja) | 補助処理装置 | |
JP3352871B2 (ja) | プログラマブルコントローラ | |
JPH04370832A (ja) | プロセッサ回路 | |
JP2702137B2 (ja) | ベクトル演算命令の処理方法 | |
JPH03182936A (ja) | 外部割り込み刈り取り方法 | |
JP2934060B2 (ja) | 例外処理方法および例外処理装置 | |
JP2675506B2 (ja) | マイクロプロセッサ装置 | |
JPH01234957A (ja) | Dma制御方法及び装置 | |
JPS5875250A (ja) | デジタル情報処理装置 | |
JPS6244836A (ja) | マイクロアドレススタツク制御方式 | |
JPS63217433A (ja) | プログラム実行制御方式 | |
JPH0353322A (ja) | 情報処理装置 | |
JPH04287227A (ja) | 演算処理装置 | |
JPS6015970B2 (ja) | マイクロプロセツサにおける割込処理装置 | |
JPS6299802A (ja) | I/o転送を高速化したプログラマブルシ−ケンスコントロ−ラ | |
JPH04362737A (ja) | データ処理システム | |
JPS6242254A (ja) | チヤネルイニシヤライズ方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EXPY | Cancellation because of completion of term |