(57)【特許請求の範囲】
【請求項１】
複数の独立したシーケンスプログラムを並行して実行するプログラマブルコントローラにおいて、
前記複数の独立したシーケンスプログラムのそれぞれに対応して設けられ、前記複数の独立したシーケンスプログラムの中で所定の第１の命令を並行して実行する複数のプログラム実行回路と、
並行して実行されている複数の独立したシーケンスプログラムの中で、前記プログラム実行回路で実行できない第２の命令を実行する１台のＣＰＵと、
前記複数のプログラム実行回路で発生した少なくとも１つの前記ＣＰＵに対する前記第２の命令の実行要求及び前記ＣＰＵが前記第２の命令を実行するために必要な情報を発生した順に前記ＣＰＵに転送する第１の転送手段と、
前記ＣＰＵが前記第２の命令の実行を完了したことを示す情報を前記プログラム実行回路に転送する第２の転送手段と、
を備え、
前記プログラム実行回路は、
前記第２の命令が発生したときにＣＰＵ命令実行要求信号を出力し該ＣＰＵ命令実行要求信号を出力してからＣＰＵが該命令の実行を完了するまで停止状態となるＣＰＵ命令実行要求手段と、
ＣＰＵが前記第２の命令の実行を完了した信号を受けてプログラム実行を再開する再開手段と、
を有し、
前記第１の転送手段は、
前記第２の命令が発生したときに前記ＣＰＵ命令実行要求信号を順次受け付ける受付手段と、
前記第２の命令が発生した前記プログラム実行回路のＩＤ番号と前記第２の命令のプログラムアドレスを順次記憶する記憶手段と、
前記記憶手段に記憶されているプログラムアドレスに基づいてＣＰＵが順次前記第２の命令を実行していくためのＣＰＵ命令実行開始信号を前記受付手段からＣＰＵに順次出力するＣＰＵ実行開始手段と、
を有し、
前記第２の転送手段は、
ＣＰＵが前記第２の命令の実行を完了する毎に完了した前記第２の命令に対応する前記ＩＤ番号のプログラム実行回路にＣＰＵ命令実行完了信号と実行結果を出力するＣＰＵ実行完了通知手段と、
を有することを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラに関し、特に、複数本のシーケンスプログラムを並列して実行可能なプログラマブルコントローラに関する。
【背景技術】
【０００２】
シーケンス制御を行うプログラマブルコントローラにおいて、１台で複数本の独立したシーケンスプログラムを実行する場合、シーケンスプログラムを実行する専用ＬＳＩ、並びに、これを制御及び補助するＣＰＵから構成されるハードウェアを使用して、複数本のシーケンスプログラムを順次実行している（図６、図７を参照）。  
１ビットのデータに対して演算処理を行う等の単純ではあるがＣＰＵで演算処理を行う場合には数十サイクルを要する命令を、このような演算処理に特化した回路構成を有する専用ＬＳＩ（専用大規模集積回路）は数サイクルで演算処理を実行することができる。  
しかし、前記専用ＬＳＩは、タイマ、カウンタ、乗算・除算などの複雑な命令を実行するように構成されていない。そのため、ＣＰＵは、専用ＬＳＩが実行できないタイマ、カウンタ、乗算・除算などの複雑な命令を実行する。また、ＣＰＵは、プログラムカウンタのセット、プログラム実行開始フラグのセット等の専用ＬＳＩに対する制御も行っている。
【０００３】
次に、従来技術のプログラマブルコントローラでのシーケンスプログラムの実行順序について図８を用いて説明する。  
はじめに、ＣＰＵは、プログラム実行回路内部のプログラムカウンタに値をセットし、また、プログラム実行回路部のシーケンスプログラム実行開始フラグをオンすることにより、プログラム実行回路を起動する。  
プログラムカウンタの値は、シーケンスプログラムが格納されているメモリ上のアドレスを示している。プログラム実行回路は、プログラムカウンタの値をアドレスとしてメモリを読んでプログラムを取込み順次実行する。  
また、シーケンスプログラムを構成する命令のオブジェクトコードには、専用ＬＳＩのプログラム実行回路で実行できる命令であるか否かを判別するためのデータを含ませておき、プログラム実行回路が命令を取込んだ段階で、これを判別する。
【０００４】
専用ＬＳＩは、シーケンスプログラムを実行中、自らが実行できない命令を取込むと、ＣＰＵに対して“ＣＰＵ命令実行要求信号”を出力し、シーケンスプログラムの実行を停止する。また、専用ＬＳＩは、ＣＰＵが実行するべきプログラムがメモリ上のどこにあるかを示すアドレスをＬＳＩ内部の“ポインタレジスタ”にラッチする。  
ＣＰＵが“ＣＰＵ命令実行要求信号”を検知するための手段としては、“ＣＰＵ命令実行要求信号”による割込み、またはＣＰＵのＩ／Ｏポート端子に“ＣＰＵ命令実行要求信号”を接続し、これをポーリングするという手法を使用する。
【０００５】
ＣＰＵは、専用ＬＳＩから出力されるＣＰＵ命令実行要求信号を検知すると、専用ＬＳＩ内部のポインタレジスタを読み、ＣＰＵ自らが実行すべきプログラムが格納されているメモリのアドレスからプログラムを取り出す。そして、順次実行し、終了したら専用ＬＳＩ内部の“ＣＰＵ命令実行完了レジスタ”に対して、書込み動作を行う。“ＣＰＵ命令実行完了レジスタ”への書込み動作により、プログラム実行回路に対して、ＣＰＵ命令実行完了信号が１パルス出力される。専用ＬＳＩのプログラム実行回路は、ＣＰＵ命令実行完了信号を検知すると、“ＣＰＵ命令実行要求信号”を取下げ、シーケンスプログラムの実行を再開する。
【０００６】
ＣＰＵの命令実行結果の出力は、ＣＰＵが専用ＬＳＩ内部メモリ、専用ＬＳＩ内部レジスタにデータを書込むことにより行なわれる。例として、乗算命令の場合、ＣＰＵは、シーケンスプログラムで指定された専用ＬＳＩ内部メモリのアドレスから乗数データ、被乗数データを読んで、これらの乗算を行い、結果をシーケンスプログラムで指定された専用ＬＳＩ内部メモリのアドレスに書込む。
【０００７】
専用ＬＳＩ内部メモリには、シーケンスプログラムで使用されるＩ／Ｏ、内部リレーのイメージが書込まれる。よって、このメモリには、コントローラを介して、外部のＩ／Ｏ領域へ周期的に転送される領域、外部のＩ／Ｏ機器から周期的に転送されてくるデータにより更新される領域、内部リレー、すなわち、ワークメモリ的に使用され外部のＩ／Ｏ機器とのデータのやり取りの無い領域が存在する。
【０００８】
【特許文献１】特開平１１−１７５１１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来技術（図７（ｂ）参照）では、実行するプログラム数が増加するに伴い、全体的なプログラム長及びプログラム実行時間が増大する。この“実行するプログラム数が増加するに従いプログラム実行時間が増大する問題”は、専用ＬＳＩ内部に複数個のプログラム実行回路を内蔵し、このプログラム実行回路を複数個の汎用ＣＰＵで制御・補助し、シーケンスプログラムの並列処理を実行することで回避可能であるものの、プログラマブルコントローラ内部に複数個の汎用ＣＰＵを内蔵することは、装置の大型化、消費電力の増大、発熱の問題、コスト上昇をまねくなど課題が多い（図９参照）。
【００１０】
そこで本発明の目的は、１個のＣＰＵで専用ＬＳＩに内蔵された複数個のプログラム実行回路を制御または補助することにより、複数本のシーケンスプログラムを並列して実行可能なプログラマブルコントローラを提供することである。
【課題を解決するための手段】
【００１１】
本願の請求項１に係る発明は、複数の独立したシーケンスプログラムを並行して実行するプログラマブルコントローラにおいて、前記複数の独立したシーケンスプログラムのそれぞれに対応して設けられ、前記複数の独立したシーケンスプログラムの中で所定の第１の命令を並行して実行する複数のプログラム実行回路と、並行して実行されている複数の独立したシーケンスプログラムの中で、前記プログラム実行回路で実行できない第２の命令を実行する１台のＣＰＵと、前記複数のプログラム実行回路で発生した少なくとも１つの前記ＣＰＵに対する前記第２の命令の実行要求及び前記ＣＰＵが前記第２の命令を実行するために必要な情報を発生した順に前記ＣＰＵに転送する第１の転送手段と、前記ＣＰＵが前記第２の命令の実行を完了したことを示す情報を前記プログラム実行回路に転送する第２の転送手段と、を備え、前記プログラム実行回路は、前記第２の命令が発生したときにＣＰＵ命令実行要求信号を出力し該ＣＰＵ命令実行要求信号を出力してからＣＰＵが該命令の実行を完了するまで停止状態となるＣＰＵ命令実行要求手段と、ＣＰＵが前記第２の命令の実行を完了した信号を受けてプログラム実行を再開する再開手段と、を有し、前記第１の転送手段は、前記第２の命令が発生したときに前記ＣＰＵ命令実行要求信号を順次受け付ける受付手段と、前記第２の命令が発生した前記プログラム実行回路のＩＤ番号と前記第２の命令のプログラムアドレスを順次記憶する記憶手段と、前記記憶手段に記憶されているプログラムアドレスに基づいてＣＰＵが順次前記第２の命令を実行していくためのＣＰＵ命令実行開始信号を前記受付手段からＣＰＵに順次出力するＣＰＵ実行開始手段と、を有し、前記第２の転送手段は、ＣＰＵが前記第２の命令の実行を完了する毎に完了した前記第２の命令に対応する前記ＩＤ番号のプログラム実行回路にＣＰＵ命令実行完了信号と実行結果を出力するＣＰＵ実行完了通知手段と、を有することを特徴とするプログラマブルコントローラである。
【発明の効果】
【００１４】
本発明は、専用ＬＳＩとＣＰＵ１個を用いる構成により、複数本の独立したシーケンスプログラムを並行して実行することで、従来のプログラマブルコントローラに比較してより処理時間を短縮できる。  
また、本発明はＣＰＵを１個用いる構成であるので、高速化に伴う装置の大型化、多消費電力化や、高コスト化を避けることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明のプログラマブルコントローラの一実施形態について図面とともに説明する。なお、図１〜図９において外部メモリに格納されている「プログラム（１）〜（ｎ）」はシーケンスプログラム（１）〜（ｎ）を意味する。
【００１６】
図１は、本発明のプログラマブルコントローラの一実施形態である、複数の独立したプログラムを並列して実行可能なプログラマブルコントローラの概略ブロック図である。  
プログラマブルコントローラ１００は、ＣＰＵ１、外部メモリ２、および、専用ＬＳＩ３を備えている。ＣＰＵ１は専用ＬＳＩ３を制御または補助している。
【００１７】
専用ＬＳＩ３はその内部に複数個のプログラム実行回路３ａ1,３ａ2,・・・３ａnを内蔵している。そして、専用ＬＳＩ３のプログラム実行回路３ａ1,３ａ2,・・・３ａnが外部メモリ２に格納している複数本のシーケンスプログラムを並行して実行する。シーケンスプログラムは、専用ＬＳＩ３では実行できない命令を含んでいる可能性がある。そこで、ＣＰＵ１は従来技術と同様に専用ＬＳＩ３では実行できないシーケンスプログラムに含まれる命令を実行する。
【００１８】
また、プログラマブルコントローラ１００は複数本のシーケンスプログラムを並行して実行することから、複数のシーケンスプログラムが同時にＣＰＵ１に対して命令の実行要求信号を出力する可能性もある。そこで、専用ＬＳＩ３にＣＰＵ１に対するこれらの命令の実行要求を調停する調停回路４を設け、各プログラム実行回路３ａ1,３ａ2,・・・３ａnから実行要求されているＣＰＵ１に対するこれらの命令を順番に従って順次実行できるようにしている。この順番は、例えば、調停回路４を構成するＦＩＦＯレジスタ３ｃに同時に書込みを行おうとした場合、プログラム実行回路に付与されているＩＤ番号の若いプログラム実行回路のものから順に書込みを行うようにして決められる。
【００１９】
このようにプログラマブルコントローラ１００を構成とすることにより、図１（ｂ）に示されるように、プログラム実行回路(1)３ａ1，(2)３ａ2，・・・(n)３ａnはシーケンスプログラム（１）〜（ｎ）を並行して実行できる。その結果、全てのシーケンスプログラムの実行が完了するまでの時間が、全てのシーケンスプログラムが順次実行される従来技術（図７（ｂ）を参照）に比較して大幅に短縮化される。
【００２０】
図２は、図１に示したプログラマブルコントローラ１００の概略ブロック図のより詳細なブロック図であり、特に、専用ＬＳＩ３をより詳細に示したブロック図である。専用ＬＳＩ３は、プログラム実行回路３ａ1〜３ａn、ポインタレジスタ３ｂ1〜３ｂn、ＦＩＦＯレジスタ３ｃ、ＩＤ番号ラッチ・デコード回路３ｄ、ＣＰＵ命令実行完了レジスタ３ｅ、オアゲート３ｆ、内部メモリ３ｇ、Ｉ／Ｏデータコントローラ３ｈ、書込み調停回路３ｉを備えている。プログラム実行回路３ａ1〜３ａnは、それぞれ従来技術と同様にその回路内部にプログラムカウンタ（図示せず）およびシーケンスプログラム実行開始フラグ（図示せず）を有する。そして、ＣＰＵ１はプログラムカウンタのセット、プログラム実行開始フラグのセット等の専用ＬＳＩ３に対する制御を行っている。また、プログラム実行回路３ａ1〜３ａnは、ＣＰＵ１が実行するべき命令が外部メモリ２上のどこにあるかを示すアドレスをラッチするための専用のポインタレジスタ３ｂ1〜３ｂnを一つ一つ対応して備えている。また、外部メモリ２には、ＣＰＵ１および専用ＬＳＩ３で実行される、複数のシーケンスプログラム１〜ｎが格納されている。図２に示されるプログラム（１）は、シーケンスプログラムがプログラム実行回路３ａ１〜３ａｎで実行される命令とＣＰＵ１で実行される命令とから構成されることを模式的に表したものである。
【００２１】
図１で説明した調停回路４は、本実施形態ではＦＩＦＯレジスタ３ｃ、ＩＤ番号ラッチ・デコード回路３ｄ、ＣＰＵ命令実行完了レジスタ３ｅ、オアゲート３ｆ、書込み調停回路３ｉを備えている。ＦＩＦＯレジスタ３ｃは、プログラム実行回路３ａ1〜３ａnが外部メモリ２内のＣＰＵ実行命令（例えば、タイマ、カウンタ、乗算など）を参照した場合、プログラム実行回路３ａ1〜３ａnのＩＤ番号とポインタレジスタ３ｂ1〜３ｂnのデータとを書き込む。
【００２２】
次に、プログラマブルコントローラ１００のハードウェア構成におけるシーケンスプログラムの実行順序について説明する。  
シーケンスプログラムの実行順序は以下のようになる。
（１）ＣＰＵ１はプログラム実行回路３ａ1〜３ａn内部のプログラムカウンタに値をセットし、また、プログラム実行回路３ａ1〜３ａn内部のシーケンスプログラム実行開始フラグをオンすることにより、プログラム実行回路を起動する。起動されるプログラム実行回路は１つの場合、複数の場合が起こりうる。
（２）起動されたプログラム実行回路（ｋ）はプログラムカウンタの値に従って、外部メモリ２からシーケンスプログラムを取込み、順次実行していく。なお、プログラム実行回路（ｋ）は、専用ＬＳＩ３に内蔵されるプログラム実行回路３ａ1〜３ａnの任意の１つを意味する。
【００２３】
（３）プログラム実行回路（ｋ）が外部メモリ２からＣＰＵ実行命令を取込むと、  
（４）プログラム実行回路（ｋ）はＣＰＵ１に対してＣＰＵ命令実行要求信号ｓ１を出力、ＦＩＦＯレジスタに自らのＩＤ番号（ｋ）、ポインタレジスタのデータを書込み、シーケンスプログラムの実行停止状態に入る。
（５）ＣＰＵ１は、専用ＬＳＩ３から出力されるＣＰＵ命令実行要求信号ｓ１を検知すると、専用ＬＳＩ３内部のＦＩＦＯレジスタ３ｃを読み、自らが実行すべきプログラムが格納されている外部メモリ２上のアドレスからプログラムを取り出して順次実行する。終了したら、専用ＬＳＩ３内部のＣＰＵ命令実行完了レジスタ３ｅに対して書込み動作を行なう。ＣＰＵ命令実行完了レジスタ３ｅへの書込み動作により、プログラム実行回路（ｋ）に対してＣＰＵ命令実行完了信号ｓ２が１パルス出力される。ＣＰＵ１の命令実行結果の出力は、ＣＰＵ１が専用ＬＳＩ３の内部メモリ３ｇにデータを書込むことにより行なわれる。詳細は従来技術と同様である。
【００２４】
（６）ＣＰＵ１が専用ＬＳＩ３内部のＦＩＦＯレジスタ３ｃを読むと、ＦＩＦＯレジスタ３ｃ内のＩＤ番号がラッチ・デコードされる（図２のＩＤ番号ラッチ・デコード回路３ｄ参照）。この、ＩＤ番号ラッチ・デコード回路３ｄの出力は、ＣＰＵ命令実行完了信号ｓ２との論理積がとられて、ＩＤ番号に該当するプログラム実行回路（ｋ）に接続される。これにより、ＣＰＵ１は、命令実行依頼元のプログラム実行回路（ｋ）にのみＣＰＵ命令実行完了信号ｓ２を出力することができる。
（７）プログラム実行回路（ｋ）は、ＣＰＵ命令実行完了信号ｓ２を検知すると、ＣＰＵ命令実行要求信号ｓ１を取下げ、シーケンスプログラムの実行を再開する。  
（８）プログラム実行回路３ａ1〜３ａnの中の、複数のプログラム実行回路が調停回路４を構成するＦＩＦＯレジスタ３ｃに同時に書込みを行おうとした場合、ＩＤ番号の若いプログラム実行回路のものから順に書込みを行うことができることにする。このようにすることにより、各プログラム実行回路３ａ1,３ａ2,・・・３ａnから実行要求されているＣＰＵ１に対するこれらの命令を順番に従って順次実行できるようにしている。
図３は本発明のプログラマブルコントローラに用いられる調停回路の一例である。ＦＩＦＯレジスタへの書込み処理は書込み調停回路３ｉが調停する。図４は本発明のプログラマブルコントローラに用いられるＦＩＦＯレジスタへの書込みの調停を説明する図であり、図５は本発明のプログラマブルコントローラに用いられる書込み調停回路の一例である。
ここで、プログラム実行回路のＦＩＦＯレジスタへの書込み処理は、次のような手順により実行する。  
プログラム実行回路（ｋ）は、書込み調停回路３ｉに対してリクエスト信号（ｋ）を出力する。このリクエスト信号（ｋ）は、ＦＩＦＯレジスタへ書込みが完了するまで出力し続けるものとする。
書込み調停回路は他の優先順位の高いプログラム実行回路からのリクエスト信号を受けていなければプログラム実行回路（ｋ）に対してグラント信号（ｋ）を出力する。このグラント信号（ｋ）は、リクエスト信号（ｋ）の出力が取下げられるまで出力し続けるものとする。  
プログラム実行回路（ｋ）はグラント信号（ｋ）を受取ったら、ＦＩＦＯレジスタへの書込みを行い、書込みが完了したらリクエスト信号を取下げる。
図５は書込み調停回路の一例である。複数のプログラム実行回路から、同時（全く同時刻）にＦＩＦＯレジスタへの書込み処理が開始された場合、即ち、複数のプログラム実行回路から同時に書込み調停回路３ｉに対してリクエスト信号が出力された場合、グラント信号は、最も優先順位の高いプログラム実行回路に対してのみ出力される。図５の例では、ＩＤ番号の若いプログラム実行回路の優先順位を高くしている。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態である複数の独立したプログラムを並列して実行するプログラマブルコントローラのブロック図である。
【図２】図１に示したプログラマブルコントローラ１００の概略ブロック図のより詳細なブロック図であり、特に、専用ＬＳＩ３をより詳細に説明したブロック図である。
【図３】本発明のプログラマブルコントローラに用いられる調停回路の一例である。
【図４】本発明のプログラマブルコントローラに用いられるＦＩＦＯレジスタへの書込みの調停を説明する図である。
【図５】本発明のプログラマブルコントローラに用いられる書込み調停回路の一例である。
【図６】従来のプログラマブルコントローラのブロック図である。
【図７】従来のプログラマブルコントローラにより複数の独立したプログラムを実行する構成（ＣＰＵ１個使用の例）。
【図８】従来技術のプログラマブルコントローラの詳細ブロック図である。
【図９】従来技術ブログラマブルコントローラにより複数の独立したプログラムを実行する構成（ＣＰＵ複数個使用の例）。
【符号の説明】
【００２６】
１  ＣＰＵ
２  外部メモリ
３  専用ＬＳＩ（専用大規模集積回路）
３ａ1〜３ａｎ  プログラム実行回路
３ｂ1〜３ｂｎ  ポインタレジスタ
３ｃ  ＦＩＦＯレジスタ
３ｄ  ＩＤ番号ラッチ・デコード回路
３ｅ  ＣＰＵ命令実行完了レジスタ
３ｆ  オアゲート
３ｇ  内部メモリ
３ｈ  Ｉ／Ｏデータコントローラ
３ｉ  書込み調停回路
４  調停回路
５  Ｉ／Ｏ機器
６  データバス  
７  アドレスバス
１００  プログラマブルコントローラ
ｓ１  ＣＰＵ命令実行要求信号
ｓ２  ＣＰＵ命令実行完了信号
【図１】
0004975586.tif 000002
【図２】
0004975586.tif 000003
【図３】
0004975586.tif 000004
【図４】
0004975586.tif 000005
【図５】
0004975586.tif 000006
【図６】
0004975586.tif 000007
【図７】
0004975586.tif 000008
【図８】
0004975586.tif 000009
【図９】
0004975586.tif 000010