JP2553055B2 - プログラマブルコントロ−ラ - Google Patents

プログラマブルコントロ−ラ

Info

Publication number
JP2553055B2
JP2553055B2 JP61271921A JP27192186A JP2553055B2 JP 2553055 B2 JP2553055 B2 JP 2553055B2 JP 61271921 A JP61271921 A JP 61271921A JP 27192186 A JP27192186 A JP 27192186A JP 2553055 B2 JP2553055 B2 JP 2553055B2
Authority
JP
Japan
Prior art keywords
sequence
unit
cpu
units
function
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
Application number
JP61271921A
Other languages
English (en)
Other versions
JPS63127303A (ja
Inventor
和英 芦田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Tokyo Shibaura Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tokyo Shibaura Electric Co Ltd filed Critical Tokyo Shibaura Electric Co Ltd
Priority to JP61271921A priority Critical patent/JP2553055B2/ja
Publication of JPS63127303A publication Critical patent/JPS63127303A/ja
Application granted granted Critical
Publication of JP2553055B2 publication Critical patent/JP2553055B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】 [発明の目的] (産業上の利用分野) 本発明はベルトコンベヤを用いた移送装置やロボット
を用いた組立装置などのステップシーケンス制御に使用
するプログラマブルコントローラに関するものである。
(従来の技術) 最近IECによりプログラマブルコントローラ(以下PC
と呼ぶ)の標準化言語の1つとして、GRAFCET型のステ
ップシーケンスプログラム言語が提案されている。
GRAFCET型のステップシーケンスプログラム言語は状
態遷移型シーケンスプログラムであり、第11図に示すよ
うに、処理を記述する複数のステップと、1つのステッ
プから次のステップへの実行の遷移条件を検査するWAIT
命令から成り、現在実行中のステップY直後のWAIT命令
に付随する遷移条件Xが成立するまでは次のステップY
+1の実行を行わず、遷移条件が成立したときに前ステ
ップの出力をオフにして次のステップの処理を実行す
る。
この言語の特徴はWAIT命令を持ち、WAIT命令に付随す
る遷移条件が成立していない間は次のステップの実行は
行わず、その遷移条件の判定を繰返し実行することであ
る。
ステップシーケンス型PCの実行速度の高速化には種々
の方法がある。
例えば、複数のCPUユニットによる並列実行もその1
つの方法であるが、この場合に問題となるのがプログラ
ムをどのように各CPUユニットに分配するかである。ス
テップシーケンスプログラムにおいて、WAIT命令に付随
する遷移条件が成立するまでの待ち時間は、プログラマ
ブルコントローラで制御するプロセス、機器などの動作
状態等の外部事象に左右されるので、単純にプログラム
の長さだけで各CPUユニットにプログラムを分配する
と、各CPUユニットの負荷にアンバランスが生じて最適
な実行効率は得られない。
(発明が解決しようとする問題点) 本発明は複数のシーケンスユニットを持つステップシ
ーケンスプログラムの実行速度を複数のCPUユニットを
並列実行させることによって向上させると共に、各CPU
ユニット間の負荷をバランスさせ、これによって全体と
して実行効率を向上したプログラマブルコントローラを
提供することを目的としている。
[発明の構成] (問題点を解決するための手段と作用) 本発明のプログラマブルコントローラは、複数のシー
ケンス命令からなる所定の制御を行う複数のシーケンス
ユニットから構成され、並列処理される全てのシーケン
スユニットの処理が完了しないと並列処理以降の処理が
行えない場合には上記並列処理される全てのシーケンス
ユニットによる処理が完了するまで待ち合わせを行う状
態遷移型シーケンスプログラムを格納するプログラムメ
モリと後述する割付け手段により割付けられたシーケン
スユニットを処理するCPUとからなる複数のCPUユニット
と、上記複数のCPUユニットの各CPUユニットがどのシー
ケンスユニットを処理するかを割付ける割付け手段と、
上記CPUユニット毎に各CPUユニットが処理を行っている
時間をカウントしてその総実行時間を求めるカウント手
段と、上記CPUユニット毎の総実行時間を比較してアン
バランスなときには上記割付け手段の割付け内容を変更
する割付け変更手段とを設けているので、外部の負荷状
態が変化しても自動的に最適な負荷配分でプログラム処
理を行うことができる。
(実施例) 本発明の一実施例を第1図に示す。第1図では簡単の
ためにCPUユニットが2個の場合を示しているが、3個
以上の場合にも適用可能である。
第1図はCPUユニットの概略図であり、CPUユニット1A
とCPUユニット1Bは同一構成となっており、それぞれCP
U、プログラムメモリおよびワーキングメモリを持って
いる。また、2は制御テーブル用の共有メモリ、3は共
用のCPUバス、4は共用のI/O、5はプログラミングユニ
ットである。
各CPUユニットのプログラムメモリには共通のOSおよ
びプログラミングユニット5で作成された同一のプログ
ラムが格納されており、上記プログラムに含まれるシー
ケンスユニット1〜nは後述するシーケンス割付テーブ
ルに従って上記CPUユニット1A、1Bによって分担して並
列実行される。OSは通常PCで用いられているものと同様
に外部通信、自己診断、ステップシーケンスプログラム
の起動、停止および定期的なスキャン実行等を行うとき
に使用される。
第2図は上記CPUユニットの分担の一例を示すシーケ
ンス割付ケーブルであり、共有メモリ2に格納される。
次に本発明のステップシーケンス型PCがステップシー
ケンスプログラムを実行するための命令およびメモリエ
リア(ワークエリア)について説明する。
先ず、シーケンスプログラムを構成するファンクショ
ンの概略を説明する。
第3図(A),(B)はそれぞれファンクションの一
例を示すものである。ファンクションは、複数のシーケ
ンスユニットと複数のSTEPとからなり、シーケンスユニ
ットは、複数のSTEPとからなる。例えば、複数の機器・
装置により一連のプロセスを行なうようなときには、フ
ァンクションは、一連のプロセスを行なう複数の機器・
装置の相互関係を含めた全体の制御を行なうもので、シ
ーケンスユニットは、それぞれの機器・装置の制御を行
なうもので、STEPは、それぞれの機器・装置を制御する
ために行なう一つ一つの手順を制御するものである。
また、シーケンスユニットは、同時実行が可能なこと
を特徴とするプログラムシーケンスであり、第3図
(B)のファンクションは、分岐点以降2個のシーケン
スユニットが並列実行されるファンクションである。第
3図(A)のファンクションでは、分岐点は存在するが
この分岐は、どちらかを選択実行するものであるので、
シーケンスユニットとしては1個のシーケンスユニット
を有するファンクションである。
ここでは、一つのファンクションのみ示したが、通常
はファンクションが複数集まって一つのシーケンスプロ
グラムを構成している。
次に、第4図に示す本PCで使用するシーケンス命令に
ついて説明する。
STEP命令はプログラムの処理を示し、ビット入出力の
セットリセットや数値転送およびデータ処理の命令など
がこの中に書かれる。
WAIT命令はこの命令に付随している条件がONのときに
次に命令の処理を実行し、条件がOFFのときは他のシー
ケンスユニットまたはファンクションを実行し、WAIT条
件は次回のスキャン時に再びチェックされる。
BRANCH(選択実行)命令は分岐した1本の水平線で表
わされ、条件により実行すべきシーケンスの流れを選択
する。この命令は排他実行であり、常にただ1個のシー
ケンスのみが実行される。選択実行プログラムはBR SEQ
命令で始まり、END BR SEQ命令で終了し、JOIN命令によ
って元のシーケンスに戻る。
PAR BR(並列実行)命令は無条件に複数のシーケンス
ユニットを起動することが可能であり、分岐した2本の
水平線で表わされる。
PAR SEQ命令は並列実行されるシーケンスユニットの
先頭を示し、END PAR SEQ命令はその終了を示す。並列
起動された全シーケンスユニットの完了は並列起動起動
されたシーケンスユニットの合流点でPAR JOIN命令によ
りチェックされ、全シーケンスユニットの完了を待って
次に命令を実行する。
START命令はファンクションの先頭を示し、END命令は
ファンクションの終了を示す。この命令の後に付される
数字はファンクションの番号を示している。
次に第3図で示したファンクションを実行制御するた
めのファンクション制御フラグおよびテーブル等からな
るワークエリアについて第5図を用いて説明する。
ワークエリアは、シーケンスプログラムの実行状態や
制御するためのアドレス等を一時的に保持する領域であ
る。
第5図に示したワークエリアは、一つのファンクショ
ンに対するもので、複数のファンクションがあるときに
は、それぞれのファンクションごとにワークエリアが必
要である。また、ここでは簡単化のために一つのファン
クションは最大16個のシーケンスユニットを含めるもの
とし、各シーケンスユニットからCALLするサブルーチン
ファンクションは、1レベルのCALL(つまり、CALLされ
たサブルーチンファンクションから他のサブルーチンフ
ァンクションはCALLされない)とする。ここでいうサブ
ルーチンファンクションとは、実行中のファンクション
のシーケンスユニットからCALLされたファンクション
(通常は利用頻度の高い制御を記載したファンクショ
ン)である。
各シーケンスユニットには、プログラム全体での通し
番号がつけられており、該通し番号により各シーケンス
ユニットは管理されている。
例えば、並列起動を行うときには、PAR BR命令の後に
起動するシーケンスユニットの通し番号を記載すること
によって、記載された通し番号のシーケンスユニットが
並列実行される。
次に、ワークエリアの各部について説明する。
BUSYフラグワードAの各ビットはその時点で起動され
ている各シーケンスユニットに対応しており、“1"は起
動中(例えば、並列実行されるシーケンスユニットの数
がCPUユニットの数よりも多い場合には、全てのシーケ
ンスユニットを同時に並列実行できないので、この場合
の起動中とは、PAR BR命令により起動されたシーケンス
ユニット、つまり、CPUユニットにより処理中のシーケ
ンスユニット及び並列実行されるべき状態にあるシーケ
ンスユニットを指す。)、“0"は実行完了または停止中
を示す。
ネストフラグワードBの各ビットは各シーケンスユニ
ットに対応しており、“1"のときはそのシーケンスユニ
ットが他のファンクションをサブルーチンファンクショ
ンとしてCALLしていることを示し、“0"のときはサブル
ーチンファンクションをCALLしていないことを示す。
ユニットポインタCはそのファンクション中で現在実
行中のシーケンスユニットの番号を示している。
ユニットエントリアドレステーブルDの各ワードは各
シーケンスユニットに対応しており、各シーケンスユニ
ットの遷移条件の成立待ちになっているWAIT命令の再実
行のために、該WAIT命令実行のためのアドレスが格納さ
れている。
サブルーチンファンクションテーブルEの各ワードは
各シーケンスユニットに対応しており、各シーケンスユ
ニットが他のファンクションをサブルーチンファンクシ
ョンとしてCALLしているときにはCALLしているファンク
ションの通し番号を格納しておく。
リターンアドレスレジスタFは自ファンクションがサ
ブルーチンファンクションとしてCALLされているときに
は、呼出し側(CALLした)ファンクションへの戻りアド
レスを格納しておく。
ネストカウンタGは、“1"で自ファンクションがサブ
ルーチンファンクションとしてCALLされていることを示
し、“0"でこのファンクションが通常のファンクション
であることを示している。
次に命令の動作と関連づけて第5図に示したワークエ
リアの機能を第6図および第7図に示したファンクショ
ンプログラムの一例を参照して説明する。第6図および
第7図のファンクションプログラムは第8図に示す穴開
け装置を操作するためのものである。
先ず、第6図および第7図のファンクションプログラ
ムで使用する命令について、説明する。
START…ファンクションのコンテキスト(フラグ情報
等の実行環境情報)をロードして、ファンクションの実
行を可能にする。その後ワークエリアのBUSYフラグワー
ドAをチェックし、BUSYフラグワードAが全て“0"のと
きは、ユニットポインタCに最も若いシーケンスユニッ
トの番号をロードしてそのエントリアドレスへジャンプ
し、BUSYフラグワード、に“1"のビットがあるときに
は、ユニットポインタCの指すシーケンスユニットのエ
ントリアドレスへジャンプする。
WAIT(X)…前のステップから次のステップへの遷移
条件のチェックを行う。遷移条件は(X)で指定され、
(X)はスイッチ、センサ等からのビット入力である。
先ず、自WAIT命令のアドレスを現在実行中のシーケンス
ユニットに対応するユニットエントリアドレステーブル
Dのワードにセーブする。その後、X=“1"(遷移条件
が成立)のときは、前のステップの実行は完了したの
で、次のステップを実行する。X=“0"(遷移条件が未
成立)のときは、ユニットポインタCを更新させてBUSY
のシーケンスユニットを捜し、BUSYのシーケンスユニッ
トがなければOSに戻り次のスキャンでの実行を待ち、BU
SYのシーケンスユニットがあれば、そのコンテキストを
ロードして対応するシーケンスユニットのエントリアド
レスへジャンプする。
CALL…呼出し側シーケンスユニットに対応したネスト
フラグワードBを“1"にセットし、CALLされたファンク
ションの番号をサブルーチンファンクションテーブルE
に登録する。次に、CALLされたファンクションのネスト
カウンタGを“1"にしてリターンアドレスを有効にし、
戻りアドレス(呼出し側のCALL命令の次に命令のアドレ
ス)をリターンアドレスレジスタFに登録し、CALLされ
たファンクションの先頭へジャンプする。
END…ネストカウンタGが“0"のときは、通常のファ
ンクションなのでOSに戻り、OSは他のファンクションの
起動やスキャン実行時のスケジューリングを行う。ネス
トカウンタGが“1"のときは、CALLされたファンクショ
ンなので、ネストカウンタGを“0"にリセットし、次に
呼出し側のネストフラグワードBを“0"にリセットし
て、CALLされたファンクションのリターンアドレスレジ
スタFに登録されているアドレスへジャンプする。
PAR BR n1,…,nm(並行実行スタート)…シーケンス
ユニットn1,…,nmの先頭のアドレス(PAR SEQ n1,…,PA
R SEQ nmのアドレス)を対応するユニットエントリアド
レステーブルDのワードにセーブすると共に、シーケン
スユニットn1,…,nmに対応するBUSYフラグワードAをセ
ットする。
PAR SEQ n…並列実行シーケンスユニットの先頭を示
すもので、CPUユニットは、後述するシーケンス割付テ
ーブルを検索し、自CPUユニットがこのシーケンスユニ
ットを実行するかを決定する。自CPUユニットが実行す
るシーケンスユニットであれば続く命令を実行し、自CP
Uユニットが実行するシーケンスユニットでなければEND
PAR SEQ nまでの命令を読み飛ばし、実行はしない。
END SEQ PAR n…並列実行シーケンスユニットの終了
を示すもので、シーケンスユニットnは実行を完了した
ので、対応したBUSYフラグワードAをリセットする。
PAR JOIN n1,…,nm(並列完了チェック)…自PAR JOI
N n1,…,nm命令のアドレスを対応するユニットエントリ
アドレステーブルDのワードにセーブすると共に、シー
ケンスユニットn1,…,nmに対応するBUSYフラグワードA
をチェックし、完了(BUSYフラグが全て“0")のときは
次の命令を実行する。完了でないときには、WAIT命令に
おいてXが“0"のときと同様の処理、すなわち他のBUSY
のシーケンスユニットを捜して、その処理を行う。
次に以上の命令を用いてプログラムされる第8図に示
した穴開け装置の手順について説明する。ここでは、第
2、第3のステーションの前の回転板のプレートには、
あらかじめ部品が乗っているものとする。
穴開け装置は、部品をプレート1の上に乗せ搬送する
回転板2と、部品を供給する供給口3と供給口3からの
部品をプレート1に乗せるローダー4とからなる第1の
ステーションと、プレート1の上の部品に穴を開けるド
リル5とプレート1の上の部品を固定する押さえ部6と
からなる第2のステーションと、ドリル5によって開け
られたプレート1の上の部品の穴の大きさを計測する穴
径ゲージ7と穴の大きさが所定値未満の部品が送られる
正常品スライド8と穴の大きさが所定値以上の部品が送
られる異常品スライド9と正常品スライド8または異常
品スライド9にプレート1の上の部品を送るイジェクタ
ー10とからなる第3のステーション3とからなり、第1
のステーション乃至第3のステーションはそれぞれ等間
隔で配置されている。
次に、各ステーションでの動作について説明する。
第1のステーションでは、先ず、供給口3から部品が
供給され、供給された部品はローダー4により押し出さ
れ回転板のプレート1に乗せられる。
第2のステーションでは、先ず、押さえ部6により部
品が固定され、ドリル5によって部品に穴が開けられ
る。その後、押さえ部6による部品の固定が解除され
る。
第3のステーションでは、先ず、穴径ゲージ7でドリ
ル5によって開けられた部品の穴の大きさが計測され、
穴の大きさが所定値未満ならばイジェクター10により部
品を正常品スライドに送る。穴の大きさが所定値以上な
らばスライドを動かしイジェクター10の正面に異常品ス
ライド9を移動させた後イジェクター10により部品を異
常品スライド9に送り、その後スライドを動かしイジェ
クター10の正面に正常品スライド8を移動させる。
そして、第1のステーション乃至第3のステーション
の全ての工程が終了すると、回転板2を回転させ、次の
部品が送られてくると、第1のステーション1乃至第3
のステーションは上記工程を繰り返し行う。
次に第6図および第7図のファンクションプログラム
を用いて並列処理及びサブルーチンファンクションの呼
出しについて説明する。ここでは、2台のCPUユニット
によって、処理するものとし、かつ、シーケンス割付テ
ーブルによって、一方のCPUユニットAにはシーケンス
ユニット1、2、4、6が割付けられ、他方のCPUユニ
ットBにはシーケンスユニット3、5が割付けられてい
るとする。
シーケンス割付テーブルは、各CPUユニットがどのシ
ーケンスユニットを処理するかを割付けているもので、
各CPUユニットからアクセス可能な共有メモリに格納さ
れている。
ここでいうシーケンスユニット1はSTEP0であり、シ
ーケンスユニット2はSTEP1乃至STEP3であり、シーケン
スユニット3はSTEP4乃至STEP8であり、シーケンスユニ
ット4はSTEP9乃至STEP15であり、シーケンスユニット
5はSTEP16であり、シーケンスユニット6はファンクシ
ョン2のSTEP17乃至STEP20である。
先ず、CPUユニットA、Bは、シーケンス割付テーブ
ルを検索し、自CPUユニットがシーケンスユニット1を
実行するか決定する。この例ではシーケンスユニット1
はCPUユニットAに割付けられているのでCPUユニットA
によって実行される。このときCPUユニットBはシーケ
ンスユニット1を最後まで読み飛ばし、BUSYフラグワー
ドAをチェックする。この例では他のBUSYフラグワード
Aは“0"であるので処理待ちになる。
シーケンスユニット1では、最初にNo(1)のSTART
命令が実行され、ファンクションのコンテキスト(フラ
グ情報等の実行環境情報)がワークエリアにロードさ
れ、ファンクションの実行環境が整えられる。
次に、No(2)のSTEP 0が実行され、穴開け装置の各
ステーションの状態を初期状態にする。ここでは、第1
のステーションのローダー4を復帰状態にし、第2のス
テーションのドリル5を上昇状態、押さえ部6を復帰状
態にし、第3のステーションの穴径ゲージ7を上昇状
態、正常品スライド8をイジェクター10の正面に移動、
イジェクター10を復帰状態にする。
そして、No(3)のWAITの遷移条件であるスタートボ
タンがオンになると、No(4)のPAR BR 1,2,3が実行さ
れ、シーケンスユニット2、3、4の先頭のアドレス
(プログラムメモリ上の該シーケンスユニットが格納さ
れている先頭のアドレス)を対応するユニットエントリ
アドレステーブルDに登録し、シーケンスユニット2、
3、4に対応するBUSYフラグワードAを“1"にセットす
る。
No(4)のPAR BR 1,2,3により3つのシーケンスユニ
ット2乃至4のBUSYフラグワードAが“1"にセットされ
ているので、先ず、CPUユニットA、BはBUSYフラグワ
ードAをチェックし、シーケンスユニット2のBUSYフラ
グワードAが“1"にセットされているのを認識する。次
に、CPUユニットA、Bはシーケンス割付テーブルを検
索して、自CPUユニットがシーケンスユニット2を実行
するか決定する。この例ではシーケンスユニット2はCP
UユニットAに割付けられているのでCPUユニットAによ
って実行される。CPUユニットBはシーケンスユニット
1を最後まで読み飛ばし、No(12)のPAR JOIN 1,2,3に
より再実行のために自PAR JOIN 1,2,3命令のアドレスを
ユニットエントリアドレステーブルDに登録すると共
に、次のBUSYフラグワードAをチェックする。そして、
シーケンスユニット3のBUSYフラグワードAが“1"にセ
ットされているのを認識し、シーケンス割付テーブルを
検索し、自CPUユニットがシーケンスユニット3を実行
するか決定する。この例ではシーケンスユニット3はCP
UユニットBに割付けられているのでCPUユニットBによ
って実行される。
シーケンスユニット1では、第1のステーションでの
動作である供給口から供給される部品をローダーにより
押し出し、回転板のプレートに乗せ、その後、ローダー
を元の位置に戻すといったことを実現している。これと
平行して、シーケンスユニット2では、第2のステーシ
ョンでの動作である押さえ部で部品を固定し、ドリルを
下降させ部品に穴を開け、ドリルを上昇させ元の位置に
戻し、押さえ部による部品の固定を解放するといったこ
とを実現している。
ここで、シーケンスユニット2の方がシーケンスユニ
ット3よりも早く終了したとする。シーケンスユニット
2の処理が終了すると、CPUユニットAは、No(11)のE
ND PAR SEQ 1によりシーケンスユニット2に対応するBU
SYフラグワードAを“0"にリセットする。そして、No
(12)のPAR JOIN 1,2,3により再実行のために自PAR JO
IN 1,2,3命令のアドレスをユニットエントリアドレステ
ーブルDに登録すると共に、次のBUSYフラグワードAを
チェックする。この場合は、先ず、シーケンスユニット
3のBUSYフラグワードAが“1"にセットされているのを
認識し、シーケンス割付テーブルを検索し、自CPUユニ
ットがシーケンスユニット3を実行するか決定する。こ
の例ではシーケンスユニット3はCPUユニットBに割付
けられているのでCPUユニットAはシーケンスユニット
1を最後まで読み飛ばし、No(12)のPAR JOIN 1,2,3に
より再実行のために自PAR JOIN 1,2,3命令のアドレスを
ユニットエントリアドレステーブルDに登録すると共
に、再度次のBUSYフラグワードAをチェックする。そし
て、シーケンスユニット4のBUSYフラグワードAが“1"
にセットされているのを認識し、シーケンス割付テーブ
ルを検索して、自CPUユニットがシーケンスユニット4
を実行するか決定する。この例ではシーケンスユニット
4はCPUユニットAに割付けられているのでCPUユニット
Aによって実行される。
よってこれからは、シーケンスユニット3とシーケン
スユニット4とが並列実行されることになる。
シーケンスユニット4では、第3のステーションでの
動作である穴径ゲージで部品に開けられた穴の大きさを
計測し、穴の大きさが所定値未満ならばイジェクターに
より部品を正常品スライドに送り、穴の大きさが所定値
以上ならばスライドを動かしイジェクターの正面に異常
品スライドを移動させイジェクターにより部品を異常品
スライドに送りその後スライドを動かしイジェクターの
正面に正常品スライドを移動させるといったことを実現
している。
シーケンスユニット4において、部品の穴の大きさが
所定値以上であったとすると、No(44),No(45),No
(46)実行の後、No(47)のCALL 2が実行される。No
(47)のCALL 2によってシーケンスユニット4に対応す
るネストフラグワードBを“1"にセットし、CALLされた
ファンクションの番号“2"をサブルーチンファンクショ
ンテーブルEに登録する。次に、CALLされたファンクシ
ョン2のネストカウンタGを“1"にしてリターンアドレ
スを有効にし、戻りアドレス(No(48)のWAIT命令のア
ドレス)をリターンアドレスレジスタFに登録し、そし
て、シーケンス割付テーブルを検索して、自CPUユニッ
トがファンクション2(シーケンスユニット6)を実行
するか決定する。この例ではシーケンスユニット6はCP
UユニットAに割付けられているのでCPUユニットAはシ
ーケンスユニット6に実行に移る。
ファンクション2は、1つのシーケンスユニットから
なり、第3のステーションでの動作であるスライドを動
かしイジェクターの正面に異常品スライドを移動させイ
ジェクターにより部品を異常品スライドに送りその後ス
ライドを動かしイジェクターの正面に正常品スライドを
移動させるといったことを実現している。
ここで、シーケンスユニット4がファンクション2を
CALL中に、シーケンスユニット3の処理が終了すると、
CPUユニットBは、No(27)のEND PAR SEQ 2によりシー
ケンスユニット3に対応するBUSYフラグワードAを“0"
にリセットする。そして、No(12)のPAR JOIN 1,2,3に
より再実行のために自PAR JOIN 1,2,3命令のアドレスを
ユニットエントリアドレステーブルDに登録すると共
に、次のBUSYフラグワードAをチェックする。この場合
は、シーケンスユニット4のBUSYフラグワードAが“1"
で、かつ、ネストフラグワードBが“1"であるので、サ
ブルーチンファンクションテーブルEに登録されたファ
ンクション2(シーケンスユニット6)が自CPUユニッ
トに割付けられているかシーケンス割付テーブルを検索
する。この例ではシーケンスユニット6はCPUユニット
Aに割付けられているのでCPUユニットBはシーケンス
ユニット6を最後まで読み飛ばし、リターンアドレスレ
ジスタFに登録されているアドレスにジャンプし、ファ
ンクション1に戻る。そして、次のBUSYフラグワードA
をチェックする。この場合は、BUSYフラグワードAはシ
ーケンスユニット4までしかないので、CPUユニットB
は処理待ちになる。
その後、CPUユニットAはファンクション2のシーケ
ンスユニットの処理が終了し、シーケンスユニット4に
戻りその処理を行う、シーケンスユニット4の処理も終
了すると、CPUユニットAは、No(42)のEND PAR SEQ 3
によりシーケンスユニット4に対応するBUSYフラグワー
ドAを“0"にリセットする。そして、No(12)のPAR JO
IN 1,2,3により再実行のために自PAR JOIN 1,2,3命令の
アドレスをユニットエントリアドレステーブルDに登録
すると共に、次のフラグワードAをチェックする。この
場合は、全てのシーケンスユニットに対応するBUSYフラ
グワードAが“0"になっているので、次の命令に移る。
以上で並列部分の処理は完了したので、シーケンスユ
ニット5がシーケンス割付テーブルで割付けられたCPU
ユニットBにより実行され、No(14)のSTEP 16により
回転板が回転させられ、No(14)のWAITにより回転板上
のプレートが所定の位置まで移動すると回転が止まり、
終了する。
以上に説明した方法により、ステップシーケンス型の
プログラムを実行することが可能であり、また本方式で
は並列実行可能な各シーケンスユニットに独立した番号
がつけられているので第2図に示すシーケンス割付テー
ブルを使用し、シーケンスユニットの先頭の命令でその
シーケンスユニットを実行すべきCPUユニットの番号を
チェックすることによって複数のCPUユニットによる並
列実行が可能である。また、シーケンス割付テーブルの
動的な変更により、CPUユニットの数や割付の変更が容
易である。従って、CPUユニットのバックアップやフォ
ールトトレラント的使用法が容易に実現できる。このと
き、各シーケンスユニットのファンクション制御フラグ
およびテーブル等からなるワークエリアは共有メモリ内
に置かれる。
次に、シーケンス割付テーブルでのシーケンスユニッ
トのCPUユニットへの割付け方法について説明する。
シーケンス割付テーブルの最初の設定は、プログラミ
ングユニットによって設定される。
プログラミングユニット5は、プログラムを作成する
ための装置であり、プログラムをグラフィック的(フロ
ーチャートの様な形)に記載することによって、プログ
ラムを作成できるので、容易にプログラムを作成するこ
とができる。また、プログラミングユニット5は、第1
図に示すようにCPUバス3に接続されていて、作成した
プログラムを各CPUユニットのプログラムメモリに書き
込むことができるものである。但し、プログラミングユ
ニット5は、常にCPUバス3に接続されている必要はな
く、プログラムを各CPUユニットのプログラムメモリへ
書き込む等の作業が終わった後はCPUバス3から切り離
してもかなわない。
また、プログラミングユニット5は、その機能の一つ
として、シーケンス割付テーブルの割付けを行ってい
て、グラフィック的に記載したプログラムに従ってシー
ケンスユニットの実行順にCPUユニット1A→1B→1A→1B
→…が割り付けられる。
従来は、上記のようにプログラミングユニット5によ
ってシーケンスユニットの実行順に割付けられたシーケ
ンス割付テーブルに従ってシーケンスユニットの処理を
行っていたので、シーケンスユニットの処理にかかる時
間に制御するプロセス・機器などの動作状態によりバラ
付きが生じること、例えばWAIT命令に付随する遷移条件
が成立するまでの待ち時間等によるバラ付きが考慮され
ていなかったので、各CPUユニット間に負荷のアンバラ
ンスが生じて、処理効率が悪かった。
よって、本実施例では、プログラムを処理していくな
かで、各CPUユニット間の負荷のアンバランスを検出す
ると、シーケンス割付テーブルの割付けを変更すること
によって、各CPUユニット間の負荷のアンバランスをな
くして、処理効率を良くする。
このために、いずれかのCPUユニットが各CPUユニット
の負荷を検出するようにし、また、いずれかのCPUユニ
ットがシーケンス割付テーブルの割付けを変更するよう
にする。この各CPUユニットの負荷を検出するCPUユニッ
トとシーケンス割付テーブルの割付けを変更するCPUユ
ニットはシステムスタート前に人によって設定される。
但し、設定されたCPUユニットは、各CPUユニットの負荷
の検出、シーケンス割付テーブルの割付けの変更だけを
するのではなく、シーケンスユニットの処理も行う。
プログラムが実行されると、各CPUユニットは、プロ
グラミングユニット5によってシーケンスユニットの実
行順に割付けられたシーケンス割付テーブルに従ってシ
ーケンスユニットを処理していく。
このとき、設定された各CPUユニットの負荷を検出す
るCPUユニットのOSが、所定期間ごとに割込み処理を行
い、共有メモリのBUSYフラグワードを調べ、全シーケン
スユニットについてBUSYフラグがセットされていた回数
をカウントして、各シーケンスユニットの実行カウント
数と各CPUユニットの総実行カウント数とを検出する。
この割込み処理は該CPUユニットがシーケンスユニット
を処理中でもその処理を中断して行う。
処理が割り当てられたCPUユニットは、処理を行うシ
ーケンスユニットの演算時間、および、そのシーケンス
ユニットの制御対象となる機器の動作が完了するまでの
時間シーケンスユニットに拘束されており、BUSYフラグ
は、その拘束されている間セットされているので、この
BUSYフラグがセットされていた回数をシーケンスユニッ
トの実行カウント数とすると、各シーケンスユニットの
実行カウント数は、処理が割り当てられたCPUユニット
がそのシーケンスユニットに拘束される時間(負荷)を
表していて、この各シーケンスユニットの実行カウント
数をCPUユニットごとに累計した各CPUユニットの総実行
カウント数は、プログラムを通してのCPUユニットの負
荷を表わしている。
また、設定された各CPUユニットの負荷を検出するCPU
ユニットのOSは、各CPUごとに、シーケンスユニットご
との実行カウント数(実行負荷)を示すプロフィールを
作成し、共有メモリ2に格納する。第9図は、プロフィ
ールのイメージ図であり、第9図では各シーケンスユニ
ットをシーケンスユニットの実行カウント数の大きい順
に並べてある。
割付けの変更は、設定されたシーケンス割付テーブル
の割付けを変更するCPUユニットのOSが、バラ付きが均
一化される十分に長い周期で、かつ、シーケンスプログ
ラムが終了したタイミングで、各CPUユニットの総実行
カウント数を比較し、各CPUユニットの総実行カウント
数にアンバランスがある場合には、総実行カウント数が
可能な限り等しくなるように、シーケンス割付テーブル
のシーケンスユニットの割付けの変更を行う。
割付けの変更の方法については、第10図を参照して説
明する。
第10図は上記CPUユニット1A、1B間の負荷のアンバラ
ンスを補正するためにシーケンス割付テーブルを変更す
る手順を示すフローチャートである。
先ずCPUユニット1A、1Bのそれぞれの総実行カウント
数N1、N2を求めてその大小を比較し、N1≧N2のときはCP
Uユニット1A側の実行カウント数の最小(m1)なシーケ
ンスユニットをCPUユニット1B側に移す。
これによってCPUユニット1A、1Bのそれぞれの総実行
カウント数はN1=N1−m1、N2=N2+m1となる。更に、こ
の変更された新しいCPUユニット1A、1Bのそれぞれの総
実行カウント数N1、N2を比較して総実行カウント数をで
きるだけ同じにする。
また、N1<N2のときも同様な動作によって両方のCPU
ユニットの総実行カウント数のバランスが行われる。
上記のようにして複数のCPUユニットによる処理の高
速化と共に負荷の平均化が可能になる。平均化が十分に
行われた後はこの処理は省略してもよい。
また、本発明のPCではCPUの台数および実行すべきプ
ログラムの部分が自由に決定できるので、CPUユニット
のバックアップが容易である。例えば複数のCPUユニッ
ト中の1台のCPUユニットが故障した場合には、そのCPU
ユニットに割付けられていたシーケンスユニットを残り
のCPUユニットに割付け直すことにより、機能の代替が
可能であり、これは、CPUユニットが1台になるまで続
けることができる。
[発明の効果] 以上説明したように本発明のプログラマブルコントロ
ーラでは、ステップシーケンスプログラムを複数のCPU
ユニットにより並列実行することが可能であり、また各
CPUユニットの実行負荷のプロフィールを作成すること
によって負荷状況を知り、シーケンスユニットのCPUユ
ニットに対する割付けを変更することが可能である。
これによってプログラムの高速実行と共に負荷の平均
化を自動的に行うことが可能となり、従ってプログラム
が各プログラムの実行負荷を検討してプログラムの割付
けを決定する必要はない。
また外界の変化によりプログラムの負荷状況が変化し
ても、各CPUユニットの負荷はそれに適応して変化する
ことが可能なので、CPUの能力を最大限有効に利用する
ことが可能となる。
またCPUユニットの故障発生に対してもCPUユニットに
対するプログラムの再配分によって各CPUユニットの能
力を有効に活用し、残りのCPUユニットによる運転の継
続を可能にすることができる。
【図面の簡単な説明】
第1図は本発明の一実施例を示す系統図、第2図はシー
ケンスユニットのCPUユニットへの割付けの一例を示す
シーケンスユニット割付テーブル図、第3図(A),
(B)はそれぞれプログラミングモデルの一例を示す
図、第4図は本発明で用いられる命令語の説明図、第5
図は本発明で用いられるワークエリアの説明図、第6図
は第7図とともに並列実行プログラムの具体的な一例を
示す図、第7図は第6図とともに並列実行プログラムの
具体的な一例を示す図、第8図は穴開け装置の概略図、
第9図はCPUユニットの負荷のプロフィールの一例を示
す図、第10図はCPUユニットの負荷バランスの手順の一
例を示すフローチャート、第11図はステップシーケンス
プログラム言語の説明図である。 1A、1B……CPUユニット 2……共有メモリ 3……共有CPUバス 4……I/O
フロントページの続き (56)参考文献 特開 昭56−17401(JP,A) 特開 昭56−99560(JP,A) 特開 昭57−757(JP,A) 特開 昭60−51946(JP,A) 特開 昭61−231656(JP,A) 特開 昭55−37626(JP,A)

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】複数のシーケンス命令からなる所定の制御
    を行う複数のシーケンスユニットから構成され、並列処
    理される全てのシーケンスユニットの処理が完了しない
    と並列処理以降の処理が行えない場合には前記並列処理
    される全てのシーケンスユニットによる処理が完了する
    まで待ち合わせを行う状態遷移型シーケンスプログラム
    を格納するプログラムメモリと後述する割付け手段によ
    り割付けられたシーケンスユニットを処理するCPUとか
    らなる複数のCPUユニットと、 前記複数のCPUユニットの各CPUユニットがどのシーケン
    スユニットを処理するかを割付けるもので、初期段階で
    は予め定められた条件で割付けられている割付け手段
    と、 前記CPUユニット毎に各CPUユニットが処理を行っている
    時間をカウントしてその総実行時間を求めるカウント手
    段と、 予め定められた期間ごとに、前記CPUユニット毎の総実
    行時間を比較してアンバランスなときには前記割付け手
    段の割付け内容を変更する割付け変更手段とを具備した
    ことを特徴とするプログラマブルコントローラ。
  2. 【請求項2】前記割付け変更手段は前記CPUユニット毎
    の総実行時間が均等になるように前記CPUユニット毎に
    シーケンスユニットの割付けを行い、負荷配分を平衡さ
    せることを特徴とする特許請求の範囲第1項記載のプロ
    グラマブルコントローラ。
JP61271921A 1986-11-17 1986-11-17 プログラマブルコントロ−ラ Expired - Lifetime JP2553055B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP61271921A JP2553055B2 (ja) 1986-11-17 1986-11-17 プログラマブルコントロ−ラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61271921A JP2553055B2 (ja) 1986-11-17 1986-11-17 プログラマブルコントロ−ラ

Publications (2)

Publication Number Publication Date
JPS63127303A JPS63127303A (ja) 1988-05-31
JP2553055B2 true JP2553055B2 (ja) 1996-11-13

Family

ID=17506722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61271921A Expired - Lifetime JP2553055B2 (ja) 1986-11-17 1986-11-17 プログラマブルコントロ−ラ

Country Status (1)

Country Link
JP (1) JP2553055B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100636513B1 (ko) * 2002-12-19 2006-10-18 인터내셔널 비지네스 머신즈 코포레이션 전자 회로 및 내장형 시스템
JP4582414B2 (ja) * 2005-09-29 2010-11-17 横河電機株式会社 プログラム管理装置
JP4547469B2 (ja) * 2006-03-07 2010-09-22 三菱電機株式会社 複数の演算装置によるシーケンス処理実行装置
JP5655448B2 (ja) * 2010-09-09 2015-01-21 富士電機株式会社 Plcシステム、その開発支援装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5617401A (en) * 1979-07-23 1981-02-19 Omron Tateisi Electronics Co Sequence controller
JPS5699560A (en) * 1980-01-11 1981-08-10 Toshiba Corp Multicomputer system
JPS57757A (en) * 1980-06-04 1982-01-05 Hitachi Ltd Job execution schedule system
JPS6051946A (ja) * 1983-08-31 1985-03-23 Fujitsu Ltd 処理装置間プログラム結合方式

Also Published As

Publication number Publication date
JPS63127303A (ja) 1988-05-31

Similar Documents

Publication Publication Date Title
US9092023B2 (en) Industrial controller using shared memory multicore architecture
US5032975A (en) Controller for automatic assembling apparatus
US5796941A (en) Method for supervising software execution in a license restricted environment
US8190864B1 (en) APIC implementation for a highly-threaded x86 processor
JPH0644235B2 (ja) コンピュータ・システムを操作する方法
CN100382033C (zh) 计算机系统
US7003610B2 (en) System and method for handling shared resource writes arriving via non-maskable interrupts (NMI) in single thread non-mission critical systems with limited memory space
JP2553055B2 (ja) プログラマブルコントロ−ラ
US8452438B2 (en) Method for minimizing productivity loss while using a manufacturing scheduler
US20080315862A1 (en) Smart parallel controller for semiconductor experiments
CN109388102B (zh) 控制系统和上级服务器
CN104597832A (zh) 一种基于amba总线的plc程序调度器ip核
CN111461476A (zh) 混合仓库的出库订单分配方法、系统、设备及存储介质
JP2577600B2 (ja) フレキシブル生産システム
US7337095B2 (en) Method for planning and/or configuring a project
Park et al. Real-time scheduler for Middleware of Industrial Robot
EP0463813B1 (en) Elevator group management system and elevator assignment method
JPH01196633A (ja) タスク制御方式
JPS6027904A (ja) プログラマブル・コントロ−ラ
JPS6292045A (ja) 初期プログラムロ−ド制御方式
JPH03170257A (ja) 計画実行管理方法
JPS6385938A (ja) プログラムの多重並行動作制御装置
JPH0756623A (ja) セルコントローラ
JPH01209567A (ja) プログラムロード方式
JPH01152539A (ja) 割込み処理方式

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term