(57)【特許請求の範囲】
【請求項１】
第１のＣＰＵと、第２のＣＰＵと、第１のＣＰＵに内蔵されたＩ／Ｏメモリに対して第２のＣＰＵからのアクセスを可能とするためのオプションバスと、第２のＣＰＵから第１のＣＰＵに対して割り込みを掛けるための割り込みラインとを有し、
前記第１のＣＰＵには、
ユーザプログラム実行処理とＩ／Ｏリフレッシュ実行処理とをサイクリックに行うサイクリック実行制御手段と、
前記第２のＣＰＵから割り込み要求が到来したときに、Ｉ／Ｏメモリ内の特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を割り込みで行い、その後、リフレッシュ完了を第２のＣＰＵへ通知する割り込み実行制御手段と、が少なくとも設けられ、かつ
前記第２のＣＰＵには、第１のＣＰＵに対してサイクリックに割り込み要求を送出すると共に、これに応答して第１のＣＰＵからリフレッシュ完了が通知されるのを待って、ユーザプログラム実行処理を行なうサイクリック実行制御手段が設けられ、さらに
前記第１のＣＰＵに設けられた割り込み実行制御手段は、レベルの異なる多重割り込みを受け付ける機能を有し、かつ各レベルの割り込み要求が到来する毎に、Ｉ／Ｏメモリ内の特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を割り込みで行い、その後、リフレッシュ完了を第２のＣＰＵへ通知するものであり、かつ
前記第２のＣＰＵに設けられたサイクリック実行制御手段は、それぞれ固有のサイクルでレベルの異なる多重割り込み要求を送出する機能を有し、かつ各レベルの割り込み要求に応答してリフレッシュ完了が通知されるのを待って、それぞれのレベルに対応するユーザプログラム実行処理を行う、
ことを特徴とするプログラマブル・コントローラ。
【請求項２】
第１のＣＰＵに設けられた割り込み制御手段は、Ｉ／Ｏリフレッシュ実行処理に加えて、特定のユーザプログラム実行処理を含む、
ことを特徴とする請求項１に記載のプログラマブル・コントローラ。
【請求項３】
第２のＣＰＵは第１のＣＰＵ内のＩ／Ｏメモリへ通ずるバスライン並びに第１のＣＰＵ内の割り込みラインを含むコネクタに対して着脱自在であり、
第１のＣＰＵにて実行されるユーザプログラムは主としてラダータスクであり、かつ第２のＣＰＵにて実行されるユーザプログラムは主としてデータ演算タスクである、
ことを特徴とする請求項１又は２に記載のプログラマブル・コントローラ。
【請求項４】
周辺Ｉ／Ｏバスに通ずる第１の外部接続端子と、少なくともＩ／Ｏデータの他に割り込み要求フラグ並びにリフレッシュ完了フラグが格納されるＩ／Ｏメモリと、外部からＩ／Ｏメモリに対するアクセスを可能とするための第２の外部接続端子と、ユーザプログラムが格納されるユーザプログラムメモリと、を有すると共に、
ユーザプログラムメモリに格納された特定のユーザプログラムに関して、ユーザプログラム実行処理とＩ／Ｏリフレッシュ実行処理とをサイクリックに行うサイクリック実行制御手段と、
割り込み要求フラグがセットされたときに、Ｉ／Ｏメモリ内の特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を割り込みで行い、その後、リフレッシュ完了フラグをセットする割り込み実行制御手段と、が少なくとも設けられている、
ことを特徴とするプログラマブル・コントローラの増設可能なＣＰＵ。
【請求項５】
割り込み実行制御手段は、レベルの異なる多重割り込みを受け付ける機能を有し、かつ各レベルの割り込み要求フラグがセットされる毎に、Ｉ／Ｏメモリ内の特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を割り込みで行い、その後、リフレッシュ完了フラグをセットする、
ことを特徴とする請求項４に記載のプログラマブル・コントローラの増設可能なＣＰＵ。
【請求項６】
請求項４に記載のプログラマブル・コントローラのＣＰＵに接続して使用されるものであって、
割り込みラインとデータ入出力バスとを含む外部コネクタと、ユーザプログラムが格納されるユーザプログラムメモリとを有すると共に、
前記外部コネクタに対してサイクリックに割り込み要求を送出すると共に、外部コネクタを介してリフレッシュ完了通知が取得されるのを待って、ユーザプログラムメモリに格納されたユーザプログラムの実行処理を行なうサイクリック実行制御手段が設けられている、
ことを特徴とするプログラマブル・コントローラの増設用ＣＰＵ。
【請求項７】
サイクリック実行制御手段は、それぞれ固有のサイクルでレベルの異なる多重割り込み要求を送出する機能を有し、かつ各レベルの割り込み要求に対してリフレッシュ完了が通知されるのを待って、それぞれのレベルに対応するユーザプログラム実行処理を行う、
ことを特徴とする請求項６に記載のプログラマブル・コントローラの増設用ＣＰＵ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブル・コントローラ（一般に、ＰＬＣ等と称される）に係り、特に、所謂マルチＣＰＵタイプのプログラマブル・コントローラに関する。
【０００２】
【従来の技術】
主ＣＰＵに対して副ＣＰＵを追加することにより、ＣＰＵをオプションとして拡張できるようにしたＰＬＣは、従来より知られている。この種のＰＬＣにおける主ＣＰＵと副ＣＰＵの役割分担は、主ＣＰＵから実行要求を受けて副ＣＰＵがコプロセッサとして動作する、若しくは、両ＣＰＵが対等の関係で互いに並列に動作すると言ったスケジューリング形態が一般的である。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来の拡張可能なＣＰＵを備えたＰＬＣにおいては、以下のような問題点が指摘されている。
【０００４】
（１）オプションとして搭載した副ＣＰＵの特徴を、ＰＬＣ全体としての制御動作に反映させることが困難である。また、このような機能を実現するためには、予め主ＣＰＵ側にその制御動作を実現するためのスケジューリング機能を搭載しておく必要があり、当然に、価格の高騰が招来される。
【０００５】
（２）両ＣＰＵが並列動作するＰＬＣにおいては、各ＣＰＵ毎に独立した動作となり、任意のタイミングでデータの受け渡しができない（同期処理が必要となる）。このため、ＣＰＵの制御性能を落としているのが通常である。
【０００６】
この発明は、このような従来の問題点に着目してなされたものであり、その目的とするところは、拡張性に優れると共に、拡張後にあっては、個々のＣＰＵの機能を最大限に発揮させることができ、さらに、比較的に低価格で製作することが可能なマルチＣＰＵタイプのＰＬＣを提供することにある。
【０００７】
【課題を解決するための手段】
上述の課題は以下の構成を有するプログラマブル・コントローラにより解決することが出来ると考えられる。
即ち、このプログラマブル・コントローラ（１）は、第１のＣＰＵと、第２のＣＰＵと、第１のＣＰＵに内蔵されたＩ／Ｏメモリに対して第２のＣＰＵからのアクセスを可能とするためのオプションバスと、第２のＣＰＵから第１のＣＰＵに対して割り込みを掛けるための割り込みラインとを有し、
前記第１のＣＰＵには、
ユーザプログラム実行処理とＩ／Ｏリフレッシュ実行処理とをサイクリックに行うサイクリック実行制御手段と、
第２のＣＰＵから割り込み要求が到来したときに、Ｉ／Ｏメモリ内の特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を割り込みで行い、その後、リフレッシュ完了を第２のＣＰＵへ通知する割り込み実行制御手段と、が少なくとも設けられ、かつ
前記第２のＣＰＵには、第１のＣＰＵに対してサイクリックに割り込み要求を送出すると共に、これに応答して第１のＣＰＵからリフレッシュ完了が通知されるのを待って、ユーザプログラム実行処理を行なうサイクリック実行制御手段が設けられてさらに
前記第１のＣＰＵに設けられた割り込み実行制御手段は、レベルの異なる多重割り込みを受け付ける機能を有し、かつ各レベルの割り込み要求が到来する毎に、Ｉ／Ｏメモリ内の特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を割り込みで行い、その後、リフレッシュ完了を第２のＣＰＵへ通知するものであり、かつ
前記第２のＣＰＵに設けられたサイクリック実行制御手段は、それぞれ固有のサイクルでレベルの異なる多重割り込み要求を送出する機能を有し、かつ各レベルの割り込み要求に応答してリフレッシュ完了が通知されるのを待って、それぞれのレベルに対応するユーザプログラム実行処理を行うものである。
【０００８】
ここで、『ＣＰＵ』とは、少なくともユーザプログラム実行機能を有するプログラマブル・コントローラの中央処理装置を言う。また、割り込みでリフレッシュすべき『Ｉ／Ｏ領域』の特定は、当該割り込みと関連づけて予め固定しておいてもよいし、第２のＣＰＵから送出される割り込み要求で別途に指定するようにしてもよい。また、『プログラマブル・コントローラ』なる語には、ＣＰＵユニット、Ｉ／Ｏユニット、電源ユニット等からなるビルディング・ブロック型のものと、すべての回路要素を１個のハウジングに収めた一体型のものとの双方を含んでいる。さらに、特にこの請求項で使用される『プログラマブル・コントローラ』なる語には、ビルディング・ブロック型のプログラマブル・コントローラにおけるＣＰＵユニットそのもの（すなわち、電源ユニットやＩ／Ｏユニット等を含まないＣＰＵ装置単体）も含めている。
【０００９】
そして、このような構成によれば、第１のＣＰＵにおいてユーザプログラムはＩ／Ｏリフレッシュを伴ってサイクリックに実行され、同時に、第２のＣＰＵにおいてもユーザプログラムは割り込みによるＩ／Ｏリフレッシュを伴ってサイクリックに実行される。そのため、各ＣＰＵは非同期で独立してユーザプログラムの実行を行いつつも、入出力データの更新自体は各ユーザプログラムの実行周期で確実に行われることとなり、その結果、個々のＣＰＵの性能を最大限に発揮しつつ、高精度な制御を実現することができる。
【００１０】
また、第１のＣＰＵにおいてユーザプログラムはＩ／Ｏリフレッシュを伴ってサイクリックに実行され、同時に、第２のＣＰＵにおいても複数のユーザプログラムはそれぞれ割り込みによるＩ／Ｏリフレッシュを伴ってかつ固有サイクルでサイクリックに実行される。そのため、各ＣＰＵは非同期で独立してユーザプログラムの実行を行いつつも、入出力データの更新自体は各ユーザプログラムの実行サイクル単位で確実に行われることとなり、その結果、個々のＣＰＵの性能を最大限に発揮しつつ、高精度な制御を実現することができる。加えて、第２のＣＰＵで実行される複数のユーザプログラムはそれぞれ最適なサイクルで入出力更新されるため、この面からも、高精度な制御が可能となる。
【００１１】
また、好ましい実施形態としてのプログラマブル・コントローラ（２）は、上述のプログラマブル・コントローラ（１）において、第１のＣＰＵに設けられた割り込み制御手段が、Ｉ／Ｏリフレッシュ実行処理に加えて、特定のユーザプログラム実行処理を含むものである。
【００１２】
このような構成によれば、第１のＣＰＵにおいてユーザプログラムはＩ／Ｏリフレッシュを伴ってサイクリックに実行され、同時に、第２のＣＰＵにおいても複数のユーザプログラムはそれぞれ割り込みによるＩ／Ｏリフレッシュ（第１のＣＰＵ側で実行）並びに所定のユーザプログラムの実行（第１のＣＰＵ側で実行）を伴ってかつ固有サイクルでサイクリックに実行される。そのため、第２のＣＰＵ側におけるユーザプログラムの実行は、第１のＣＰＵ側におけるユーザプログラムの実行と連動することとなり、より一層多機能な制御が可能となる。
【００１３】
また、好ましい実施形態であるプログラマブル・コントローラ（３）は、上述のプログラマブル・コントローラ（１）又は（２）において、第２のＣＰＵは第１のＣＰＵ内のＩ／Ｏメモリへ通ずるバスライン並びに第１のＣＰＵ内の割り込みラインを含むコネクタに対して着脱自在であり、
第１のＣＰＵにて実行されるユーザプログラムは主としてラダータスクであり、かつ第２のＣＰＵにて実行されるユーザプログラムは主としてデータ演算タスクであるものである。
【００１４】
ここで、『データ演算タスク』とは、例えば、ＰＩＤ演算や浮動小数点演算等が含まれる。
【００１５】
このような構成によれば、第２のＣＰＵは第１のＣＰＵに対する増設用のオプションとして機能することとなり、第１のＣＰＵはＩ／Ｏ制御に特化してリソース（ユーザメモリ等）や機能（高機能な命令サポート）を削減できるため、ローコストでシンプルなＰＬＣを提供できる一方、必要に応じて第２のＣＰＵを増設してデータ演算タスクを実行させることで、高機能化にも容易に対応が可能となる。加えて、オプションとして搭載した第２のＣＰＵに内蔵させたスケジューリング機能から割り込み通知にて、主たるＣＰＵである第１のＣＰＵの処理を実行できるため、第２のＣＰＵの特徴をＰＬＣ全体としての制御動作に反映させることができる。
【００１６】
上述の課題は、以下の構成を有するプログラマブル・コントローラの増設可能なＣＰＵとして捉えることもできる。このプログラマブル・コントローラの増設可能なＣＰＵ（１）は、周辺Ｉ／Ｏバスに通ずる第１の外部接続端子と、少なくともＩ／Ｏデータの他に割り込み要求フラグ並びにリフレッシュ完了フラグが格納されるＩ／Ｏメモリと、外部からＩ／Ｏメモリに対するアクセスを可能とするための第２の外部接続端子と、ユーザプログラムが格納されるユーザプログラムメモリと、を有すると共に、
ユーザプログラムメモリに格納された特定のユーザプログラムに関して、ユーザプログラム実行処理とＩ／Ｏリフレッシュ実行処理とをサイクリックに行うサイクリック実行制御手段と、
割り込み要求フラグがセットされたときに、Ｉ／Ｏメモリ内の特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を割り込みで行い、その後、リフレッシュ完了フラグをセットする割り込み実行制御手段と、が少なくとも設けられている。
【００１７】
このような構成によれば、単独でプログラマブル・コントローラのＣＰＵ装置として機能することは勿論のこと、外部より割り込み要求を与えて特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を行わせる一方、リフレッシュ完了フラグがセットされたことに応答して、他のＣＰＵからＩ／Ｏメモリの内容を参照してユーザ命令を実行することにより、マルチＣＰＵ形式のＰＬＣに拡張することができる。
【００１８】
好ましい実施の形態であるプログラマブル・コントローラの増設可能なＣＰＵ（２）は、プログラマブル・コントローラの増設可能なＣＰＵ（１）において、割り込み実行制御手段は、レベルの異なる多重割り込みを受け付ける機能を有し、かつ各レベルの割り込み要求フラグがセットされる毎に、Ｉ／Ｏメモリ内の特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を割り込みで行い、その後、リフレッシュ完了フラグをセットするものである。
【００１９】
このような構成によれば、外部より多重割り込み要求を与えて当該割り込みレベルに対応する特定Ｉ／Ｏ領域に関するＩ／Ｏリフレッシュ実行処理を行わせる一方、リフレッシュ完了フラグがセットされたことに応答して、他のＣＰＵからＩ／Ｏメモリの当該割り込みレベルに対応する内容を参照してユーザ命令を実行することにより、マルチＣＰＵ形式のＣＰＵ装置に拡張することができる。
【００２０】
上述の課題は、以下の構成を有するプログラマブル・コントローラの増設用ＣＰＵ（１）として捉えることもできる。このプログラマブル・コントローラの増設用ＣＰＵ（１）は、プログラマブル・コントローラの増設可能なＣＰＵ（１）に接続して使用されるものであって、
割り込みラインとデータ入出力バスとを含む外部コネクタと、ユーザプログラムが格納されるユーザプログラムメモリとを有すると共に、
前記外部コネクタに対してサイクリックに割り込み要求を送出すると共に、外部コネクタを介してリフレッシュ完了通知が取得されるのを待って、ユーザプログラムメモリに格納されたユーザプログラムの実行処理を行なうサイクリック実行制御手段が設けられている。
【００２１】
そして、このような構成によれば、プログラマブル・コントローラの増設可能なＣＰＵ（１）に接続して使用した場合、自分が主導権を握ってＩ／Ｏメモリの内容を更新しつつ、その更新内容を参照して自分のユーザプログラムを実行することができ、元のＣＰＵの機能を損ねることなく、目的とする拡張機能を実現することができる。
【００２２】
好ましい実施の形態であるプログラマブル・コントローラの増設用ＣＰＵ（２）は、プログラマブル・コントローラの増設用ＣＰＵ（１）において、サイクリック実行制御手段は、それぞれ固有のサイクルでレベルの異なる多重割り込み要求を送出する機能を有し、かつ各レベルの割り込み要求に対してリフレッシュ完了が通知されるのを待って、それぞれのレベルに対応するユーザプログラム実行処理を行うものである。
【００２３】
このような構成によれば、前項の効果に加えて、入出力応答時間の異なる複数の拡張用ユーザプログラムを最適に実行することができる。
【００２４】
【発明の実施の形態】
以下に、この発明の好適な実施の一形態を添付図面に従って詳細に説明する。本発明に係るプログラマブル・コントローラの全体が図１のブロック図に示されている。
【００２５】
同図に示されるように、このＰＬＣのＣＰＵ装置１は、第１のＣＰＵであるメインＣＰＵ２（増設可能なＣＰＵ）と第２のＣＰＵであるサブＣＰＵ（増設用ＣＰＵ）３とから構成されている。
【００２６】
メインＣＰＵ２及びサブＣＰＵ３は、この例では、それぞれ専用の回路基板上に後述する各種の回路部品を搭載すると共に、それらの回路基板を専用のハウジングに収容して構成されている。
【００２７】
メインＣＰＵ２のハウジングには、周辺Ｉ／Ｏバスに通ずるコネクタ２１と、外部からＩ／Ｏメモリ２７に対するアクセス並びにＭＰＵ２３に対する割り込みを可能とするためのコネクタ２２とを備えている。一方、サブＣＰＵ３のハウジングには、内部ＭＰＵバスＢ４の導出並びに内部割り込み信号ラインＬ２の導出を行うためのコネクタ３１が設けられている。
【００２８】
なお、図において、Ｌ１はメインＣＰＵ２内に配線された割り込み信号ライン、Ｌ２はサブＣＰＵ３内に配線された割り込み信号ライン、Ｌ３はコネクタ３１とコネクタ２２とを繋ぐ割り込み信号ライン、Ｂ１はメインＣＰＵ２内のＭＰＵバス、Ｂ２はメインＣＰＵ内のＩ／Ｏメモリ２７とバスアービタ２８とを繋ぐバス、Ｂ３はバスアービタ２８とコネクタ２２とを繋ぐオプションバス、Ｂ４はサブＣＰＵ３内のＭＰＵバス、Ｂ５はＭＰＵバスとコネクタ３１とを繋ぐオプションバス、Ｂ６はコネクタ３１とコネクタ２２とを繋ぐオプションバスである。
【００２９】
メインＣＰＵ２内には、ＭＰＵ（Micro Processer Unitの略）２３、システムプログラムメモリ２４、システムワークメモリ２５、ユーザプログラムメモリ２６、Ｉ／Ｏメモリ２７、バスアービタ２８等が含まれている。
【００３０】
ＭＰＵ２３は、メインＣＰＵ２の全体を統括制御するものであり、そのＭＰＵバスＢ１には、システムプログラムメモリ２４、システムワークメモリ２５、ユーザプログラムメモリ２６、Ｉ／Ｏメモリ２７、バスアービタ２８等が接続されれている。
【００３１】
システムプログラムメモリ２４は不揮発性のＲＯＭで構成され、その内部にはメインＣＰＵ２の全体の機能を規定するシステムプログラムが格納されている。先に説明した、ＭＰＵ２３はこのシステムプログラムに従って動作するようになされている。
【００３２】
システムワークメモリ２５はＲＡＭで構成され、その内部にはメインＣＰＵ２の動作状態や処理経過を表わすシステムワークデータが格納される。
【００３３】
ユーザプログラムメモリ２６はＰＲＯＭやフラッシュメモリ等で構成され、その内部には、ユーザにより作成されたラダープログラム等のユーザプログラムが格納される。
【００３４】
Ｉ／Ｏメモリ２７はＲＡＭで構成され、その内部にはメインＣＰＵ２に接続された周辺Ｉ／Ｏのオン／オフ状態や、ユーザプログラムで行われたデータ演算結果などが格納される。
【００３５】
パスアービタ２８は、２つのＣＰＵ２，３からＩ／Ｏメモリ２７に対するメモリアクセスを調整する機能を有するもので、これによりＩ／Ｏメモリ２７はメインＣＰＵ２以外にも、オプションＣＰＵバスＢ５を介してサブＣＰＵモジュールから参照・更新することが可能とされている。
【００３６】
周辺Ｉ／Ｏバス用のコネクタ２１は、メインＣＰＵ２が周辺Ｉ／Ｏモジュール（図示せず）に対してＩ／Ｏリフレッシュをするための機能を果たすものである。
【００３７】
一方、サブＣＰＵ３内にも、同様にしてＭＰＵ３１、システムプログラムメモリ３２、システムワークメモリ３３、ユーザプログラムメモリ３４等が格納されている。
【００３８】
ＭＰＵ３１はサブＣＰＵ３の全体を統括制御するものであり、そのＭＰＵバスＢ４には、システムプログラムメモリ３２、システムワークメモリ３３、ユーザプログラムメモリ３４が接続されている。
【００３９】
システムプログラムメモリ３２は不揮発性のＲＯＭで構成されており、その内部にはサブＣＰＵ３のシステムプログラムが格納されており、ＭＰＵ３１はこのシステムプログラムに従って動作する。
【００４０】
システムワークメモリ３３はＲＡＭで構成されており、その内部にはサブＣＰＵ３の動作状態や処理経過を表わすシステムワークデータが格納される。
【００４１】
ユーザプログラムメモリ３４はＰＲＯＭやフラッシュＲＯＭ等で構成されており、これにはサブＣＰＵ３のユーザプログラムが格納されている。
【００４２】
メインＣＰＵ２とサブＣＰＵ３との間には、オプションＣＰＵバスＢ６並びに割り込み信号ラインＬ３が配線されている。それらはコネクタ２２，３１を介して着脱自在に接続される。
【００４３】
オプションＣＰＵバスＢ６は、サブＣＰＵ３からメインＣＰＵ２内のＩ／Ｏメモリ２７を参照・更新するためのバスラインである。それに対して、割り込み信号ラインＬ３はサブＣＰＵ３からメインＣＰＵ２に対して割り込み処理を依頼するための信号である。
【００４４】
次に、メインＣＰＵ２並びにサブＣＰＵ３のシステムプログラムの構成（すなわちシステムの動作）を図２以下の図面を用いて詳細に説明する。
【００４５】
図２に示されるように、メインＣＰＵ２は、サイクル処理として、共通処理（ステップ２０１）・ユーザプログラム実行処理（ステップ２０２）・Ｉ／Ｏリフレッシュ処理（ステップ２０３）・周辺サービス処理（ステップ２０４）を行っており、それぞれの処理の中でＩ／Ｏメモリ２７に対して参照・更新を行っている（メインＣＰＵ単独処理）。ここで、ユーザプログラム実行処理（ステップ２０２）並びにＩ／Ｏリフレッシュ処理（ステップ２０３）は、図２に示されるように、共有メモリとして機能するＩ／Ｏメモリ２７の領域Ｄに関して行われる。すなわち、それらの処理（ステップ２０２，２０３）に対しては、予めＩ／Ｏメモリ２７の領域Ｄが割り当てられている。
【００４６】
また、メインＣＰＵ２は、その他の処理として、サブＣＰＵ３からの割り込みレベル０と１〜３の連続通知により（ステップ２３１，２３２，２３３）、指定割り込みタスクで使用するＩ／Ｏチャネルに対して都度Ｉ／Ｏリフレッシュ処理と該当ラダータスクの実行を行い（ステップ２１１，２１２，２１３）、その時点でＩ／Ｏメモリの該当領域（領域Ａ，領域Ｂ，領域Ｃ）に対する参照・更新を行っている。ここで、Ｉ／Ｏリフレッシュ並びに優先度レベル１のラダータスク（ステップ２１１）に関しては、共有メモリとして機能するＩ／Ｏメモリ２７の領域Ａが使用される。また、Ｉ／Ｏリフレッシュ並びに優先度レベル２のラダータスク（ステップ２１２）に関しては、共有メモリとして機能するＩ／Ｏメモリ２７の領域Ｂが使用される。さらに、Ｉ／Ｏリフレッシュ並びに優先度レベル３のラダータスク（ステップ２１３）に関しては、共有メモリとして機能するＩ／Ｏメモリ２７の領域Ｃが使用される。
【００４７】
一方、サブＣＰＵ３は、メインＣＰＵ２と同様のサイクル処理としての周辺サービス処理（ステップ２２１）以外に、サブＣＰＵ３の任意のタイミングで実行するＩ／Ｏリフレッシュ及び割り込みタスク実行依頼（ステップ２３１，２３２，２３３）を行っている。
【００４８】
次に、サブＣＰＵ３によるメインＣＰＵ２の実行タイミング制御方法について説明する。メインＣＰＵ２の処理サイクルとは同期せずに、サブＣＰＵ３において１０ｍｓ、１００ｍｓ、１０００ｍｓサイクルの３つの演算ループ処理を行う場合、サブＣＰＵ３からメインＣＰＵ２に対して、割り込みにて、Ｉ／Ｏリフレッシュ及び優先レベル１〜３のラダータスク実行の依頼を行う。
【００４９】
すなわち、図３のフローチャートに示されるように、サブＣＰＵ３の側でタイマ割り込み（スケジューリング機能）により割り込みＩ／Ｏリフレッシュ実行依頼（ステップ３０１）が行われると、メインＣＰＵ２に対してレベル０の割り込みが掛かり、これに応答してメインＣＰＵ２の側ではＩ／Ｏリフレッシュ実行処理（ステップ３１１）が行われる。Ｉ／Ｏリフレッシュ実行処理（ステップ３１１）が完了すると、サブＣＰＵ３に対して割込処理完了通知がなされ、これがサブＣＰＵ側で認知されると（ステップ３０２ＹＥＳ）、サブＣＰＵ３の側では割り込みラダータスク実行依頼（ステップ３０３）が行われ、これを受けてメインＣＰＵ２の側では割込ラダータスク実行処理（ステップ３１２）が行われ、その後、サブＣＰＵ３の側では優先レベル１〜３の各ループ演算処理（ステップ３０４）が実行される。なお、以上の処理のうち、割り込みラダータスク実行依頼（ステップ３０３）は、必要に応じて選択的に行われる。
【００５０】
その結果、メインＣＰＵ２とサブＣＰＵ３との間でのデータ交換としては、例えばメインＣＰＵ２がＩ／Ｏリフレッシュした結果を反映したＩ／Ｏメモリを、サブＣＰＵ３から直接参照したり、サブＣＰＵ３からＩ／Ｏメモリの内容を直接更新し、その結果をＩ／Ｏリフレッシュで周辺Ｉ／Ｏに出力することが可能となる。
【００５１】
尚、Ｉ／Ｏメモリは図１に示したパスアービタ２８の機能により共有メモリとして使用することができ、各ＣＰＵ２，３は必要なときにＩ／Ｏメモリ２７へのアクセスが可能としている。
【００５２】
メインＣＰＵ２とサブＣＰＵ３との処理シーケンスを表わすタイミングチャートが図４に示されている。サブＣＰＵ３は１０ｍｓループ演算処理、１００ｍｓループ演算処理、１０００ｍｓループ演算処理の３つの処理を並列で実行しており、各処理の実行タイミングが競合した場合は優先順位（１０ｍｓ処理＞１００ｍｓ処理＞１０００ｍｓ処理の順）に応じて処理の切り替えを行っている。
【００５３】
また、メインＣＰＵ２は基本的にはサイクル処理（共通処理・ユーザプログラム実行・Ｉ／Ｏリフレッシュ・イベント処理（ステップ２０１〜２０４））を行っており、サブＣＰＵ３から割り込み通知（割り込みタスク実行依頼）があった時点で、依頼された割り込みタスクＩＤに応じた割り込みプログラムを実行している（ステップ２１１，２１２，２１３）。
【００５４】
１０ｍｓ処理、１００ｍｓ処理、１０００ｍｓ処理の内容、及びメインＣＰＵ側で割り込み通知を受けた際の処理内容が図５のフローチャートに示されている。サブＣＰＵ側各ループ処理に関しては、各ループ毎のタイミングでタイマ割り込みが発生し、処理が起動される。
【００５５】
処理が起動されると、まず割り込み要求フラグＦ１に優先度・割り込みタスクＩＤを設定し、割り込み信号をオンする（ステップ５０１）。ここでは、割り込みレベル０はＩ／Ｏリフレッシュ、割り込みレベル１〜３はラダータスク実行を意味しており、割り込み要求を行う場合にはＩ／Ｏリフレッシュとラダータスク実行との両方を起動する。
【００５６】
割り込み信号がオンされると、メインＣＰＵ２側に対してハードウェアで割り込みが掛かり、その後割り込み要求フラグＦ１から優先度・割り込みタスクＩＤを取得する（ステップ５１１）。その後、優先順位及び割り込みタスクＩＤに基づいて、Ｉ／Ｏリフレッシュ（ステップ５１３）、又は割り込みプログラムの実行（ステップ５１５）が行われる。すなわち、割り込みレベル０の場合には、都度リフレッシュが実行されて（ステップ５１３）、その後、都度リフレッシュが完了したことが通知されるのに対し（ステップ５１４）、割り込み１〜３のいずれかの場合には該当するラダータスクが実行される（ステップ５１５）。
【００５７】
このようにしてリフレッシュ完了フラグＦ２が通知されると、割り込みタスク上の都度リフレッシュが完了したことを確認して（ステップ５０２）、Ｉ／Ｏメモリからデータの取り込みを行い（ステップ５０３）、Ｉ／Ｏデータに基づいて演算処理を行う（ステップ５０４）。この演算処理の内容としては、スケジューリング用パラメータに基づいて該当ループのサブ及びメインＣＰＵのタスクを起動するもので、サブＣＰＵ側はＰＩＤ演算や浮動小数点演算など、メインＣＰＵ側はラダーによるシーケンス処理等が含まれる。その後、得られた演算結果はＩ／Ｏメモリ２７に反映される（ステップ５０５）。
【００５８】
尚、割り込み要求フラグ、リフレッシュ完了フラグ、タスク完了フラグ、スケジューリング用パラメータなどについては、Ｉ／Ｏメモリ（メインＣＰＵ・サブＣＰＵともアクセス可能なエリア）上に配置されており、データ仕様としては図６に示されるように設定されている。
【００５９】
すなわち、割り込み要求フラグの１ワードは、Ｄ０〜Ｄ７からなる割り込みタスクＩＤと、Ｄ８〜Ｄ１１からなる優先レベルと、Ｄ１２からなる割り込みタスク実行依頼によって構成される。
【００６０】
また、リフレッシュ並びにタスク完了フラグの１ワードは、Ｄ００に割当たられた１０００ｍｓ処理リフレッシュ完了、Ｄ０１に割当たられた１００ｍｓ処理リフレッシュ完了、Ｄ０２に割り当てられた１０ｍｓ処理リフレッシュ完了、Ｄ０３に割り当てられた１０００ｍｓタスク実行完了、Ｄ０４に割り当てられた１００ｍｓタスク実行完了、Ｄ０５に割り当てられた１０ｍｓタスク実行完了となっている。
【００６１】
さらに、スケジューリング用パラメータに関しては、各部品（例えば、ＰＩＤ演算子等）毎に、その割込周期種別並びにデータエリア先頭アドレスと、起動ラダータスクＩＤとが互いに関連づけて記憶されている。
【００６２】
以上の説明で明らかなように、この発明の実施形態によれば次のような効果を有する。
【００６３】
（１）オプションとして搭載したサブＣＰＵから割り込み通知にて、メインＣＰＵの処理を実行でき、割込通知用フラグやスケジューリング用パラメータを、メインＣＰＵとサブＣＰＵで全領域共有したＩ／Ｏメモリ上に配置しているため、プログラムの実行順を容易かつ動的に指定することができる。その結果、サブＣＰＵの特徴をＰＬＣシステム全体としての制御動作に反映させることができる。
【００６４】
（２）各ＣＰＵ毎に独立して動作しつつ、サブＣＰＵの任意の実行タイミングで割り込みにてデータ更新を指示するので、データの受け渡しの同期がとれている。このため、各ＣＰＵのスキャン時間の遅れに影響されることなく、ＰＬＣ全体としての安定した周期精度を確保することができる。
【００６５】
（３）メインＣＰＵとしてはＩ／Ｏ制御に特化してリソース（ユーザメモリ等）や機能（高機能な命令サポート）を削減できるため、ローコストでシンプルなＰＬＣを提供できる。
【００６６】
なお、以上の実施形態では、いわゆるビルディング・ブロックタイプのＰＬＣに本発明を適用したが、入出力回路や電源回路等をすべて１個のケースに収容したいわゆる一体型のＰＬＣにも適用できることは勿論である。
【発明の効果】
以上の説明で明らかなように、この発明によれば、拡張性に優れると共に、拡張後にあっては、個々のＣＰＵの機能を最大限に発揮させることができ、さらに、比較的に低価格で製作することが可能なマルチＣＰＵタイプのＰＬＣを提供することができる。
【図面の簡単な説明】
【図１】  本発明にかかるＣＰＵ装置の構成を概略的に示すブロック図である。
【図２】  メインＣＰＵとサブＣＰＵとの間の処理の概要を示すゼネラルフローチャートである。
【図３】  割り込み要求によるＩ／Ｏリフレッシュ並びに割り込みラダータスクの実行手順を示すフローチャートである。
【図４】  メインＣＰＵとサブＣＰＵの処理シーケンスを示すタイミングチャートである。
【図５】  割り込み処理依頼から割り込み処理完了までの動作を示すフローチャートである。
【図６】  割り込み要求フラグとリフレッシュ完了フラグの構成を示すメモリマップである。
【符号の説明】
１      ＣＰＵ装置
２      メインＣＰＵ
３      サブＣＰＵ
２１    周辺Ｉ／Ｏバス接続用コネクタ
２２    コネクタ
２３    ＭＰＵ
２４    システムプログラム
２５    システムワークメモリ
２６    ユーザプログラムメモリ
２７    Ｉ／Ｏメモリ
３１    コネクタ
３２    システムプログラムメモリ
３３    システムワークメモリ
３４    ユーザプログラムメモリ
Ｆ１    割込要求フラグ
Ｆ２    リフレッシュ完了フラグ
Ｌ１，Ｌ２，Ｌ３    割込ライン
Ｂ３，Ｂ５，Ｂ６    オプションＭＰＵバス
Ｂ２，Ｂ４    内部ＭＰＵバス
【図１】
0004349687.tif 000002
【図２】
0004349687.tif 000003
【図３】
0004349687.tif 000004
【図４】
0004349687.tif 000005
【図５】
0004349687.tif 000006
【図６】
0004349687.tif 000007