(57)【特許請求の範囲】
【請求項１】
２つの情報処理系の中間に介在されて、それらの情報処理系相互間におけるハンドシェイク処理による情報の受け渡しを仲介するための情報受け渡し仲介装置であって、
２つの情報処理系のそれぞれに割り当てられる２つのポートと、
それら２つのポート間に並列的に介在される複数個の共有メモリと、
複数個の共有メモリの一つを第１のポートに接続するための第１のセレクタと、
複数個の共有メモリの一つを第２のポートに接続するための第２のセレクタと、
それら２つの情報処理系のそれぞれの側からのアクセス開始リードに応答して、同一共有メモリに対する両ポートの側からの同時アクセスを回避しつつ、複数の共有メモリの中の１つをアクセス開始リードのあった側のポートに接続するように２つのセレクタを制御するメモリアクセス調停手段と、を有し、
メモリアクセス調停手段が、
各共有メモリ毎に設けられ、当該共有メモリのアクセス権がいずれのポートの側に有るかを示すメモリ別アクセス権フラグと、
各共有メモリ毎に設けられ、当該共有メモリのデータ更新順位を示すメモリ別データ更新フラグと、
いずれかの情報処理系の側からアクセス開始リードが到来すると、当該ポートをその時点でメモリ別アクセス権フラグの内容が当該ポートの側にある共有メモリの中でメモリ別データ更新フラグの内容に基づいて最もデータ更新順位の新しいとされるメモリにセレクタを介して接続する一方、最もデータ更新順位の古いとされるメモリのアクセス権フラグの内容を反対側ポートの側に変更すると共に、アクセス終了ライトが到来するのを待って、当該ポートをセレクタを介して共有メモリから切り離しかつメモリ別アクセス権フラグの内容を反対側ポートの側に変更する制御手段と、
を具備することを特徴とする情報受け渡し仲介装置。
【請求項２】
２つの情報処理系の中間に介在されて、それらの情報処理系相互間におけるハンドシェイク処理による情報の受け渡しを仲介するための情報受け渡し仲介装置であって、
２つの情報処理系のそれぞれに割り当てられる２つのポートと、
それら２つのポート間に並列的に介在される複数個の共有メモリと、
複数個の共有メモリの一つを第１のポートに接続するための第１のセレクタと、
複数個の共有メモリの一つを第２のポートに接続するための第２のセレクタと、
それら２つの情報処理系のそれぞれの側からのアクセス開始リードに応答して、同一共有メモリに対する両ポートの側からの同時アクセスを回避しつつ、複数の共有メモリの中の１つをアクセス開始リードのあった側のポートに接続するように２つのセレクタを制御するメモリアクセス調停手段と、を有し、
メモリアクセス調停手段が、
各共有メモリ毎に設けられ、当該共有メモリのアクセス権がいずれのポートの側に有るかを示すメモリ別アクセス権フラグと、
各共有メモリ毎に設けられ、当該共有メモリのデータ更新順位を示すメモリ別データ更新フラグと、
いずれかの情報処理系の側からアクセス開始リードが到来した時点において、メモリ別アクセス権フラグの内容が当該ポートの側にある共有メモリが存在する場合には、当該ポートをそれらの共有メモリの１つに接続する一方、メモリ別アクセス権フラグの内容が当該ポートの側にある共有メモリが存在しない場合には、当該ポートをメモリ別アクセス権フラグの内容が反対側ポートの側にありかつ現在アクセスされていないメモリの中で、最もデータ更新順位の古いメモリにセレクタを介して接続し、アクセス終了ライトが到来するのを待って、当該ポートをセレクタを介して共有メモリから切り離しかつアクセス権フラグの内容を反対側ポートの側に変更する制御手段と、
を具備することを特徴とする情報受け渡し仲介装置。
【請求項３】
メモリ別アクセス権フラグの内容の論理和に対応しかついずれのポートの側からも読み取り可能としたアクセス権統合表示フラグを有することを特徴とする請求項１又は２に記載の情報受け渡し仲介装置。
【請求項４】
２つの情報処理系の一方がプログラマブル・コントローラの中央演算ユニットであり、かつ他方がプログラマブル・コントローラの高機能端末ユニットであることとを特徴とする請求項１〜３のいずれかに記載の情報受け渡し仲介装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、２つの情報処理系の中間に介在されて、それらの情報処理系相互間におけるハンドシェイク処理による情報の受け渡しを仲介するための情報受け渡し仲介装置にかかり、特に、内蔵される共有メモリの多重化により、アクセス待ち時間の解消を図った情報受け渡し仲介装置に関する。
【０００２】
【従来の技術】
一般によく知られているように、プログラマブル・コントローラを構成するＣＰＵ装置（以下、単にＣＰＵという）と高機能Ｉ／Ｏユニット等のインテリジェント型端末ユニット（以下、単にＵＮＩＴという）との間には、それらのユニット相互間におけるハンドシェイク処理による情報の受け渡しを仲介するための情報受け渡し仲介装置が設けられている。なお、ここで、高機能Ｉ／Ｏユニットとは、例えばアナログ入力ユニット、アナログ出力ユニット、温度センサユニット、高速カウンタユニット、モーションコントロールユニット、音声ユニット等のようなマイクロプロセッサ内蔵型のユニットのことである。このような情報受け渡し仲介装置の従来の一例が、図７のブロック図に概略的に示されている。
【０００３】
同図において、１００はＣＰＵ側のＭＰＵ（マイクロ・プロセッサ・ユニット）、２００はＵＮＩＴ側のＭＰＵ、ＭはＣＰＵ側ＭＰＵ１００とＵＮＩＴ側ＭＰＵ２００との間に介在される共有メモリ、３００はＣＰＵ側ＭＰＵ１００に割り当てられた第１のポート、４００はＵＮＩＴ側ＭＰＵ２００に割り当てられた第２のポート、５００はそれら２つのポート３００，４００のそれぞれの側からのアクセス開始リードに応答して、共有メモリＭをアクセス開始リードの有った側のポートに択一的に接続するメモリアクセス調停手段としてのコントローラである。
【０００４】
コントローラ５００内にはアクセス権フラグＦが設けられる。アクセス権フラグＦは、図８（ｂ）に示されるように、ＣＰＵ側からリード可能な第１ビットｂ１と、ＵＮＩＴ側からリード可能な第２ビットｂ２とを有する。それらのビットｂ１，ｂ２は、相補的な関係に設定されており、一方のビットの内容が“１”のとき、他方のビットの内容は必ず“０”となる。アクセス権がＣＰＵ側に有るとき、第１ビットｂ１の内容が“１”となる。逆に、アクセス権がＵＮＩＴ側に有るとき、第２ビットｂ２が“１”となる。従って、ＣＰＵ側ＭＰＵ１００若しくはＵＮＩＴ側ＭＰＵ２００では、アクセス権フラグＦの該当ビットの内容をリードすることにより、現在自己がアクセス権を有するかどうかを判定できる。
【０００５】
ＣＰＵ側ＭＰＵ１００若しくはＵＮＩＴ側ＭＰＵ２００で実行される共有メモリアクセス処理の流れが図８（ａ）のフローチャートに概略的に示されている。まずアクセス権フラグＦの内容をリードする（ステップ８０１）。２つのビットｂ１，ｂ２の中で自分の側のビットが“１”であるか否かを判定する（ステップ８０２）。自分の側のビットが“１”であれば、アクセス権を獲得したものと判定して（ステップ８０２ＹＥＳ）、共有メモリＭをアクセスし（ステップ８０３）、データのリード及び／又はライトを実行する（ステップ８０３）。アクセスが終了したならば、アクセス権フラグＦを構成する自分の側のビットを“１”から“０”に変更する。これにより、アクセス権フラグＦの内容は自分の側から相手側へと変更される（ステップ８０４）。
【０００６】
【発明が解決しようとする課題】
しかしながら、このような単一の共有メモリＭを使用した従来の情報受け渡し仲介装置にあっては、ＣＰＵ側のアクセスサイクルと、ＵＮＩＴ側のアクセスサイクルとの間に大きな開きがあると、いずれか一方の側において大きなアクセス待ち時間が生じ、情報処理速度の遅延がもたらせるという問題点が指摘されている。
この問題点を図９を用いて説明する。いま仮に、時刻ｔ１において、アクセス権フラグＦの内容がＣＰＵ側（図中←で示す）に有るものと想定する。より具体的に説明すると、アクセス権フラグＦを構成する第１ビットｂ１の内容が“１”、第２ビットｂ２の内容が“０”である。このとき、コントローラ５００の作用により、共有メモリＭは第１のポート３００に接続されている。
【０００７】
この状態において、ＣＰＵ側ＭＰＵ１００からアクセス権フラグＦのリードが行われると（ステップ８０１）、アクセス権獲得と判定され（ステップ８０２）、共有メモリＭに対するアクセスが実行されて、所定のエリアに対しリード及び／又はライトが行われ（ステップ８０３）、その終了と共に時刻ｔ２において、アクセス権フラグＦのライトが行われて、アクセス権フラグＦの内容はＣＰＵ側からＵＮＩＴ側へと変更される（ステップ８０４）。
【０００８】
ＵＮＩＴ側ＭＰＵ２００では、時刻ｔ２においてアクセス権フラグＦのリードが行われる（ステップ８０１）。すると、アクセス権獲得との判定がなされ（ステップ８０２）、先ほどと同様にして、共有メモリアクセス処理（ステップ８０３）並びにアクセス権フラグライト処理（ステップ８０４）が実行される結果、時刻ｔ２から時刻ｔ４までの期間、共有メモリＭはＵＮＩＴ側ＭＰＵ２００により占有される。この間に、ＣＰＵ側ＭＰＵ１００では、ＵＮＩＴ側より受け取ったデータに基づきラダー図プログラムの実行を含む演算処理を行い、この演算実行処理は時刻ｔ３において終了する。ＣＰＵ側ＭＰＵ１００では、演算処理の終了と共に、再びアクセス権フラグリード処理（ステップ８０１）を実行するが、この時点のアクセス権フラグＦはＵＮＩＴ側に設定されているため、アクセス権獲得はできずに（ステップ８０２ＮＯ）、ＵＮＩＴ側ＭＰＵ２００のアクセスが終了する時刻ｔ４まで、アクセス待ちの状態とされる。即ち、時刻ｔ３から時刻ｔ４までの間、ＣＰＵ側ＭＰＵ１００では共有メモリＭに対するアクセスを行うことができず、ＣＰＵ側における情報処理に支障を来す。
【０００９】
時刻ｔ４において、ＵＮＩＴ側ＭＰＵ２００における共有メモリＭに対するアクセスが終了すると、アクセス権フラグライト処理（ステップ８０４）の実行によって、アクセス権フラグＦの内容は再びＵＮＩＴ側からＣＰＵ側へと戻される。すると、ＣＰＵ側ＭＰＵ１００において、共有メモリＭに対するアクセスが再び可能となり（ステップ８０２ＹＥＳ）、先ほどと同様にして、共有メモリアクセス処理（ステップ８０３）並びにアクセス権フラグライト処理（ステップ８０４）が実行されて、時刻ｔ４から時刻ｔ５までの間、共有メモリＭはＣＰＵ側ＭＰＵ１００により占有される。その後、時刻ｔ５において、アクセス権フラグＦの内容は、再びＣＰＵ側からＵＮＩＴ側へと変更される。
【００１０】
時刻ｔ６において、ＵＮＩＴ側ＭＰＵ２００においてアクセス権フラグリード処理（ステップ８０１）が実行されると、ＵＮＩＴ側ＭＰＵ２００において、アクセス権獲得との判定がなされ（ステップ８０２ＹＥＳ）、以後先ほどと同様にして、共有メモリアクセス処理（ステップ８０３）並びにアクセス権フラグライト処理（ステップ８０４）が実行されることによって、時刻ｔ６から時刻ｔ８までの期間、共有メモリＭはＵＮＩＴ側ＭＰＵ２００により占有される。この間に、ＣＰＵ側ＭＰＵ１００では、時刻ｔ７において演算処理を終了するが、この終了時点においては、アクセス権フラグＦの内容はＵＮＩＴ側に設定されているため、時刻ｔ７から時刻ｔ８までの間、ＣＰＵ側ＭＰＵ１００では、再びアクセス待ちの状態となる。
【００１１】
このように、以上の例では、ＣＰＵ側ＭＰＵ１００において、アクセス待ちの状態が頻繁に生ずる。そのため、ＣＰＵ側ＭＰＵ１００における演算サイクルは、ＵＮＩＴ側ＭＰＵ２００のアクセスサイクルに引きずられるようにして遅れ、その結果、ＣＰＵ側ＭＰＵ１００において情報処理速度の遅延が生ずる。同時に、ＵＮＩＴ側ＭＰＵ２００においても、ＣＰＵ側からＵＮＩＴ側への情報伝達に遅れを生じ、同様にして情報処理速度の遅延を来す恐れがある。
【００１２】
特に、プログラマブル・コントローラにおいては、ＣＰＵ側ＭＰＵ１００において、入力更新処理、命令実行処理、出力更新処理、周辺サービス処理を繰り返し一定サイクルで実行しながら、ＵＮＩＴ側ＭＰＵ２００との間で情報のやりとりを行うものであるため、このようなアクセス待ち状態が頻繁に生ずると、被制御対象に与える影響が大きい。
【００１３】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、共有メモリに対するアクセス待ちの状態をできるだけ低減することが可能な情報受け渡し仲介装置を提供することにある。
【００１４】
【課題を解決するための手段】
この出願の第１の発明は、２つの情報処理系の中間に介在されて、それらの情報処理系相互間におけるハンドシェイク処理による情報の受け渡しを仲介するための情報受け渡し仲介装置であって、
２つの情報処理系のそれぞれに割り当てられる２つのポートと、
それら２つのポート間に並列的に介在される複数個の共有メモリと、
複数個の共有メモリの一つを第１のポートに接続するための第１のセレクタと、
複数個の共有メモリの一つを第２のポートに接続するための第２のセレクタと、
それら２つの情報処理系のそれぞれの側からのアクセス開始リードに応答して、同一共有メモリに対する両ポートの側からの同時アクセスを回避しつつ、複数の共有メモリの中の１つをアクセス開始リードのあった側のポートに接続するように２つのセレクタを制御するメモリアクセス調停手段と、を有し、
メモリアクセス調停手段が、
各共有メモリ毎に設けられ、当該共有メモリのアクセス権がいずれのポートの側に有るかを示すメモリ別アクセス権フラグと、
各共有メモリ毎に設けられ、当該共有メモリのデータ更新順位を示すメモリ別データ更新フラグと、
いずれかの情報処理系の側からアクセス開始リードが到来すると、当該ポートをその時点でメモリ別アクセス権フラグの内容が当該ポートの側にある共有メモリの中でメモリ別データ更新フラグの内容に基づいて最もデータ更新順位の新しいとされるメモリにセレクタを介して接続する一方、最もデータ更新順位の古いとされるメモリのアクセス権フラグの内容を反対側ポートの側に変更すると共に、アクセス終了ライトが到来するのを待って、当該ポートをセレクタを介して共有メモリから切り離しかつメモリ別アクセス権フラグの内容を反対側ポートの側に変更する制御手段と、
を具備することを特徴とする情報受け渡し仲介装置にある。を具備することを特徴とする情報受け渡し仲介装置にある。
【００１５】
そして、このような構成によれば、各共有メモリ毎にアクセス権フラグを設けるのみならず、各共有メモリ毎にデータ更新フラグを設けたため、アクセス要求があったポートに対し、常に最新データが保存されている共有メモリを割り当てることができ、前回のアクセスから今回のアクセスまでの間に長時間を要した場合にも、その間におけるデータ更新の遅れを最小に止めることができことに加え、最もデータ更新順位の古いメモリのアクセス権フラグの内容を無条件で、反対側ポートの側に変更するようにしたため、一方のポートの側にアクセス権が集中することをできる限り回避することができる。
【００１６】
この出願の第２の発明は、２つの情報処理系の中間に介在されて、それらの情報処理系相互間におけるハンドシェイク処理による情報の受け渡しを仲介するための情報受け渡し仲介装置であって、
２つの情報処理系のそれぞれに割り当てられる２つのポートと、
それら２つのポート間に並列的に介在される複数個の共有メモリと、
複数個の共有メモリの一つを第１のポートに接続するための第１のセレクタと、
複数個の共有メモリの一つを第２のポートに接続するための第２のセレクタと、
それら２つの情報処理系のそれぞれの側からのアクセス開始リードに応答して、同一共有メモリに対する両ポートの側からの同時アクセスを回避しつつ、複数の共有メモリの中の１つをアクセス開始リードのあった側のポートに接続するように２つのセレクタを制御するメモリアクセス調停手段と、を有し、
メモリアクセス調停手段が、
各共有メモリ毎に設けられ、当該共有メモリのアクセス権がいずれのポートの側に有るかを示すメモリ別アクセス権フラグと、
各共有メモリ毎に設けられ、当該共有メモリのデータ更新順位を示すメモリ別データ更新フラグと、
いずれかの情報処理系の側からアクセス開始リードが到来した時点において、メモリ別アクセス権フラグの内容が当該ポートの側にある共有メモリが存在する場合には、当該ポートをそれらの共有メモリの１つに接続する一方、メモリ別アクセス権フラグの内容が当該ポートの側にある共有メモリが存在しない場合には、当該ポートをメモリ別アクセス権フラグの内容が反対側ポートの側にありかつ現在アクセスされていないメモリの中で、最もデータ更新順位の古いメモリにセレクタを介して接続し、アクセス終了ライトが到来するのを待って、当該ポートをセレクタを介して共有メモリから切り離しかつアクセス権フラグの内容を反対側ポートの側に変更する制御手段と、
を具備することを特徴とする情報受け渡し仲介装置にある。
【００１７】
そして、このような構成によれば、すべての共有メモリのアクセス権が相手側に有る場合にも、最も古いデータの保存された共有メモリのアクセス権を強制的に自分の側に切り替えるようにしたため、アクセス待ちの生ずる可能性を完全になくすことができる。
【００１８】
この出願の第３の発明は、第１又は第２の発明において、メモリ別アクセス権フラグの内容の論理和に対応しかついずれのポートの側からも読み取り可能としたアクセス権統合表示フラグを有することを特徴とする情報受け渡し仲介装置にある。
【００１９】
そして、このような構成によれば、メモリ別アクセス権フラグの内容の論理和に対応しかついずれのポートの側からも読み取り可能としたアクセス権統合表示フラグを設けたことにより、当該ポートの側にアクセス可能な共有メモリの有無を即座に判定することができ、従前のアクセス処理をそのまま適用して、両ポート間で情報のやりとりを行うことができる。
【００２０】
この出願の第４の発明は、第１乃至３の発明において、メモリアクセス調停手段が、２つの情報処理系の一方がプログラマブル・コントローラの中央演算ユニットであり、かつ他方がプログラマブル・コントローラの高機能端末ユニットであることとを特徴とする請求項１〜６のいずれかに記載の情報受け渡し仲介装置にある。
【００２１】
このような構成によれば、中央演算ユニットと高機能端末ユニットとを備えたインテリジェントタイプのプログラマブル・コントローラシステムにおいて、両ユニット間における情報のやりとりの遅れに起因する制御システム全体の不具合を解決することができる。
【００２２】
【発明の実施の形態】
本発明が適用されたプログラマブル・コントローラシステムの全体が図１のブロック図に概略的に示されている。同図において、１００はＣＰＵ側ＭＰＵ、２００はＵＮＩＴ側ＭＰＵ、６００はＣＰＵ側ＭＰＵ１００に割り当てられた第１のポート、７００はＵＮＩＴ側ＭＰＵ２００に割り当てられた第２のポート、Ｍ１，Ｍ２はそれら２つのポート６００，７００の間に並列的に介在される２個の共有メモリ、８００はそれら２つのポート６００，７００のそれぞれの側からのアクセス開始リードに応答して、同一共有メモリに対する両ポートの側からの同時アクセスを回避しつつ、２個の共有メモリＭ１，Ｍ２の中の１つをアクセス開始リードの有った側のポートに接続するメモリアクセス調停手段としてのコントローラである。
【００２３】
セレクタ６００Ａは、コントローラ８００の制御により、第１のポート６００を２個の共有メモリＭ１，Ｍ２のいずれか一方に接続する。同様にして、セレクタ７００Ａも、コントローラ８００からの制御で、第２のポート７００を２個の共有メモリＭ１，Ｍ２のいずれか一方に接続する。
【００２４】
コントローラ８００は例えばワイヤードロジック回路により構成されており、その内部には２個のメモリ別アクセス権フラグＦ１，Ｆ２が設けられる。メモリ別アクセス権フラグＦ１は、共有メモリＭ１のアクセス権が２個のポート６００，７００のいずれの側に有るかを示す。同様にして、メモリ別アクセス権フラグＦ２は、共有メモリＭ２のアクセス権が、２個のポート６００，７００のいずれの側にあるかを示す。それらのメモリ別アクセス権フラグＦ１，Ｆ２は、従前のアクセス権フラグＦ（図８（ｂ））と同様に、互いに相補的関係にある２ビットのデータで構成される。即ち、それらのビットは、ＣＰＵ側ＭＰＵ１００にアクセス権が有る場合には（１０）となるのに対し、ＵＮＩＴ側ＭＰＵ２００にアクセス権が有る場合には（０１）となる。これらメモリ別アクセス権フラグＦ１，Ｆ２の内容は、ＣＰＵ側ＭＰＵ１００並びにＵＮＩＴ側ＭＰＵ２００からでは読むことができない。コントローラ８００内には、それらのフラグＦ１，Ｆ２とは別に、アクセス権統合表示フラグＦ０が設けられる。このアクセス権統合表示フラグＦ０の内容は、ＣＰＵ側ＭＰＵ１００並びにＵＮＩＴ側ＭＰＵ２００から読み出すことができる。しかも、このアクセス権統合表示フラグＦ０の内容は、メモリ別アクセス権フラグＦ１，Ｆ２の内容の論理和に対応する。これを詳しく説明すると、アクセス権統合表示フラグＦ０は、ＣＰＵ側ＭＰＵ１００に対応する第１ビットと、ＵＮＩＴ側ＭＰＵ２００に対応する第２ビットとからなる２ビット構成となっている。そして、アクセス権統合表示フラグＦ０の第１ビットの値は、メモリ別アクセス権フラグＦ１の第１ビットの値とメモリ別アクセス権フラグＦ２の第１ビットの値との論理和に対応している。同様にして、アクセス権統合表示フラグＦ０の第２ビットの値は、メモリ別アクセス権フラグＦ１の第２ビットの値とメモリ別アクセス権フラグＦ２の第２ビットの値との論理和に対応している。そのためアクセス権統合表示フラグＦ０の第１ビットの値は、２個の共有メモリＭ１，Ｍ２のいずれかのアクセス権が第１のポート６００側に有るとき、“１”となる。同様にして、アクセス権統合表示フラグＦ０の第２ビットの値は、共有メモリＭ１，Ｍ２のいずれかのアクセス権がポート７００の側に有るとき“１”となる。このアクセス権統合表示フラグＦ０の内容は、ＣＰＵ側ＭＰＵ１００若しくはＵＮＩＴ側ＭＰＵ２００のいずれからも読むことができるため、図８（ａ）に示した従来のアクセス手順をそのまま採用して、アクセス権獲得の判定（ステップ８０２）を行うことができる。
【００２５】
コントローラ８００内には、図４に示されるように、２個の共有メモリＭ１，Ｍ２のデータ更新順位を示すメモリ別データ更新フラグＦＦ１，ＦＦ２が設けられている。データ更新フラグＦＦ１は共有メモリＭ１に、またデータ更新フラグＦＦ２は共有メモリＭ２に対応している。それらのデータ更新フラグＦＦ１，ＦＦ２は、ＣＰＵ側ＭＰＵ１００に割り当てられた第１のポート６００に対応する第１ビットと、ＵＮＩＴ側ＭＰＵ２００に割り当てられた第２のポート７００に対応する第２ビットとを有する。それらのビットのいずれかが“１”であるということは、当該メモリに“１”の側のポートからのアクセスによる最新のデータが保存されていることを意味する。例えば、メモリ別データ更新フラグＦＦ１の内容が（０１）であるということは、共有メモリＭ１にポート７００からのアクセスによる最新のデータが保存されていることを意味する。
【００２６】
メモリ別アクセス権フラグＦ１，Ｆ２並びにメモり別データ更新フラグＦＦ１，ＦＦ２の内容の遷移を、図４を参照しながら、より詳細に説明する。
【００２７】
図４（ａ）に示される状態では、メモリ別アクセス権フラグＦ１，Ｆ２の内容は、それぞれ（１０），（０１）となっている。また、メモリ別データ更新フラグＦＦ１，ＦＦ２の内容は、それぞれ（００），（００）となっている。これらのフラグの内容は、共有メモリＭ１のアクセス権が第１のポート６００側にあり、共有メモリＭ２のアクセス権がポート７００の側にあることを示している。更に、共有メモリＭ１，Ｍ２のいずれにも最新のデータは保存されていないことを示している。
【００２８】
図４（ｂ）には、図４（ａ）の状態から、ＣＰＵ側が共有メモリＭ１にアクセス終了した状態を示している。この状態においては、メモリ別アクセス権フラグＦ１，Ｆ２の内容は、それぞれ（０１），（０１）となっている。また、メモリ別データ更新フラグＦＦ１，ＦＦ２の内容は、それぞれ（０１），（００）となっている。これらのフラグの内容は、共有メモリＭ１，Ｍ２のアクセス権が、いずれもＵＮＩＴ側に有ることを意味している。また、共有メモリＭ１には、ＵＮＩＴ側からのアクセスにより、最新のデータが保存されていることを意味している。
【００２９】
図４（ｃ）には、図４（ｂ）の状態から、ＵＮＩＴ側が共有メモリＭ１にアクセスを開始した状態を示している。この状態においては、メモリ別アクセス権フラグＦ１，Ｆ２の内容は、それぞれ（０１），（１０）となっている。また、メモリ別データ更新フラグＦＦ１，ＦＦ２の内容は、それぞれ（００），（００）となっている。これらのフラグの内容は、共有メモリＭ１のアクセス権がＵＮＩＴ側に有り、共有メモリＭ２のアクセス権がＣＰＵ側に有ることを意味している。また、共有メモリＭ１，Ｍ２のいずれにも、最新のデータは保存されていないことを意味している。
【００３０】
図４（ｄ）には、図４（ｃ）の状態から、ＵＮＩＴ側が共有メモリＭ１にアクセス終了した状態を示している。この状態においては、メモリ別アクセス権フラグＦ１，Ｆ２の内容は、それぞれ（１０），（１０）となっている。また、メモリ別データ更新フラグＦＦ１，ＦＦ２の内容は、それぞれ（１０），（００）となっている。これらのフラグの内容は、共有メモリＭ１，Ｍ２のアクセス権がいずれもＣＰＵ側に有ることを意味している。また、共有メモリＭ１には、ＣＰＵ側からのアクセスによる最新のデータが保存されていることを意味している。
【００３１】
次に、以上のフラグに関する理解を前提として、図２の状態遷移図並びに図３のフローチャートを参照しながら、コントローラ８００を構成するワイヤードロジック回路の動作を系統的に説明する。
【００３２】
図２に示されるように、時刻ｔ１においては、メモリ別アクセス権フラグＦ１の内容はＣＰＵ側に、またＦ２の内容はＵＮＩＴ側に設定されている。そのため、図１に示されるアクセス権統合表示フラグＦ０の内容は（００）となる。従って、図８（ａ）に示される手順でアクセス権フラグリード処理（ステップ８０１）を実行すると、ＣＰＵ側並びにＵＮＩＴ側のいずれにおいても、アクセス権獲得と判定される（ステップ８０２ＹＥＳ）。
【００３３】
一方、図３のフローチャートに戻って、アクセス権開始リード（ステップ８０１）が実行されると、図３のフローチャートに示される処理が、コントローラ８００内のＣＰＵ側並びにＵＮＩＴ側の双方において実行される。まず、メモリ別アクセス権フラグＦ１，Ｆ２の内容が参照され、当該ポートの側において、双方の共有メモリＭ１，Ｍ２がアクセス許可されているか（ステップ３０１）、メモリＭ１，Ｍ２のいずれか一方のみが許可されているか（ステップ３０２）の判定が行われる。図２に示される時刻ｔ１の時点においては、いずれのポートの側においても、いずれか一方のメモリのみが許可されている。そのため、いずれか一方のメモリのみが許可されていると判定された後（ステップ３０１ＮＯ，３０２ＹＥＳ）、コントローラ８００からの制御でセレクタ６００，７００が作動され、許可された方にアドレスの切り替えが行われる（ステップ３０４）。
【００３４】
その後、図８（ａ）に戻って、アクセスを許可された共有メモリＭ１，Ｍ２に対して、ＣＰＵ側並びにＵＮＩＴ側からアクセス処理が行われ（ステップ８０３）、データのリード及び／又はライト処理が実行される（ステップ８０３）。このようにして、データのリード及び／又はライト処理が完了すると、続いて図８（ａ）に示されるアクセス権フラグライト処理（ステップ８０４）が実行される。すると、図３のフローチャートに戻って、該当するアクセス権を反対側に倒す処理（ステップ３０５）が、ＣＰＵ側においては時刻ｔ２において、またＵＮＩＴ側においては時刻ｔ３において実行される結果、時刻ｔ３の時点においては、アクセス権フラグＦ１の内容はＵＮＩＴ側に、またＦ２の内容はＣＰＵ側に設定される。
【００３５】
時刻ｔ２においてアクセスを終了したＣＰＵ側ＭＰＵ１００は、直ちにラダー図プログラム等の演算処理を時刻ｔ４に至るまで実行し、時刻ｔ４において再び図８（ａ）に示されるアクセス権フラグリード処理（ステップ８０１）を実行する。時刻ｔ４において、アクセス権フラグＦ２の内容はＵＮＩＴ側に、またアクセス権フラグＦ２の内容はＣＰＵ側に設定されている。そのため、先ほどと同様に、アクセス権統合表示フラグＦ０の内容も（１１）となって、ＣＰＵ側並びにＵＮＩＴ側のいずれの側からでもアクセス可能な状態となっている。そのため、時刻ｔ４において、アクセス権フラグリード処理（ステップ８０１）が実行されると、先ほどと同様にして、アクセス権獲得判定が行われる一方（ステップ８０２ＹＥＳ）、図３のフローチャートにおいては、アドレスの切り替え処理が行われ（ステップ３０４）、今度は共有メモリＭ２に対するアクセス処理が行われる（ステップ８０３）。アクセスが終了したならば、アクセス権フラグライト処理が実行されて（ステップ８０４）、図３のフローチャートにおいては、該当するアクセス権を反対側に倒す処理が実行され（ステップ３０５）、その結果時刻ｔ５においては、アクセス権フラグＦ１，Ｆ２はいずれもＵＮＩＴ側へと設定される。
【００３６】
以後、ＣＰＵ側ＭＰＵ１００においては、再び演算の実行を時刻ｔ７まで継続する。この間に、ＵＮＩＴ側ＭＰＵ２００においては、時刻ｔ６において、図８（ａ）に示されるアクセス権フラグリード処理を実行する（ステップ８０１）。時刻ｔ６においては、アクセス権フラグＦ１，Ｆ２の内容はいずれもＵＮＩＴ側へと設定されているため、図１に示されるアクセス権統合表示フラグＦ０の内容は（１１）となる。そのため、アクセス権開始リード処理に応答して、図３に示されるフローチャートが開始されると、フラグＦ１，Ｆ２の内容を参照して、いずれのメモリも許可されているとの判定が行われた後（ステップ３０１ＹＥＳ）、その後先ほどとは異なり、新しい方にアドレスを切り替え、古いほうのフラグを反対側に倒す処理が実行される（ステップ３０３）。すると、時刻ｔ６においては、ＵＮＩＴ側ＭＰＵ２００から最新のデータが保存されているメモリＭ２に対するアクセスが開始される一方、古いデータの格納されたメモリＭ１に対応するアクセス権フラグＦ１についてはＵＮＩＴ側からＣＰＵ側へとアクセス権の変更が行われる。その結果、時刻ｔ６の時点においては、アクセス権フラグＦ１はＣＰＵ側に戻される結果、再びＣＰＵ側並びにＵＮＩＴ側のいずれの側からもメモリアクセスが可能な状態に復帰する。つまり、時刻ｔ５の時点においては、双方のフラグＦ１，Ｆ２がいずれもＵＮＩＴ側に設定されているため、ＣＰＵ側からはアクセスができない状態であったのに対し、時刻ｔ６の時点においてＵＮＩＴ側からアクセス開始リードを行うと、自動的にアクセスしない側のメモリＭ１のフラグＦ１がＣＰＵ側へと倒され、その結果ＣＰＵ側並びにＵＮＩＴ側双方の側からアクセスが可能な状態に復帰するのである。
【００３７】
続いて、時刻ｔ７においてＣＰＵ側における演算の終了と共に、再びＣＰＵ側ＭＰＵ１００において、図８（ａ）に示されるアクセス権フラグリード処理（ステップ８０１）が実行されるが、この時点においては、先ほどから説明したように、ＣＰＵ側ＭＰＵ１００からメモリＭ１に対するアクセスが可能となるため、先ほどの経過（ステップ３０１ＮＯ，３０２ＹＥＳ，３０４）を経て、第１のポート６００は共有メモリＭ１へと接続され、その後ＣＰＵ側ＭＰＵ１００において図８（ａ）並びに図３（ｂ）の該当処理が実行されて、時刻ｔ７から時刻ｔ８に至るまで、メモリＭ１はＣＰＵ側ＭＰＵ１００により占有される。時刻ｔ８において、アクセスが終了すると、メモリＭ１に対応するアクセス権フラグＦ１はＣＰＵ側からＵＮＩＴ側へと変更され、その後ＣＰＵ側ＭＰＵ１００においては再び時刻ｔ１０に至るまで演算処理を実行する。
【００３８】
一方、時刻ｔ９になると、ＵＮＩＴ側ＭＰＵ２００からメモリＭ２に対するアクセスも終了し、この終了時点ｔ９においては、両フラグＦ１，Ｆ２はいずれもＵＮＩＴ側へと設定された状態となる。
【００３９】
その後、時刻ｔ１０になると、ＣＰＵ側ＭＰＵ１００における演算処理が終了し、再びＣＰＵ側ＭＰＵ１００からは、図８（ａ）に示されるアクセス権フラグリード処理（ステップ８０１）が実行される。このとき、図２の状態遷移図における最下段を参照して明らかなように、それまでいずれもＵＮＩＴ側に設定されていたフラグＦ１，Ｆ２の中で、古いデータの格納されているメモリＭ２に対応するフラグＦ２は、強制的にＵＮＩＴ側からＣＰＵ側へと切り替え設定される。即ち、ＣＰＵ側ＭＰＵ１００からアクセス開始リードが行われると、これに応答して、それまでＵＮＩＴ側を向いていたフラグＦ２は、強制的にＣＰＵ側へと切り替えられ、その結果ＣＰＵ側ＭＰＵ１００からのメモリＭ２に対するアクセスが時刻ｔ１１まで行われる。
【００４０】
尚、この強制切り替え処理については、図５の状態遷移図並びに図６のフローチャートを参照してより詳細に説明する。図５の状態遷移図において、時刻ｔ２並びに時刻ｔ４において、前述したアクセス権フラグの強制切り替え処理が実行される。即ち、時刻ｔ２において両フラグＦ１，Ｆ２はいずれもＵＮＩＴ側に設定され、その後時刻ｔ５において、ＵＮＩＴ側からのアクセスが開始されるまで、図３のステップ３０３に示される処理は実行されないから、この間に何らの対策もとらなければ、ＣＰＵ側ＭＰＵ１００からいずれのメモリＭ１，Ｍ２に対してもアクセスはできなくなる。この問題は、図６のフローチャートに示されるように、図３のフローチャートの前段部分に、ステップ６０１並びに６０２に相当する処理を追加することによって解決される。
【００４１】
即ち、図６において示されるように、アクセス開始リードが、ＣＰＵ側ＭＰＵ１００から到来すると、コントローラ８００においては、いずれのフラグＦ１，Ｆ２も不許可であることを判定し（ステップ６０１ＹＥＳ）、続いてメモりＭ１，Ｍ２のうち保存データの古いほうに対応するアクセス権フラグを、アクセス開始リードした方に倒す処理を実行する（ステップ６０２）。その結果、図５の状態遷移図において、時刻ｔ３に示されるように、それまでＵＮＩＴ側に向けられていたフラグＦ２は強制的にＣＰＵ側へと倒され、その結果時刻ｔ３から時刻ｔ４までの間、ＣＰＵ側ＭＰＵ１００からのメモリＭ２に対するアクセスが可能となるのである。
【００４２】
このように、図５並びに図６に示される例によれば、いつ何時ＣＰＵ側並びにＵＮＩＴ側のいずれの側からアクセス開始リードが行われようとも、アクセス開始の待ち時間を生ずることは全くない。そのため、図６のフローチャートにおけるステップ６０１，６０２の処理を追加すれば、仮にアクセス権統合表示フラグＦ０を用いずとも、いつ何時たりとも、両ＭＰＵ１００，２００から共有メモリに対するアクセスが可能となり、両ＭＰＵ間におけるデータのやりとりをきわめてスムーズに行わせることができる。従って、プログラマブル・コントローラシステムに採用すれば、システム全体の処理速度を低下させることなく、両ユニット間において緊密な連絡を取りつつ、非制御対象に対する信頼性を向上することができる。
【００４３】
尚、以上の実施の形態では、共有メモリの数が２個の場合で説明したが、本発明の情報受け渡し仲介装置は、３個以上の共有メモリを使用する場合にも同様にして適用することができる。
【００４４】
即ち、その場合には、メモリアクセス調停手段を構成するコントローラは、各共有メモリ毎に設けられ、当該共有メモリのアクセス権がいずれのポートの側に有るかを示すメモリ別アクセス権フラグと、各共有メモリ毎に設けられ、当該共有メモリのデータ更新順位を示すメモリ別データ更新フラグと、いずれかのポートの側からアクセス開始リードが到来すると、当該ポートをその時点でメモリ別アクセスフラグの内容が当該ポートの側に有る共有メモリの中で最もデータ更新順位の古いメモリに接続する一方、最もデータ更新順位の古いメモリのアクセス権フラグの内容を反対側ポートの側に変更すると共に、アクセス終了ライトが到来するのを待って、当該ポートを共有メモリから切り離しかつアクセス権フラグの内容を反対側ポートの側に変更する制御手段とを具備することができる。
【００４５】
また、他の実施の形態としては、メモリアクセス調停手段を構成するコントローラは、各共有メモリ毎に設けられ、当該共有メモリのアクセス権がいずれのポートの側に有るかを示すメモリ別アクセス権フラグと、各共有メモリ毎に設けられ、当該共有メモリのデータ更新順位を示すメモリ別データ更新フラグと、いずれかのポートの側からアクセス開始リードが到来した時点において、アクセス権フラグの内容が当該ポートの側に有る共有メモリが存在する場合には、当該ポートをそれらの共有メモリの１つに接続する一方、アクセス権フラグの内容が当該ポートの側に有る共有メモリが存在しない場合には、当該ポートをアクセス権フラグの内容が反対側ポートの側にありかつ現在アクセスされていないメモリの中で、最もデータ更新順位の古いメモリに接続し、アクセス終了ライトが到来するのを待って、当該ポートを共有メモリから切り離しかつアクセス権フラグの内容を反対側ポートの側に変更する制御手段とを具備することができる。
【００４６】
【発明の効果】
以上の実施の形態でも明らかなように、この発明によれば、共有メモリに対するアクセス待ちの状態をできるだけ低減することが可能な情報受け渡し仲介装置を提供するという効果がある。
【図面の簡単な説明】
【図１】  本発明が適用されたプログラマブル・コントローラの構成を概略的に示すブロック図である。
【図２】  本発明におけるメモリアクセスとメモリ別アクセス権フラグとの関係を示す状態遷移図である。
【図３】  図１に示されるコントローラの動作を示すフローチャートである。
【図４】  メモリ別アクセス権フラグ並びにメモリ別データ更新フラグの意味内容を説明するための状態遷移図である。
【図５】  本発明におけるアクセス権フラグ強制切り替え処理を説明するための状態遷移図である。
【図６】  本発明におけるアクセス権フラグ強制切り替え処理に対するコントローラの動作を説明するためのフローチャートである。
【図７】  従来装置が適用されたプログラマブル・コントローラの構成を概略的に示すブロック図である。
【図８】  従来のプログラマブル・コントローラにおけるＣＰＵ側若しくはＵＮＩＴ側におけるアクセス処理手順を示すフローチャートである。
【図９】  従来装置におけるアクセス権の移行経過を示す状態遷移図である。
【符号の説明】
１００  ＣＰＵ側ＭＰＵ
２００  ＵＮＩＴ側ＭＰＵ
３００，４００  ポート
５００  コントローラ
６００，７００  ポート
６００ａ，７００ａ  セレクタ
８００  コントローラ
Ｆ０  アクセス権統合表示フラグ
Ｆ１，Ｆ２  メモリ別アクセス権フラグ
Ｍ１，Ｍ２  共有メモリ
ＦＦ１，ＦＦ２  メモリ別データ更新フラグ
【図１】
0003743601.tif 000002
【図２】
0003743601.tif 000003
【図３】
0003743601.tif 000004
【図４】
0003743601.tif 000005
【図５】
0003743601.tif 000006
【図６】
0003743601.tif 000007
【図７】
0003743601.tif 000008
【図８】
0003743601.tif 000009
【図９】
0003743601.tif 000010