以下に添付図面を参照して、この発明にかかる通信管理装置、通信装置および通信方法の好適な実施の形態を詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、この発明の実施の形態1による通信システムの構成の一例を模式的に示す図である。この通信システムは、複数の通信ノードA〜Cが、スイッチングハブ101を介してイーサネット(登録商標)によってスター状に接続された同一セグメントのネットワークによって構成される。通信ノードA〜Cは、それぞれポートを有し、各通信ノードのポート間は、ツイストペアケーブルや光ファイバなどの全二重通信が可能なケーブルを介して接続される。この例では、通信ノードとして、同一セグメントのネットワーク内におけるデータ(フレーム)の送受信を管理する管理局である1台のマスタ局Aと、マスタ局Aによる送信順序に基づいてデータ(フレーム)の送信を行う2台のスレーブ局B,Cとが設けられる場合を示している。なお、この例では、通信システムがスター状に接続される通信ノードA〜Cからなる場合を示しているが、ライン状やリング状など他の接続形態で接続される通信ノードからなる場合や、スター状とライン状の接続形態が混在した場合でもよい。
この実施の形態1では、各通信ノードA〜C間がイーサネット(登録商標)で接続された通信システムにおいて、各通信ノードA〜Cが自由にデータの送信を行うのではなく、トークンと呼ばれるデータ送信権を得るためのフレーム(トークンフレーム)を通信システム内の各通信ノードA〜Cに順番に送信し、そのトークンフレームを獲得した通信ノードが他の通信ノードに対してデータの送信を行うことができるようにしている。ここで、トークンフレームの送信順序はたとえば以下の(1)に示されるものとする。
マスタ局A→スレーブ局B→スレーブ局C→マスタ局A ・・・(1)
このように、通信システムは、物理的なネットワーク構成ではリング構成を有していないが、データの送信権(トークンフレーム)を通信システム内の通信ノードA〜C間で順番に回すようにしてリング管理局Xに送信権が戻ってくるようにすることによって、送信権を論理的なリング構成とし繰り返す構成となっている。
図2−1は、マスタ局の機能構成を模式的に示すブロック図である。マスタ局は、隣接する通信ノード(スレーブ局)またはスイッチングハブ101との間でイーサネット(登録商標)ケーブルを接続するための2つのポート11−1,11−2と、ポート11−1,11−2を介したフレームの送受信処理やトークンフレームの送信順序を確立する処理などを行う通信処理部20と、スレーブ局からのデータを用いて演算処理を行う演算処理部30と、を備える。
ポート11−1,11−2は、第1のポート11−1と第2のポート11−2の2つのポートから構成される。これらの2つのポート11−1,11−2のうち少なくとも1つのポートが隣接するスレーブ局のポート(またはスイッチングハブ101を介したスレーブ局のポート)と接続されればよい。
通信処理部20は、論理リング構成部21と、トークン巡回順序情報記憶部22と、トークンフレーム処理部23と、データフレーム通信処理部24と、送信バッファ25と、受信バッファ26と、を備える。
論理リング構成部21は、マスタ局の電源オン時にまたは所定の時間ごとに、マスタ局と同一セグメントのネットワーク内に存在する通信ノード(スレーブ局)を検出し、その接続関係からデータの送信権であるトークンフレームを流す(渡す)順序であるトークン巡回順序情報を決定する論理リング構成処理を行う。また、論理リング構成部21は、同一セグメントのネットワーク内に存在する他の通信ノード(スレーブ局)に対して、その通信ノードのつぎに送信権を得る通信ノードを含むトークン巡回先情報を通知する。なお、このトークン巡回先情報は、トークン巡回順序情報であってもよい。
トークン巡回順序情報記憶部22は、論理リング構成部21によって決定されたトークン巡回順序情報を記憶する。
トークンフレーム処理部23は、論理リング構成部21による論理リング構成処理が終了すると、トークンフレームを生成し、トークン巡回順序情報に基づいてトークンフレームを送信処理を行い、またトークンフレームを受信すると送信権を獲得したか判定する。図3は、この実施の形態1で使用されるトークンフレームのフォーマットの一例を示す図である。トークンフレーム200は、イーサネット(登録商標)フレームであり、宛先MAC(Media Access Control)アドレス(DA)201と、送信元MACアドレス(SA)202と、イーサネット(登録商標)タイプ(type)203と、上位層のデータを格納するデータ204と、自フレームのDA201からデータ204までに格納されている情報にエラーが存在するか否かのチェック結果を格納するFCS(Frame Check Sequence)211と、を有する。
この実施の形態1では、データ204の一部にフレーム種別情報205と、送信権獲得装置情報206と、トークンリピートカウンタ207と、送信許可局値208と、送信可能フレーム数209と、送信可能フレーム数「0」設定局210と、が格納される。
フレーム種別情報205には、イーサネット(登録商標)フレームの種類を示す情報を格納し、この場合には、該フレームがトークンフレームであることを示す情報が格納される。また、送信権獲得装置情報206には、送信権を有する通信ノードのMACアドレスが格納される。この送信権獲得装置情報206での送信権は、トークンフレームを取得し、送信権を獲得可能な状態にあるという意味であり、実際にデータの送信を行うことができる権利ではない。
トークンリピートカウンタ207は、該トークンフレーム200を受信した通信ノードの論理リングにおけるマスタ局から数えた並び番号をカウントするものであり、請求の範囲のトークン巡回番号に対応する。ここでは、送信権獲得装置情報206で示される通信ノードが、マスタ局を0番目として、論理リング上で何番目に位置する通信ノードであるのかを示す。たとえば、図1の構成で上記(1)のトークン巡回順序を有する場合において、スレーブ局Bは論理リング上で1番目の通信ノードであり、スレーブ局Cは同じく2番目の通信ノードである。
送信許可局値208は、論理リング上の通信ノードのうち、最初にデータフレームの送信が可能な通信ノードの並び番号を示す。この並び番号は、トークンリピートカウンタ207でカウントされる値と同じである。なお、トークンリピートカウンタ207と送信許可局値208は、請求の範囲の第1の送信権獲得判定情報を構成する。
送信可能フレーム数209は、トークンフレーム200がマスタ局から送信されて、一巡する間に送信可能なフレーム数を表す。また、送信可能フレーム数「0」設定局210は、送信可能フレーム数209を「0」にした通信ノードの並び番号を示す。この並び番号は、トークンリピートカウンタ207でカウントされる値と同じである。
ここで、このようなトークンフレーム200を用いた場合の受信処理と送信処理について説明する。トークンフレーム処理部23は、他の通信ノード(スレーブ局)から送信されたトークンフレーム200を受信すると、そのトークンフレーム200のデータ204内の送信権獲得装置情報206と自局のMACアドレスとを比較する。両者が一致した場合には、データを送信可能な状態にあるものと判定し、さらにデータ204内に格納されている情報から自局でデータフレームの送信が可能な場合には、データフレーム通信処理部24にデータフレームの送信処理を行うように指示を与えるが、データフレームの送信が不可能な場合には、送信権を獲得できなかったものと判定する。また、送信権獲得装置情報206と自局のMACアドレスが一致しない場合にはまだ送信権を得ないものと判定する。なお、いずれの場合にも受信したトークンフレーム200は、受信したポートでない他のポートにリピートする。以上のトークンフレーム処理部23によるトークンフレーム200の受信処理は、請求の範囲のトークンフレーム受信手段に対応する。
また、トークンフレーム処理部23は、送信権獲得装置情報206が自局であるトークンフレーム200を受信すると、送信権獲得装置情報206と、トークンリピートカウンタ207と、送信許可局値208と、送信可能フレーム数209とを、設定して、ブロードキャストで送信する。ここで、トークンリピートカウンタ207は「1」に設定し、送信可能フレーム数209は予め定められた所定の値に設定し、送信権獲得装置情報206は、トークン巡回順序情報に基づいて自局のつぎに送信権を得るスレーブ局(のMACアドレス)を設定する。
また、トークンフレーム受信時の送信可能フレーム数209が「0」でない場合には、送信許可局値208は論理リングにおける自局の並び順である「0」を設定し、トークンフレーム受信時の送信可能フレーム数209が「0」である場合には、受信した時点のトークンフレーム200の送信可能フレーム数「0」設定局210に格納されている値を送信許可局値208に設定する。以上のトークンフレーム処理部23によるトークンフレーム200の送信処理は、請求の範囲のトークンフレーム送信手段に対応する。
データフレーム通信処理部24は、データフレームの送受信処理を行う。具体的には、送信権を獲得した場合に、送信バッファ25に蓄積されたデータをデータフレーム化してスレーブ局に送信したり、スレーブ局から受信バッファ26に蓄積されたデータフレームを受信処理したり、スレーブ局が他のスレーブ局に宛てたデータフレームを転送(リピート)したりする機能も有する。
送信バッファ25は、演算処理部30によって演算され、データフレーム通信処理部24で他の通信ノードに対して送信されるデータフレームを一時的に記憶する。この送信バッファ25に記憶された順にデータフレームは送信される。
受信バッファ26は、ポート11−1,11−2で受信される他の通信ノードからのデータフレームを一時的に記憶する。この受信バッファ26は、フレーム単位で受信したデータフレームを記憶し、所定の数のフレームしか記憶できないものとする。
演算処理部30は、所定の周期で、データフレーム通信処理部24によって受信処理された他の通信ノードからのデータを用いて、その他の通信ノードを制御するための情報などを生成する所定の演算を行う。演算処理結果はデータフレーム通信処理部24を介して他の通信ノードに対して送信される。
図2−2は、スレーブ局の機能構成を模式的に示すブロック図である。スレーブ局は、隣接する通信ノード(リング管理局、スレーブ局)またはスイッチングハブ101との間でイーサネット(登録商標)ケーブルを接続するための2つのポート51−1,51−2と、ポート51−1,51−2を介したフレームの送受信処理を行う通信処理部60と、を備える。
ポート51−1,51−2は、マスタ局と同様に、第1のポート51−1と第2のポート51−2の2つのポートから構成される。これらの2つのポート51−1,51−2のうち少なくとも1つのポートが通信ノードと接続されればよい。
通信処理部60は、トークン巡回先情報記憶部61と、トークンフレーム処理部62と、データフレーム通信処理部63と、送信バッファ64と、受信バッファ65と、を備える。
トークン巡回先情報記憶部61は、マスタ局から通知されたトークン巡回先情報を記憶する。ここでは、自スレーブ局のつぎに送信権を得る通信ノードのMACアドレスのみがトークン巡回先情報として格納されているものとする。
トークンフレーム処理部62は、他の通信ノードから送信されたトークンフレーム200を受信すると、そのトークンフレーム200のデータ204内の送信権獲得装置情報206と自局(スレーブ局)のMACアドレスとを比較する。両者が一致した場合には、送信可能な状態にあるものと判定し、受信したトークンフレーム200のトークンリピートカウンタ207の値と送信許可局値208との値を比較し、トークンリピートカウンタ207≧送信許可局値208である場合には、送信可能フレーム数209の範囲内でデータフレームの送信権を得たものと判定する。ただし、送信可能フレーム数209が「0」の場合には、データフレームを送信することができない。一方、トークンリピートカウンタ207<送信許可局値208である場合には、データフレームの送信権を得られなかったものと判定する。また、送信権獲得装置情報206と自局のMACアドレスが一致しない場合にはまだ送信可能な状態にないものと判定する。以上のトークンフレーム処理部62におけるトークンフレームを受信する処理は、請求の範囲のトークンフレーム受信手段に対応する。
また、トークンフレーム処理部62は、受信したトークンフレーム200に対して、送信権獲得装置情報206、トークンリピートカウンタ207、および送信可能フレーム数209と、必要な場合には送信可能フレーム数「0」設定局210を設定して、ブロードキャスト送信する。
具体的には、トークンフレーム200に格納されているトークンリピートカウンタ207を1インクリメントしたものを設定し、送信権獲得装置情報206として、トークン巡回先情報に設定されている通信ノードのMACアドレスを設定する。
また、データフレームを送信した場合には、トークンフレーム受信時の送信可能フレーム数209−送信したデータフレーム数を新たな送信可能フレーム数209に設定する。さらに、新たな送信可能フレーム数209が「0」になった場合には、送信可能フレーム数「0」設定局210として、受信時のトークンフレーム200のトークンリピートカウンタ207の値を設定する。以上のトークンフレーム処理部62におけるトークンフレームを送信する処理は、請求の範囲のトークンフレーム送信手段に対応する。
データフレーム通信処理部63は、データの送信権を得た場合に、送信可能フレーム数209で規定される範囲内でデータフレームの送受信処理を行う。たとえば、FAネットワークにおいては、マスタ局から送信されるスレーブ局に設定されるデータを受信したり、マスタ局に対して演算処理に使用されるデータを送信したりする。また、スレーブ局から送信されたデータフレームを受信したり、スレーブ局が他のスレーブ局に宛てたデータフレームを転送(リピート)したりする機能も有する。
また、データフレーム通信処理部63は、送信可能フレーム数が自局で「0」になってしまい送信することができなかったデータ(フレーム)と、トークンフレーム200を獲得したが送信可能フレーム数が「0」であり送信できなかったデータ(フレーム)を、トークンフレーム200を解放した後に送信バッファ64に蓄積されるデータと区別する処理を行う。この処理については、後述する。
送信バッファ64は、スレーブ局の図示しないアプリケーション層からデータリンク層にエントリされたデータを、データフレーム通信処理部63によって送信されるまでの間一時的に記憶する。また、受信バッファ65は、ポート51−1,51−2で受信したデータを、データフレーム通信処理部63によって受信処理されるまでの間一時的に記憶する。
図4は、送信バッファでのデータの格納状態の一例を模式的に示す図である。この図に示されるように、送信バッファでは、他の通信ノード(主に、マスタ局)に送信されるべきデータが、送信待ちフレームとして時系列で蓄積される。また、送信権を獲得したが送信できなかったデータ(フレーム)を区別するための情報が、それぞれの送信待ちフレームに対して記憶される。この実施の形態1では、自局で送信可能フレーム数209が「0」になった場合に、送信できなかったデータ(フレーム)を識別する送信可能フレーム数「0」設定時の未送信フレーム情報と、送信権が自局に設定されたトークンフレームを獲得したが、送信権を得られず(すなわち、送信可能フレーム数209が「0」であり)送信できなかったデータ(フレーム)を識別する前回トークン受信時の未送信フレーム情報と、を有する。なお、これらの送信可能フレーム数「0」設定時の未送信フレーム情報と前回トークン受信時の未送信フレーム情報は、請求の範囲の前回未送信データ識別情報に対応する。
つぎに、トークンフレーム受信時の処理について、スレーブ局、マスタ局の順で説明する。図5−1〜図5−2は、スレーブ局におけるトークンフレーム受信時の送信処理の一例を示すフローチャートである。
まず、トークンフレーム200を受信すると(ステップS11)、トークンフレーム処理部62は、そのトークンフレーム200の送信権獲得装置情報206が自局であるか否かを判定する(ステップS12)。送信権獲得装置情報206が自局でない場合(ステップS12でNoの場合)には、トークンフレームを転送し(ステップS13)、処理が終了する。
また、送信権獲得装置情報206が自局である場合(ステップS12でYesの場合)には、受信したトークンフレーム200のトークンリピートカウンタ207の値が送信許可局値208以上であるか否かを判定する(ステップS14)。トークンリピートカウンタ207の値が送信許可局値208以上である場合(ステップS14でYesの場合)には、さらにトークンフレーム200の送信可能フレーム数209が「0」よりも大きいかを判定する(ステップS15)。
送信可能フレーム数209が「0」よりも大きい場合(ステップS15でYesの場合)には、スレーブ局は、送信権を獲得したものと認識する。そして、トークンフレーム200を受信した時点における送信バッファ64に格納されているフレーム数(以下、送信待ちフレーム数という)が送信可能フレーム数以下であるか否かを判定する(ステップS16)。送信待ちフレーム数が送信可能フレーム数以下である場合(ステップS16でYesの場合)には、さらに、送信バッファ64内に、送信可能フレーム数「0」設定時の未送信フレームまたは前回トークン受信時の未送信フレームが存在するか判定する(ステップS17)。
送信バッファ64内に、送信可能フレーム数「0」設定時の未送信フレームまたは前回トークン受信時の未送信フレームが存在しない場合(ステップS17でNoの場合)には、送信バッファ64に格納されているすべてのフレームの送信処理を行う(ステップS21)。また、送信バッファ64内に、送信可能フレーム数「0」設定時の未送信フレームまたは前回トークン受信時の未送信フレームが存在する場合(ステップS17でYesの場合)には、データフレーム通信処理部63は、送信可能フレーム数「0」設定時の未送信フレームまたは前回トークン受信時の未送信フレームのみを送信する(ステップS22)。
その後、トークンフレーム処理部62は、トークンフレーム200の送信可能フレーム数209に、(トークンフレーム200受信時の送信可能フレーム数209)−(ステップS21またはS22で送信したフレーム数)を設定する(ステップS23)。ついで、トークンフレーム200に設定した新たな送信可能フレーム数209が「0」か否かを判定する(ステップS24)。
設定した送信可能フレーム数209が「0」でない場合(ステップS24でNoの場合)には、トークンフレーム200のトークンリピートカウンタ207の値を1インクリメントし(ステップS41)、送信権獲得装置情報206にトークン巡回先情報記憶部61に記憶されているトークン巡回先情報を設定する(ステップS42)。そして、以上のようにデータ204内の各項目に設定を行ったトークンフレーム200を送信し(ステップS43)、処理を終了する。
また、ステップS23で設定した送信可能フレーム数209が0である場合(ステップS24でYesの場合)には、トークンフレーム200の送信可能フレーム数「0」設定局210に、トークンフレーム200受信時のトークンリピートカウンタ207の値を設定する(ステップS34)。その後は、上述したステップS41以降の処理が行われる。
一方、ステップS16で送信待ちフレーム数が送信可能フレーム数209よりも大きい場合(ステップS16でNoの場合)には、データフレーム通信処理部63は、送信バッファ64に格納されているフレームのうち先に格納されたフレームから順に送信可能フレーム数209のフレームを送信する(ステップS31)。このとき、送信バッファ64に格納されているフレームのうち送信されなかったフレームには、送信可能フレーム「0」設定時の未送信フレームであることを識別するフラグを付す(ステップS32)。また、トークンフレーム処理部62は、トークンフレーム200の送信可能フレーム数209に「0」、すなわち(トークンフレーム200受信時の送信可能フレーム数209)−(ステップS31で送信したフレーム数)を設定し(ステップS33)、トークンフレーム200の送信可能フレーム数209を「0」に設定する。その後は、上述したステップS34以降の処理が行われる。
また、ステップS15で、送信可能フレーム数209が「0」である場合(ステップS15でNoの場合)には、トークンフレーム処理部62は、送信権が得られなかったものと認識する。そして、データフレーム通信処理部63は、トークンフレーム200を受信した時点で送信バッファ64に格納されているフレームには、前回トークン受信時の未送信フレームであることを識別するフラグを付す(ステップS25)。その後は、上述したステップS41以降の処理が行われる。
さらに、ステップS14で、トークンリピートカウンタ207の値が送信許可局値208よりも小さい場合(ステップS14でNoの場合)には、スレーブ局のトークンフレーム処理部62は、送信権が得られなかったものと認識し、上述したステップS41以降の処理が行われる。以上のようにして、スレーブ局によるトークンフレームの処理が行われる。
なお、ステップS34〜S42の処理は、トークンフレーム200のデータ204内の情報の設定処理であるので、設定順序はここに示されたものに限定されるものではない。
図6は、マスタ局におけるトークンフレーム受信時の処理の一例を示すフローチャートである。まず、トークンフレーム処理部23は、トークンフレーム200を受信すると(ステップS71)、そのトークンフレーム200の送信権獲得装置情報206が自局であるか否かを判定する(ステップS72)。送信権獲得装置情報206が自局でない場合(ステップS72でNoの場合)には、トークンフレーム200を転送し(ステップS73)、処理が終了する。
また、送信権獲得装置情報206が自局である場合(ステップS72でYesの場合)には、受信したトークンフレーム200の送信可能フレーム数209が「0」であるか否かを確認する(ステップS74)。送信可能フレーム数が「0」でない場合(ステップS74でNoの場合)には、マスタ局のトークンフレーム処理部23は、データフレームを送信することができない通信ノード(スレーブ局)が存在しなかったと認識して、つぎのトークンフレーム200の巡回に当たってもトークン巡回順序情報にしたがって通信ノードに順に送信権を与えるようにトークンフレーム200の設定処理を行う。つまり、データフレーム通信処理部24で送信バッファ25内のフレームを予め設定された送信可能フレーム数の範囲内で送信した後(ステップS75)、トークンフレーム処理部23は、予め設定された送信可能フレーム数からステップS75で送信したフレーム数を引いた値を、トークンフレーム200の送信可能フレーム数209に設定し(ステップS76)、トークンリピートカウンタ207の値を「1」に設定し(ステップS77)、送信許可局値208を「0」に設定する(ステップS78)。
一方、ステップS74で送信可能フレーム数209が「0」である場合(ステップS74でYesの場合)には、マスタ局のトークンフレーム処理部23は、このトークンフレーム200が一巡する間に、データフレームを送信することができなかった通信ノード(スレーブ局)が存在することを認識して、つぎのトークンフレーム200の巡回では、データフレームを送信することができなかった通信ノード(スレーブ局)からデータフレームの送信ができるようにトークンフレーム200の設定処理を行う。つまり、トークンフレーム200の送信可能フレーム数209を予め設定された値に設定し(ステップS81)、トークンリピートカウンタ207の値を「1」に設定し(ステップS82)、さらに送信許可局値208に、トークンフレーム200受信時の送信可能フレーム数「0」設定局210の値を設定する(ステップS83)。
その後またはステップS78の後、トークンフレーム200の送信権獲得装置情報206に、トークン巡回順序情報記憶部22中のトークン巡回順序情報から取得した自局のつぎに送信権を得るスレーブ局を設定する(ステップS91)。そして、以上によって設定されたトークンフレームを送信し(ステップS92)、処理が終了する。
なお、ステップS76〜S78,S91の処理は、トークンフレーム200のデータ204内の情報の設定処理であるので、ここに示される順番でなくてもよい。また、ステップS81〜S83,S91の処理についても同様である。
つぎに、このような通信システムにおけるトークンフレームを用いた通信方法について具体例を挙げて説明する。図7−1〜図7−9は、この実施の形態1によるトークンを用いた通信方法の一例を模式的に示す図である。ここでは、マスタ局Aが、既に論理リングの構成処理を行って、上記(1)に示したトークン巡回順序を決定し、自局が最初に送信権を獲得したものとする。図7−1は、マスタ局Aが送信権を獲得した時点の通信システムの状態を示している。この状態において、マスタ局Aでは、たとえばアプリケーション層からデータリンク層にフレームF1〜F5が他のスレーブ局B,Cに送信するようにエントリされ、これらのフレームF1〜F5は送信バッファ25に送信待ちフレームとして順に格納される。また、スレーブ局Bでは、アプリケーション層からデータリンク層にフレームF6〜F7が他の通信ノードに送信するようにエントリされ、これらのフレームF6〜F7は送信バッファに送信待ちフレームとして順に格納される。さらに、スレーブ局Cでは、アプリケーション層からデータリンク層にフレームF8が他の通信ノードに送信するようにエントリされ、このフレームF8は送信バッファに送信待ちフレームとして格納される。
その後、図7−2に示されるように、マスタ局Aのトークンフレーム処理部23は、トークンフレーム200内の送信可能フレーム数を予め通信システム内で設定された値(ここでは「6」とする)に設定する。また、マスタ局Aのデータフレーム通信処理部24は、送信バッファ25に格納されている送信待ちフレームのうち、トークンフレーム200に設定されている送信可能フレーム数の範囲内で、送信バッファ25に格納された順(古い順)に送信する。ここでは、送信バッファ25に格納されている送信待ちフレームF1〜F5の数は「5」であり、トークンフレーム200に設定されている送信可能フレーム数は「6」であるので、フレームF1〜F5のすべてを送信する。これによって、このトークンフレーム200が一巡する間に送信可能なフレーム数は「1(=6−5)」となる。その後、マスタ局Aのトークンフレーム処理部23は、送信可能フレーム数を「1」に設定し、トークンリピートカウンタを「1」にし、さらに送信許可局値を自局表す「0」に設定し、送信権獲得装置情報にスレーブ局Bを設定したトークンフレーム200を送信する。なお、送信したフレームF1〜F5は、送信バッファ25から消去される。
ついで、スレーブ局Bが、送信権獲得装置情報が自局に設定されたトークンフレーム200を受信すると、トークンフレーム200内のトークンリピートカウンタの値と送信許可局値とを比較し、自局がデータ送信可能か否かを判定する。ここでは、トークンリピートカウンタ「1」>送信許可局値「0」であるので、トークンフレーム200内の送信可能フレーム数の範囲でデータを送信する権利を得たことを認識する。
その後、図7−3に示されるように、スレーブ局Bのデータフレーム通信処理部63は、送信バッファ64に格納されている送信待ちフレームのうち、トークンフレーム200に設定されている送信可能フレーム数の範囲内で、送信バッファ64に格納された順(古い順)に送信する。ここでは、送信バッファ64に格納されている送信待ちフレームF6〜F7の数は「2」であり、トークンフレーム200に設定されている送信可能フレーム数は「1」であるので、フレームF6のみを送信する。これによって、このトークンフレーム200がマスタ局Aに戻るまでの間に送信可能なフレーム数は「0(=1−1)」となる。その後、スレーブ局Bのトークンフレーム処理部62は、送信可能フレーム数を「0」に設定し、送信可能フレーム数「0」設定局を自局の論理リング上での並び番号である「1」に設定し、トークンリピートカウンタ207を1インクリメントして「2」にし、送信権獲得装置情報としてトークン巡回先情報記憶部61に記憶されているスレーブ局Cを設定したトークンフレーム200を送信する。なお、ここで、送信可能フレーム数「0」設定局に設定される値は、スレーブ局Bがトークンフレーム200を受信したときのトークンリピートカウンタに設定されている値であり、論理リング上のマスタ局Aから数えた並び番号である。
また、スレーブ局Bのデータフレーム通信処理部63は、今回の送信権の獲得時に送信できなかった送信バッファ64中のフレームF7を、送信可能フレーム数「0」時の未送信フレームとして記憶する。これは、送信バッファ64に、たとえば送信可能フレーム数「0」設定時の未送信フレームという項目を設定し、この項目にフラグを立てることによって行うことができるが、図では、説明をわかりやすくするために、「送信可能フレーム数「0」設定時の未送信フレーム」という項目を設け、この項目にも送信バッファ64中の送信されなかったフレームF7を記憶するように描いている。なお、送信されたフレームF6は消去される。
ついで、スレーブ局Cのトークンフレーム処理部62は、送信権獲得装置情報が自局に設定されているトークンフレーム200を受信し、トークンフレーム200内のトークンリピートカウンタの値と送信許可局値とを比較し、自局がデータ送信可能か否かを判定する。ここでは、トークンリピートカウンタ「2」>送信許可局値「0」であるので、トークンフレーム200内の送信可能フレーム数の範囲でデータを送信する権利を得たことを認識する。
その後、図7−4に示されるように、スレーブ局Cは、送信バッファ64に格納されている送信待ちフレームのうち、トークンフレーム200に設定されている送信可能フレーム数の範囲内で、送信バッファ64に格納された順(古い順)に送信しようとするが、ここでは、トークンフレーム200に設定されている送信可能フレーム数は「0」であるので、送信バッファ64内のフレームF8を送信することができない。そこで、スレーブ局Cのトークンフレーム処理部62は、トークンリピートカウンタを1インクリメントして「3」にし、つぎに送信権獲得装置情報として、トークン巡回先情報記憶部61に記憶されているマスタ局Aを設定したトークンフレーム200を送信する。なお、このトークンフレーム200では、送信可能フレーム数は「0」のままであり、送信可能フレーム数「0」設定局も「1」のままである。
このとき、スレーブ局Cのデータフレーム通信処理部63は、今回の送信権の獲得時に送信できなかった送信バッファ64中のフレームF8を、前回トークン受信時の未送信フレームとして記憶する。これは、送信バッファ64に、たとえば前回トークン受信時の未送信フレームという項目を設定し、この項目にフラグを立てることによって行うことができるが、図では、説明をわかりやすくするために、「前回トークン受信時の未送信フレーム」という項目を設け、この項目にも送信バッファ64中の送信されなかったフレームF8を記憶するように描いている。
その後、図7−5に示されるように、スレーブ局Cが、送信権獲得装置情報をマスタ局Aに設定したトークンフレーム200を送信した直後の状態において、各通信ノードが新たな送信すべきデータを取得しているものとする。つまり、マスタ局Aでは、たとえばアプリケーション層からデータリンク層にフレームF9〜F10が他のスレーブ局に送信するようにエントリされ、これらのフレームF9〜F10は送信バッファ25に送信待ちフレームとして順に格納される。また、スレーブ局Bでは、アプリケーション層からデータリンク層にフレームF11〜F14が他の通信ノードに送信するようにエントリされ、これらのフレームF11〜F14は送信バッファ64に送信待ちフレームとして順に格納される。さらに、スレーブ局Cでは、アプリケーション層からデータリンク層にフレームF15が他の通信ノードに送信するようにエントリされ、このフレームF15は送信バッファ64に送信待ちフレームとして格納される。
ついで、図7−6に示されるように、マスタ局Aのトークンフレーム処理部23は、送信権獲得装置情報が自局に設定されたトークンフレーム200を受信すると、トークンフレーム200内の送信可能フレーム数を確認する。ここでは、送信可能フレーム数が「0」であるため、論理リング中の通信ノードの中に送信権を得たがフレームを送信することができなかった、すなわち送信権を得ることができなかった通信ノードが存在すると判断する。その結果、マスタ局Aのデータフレーム通信処理部24は、送信バッファ25に格納されたフレームF9〜F10の送信処理を行わない。そして、受信したトークンフレーム200の送信可能フレーム数に予め設定された値「6」を設定し、送信許可局値に受信したトークンフレーム200の送信可能フレーム数「0」設定局の値である「1」を設定し、トークンリピートカウンタ207を「1」に再設定し、送信権獲得装置情報206としてスレーブ局Bを設定したトークンフレーム200を送信する。
ついで、スレーブ局Bが、送信権獲得装置情報206が自局に設定されたトークンフレーム200を受信すると、トークンフレーム200内のトークンリピートカウンタ207の値と送信許可局値208とを比較し、自局がデータ送信可能か否かを判定する。ここでは、トークンリピートカウンタ207の値「1」=送信許可局値208「1」である、すなわちトークンリピートカウンタ≧送信許可局値であるので、トークンフレーム200内の送信可能フレーム数の範囲でデータを送信する権利を得たことを認識する。
その後、図7−7に示されるように、スレーブ局Bのデータフレーム通信処理部24は、送信バッファ64に格納されている未送信フレームのうち、「送信可能フレーム数「0」設定時の未送信フレーム」が存在することを識別する。そして、この「送信可能フレーム数「0」設定時の未送信フレーム」のうち、トークンフレーム200に設定されている送信可能フレーム数の範囲内で、送信バッファ64に格納された順(古い順)に送信する。ここでは、送信バッファ64にはフレームF7,F11〜14が格納されているが、「送信可能フレーム数「0」設定時の未送信フレーム」はフレームF7であるので、フレームF7のみを送信する。これによって、このトークンフレーム200がマスタ局Aに戻るまでの間に送信可能なフレーム数は「5(=6−1)」となる。その後、スレーブ局Bのトークンフレーム処理部62は、送信可能フレーム数に「5」を設定し、トークンリピートカウンタを1インクリメントして「2」にし、送信権獲得装置情報にスレーブ局Cを設定したトークンフレーム200を送信する。また、スレーブ局Bは、今回の送信権の獲得時に送信できなかったフレームF11〜F14を、「前回トークン受信時の未送信フレーム」として記憶する。なお、トークンフレーム200内の送信可能フレーム数「0」設定局は変更せず、受信したトークンフレーム200に設定されているままの値とする。また、送信されたフレームF7は送信バッファ64から消去される。
ついで、スレーブ局Cは、送信権獲得装置情報が自局に設定されているトークンフレーム200を受信し、トークンフレーム200内のトークンリピートカウンタの値と送信許可局値とを比較し、自局がデータ送信可能か否かを判定する。ここでは、トークンリピートカウンタ「2」>送信許可局値「1」であるので、トークンフレーム200内の送信可能フレーム数の範囲でデータを送信する権利を得たことを認識する。
その後、図7−8に示されるように、スレーブ局Cは、送信バッファ64に格納されている送信待ちフレームのうち、「前回トークン受信時の未送信フレーム」が存在することを識別する。そして、データフレーム通信処理部24は、この「前回トークン受信時の未送信フレーム」のうち、トークンフレーム200に設定されている送信可能フレーム数の範囲内で、送信バッファ64に格納された順(古い順)に送信する。ここでは、送信バッファ64にはフレームF8,F15が格納されているが、「前回トークン受信時の未送信フレーム」はフレームF8であるので、フレームF8のみが送信される。これによって、このトークンフレーム200がマスタ局Aに戻るまでの間に送信可能なフレーム数は「4(=5−1)」となる。その後、スレーブ局Cのトークンフレーム処理部62は、送信可能フレーム数を「4」に設定し、トークンリピートカウンタを1インクリメントして「3」にし、送信権獲得装置情報にマスタ局Aを設定したトークンフレーム200を送信する。また、スレーブ局Cのデータフレーム通信処理部24は、今回の送信権の獲得時に送信できなかった送信バッファ64中のフレームF15を、前回トークン受信時の未送信フレームとして記憶する。なお、トークンフレーム200内の送信可能フレーム数「0」設定局は変更せず、受信したトークンフレーム200に設定されているままの値とする。また、送信されたフレームF8は送信バッファ64から消去される。
ついで、マスタ局Aのトークンフレーム処理部23が、送信権獲得装置情報が自局に設定されたトークンフレーム200を受信すると、トークンフレーム200内の送信可能フレーム数を確認する。ここでは、送信可能フレーム数が「4」であるため、論理リング中のすべての通信ノードがフレームを送信することができたと判断する。
その後、図7−9に示されるように、マスタ局Aのデータフレーム通信処理部24は、送信バッファ25に格納されたフレームF9〜F10の送信処理を行う。その後、トークンフレーム処理部23は、トークンフレーム200の送信可能フレーム数に、送信可能フレーム数として予め設定された値「6」から送信したフレーム数「2」を引いた「4」を設定し、送信許可局値に自局を表す「0」を設定し、トークンリピートカウンタを「1」に再設定し、送信権獲得装置情報にスレーブ局Bを設定したトークンフレーム200を送信する。なお、トークンフレーム200内の送信可能フレーム数「0」設定局の値は、変更せずにそのままでもよいし、消去してもよい。その後は、上記した処理が繰り返し実行され、各通信ノードで送信すべきフレームが送信されていく。
この実施の形態1によれば、各通信ノードで送信待ち状態にあるデータを、フレームを単位として送信可能か否かを判定するようにしたので、従来のように送信待ち状態にあるデータ量を計算する必要がない。その結果、トークンフレーム200を受信してからデータを送信するまでの間の時間を短縮することができる。また、フレームを単位とした送信を行うようにしたので、従来のようにデータ量で送信可能か否かを判断する場合では、ある通信ノードで送信すべきデータ量が、通信システム内で送信可能なデータ量を超えている場合には、その送信すべきデータをすべて送信することができなかったが、この実施の形態1では、送信可能フレーム数209の範囲でフレーム単位でデータを送信することができる。
つまり、スレーブ局は、トークンリピートカウンタ207が送信許可局値208以上である場合には、トークンフレーム200内の送信可能フレーム数209が「0」であるか否かを見て、自局に送信権があるか否かを判断するようにしているので、上記トークンフレーム200がマスタ局に戻るまでの間に送信可能フレーム数209が1つでもある場合には、フレームを送信することができる。その結果、リアルタイムな通信が可能になるという効果を有する。また、トークンフレーム200が一巡する間に効率よくフレームを送信することが可能になるという効果を有する。
さらに、論理リングの構成において、マスタ局を0番として、トークンフレーム200がスレーブ局を巡回するごとに1インクリメントしたトークンリピートカウンタ207を設けるようにしたので、スレーブ局は、このトークンリピートカウンタ207で論理リング中のマスタ局から数えて何番目のスレーブ局であるのかを認識することができる。そして、これを利用して、送信可能フレーム数209を「0」にしたスレーブ局のトークンリピートカウンタ207の値を送信可能フレーム数「0」設定局210としてトークンフレーム200に記憶し、マスタ局でこの送信可能フレーム数「0」設定局210を送信許可局値208に設定するようにしたので、前回のトークンフレームの獲得時に送信できなかったデータを有するスレーブ局からデータを送信させることができる。その結果、各局で生じたデータを時間の古い順に送ることができ、リアルタイム性を重視した通信を行うことが可能になるという効果を有する。
さらに、トークンフレーム200獲得時に送信できなかったフレームを、前回未送信フレームとして記憶し、つぎにトークンフレーム200を獲得した場合に、前回未送信フレームのみを送信するようにしたので、前回トークンフレーム200を獲得してからつぎにトークンフレーム200を獲得するまでの間に送信すべきフレームが生じた場合でも、その通信ノード内で古い順に、そして通信システム全体でもほぼ同じ時期に送信エントリされたフレームをまとめて送信することができるという効果を有する。
実施の形態2.
実施の形態1のように、マスタ局とスレーブ局とで構成され、スレーブ局からのデータを用いて演算を行い、その演算結果をスレーブ局に通知する通信システムにおいては、スレーブ局が送信するデータがマスタ局に集中してしまう可能性がある。また、マスタ局で一時的に送受信処理の処理能力が他の処理よりも劣化し、受信バッファがFull状態になってしまい、フレームが廃棄されてしまう可能性もある。このような状況が発生すると、送信リトライ処理を実施して廃棄されてしまったデータのリカバリを図るが、このリカバリ処理はネットワークやマスタ局、スレーブ局の性能劣化につながってしまっていた。そこで、この実施の形態2では、マスタ局で一時的に受信処理の処理能力が劣化してしまった場合に、リカバリ処理を行わずに、データの送受信を行うことができる通信システムおよび通信方法について説明する。
この実施の形態2によるマスタ局は、実施の形態1において、トークンフレーム処理部23が、送信権獲得装置情報206が自局であるトークンフレーム200を受信すると、受信バッファ26の使用状態から受信可能バッファ数を取得し、トークンフレーム200の送信可能フレーム数209に、受信可能バッファ数を設定する機能をさらに有する。たとえば、受信バッファ26の最大フレーム記憶数がn(nは自然数)であり、トークンフレーム200を獲得した時点で受信バッファ26にm(mは自然数で、n≧m)個のフレームが記憶されている場合に、トークンフレーム200の送信可能フレーム数209に「n−m」が設定される。なお、実施の形態1と同一の構成要素には同一の符号を付して、その説明を省略している。また、この実施の形態2によるスレーブ局の構成は実施の形態1と同様であるので、その説明を省略する。
つぎに、この実施の形態2によるデータの通信方法について説明する。図8は、マスタ局によるトークンフレーム受信時の処理の一例を示すフローチャートである。まず、実施の形態1の図6で説明したステップS71〜S74までと同様に、マスタ局のトークンフレーム処理部23は送信権獲得装置情報206が自局宛でないトークンフレーム200については転送を行い、自局宛てのトークンフレーム200の場合は、送信可能フレーム数209が「0」であるか否かを判定する(ステップS101〜S104)。
送信可能フレーム数209が「0」でない場合(ステップS104でNoの場合)には、マスタ局のトークンフレーム処理部23は、現時点で受信バッファ26に記憶可能なフレーム数を取得する(ステップS105)。たとえば、6個のフレームまで記憶可能な受信バッファ26に、4個のフレームが記憶されている状態である場合には、2個のフレームが記憶可能であることになる。そして、トークンフレーム200の送信可能フレーム数209として、取得したこの受信バッファ26に記憶可能なフレーム数を設定する(ステップS106)。ついで、データフレーム通信処理部24は、設定された送信可能フレーム数209の範囲内で送信バッファ25内のフレームを送信した後(ステップS107)、トークンフレーム処理部23は、ステップS106で設定された送信可能フレーム数209からステップS107で送信したフレーム数を引いた値を、トークンフレーム200の送信可能フレーム数209に設定する(ステップS108)。また、トークンリピートカウンタ207の値を「1」に設定し(ステップS109)、送信許可局値208を「0」に設定する(ステップS110)。
一方、ステップS104で受信したトークンフレーム200内の送信可能フレーム数209が「0」である場合(ステップS104でYesの場合)には、マスタ局のトークンフレーム処理部23は、受信バッファ26に記憶可能なフレーム数を取得する(ステップS121)。そして、トークンフレーム200の送信可能フレーム数209として、取得したこの受信バッファ26に記憶可能なフレーム数を設定する(ステップS122)。また、トークンリピートカウンタ207の値を「1」に設定し(ステップS123)、送信許可局値208に、トークンフレーム受信時の送信可能フレーム数「0」設定局210の値を設定する(ステップS124)。
その後またはステップS110の後は、図6のステップS91〜S92と同様に、トークンフレーム200の送信権獲得装置情報206に、トークン巡回順序情報から取得した自局のつぎに送信権を得るスレーブ局を設定する(ステップS125)。そして、以上によって設定されたトークンフレームを送信し(ステップS126)、処理が終了する。
つぎに、このような通信システムにおけるトークンフレームを用いた通信方法について具体例を挙げて説明する。図9−1〜図9−8は、この実施の形態2によるトークンフレームを用いた通信方法の手順の一例を模式的に示す図である。ここでは、マスタ局Aは、6フレームまで処理可能であるものとする。すなわち、マスタ局Aの受信バッファ26は6フレームまで記憶可能であるものとする。また、マスタ局Aが、既に論理リングの構成処理を行って、実施の形態1の(1)に示したトークン巡回順序を決定し、各スレーブ局B,Cに対してトークン巡回順序に関する情報(トークン巡回先情報)を通知した後、トークン巡回順序にしたがって、トークンフレームが巡回している状態にあるものとする。
そして、図9−1に示されるように、スレーブ局Cから、送信権獲得装置情報がマスタ局Aに設定されたトークンフレームが送信された時点で、スレーブ局Bでは、アプリケーション層からデータリンク層にフレームF1〜F5の5個のフレームがマスタ局Aに送信するようにエントリされ、これらのフレームF1〜F5は送信バッファ64に送信待ちフレームとして順に格納された状態にあるものとする。
その後、図9−2に示されるように、マスタ局Aが、送信権獲得装置情報206が自局に設定されたトークンフレーム200を受信すると、トークンフレーム200内の送信可能フレーム数を確認する。ここでは、送信可能フレーム数は「0」でない数で戻ってきたものとする。そのため、実施の形態1で説明したような送信権を得ながらフレームを送信できなかったスレーブ局がなく、フレーム巡回順序にしたがって順に送信権を与える通常の通信を行う。
また、マスタ局Aのデータフレーム通信処理部24は、自局が送信権を得たので、送信バッファ25のフレームを送信することができるが、この時点では送信すべきフレームがないので、送信処理を行わない。その後、マスタ局Aのトークンフレーム処理部23は、送信可能フレーム数を予め通信システム内で設定された値「6」に設定し、トークンリピートカウンタを「1」に再設定し、さらに送信許可局値を自局を表す「0」に設定し、送信権獲得装置情報206にスレーブ局Bを設定したトークンフレーム200を送信する。
ついで、スレーブ局Bのトークンフレーム処理部62は、送信権獲得装置情報が自局に設定されたトークンフレーム200を受信すると、トークンフレーム200内のトークンリピートカウンタの値と送信許可局値とを比較し、自局がデータ送信可能か否かを判定する。ここでは、トークンリピートカウンタ「1」>送信許可局値「0」であるので、トークンフレーム200内の送信可能フレーム数の範囲でデータを送信する権利を得たことを認識する。
その後、図9−3に示されるように、スレーブ局Bのデータフレーム通信処理部63は、送信バッファ64に格納されている送信待ちフレームのうち、トークンフレーム200に設定されている送信可能フレーム数の範囲内で、送信バッファ64に格納された順(古い順)に送信する。ここでは、送信バッファ64に格納されている送信待ちフレームF1〜F5の数は「5」であり、トークンフレーム200に設定されている送信可能フレーム数は「6」であるので、フレームF1〜F5のすべてをマスタ局Aに宛てて送信する。これによって、このトークンフレーム200がマスタ局Aに戻るまでの間に送信可能なフレーム数は「1(=6−5)」となる。その後、スレーブ局Bのトークンフレーム処理部62は、送信可能フレーム数を「1」に設定し、トークンリピートカウンタを1インクリメントして「2」にし、送信権獲得装置情報にスレーブ局Cを設定したトークンフレーム200を送信する。なお、送信されたフレームF1〜F5は送信バッファ64から消去される。
また、スレーブ局Bから送信されたデータは、マスタ局Aで受信され、受信バッファ26に一時的に格納される。その結果、マスタ局Aの受信バッファ26には5フレームが格納されるので、受信バッファ処理可能数は「1」となる。
ついで、スレーブ局Cは、送信権獲得装置情報が自局に設定されているトークンフレーム200を受信し、トークンフレーム200内のトークンリピートカウンタの値と送信許可局値とを比較し、自局がデータ送信可能か否かを判定する。ここでは、トークンリピートカウンタ「2」>送信許可局値「0」であるので、トークンフレーム200内の送信可能フレーム数の範囲でデータを送信する権利を得たことを認識する。
その後、図9−4に示されるように、スレーブ局Cは、送信バッファ64に格納されている送信待ちフレームのうち、トークンフレーム200に設定されている送信可能フレーム数「1」の範囲内で、送信バッファ64に格納された順(古い順)に送信しようとするが、ここでは、送信バッファ64内には送信すべきデータがないので、結局スレーブ局Cは、フレームを送信しないことになる。
そして、スレーブ局Cのトークンフレーム処理部62は、トークンリピートカウンタを1インクリメントして「3」にし、送信権獲得装置情報にマスタ局Aを設定したトークンフレーム200を送信する。なお、このトークンフレーム200では、送信可能フレーム数は「1」のままである。
また、このスレーブ局Cによるトークンフレーム200の送出時までの時間に、マスタ局Aでは、受信バッファ26に格納されたフレームのうち1つのフレームの処理が終わり、2フレーム分の記憶容量が受信バッファ中に確保された状態にあるものとする。つまり、マスタ局Aの受信バッファ処理可能数は「2」になったものとする。
その後、図9−5に示されるように、スレーブ局Cが、送信権獲得装置情報をマスタ局Aに設定したトークンフレーム200を送信した直後の状態において、スレーブ局Cでは、アプリケーション層からデータリンク層にフレームF6〜F9がマスタ局Aに送信するようにエントリされ、これらのフレームF6〜F9は送信バッファ64に送信待ちフレームとして格納されたものとする。
ついで、図9−6に示されるように、マスタ局Aが、送信権獲得装置情報が自局に設定されたトークンフレーム200を受信すると、トークンフレーム200内の送信可能フレーム数を確認する。ここでは、送信可能フレーム数209が「1」であるため、論理リング中のすべての通信ノードがフレームを送信することができたと判断する。その結果、マスタ局Aは、送信バッファ25に格納されたフレームの送信処理を行うことができるが、この例では送信バッファ25にはフレームが格納されていないので、マスタ局Aによるフレームの送信処理は行われない。
そして、マスタ局Aは、トークンフレーム200の送信可能フレーム数として、本来であれば送信可能フレーム数を通信システムで予め設定された値「6」とするが、受信バッファ処理可能数が「2」であるため、トークンフレーム200の送信可能フレーム数に「2」を設定し、トークンリピートカウンタを「1」に再設定し、送信権獲得装置情報にスレーブ局Bを設定したトークンフレーム200を送信する。
ついで、スレーブ局Bが、送信権獲得装置情報が自局に設定されたトークンフレーム200を受信すると、トークンフレーム200内のトークンリピートカウンタの値と送信許可局値とを比較し、自局がデータ送信可能か否かを判定する。ここでは、トークンリピートカウンタ「1」>送信許可局値「0」であるので、トークンフレーム内の送信可能フレーム数の範囲でデータを送信する権利を得たことを認識する。しかし、スレーブ局Bの送信バッファ64には、フレームが存在しないので、フレームの送信処理を行わない。
その後、図9−7に示されるように、スレーブ局Bは、トークンリピートカウンタを1インクリメントして「2」にし、送信権獲得装置情報にスレーブ局Cを設定したトークンフレーム200を送信する。なお、トークンフレーム200内の送信可能フレーム数は変更せず、受信したトークンフレーム200に設定されているままの値とする。
ついで、スレーブ局Cは、送信権獲得装置情報が自局に設定されているトークンフレーム200を受信し、トークンフレーム200内のトークンリピートカウンタの値と送信許可局値とを比較し、自局がデータ送信可能か否かを判定する。ここでは、トークンリピートカウンタ「2」>送信許可局値「0」であるので、トークンフレーム内の送信可能フレーム数の範囲でデータを送信する権利を得たことを認識する。
その後、図9−8に示されるように、スレーブ局Cのデータフレーム通信処理部63は、送信バッファ64に格納されている送信待ちフレームのうち、トークンフレーム200に設定されている送信可能フレーム数209の範囲内で、送信バッファ64に格納された順(古い順)に送信する。ここでは、送信バッファ64にはフレームF6〜F9が格納されているが、送信可能フレーム数は「2」であるので、フレームF6,F7のみを送信する。これによって、このトークンフレーム200がマスタ局Aに戻るまでの間に送信可能なフレーム数は「0(=2−2)」となる。その後、スレーブ局Cのトークンフレーム処理部62は、送信可能フレーム数を「0」に設定し、送信可能フレーム数「0」設定局に、トークンフレームを受信したときのトークンリピートカウンタの値である(自局を表す)「2」を設定し、トークンリピートカウンタを1インクリメントして「3」にし、送信権獲得装置情報にマスタ局Aを設定したトークンフレーム200を送信する。また、スレーブ局Cは、今回の送信権の獲得時に送信できなかった送信バッファ64中のフレームF8,F9を、送信可能フレーム数「0」時の未送信フレームとして記憶する。さらに、送信されたフレームF6,F7は送信バッファ64から消去される。以後、以上で説明した処理または実施の形態1で説明した処理が行われる。
以上のようにして、マスタ局Aの受信処理能力に合わせて送信可能フレーム数が可変に設定され、その設定に応じたフレームの送信処理が行われる。
この実施の形態2によれば、マスタ局の受信処理能力に合わせて、つぎのトークンを巡回させるときに送信可能なフレーム数を設定するようにしたので、データがマスタ局に集中してしまうことを防ぎ、受信バッファがFull状態になることによるフレームの廃棄を防止することができる。また、フレームの廃棄によるリカバリ処理が行われないので、マスタ局やスレーブ局、これらの通信ノードを有する通信システムにおける通信性能やデータ処理性能の劣化を防ぐことができるという効果も有する。
実施の形態3.
たとえば、マスタ局に対応するプログラマブルコントローラとスレーブ局に対応する制御対象機器とをネットワークで結ぶFAシステムにおいては、制御対象機器から出力されるデータに基づいてプログラマブルコントローラで演算処理を行い、その演算結果を制御対象機器に出力して制御対象機器の制御を行うため、データのリアルタイム性が要求される。このような場合、演算処理の結果に高い精度が求められる場合には、制御対象機器からのデータを多く必要とし、演算処理の結果にそれほど高い精度が求められない場合には、制御対象機器からのデータは少なくてもよい。このように、FAシステムにおいては、制御対象機器には重要度が存在する。
そのため、各スレーブ局の送信要求の負荷が一時的に高くなった場合に、実施の形態1で示したような方法ですべてのスレーブ局からデータの受信処理を行っていると、重要度の高い制御対象機器からのデータをなかなか受信できず、高い精度の演算処理を行えなくなってしまう可能性がある。そこで、この実施の形態3では、各スレーブ局からの送信要求の負荷が一時的に高くなった場合に、重要度の高いスレーブ局からのデータを優先してマスタ局に送信することができる通信システムおよび通信方法について説明する。
図10は、この実施の形態3によるマスタ局の機能構成を模式的に示すブロック図である。このマスタ局は、実施の形態1,2の構成において、スレーブ局の送信要求の負荷が高まった場合に、どのスレーブ局に送信権を優先的に与えるかを示す優先処理時変更先情報を記憶する優先処理時変更先情報記憶部27と、スレーブ局の送信要求の負荷が高まった場合に、トークンフレーム200内の送信可能フレーム数「0」設定局210を記憶する送信可能フレーム数「0」設定局記憶部28と、をさらに備える。なお、スレーブ局の送信要求の負荷が高まっている状態か否かは、トークンフレーム処理部23が、トークンフレーム200内の送信可能フレーム数209が「0」か否かで判定する。
優先処理時変更先情報記憶部27に記憶される優先処理時変更先情報は、論理リング(トークン巡回順序)において、優先度が最も高く設定されたスレーブ局のうち、トークン巡回順序が最も早いスレーブ局に設定される。なお、スレーブ局の優先度は、スレーブ局の種類によって予め設定されていたり、ユーザによって設定されたりする。
図11は、通信システムを構成する通信ノードの局番と並び番号との関係を模式的に示す図である。ここで、局番とは、ユーザが通信システムの通信ノードを一意に識別するために任意に設定する情報である。また、並び番号は、実施の形態1で説明したように、論理リング中においてマスタ局Aを基準にした各スレーブ局の並び順を示す番号である。マスタ局Aは、たとえばトークン巡回順序情報記憶部22のトークン巡回順序情報に、これらの局番と並び番号とを対応付けて記憶しておく。そして、ユーザによってどの局番の通信ノードの優先度を高くするかが優先処理時変更先情報として優先処理時変更先情報記憶部27に記憶される。たとえば、スレーブ局C,Eの優先度が最も高いとすると、優先処理時変更先情報として、スレーブ局Cが選択される。スレーブ局Cを選択することで、その後の論理リングにおいて、優先度の高いスレーブ局Eもトークンフレームが回るからである。なお、通信ノードの局番と並び番号との対応付けは、論理リング構成部21による論理リング構成処理時において、各通信ノードに設定された局番の情報が通信ノードから取得され、これによって図11に示されるような関係を得ることができる。
また、トークンフレーム処理部23は、トークンフレーム200を受信すると、受信したトークンフレームの送信可能フレーム数が「0」である場合に受信したトークンフレーム200に格納されている送信可能フレーム数「0」設定局の値を送信可能フレーム数「0」設定局記憶部28に記憶するとともに、優先処理時変更先情報記憶部27に記憶されている優先処理時変更先情報を、トークンフレーム200の送信許可局値に設定する。さらに、送信可能フレーム数「0」設定局記憶部28に送信可能フレーム数「0」設定局が記憶されている状態で送信権獲得装置情報が自局に設定されているトークンフレーム200を受信すると、トークンフレーム200の送信許可局値に、送信可能フレーム数「0」設定局記憶部28に記憶された送信可能フレーム数「0」設定局を設定したトークンフレーム200を生成し、送信可能フレーム数「0」設定局記憶部28内の情報を消去する。
なお、実施の形態1〜2で説明したものと同一の構成要素には同一の符号を付して、その説明を省略する。また、スレーブ局の構成は、実施の形態1〜2で説明したものと同一であるので、その説明も省略する。
つぎに、マスタ局による優先させたいスレーブ局に対してデータの送信権を与える処理手順について説明する。図12−1〜図12−2は、この実施の形態3によるマスタ局のトークンフレームの処理手順の一例を示すフローチャートである。まず、実施の形態1の図6で説明したステップS71〜S73までと同様に、マスタ局のトークンフレーム処理部23は送信権獲得装置情報206が自局宛でないトークンフレーム200については転送を行う(ステップS151〜S153)。
また、送信権獲得装置情報206が自局宛てであるトークンフレーム200の場合には、送信可能フレーム数「0」設定局記憶部28に情報が記憶されているか否かを判定する(ステップS154)。トークンフレーム処理部23は、送信可能フレーム数「0」設定局記憶部28に情報が記憶されていない場合(ステップS154でNoの場合)には、前回のトークンフレーム200の巡回は、優先度の高い通信ノードに対してデータの送信を行わせる処理(以下、優先モードの処理という)ではなく、実施の形態1,2で説明した通信システム内の通信ノードに対して均等にデータの送信権を与えるトークンフレーム200が発行されている状態にあることを認識する。そこで、つぎに、トークンフレーム200内の送信可能フレーム数209が「0」か否かを判定する(ステップS155)。
送信可能フレーム数209が「0」でない場合(ステップS155でNoの場合)には、通信システムを構成する各通信ノードの送信要求の負荷が高まっていないと判断する。その後、トークンフレーム処理部23は、送信可能フレーム数を予め設定された値に設定し(ステップS156)、データフレーム通信処理部24は、送信バッファ25内のフレームを送信する(ステップS157)。また、トークンフレーム処理部23は、ステップS156で設定された送信可能フレーム数から、ステップS157で送信したフレーム数を引いた値を、トークンフレーム200の送信可能フレーム数209に設定する(ステップS158)。また、トークンリピートカウンタ207に「1」を再設定し(ステップS159)、トークンフレーム200の送信許可局値208に「0」を設定する(ステップS160)。そして、送信権獲得装置情報206にトークン巡回順序情報にしたがった通信ノードを設定して(ステップS175)、トークンフレーム200を送信して(ステップS176)、処理が終了する。
一方、ステップS155で、送信可能フレーム数が0である場合(ステップS155でYesの場合)には、トークンフレーム処理部23は、通信システムを構成する通信ノードの送信要求の負荷が一時的に高まっていると判断する。その後、送信可能フレーム数を予め設定された値に設定し(ステップS171)、トークンリピートカウンタ207に「1」を再設定する(ステップS172)。また、受信したトークンフレーム200内の送信可能フレーム数「0」設定局210を送信可能フレーム数「0」設定局記憶部28に記憶し(ステップS173)、送信許可局値208に、優先処理時変更先情報記憶部27の優先処理時変更先情報に記憶されている値を設定する(ステップS174)。その後は、上述したステップS175以降の処理が行われる。
また、ステップS154で送信可能フレーム数「0」設定局記憶部28に情報が記憶されている場合(ステップS154でYesの場合)には、前回のトークンフレーム200の巡回時には、優先モードの処理であることを認識する。そこで、マスタ局のトークンフレーム処理部23は、送信可能フレーム数を予め設定された値に設定した後(ステップS181)、データフレーム通信処理部24は、送信バッファ25内のフレームを送信する(ステップS182)。また、トークンフレーム処理部23は、ステップS181で設定された送信可能フレーム数からステップS182で送信したフレーム数を引いた値を、トークンフレーム200の送信可能フレーム数209に設定する(ステップS183)。さらに、トークンフレーム200内のトークンリピートカウンタ207を「1」に再設定し(ステップS184)、送信許可局値208に、送信可能フレーム数「0」設定局記憶部28に記憶されている送信可能フレーム数「0」設定局を設定し(ステップS185)、送信権獲得装置情報206に、トークン巡回順序情報にしたがった通信ノードを設定する(ステップS186)。以上のようにしてデータ204内の各種の情報が設定されたトークンフレーム200を送信する(ステップS187)。このとき、トークンフレーム処理部23は、送信可能フレーム数「0」設定局記憶部28に記憶されている送信可能フレーム数「0」設定局を消去する。以上によって、処理が終了する。
つぎに、この実施の形態3によるトークンフレームの送信処理の具体的な例について説明する。図13−1〜図13−5は、この実施の形態3によるトークンフレームの送信処理の一例を模式的に示す図である。この通信システムは、1台のマスタ局Aと3台のスレーブ局B〜Dがスイッチングハブ101によって接続されて構成されている。マスタ局Aの論理リング構成部21によって、トークン巡回順序は下記(2)のように決定されたものとする。また、マスタ局Aが、各スレーブ局B〜Dに対して下記(2)に示されるトークン巡回順序に関する情報(トークン巡回先情報)を通知した後、そのトークン巡回順序にしたがって、トークンフレーム200が通信システム内を巡回している状態にあるものとする。
マスタ局A→スレーブ局B→スレーブ局C→スレーブ局D→マスタ局A ・・・(2)
ここで、スレーブ局Bから送信されるデータの優先度が高く、優先処理時変更先情報記憶部27には、優先処理時変更先情報としてスレーブ局Bを示す「2」が設定されているものとする。また、マスタ局Aの受信バッファ26は6フレームまで記憶可能であるものとする。
まず、図13−1に示されるように、スレーブ局Cは、送信可能フレーム数が「3」の送信権を獲得して、送信バッファ64の送信待ちフレームF1〜F5のうち、フレームF1〜F3を送出する。そして、送信可能フレーム数を「0」に設定し、送信可能フレーム数「0」設定局210を自局の並び番号である「2」に設定し、トークンリピートカウンタを「3」に設定し、送信権獲得装置情報をスレーブ局Dに設定したトークンフレーム200を送出するとともに、送信バッファ64内の送信できなかったフレームF4,F5を送信可能フレーム数「0」設定時の未送信フレームとして記憶する。
ついで、図13−2に示されるように、スレーブ局Dは、実施の形態1で説明したように送信権を獲得するが、送信バッファ64内の未送信フレームF6,F7を送信することができない。そのため、トークンリピートカウンタ207を「4」に設定し、送信権獲得装置情報をマスタ局Aに設定したトークンフレーム200を送出するとともに、送信バッファ64内の送信できなかったフレームF6,F7を前回トークン受信時の未送信フレームとして記憶する。
また、スレーブ局Dから、送信権獲得装置情報がマスタ局Aに設定されたトークンフレーム200が送信され直後の時点で、スレーブ局Bでは、アプリケーション層からデータリンク層にフレームF8〜F13の6個のフレームがマスタ局Aに送信するようにエントリされ、これらのフレームF8〜F13は送信バッファ64に送信待ちフレームとして順に格納された状態にあるものとする。さらに、スレーブ局Cでは、アプリケーション層からデータリンク層にフレームF14〜F15の2個のフレームがマスタ局Aに送信するようにエントリされ、これらのフレームF14〜F15は送信バッファ64に送信待ちフレームとして順に格納された状態にあるものとする。またこの時点で、マスタ局Aでは、スレーブ局Cから受信したフレームF1〜F3によって受信バッファ26には記憶容量いっぱいにデータが記憶された状態にあるものとする。
このような状態で、マスタ局Aのトークンフレーム処理部23が、送信権獲得装置情報が自局に設定されたトークンフレーム200を受信すると、送信可能フレーム数「0」設定局記憶部28に情報が記憶されているか確認する。ここでは、送信可能フレーム数「0」設定局記憶部28に情報が記憶されていないものとする。その後、さらに、トークンフレーム200内の送信可能フレーム数を確認するが、ここでは、送信可能フレーム数は「0」であるので、優先処理時変更先情報記憶部27の優先処理時変更先情報に予め設定されたスレーブ局Bのデータを優先的に送信させる優先モードに移行する。
図13−3に示されるように、ここでは、マスタ局Aは、受信したトークンフレーム200内の送信可能フレーム数「0」設定局210を送信可能フレーム数「0」設定局記憶部28に記憶する。ついで、送信可能フレーム数を予め通信システム内で設定された値「6」に設定し、トークンリピートカウンタを「1」に再設定し、さらに送信許可局値を優先処理時変更先情報に記憶されている値「1」(=スレーブ局B)に設定し、送信権獲得装置情報にスレーブ局Bを設定したトークンフレーム200を送信する。
その後、スレーブ局Bは、送信権獲得装置情報206が自局に設定されたトークンフレーム200を受信し、トークンフレーム200内のトークンリピートカウンタ207の値と送信許可局値208とを比較する。そして、トークンリピートカウンタ「1」=送信許可局値「1」であるので、送信権を得たことを認識する。
また、図13−4に示されるように、スレーブ局Bは、送信バッファ64に格納されている送信待ちフレームのうち送信可能フレーム数で規定される範囲内で、すなわち6個のフレームF8〜F13を送信する。その後、トークンリピートカウンタを1インクリメントして「2」にし、送信可能フレーム数を「0」にし、送信権獲得装置情報をスレーブ局Cに設定したトークンフレーム200を送信する。なお、優先モードでデータを送信している最中には、送信可能フレーム数が「0」になっても、トークンフレーム200中の送信可能フレーム数「0」設定局への設定(書き込み)は行わないものとする。
ここで、実施の形態1の方法では、マスタ局Aは、図13−2で送信可能フレーム数「0」設定局に設定されたスレーブ局Cに対して、送信権を与えるようにトークンフレーム200のデータ内の情報を設定していた。しかし、この実施の形態3では、マスタ局Aの受信バッファ26の処理可能フレーム数が「0」の場合には、優先処理時変更先情報記憶部27に記憶されたスレーブ局Bに送信権を与えるようにしている。
ついで、スレーブ局C,Dと順にトークンフレーム200が巡回するが、ともに送信可能フレーム数が「0」であるために、データフレームを送信することができない。そして、図13−5に示されるように、スレーブ局Dは、トークンリピートカウンタが「4」に設定され、送信可能フレーム数が「0」に設定され、送信権獲得装置情報がマスタ局Aに設定されたトークンフレーム200を送信する。
その後、図13−5に示されるように、マスタ局Aは、送信権獲得装置情報が自局に設定されているトークンフレーム200を受信し、送信可能フレーム数「0」設定局記憶部28に情報が記憶されているか確認する。ここでは、情報が記憶されているので、マスタ局Aのトークンフレーム処理部23は、送信可能フレーム数「0」設定局記憶部28に記憶されている値「2」を、トークンフレーム200の送信許可局値に設定する。また、トークンリピートカウンタを「1」に再設定し、送信可能フレーム数を「6」に設定し、送信権獲得装置情報にスレーブ局Bを示す「1」を設定したトークンフレーム200を生成し、送信する。また、トークンフレーム処理部23は、トークンフレーム200の生成処理が終わると、送信可能フレーム数「0」設定局記憶部28に記憶されている情報を消去する。
その後は、実施の形態1で説明したものと同じ処理が行われる。つまり、ここでは、まず、送信権がスレーブ局Cに与えられ、送信バッファ64内の送信可能フレーム数「0」設定時の未送信フレームとして記憶されているフレームF4,F5が送信され、ついでスレーブ局Dの送信バッファ64内の前回トークン受信時の未設定フレームとして記憶されているフレームF6,F7が送信される。
なお、以上の説明では、スレーブ局の通信要求の負荷が一時的に高まった場合を例に挙げて説明したが、この場合にのみ上記の処理を行うのではなく、マスタ局の受信処理が劣化した場合などにも同様の優先モードに遷移させる処理を実行させることができる。
この実施の形態3によれば、受信したトークンフレームの送信可能フレーム数が「0」の場合には、予め設定された優先度の高いスレーブ局に送信権を与え、送信可能フレーム数「0」設定局210の内容を一時的に記憶して、送信可能フレーム数「0」設定局210に設定されたスレーブ局に送信権を与えないようにした。その結果、マスタ局に頻繁にデータの送信を行う必要があるスレーブ局のデータを、リアルタイム性を維持しながら送信することができるという効果を有する。
実施の形態4.
この実施の形態4では、受信したトークンフレームの送信可能フレーム数が「0」の場合に、通信システム内のスレーブ局のうち最も優先度の高いスレーブ局に送信権を与える他の方法について説明する。
図14は、この実施の形態4で用いられるトークンフレームのフォーマットの一例を示す図である。このトークンフレーム200は、図3に示した送信許可局値208が、優先的にデータ送信を行わせるスレーブ局の論理リング上での範囲を規定する開始送信許可局値208aと終了送信許可局値208bとで構成される。つまり、開始送信許可局値208aは、受信したトークンフレームの送信可能フレーム数が「0」で優先モードに遷移する際に、論理リング上の通信ノードのうち、優先的に送信権を与える最初の通信ノードの並び番号を示し、終了送信許可局値208bは、同じく論理リング上の通信ノードのうち、優先的に送信権を与える最後の通信ノードの並び番号を示す。その結果、論理リング上の通信ノードのうち、開始送信許可局値208aの並び番号を有する通信ノードから、終了送信許可局値208bの並び番号を有する通信ノードまでの通信ノードが、送信権を得てデータフレームの送信を行うことになる。
マスタ局の構成は、優先処理時変更先情報記憶部27に、優先モードに遷移する際の開始送信権許可局値と終了送信権許可局値とを含む優先処理時変更先情報が記憶される点が、実施の形態3の構成と異なるが、その他の構成は同一であるので、その説明を省略する。
また、スレーブ局の構成は、トークンフレーム処理部62が、送信権獲得装置情報206が自局であるトークンフレーム200を受信した後、トークンリピートカウンタ207の値が開始送信許可局値208a以上で終了送信許可局値208b以下であるか否かを判定する点が、実施の形態1〜3の構成とは異なるが、その他の構成は同一であるので、その説明を省略する。
さらに、このような構成における通信システムの通信方法も、実施の形態3で説明したものと同様であるので、その説明を省略する。
この実施の形態4によれば、受信したトークンフレームの送信可能フレーム数が「0」の場合に、優先的にデータを送信させたい通信ノードの論理リング上での開始並び番号と終了並び番号を指定するようにしたので、論理リング上の任意に選択した通信ノードの集合に優先的にデータを送信させることができるという効果を有する。また、優先モードに移行したときのデータ送信処理は、開始送信許可局値と終了送信許可局値で設定される範囲の通信ノードのみによって行われるので、実施の形態3の場合に比してトークンフレームが一巡する間に行われる処理を短縮化することができる。
以上の実施の形態3,4において、マスタ局に優先処理情報設定手段を設け、ユーザによって入力された優先させたいスレーブ局を優先処理時変更先情報記憶部27に設定するようにしてもよい。このようにすることで、発生したイベントによって、優先させたいスレーブ局の送信権の制御をおこなうことができる。
なお、実施の形態1〜4では、送信権を得た通信ノードが送信するフレームのサイズについては特に制限はないが、たとえばマスタ局で所定の長さ以下のフレームのみしか送信させないように設定することもできる。このとき、設定された所定の長さよりも大きなフレームを送信する場合には、データリンク層よりも上位の層で、データを送信可能な長さに分割し、受信する場合には、受信した側で分割されたデータを1つにまとめるようにすればよい。
実施の形態5.
また、上述した実施の形態1〜4の通信システムは、制御対象機器と、制御対象機器の状態を入力データとして所定の演算を行い、制御対象機器の状態を入力データとして所定の演算を行い、制御対象機器の動作条件を出力データとして出力するプログラマブルコントローラなどの制御装置と、を備えるFAネットワーク(FAシステム)などに適用することができる。
FAネットワークでは、トークンフレーム受信時に常に各通信ノードから送信される同期データ(サイクリックデータ)と、リアルタイム性が重視されず、周期的に送信しなくてもよい非同期データ(非サイクリックデータ)と、が共存している。同期データとしては、マスタ局が各スレーブ局に、スレーブ局を制御するデータや、マスタ局による演算処理に必要なスレーブ局で取得したデータなどの制御データを例示することができ、非同期データとしては、たとえばスレーブ局の制御ログなどのデータを例示することができる。
このようなネットワークにおいては、実施の形態1〜4で示した機能を、通信システムで送信されるデータのすべてに適用しなくてもよい。具体的には、送信権獲得装置情報に自局が設定されたトークンフレームを通信ノードが受信した場合には、同期データに関しては常に送信し、非同期データについてのみ実施の形態1〜4で説明した方法によって送信する。
この場合には、フレーム内に同期フレームか非同期フレームかを判断するフラグ(非同期フレーム判定フラグ)を設け、送信権を獲得した通信ノードは、フレームの非同期フレーム判定フラグ情報を読み込み、非同期フレームにのみ上述した実施の形態1〜4を適用し、同期フレームは、送信権を獲得した場合に必ず送信するようにすればよい。
この実施の形態5によれば、データの重要度によって、リアルタイム性の確保対象を変更することができるという効果を有する。
また、上述したマスタ局とスレーブ局における通信方法は、それぞれの処理手順を書込んだプログラムを、CPU(中央演算処理装置)を有するプログラマブルコントローラやパーソナルコンピュータなどのコンピュータで実行することによって実現することができる。この場合、コンピュータのCPU(制御手段)が、プログラムにしたがって、上述した通信方法の各処理工程を実行することになる。これらのプログラムは、ハードディスク、フロッピー(登録商標)ディスク、CD(Compact Disk)−ROM(Read Only Memory),MO(Magneto-Optical disk),DVD(Digital Versatile DiskまたはDigital Video Disk)などのコンピュータで読取可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、これらのプログラムは、インタネットなどのネットワーク(通信回線)を介して配布することもできる。
さらに、マスタ局は、上述した実施の形態に記載される各処理部を上記の処理手順で処理を実行する回路によって実現した通信管理回路とすることもできる。同様に、スレーブ局も、上述した実施の形態に記載される各処理部を上記の処理手順で処理を実行する回路によって実現した通信回路とすることもできる。
さらにまた、マスタ局は、上述した実施の形態に記載される各処理部を上記の処理手順で処理を実行するように作製したLSI(Large-Scale Integration)とすることもできる。同様に、スレーブ局も、上述した実施の形態に記載される各処理部を上記の処理手順で処理を実行するように作製したLSIとすることもできる。