JPS6398704A - プログラマブルコントロ−ラ - Google Patents
プログラマブルコントロ−ラInfo
- Publication number
- JPS6398704A JPS6398704A JP61244223A JP24422386A JPS6398704A JP S6398704 A JPS6398704 A JP S6398704A JP 61244223 A JP61244223 A JP 61244223A JP 24422386 A JP24422386 A JP 24422386A JP S6398704 A JPS6398704 A JP S6398704A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- program
- stack
- sequence
- 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.)
- Granted
Links
- 238000010586 diagram Methods 0.000 claims abstract description 19
- 230000007704 transition Effects 0.000 claims description 50
- 230000015654 memory Effects 0.000 claims description 4
- 230000003936 working memory Effects 0.000 claims description 3
- 238000000034 method Methods 0.000 abstract description 13
- 230000006870 function Effects 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 101100489581 Caenorhabditis elegans par-5 gene Proteins 0.000 description 1
- 235000019892 Stellar Nutrition 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
- Programmable Controllers (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
【発明の目的】
(産業上の利用分野)
本発明はベルトコンベヤやロボットなどを用いた移送装
置や組立装置などのステップシーケンス制御に使用する
プログラマブルコントローラに関するものである。 (従来の技術) 最近IECによりプログラマブルコントローラ(以下P
Cと呼ぶ)の標準化言語の1つとして。 GRAFCET型のステップシーケンスプログラム言語
が提案されている。 このステップシーケンスプログラム言語は第3図に示す
ように、処理を記述する複数のステップと、1つのステ
ップから次のステップへの実行の遷移条件を検査するW
AIT命令から成り、現在実行中のステップmの直後の
WAIT命令に付随する遷移条件TR,が成立するまで
は次のステップm+1の実行を行わず、遷移条件が成立
したときに前ステップの出力をオフにし1次のステップ
の処理を実行する。 このプログラムの特徴はWAIT命令を持ち。 WAIT命令に付随する条件が成立していない間は次の
ステップの実行を行わずその条件の判定を繰返し実行す
ることである。 ステップシーケンス型のPCでは、WAIT命令に付随
する条件が不成立の時にはその条件判定を繰返し実行す
る必要がある0例えば第4図に示すようなWAIT命令
では、WAITの前の演算の結果が“1nの時に、実行
が次のステップに進む、もし、演算結果が“1”でない
場合にはX番地の命令から再実行しなければならない、
従って。 一群の条件命令の先頭アドレスを保存しておき、再実行
の際にそれをプロセッサのプログラムカウンタにロード
しなければならない。 上記の方法では例えば第5図のようにシーケンスユニッ
トを複数持つ並列実行シーケンス(複数のステップが同
時に実行されるように1つのステップから分岐している
シーケンス)を実行する場合には、並列実行可能なシー
ケンスユニットの数だけの再実行アドレスのセーブエリ
アが必要である。 またサブルーチンを呼び出す場合には、サブルーチン側
でも並列分岐が可能なので同様に再実行アドレスのセー
ブエリアを必要とする。 また第6図に示すようにWAITの前に置かれる条件命
令の先頭アドレスを常に検出し、これを該当するシーケ
ンスユニットのセーブエリアに再実行アドレスとして登
録しなければならない。 以上に述べたように一般的なステップシーケンスの実行
方法では、実行管理のためのテーブルが大量に必要であ
り、再実行アドレスの登録などのためのO8(オペレー
ティングシステム)処理が多くなるが、O8のソフト処
理には通常マイクロプロセッサを用いているので、高速
化には限界がある。 (発明が解決しようとする問題点) 本発明はステップ間の実行遷移条件の演算やステップシ
ーケンスプログラムの分岐処理などをビット演算ハード
ウェアを用いて行うことによってステップシーケンスプ
ログラムを高速で実行できる合理的なプログラマブルコ
ントローラを提供することを目的としている。 [発明の構成] (問題点を解決する為の手段と作用) 本発明のPCはステップシーケンスの各ステップの実行
状態に対応するフラグ(以後BUSYフラグと呼ぶ)と
、各ステップの実行完了を示すと共に次のステップへの
実行の遷移が可能なことを示す遷移フラグ(以後TRフ
ラグと呼ぶ)を持ち、またビット演算プロセッサの内部
に、シーケンスプログラムの分流および合流時の実行状
態を記憶しておく分流スタックおよび合流スタックを持
っている。 PCはプログラムを先頭から順に実行して行き。 アクティブ状態のステップを実行するときにそのステッ
プのBUSYフラグをセットし、アクティブなステップ
の直後のWAIT命令に付随する前ステップから次ステ
ツプへの実行の遷移条件が成立したときWAIT命令に
よって前ステップのBUSYフラグをリセットする。 遷移条件が不成立のときは実行状態レジスタ(ステップ
間で実行状態を伝えるための1ビツトのレジスタ、以後
BRと呼ぶ)を“0”にしたまま以降のプログラムを最
後まで実行する。不成立であった遷移条件は次のスキャ
ンで再びチェックされる。 上記のように同一の遷移条件を繰返しチェックするので
、一群の条件命令の先頭アドレスを記憶しておいてそこ
から再実行する必要がなく、プログラムの全体を繰返し
実行することによってステップシーケンスの動作を実現
するものであり、これによってO8による条件命令の先
頭アドレスの検索や、先頭アドレス登録のための複雑な
テーブル操作を不要にし、専用のハードウェアによって
機能の実行を可能にする。 すなわちワード演算プロセッサはPC全体のO8の処理
の他、ビット演算プロセッサが処理できないシーケンス
命令以外の応用命令処理を行う。 ビット演算プロセッサはラダーダイアグラム式のシーケ
ンス命令(論理積、論理和などビット単位の論理演算)
の結果をI10レジスタやBRに格納する。 プログラムメモリはステップシーケンスプログラムを格
納し、工10レジスタは入力用I10から入力したデー
タおよび出力用I10に出力するデータを格納する。 BUSYフラグはステップシーケンスの全ステラに対応
しており、対応するステップがアクティブのときのみセ
ットされる。またTRフラグは対応するステップの実行
完了を示す遷移条件が成立した時にプログラムでセット
される。 BUSYスタックはアクティブなステップのBUSYフ
ラグのアドレスを登録しておくためのスタックであり、
登録されたアドレスはステップからステップへの実行の
遷移時に前のアクティブであったステップのBUSYフ
ラグをリセットするためにWAIT命令などで利用され
、またBUSYスタックポインタはBUSYスタック内
の最新データの位置を示すのに用いられる。 ビット演算プロセッサの内部には実行状態レジスタ(B
R)、分流スタックおよび合流スタックがある。BRは
プログラムの各命令の演算結果を格納しておくレジスタ
であり、次の命令の入力となる。 分流スタックはシーケンスの分岐時のBHの状態を時系
列的に記憶しておくための双方向性のシフトレジスタで
あり、最下位のビットに最新のデータが格納されている
。 合流スタックは一旦分流したシーケンスの合流時の実行
状態を決定するために各シーケンスの合流点での実行状
態を格納しておくための双方向性シフトレジスタであり
、最下位ビットに最新のデータが格納されている。 (実施例) 本発明の一実施例を第1図に示す。 第1図において、1はワード演算プロセッサ、2はシー
ケンス命令演算用のビット演算プロセッサ、2−1はB
R12−2は分流スタック、2−3は合流スタック、3
はプログラムメモリ、4はI10レジスタ、5はCPU
バス、6はワーキングメモリ、6−1はBUSYスタッ
ク、6−2はBUSYスタックポインタ、6−3はBU
SYフラグ、6−4はTRフラグ、 7はIlo、 8
はI10バスである。 本発明によるPCで実行されるプログラムの構造の一例
を第2図に示す。 第2図に示すように、プログラムは大きく3つの部分に
分けられ、最初の部分(A)は各種の入出力の状態を判
定してTRフラグを設定する部分であり、次の部分(B
)はステップシーケンスプログラムの本体であってステ
ップ間の実行の遷移が行われ、最後部分(C)はステッ
プのBUSYフラグの状態を基にして外界への出力を行
う部分であり、これらの3つの部分を先頭から最後まで
繰返し実行することによってステップシーケンスが実現
する。 次にステップシーケンスプログラムの代表的な機能であ
る単純遷移9選択実行および並列実行について説明する
。 単純遷移は第3図に示すように、ステップmがアクティ
ブであるとき、WAIT命令に付随する条件TR,(ス
テップmのTRフラグ)が“1nになるとステップmが
イナクティブ、ステップm+1がアクティブになるプロ
グラムである。 ステップmがイナクティブのとき、またはステップmが
アクティブでもTR,が“0”の時はステップm+1は
アクティブにならない。 各ステップ11は第7図に示すように5ワードの命令か
ら成り、各5TEP命令はこの命令が実行される時の実
行状態レジスタBRの内容すなおち入力BRが“1”の
時だけワード演算プロセッサによって処理が行われる。 入力BRが“0″の時はビット演算プロセッサ1はこの
命令をNOPとして読み飛ばす。 次のOPR命令は5TEP命令のオペランドであり、こ
こではステップ番地mを指定している。 OPR命令は5TEP命令を★行する際にワード演算プ
ロセッサが使用するもので、ビット演算プロセッサはO
PR命令を読み飛ばす。 次のロード命令(Hト)はビット演算プロセッサによっ
てのみ実行される命令であり、ステップmのBUSYフ
ラグの内容を実行状態レジスタにロードする命令である
。従ってステップmがアクティブの時は、このロード命
令の次の命令の入力BRは“1”になり、イナクティブ
の時は次の命令の入力BRが“ONになる。 次のREG命令は入力BRが“1”の時のみワード演算
プロセッサで処理が行われる。ワード演算プロセッサは
ステップmのBUSYフラグアドレスをBUSYスタッ
クに登録し、スタックポインタを更新する。入力BRが
“0”の時REG命令はビット演算プロセッサにより読
み飛ばされる。 次のOPR命令はREG命令で登録されるステップmの
BUSYフラグアドレスを示しており、ワード演算プロ
セッサがREG命令を実行する時に使用する。REG命
令の入力BRが“0”の時はこの命令もREG命令と同
様にビット演算プロセッサにより読み飛ばされる。 WA I T命令は第8図に示すように2ワードで構成
され、A接点(Hト)命令は入力BRと遷移条件の値(
主としてTRフラグの内容)の論理積をとる命令である
。従ってステップmがアクティブで、かつ遷移条件が成
立している時のみ次のWAIT命令の入力BRが“1”
になる、A接点命令は常にビット演算プロセッサにより
実行される。 WAIT命令は入力BRが“1”の時のみワード演算プ
ロセッサによって実行され、入力BRが“0”の時はビ
ット演算プロセッサにより読み飛ばされる。 ワード演算プロセッサはBUSYスタックからBUSY
フラグのアドレスを1個読み出し、そのアドレスのフラ
グをリセットする。すなわち前のステップのREG命令
で登録されたフラグアドレスはここで使用される。その
後スタックポインタを1個分戻しておく、入力BRが“
1”の時、出力BRも“1”とする、従って前ステップ
がイナクティブになった時、次のステップの入力BRは
“1”となる、そこで次のステップはアクティブになる
6以上のようにして単純遷移が実行される。 選択実行は第9図のような形で表わされ、ステップmが
アクティブの時、以降の分岐条件が調べられる。遷移条
件aが成立している時はシーケンスaが、遷移条件すが
成立している時にはシーケンスbが、遷移条件Cが成立
している時にはシーケンスCが実行される0合流点にお
いてどれか1つの完了条件が成立していると合流が成立
して次のステップに実行が移る。 第9図のシーケンスプログラムは第10図に示す命令語
で構成される0分流命令(BRANCH)はステップm
のアクティブ状層を各分岐シーケンスに伝えるために、
BRを分流スタックにブツシュする命令である。ここで
ブツシュされた値は後で各シーケンスの先頭で取り出さ
れ、BRにロードされる。WAIT命令、ステップ命令
は単純遷移で説明したものと全く同じである。 5ELSEQ(A)命令は分流シーケンスの先頭に置か
れ、分流スタックの最新値をBHにロードする0分流ス
タックのポツプはしない、従ってBRAMCH命令でブ
ツシュされた値は分流スタックの最新値として残ってい
る。また前の列のシーケンスの完了条件(合流点直前の
遷移条件)の演算結果を合流スタックにブツシュする。 この値は後の合流点で分岐シーケンスの完了チェックに
使用される。 END 5ELSEQ命令は分岐シーケンスの最後に置
かれる。これは合流スタックから最新値をポツプし、B
R(シーケンス完了で“1”)との論理和をとってBR
にロードする。このように各シーケンスの完了結果は次
のシーケンスの最後でそのシーケンスの完了結果との論
理和がとられるので、どれか1つのシーケンスが完了す
れば、全ての分岐シーケンスの最後でBRが必ず“1”
になり、分岐シーケンスが完了したことが分る。 5ELSEQ(B)命令は最も右側の分岐シーケンス(
最後の分岐シーケンス)の先頭に置かれる。 これはBRの内容を合流スタックにブツシュする。 また5ELSEQ(A)命令とは異なり1分流スタック
の最新値をポツプしてBRにロードする。これによりB
RにはBRANCH命令でブツシュしたステップmのア
クティブ状態がロードされ、ここまでの分岐シーケンス
の完了状態の論理和が合流スタックにブツシュされたこ
とになる。 このシーケンスの最後にもEND 5ELSEQ命令
が置かれる。ここで合流スタックから最新値をポツプし
、BR(このシーケンスの完了状態を示している)との
論理和をとってBRにロードする。このBHの内容はこ
れまで全ての分岐シーケンスの完了状態を示している。 従ってこの内容が“1”であれば合流点以下のステップ
が実行されることになる。この時アクティブだったステ
ップは完了条件をチェックしたWAIT命令によってす
でにイナクティブにされている。 なおりRANCH,5ELSEQ(、A)、5ELSE
Q(B)、END 5ELSEQ命令は全てビット演算
プロセッサによりハードウェアで実行される。 並列実行は第11図に示すような形式で表わされ、ステ
ップmがアクティブでかつ直後の遷移条件aが成立して
いる時、ステップm+1.m+3.m+5が同時アクテ
ィブになり、従って並列に実行される。この点が選択実
行と異なる0合流点では直前のステップm + 2 、
m +4 、 m + 6が全てアクティブで、かつ
遷移条件すが成立した時にのみ合流が完了する。 第11図のプログラムの命令後の構成を第12図に示す
、ステップ命令およびWAIT命令は単純遷移の場合と
同じである。またBRANCH命令は選択実行の場合と
同じであり、ステップmの完了状態を分流スタックにブ
ツシュする。 並列実行では選択実行の場合とは異なり、最後のシーケ
ンス以外ではシーケンスの最後に特別の命令はない、P
AR8EQ命令は並列シーケンスの先頭に置かれ、その
機能は5ELSEQ命令と同じであり、表示シンボルの
みが異なる。並列シーケンスの最後にだけEND PA
R8EQ命令が置かれる。これはEND PAR5E
Q(A)とEND PAR8EQ(B)命令に分かれて
いる。 END PAR8EQ(A)命令は入力BRが“1”の
時のみワード演算プロセッサにより実行される。 オペランドに示された並列シーケンスの数マイナス1個
のデータを合流スタックからポツプし、それらの全ての
データとBHの論理積をとってBRにロードする。従っ
て出力BRが“1”になるのはステップm + 2 、
m + 4 、 m + 6が全てアクティブの時だ
けである。 次にこのBRを入力として遷移条件すが実行され1条件
が成立すると出力BRが“1#になる。 出力BRが“1”のとき次のEND PAR8EQ(B
)命令が実行され、′0”の時は実行されない、また入
力BRが“0”の時、END PAR5EQ(A)、(
B)命令は共にビット演算プロセッサにより読み飛ばさ
れる。 END PAR8EQ(B)命令は入力BRが1”の
時のみワード演算プロセッサにより実行される。 入力BRが“1”の時、オペランドで示される並列実行
シーケンスの数だけのBUSYフラグアドレスをBUS
Yスタックからポツプし、そのアドレスのフラグをリセ
ットする。これによってステップm+2.m+4.m+
6のBUSYフラグがリセットされ、出力BRは“1”
となる、出力BRが“1”の時は合流点以下のステップ
が実行されて行く、もし並列完了が成立しなかった場合
にはスキャンごとにEND PAR8EQ(A)命令か
ら同様のチェックが行すれる。 シーケンスの最後にはEND 5TEP命令を置<、E
ND 5TEP命令は常にワード演算プロセッサにより
実行される。END 5TEP命令は入力BHの内容
にかかわらずBUSYスタックポインタをリセットする
。これによってスキャンの間にリセットされずにBUS
YスタックにたまったBUSYフラグアドレスは捨てら
れ、次のスキャン実行において、アクティブなステップ
のBUSYフラグアドレスが再び登録される。入力BR
が“1”の時のみ、そのシーケンスのスタートステップ
のBUSYフラグをセットする。これにより次のスキャ
ンにおいてはスタートステップから実質的な実行が始ま
ることになる。 次に具体的なスキャン実行手順を第13図を参照して説
明する。 第1311は実際のプログラムの構成の一例を示したも
ので、第1図の場合と同じように3つの部分に分れてい
る。 最初の部分(A)は遷移条件の設定プログラムであり、
ラダーダイアグラムまたはステートメント命令で書かれ
ている。このプログラムでは各種の入力を演算し、出力
としては遷移フラグ(TRフラグ)をオン/オフさせる
。このTRフラグはステップシーケンスプログラムにお
いてステップの実行完了の判定および次のステップへの
遷移条件の判定に使用される。 第2の部分(B)はプログラムの中心となるステップシ
ーケンスプログラムであり、ここでは第11図に示した
並列実行シーケンスをそのまま使用している。 第3の部分(C)は出力プログラムであり、ステップに
対応する実際の処理はここにラダーダイアグラムまたは
ステートメント命令を使用して書かれる。あるステップ
に対応する処理はすべて先頭にそのステップのBUSY
フラグを接点情報として持つようにプログラミングする
。こうすることによりこの処理は対応するステップがア
クティブの時のみ実行され、イナクティブの時には全て
の出力がオフになるようにすることができる。 出力プログラムを全て実行すると、PCは再び遷移条件
プログラムを先頭から実行して行く。 先ずステップmのみアクティブであるとする。 この時の状態が命令実行説明図第14図(図面の都合上
A、Bに分割して示した)の命令番号1に相当する。命
令番号は第12図によるものとし、また分流スタック、
合流スタックは全てリセットされ。 ステップmのBUSYフラグのみがセットされているも
のとする。 遷移条件設定プログラム(以下TRプログラムと呼ぶ)
を実行してもaの出力はオンしなかったものとする。 次にステップシーケンスプログラムを実行する。 FNC5TEP命令1の入力BRが“0″であったとす
ると、これは次のOPR命令と共にビット演算プロセッ
サにより読み飛ばされる。 次のロード命令(H)−m)を実行すると、 ステップ
mのBUSYフラグがBRにロードされる。 従ってFNCREG命令の入力BRは“1”となる。 FNCREG命令は入力BRが“1”なのでワード演算
プロセッサにより実行される。ここでステップmのBU
SYフラグアドレスがBUSYスタックに登録され、出
力BRは“1”である。 次にA接点(−11−a)を実行する。入力BRは“1
“となっているがTRプログラムにおいてコイルaがま
だオンしていないので、出力BRは“O”である、従っ
て以下のステップシーケンスプログラムは全てビット演
算プロセッサが実行し、実質的に読み飛ばしとなる。 出力プログラムではステップmのBUSYフラグの条件
を持っているシーケンスのみがオンになり、第13図の
場合はYl、Y2.Y3がオンになる。他のシーケンス
では出力がオンになるものはなくこれで1回目のスキャ
ンの実行を終了する。 2度目のスキャン実行では、TRプログラムにおいて1
条件Yl、Y2.Y3がオンしたことがらコイルaがオ
ンとなり、ステップシーケンスプログラムにおいて、
FNCREG命令4迄実行した時の各種レジスタの状態
はやはり第14図の命令番号4の状態と同じになる。B
USYスタックは1回目のスキャンでステッププログラ
ムの最後にある END 5TEP命令によりリセッ
トされるが、このFNCREG命令により再び登録が行
われている。 次にA接点を再び実行すると、今回はaがオンなので出
力BRは“1”となり、FNCWAIT命令の入力BR
は“1”となる。 FNCWAIT命令では入力BRが“1”なので、ワー
ド演算プロセッサにより実行が行われる。 これによってステップmからステップm+1への遷移が
可能となり、BUSYスタックからステップmのBUS
Yフラグアドレスを読み出してBUSYフラグをリセッ
トする。またBUSYスタックポインタも1ビット戻し
、出力BRは“1”となる、この時の各レジスタの様子
は第14図の命令番号7に示す通りとなり、全てのスタ
ック、フラグがリセットされている。 次に並列実行のためにBRAMCH命令を実行する、こ
れはビット演算プロセッサが行う、BRANC:H命令
はBRを分流スタックにブツシュするものでこの時の状
態は第14図の8に示すようになり、分流スタックの最
下位に“1”がブツシュされている。 次にステップm+1の5TEP命令を実行すると1m+
1のBUSYフラグがセットされる。この時のスタック
、フラグの様子を第14図の9に示す、同様にFNCR
EG命令の実行後の様子を第14図の12に示す、すな
わちステップm+1のBUSYフラグアドレスがBUS
Yスタックに登録されている。 ステップm+1の後のWAIT命令を実行すると、TR
,◆□フラグが“0”なので以降のBRは“0”になり
、ステップm + 2の出力BRも“O”である。 第12図21のPAR5EQ(A)命令を実行すると。 分流スタックの最下位ビットがBRにロードされ。 BRは“1”になる、従ってステップm + 3はアク
ティブとなり、25のFNCREG命令が実行された時
には、ステップm + 3のBUSYフラグがセットさ
れ、そのBUSYフラグアドレスがBUSYスタックに
登録される。この様子を第14図の25に示す。 また上記21のPAR5EQ命令では19のFNCRE
G命令の出力BR(ステプm+2の出力で、ここでは“
0”)を合流スタックにブツシュしているのだが、値が
“0”なので何の変化もない。 ステップm+3の後のWAIT命令を実行すると、T
Rws+aフラグ″0”なので、以降のBRは“0”に
なり、ステップm + 4はイナクティブであり、出力
BRも“0”である。 34のPAR8EQ(B)命令を実行すると、分流スタ
ックの最下位ビットはポツプされてBRにロードされ、
BRは“1”になる、またステップm+4の出力BR(
ここでは“0”)が合流スタックにブツシュされる。 ステップm + 5の入力BRは“1″となるのでアク
ティブとなり、38のFNCREG命令を実行した時に
はステップm + 5のBUSYフラグがセットされ、
そのBUSYフラグアドレスがBUSYスタックに登録
されている。従ってこの時点でステップm+1.m+3
1m+5は同時にアクティブになり、並列実行が行ねれ
る。この様子を第14図の38に示す。 ステップm+5の後のWAIT命令を実行すると、 T
R,+、フラグは“O”なので以降のBRは“0″にな
り、ステップm + 6はイナクティブであり、出力B
Rも“0”である、従って47以降のEND PAR8
EQ命令はビット演算プロセッサにより読み飛ばされ、
ステップm + 7がアクティブになることはない。 ステップシーケンス命令の最後のEND 5TEP命令
により、BUSYスタックに残っていた3個のBUSY
フラグアドレスはクリアされ1次のスキャンではまた新
たに登録が可能になる。BUSYフラグはリセットされ
ない。 つぎに出力プログラムを実行する。この時点ではステッ
プm + 1 、 m + 3 s m + 5のBU
SYフラグがセットされているので、それらの条件を回
路に持つシーケンスが実行され、各ステップの処理が行
われる1以上で2スキヤン目の実行が完了した。 次に3スキヤン目の実行を開始する。先ずTRプログラ
ムを実行する。ここでは前回のスキャンの出力プログラ
ムでステップm+1.m+3.m+5の処理が実行され
たので、それにより遷移フラグTR,+□、TR@+、
、TR@+、がセットされたものとする。 ステップシーケンスプログラムの11のロード命令(H
l−m+1)により、ステップm+1のBUSYフラグ
の内容がBRにロードされ、BRは“1”となる、従っ
て12のFNCREG命令がワード演算プロセッサによ
って実行され、BUSYスタックにステップm+1のB
USYフラグアドレスが登録され、出力BRが“1”と
なる。 次に14の遷移条件チェックを実行すると、TRプログ
ラムでTR,÷1フラグがセットされているので、15
のWAIT命令の入力BRは“1”となる、そこでワー
ド演算プロセッサによりWAIT命令が実行され、BU
SYスタックに登録されたステップm+1のBUSYフ
ラグアドレスはポツプされ、BUSYフラグもリセット
され、出力BRはl(I Nとなる。従ってステップm
+2の入力BRが初めて“1”になり、ステップm+2
がアクティブになる。 19のFNCREG命令を実行後の各種レジスタの様子
を第14図の19に示す、すなわちステップm+2のB
USYフラグがセットされ、BUSYスタックにそのB
USYフラグアドレスが登録されている。出力BRは“
1″であり、このシーケンスユニットについての実行が
完了した。 次に21のPAR8EQ(A)命令を実行する1分流ス
タックの最新値はここでは“0″(ステップmがイナク
ティブなので)であるから、BRも“O”となる、ステ
ップm+2の出力BRは合流スタックにブツシュされる
。この時点でのスタックの様子は第14図の21のよう
になっている。 ステップm + 3からステップm+4への遷移条件T
R++a+sも成立しているのでステップm + 4
もアクティブになる。従ってステップm +4のBUS
Yプラグがセットされ、そのフラグアドレスがBUSY
スタックに登録され、出力BRは“1”である。 次に34のPAR5EQ(B)命令を実行すると。 ステップm+4の出力BRが合流スタックにブツシュさ
れ、分流スタックの最新値がポツプされてBRにロード
される0分流スタックの内容は“OnなのでBRは1′
0”となる、この時点でのスタックの様子は第14図の
34のようになっており、合流スタックに“1”が2個
ブツシュされている。 ステップm+5からステップm + 6へ遷移条件TR
,+、も成立しているのでステップm + 6もアクテ
ィブになる。従ってステップm+6のBUSYフラグが
セットされ、そのフラグアドレスがBUSYスタックに
登録される。ステップm + 6のFNCREG 命令
が実行された後の各種スタックの様子を第14図の45
に示す。 これによって47のFNCEND PAR3EQ(A
)命令の入力BRが初めて“1”になり、その処理がワ
ード演算プロセッサにより行われる。この命令は48の
オペランド命令に示される並列実行シーケンス数マイナ
ス1個のデータ(ここでは2個)を合流スタックからポ
ツプし、それらとBRの論理積をとり、それをBHにロ
ードする。つまりスタンプm+2とm+4とm + 6
が全てアクティブの時のみ、この命令の出力BRが“1
#になる。 次にこれら3個の並列シーケンスの完了遷移条件すのチ
ェックを行う、49のA接点(@トb)命令の入力BR
は“1”であるが、bはオフであったとすると、次のE
ND PAR8EQ(B)命令の入力BRは“O”とな
り、この命令以降の命令は全てビット演算プロセッサに
より読み飛ばされる。 出力プログラムの実行が行われると、今回のスキャンで
はステップm + 2 、 m + 4 、 m +
8の条件を含むシーケンスが実行され、各ステップの処
理が行われる0以上で3スキヤン目の実行が完了した。 次に4スキヤン目の実行を開始する。先ずTRプログラ
ムを実行する。ここでは前回のスキャンの出力プログラ
ムでステップm+2.m+4.m+6の処理が実行され
たので、それにより遷移条件すがセットされたものとす
る。 ステップシーケンスプログラムの実行を行って行くと、
先ずステップm+2のBUSYフラグが“1”なのでス
テップm + 2がアクティブになり、その出力が次の
シーケンスユニットの先頭で合流スタックにブツシュさ
れる。次にステップm + 4のBUSYフラグも“1
#なのでステップm+4もアクティブになり、その出力
が最後のシーケンスユニットの先頭で合流スタックにブ
ツシュされる1次にステップm+6のBUSYフラグも
“IHなのでステップm+6もアクティブになり、ステ
ップm+6の FNCREG命令を実行した後の各種ス
タックの状態は3スキヤン目の状11(第14図の45
)と全く同一になっている。従って、END PAR5
EQ(A)命令の実行も全く同様に行われ、実行後の各
種スタックの状態は第14図の47のようになる。 次に並列シーケンスの完了遷移条件であるbのチェック
を行う、49のA接点(−1)−b)命令の入力BRは
3スキヤン目の実行時と同様に“1”であり、今回のス
キャンではbもオンなので出力BRは“1”となり、並
列完了が成立し9次のステップへの実行の遷移が可能に
なる。 これによってEND PAR8EQ(B)命令の入力B
Rが初めて“1″になり、ワード演算プロセッサにより
この命令の処理が行われる。この命令はオペランド命令
で示される並列実行シーケンス数(ここでは3)だけの
BUSYフラグアドレスをBUSYスタックからポツプ
し、それらの指すフラグをリセットする。すなわちこの
時点でステップm+2.m+4.m+6のBUSYフラ
グはリセットされ、ステップはイナクティブになり、出
力BRは“1”である、この時点での各種スタックの状
態を第14図の50に示す。 次のステップm+7の入力BRは“1”となり。 ステップm+7はアクティブになる0以上のようにして
スキャンが行われる。 〔発明の効果〕 以上説明したように本発明のプログラマブルコントロー
ラでは、ステップシーケンス型のプログラムの実行のた
めに、O8処理および応用命令処理用のワード演算プロ
セッサに加えて、ラダーダイアグラム式シーケンス命令
をハードウェアにより高速処理するビット演算プロセッ
サを持ち、プログラム全体をスキャン実行する事により
、ステップシーケンスの機能を実現する事が可能である
。 ビット演算プロセッサが、ハードウェアにより。 論理積、論理和命令を処理する他に、内蔵の分流。 合流スタックを使用して、選択実行、並列実行時の分岐
9合流の処理を効率良く実行するので、O8処理用ワー
ド演算プロセッサが分岐9合流時のアドレス制御や実行
状態のデータを管理する方法に比べて、はるかに高速に
プログラムを実行可能である。 また単純遷移において、WAIT命令に付随する遷移条
件が不成立の場合に、その条件が成立するまで締返しチ
ェックする必要がある。この場合に、O8処理用ワード
演算プロセッサによる処理では、条件命令の先頭アドレ
スを再実行アドレスとして保存しておき、条件不成立の
場合にはそのアドレスから再実行しなければならずこの
処理に加えて、常に条件命令の先頭を検出して再実行ア
ドレスとして保存する処理が必要であり、また、再実行
アドレスの保存エリアは並列実行可能なシーケンスの数
だけ必要になり、そのテーブルの管理も大きな負担とな
るが本発明のプログラマブルコントローラではスキャン
実行を行い、不成立の遷移条件があっても全体を繰返し
チェックするので、条件命令の先頭アドレスを検出した
り、保存したりしておく必要はなく、従ってO8処理用
のワード演算プロセッサを要するのは応用命令の処理時
のみとなり、ワード演算プロセッサは他のテーブル管理
等の処理からも解放され、O8の処理が単純化され、余
った能力を他の処理に使用することも可能になる。 また全体をスキャン実行すると言っても、ワード演算プ
ロセッサが処理を行うのはアクティブなステップについ
てのみであり、アクティブなステップは1個のシーケン
スユニットに1個だけなので、その処理は少ない、また
残りのプログラムはビット演算プロセッサが全て読み飛
ばすが、その速度は1命令に付き200 ns以下なの
で、1000ワードの命令から成るプログラムでも20
0Ilsで処理可能であり、スキャン速度は十分である
。 さらにステップシーケンス型のプログラムではステップ
からステップへ実行を遷移させた時に、前のステップで
の出力をオフにする必要があるが、本発明の方式では出
力プログラムでの出力条件に、該当するステップのアク
ティブ状態を使用するので、ステップがイナクティブに
なった時には、そのスキャンの実行で出力がオフされる
ので、わざわざ前ステップでの出力を捜してオフする必
要がない。 すなわち本発明によればビット演算用ハードウェアをo
S処理用のワード演算プロセッサと併用し、前者により
ステップ間の実行遷移条件の演算。 アクティブなステップの出力処理、イナクティブなステ
ップの読飛ばし、ステップシーケンスプログラムの分岐
処理そして合流処理の一部を実行させると共に、ステッ
プシーケンスプログラムのステップ自身が自ステップの
アクティブ状態を検出して以降の処理が実行でき、また
実行遷移条件成立時にはWAIT命令が対応するステッ
プをイナクティブにできるように命令語を構成すること
により、ステップシーケンスプログラムのスキャン実行
を可能にし、O8でのテーブル管理等の複雑な処理を削
減すると共にプログラムを高速に実行可能なプログラマ
ブルコントローラを提供することができる。
置や組立装置などのステップシーケンス制御に使用する
プログラマブルコントローラに関するものである。 (従来の技術) 最近IECによりプログラマブルコントローラ(以下P
Cと呼ぶ)の標準化言語の1つとして。 GRAFCET型のステップシーケンスプログラム言語
が提案されている。 このステップシーケンスプログラム言語は第3図に示す
ように、処理を記述する複数のステップと、1つのステ
ップから次のステップへの実行の遷移条件を検査するW
AIT命令から成り、現在実行中のステップmの直後の
WAIT命令に付随する遷移条件TR,が成立するまで
は次のステップm+1の実行を行わず、遷移条件が成立
したときに前ステップの出力をオフにし1次のステップ
の処理を実行する。 このプログラムの特徴はWAIT命令を持ち。 WAIT命令に付随する条件が成立していない間は次の
ステップの実行を行わずその条件の判定を繰返し実行す
ることである。 ステップシーケンス型のPCでは、WAIT命令に付随
する条件が不成立の時にはその条件判定を繰返し実行す
る必要がある0例えば第4図に示すようなWAIT命令
では、WAITの前の演算の結果が“1nの時に、実行
が次のステップに進む、もし、演算結果が“1”でない
場合にはX番地の命令から再実行しなければならない、
従って。 一群の条件命令の先頭アドレスを保存しておき、再実行
の際にそれをプロセッサのプログラムカウンタにロード
しなければならない。 上記の方法では例えば第5図のようにシーケンスユニッ
トを複数持つ並列実行シーケンス(複数のステップが同
時に実行されるように1つのステップから分岐している
シーケンス)を実行する場合には、並列実行可能なシー
ケンスユニットの数だけの再実行アドレスのセーブエリ
アが必要である。 またサブルーチンを呼び出す場合には、サブルーチン側
でも並列分岐が可能なので同様に再実行アドレスのセー
ブエリアを必要とする。 また第6図に示すようにWAITの前に置かれる条件命
令の先頭アドレスを常に検出し、これを該当するシーケ
ンスユニットのセーブエリアに再実行アドレスとして登
録しなければならない。 以上に述べたように一般的なステップシーケンスの実行
方法では、実行管理のためのテーブルが大量に必要であ
り、再実行アドレスの登録などのためのO8(オペレー
ティングシステム)処理が多くなるが、O8のソフト処
理には通常マイクロプロセッサを用いているので、高速
化には限界がある。 (発明が解決しようとする問題点) 本発明はステップ間の実行遷移条件の演算やステップシ
ーケンスプログラムの分岐処理などをビット演算ハード
ウェアを用いて行うことによってステップシーケンスプ
ログラムを高速で実行できる合理的なプログラマブルコ
ントローラを提供することを目的としている。 [発明の構成] (問題点を解決する為の手段と作用) 本発明のPCはステップシーケンスの各ステップの実行
状態に対応するフラグ(以後BUSYフラグと呼ぶ)と
、各ステップの実行完了を示すと共に次のステップへの
実行の遷移が可能なことを示す遷移フラグ(以後TRフ
ラグと呼ぶ)を持ち、またビット演算プロセッサの内部
に、シーケンスプログラムの分流および合流時の実行状
態を記憶しておく分流スタックおよび合流スタックを持
っている。 PCはプログラムを先頭から順に実行して行き。 アクティブ状態のステップを実行するときにそのステッ
プのBUSYフラグをセットし、アクティブなステップ
の直後のWAIT命令に付随する前ステップから次ステ
ツプへの実行の遷移条件が成立したときWAIT命令に
よって前ステップのBUSYフラグをリセットする。 遷移条件が不成立のときは実行状態レジスタ(ステップ
間で実行状態を伝えるための1ビツトのレジスタ、以後
BRと呼ぶ)を“0”にしたまま以降のプログラムを最
後まで実行する。不成立であった遷移条件は次のスキャ
ンで再びチェックされる。 上記のように同一の遷移条件を繰返しチェックするので
、一群の条件命令の先頭アドレスを記憶しておいてそこ
から再実行する必要がなく、プログラムの全体を繰返し
実行することによってステップシーケンスの動作を実現
するものであり、これによってO8による条件命令の先
頭アドレスの検索や、先頭アドレス登録のための複雑な
テーブル操作を不要にし、専用のハードウェアによって
機能の実行を可能にする。 すなわちワード演算プロセッサはPC全体のO8の処理
の他、ビット演算プロセッサが処理できないシーケンス
命令以外の応用命令処理を行う。 ビット演算プロセッサはラダーダイアグラム式のシーケ
ンス命令(論理積、論理和などビット単位の論理演算)
の結果をI10レジスタやBRに格納する。 プログラムメモリはステップシーケンスプログラムを格
納し、工10レジスタは入力用I10から入力したデー
タおよび出力用I10に出力するデータを格納する。 BUSYフラグはステップシーケンスの全ステラに対応
しており、対応するステップがアクティブのときのみセ
ットされる。またTRフラグは対応するステップの実行
完了を示す遷移条件が成立した時にプログラムでセット
される。 BUSYスタックはアクティブなステップのBUSYフ
ラグのアドレスを登録しておくためのスタックであり、
登録されたアドレスはステップからステップへの実行の
遷移時に前のアクティブであったステップのBUSYフ
ラグをリセットするためにWAIT命令などで利用され
、またBUSYスタックポインタはBUSYスタック内
の最新データの位置を示すのに用いられる。 ビット演算プロセッサの内部には実行状態レジスタ(B
R)、分流スタックおよび合流スタックがある。BRは
プログラムの各命令の演算結果を格納しておくレジスタ
であり、次の命令の入力となる。 分流スタックはシーケンスの分岐時のBHの状態を時系
列的に記憶しておくための双方向性のシフトレジスタで
あり、最下位のビットに最新のデータが格納されている
。 合流スタックは一旦分流したシーケンスの合流時の実行
状態を決定するために各シーケンスの合流点での実行状
態を格納しておくための双方向性シフトレジスタであり
、最下位ビットに最新のデータが格納されている。 (実施例) 本発明の一実施例を第1図に示す。 第1図において、1はワード演算プロセッサ、2はシー
ケンス命令演算用のビット演算プロセッサ、2−1はB
R12−2は分流スタック、2−3は合流スタック、3
はプログラムメモリ、4はI10レジスタ、5はCPU
バス、6はワーキングメモリ、6−1はBUSYスタッ
ク、6−2はBUSYスタックポインタ、6−3はBU
SYフラグ、6−4はTRフラグ、 7はIlo、 8
はI10バスである。 本発明によるPCで実行されるプログラムの構造の一例
を第2図に示す。 第2図に示すように、プログラムは大きく3つの部分に
分けられ、最初の部分(A)は各種の入出力の状態を判
定してTRフラグを設定する部分であり、次の部分(B
)はステップシーケンスプログラムの本体であってステ
ップ間の実行の遷移が行われ、最後部分(C)はステッ
プのBUSYフラグの状態を基にして外界への出力を行
う部分であり、これらの3つの部分を先頭から最後まで
繰返し実行することによってステップシーケンスが実現
する。 次にステップシーケンスプログラムの代表的な機能であ
る単純遷移9選択実行および並列実行について説明する
。 単純遷移は第3図に示すように、ステップmがアクティ
ブであるとき、WAIT命令に付随する条件TR,(ス
テップmのTRフラグ)が“1nになるとステップmが
イナクティブ、ステップm+1がアクティブになるプロ
グラムである。 ステップmがイナクティブのとき、またはステップmが
アクティブでもTR,が“0”の時はステップm+1は
アクティブにならない。 各ステップ11は第7図に示すように5ワードの命令か
ら成り、各5TEP命令はこの命令が実行される時の実
行状態レジスタBRの内容すなおち入力BRが“1”の
時だけワード演算プロセッサによって処理が行われる。 入力BRが“0″の時はビット演算プロセッサ1はこの
命令をNOPとして読み飛ばす。 次のOPR命令は5TEP命令のオペランドであり、こ
こではステップ番地mを指定している。 OPR命令は5TEP命令を★行する際にワード演算プ
ロセッサが使用するもので、ビット演算プロセッサはO
PR命令を読み飛ばす。 次のロード命令(Hト)はビット演算プロセッサによっ
てのみ実行される命令であり、ステップmのBUSYフ
ラグの内容を実行状態レジスタにロードする命令である
。従ってステップmがアクティブの時は、このロード命
令の次の命令の入力BRは“1”になり、イナクティブ
の時は次の命令の入力BRが“ONになる。 次のREG命令は入力BRが“1”の時のみワード演算
プロセッサで処理が行われる。ワード演算プロセッサは
ステップmのBUSYフラグアドレスをBUSYスタッ
クに登録し、スタックポインタを更新する。入力BRが
“0”の時REG命令はビット演算プロセッサにより読
み飛ばされる。 次のOPR命令はREG命令で登録されるステップmの
BUSYフラグアドレスを示しており、ワード演算プロ
セッサがREG命令を実行する時に使用する。REG命
令の入力BRが“0”の時はこの命令もREG命令と同
様にビット演算プロセッサにより読み飛ばされる。 WA I T命令は第8図に示すように2ワードで構成
され、A接点(Hト)命令は入力BRと遷移条件の値(
主としてTRフラグの内容)の論理積をとる命令である
。従ってステップmがアクティブで、かつ遷移条件が成
立している時のみ次のWAIT命令の入力BRが“1”
になる、A接点命令は常にビット演算プロセッサにより
実行される。 WAIT命令は入力BRが“1”の時のみワード演算プ
ロセッサによって実行され、入力BRが“0”の時はビ
ット演算プロセッサにより読み飛ばされる。 ワード演算プロセッサはBUSYスタックからBUSY
フラグのアドレスを1個読み出し、そのアドレスのフラ
グをリセットする。すなわち前のステップのREG命令
で登録されたフラグアドレスはここで使用される。その
後スタックポインタを1個分戻しておく、入力BRが“
1”の時、出力BRも“1”とする、従って前ステップ
がイナクティブになった時、次のステップの入力BRは
“1”となる、そこで次のステップはアクティブになる
6以上のようにして単純遷移が実行される。 選択実行は第9図のような形で表わされ、ステップmが
アクティブの時、以降の分岐条件が調べられる。遷移条
件aが成立している時はシーケンスaが、遷移条件すが
成立している時にはシーケンスbが、遷移条件Cが成立
している時にはシーケンスCが実行される0合流点にお
いてどれか1つの完了条件が成立していると合流が成立
して次のステップに実行が移る。 第9図のシーケンスプログラムは第10図に示す命令語
で構成される0分流命令(BRANCH)はステップm
のアクティブ状層を各分岐シーケンスに伝えるために、
BRを分流スタックにブツシュする命令である。ここで
ブツシュされた値は後で各シーケンスの先頭で取り出さ
れ、BRにロードされる。WAIT命令、ステップ命令
は単純遷移で説明したものと全く同じである。 5ELSEQ(A)命令は分流シーケンスの先頭に置か
れ、分流スタックの最新値をBHにロードする0分流ス
タックのポツプはしない、従ってBRAMCH命令でブ
ツシュされた値は分流スタックの最新値として残ってい
る。また前の列のシーケンスの完了条件(合流点直前の
遷移条件)の演算結果を合流スタックにブツシュする。 この値は後の合流点で分岐シーケンスの完了チェックに
使用される。 END 5ELSEQ命令は分岐シーケンスの最後に置
かれる。これは合流スタックから最新値をポツプし、B
R(シーケンス完了で“1”)との論理和をとってBR
にロードする。このように各シーケンスの完了結果は次
のシーケンスの最後でそのシーケンスの完了結果との論
理和がとられるので、どれか1つのシーケンスが完了す
れば、全ての分岐シーケンスの最後でBRが必ず“1”
になり、分岐シーケンスが完了したことが分る。 5ELSEQ(B)命令は最も右側の分岐シーケンス(
最後の分岐シーケンス)の先頭に置かれる。 これはBRの内容を合流スタックにブツシュする。 また5ELSEQ(A)命令とは異なり1分流スタック
の最新値をポツプしてBRにロードする。これによりB
RにはBRANCH命令でブツシュしたステップmのア
クティブ状態がロードされ、ここまでの分岐シーケンス
の完了状態の論理和が合流スタックにブツシュされたこ
とになる。 このシーケンスの最後にもEND 5ELSEQ命令
が置かれる。ここで合流スタックから最新値をポツプし
、BR(このシーケンスの完了状態を示している)との
論理和をとってBRにロードする。このBHの内容はこ
れまで全ての分岐シーケンスの完了状態を示している。 従ってこの内容が“1”であれば合流点以下のステップ
が実行されることになる。この時アクティブだったステ
ップは完了条件をチェックしたWAIT命令によってす
でにイナクティブにされている。 なおりRANCH,5ELSEQ(、A)、5ELSE
Q(B)、END 5ELSEQ命令は全てビット演算
プロセッサによりハードウェアで実行される。 並列実行は第11図に示すような形式で表わされ、ステ
ップmがアクティブでかつ直後の遷移条件aが成立して
いる時、ステップm+1.m+3.m+5が同時アクテ
ィブになり、従って並列に実行される。この点が選択実
行と異なる0合流点では直前のステップm + 2 、
m +4 、 m + 6が全てアクティブで、かつ
遷移条件すが成立した時にのみ合流が完了する。 第11図のプログラムの命令後の構成を第12図に示す
、ステップ命令およびWAIT命令は単純遷移の場合と
同じである。またBRANCH命令は選択実行の場合と
同じであり、ステップmの完了状態を分流スタックにブ
ツシュする。 並列実行では選択実行の場合とは異なり、最後のシーケ
ンス以外ではシーケンスの最後に特別の命令はない、P
AR8EQ命令は並列シーケンスの先頭に置かれ、その
機能は5ELSEQ命令と同じであり、表示シンボルの
みが異なる。並列シーケンスの最後にだけEND PA
R8EQ命令が置かれる。これはEND PAR5E
Q(A)とEND PAR8EQ(B)命令に分かれて
いる。 END PAR8EQ(A)命令は入力BRが“1”の
時のみワード演算プロセッサにより実行される。 オペランドに示された並列シーケンスの数マイナス1個
のデータを合流スタックからポツプし、それらの全ての
データとBHの論理積をとってBRにロードする。従っ
て出力BRが“1”になるのはステップm + 2 、
m + 4 、 m + 6が全てアクティブの時だ
けである。 次にこのBRを入力として遷移条件すが実行され1条件
が成立すると出力BRが“1#になる。 出力BRが“1”のとき次のEND PAR8EQ(B
)命令が実行され、′0”の時は実行されない、また入
力BRが“0”の時、END PAR5EQ(A)、(
B)命令は共にビット演算プロセッサにより読み飛ばさ
れる。 END PAR8EQ(B)命令は入力BRが1”の
時のみワード演算プロセッサにより実行される。 入力BRが“1”の時、オペランドで示される並列実行
シーケンスの数だけのBUSYフラグアドレスをBUS
Yスタックからポツプし、そのアドレスのフラグをリセ
ットする。これによってステップm+2.m+4.m+
6のBUSYフラグがリセットされ、出力BRは“1”
となる、出力BRが“1”の時は合流点以下のステップ
が実行されて行く、もし並列完了が成立しなかった場合
にはスキャンごとにEND PAR8EQ(A)命令か
ら同様のチェックが行すれる。 シーケンスの最後にはEND 5TEP命令を置<、E
ND 5TEP命令は常にワード演算プロセッサにより
実行される。END 5TEP命令は入力BHの内容
にかかわらずBUSYスタックポインタをリセットする
。これによってスキャンの間にリセットされずにBUS
YスタックにたまったBUSYフラグアドレスは捨てら
れ、次のスキャン実行において、アクティブなステップ
のBUSYフラグアドレスが再び登録される。入力BR
が“1”の時のみ、そのシーケンスのスタートステップ
のBUSYフラグをセットする。これにより次のスキャ
ンにおいてはスタートステップから実質的な実行が始ま
ることになる。 次に具体的なスキャン実行手順を第13図を参照して説
明する。 第1311は実際のプログラムの構成の一例を示したも
ので、第1図の場合と同じように3つの部分に分れてい
る。 最初の部分(A)は遷移条件の設定プログラムであり、
ラダーダイアグラムまたはステートメント命令で書かれ
ている。このプログラムでは各種の入力を演算し、出力
としては遷移フラグ(TRフラグ)をオン/オフさせる
。このTRフラグはステップシーケンスプログラムにお
いてステップの実行完了の判定および次のステップへの
遷移条件の判定に使用される。 第2の部分(B)はプログラムの中心となるステップシ
ーケンスプログラムであり、ここでは第11図に示した
並列実行シーケンスをそのまま使用している。 第3の部分(C)は出力プログラムであり、ステップに
対応する実際の処理はここにラダーダイアグラムまたは
ステートメント命令を使用して書かれる。あるステップ
に対応する処理はすべて先頭にそのステップのBUSY
フラグを接点情報として持つようにプログラミングする
。こうすることによりこの処理は対応するステップがア
クティブの時のみ実行され、イナクティブの時には全て
の出力がオフになるようにすることができる。 出力プログラムを全て実行すると、PCは再び遷移条件
プログラムを先頭から実行して行く。 先ずステップmのみアクティブであるとする。 この時の状態が命令実行説明図第14図(図面の都合上
A、Bに分割して示した)の命令番号1に相当する。命
令番号は第12図によるものとし、また分流スタック、
合流スタックは全てリセットされ。 ステップmのBUSYフラグのみがセットされているも
のとする。 遷移条件設定プログラム(以下TRプログラムと呼ぶ)
を実行してもaの出力はオンしなかったものとする。 次にステップシーケンスプログラムを実行する。 FNC5TEP命令1の入力BRが“0″であったとす
ると、これは次のOPR命令と共にビット演算プロセッ
サにより読み飛ばされる。 次のロード命令(H)−m)を実行すると、 ステップ
mのBUSYフラグがBRにロードされる。 従ってFNCREG命令の入力BRは“1”となる。 FNCREG命令は入力BRが“1”なのでワード演算
プロセッサにより実行される。ここでステップmのBU
SYフラグアドレスがBUSYスタックに登録され、出
力BRは“1”である。 次にA接点(−11−a)を実行する。入力BRは“1
“となっているがTRプログラムにおいてコイルaがま
だオンしていないので、出力BRは“O”である、従っ
て以下のステップシーケンスプログラムは全てビット演
算プロセッサが実行し、実質的に読み飛ばしとなる。 出力プログラムではステップmのBUSYフラグの条件
を持っているシーケンスのみがオンになり、第13図の
場合はYl、Y2.Y3がオンになる。他のシーケンス
では出力がオンになるものはなくこれで1回目のスキャ
ンの実行を終了する。 2度目のスキャン実行では、TRプログラムにおいて1
条件Yl、Y2.Y3がオンしたことがらコイルaがオ
ンとなり、ステップシーケンスプログラムにおいて、
FNCREG命令4迄実行した時の各種レジスタの状態
はやはり第14図の命令番号4の状態と同じになる。B
USYスタックは1回目のスキャンでステッププログラ
ムの最後にある END 5TEP命令によりリセッ
トされるが、このFNCREG命令により再び登録が行
われている。 次にA接点を再び実行すると、今回はaがオンなので出
力BRは“1”となり、FNCWAIT命令の入力BR
は“1”となる。 FNCWAIT命令では入力BRが“1”なので、ワー
ド演算プロセッサにより実行が行われる。 これによってステップmからステップm+1への遷移が
可能となり、BUSYスタックからステップmのBUS
Yフラグアドレスを読み出してBUSYフラグをリセッ
トする。またBUSYスタックポインタも1ビット戻し
、出力BRは“1”となる、この時の各レジスタの様子
は第14図の命令番号7に示す通りとなり、全てのスタ
ック、フラグがリセットされている。 次に並列実行のためにBRAMCH命令を実行する、こ
れはビット演算プロセッサが行う、BRANC:H命令
はBRを分流スタックにブツシュするものでこの時の状
態は第14図の8に示すようになり、分流スタックの最
下位に“1”がブツシュされている。 次にステップm+1の5TEP命令を実行すると1m+
1のBUSYフラグがセットされる。この時のスタック
、フラグの様子を第14図の9に示す、同様にFNCR
EG命令の実行後の様子を第14図の12に示す、すな
わちステップm+1のBUSYフラグアドレスがBUS
Yスタックに登録されている。 ステップm+1の後のWAIT命令を実行すると、TR
,◆□フラグが“0”なので以降のBRは“0”になり
、ステップm + 2の出力BRも“O”である。 第12図21のPAR5EQ(A)命令を実行すると。 分流スタックの最下位ビットがBRにロードされ。 BRは“1”になる、従ってステップm + 3はアク
ティブとなり、25のFNCREG命令が実行された時
には、ステップm + 3のBUSYフラグがセットさ
れ、そのBUSYフラグアドレスがBUSYスタックに
登録される。この様子を第14図の25に示す。 また上記21のPAR5EQ命令では19のFNCRE
G命令の出力BR(ステプm+2の出力で、ここでは“
0”)を合流スタックにブツシュしているのだが、値が
“0”なので何の変化もない。 ステップm+3の後のWAIT命令を実行すると、T
Rws+aフラグ″0”なので、以降のBRは“0”に
なり、ステップm + 4はイナクティブであり、出力
BRも“0”である。 34のPAR8EQ(B)命令を実行すると、分流スタ
ックの最下位ビットはポツプされてBRにロードされ、
BRは“1”になる、またステップm+4の出力BR(
ここでは“0”)が合流スタックにブツシュされる。 ステップm + 5の入力BRは“1″となるのでアク
ティブとなり、38のFNCREG命令を実行した時に
はステップm + 5のBUSYフラグがセットされ、
そのBUSYフラグアドレスがBUSYスタックに登録
されている。従ってこの時点でステップm+1.m+3
1m+5は同時にアクティブになり、並列実行が行ねれ
る。この様子を第14図の38に示す。 ステップm+5の後のWAIT命令を実行すると、 T
R,+、フラグは“O”なので以降のBRは“0″にな
り、ステップm + 6はイナクティブであり、出力B
Rも“0”である、従って47以降のEND PAR8
EQ命令はビット演算プロセッサにより読み飛ばされ、
ステップm + 7がアクティブになることはない。 ステップシーケンス命令の最後のEND 5TEP命令
により、BUSYスタックに残っていた3個のBUSY
フラグアドレスはクリアされ1次のスキャンではまた新
たに登録が可能になる。BUSYフラグはリセットされ
ない。 つぎに出力プログラムを実行する。この時点ではステッ
プm + 1 、 m + 3 s m + 5のBU
SYフラグがセットされているので、それらの条件を回
路に持つシーケンスが実行され、各ステップの処理が行
われる1以上で2スキヤン目の実行が完了した。 次に3スキヤン目の実行を開始する。先ずTRプログラ
ムを実行する。ここでは前回のスキャンの出力プログラ
ムでステップm+1.m+3.m+5の処理が実行され
たので、それにより遷移フラグTR,+□、TR@+、
、TR@+、がセットされたものとする。 ステップシーケンスプログラムの11のロード命令(H
l−m+1)により、ステップm+1のBUSYフラグ
の内容がBRにロードされ、BRは“1”となる、従っ
て12のFNCREG命令がワード演算プロセッサによ
って実行され、BUSYスタックにステップm+1のB
USYフラグアドレスが登録され、出力BRが“1”と
なる。 次に14の遷移条件チェックを実行すると、TRプログ
ラムでTR,÷1フラグがセットされているので、15
のWAIT命令の入力BRは“1”となる、そこでワー
ド演算プロセッサによりWAIT命令が実行され、BU
SYスタックに登録されたステップm+1のBUSYフ
ラグアドレスはポツプされ、BUSYフラグもリセット
され、出力BRはl(I Nとなる。従ってステップm
+2の入力BRが初めて“1”になり、ステップm+2
がアクティブになる。 19のFNCREG命令を実行後の各種レジスタの様子
を第14図の19に示す、すなわちステップm+2のB
USYフラグがセットされ、BUSYスタックにそのB
USYフラグアドレスが登録されている。出力BRは“
1″であり、このシーケンスユニットについての実行が
完了した。 次に21のPAR8EQ(A)命令を実行する1分流ス
タックの最新値はここでは“0″(ステップmがイナク
ティブなので)であるから、BRも“O”となる、ステ
ップm+2の出力BRは合流スタックにブツシュされる
。この時点でのスタックの様子は第14図の21のよう
になっている。 ステップm + 3からステップm+4への遷移条件T
R++a+sも成立しているのでステップm + 4
もアクティブになる。従ってステップm +4のBUS
Yプラグがセットされ、そのフラグアドレスがBUSY
スタックに登録され、出力BRは“1”である。 次に34のPAR5EQ(B)命令を実行すると。 ステップm+4の出力BRが合流スタックにブツシュさ
れ、分流スタックの最新値がポツプされてBRにロード
される0分流スタックの内容は“OnなのでBRは1′
0”となる、この時点でのスタックの様子は第14図の
34のようになっており、合流スタックに“1”が2個
ブツシュされている。 ステップm+5からステップm + 6へ遷移条件TR
,+、も成立しているのでステップm + 6もアクテ
ィブになる。従ってステップm+6のBUSYフラグが
セットされ、そのフラグアドレスがBUSYスタックに
登録される。ステップm + 6のFNCREG 命令
が実行された後の各種スタックの様子を第14図の45
に示す。 これによって47のFNCEND PAR3EQ(A
)命令の入力BRが初めて“1”になり、その処理がワ
ード演算プロセッサにより行われる。この命令は48の
オペランド命令に示される並列実行シーケンス数マイナ
ス1個のデータ(ここでは2個)を合流スタックからポ
ツプし、それらとBRの論理積をとり、それをBHにロ
ードする。つまりスタンプm+2とm+4とm + 6
が全てアクティブの時のみ、この命令の出力BRが“1
#になる。 次にこれら3個の並列シーケンスの完了遷移条件すのチ
ェックを行う、49のA接点(@トb)命令の入力BR
は“1”であるが、bはオフであったとすると、次のE
ND PAR8EQ(B)命令の入力BRは“O”とな
り、この命令以降の命令は全てビット演算プロセッサに
より読み飛ばされる。 出力プログラムの実行が行われると、今回のスキャンで
はステップm + 2 、 m + 4 、 m +
8の条件を含むシーケンスが実行され、各ステップの処
理が行われる0以上で3スキヤン目の実行が完了した。 次に4スキヤン目の実行を開始する。先ずTRプログラ
ムを実行する。ここでは前回のスキャンの出力プログラ
ムでステップm+2.m+4.m+6の処理が実行され
たので、それにより遷移条件すがセットされたものとす
る。 ステップシーケンスプログラムの実行を行って行くと、
先ずステップm+2のBUSYフラグが“1”なのでス
テップm + 2がアクティブになり、その出力が次の
シーケンスユニットの先頭で合流スタックにブツシュさ
れる。次にステップm + 4のBUSYフラグも“1
#なのでステップm+4もアクティブになり、その出力
が最後のシーケンスユニットの先頭で合流スタックにブ
ツシュされる1次にステップm+6のBUSYフラグも
“IHなのでステップm+6もアクティブになり、ステ
ップm+6の FNCREG命令を実行した後の各種ス
タックの状態は3スキヤン目の状11(第14図の45
)と全く同一になっている。従って、END PAR5
EQ(A)命令の実行も全く同様に行われ、実行後の各
種スタックの状態は第14図の47のようになる。 次に並列シーケンスの完了遷移条件であるbのチェック
を行う、49のA接点(−1)−b)命令の入力BRは
3スキヤン目の実行時と同様に“1”であり、今回のス
キャンではbもオンなので出力BRは“1”となり、並
列完了が成立し9次のステップへの実行の遷移が可能に
なる。 これによってEND PAR8EQ(B)命令の入力B
Rが初めて“1″になり、ワード演算プロセッサにより
この命令の処理が行われる。この命令はオペランド命令
で示される並列実行シーケンス数(ここでは3)だけの
BUSYフラグアドレスをBUSYスタックからポツプ
し、それらの指すフラグをリセットする。すなわちこの
時点でステップm+2.m+4.m+6のBUSYフラ
グはリセットされ、ステップはイナクティブになり、出
力BRは“1”である、この時点での各種スタックの状
態を第14図の50に示す。 次のステップm+7の入力BRは“1”となり。 ステップm+7はアクティブになる0以上のようにして
スキャンが行われる。 〔発明の効果〕 以上説明したように本発明のプログラマブルコントロー
ラでは、ステップシーケンス型のプログラムの実行のた
めに、O8処理および応用命令処理用のワード演算プロ
セッサに加えて、ラダーダイアグラム式シーケンス命令
をハードウェアにより高速処理するビット演算プロセッ
サを持ち、プログラム全体をスキャン実行する事により
、ステップシーケンスの機能を実現する事が可能である
。 ビット演算プロセッサが、ハードウェアにより。 論理積、論理和命令を処理する他に、内蔵の分流。 合流スタックを使用して、選択実行、並列実行時の分岐
9合流の処理を効率良く実行するので、O8処理用ワー
ド演算プロセッサが分岐9合流時のアドレス制御や実行
状態のデータを管理する方法に比べて、はるかに高速に
プログラムを実行可能である。 また単純遷移において、WAIT命令に付随する遷移条
件が不成立の場合に、その条件が成立するまで締返しチ
ェックする必要がある。この場合に、O8処理用ワード
演算プロセッサによる処理では、条件命令の先頭アドレ
スを再実行アドレスとして保存しておき、条件不成立の
場合にはそのアドレスから再実行しなければならずこの
処理に加えて、常に条件命令の先頭を検出して再実行ア
ドレスとして保存する処理が必要であり、また、再実行
アドレスの保存エリアは並列実行可能なシーケンスの数
だけ必要になり、そのテーブルの管理も大きな負担とな
るが本発明のプログラマブルコントローラではスキャン
実行を行い、不成立の遷移条件があっても全体を繰返し
チェックするので、条件命令の先頭アドレスを検出した
り、保存したりしておく必要はなく、従ってO8処理用
のワード演算プロセッサを要するのは応用命令の処理時
のみとなり、ワード演算プロセッサは他のテーブル管理
等の処理からも解放され、O8の処理が単純化され、余
った能力を他の処理に使用することも可能になる。 また全体をスキャン実行すると言っても、ワード演算プ
ロセッサが処理を行うのはアクティブなステップについ
てのみであり、アクティブなステップは1個のシーケン
スユニットに1個だけなので、その処理は少ない、また
残りのプログラムはビット演算プロセッサが全て読み飛
ばすが、その速度は1命令に付き200 ns以下なの
で、1000ワードの命令から成るプログラムでも20
0Ilsで処理可能であり、スキャン速度は十分である
。 さらにステップシーケンス型のプログラムではステップ
からステップへ実行を遷移させた時に、前のステップで
の出力をオフにする必要があるが、本発明の方式では出
力プログラムでの出力条件に、該当するステップのアク
ティブ状態を使用するので、ステップがイナクティブに
なった時には、そのスキャンの実行で出力がオフされる
ので、わざわざ前ステップでの出力を捜してオフする必
要がない。 すなわち本発明によればビット演算用ハードウェアをo
S処理用のワード演算プロセッサと併用し、前者により
ステップ間の実行遷移条件の演算。 アクティブなステップの出力処理、イナクティブなステ
ップの読飛ばし、ステップシーケンスプログラムの分岐
処理そして合流処理の一部を実行させると共に、ステッ
プシーケンスプログラムのステップ自身が自ステップの
アクティブ状態を検出して以降の処理が実行でき、また
実行遷移条件成立時にはWAIT命令が対応するステッ
プをイナクティブにできるように命令語を構成すること
により、ステップシーケンスプログラムのスキャン実行
を可能にし、O8でのテーブル管理等の複雑な処理を削
減すると共にプログラムを高速に実行可能なプログラマ
ブルコントローラを提供することができる。
第1図は本発明のPCの構成を示すブロック図。
第2図は本発明のPCが使用するプログラムの構成図、
第3図はGRAFCETタイプのステップシーケンスプ
ログラムの図、第4図はWA I T命令の命令語構成
を示す図、第5図は並列実行シーケンスを説明するため
の図、第6図は第5図のプログラムを実行するのに必要
なテーブルの図、第7図はステップの命令語構成を説明
する図、第8図はWAITの命令語構成を示す図、第9
図は選択実行プログラムを説明する図、第1O図は第9
図のプログラムの命令語構成を示す図、第11図は並列
実行プログラムを説明する図、第12図は第11図のプ
ログラムの命令W構成を示す図、第13図はスキャン実
行の説明に使用するプログラムの構成図、第14図(A
)および第14図(B)はスキャン実行時の各種スタッ
ク、フラグの状態を説明する図である。 1・・・ワード演算プロセッサ 2・・・ビット演算プロセッサ 2−1・・・実行状態レジスタ(B R)2−2・・・
分流スタック 2−3・・・合流スタック3・・・プ
ログラムメモリ 4・・・I10レジスタ5・・・CP
Uバス 6・・・ワーキングメモリ6−1・・・B
USYスタック 6−2・・・BUSYスタックポインタ6−3・・・B
USYフラグ 6−4・・・TRフラグ7・・・工10
8・・・I10バス第1図 第2図 第3図 第4図 第5図 第6図 第8図 第9図 第10図 第′13図 第111図(A・) 第14図(B)
第3図はGRAFCETタイプのステップシーケンスプ
ログラムの図、第4図はWA I T命令の命令語構成
を示す図、第5図は並列実行シーケンスを説明するため
の図、第6図は第5図のプログラムを実行するのに必要
なテーブルの図、第7図はステップの命令語構成を説明
する図、第8図はWAITの命令語構成を示す図、第9
図は選択実行プログラムを説明する図、第1O図は第9
図のプログラムの命令語構成を示す図、第11図は並列
実行プログラムを説明する図、第12図は第11図のプ
ログラムの命令W構成を示す図、第13図はスキャン実
行の説明に使用するプログラムの構成図、第14図(A
)および第14図(B)はスキャン実行時の各種スタッ
ク、フラグの状態を説明する図である。 1・・・ワード演算プロセッサ 2・・・ビット演算プロセッサ 2−1・・・実行状態レジスタ(B R)2−2・・・
分流スタック 2−3・・・合流スタック3・・・プ
ログラムメモリ 4・・・I10レジスタ5・・・CP
Uバス 6・・・ワーキングメモリ6−1・・・B
USYスタック 6−2・・・BUSYスタックポインタ6−3・・・B
USYフラグ 6−4・・・TRフラグ7・・・工10
8・・・I10バス第1図 第2図 第3図 第4図 第5図 第6図 第8図 第9図 第10図 第′13図 第111図(A・) 第14図(B)
Claims (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 true JPS6398704A (ja) | 1988-04-30 |
JPH0731527B2 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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6780312B2 (en) | 2000-04-27 | 2004-08-24 | Nihon Genryo Co., Ltd. | Filtration apparatus |
US7267767B2 (en) | 2001-11-19 | 2007-09-11 | Nihon Genryo Co., Ltd. | Filtration apparatus |
US7520986B2 (en) | 2003-10-28 | 2009-04-21 | Nihon Genryo Co., Ltd. | Filtration device |
Citations (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
Patent Citations (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 | プログラマブルコントロ−ラ |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6780312B2 (en) | 2000-04-27 | 2004-08-24 | Nihon Genryo Co., Ltd. | Filtration apparatus |
US7267767B2 (en) | 2001-11-19 | 2007-09-11 | Nihon Genryo Co., Ltd. | Filtration apparatus |
US7520986B2 (en) | 2003-10-28 | 2009-04-21 | Nihon Genryo Co., Ltd. | Filtration device |
Also Published As
Publication number | Publication date |
---|---|
JPH0731527B2 (ja) | 1995-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH04505818A (ja) | 並列多重糸データ処理システム | |
JPS58151655A (ja) | 情報処理装置 | |
JPH0736848A (ja) | 情報処理装置および処理方法 | |
JPS6398704A (ja) | プログラマブルコントロ−ラ | |
JP2690406B2 (ja) | プロセッサおよびデータ処理システム | |
JPH0523447B2 (ja) | ||
US5819081A (en) | Method of executing a branch instruction of jumping to a subroutine in a pipeline control system | |
JPS6314275A (ja) | ベクトル演算プロセツサのスカラデ−タ演算方式 | |
JPH07219766A (ja) | 演算処理装置 | |
JP2552738B2 (ja) | データ処理装置 | |
JPS59218569A (ja) | マイクロ・コンピユ−タ | |
JPH0377137A (ja) | 情報処理装置 | |
JPH082727Y2 (ja) | プログラマブルシ−ケンサ | |
JP2506591B2 (ja) | 補助処理装置 | |
JP2934060B2 (ja) | 例外処理方法および例外処理装置 | |
JPS6325372B2 (ja) | ||
JPH02214938A (ja) | データ処理装置 | |
JP2005338929A (ja) | 半導体装置 | |
JPS5875250A (ja) | デジタル情報処理装置 | |
JPH01234957A (ja) | Dma制御方法及び装置 | |
JPS6015970B2 (ja) | マイクロプロセツサにおける割込処理装置 | |
JPH08297583A (ja) | 割り込み処理装置およびその方法 | |
JPH03108061A (ja) | ベクトル演算装置 | |
JPH10312279A (ja) | ビット検索回路およびこれを有するマイクロプロセッサ | |
JPH0531170B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EXPY | Cancellation because of completion of term |