以下に、本発明に係るデータ通信システムおよびデータ通信装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1に係るデータ通信システムの構成を示す図である。データ通信システム100は、マスタ局M、1〜複数のスレーブ局SL1〜SLn(nは自然数)を有している。データ通信システム100では、伝送路(バス)上にマスタ局Mと各スレーブ局SL1〜SLnが接続されており、互いに伝送路を介してデータ通信を行なう。
本実施の形態のデータ通信システム100は、例えばイーサネット(登録商標)技術などのLAN規格を用いたトークンパッシング方式を用いてサイクリック通信を実現し、局(マスタ局M、スレーブ局SL1〜SLn)間のデータ通信(イーサネット(登録商標)フレームの送受信)を行なう。これにより、伝送路内で行なわれるデータ通信(データ授受のタイミング)のリアルタイム性を保証する。
マスタ局Mやスレーブ局SL1〜SLnは、データ通信のリアルタイム性が必要なフィールド機器などである。マスタ局M、スレーブ局SL1〜SLnは、トークンパッシング方式を用いてサイクリック通信を実現するデータ通信装置である。マスタ局Mは、後述のPLC(Programmable Logic Controller)10内に配設されるネットワークユニットであり、スレーブ局SL1〜SLnとデータ通信を行う。スレーブ局SL1〜SLnは、それぞれIO機器やデジタル/アナログ変換装置などの周辺機器(図示せず)内に配設されており、これらの周辺機器にマスタ局Mからの動作指示などを送る。
データ通信システム100では、PLC10のデータがマスタ局Mからスレーブ局SL1〜SLnに送られる。そして、各スレーブ局SL1〜SLnは、マスタ局Mからのデータを用いて周辺機器を動作させる。さらに、各スレーブ局SL1〜SLnは、それぞれが接続されている周辺機器から取得したデータをマスタ局Mに送る。PLC10では、スレーブ局SL1〜SLnからのデータを用いて所定の演算を行い、スレーブ局SL1〜SLnへのデータを生成する。そして、生成したデータをマスタ局Mからスレーブ局SL1〜SLnへ送信する。データ通信システム100は、このようなマスタ局Mとスレーブ局SL1〜SLnとの間で行なうデータ通信処理を繰り返すことによって動作する。
データ通信システム100では、予め何れの順番でトークンフレーム(以下、TFという)がスレーブ局SL1〜SLn間を流れていくかが設定されている。データ通信システム100内の通信機器(各スレーブ局SL1〜SLnやマスタ局M)は、TFを受信した場合に、自局が送信権を獲得したことを認識し、必要に応じて自局のデータを送信したのちTFを発行して次の送信局を指定する。データ通信システム100では、この動作を各局が実施し、TFがデータ通信システム100内を巡回することによって伝送路上のフレームの輻輳状態を回避し、データ通信のリアルタイム性を保障する。また、マスタ局Mは、TFを受信することによって、スレーブ局SL1〜SLnからのデータを受信したことを認識し、データの受信処理(ファームウェア処理)などを実行する。ファームウェア処理(以下、F/W処理という)は、マスタ局M内でのデータの送受信に関する処理である。マスタ局Mは、F/W処理を実行した後、スレーブ局SL1〜SLnへのデータ送信を開始することによって、スレーブ局SL1〜SLnとの間でデータ通信のタイミングを図る。
仮に、マスタ局Mが、TFを受信するタイミングではなく各スレーブ局SL1〜SLnからのデータ受信タイミングごとに受信処理を実施した場合には、全てのスレーブ局SL1〜SLnの受信データをまとめて処理する時間に比べて、マスタ局M内でのDMA(Direct Memory Access)転送に余分な時間がかかり性能が劣化する。一方、本実施の形態では、全てのスレーブ局SL1〜SLnの受信データをまとめて処理することによってデータ送受信の効率化を図っている。また、本実施の形態のマスタ局Mは、TFを発行してTFが戻ってくるまでの間に別の処理を実施することが可能となるのでシステム全体の処理効率が向上する。
図2は、PLCの構成を示すブロック図である。なお、図2では、マスタ局Mと接続されるスレーブ局としてスレーブ局SL1のみを図示している。同図に示すように、PLC10は、演算処理装置であるCPU(Central Processing Unit)1、マスタ局Mを有している。そして、マスタ局Mは、データ処理部2と、通信処理部3Mと、メモリ4とを備えている。マスタ局Mは、例えばASIC(Application Specific Integrated Circuit)やマイコンなどを用いて構成されている。
CPU1は、マスタ局Mと接続されており、マスタ局Mとの間でデータ通信を行う。CPU1は、スレーブ局SL1〜SLnへ送るデータ(周辺機器を制御するためのデータ等)をマスタ局Mのデータ処理部2へ送信する。また、CPU1は、マスタ局Mが受信したスレーブ局SL1〜SLnからのデータをデータ処理部2から受信する。
マスタ局Mのデータ処理部(データ送受信処理部)2は、CPU1と通信処理部3Mとの間のデータ中継(第2のデータ送受信処理)を行なう。換言すると、データ処理部2は、CPU1からのデータを通信処理部3Mに送り、通信処理部3Mからのデータをデータ処理部2に送る。マスタ局Mのデータ処理部2は、CPU1からのデータを所定サイズのデータ(パケット)に分割して通信処理部3Mに送る。また、データ処理部2は、通信処理部3Mからのデータを所定サイズのデータに統合してCPU1に送る。
通信処理部3Mは、スレーブ局SL1〜SLnとの間のデータ送受信処理(第1のデータ送受信処理)や、データ処理部2との間のデータ送受信処理(第3のデータ送受信処理)を行なう。通信処理部3Mは、スレーブ局SL1〜SLnから送られてくるデータをまとめてデータ処理部2にDMA転送する。通信処理部3Mは、送信バッファ31と受信バッファ32を備えている。通信処理部3Mは、CPU1からのデータを送信バッファ31に格納し、送信バッファ31を介して各スレーブ局SL1〜SLnに送信する。また、通信処理部3Mは、スレーブ局SL1〜SLnからのデータを受信バッファ32に格納し、受信バッファ32を介してCPU1側へ送信する。
メモリ4は、CPU1からデータ処理部2に送られてくるデータや通信処理部3Mからデータ処理部2に送られてくるデータを格納する。メモリ4が格納しているデータは、CPU1から読み出し許可が与えられた場合に所定のタイミングで通信処理部3Mによって読み出され、通信処理部3Mから読み出し許可が与えられた場合に所定のタイミングでCPU1によって読み出される。
PLC10では、CPU1からのデータがデータ処理部2に送られてメモリ4に格納される。そして、CPU1から読み出し許可が与えられた後、通信処理部3Mは、メモリ4のデータを読み出す。このとき、通信処理部3Mは、データ処理部2にデータの読み出しを要求する。これにより、データ処理部2は、メモリ4内のデータを所定サイズのデータに分割して通信処理部3Mに送る。通信処理部3Mは、データ処理部2からのデータを送信バッファ31を介してスレーブ局SL1〜SLnに送信する。
また、PLC10では、スレーブ局SL1〜SLnからのデータが受信バッファ32に格納される。受信バッファ32内のデータは、データ処理部2にDMA転送されてメモリ4に格納される。通信処理部3Mからから読み出し許可が与えられた後、CPU1は、メモリ4のデータを読み出す。このとき、データ処理部2は、メモリ4内のデータを所定サイズのデータに統合してCPU1に送る。
つぎに、データ通信システム100の処理手順について説明する。図3は、実施の形態1に係るデータ通信システムの処理手順を示すシーケンス図である。以下では、データ通信システム100内のスレーブ局がスレーブ局SL1,SL2の2つである場合について説明する。また、マスタ局MからのTFがまずスレーブ局SL1に送られ、その後スレーブ局SL1からスレーブ局SL2へTFが送られる場合について説明する。
本実施の形態のデータ通信システム100の処理手順の特徴の1つは、スレーブ局SL1へのTF送信およびスレーブ局SL1からマスタ局Mへのデータ送信と、スレーブ局SL2へのTF送信およびスレーブ局SL2からマスタ局Mへのデータ送信と、スレーブ局SL2からマスタ局MへのTF送信と、を含んだ1サイクルの通信処理を2サイクル繰り返すことである。
データ通信システム100では、マスタ局Mの通信処理部3Mがスレーブ局SL1へTF(1回目)を送信する(ST1)。スレーブ局SL1は、TFを受信すると、マスタ局Mへのデータ送信処理を行なう(ST2)。スレーブ局SL1からのデータは、データs1として通信処理部3Mに送られる(ST3)。スレーブ局SL1は、マスタ局Mへのデータ送信処理が完了すると、スレーブ局SL2へTFを送る(ST4)。
スレーブ局SL2は、TFを受信すると、マスタ局Mへのデータ送信処理を行なう(ST5)。スレーブ局SL2からのデータは、データs2として通信処理部3Mに送られる(ST6)。スレーブ局SL2は、マスタ局Mへのデータ送信処理が完了すると、マスタ局MへTFを送る(ST7)。
マスタ局Mの通信処理部3Mは、データs1やデータs2を受信すると受信バッファ32に格納しておく。ここでは、ST3のデータs1が通信処理部3Mによって正常に受信され、ST6のデータs2がノイズなどによって通信処理部3Mに正常に受信されなかった場合(データ化けやデータの消失が発生した場合)について説明する。
本実施の形態のマスタ局Mの通信処理部3Mは、スレーブ局SL2からTF(1回目)を受信すると、データs1やデータs2を正常に受信できたか否かに関わらずスレーブ局SL1にTF(2回目)を送信する(ST8)。換言すると、通信処理部3Mは、データs1,s2が正常に受信できたか否かの判定や、データs1,s2のマスタ局M内での受信処理(後述のF/W処理)を行なうことなく、次のTFをスレーブ局SL1に送信する。
スレーブ局SL1は、TFを受信すると、マスタ局Mへのデータ送信処理を行なう(ST9)。スレーブ局SL1からのデータは、データs1として通信処理部3Mに送られる(ST10)。スレーブ局SL1は、マスタ局Mへのデータ送信処理が完了すると、スレーブ局SL2へTFを送る(ST11)。
スレーブ局SL2は、TFを受信すると、マスタ局Mへのデータ送信処理を行なう(ST12)。スレーブ局SL2からのデータは、データs2として通信処理部3Mに送られる(ST13)。スレーブ局SL2は、マスタ局Mへのデータ送信処理が完了すると、マスタ局MへTFを送る(ST14)。ST10とST13では、通信処理部3Mがデータs1,s2を正常に受信した場合を示している。ST10やST13で受信したデータs1,s2は、ST3やST6で受信したデータs1,s2とともに受信バッファ32に格納される。
通信処理部3Mは、スレーブ局SL2からTF(2回目)を受信すると、データの受信処理を行なう(ST15)。具体的には、通信処理部3Mは、受信バッファ32に格納されているデータs1,s2が正常に受信されたデータであるか否かを判断する。そして、通信処理部3Mは、各スレーブ局(スレーブ局SL1,SL2)から少なくとも1つずつの正常なデータを受信していると判断した場合に、各スレーブ局SL1,SL2からのデータs1,s2をまとめてデータ処理部2にDMA転送する(ST16、ST17)。これにより、各スレーブ局からのデータを1つずつデータ処理部2に転送する場合よりも高速にデータ転送することが可能となる。通信処理部3Mは、正常なデータを1度も受信できなかったスレーブ局が存在する場合、正常なデータのみをデータ処理部2にDMA転送してもよいし、データ処理部2へのDMA転送を行なわなくてもよい。この後、通信処理部3Mは、データ処理部2にデータの読み出し要求を行なう。
CPU1から読み出し許可が与えられていれば、データ処理部2はメモリ4内のデータを通信処理部3Mにデータ送信する(ST18)。データ処理部2からのデータは、データmとして通信処理部3Mに送られる。
これにより、通信処理部3Mの送信バッファ31にデータ処理部2からのデータmが格納(送信データセット)される(ST19)。そして、通信処理部3Mは、スレーブ局SL1,SL2へのデータ送信処理を行なう(ST20)。送信バッファ31からは、データmがブロードキャストでスレーブ局SL1,SL2に送信される(ST21、ST22)。
通信処理部3Mは、スレーブ局SL1,SL2へのデータ送信処理を完了すると、スレーブ局SL1へTFを送る(ST23)。スレーブ局SL1は、通信処理部3MからTFを受信すると、TFをスレーブ局SL2に送信する(ST24)。スレーブ局SL2は、スレーブ局SL1からTFを受信すると、TFを通信処理部3Mへ送信する(ST25)。この後、通信処理部3Mがスレーブ局SL2からのTFを受信すると、データ通信システム100では、マスタ局Mからスレーブ局SL1,SL2へデータ送信し、その後、ST1〜ST25の処理が繰り返される。
このように、本実施の形態では、前述の通信処理を2サイクル繰り返した後、通信処理部3Mがデータの受信処理を行なっている。換言すると、データ通信システム100では、F/W処理を行なうことなく、前述の通信処理を必ず1回リトライしている。これにより、スレーブ局SL1,SL2からマスタ局Mへ送られるデータの耐ノイズ性を向上させることが可能となる。なお、このときのリトライ時間は、1サイクル分の通信処理であり、このリトライ時間がリトライ処理によって生じるロス時間となる。これにより、データ通信システム100では、短時間でリトライ処理を行なっている。このように、データ通信システム100は、イーサネット(登録商標)などの耐ノイズに弱い方法を用いた場合であっても、短時間で効率良くデータ通信のリカバリを行なえる。
ここで、本実施の形態のデータ通信システム100と、従来から用いられていたデータ通信システムとの処理手順の差異を明確にするため、従来用いられていたデータ通信システムの処理手順の問題点を説明する。
図4は、従来のデータ通信システムの処理手順を示すシーケンス図である。図4では、本実施の形態のデータ通信システム100に、従来のデータ通信システムと同様の処理を行なわせた場合の処理手順を示している。ここでのデータ通信システム100は、ST31〜ST37の処理として、図3に示したST1〜ST7と同様の処理を行なう。
スレーブ局SL2が通信処理部3MへTF(1回目)を送った後(ST37)、通信処理部3Mは、データs1,s2を受信バッファ32に格納する。ここでは、ST33のデータs1が通信処理部3Mによって正常に受信され、ST36のデータs2がノイズなどによって通信処理部3Mに正常に受信されなかった場合について説明する。
通信処理部3Mは、スレーブ局SL2からTF(1回目)を受信すると、データの受信処理(データの正常判定やデータ処理部2への転送処理)を行なう(ST38)。具体的には、通信処理部3Mは、データs1とデータs2をデータ処理部2にDMA転送する(ST39、ST40)。このとき、データs2は、ノイズなどによって正常に受信できなかったにも関わらず、通信処理部3Mによる受信処理(DMA転送など)が行なわれる。この後、通信処理部3Mは、データ処理部2にデータの読み出し要求を行なう。
CPU1から読み出し許可が与えられていれば、データ処理部2はメモリ4内のデータを通信処理部3Mにデータ送信する(ST41)。データ処理部2からのデータは、データmとして通信処理部3Mに送られる。
これにより、通信処理部3Mの送信バッファ31にデータ処理部2からのデータmが格納(送信データセット)される(ST42)。そして、通信処理部3Mは、スレーブ局SL1,SL2へのデータ送信処理を行なう(ST43)。送信バッファ31からは、データmがブロードキャストでスレーブ局SL1,SL2に送信される(ST44、ST45)。
通信処理部3Mは、スレーブ局SL1,SL2へのデータ送信処理を完了すると、スレーブ局SL1へTFを送る(ST46)。以下、データ通信システム100では、実施の形態1の図3で説明したST9〜ST25と同様の処理が行なわれる。図4に示したST47〜ST63の処理が、図3に示したST9〜ST25の処理に対応している。この後、通信処理部3Mがスレーブ局SL2からのTFを受信すると、データ通信システム100では、マスタ局Mからスレーブ局SL1,SL2へデータ送信し、その後ST31〜ST63の処理が繰り返される。
このように、従来のデータ通信処理では、トークン方式を用いたサイクリック通信によってリトライ処理を行なっており、スレーブ局SL1,SL2からデータs1,s2が送信される度(TFを受信する度)に受信処理(ST38)や送信データセット処理(ST42)などを行なっている。このため、従来のデータ通信処理のリトライ処理には、通信処理部3Mによるデータの受信処理(ST38)や送信データセット処理(ST42)などのマスタ局M内でのデータの送受信に関するF/W処理が含まれている。このように、従来のデータ通信処理では、リトライ処理としてST38〜ST52が行なわれていた。トークンホールド時間の内、マスタ局M内のF/W処理(送受信処理等)が占める割合が大きくなると、リトライ処理の時間が長くなる。特に局間(ノード間)で送受信するデータの容量が増えると、F/W処理に時間がかかるのでリトライの時間が長くなる。このように、従来のリトライ処理は、図3に示した本実施の形態のデータ通信処理と比べて長時間を要している。
特に、通信処理部3Mが送信バッファ31と受信バッファ32を有し、F/W処理をユーザ任せの設定で行なう場合には、F/W処理に時間がかかる場合が多い。また、伝送路の帯域が向上(例えば10Mbpsから100Mbpsへ向上、100Mbpsから1Gbpsへ向上)するにしたがって、F/W処理の性能が、データ通信システム100の性能に与える影響が大きくなる。
なお、TCP(Transmission Control Protocol)でのリトライ処理によってフレームデータの欠落をリカバリする場合、タイムアウトの時間に数百msecもかかり、リアルタイム性を重視されるフィールドネットワークでの適用が困難である。
なお、データ通信システム100では、ユーザ設定により、図3のデータ通信処理でのリトライ処理と図4のデータ通信処理でのリトライ処理を切替えて使用してもよい。図5は、ユーザ設定によってリトライ処理の種類を切替える通信処理部の構成を示す図である。同図に示すように、ユーザ設定によってリトライ処理の種類を切替える通信処理部3Mは、送信バッファ31、受信バッファ32に加えて指示入力部33、設定切替部35を有している。
指示入力部33は、マウス、キーボード、ボタンなどを備えて構成され、ユーザから外部入力される指示(データ通信処理の種類を指定する指示)を受け付ける。指示入力部33へは、図3に示したリトライ処理を指定する指示や図4に示したリトライ処理を指定する指示が入力される。指示入力部33は、ユーザから外部入力された指示を、データ通信処理の設定指示として設定切替部35に送る。設定切替部35は、指示入力部33から送られてくるリトライ処理の設定指示に基づいて、データ通信処理の切替えを行なう。
なお、図3ではデータ処理部2とCPU1との間のデータ通信についてはその説明を省略しているが、データ処理部2とCPU1は、データ処理部2と通信処理部3Mとの間のデータ通信とは非同期でデータ通信を行なう。
なお、本実施の形態では、イーサネット(登録商標)を用いてデータ通信システム100内でのデータ通信を行うこととしたが、データ通信システム100内でのデータ通信は、他の通信方法を用いてもよい。
また、本実施の形態では、マスタ局Mとデータ通信を行うスレーブ局がスレーブ局SL1,SL2の2つである場合について説明したが、マスタ局Mとデータ通信を行うスレーブ局は、1つであってもよいし3つ以上であってもよい。
また、本実施の形態では、リトライ処理を1度だけ行なう場合について説明したが、リトライ処理は2回以上行ってもよい。データ通信システム100で行なうリトライ処理の回数は、指示入力部33などからのユーザ指示に基づいて予め設定しておく。設定されたリトライ回数(トークンフレーム連続送信回数)は、通信処理部3M内のデータ格納部(図示せず)に格納しておく。これにより、ユーザ所望のリトライ処理回数を容易に行なうことが可能となる。
このように実施の形態1によれば、スレーブ局SL2からTF(1回目)を受信すると、データs1,s2を正常に受信できたか否かに関わらずマスタ局M内でのデータs1,s2の受信処理を行なうことなく、マスタ局Mがスレーブ局SL1にTF(2回目)を送信するので、短時間でデータ通信のリカバリ処理を行なうことが可能となる。したがって、効率良くデータ通信を行うことが可能となる。
実施の形態2.
つぎに、図6を用いてこの発明の実施の形態2について説明する。実施の形態2では、リトライ処理の際に、マスタ局Mからスレーブ局SL1,SL2へデータmを再送信する。
図6は、実施の形態2に係るデータ通信システムの処理手順を示すシーケンス図である。実施の形態2のデータ通信システム100は、ST71〜ST77の処理として、図3に示したST1〜ST7と同様の処理を行なう。
スレーブ局SL2が通信処理部3MへTF(1回目)を送った後(ST77)、通信処理部3Mは、データs1やデータs2を受信バッファ32に格納する。ここでは、ST73のデータs1が通信処理部3Mによって正常に受信され、ST76のデータs2がノイズなどによって通信処理部3Mに正常に受信されなかった場合について説明する。
つぎに、通信処理部3Mは、データs1やデータs2を正常に受信できたか否かに関わらず、スレーブ局SL1,SL2へのデータ送信処理を行なう(ST78)。このとき、通信処理部3Mは、送信バッファ31に格納しておいたデータmを用いてスレーブ局SL1,SL2へのデータ送信を行なう。送信バッファ31に格納しておいたデータmは、通信処理部3Mからスレーブ局SL1へ1回目のTFを送信する前に、通信処理部3Mからスレーブ局SL1へ送信されたデータmと同じデータである。送信バッファ31からは、データmがブロードキャストでスレーブ局SL1,SL2に送信される(ST79、ST80)。
通信処理部3Mは、スレーブ局SL1,SL2へのデータ送信処理を完了すると、スレーブ局SL1へTFを送る(ST81)。以下、データ通信システム100では、実施の形態1の図3で説明したST9〜ST25と同様の処理が行なわれる。図6に示したST82〜ST98の処理が、図3に示したST9〜ST25の処理に対応している。この後、通信処理部3Mがスレーブ局SL2からのTFを受信すると、データ通信システム100では、マスタ局Mからスレーブ局SL1,SL2へデータ送信し、その後ST71〜ST98の処理が繰り返される。
なお、本実施の形態でも、データ通信システム100では、データ通信システム100内の状態に応じて、図3のデータ通信処理、図4のデータ通信処理、図6のデータ通信処理を使い分けてもよい。この場合も、実施の形態1のデータ通信システム100と同様に、図5に示した通信処理部3Mによって、通信処理の種類を切り替える。指示入力部33へは、図3、図4、図6に示したデータ通信処理の何れかを指定する指示が入力される。
また、マスタ局Mからスレーブ局SL1,SL2へのデータmは、複数回に渡って繰り返し送信してもよい。例えば、マスタ局Mは、リトライ時のデータmをスレーブ局SL1,SL2に複数回送信してもよいし、通常時のデータmをスレーブ局SL1,SL2に複数回送信してもよい。
このように、実施の形態2によれば、リカバリ処理の際にマスタ局Mからスレーブ局SL1,SL2へのデータ送信を行なっているので、マスタ局Mからスレーブ局SL1,SL2へ送られるデータの耐ノイズ性を向上させることが可能となる。
実施の形態3.
つぎに、図7および図8を用いてこの発明の実施の形態3について説明する。実施の形態3では、マスタ局Mがデータs1,s2を受信した際に、図3に示したデータ通信処理(ST8〜ST14)と、図4に示したデータ通信処理(ST38〜ST52)の何れを行なうかをマスタ局Mの通信処理部3Mが判断し、データ通信処理を切替える。このとき、データ通信システム100は、データ通信システム100内の状態(データs1やデータs2の受信状態)に応じて、データ通信処理の種類を切替える。
図7は、実施の形態3に係るデータ通信システムの処理手順を示すシーケンス図である。実施の形態3のデータ通信システム100は、ST101〜ST107の処理として、図3に示したST1〜ST7と同様の処理を行なう。
通信処理部3Mは、スレーブ局SL2からTF(1回目)を受信した後(ST107)、通信処理部3Mは、データs1やデータs2の受信状態(到達状況)を確認する(ST108)。具体的には、通信処理部3Mは、例えばFCS(Frame Check Sequence)を用いてスレーブ局SL1,SL2から受信したデータs1,s2が正常に受信されたデータであるか否かを判断する。換言すると、通信処理部3Mは、自身がトークンフレームを発行してから自身宛てのトークンフレームを受信するまでの間(ST101〜ST107)にスレーブ局SL1,SL2から送られてきたデータを正常にデータ受信しているか、伝送路でフレームが欠落しているかなどを判断する。
通信処理部3Mは、この判断結果に基づいて、図3に示したデータ通信処理または図4に示したデータ通信処理の何れか一方を選択する(ST109)。換言すると、通信処理部3Mは、スレーブ局SL2からTFを受信した際に、スレーブ局SL1へTFを発行するか、それともスレーブ局SL1,SL2からのデータs1,s2をマスタ局M内で受信処理するかを決定する。
ここで、通信処理部3Mによるデータ通信処理の選択方法について説明する。通信処理部3Mは、1サイクルのデータ通信処理で全てのデータを正常に受信したと判断した場合、図4に示したデータ通信処理(F/W処理)を選択する。
一方、通信処理部3Mは、ノイズの発生などによって何れかのデータを正常に受信していないと判断した場合、各データが正常であるか否かを情報テーブルに登録する。この情報テーブルは、各スレーブ局から受信したデータが正常か否かの判定結果を、データの受信回毎に登録しておく情報テーブル(以下、受信状態情報テーブルという)である。受信状態情報テーブルは、マスタ局Mのメモリ4内に格納される。
ところで、マスタ局Mは、サイクリック通信を行うので、メモリ4はスレーブ局SL1〜SLnとの間で共用されるメモリである。PLC10では、CPU1(アプリケーション)が、メモリ4へのデータのリード/ライトとしてデータの送受信を行なう。このため、マスタ局Mからスレーブ局SL1〜SLnへのデータ送信や、スレーブ局SL1〜SLnからマスタ局Mへのデータ送信は、各局に配置されているメモリ4上の送信エリアにCPU1がデータを書き込むことによって行なわれる。そして、CPU1は、最新のデータがメモリ4に格納されるよう最新のデータをメモリ4に上書きしている。したがって、マスタ局Mのメモリ4が記憶する受信状態情報テーブルには、最新のデータが格納されている。
図8は、受信状態情報テーブルの構成の一例を示す図である。受信状態情報テーブル101では、マスタ局Mがスレーブ局SL1〜SLnから受信したデータが正常であるか否かを示す情報が、各データの受信回毎に登録されている。
図8では、例えばスレーブ局SL1から受信したデータの情報として、1回目のデータ受信は正常であったことを示す「OK」が登録され、2回目のデータ受信は正常でなかったことを示す「NG」が登録され、x(xは自然数)回目のデータ受信は正常でなかったことを示す「NG」が登録された場合を示している。
各スレーブ局SL1〜SLnからのデータのうち、ノイズの発生などによって何れかのデータを正常に受信できていない場合、通信処理部3Mは、受信状態情報テーブル101に、新たな回数((x+1)回目)を登録し、この時の各スレーブ局SL1〜SLnからのデータがそれぞれ正常であるか否かを登録する。
そして、通信処理部3Mは、受信状態情報テーブル101に基づいて、図3に示したデータ通信処理または図4に示したデータ通信処理の何れか一方を選択する。受信状態情報テーブル101において、各スレーブ局SL1〜SLnからのデータが何れかの回数で「OK」を登録されていれば、通信処理部3Mは、図4に示したデータ通信処理を選択する。一方、スレーブ局SL1〜SLnの何れかが、全ての回数で「NG」を登録されていれば、通信処理部3Mは、図3に示したデータ通信処理(リトライ処理)を選択する。なお、通信処理部3Mは、1サイクルのデータ通信処理で全てのデータを正常に受信したと判断した場合、受信状態情報テーブル101内の情報をリセットする。また、通信処理部3Mは、図4に示したデータ通信処理を選択した場合に受信状態情報テーブル101内の情報をリセットする。
通信処理部3Mは、データ通信処理の種類を選択すると、選択したデータ通信処理によってデータ通信を行うよう設定切替部35に指示を送る。設定切替部35は、通信処理部3Mから送られてくる指示に基づいて、データ通信処理の切替えを行なう。
図7では、ST103とST106で受信したデータs1,s2が正常であった場合を示している。このため、通信処理部3Mは、図4に示したデータ通信処理を選択する。これにより、データ通信システム100では、図4に示したデータ通信処理として、ST110〜ST124の処理を行なう。このST110〜ST124の処理は、図4に示したST38〜ST52の処理に対応している。
スレーブ局SL2が通信処理部3MへTF(2回目)を送った後(ST124)、通信処理部3Mは、今回受信したデータs1やデータs2の受信状態を確認する(ST125)。通信処理部3Mは、この確認結果に基づいて、図3に示したデータ通信処理または図4に示したデータ通信の何れか一方を選択する(ST126)。
図7では、ST103とST106で受信したデータs1,s2は正常である。したがって、受信状態情報テーブル101はリセットされている。また、図7では、ST120で受信したデータs1が正常であり、ST123で受信したデータs2が正常でなかった場合を示している。このため、通信処理部3Mは、図3に示したデータ通信処理を選択する。これにより、データ通信システム100では、図3に示したデータ通信処理として、ST127〜ST133の処理を行なう。このST127〜ST133の処理は、図3に示したST8〜ST14の処理に対応している。
以下、通信処理部3Mは、スレーブ局SL1,SL2からデータs1,s2を受信して、スレーブ局SL2からTFを受信する度に、受信状態情報テーブル101への情報登録やリセットを行なう。そして、通信処理部3Mは、今回受信したデータs1,s2が正常であるか否かの判断結果や受信状態情報テーブル101に基づいて、図3に示したデータ通信処理または図4に示したデータ通信処理の何れか一方を選択する。そして、選択したデータ通信処理によってマスタ局Mとスレーブ局SL1,SL2との間のデータ通信を行う処理を繰り返す。
なお、本実施の形態では、図3に示したデータ通信処理(ST8〜ST14)と、図4に示したデータ通信処理(ST38〜ST52)とを切替えながらデータ通信を行う場合について説明したが、図6に示したデータ通信処理(ST78〜ST87)と、図4に示したデータ通信処理(ST38〜ST52)とを切替えながらデータ通信処理を行なってもよい。
また、図3に示したデータ通信処理と、図4に示したデータ通信処理とを切替える場合について説明したが、通信処理部3Mは、データs1,s2の受信状態に基づいて、実施の形態1で説明したリトライ回数を設定してもよい。この場合、データs1,s2を正常に受信できていれば、リトライ回数を0回に設定してリトライ処理を行なわない。通信処理部3Mは、スレーブ局SL1,SL2から受信したデータs1,s2のエラー部分が所定数よりも少ない場合に少数回(例えば1回)のリトライ回数を設定し、スレーブ局SL1,SL2から受信したデータs1,s2のエラー部分が所定数よりも多い場合に多数回(例えば3回)のリトライ回数を設定する。また通信処理部3Mは、データs1,s2の受信状態に基づいて、実施の形態2で説明したデータmの送信回数を設定してもよい。
また、本実施の形態では、マスタ局Mからスレーブ局SL1,SL2にデータ送信し、データs1,s2を受信した後に、受信状態の確認や次処理判定を行なう場合について説明したが、リトライ処理の後に受信状態の確認や次処理判定を行なってもよい。
このように、実施の形態3によれば、データs1,s2の受信状態に応じて、データ通信処理の種類を切替えるので、データs1,s2の受信状態に応じた適切なデータ通信処理を行なうことが可能となる。したがって、効率良くデータ通信を行うことが可能となる。
実施の形態4.
つぎに、図9〜図12を用いてこの発明の実施の形態4について説明する。実施の形態4では、マスタ局Mがデータs1,s2を受信した際に、マスタ局Mがスレーブ局にデータ送信させる回数(データ送信の繰り返し回数)を指示する。このとき、マスタ局Mは、データ通信システム100内の状態(データs1やデータs2の受信状態)に応じて、スレーブ局毎にデータ送信させる回数を決定する。
図9は、実施の形態4に係るマスタ局の通信処理部の構成を示す図である。同図に示すように、通信処理部3Mは、送信バッファ31、受信バッファ32に加えて送信回数設定部37を有している。
送信回数設定部37は、データs1,s2の受信状態に基づいて、各スレーブ局SL1,SL2にデータ送信させる回数を設定する。通信処理部3Mは、送信回数設定部37が設定した各スレーブ局SL1,SL2の送信回数(データ送信回数)の情報を、TF内に入れてスレーブ局SL1,SL2に送信する。
図10は、実施の形態4に係るスレーブ局の構成を示す図である。なお、スレーブ局SL1,SL2は同様の構成を有しているので、ここではスレーブ局SL1の構成について説明する。図10に示すように、スレーブ局SL1は、データ入出力部7、通信処理部70Sを有している。
通信処理部70Sは、マスタ局Mとの間のデータ送受信処理を行なう。通信処理部70Sは、送信バッファ71、受信バッファ72、データ送信回数制御部73を備えている。通信処理部70Sは、データ入出力部7からのデータを送信バッファ71に格納し、送信バッファ71を介してマスタ局Mに送信する。また、通信処理部70Sは、マスタ局Mからのデータを受信バッファ72に格納し、受信バッファ72を介してデータ入出力部7側へ送信する。
データ送信回数制御部73は、受信したTFに基づいて、マスタ局Mへのデータ送信回数を制御する。例えば、TF内でマスタ局Mへのデータ送信回数が2回に設定されている場合、データ送信回数制御部73は、マスタ局Mへのデータ送信を2回繰り返す。
データ入出力部7は、IO機器やデジタル/アナログ変換装置などの周辺機器(図示せず)と接続されており、これらの周辺機器にマスタ局Mからの動作指示などを送る。また、データ入出力部7へは周辺機器からのデータが送られる。周辺機器からデータ入出力部7へ送られてくるデータは、通信処理部70Sを介してマスタ局Mへ送られる。
図11は、実施の形態4に係るデータ通信システムの処理手順を示すシーケンス図である。実施の形態4のデータ通信システム100は、ST141〜ST147の処理として、図3に示したST1〜ST7と同様の処理を行なう。
スレーブ局SL2が通信処理部3MへTF(1回目)を送った後(ST147)、通信処理部3Mは、データs1やデータs2の受信状態を確認する(ST148)。そして、通信処理部3Mは、スレーブ局SL1,SL2から受信したデータs1,s2が正常に受信されたデータであるか否かを判断する。
通信処理部3Mは、スレーブ局SL1,SL2から受信したデータs1,s2が正常に受信されたデータである場合、マスタ局Mでのデータの受信処理を行なう。一方、通信処理部3Mは、スレーブ局SL1,SL2から受信したデータs1,s2が正常に受信されたデータでない場合、送信回数設定部37が、データs1,s2が正常に受信されたデータであるか否かの判断結果や、受信したデータs1,s2の状態(エラー量)に基づいて、各スレーブ局SL1,SL2にデータ送信させる回数(繰り返し回数)を設定する(ST149)。
具体的には、送信回数設定部37は、スレーブ局SL1,SL2からデータs1,s2を受信できた場合に、データを受信できたスレーブ局に少数回(例えば0回や1回)のデータ送信回数を設定する。また、送信回数設定部37は、スレーブ局SL1,SL2から受信したデータs1,s2のエラー部分が所定量よりも少ない場合に、このスレーブ局に少数回(例えば2回)のデータ送信回数を設定する。また、送信回数設定部37は、スレーブ局SL1,SL2から受信したデータs1,s2のエラー部分が所定量よりも多い場合に、このスレーブ局に多数回(例えば3回)のデータ送信回数を設定する。また、送信回数設定部37は、スレーブ局SL1,SL2からデータs1,s2を受信できなかった場合に、データを受信できなかったスレーブ局に多数回(例えば4回)のデータ送信回数を設定する。本実施の形態では、送信回数設定部37が、スレーブ局SL1にデータ送信させる回数を2回に設定し、スレーブ局SL2にデータ送信させる回数を1回に設定する場合について説明する。
通信処理部3Mは、送信回数設定部37が設定したスレーブ局毎の送信回数の情報(スレーブ局SL1は2回、スレーブ局SL2は1回)を、次に送るTF内に入れる。そして、通信処理部3Mは、このTFをスレーブ局SL1に送信する(ST150)。スレーブ局SL1の通信処理部70Sはマスタ局MからのTFを受信する。スレーブ局SL1のデータ送信回数制御部73は、マスタ局Mへのデータ送信処理回数をマスタ局MからのTFに基づいて設定する。ここでは、TF内でスレーブ局SL1が2回のデータ送信を行うよう設定されているので、データ送信回数制御部73は、データ送信回数を2回に設定する。そして、スレーブ局SL1は、マスタ局Mへのデータ送信処理(1回目)を行なう(ST151)。スレーブ局SL1からのデータは、データs1として通信処理部3Mに送られる(ST152)。さらに、TFではスレーブ局SL1からデータ送信する回数が2回に設定されているので、通信処理部3Mは、マスタ局Mへのデータ送信処理(2回目)を行なう(ST153)。スレーブ局SL1からのデータは、データs1として通信処理部3Mに送られる(ST154)。スレーブ局SL1は、マスタ局Mへのデータ送信処理(2回目)を完了すると、スレーブ局SL2へTFを送る(ST155)。このTFには、マスタ局Mの送信回数設定部37が設定したスレーブ局毎の送信回数の情報が入れられている。
スレーブ局SL2の通信処理部70Sはスレーブ局SL1からのTFを受信する。スレーブ局SL2のデータ送信回数制御部73は、マスタ局Mへのデータ送信処理回数をTFに基づいて設定する。ここでは、TF内でスレーブ局SL2が1回のデータ送信を行うよう設定されているので、データ送信回数制御部73は、データ送信回数を1回に設定する。そして、スレーブ局SL2は、マスタ局Mへのデータ送信処理を行なう(ST156)。スレーブ局SL2からのデータは、データs2として通信処理部3Mに送られる(ST157)。TFではスレーブ局SL2からデータ送信する回数が1回に設定されているので、通信処理部70Sは、マスタ局Mへのデータ送信処理(1回目)が完了すると、マスタ局MへTFを送る(ST158)。
通信処理部3Mは、スレーブ局SL2からTFを受信すると、データの受信処理を行なう(ST159)。このとき、通信処理部3Mは、スレーブ局SL1,SL2から受信したデータs1,s2が正常に受信されたデータである場合にのみ、マスタ局Mでのデータの受信処理を行なってもよい。この場合、通信処理部3Mが、スレーブ局SL1,SL2から受信したデータs1,s2が正常に受信されたデータでなければ、データ通信システム100では再度ST149〜ST158の処理が行なわれる。
通信処理部3Mは、各スレーブ局SL1,SL2からのデータs1,s2をまとめてデータ処理部2にDMA転送する(ST160、ST161)。この後、通信処理部3Mは、データ処理部2にデータの読み出し要求を行ない、実施の形態1の図3で説明したST18〜ST25の処理を行なう。そして、通信処理部3Mがスレーブ局SL2からのTFを受信すると、データ通信システム100では、マスタ局Mからスレーブ局SL1,SL2へデータ送信し、その後ST141〜ST161の処理と図3に示したST18〜ST25の処理が繰り返される。
なお、本実施の形態では、送信回数設定部37が各スレーブ局SL1,SL2にデータ送信させる回数を設定する場合について説明したが、各スレーブ局SL1,SL2にデータ送信させる回数は、予めユーザ設定してもよい。この場合、図9に示した通信処理部3Mは、図5に示した指示入力部33の機能を有する構成とする。
また、本実施の形態では、送信回数設定部37がデータs1,s2を受信した際のデータs1,s2の受信状態に基づいて、各スレーブ局SL1,SL2にデータ送信させる回数を設定する場合について説明したが、過去に受信したデータs1,s2の受信状態(受信状態の履歴を用いて算出された統計情報)に基づいて、各スレーブ局SL1,SL2にデータ送信させる回数を設定してもよい。
データ通信システム100では、例えば図12に示すようにスイッチングハブ20を介して各局間のデータ通信が行なわれる。図12は、スイッチングハブを介したデータ通信を説明するための図である。この場合において、所定の伝送路のみでノイズが発生しやすい場合がある。したがって、送信回数設定部37は、受信状態の統計情報に基づいて、各スレーブ局SL1,SL2にデータ送信させる回数を設定すれば、ノイズの発生率に応じた送信回数をスレーブ局毎に設定することができる。
送信回数設定部37は、例えばFCSを用いて、スレーブ局SL1,SL2から受信したデータs1,s2が正常に受信されたデータであるか否かを判断する。送信回数設定部37は、この判断結果を蓄積しておき、蓄積しておいた判断結果に基づいて、データの受信状態(正常な受信か否か)に関する統計情報(ノイズの発生率など)を作成する。そして、送信回数設定部37は、作成した統計情報に基づいて、各スレーブ局SL1,SL2にデータ送信させる回数を設定する。この場合、送信回数設定部37は、スレーブ局SL2からTFを受信する前に予め受信状態の統計情報に基づいて各スレーブ局SL1,SL2にデータ送信させる回数を設定しておいてもよい。
また、送信回数設定部37は、マスタ局Mがデータ通信を行うスレーブ局の数、各スレーブ局との間のデータ通信に要する時間、マスタ局M内で行なうデータ処理に要する時間などに基づいて、各スレーブ局SL1,SL2にデータ送信させる回数を設定してもよい。
また、本実施の形態では、マスタ局Mからスレーブ局SL1,SL2にデータ送信し、データs1,s2を受信した後に、受信状態の確認や送信回数の設定を行なう場合について説明したが、リトライ処理の後に受信状態の確認や送信回数の設定を行なってもよい。
このように、実施の形態4によれば、データs1,s2の受信状態に基づいて、各スレーブ局SL1,SL2にデータ送信させる回数を設定するので、データs1,s2の受信状態に応じた適切なリカバリ処理を行なうことが可能となる。したがって、効率良くデータ通信を行うことが可能となる。
実施の形態5.
つぎに、図13〜図20を用いてこの発明の実施の形態5について説明する。実施の形態5では、サイクリック通信を行う際に、サイクリックデータを分割するとともに、分割したサイクリックデータにシーケンシャルNo(シーケンシャルナンバ)、エンドフラグ(最後情報)、データの格納範囲情報を付与してデータ管理する。そして、他局から送られてきたサイクリックデータを自局のメモリに更新する際には、シーケンシャルNoとエンドフラグに基づいて、全てのサイクリックデータを受信できたか否かを判断し、全てのサイクリックデータを受信できた場合に自局のメモリに展開する。データの格納範囲情報は、分割されたサイクリックデータのデータ長とメモリへ格納する際のアドレスであり、各局はデータの格納範囲情報に従ったメモリ内の位置にサイクリックデータを格納する。
FA分野などで用いられるサイクリック通信は、伝送路に接続された複数の局が互いに他局のデータを共有する通信方法である。このサイクリック通信では、各局は、他の局と共有して使用する共有メモリ(全局で共通のデータを格納するメモリ)を局毎に有している。各局の共有メモリは、送信エリア、受信エリアによって構成しておき、各局は、自局が取得したデータを送信エリアに格納するとともに、他局からのデータは受信エリアに格納しておく。そして、各局は、自局の送信エリアのデータを、所定の周期で他局の共有メモリの受信エリアに送信する。これにより、局間で共通のデータを共有すること(サイクリックデータの局単位保障)が可能となる。
図13は、実施の形態5に係るデータ通信システムのメモリ構成を示す図である。図13では、マスタ局Mが備える共有メモリを共有メモリ80Xで示し、スレーブ局SL1〜SL3が備える共有メモリをそれぞれ共有メモリ81X〜83Xで示している。なお、図13では、データ通信システム100のスレーブ局がスレーブ局SL1〜SL3の3つである場合を示している。
マスタ局Mの共有メモリ80Xは、自局(マスタ局M)のデータをマスタ局データとして格納する送信エリア80a、スレーブ局SL1から送られてくるデータをスレーブ局データ(1)として格納する受信エリア80b、スレーブ局SL2から送られてくるデータをスレーブ局データ(2)として格納する受信エリア80c、スレーブ局SL3から送られてくるデータをスレーブ局データ(3)として格納する受信エリア80dを有している。
また、スレーブ局SL1の共有メモリ81Xは、マスタ局Mから送られてくるデータをマスタ局データとして格納する受信エリア81a、自局(スレーブ局SL1)のデータをスレーブ局データ(1)として格納する送信エリア81b、スレーブ局SL2から送られてくるデータをスレーブ局データ(2)として格納する受信エリア81c、スレーブ局SL3から送られてくるデータをスレーブ局データ(3)として格納する受信エリア81dを有している。
また、スレーブ局SL2の共有メモリ82Xは、マスタ局Mから送られてくるデータをマスタ局データとして格納する受信エリア82a、自局(スレーブ局SL2)のデータをスレーブ局データ(2)として格納する送信エリア82c、スレーブ局SL1から送られてくるデータをスレーブ局データ(1)として格納する受信エリア82b、スレーブ局SL3から送られてくるデータをスレーブ局データ(3)として格納する受信エリア82dを有している。
また、スレーブ局SL3の共有メモリ83Xは、マスタ局Mから送られてくるデータをマスタ局データとして格納する受信エリア83a、自局(スレーブ局SL3)のデータをスレーブ局データ(3)として格納する送信エリア83d、スレーブ局SL1から送られてくるデータをスレーブ局データ(1)として格納する受信エリア83b、スレーブ局SL2から送られてくるデータをスレーブ局データ(2)として格納する受信エリア83cを有している。
サイクリック通信では、1回の送信権を獲得(TF受信)した際に、自局の送信エリアのデータ(サイクリックデータ)をフレーム分割し、分割後のフレーム(以下、分割後フレームという場合がある)を他局に送信する。このとき、他局では、送信権を獲得した局からの分割後フレームを全て受信して最新のサイクリックデータに更新する必要がある。換言すると、送信権を獲得した時点で、全てのサイクリックデータが更新されなければならず、一部のみのサイクリックデータの更新は許されない。従来、送信権を獲得した局から一部のサイクリックデータしか受信できなかった場合、受信できなかったサイクリックデータを再送信(連続送信)する必要があった。
しかしながら、各局にサイクリックデータの再送信機能を実装させるとデータの受信処理が複雑になり、データ共有のリアルタイム性に悪影響を及ぼす場合がある。そこで、本実施の形態のデータ通信システム100では、分割後フレームにシーケンシャルNoやエンドフラグを付与して送信する。そして、サイクリックデータを受信する際にはシーケンシャルNoとエンドフラグに基づいて、全ての分割後フレームを受信できたかを判断し、全ての分割後フレームを受信できた場合にサイクリックデータを更新する。
つぎに、本実施の形態に係るマスタ局Mとスレーブ局SL1〜SL3の構成について説明する。図14は、実施の形態5に係るスレーブ局の通信処理部の構成を示す図である。なお、スレーブ局SL1〜SL3は、同様の構成を有しているので、ここではスレーブ局SL1の通信処理部70Sの構成について説明する。実施の形態5に係るスレーブ局SL1の通信処理部70Sは、送信バッファ71、受信バッファ72、分割処理部61、組立処理部62を有している。分割処理部61は、サイクリックデータから分割後フレームへの分割などを行ない、組立処理部62は、分割後フレームを全て受信できたか否かの判定などを行う。
分割処理部61は、データ分割部75、シーケンシャルNo付与部76、エンドフラグ設定部77を有している。データ分割部75は、共有メモリ81Xの送信エリア81bに格納しているサイクリックデータを他の局に送信する際に、サイクリックデータをフレーム分割する。データ分割部75は、スレーブ局SL1がTFを受信してデータの送信権を得た際に、サイクリックデータを分割する。
シーケンシャルNo付与部76は、データ分割部75によって分割されたサイクリックデータ(分割後フレーム)のそれぞれにシーケンシャルNoを付与する。エンドフラグ設定部77は、データ分割部75によって分割されたサイクリックデータのうち最後の分割後フレームにエンドフラグを付与する。
図15は、実施の形態5に係るマスタ局の通信処理部の構成を示す図である。実施の形態5に係るマスタ局Mの通信処理部3Mは、他局(スレーブ局SL1〜SL3)から送られてくるサイクリックデータに付与されているシーケンシャルNoとエンドフラグに基づいて、全てのサイクリックデータを受信できたか否かを判断し、全てのサイクリックデータを受信できた場合に自局の共有メモリ80Xにサイクリックデータを展開する。
通信処理部3Mは、送信バッファ31、受信バッファ32、分割処理部61、組立処理部62を有している。組立処理部62は、更新指示部51、レジスタリセット部53を備えている。更新指示部51は、分割後フレームを全て受信したか否かを判定する判定回路52を有している。更新指示部51は、判定回路52が分割後フレームを全て受信したと判定した場合に、共有メモリ80Xに分割後フレームを展開する。判定回路52は、各シーケンシャルNoに対応する分割後フレームを受信したか否かの情報を入力するレジスタ(後述のシーケンシャルNoレジスタ91)、分割後フレームにエンドフラグが付与されていたか否かの情報を入力するレジスタ(後述のエンドフラグレジスタ92)を備えている。判定回路52は、シーケンシャルNoレジスタ91やエンドフラグレジスタ92に入力される情報に基づいて、分割後フレームを全て受信したか否かを判定する。
レジスタリセット部53は、サイクリックデータ内に付与されているSA(ソースアドレス)に基づいて、何れの局からサイクリックデータを受信したかを判定する。SAは、サイクリックデータの送信元を示すフレーム送信元情報である。レジスタリセット部53は、例えば前回とは異なる局から分割後フレームを受信した場合に、前回の局から受信したシーケンシャルNoとエンドフラグを廃棄し判定回路52をリセットする。
つぎに、実施の形態5に係るデータ通信システム100の処理手順について説明する。図16は、実施の形態5に係るデータ通信システムの処理手順を示すシーケンス図である。なお、ここでは、データ通信システム100内のスレーブ局がスレーブ局SL1,SL2の2つである場合について説明する。また、マスタ局MからのTFがまずスレーブ局SL1に送られ、その後スレーブ局SL1からスレーブ局SL2へTFが送られる場合について説明する。
データ通信システム100では、マスタ局Mの通信処理部3Mがスレーブ局SL1へTFを送信する(ST191)。スレーブ局SL1は、TFを受信すると、マスタ局Mへのデータ送信処理を行なう(ST192)。このとき、スレーブ局SL1の通信処理部70Sは、共有メモリ81X内の送信エリア81bに格納してある自局のサイクリックデータを分割してマスタ局Mに送信する。また、スレーブ局SL1からマスタ局Mへのデータ送信は、複数回(ここでは2サイクル)繰り返される。このように、本実施の形態のデータ通信システム100では、サイクリックデータの送信を行う際に、データ送信を複数回繰り返すとともに、各データ送信の際にはサイクリックデータを分割して送信する。
図17は、サイクリックデータの分割処理を説明するための図である。スレーブ局SL1のデータ分割部75は、共有メモリ81Xの送信エリア81bに格納されているサイクリックデータ(データs1)を所定サイズのデータに分割する。ここでは、データ分割部75がサイクリックデータを3つのデータ(データs1−1,s1−2,s1−3)に分割する場合について説明する。データ分割部75が、サイクリックデータを3つのデータに分割すると、シーケンシャルNo付与部76は、分割後フレームのそれぞれにシーケンシャルNoを付与する。シーケンシャルNo付与部76は、例えば、1つ目の分割後フレーム(データs1−1)にシーケンシャルNo「0」を付与し、2つ目の分割後フレーム(データs1−2)にシーケンシャルNo「1」を付与し、3つ目の分割後フレーム(データs1−3)にシーケンシャルNo「2」を付与する。また、エンドフラグ設定部77は、分割後フレームのうち、最後の分割後フレームにエンドフラグを付与する。ここでのエンドフラグ設定部77は、サイクリックデータが3分割されているので、3つ目の分割後フレームにエンドフラグ「1」を付与する。
スレーブ局SL1の通信処理部70Sは、シーケンシャルNoやエンドフラグの付与された分割後フレームを、マスタ局Mに送信する。通信処理部70Sは、まず1つ目の分割後フレームをデータs1−1としてマスタ局Mに送信する(ST193)。さらに、通信処理部70Sは、2つ目の分割後フレームをデータs1−2としてマスタ局Mに送信し(ST194)、3つ目の分割後フレームをデータs1−3としてマスタ局Mに送信する(ST195)。
この後、通信処理部70Sは、ST192と同様のデータ送信を繰り返す(ST196)。具体的には、通信処理部70Sは、1つ目の分割後フレーム(データs1−1)、2つ目の分割後フレーム(データs1−2)、3つ目の分割後フレーム(データs1−3)の順番で各分割後フレームをマスタ局Mに送信する(ST197、ST198、ST199)。
マスタ局Mの通信処理部3Mは、スレーブ局SL1から分割後フレームを受信すると、分割後フレームに付与されているシーケンシャルNoやエンドフラグを抽出する。そして、判定回路52のシーケンシャルNoレジスタ91、エンドフラグレジスタ92に、シーケンシャルNoやエンドフラグに応じた情報を入力する。
図18および図19は、判定回路の構成例と判定回路に入力される情報を示す図である。図18では、全ての分割後フレームを受信した場合の判定回路52を示し、図19では、一部の分割後フレームを受信できていない場合の判定回路52を示している。
判定回路52は、シーケンシャルNoレジスタ91、エンドフラグレジスタ92を備えている。判定回路52は、シーケンシャルNoレジスタ91、エンドフラグレジスタ92への情報を入力とし、スレーブ局SL1から全ての分割後フレームを受信したか否かの判定結果を出力する。
シーケンシャルNoレジスタ91は、例えば512個のレジスタを有しており、各レジスタがそれぞれ分割後フレームに対応している。また、エンドフラグレジスタ92は、例えば512個のレジスタを有しており、各レジスタがそれぞれ分割後フレームに対応している。例えば、シーケンシャルNoレジスタ91の1つ目のレジスタ(No0 recv_reg)は、シーケンシャルNo「0」の分割後フレームに対応し、2つ目のレジスタ(No1 recv_reg)は、シーケンシャルNo「1」の分割後フレームに対応している。また、エンドフラグレジスタ92の1つ目のレジスタ(No0 E_REG)は、シーケンシャルNo「0」の分割後フレームに対応し、2つ目のレジスタ(No1 E_REG)は、シーケンシャルNo「1」の分割後フレームに対応している。
マスタ局Mが、スレーブ局SL1から分割後フレームを受信すると、更新指示部51は、分割後フレームに付与されているシーケンシャルNoとエンドフラグを全て抽出する。ここでは、更新指示部51がシーケンシャルNo「1」〜「3」と、シーケンシャルNo「3」のエンドフラグを抽出する。
シーケンシャルNoレジスタ91やエンドフラグレジスタ92の初期値は、「0」である。更新指示部51は、シーケンシャルNoレジスタ91のうち、抽出したシーケンシャルNoに対応するレジスタに「1」を入力する。ここでは、シーケンシャルNo「1」〜「3」に対応するレジスタに「1」が入力される。具体的には、「No0 recv_reg」のレジスタ、「No1 recv_reg」のレジスタ、「No2 recv_reg」の各レジスタに「1」が入力される。また、シーケンシャルNo「3」のエンドフラグを抽出したので、エンドフラグレジスタ92のうち、シーケンシャルNo「3」の分割後フレームに対応するエンドフラグに「1」が入力される。
判定回路52は、シーケンシャルNoレジスタ91のうち、全ての分割後フレームに対応するレジスタに「1」が入力され、かつエンドフラグレジスタ92の何れかのレジスタに「1」が入力された場合に、全ての分割後フレームを受信したことを示す「1」を出力するよう構成されている。
図18に示した判定回路52では、全ての分割後フレームに対応するレジスタに「1」が入力されている。また、図18に示した判定回路52では、シーケンシャルNo「3」の分割後フレームに対応するエンドフラグに「1」が入力されている。したがって、図18に示した判定回路52からは、全ての分割後フレームを受信したことを示す「1」が出力される。
図19に示した判定回路52では、一部の分割後フレームに対応するレジスタに「1」が入力されていない。すなわち、「No1 recv_reg」のレジスタに「0」が入力されたままである。したがって、図19に示した判定回路52からは、全ての分割後フレームを受信していないことを示す「0」が出力される。
分割後フレームのうち、正しく受信できた分割後フレームは、通信処理部3Mの受信バッファ32に格納しておく。スレーブ局SL1は、サイクリックデータの送信を2回繰り返している。このため、マスタ局Mには、サイクリックデータが2回送られてくる。2回目のサイクリックデータが送られてきた場合も、更新指示部51は、分割後フレームに付与されているシーケンシャルNoとエンドフラグを全て抽出する。そして、更新指示部51は、抽出したシーケンシャルNoに対応するレジスタに「1」を入力する。また、抽出したエンドフラグに対応するレジスタに「1」を入力する。このとき、既に「1」が入力されているレジスタへの「1」の再入力は省略してもよい。
これにより、マスタ局Mでは、2回送信された分割後フレームのうち少なくとも1回の分割後フレームを受信していれば、分割後フレームを受信したと判断する。そして、各分割後フレームを少なくとも1回ずつ受信した場合に、全ての分割後フレームを受信したと判断され、判定回路52から「1」が出力される。更新指示部51は、判定回路52が「1」を出力すると、スレーブ局SL1から全ての分割後フレームを受信したと判断する。
スレーブ局SL1は、マスタ局Mへのデータ送信処理を完了すると、スレーブ局SL2へTFを送る(ST200)。これにより、スレーブ局SL2の通信処理部70Sは、サイクリックデータを、データs2としてマスタ局Mに送信する(ST201,ST202)。このとき、スレーブ局SL2は、スレーブ局SL1と同様に、サイクリックデータを複数回繰り返し送信するとともに、サイクリックデータを分割後フレームに分割してもよい。この後、スレーブ局SL2は、マスタ局MへTFを送る(ST203)。
マスタ局Mは、スレーブ局SL2からサイクリックデータを受信する。このとき、スレーブ局SL2からのサイクリックデータが分割後フレームであれば、スレーブ局SL1からの分割後フレームと同様の処理によってサイクリックデータを受信する。具体的には、マスタ局Mは、複数回繰り返し送信された各分割後フレームを少なくとも1回ずつ受信した場合に、全ての分割後フレームを受信したと判断する。このとき、判定回路52では、「1」が出力される。更新指示部51は、判定回路52が「1」を出力すると、スレーブ局SL2から全ての分割後フレームを受信したと判断する。
スレーブ局SL2からのサイクリックデータが分割後フレームでなければ、サイクリックデータにシーケンシャルNoが含まれていない。この場合、更新指示部51は、判定回路52を用いることなく、スレーブ局SL2から全ての分割後フレームを受信したと判断する。
更新指示部51は、全てのスレーブ局SL1,SL2から受信したサイクリックデータに対して判定回路52が「1」を出力すると、全てのサイクリックデータを受信したか否かを示す受信許可フラグに「1」を入力する。受信許可フラグは、マスタ局Mが有するフラグであり、データ処理部2によるデータ受信処理を許可するか否かを示すフラグである。受信許可フラグが「0」の場合にデータ処理部2によるデータ受信処理は禁止され、受信許可フラグが「1」の場合にデータ処理部2によるデータ受信処理は許可される。
データ処理部2は、受信許可フラグの値をポーリングによって監視している。データ処理部2は、受信許可フラグが「1」の場合にデータ受信処理を行う(ST204)。これにより、受信バッファ32に格納されている分割後フレームがデータ処理部2へ送られる。具体的には、通信処理部3Mは、各スレーブ局SL1,SL2からのデータs1,s2をまとめてデータ処理部2にDMA転送する(ST205、ST206)。データ処理部2は、データ受信処理を完了すると、通信処理部3Mの受信許可フラグに「0」を入力させる。これにより、データ処理部2によるデータ受信処理は禁止され、通信処理部3Mは次のスレーブ局SL2からの分割後フレームを待つことになる。
なお、データ処理部2は、通信処理部3Mがスレーブ局SL1からのサイクリックデータを全て受信した時点でデータ受信処理を行ってもよい。この場合、データ処理部2は、通信処理部3Mがスレーブ局SL2からのサイクリックデータを全て受信した時点でデータ受信処理を行なう。
また、図16ではスレーブ局SL1がマスタ局Mにサイクリックデータを送信する場合について説明したが、スレーブ局SL1はスレーブ局SL2へもサイクリックデータを送信する。さらに、スレーブ局SL2は、マスタ局Mとスレーブ局SL1にサイクリックデータを送信し、マスタ局Mはスレーブ局SL1,SL2にサイクリックデータを送信する。
つぎに、判定回路52のリセット処理(シーケンシャルNoレジスタ91やエンドフラグレジスタ92のリセット)について説明する。図20は、判定回路のリセット処理を説明するための図である。マスタ局Mの通信処理部3Mは、レジスタリセット部53や判定回路52などに加えてレジスタリセット判定部54を備えている。なお、図15に示した通信処理部3Mでは、レジスタリセット判定部54の図示を省略している。
レジスタリセット判定部54は、シーケンシャルNoレジスタ91やエンドフラグレジスタ92をリセットさせるか否かを判定するとともに、判定結果をレジスタリセット部53に送る。レジスタリセット判定部54は、SA判定部56とTF判定部57を備えている。
SA判定部56は、受信したサイクリックデータ内のSAに基づいて、何れの局からサイクリックデータを受信しているかを判断する。そして、SA判定部56は、前回とは異なる局から分割後フレームを受信したと判断した場合に、レジスタリセット部53にレジスタのリセット指示を送る。
TF判定部57は、受信したTFの宛先(トークン宛先情報)に基づいて、何れの局へのTFであるかを判断する。そして、TF判定部57は、自局(マスタ局M)宛てのTFを受信したと判断した場合に、レジスタリセット部53にレジスタのリセット指示を送る。
レジスタリセット部53は、SA判定部56やTF判定部57からレジスタのリセット指示が送られてきた場合に、シーケンシャルNoとエンドフラグを廃棄し判定回路52をリセットする。具体的には、シーケンシャルNoレジスタ91とエンドフラグレジスタ92の全てのレジスタに「0」を入力する。
マスタ局Mとサイクリックデータを共有する局が2台以上のスレーブ局である場合、レジスタリセット判定部54は、SA判定部56を用いてレジスタリセット部53にレジスタのリセット指示を送る。
また、マスタ局Mとサイクリックデータを共有する局が1台のスレーブ局だけである場合、レジスタリセット判定部54は、TF判定部57を用いてレジスタリセット部53にレジスタのリセット指示を送る。
なお、各局間でのTFの送受信をブロードキャストによって行う場合、マスタ局Mとサイクリックデータを共有する局が2台以上のスレーブ局である場合であっても、レジスタリセット判定部54は、TF判定部57を用いてレジスタリセット部53にレジスタのリセット指示を送ることができる。この場合、TF判定部57は、TF(任意の宛先を有したTF)を受信した場合に、レジスタリセット部53にレジスタのリセット指示を送る。また、各局間でTFを複数回繰り返して送受信する場合には、TF判定部57は、前回とは異なる宛先のTFまたは前回とは異なる送信元(トークン送信元情報)のTFを受信した場合に、レジスタリセット部53にレジスタのリセット指示を送る。換言すると、TF判定部57は、他局を宛先としたTFを受信した場合に、レジスタリセット部53にレジスタのリセット指示を送る。
なお、本実施の形態では、レジスタリセット判定部54がSA判定部56とTF判定部57の両方を備えている場合について説明したが、レジスタリセット判定部54の構成を、SA判定部56とTF判定部57の何れか一方を備える構成としてもよい。
このように、実施の形態5によれば、データ通信システム100内で共有するサイクリックデータを他局に送信する際に、サイクリックデータを分割するとともに分割後フレームにシーケンシャルNoとエンドフラグを付与しているので、サイクリックデータを受信した局はシーケンシャルNoとエンドフラグに基づいて全てのサイクリックデータを受信できたか否かを判断できる。これにより、複数回に渡ってサイクリックデータの送受信を繰り返す場合であっても、全てのサイクリックデータを受信できたか否かを容易に判断できる。複数回に渡ってサイクリックデータの送受信を繰り返すので、サイクリックデータの送信リトライを減らすことが可能となる。また、全てのサイクリックデータを受信できたか否かを容易に判断できるので、データ共有のリアルタイム性を容易に維持することが可能となる。
また、TFやサイクリックデータ内に付与されているSAに基づいて判定回路52をリセットするので、各局から全てのサイクリックデータを受信できたか否かを局毎に容易に判断することが可能となる。
実施の形態6.
つぎに、図21〜図25を用いてこの発明の実施の形態6について説明する。従来、データ通信システム内の各局は、自局のデータを送信した後、TFを1回発行することによって次の送信局を指定していた。すなわち、従来のトークン方式では、TFの受信によって送信権を得た局のみがデータ送信を行う規則であったので、TFの多重発行は許されていなかった。これは、他局からのフレーム受信中に自局のフレームを送信してしまうと、伝送路でフレームの輻輳が発生しデータロスする可能性があるからである。本実施の形態では、各局が自局のデータを送信した後、TFを複数回送信することによって次の送信局を指定する。換言すると、実施の形態6では、データ通信システム100内の局間でTFを送受信する際に、TFの送受信を複数回に渡って繰り返す。
図21は、実施の形態6に係るマスタ局の通信処理部の構成を示す図である。同図に示すように、実施の形態6に係るマスタ局Mの通信処理部3Mは、送信バッファ31、受信バッファ32に加えてトークン設定部41を有している。
本実施の形態のトークン設定部41は、実施の形態4で説明した送信回数設定部37と同様の処理によって、TFの送信回数を設定する。トークン設定部41は、論理リングを構成する際にスレーブ局SL1,SL2にトークン送信回数を指示するとともに、マスタ局Mからスレーブ局SL1へ送信するTFの繰り返し送信回数(TFの連続送信回数)を設定する。
図22は、実施の形態6に係るスレーブ局の通信処理部の構成を示す図である。なお、スレーブ局SL1,SL2は同様の構成を有しているので、ここではスレーブ局SL1の通信処理部70Sの構成について説明する。図22に示すように、実施の形態6に係るスレーブ局SL1の通信処理部70Sは、トークン送信制御部74、送信バッファ71、受信バッファ72を有している。
トークン送信制御部74は、マスタ局M(トークン設定部41)からの指示に基づいて、TFを送信する回数を制御する。具体的には、スレーブ局SL1のトークン送信制御部74は、スレーブ局SL2へ送信するTFの送信回数を制御し、スレーブ局SL2のトークン送信制御部74は、マスタ局Mへ送信するTFの送信回数を制御する。トークン送信制御部74は、マスタ局Mから1回目のTFを受信すると、このTFを受信してからの経過時間を測定するタイマ(図示せず)を備えている。トークン送信制御部74は、マスタ局Mから1つ目(1回目)のTFを受信してから、予め設定しておいた所定時間が経過した後に、データ送信を開始する。換言すると、トークン送信制御部74は、マスタ局Mから1つ目のTFを受信すると、予め設定しておいた所定時間が経過するまでデータ送信処理を待つ。トークン送信制御部74は、マスタ局Mから1つ目のTFを受信すると、TFを受信してからの時間を測定し、予め設定しておいた所定時間の経過後に、自局のデータをマスタ局Mに送信する。
図23は、実施の形態6に係るデータ通信システムの処理手順を示すシーケンス図である。本実施の形態のデータ通信システム100の処理手順の特徴の1つは、マスタ局Mからスレーブ局SL1へのTF送信や、スレーブ局SL1からスレーブ局SL2へのTF送信などを複数回繰り返すことである。以下では、マスタ局Mのトークン設定部41がスレーブ局SL1,SL2にトークン送信回数として3回を指示するとともに、マスタ局Mからスレーブ局SL1へ送信するTFのトークン送信回数を3回に設定する場合について説明する。
データ通信システム100では、論理リングを構成する際にマスタ局Mがスレーブ局SL1,SL2にトークン送信回数として3回を指示しておく。具体的には、マスタ局Mがスレーブ局SL1,SL2に送信するセットアップフレームにトークン送信回数(3回)を指定する情報を入れておく。これにより、スレーブ局SL1,SL2のトークン送信制御部74は、マスタ局Mからの指示に基づいて、TFの送信回数を3回に設定する。また、マスタ局Mのトークン設定部41は、スレーブ局SL1へのトークン送信回数を3回に設定しておく。
この後、マスタ局Mの通信処理部3Mがスレーブ局SL1へ1回目のTF(1)を送信する(ST171)。スレーブ局SL1は、マスタ局Mから1回目のTF(1)を受信すると、トークン送信制御部74がタイマをスタートさせるとともに、マスタ局Mへのデータ送信処理を待機させる(ST174)。マスタ局Mの通信処理部3Mは、1回目のTFを送信した後、所定の間隔をおいて、スレーブ局SL1へ2回目のTF(2)を送信する(ST172)。さらに、マスタ局Mの通信処理部3Mは、2回目のTF(2)を送信した後、所定の間隔をおいて、スレーブ局SL1へ3回目のTF(3)を送信する(ST173)。TFは、例えば、IEEE(Institute of Electrical and Electronics Engineers)802.3uに従ったタイミングで送信される。
スレーブ局SL1のトークン送信制御部74は、1回目のTF(1)を受信してから予め設定しておいた所定時間(待機時間)が経過すると、データ送信の待機を解除する。トークン送信制御部74は、最後のTF(3回目のTF)を受信した後に、データ送信の待機を解除するよう待機時間を設定しておく。これにより、スレーブ局SL1の通信処理部70Sは、3回目のTFを受信した後にマスタ局Mへデータ送信を行う(ST175)。スレーブ局SL1からのデータは、データs1として通信処理部3Mに送られる(ST176)。
スレーブ局SL1は、マスタ局Mへのデータ送信処理が完了すると、スレーブ局SL2へ1回目のTF(1)を送る(ST177)。スレーブ局SL2は、スレーブ局SL1から1回目のTFを受信すると、トークン送信制御部74がタイマをスタートさせるとともに、マスタ局Mへのデータ送信処理を待機させる。ここでは、スレーブ局SL1からスレーブ局SL2への1回目のTFが消失した場合について説明する。この場合、スレーブ局SL2は、スレーブ局SL1からの1回目のTF(1)を受信できない。スレーブ局SL1の通信処理部70Sは、1回目のTF(1)を送信した後、所定の間隔をおいて、スレーブ局SL2へ2回目のTF(2)を送信する(ST178)。これにより、スレーブ局SL2は、スレーブ局SL1から2回目のTFを受信する。このとき、スレーブ局SL2は、1回目のTFを受信していないので、スレーブ局SL1からの2回目のTFを1回目のTF受信であると認識する。そして、スレーブ局SL2のトークン送信制御部74は、タイマをスタートさせるとともに、マスタ局Mへのデータ送信処理を待機させる(ST179)。
スレーブ局SL1の通信処理部70Sは、2回目のTFを送信した後、所定の間隔をおいて、スレーブ局SL2へ3回目のTF(3)を送信する(ST181)。スレーブ局SL2のトークン送信制御部74は、1回目のTF(1)を受信してから予め設定しておいた所定時間が経過すると、データ送信の待機を解除する。これにより、スレーブ局SL2の通信処理部70Sは、マスタ局Mへデータ送信を行う(S180)。スレーブ局SL1からのデータは、データs1として通信処理部3Mに送られる(ST182)。スレーブ局SL2は、マスタ局Mへのデータ送信処理が完了すると、マスタ局Mへ1回目のTF(1)、2回目のTF(2)、3回目のTF(3)を送る(ST183、ST184、ST185)。
伝送路内のTFは、遅延する場合がある、このため、スレーブ局SL2では、マスタ局Mへのデータ送信を行なっている間に、スレーブ局SL1からのTFを受信する場合がある。例えば、マスタ局Mへのデータ送信(ST180)の際に、スレーブ局SL1からの3回目のTF(3)がスレーブ局SL2に届く場合がある。この場合、スレーブ局SL2のトークン送信制御部74は、データ送信中にTFを受信したことをマスタ局Mに通知する。換言すると、トークン送信制御部74は、自局がデータ送信しているタイミングで自局宛のTFを受信した場合に、データ送信中にTFを受信したことをマスタ局Mに通知する。
データ通信システム100では、伝送路上にイーサネット(登録商標)のようなスイッチングハブ20が存在している場合がある。このため、各局がTFを最小のフレームGAP(送信間間隔)で送信しても、スイッチングハブ20は必ずしもTFを受信した受信間隔でフレーム送信することを保障できない。そこで、本実施の形態では、スレーブ局SL1,SL2がデータ送信中にTFを受信すれば、データ送信中にTFを受信したことをマスタ局Mに通知している。これにより、マスタ局Mのトークン設定部41は、1回目のTFを受信してから自局のデータを送信するまでの待機時間をスレーブ局SL2に再設定する。具体的には、マスタ局Mのトークン設定部41は、1回目のTFを受信してから自局のデータを送信するまでの待機時間が現設定よりも長くなるよう待機時間をスレーブ局SL2に再設定する。
なお、本実施の形態では、マスタ局Mがスレーブ局SL2の待機時間を再設定する場合について説明したが、スレーブ局SL2が自ら待機時間を再設定してもよい。また、スレーブ局SL2のトークン送信制御部74は、受信したTFと受信できなかったTFに基づいて待機時間を変更してもよい。この場合、予め各TFに何回目のTFであるかを示す情報を付与(付加)しておく。例えば、TFを5回繰り返して送信する場合、1回目〜5回目の各TFにシーケンシャルNoを付与しておく。具体的には、1回目のTFにシーケンシャルNoとして「1」を付与し、2回目のTFにシーケンシャルNoとして「2」を付与し、3回目のTFにシーケンシャルNoとして「3」を付与しておく。さらに、4回目のTFにシーケンシャルNoとして「4」を付与し、5回目のTFにシーケンシャルNoとして「5」を付与しておく。
マスタ局Mから指定されている待機時間(指定待機時間)がtの場合、トークン送信制御部74は、式(1)によって新たな待機時間Tを算出する。ここでのXは、TFの送信繰り返し回数であり、Snは最初に受信したTFのシーケンシャルNoである。
T=t×(X−Sn)/(X−1)・・・(1)
したがって、最初に受信したTFのシーケンシャルNoが「1」である場合、トークン送信制御部74は、マスタ局Mから指定されている待機時間tだけデータの送信処理を待つ。また、最初に受信したTFのシーケンシャルNoが「2」である場合、トークン送信制御部74は、(3/4)tだけデータの送信処理を待ち、最初に受信したTFのシーケンシャルNoが「3」である場合、トークン送信制御部74は、(2/4)tだけデータの送信処理を待つ。また、最初に受信したTFのシーケンシャルNoが「4」である場合、トークン送信制御部74は、(1/4)tだけデータの送信処理を待ち、最初に受信したTFのシーケンシャルNoが「5」である場合、トークン送信制御部74は、待機時間0でデータの送信処理を行う。なお、この待機時間の再設定は、マスタ局Mからスレーブ局SL1,SL2に指示してもよい。
また、スレーブ局SL1は、スレーブ局SL2と同様の構成を有しているので、スレーブ局SL1のトークン送信制御部74も、スレーブ局SL2のトークン送信制御部74と同様に、自局がデータ送信しているタイミングで自局宛のTFを受信すると、データ送信中にTFを受信したことをマスタ局Mに通知する。
データ送信中にTFを受信したことのスレーブ局SL2からマスタ局Mへの通知は、スレーブ局SL2からマスタ局Mにデータ送信を行った後(ST181)であってTF(1)を送信する前(ST183の前)に行ってもよいし、スレーブ局SL2が、次にスレーブ局SL1からTFを受信した場合のデータ送信時に行ってもよい。
なお、本実施の形態では、スレーブ局SL1,SL2が、1回目のTFを受信した後に予め設定しておいた所定時間が経過してからデータ送信を開始する場合について説明したが、マスタ局Mもスレーブ局SL1,SL2と同様に、1回目のTFを受信した後に予め設定しておいた所定時間が経過してからデータ送信を開始してもよい。また、マスタ局Mがデータ送信している際に、マスタ局Mがスレーブ局SL1,SL2からTFを受信した場合には、マスタ局Mのトークン設定部41が、1回目のTFを受信してから自局のデータを送信するまでの待機時間を自局に再設定してもよい。
また、本実施の形態では、各局がTFを3回繰り返して送信する場合について説明したが、各局がTFを繰り返して送信する回数は2回であってもよいし4回以上であってもよい。また、TFの繰り返し送信回数は、局毎に異なる回数であってもよい。
また、TFの繰り返し送信回数は、TFの消失回数などに基づいてマスタ局Mが変更してもよい。図24は、TFの繰り返し送信回数を変更する場合のマスタ局の通信処理部の構成を示す図である。TFの繰り返し送信回数を変更する場合のマスタ局Mの通信処理部3Mは、送信バッファ31、受信バッファ32、トークン設定部41に加えて、再トークン発行部42、発行回数判定部43を備えている。
再トークン発行部42は、TFが消失した場合にTFを再発行する機能(再トークン発行機能)を有している。再トークン発行部42は、データ通信システム100内で所定時間の間TFが発行されない場合に、TFが消失したと判断してTFを再発行する。
発行回数判定部43は、監視タイマ44、カウンタ45、基準値記憶部46、判定部47を具備しており、TFを再発行した回数が所定値を超えたか否かを判定する。監視タイマ44は時間を測定し、カウンタ45は再トークン発行部42が何回TFを再発行したかをカウントする。基準値記憶部46は、TFの繰り返し送信回数を変更するか否かを判定する際に用いる基準値を記憶する。判定部47は、監視タイマ44が測定する時間と、カウンタ45がカウントするTFの再発行回数に基づいて、単位時間当たりのTFの再発行回数を算出する。判定部47は、算出した単位時間当たりのTFの再発行回数が、基準値記憶部46で記憶している基準値を超えたか否かを判定する。判定部47は、TFの再発行回数が、基準値記憶部46で記憶している基準値を超えた場合に、トークン設定部41にTFの送信回数を再設定するよう指示する。
トークン設定部41は、判定部47からの指示に従って、現在設定しているTFの送信回数を増やす。例えば、トークン設定部41は、初期値としてTFの送信回数を1回に設定しておき、判定部47からTFの送信回数の変更指示を受ける度に、TFの送信回数を2回、3回と増やしていく。
なお、基準値記憶部46は、設定されているTFの送信回数毎に基準値を記憶しておいてもよい。例えば、基準値記憶部46は、設定されているTFの送信回数が1回の場合に用いる基準値、2回の場合に用いる基準値のように、複数の基準値を記憶しておく。そして、判定部47は、現在設定されているTFの送信回数をトークン設定部41から取得し、現在設定されているTFの送信回数と、このTFの送信回数に対応する基準値と、を比較することによってTFの送信回数を増加させるか否かを判断する。
なお、判定部47は、算出した単位時間当たりのTFの再発行回数が所定の基準値よりも小さい場合に、現在設定しているTFの送信回数を減らすようトークン設定部41に指示してもよい。また、判定部47は、算出した単位時間当たりのTFの再発行回数に基づいて、トークン設定部41にTFの送信回数を指示してもよい。また、判定部47は、算出した単位時間当たりのTFの再発行回数に基づいて、トークン設定部41にTFの送信回数を指示してもよい。
このように、データ通信システム100では、フレームの伝送環境(ノイズ発生の有無)に変化がある場合であっても、伝送環境の変化(単位時間当たりのTFの再発行回数)に応じてTFの送信回数を調整できる。これにより、伝送路上にノイズが発生していない場合には、高速通信を優先させるためにTFの送信回数を減らし、伝送路上にノイズが発生している場合には、TFの送信回数を増やすことが可能となる。したがって、性能劣化の度合いを最小限に抑えることが可能となる。
また、マスタ局Mの通信処理部3Mは、消失したTFが何れの局から発行されたTFであるかに基づいて、TFを繰り返し送信させる回数を局毎に変更してもよい。図25は、TFの繰り返し送信回数を局毎に変更する場合のマスタ局の通信処理部の構成を示す図である。TFの繰り返し送信回数を局毎に変更する場合のマスタ局Mの通信処理部3Mは、送信バッファ31、受信バッファ32、トークン設定部41に加えて、消失トークン判断部48を備えている。
消失トークン判断部48は、TFが何れの局まで巡回したかを確認することによって、どの局が発行したTFが消失したかを判断する機能を有している。消失トークン判断部48は、消失したTFを発行した局(スレーブ局SL1,SL2またはマスタ局M)をトークン設定部41に通知する。これにより、トークン設定部41は、消失したTFを発行した局(スレーブ局SL1、スレーブ局SL2、マスタ局M)に対して、TFの繰り返し送信回数を変更する。このとき、トークン設定部41は、TFの消失回数に応じたTFの繰り返し回数をスレーブ局SL1,SL2、マスタ局Mの何れかに設定する。
データ通信システム100内では、スレーブ局SL1,SL2にTFをブロードキャストで送信させる。さらに、TF内にTFの発行元を示すSA(ソースアドレス)を含めておく。これにより、スレーブ局SL1,SL2から発行されたSAを有したTFは、マスタ局Mの消失トークン判断部48へ送られる。消失トークン判断部48は、TFのSAを確認することによって、TFが何れの位置を巡回し、何れの位置で消失したかを判断することが可能となる。
なお、本実施の形態では、通信処理部3Mが再トークン発行部42と発行回数判定部43を備える場合や、通信処理部3Mが消失トークン判断部48を備える場合について説明したが、通信処理部3Mが、再トークン発行部42、発行回数判定部43、消失トークン判断部48を有する構成としてもよい。
これにより、図12に示したように局所的な部分にノイズ源がある場合であっても、ノイズ源に応じたTFの繰り返し送信を局毎に設定することが可能となる。したがって、TFの繰り返し送信に起因する性能劣化を最小限に抑えることが可能となる。
このように、実施の形態6によれば、TFとデータの衝突を防止しつつTFの消失を防止することが可能となる。したがって、トークンのリカバリを回避することが可能となり、効率良くデータ通信を行うことが可能となる。
また、マスタ局Mは、局毎にTFの送信回数を設定するので、各局に応じた効率の良いデータ通信が可能となる。また、マスタ局Mは、再発行したTFの数や消失したTFの数に基づいて、TFの送信回数を設定するので、ノイズ源に応じた効率の良いデータ通信が可能となる。
なお、データ通信システム100は、実施の形態1〜6のデータ通信処理や実施の形態1の図4で説明した従来のデータ通信処理を種々組み合わせてデータ通信処理を行なってもよい。
例えば、データ通信システム100は、実施の形態2で説明したデータ通信処理と実施の形態4で説明したデータ通信処理を組み合わせてデータ通信処理を行なってもよい。この場合、データ通信システム100は、データ送信回数を設定した後(図11のST149)、データmをブロードキャストでスレーブ局SL1,SL2に送信する(図6のST79、ST80)。そして、通信処理部3Mは、スレーブ局SL1,SL2へのデータ送信処理を完了すると、スレーブ局SL1へTFを送る(図11のST150)。
また、データ通信システム100は、実施の形態1で説明したデータ通信処理と実施の形態4で説明した従来のデータ通信処理を組み合わせてデータ通信処理を行なってもよい。この場合、データ通信システム100では、通信処理部3Mがスレーブ局SL1,SL2からデータs1,s2を受信した後、図4のST38〜ST43の処理(マスタ局MのF/W処理)と、図11のST148〜ST158の処理が行なわれる。
また、実施の形態3の図7で説明したデータ通信処理のST109の処理(次判定処理)を、実施の形態4で説明した受信状態の統計情報に基づいて行なってもよい。この場合、例えばノイズの発生率が所定値以上であれば、通信処理部3Mは図3に示したデータ通信処理を選択し、ノイズの発生率が所定値未満であれば、通信処理部3Mは図4に示したデータ通信処理を選択する。これにより、データs1,s2の受信状態に応じた適切なリカバリ処理を行なうことが可能となる。したがって、効率良くデータ通信を行うことが可能となる。