(57)【要約】【課題】複数の通信装置をリング状に接続して構成される通信システムにおいて、伝送路の１箇所が切断されても通信データの欠落は発生せず、また、データストーム状態となることも無い通信システムを低コストで構築することを可能にする。【解決手段】各通信装置に、各々が隣の通信装置に接続される２つの通信ポートと、２つの通信ポートの各々からデータブロックをブロードキャストする送信手段と、２つの通信ポートの各々を介して同じデータブロックを受信した場合に何れか一方を取得するデータ取得手段と、２つの通信ポートの一方を介して受信したデータブロックを他方から送出する中継手段と、２つの通信ポートの各々を介して受信したデータブロックが自装置の送信手段により送信されたものである場合に当該データブロックを破棄して中継手段による中継対象から除外するデータ刈り取り手段と、を設ける。【選択図】図３
2015198414.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信装置をリング状に接続してなる通信システムにおいて、
前記複数の通信装置は、
各々が隣の通信装置に接続される２つの通信ポートと、
前記２つの通信ポートの各々からデータブロックをブロードキャストするデータ送信手段と、
前記２つの通信ポートの各々を介して同じデータブロックを受信した場合に何れか一方を取得するデータ取得手段と、
前記２つの通信ポートの一方を介して受信したデータブロックを他方から送出するデータ中継手段と、を備え、
前記複数の通信装置のうちの少なくとも１つは、
自装置の２つの通信ポートの各々を介して受信したデータブロックについて当該通信システム内を一巡して戻ってきたものであるか否かを判定し、一巡して戻ってきたものであると判定されたデータブロックを破棄して前記データ中継手段および前記データ取得手段による処理対象から除外するデータ刈り取り手段、をさらに有する
ことを特徴とする通信システム。
【請求項２】
前記複数の通信装置の全てが前記データ刈り取り手段を有することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記２つの通信ポートの各々を介して送受信されるデータブロックは、ヘッダと、送受信対象のデータの書き込まれるペイロードと、からなり、
前記ヘッダには、前記ペイロードに格納されているデータの送信元を示す送信元アドレスと当該データを一意に示す識別子とが書き込まれており、
前記データ取得手段は、新規に受信したデータブロックのヘッダに書き込まれている送信元のアドレスと識別子を対応付けて格納する受信履歴テーブルを備え、当該受信履歴テーブルの格納を参照して同じデータブロックを受信済であるか否かを判定することを特徴とする請求項１または請求項２に記載の通信システム。
【請求項４】
前記データ刈り取り手段は、受信したデータブロックのヘッダに書き込まれている送信元アドレスが自装置のアドレスであった場合に一巡したと判定する
ことを特徴とする請求項３に記載の通信システム。
【請求項５】
前記データブロックのヘッダには、通信装置によって中継される毎に値を更新されるホップ数がさらに書き込まれており、
前記データ中継手段はデータブロックの中継を行う毎に当該データブロックのヘッダのホップ数を更新し、
前記データ刈り取り手段は、受信したデータブロックのヘッダのホップ数を参照して当該データブロックが一巡したか否かを判定する
ことを特徴とする請求項３または４に記載の通信システム。
【請求項６】
２つの通信ポートと、
前記２つの通信ポートの各々からデータブロックをブロードキャストするデータ送信手段と、
前記２つの通信ポートの各々を介して同じデータブロックを受信した場合に何れか一方を取得するデータ取得手段と、
前記２つの通信ポートの一方を介して受信したデータブロックを他方から送出するデータ中継手段と、
前記２つの通信ポートの各々を介して受信したデータブロックについて本装置を含むリング状トポロジのデータ伝送路を一巡して戻ってきたものであるか否かを判定し、一巡して戻ってきたデータブロックを破棄して前記データ中継手段および前記データ取得手段による処理対象から除外するデータ刈り取り手段と、
を有することを特徴とする通信装置。
【請求項７】
コンピュータを、
２つの通信ポートの各々からデータブロックをブロードキャストするデータ送信手段と、
前記２つの通信ポートの各々を介して同じデータを受信した場合に何れか一方を取得するデータ取得手段と、
前記２つの通信ポートの一方を介して受信したデータブロックを他方から送出するデータ中継手段と、
前記２つの通信ポートの各々を介して受信したデータブロックについて当該コンピュータを含むリング状トポロジのデータ伝送路を一巡して戻ってきたものであるか否かを判定し、一巡して戻ってきたデータブロックを破棄して前記データ中継手段および前記データ取得手段による処理対象から除外するデータ刈り取り手段と、
して機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の通信装置をリング状に接続して構成された通信システムに関する。
【背景技術】
【０００２】
工場や各種プラント等の産業施設において、その施設内に設置された電動機等の駆動制御や各種センサからのデータ収集を実現するための通信システムが構築されることがある。この種の通信システムは、電子メールサービスやインターネット接続サービス等を提供するための一般的な通信システムと区別され、制御系ネットワークシステムと呼ばれる。制御系ネットワークシステムでは一般的な通信システムにおけるものとは異なる通信プロトコルが採用され、機器間のデータ通信を中継するための通信装置についても一般的なものとは異なるものが採用されることが従来一般的であった。
【０００３】
昨今では、制御系ネットワークシステムの分野でもEthernet（登録商標）の利用が進み、スイッチングハブなどの汎用機器を利用することが一般的になってきている。その一方で、制御系ネットワークシステムでは、操業の安全を担保するための二重化など、冗長化が必須である。この冗長化を実現する技術の一例としては、ＳＴＰ(Spanning Tree Protocol)が挙げられる。ＳＴＰとは、リング型トポロジのデータ伝送路の１箇所に故障が発生したとしてもデータ通信に支障が生じないようにする技術である。以下、図面を参照しつつＳＴＰの概略を説明する。
【０００４】
図１０はＳＴＰを説明するための模式図である。図１０（ａ）に示すように、ＳＴＰでは１台のマスタスイッチングハブと複数のスイッチングハブとをＬＡＮ（Local Area Network）ケーブルなどの通信線でリング状に接続することでデータ伝送路が形成される。なお、図１０ではスイッチングハブは「ＳＷ−ＨＵＢ」と表記されている。マスタスイッチングハブは、リング型のデータ伝送路の健全性を常にチェックし、健全な場合には自装置内において論理的にデータ伝送路を「OPEN状態」（図１０（ａ）参照）とする。このような状況でデータ伝送路の一箇所に断線などの障害が発生したとする（図１０（ｂ）参照）。マスタスイッチングハブは、データ伝送路の異常を検出した場合には論理的にデータ伝送路を「CLOSE状態」（図１０（ｃ）参照）に切り替える。つまり、ＳＴＰによれば、伝送路に異常のある状態と異常のない状態のいずれにおいても、物理的にはリング型トポロジのネットワークは論理的にバス型トポロジのネットワークとして使用される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１１−５０８５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、ＳＴＰを利用した通信システムでは以下の問題が生じ得る。第１に、データ伝送路に障害が発生してから数秒の期間に亙って通信データが到達しない通信装置が発生する点である。データ伝送路における障害発生からマスタスイッチングハブによる障害検知までに数秒程度の時間を要するからである。これは、通信データの欠落を意味する。通信データの欠落が発生すると電動機などの制御対象機器が誤動作する虞があるため、このような通信データの欠落は制御系ネットワークシステムにおいては極力避けなければならない事態である。
【０００７】
第２に、障害復旧時（断線していた通信線の再接続時など）にデータ伝送路がデータストーム状態となってしまう虞がある、という点である。データストーム状態とは、データ伝送帯域全てがデータ通信に使用されてしまっている状態である。これは、ブロードキャストでデータ送信を行うことが一般的な制御系ネットワークシステムにおいてはその発生が特に懸念される問題であり、障害復旧からマスタスイッチングハブによる「CLOSE」状態から「OPEN状態」への切り換えまでの間、伝送路が閉ループ状態となってしまうことに起因する。データ伝送路がデータストーム状態になると、通信システムに含まれる各通信装置に極端に高い通信負荷がかかり、通信装置の故障要因にも成りえる。なお、コストダウンを目的としてスイッチングハブなどの中継装置を使用せず、ノード装置のみでループ構成を可能とする形態もあるが、この場合でも上記各問題は発生し得る。
【０００８】
本発明は上記課題に鑑みて為されたものであり、複数の通信装置をリング状に接続して通信システムを構築する際に、リング型トポロジのデータ伝送路の１箇所に障害が発生しても通信データの欠落は発生せず、また、障害復旧時にデータストーム状態となることも無い通信システムを低コストで構築することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本発明は以下の構成の通信システムを提供する。この通信システムは複数の通信装置をリング状に接続して構成されている。つまり、この通信システムではリング型トポロジのデータ伝送路が形成される。複数の通信装置の各々は、２つの通信ポートと、以下のデータ送信手段、データ取得手段およびデータ中継手段を有している。データ送信手段は、２つの通信ポートの各々からデータブロックをブロードキャストする。データ取得手段は、２つの通信ポートの各々を介して同じデータブロックを受信した場合に何れか一方を取得する。そしてデータ中継手段は、２つの通信ポートの一方を介して受信したデータブロックを他方から送出する。このように、各通信装置は、リング型トポロジのデータ伝送路に沿って互いに逆回りとなる方向（例えば時計回りと反時計回りの各方向）にデータをブロードキャストするため、そのデータ伝送路の１箇所に断線などの障害が発生したとしても、データブロックの送信元を除く他の全ての通信装置にそのデータブロックを確実に送り届けることができる。つまり、本発明の通信システムでは通信データの欠落は発生しない。なお、リング型トポロジのデータ伝送路に断線などの障害が発生していなければ、データブロックの送信元を除く他の全ての通信装置は同じデータブロックを複数回受信することになるが、データ取得手段は何れか一方のみを取得するため、特段の問題が生じることはない。
【００１０】
そして、複数の通信装置のうちの少なくとも１つは、自装置の２つの通信ポートの各々を介して受信したデータブロックについて当該通信システム内を一巡して戻ってきたものであるか否かを判定し、一巡して戻ってきたものであると判定されたデータブロックを破棄して前記データ中継手段およびデータ取得手段による処理対象から除外するデータ刈り取り手段をさらに有しており、この点に本発明の特徴がある。本発明では、リング型トポロジのデータ伝送路を一巡したデータブロックはデータ刈り取り手段によって破棄されるため、前述したデータストーム状態の発生を回避することができる。また、本発明の通信システムはスイッチングハブを構成要素として含んでいないため、スイッチングハブを用いる従来技術に比較してシステム構築コストを低く抑えることができる。なお、特許文献１には、複数の通信装置をリング状に接続して構成されている通信システムにおいて、各通信装置に両隣の通信装置へデータを送信させることが記載されているが、上記データ刈り取り手段を少なくとも１つの通信装置に設けることは記載も示唆もされていない。よって、本願発明と引用文献１に記載の発明とは全く異なる技術である。
【００１１】
データ取得手段およびデータ刈り取り手段の具体的な構成としては種々の態様が考えられる。例えば、データ伝送路に送出されるデータブロックとしてヘッダと送受信対象のデータを格納するペイロードとを有し、ペイロードに格納されているデータの送信元を示すアドレスと当該データを一意に示す識別子とがヘッダに書き込まれるデータブロック（例えば、ＩＰパケット）を採用する場合には、データ取得手段として、取得済のデータブロックのヘッダに書き込まれている送信元のアドレスと識別子を対応付けて格納する管理テーブルを備え、当該管理テーブルの格納を参照して同じデータブロックを受信済であるか否かを判定する手段を用いるようにすれば良い。また、データ刈り取り手段としては、受信したデータブロックのヘッダに書き込まれている送信元のアドレスが自装置のアドレスであった場合にリング型トポロジのデータ伝送路を一巡したと判定する手段を用いるようにすれば良い。
【００１２】
また、通信装置によって中継される毎に値を更新されるホップ数がヘッダに書き込まれるデータブロックを採用する場合には、ホップ数の初期値を１にしておき、データ中継手段には、データブロックの中継を行う毎に当該データブロックのヘッダのホップ数に１を加算する処理を実行させ、データ刈り取り手段として、受信したデータブロックのヘッダのホップ数が通信システムに含まれる通信装置の数以上であった場合に、当該データブロックはデータ伝送路を一巡したと判定する手段を用いるようにすれば良い。
【００１３】
上記課題を解決するための本発明の別の態様としては、２つの通信ポートと、上記データ送信手段と、上記データ取得手段と、上記データ中継手段と、上記データ刈り取り手段とを有する通信装置を提供する態様や、ＣＰＵ（Central Processing Unit）などのコンピュータを上記各手段として機能させるプログラムを提供する態様が考えられる。これらの態様によっても、リング状のデータ伝送路の１箇所が切断されても通信データの欠落は発生せず、また、データストーム状態も発生しない通信システムを低コストで構築することが可能になる。
【発明の効果】
【００１４】
本発明によれば、複数の通信装置をリング状に接続して通信システムを構築する際に、リング型トポロジのデータ伝送路の１箇所に障害が発生しても通信データの欠落が発生することはなく、データストーム状態となることも無い。さらに、本発明によればスイッチングハブを用いることなく上記通信システムを構築することができるため、スイッチングハブを用いる態様に比較してシステム構築コストを低く抑えることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態の通信システム１の構成例を示す図である。
【図２】同通信システム１に含まれる通信装置１０の構成例を示す図である。
【図３】同通信システム１の制御部１１０が通信制御プログラム１３４４にしたがって実行する処理を説明するための機能ブロック図である。
【図４】本実施形態において通信装置１０が送受信するデータブロックであるＩＰパケットを説明するための図である。
【図５】同制御部１１０が通信制御プログラムにしたがって実行するデータ取得処理ＳＢ１００の流れを示すフローチャートである。
【図６】同データ取得処理ＳＢ１００にて参照／更新される送信元管理テーブルを説明するための図である。
【図７】同制御部１１０が通信制御プログラムにしたがって実行するデータ刈り取り処理の流れを示すフローチャートである。
【図８】本実施形態の動作例を説明するための図である。
【図９】本実施形態の動作例を説明するための図である。
【図１０】ＳＴＰを説明するための図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照しつつ本発明の実施形態について説明する。
（Ａ：構成）
図１は、本発明の一実施形態の通信システム１の構成例を示す図である。
この通信システム１は、制御系ネットワークシステムである。図１に示すように、通信システム１は、通信装置１０Ａ，１０Ｂ，１０Ｃおよび１０ＤをＬＡＮケーブルなどの通信線によりリング状に接続して構成されている。つまり、通信システム１は、リンク型のネットワークトポロジを有している。本実施形態では通信システム１に４台の通信装置が含まれている場合について説明するが、通信システム１に含まれる通信装置の数は５台以上であっても良く、また、２或いは３台であっても良い。要は、複数の通信装置をリング状に接続してなる通信システムであれば良い。また、本実施形態における上記データ伝送路はEthernet（登録商標）である。上記データ伝送路における通信プロトコルとしては、トランスポート層についてはＴＣＰ或いはＵＤＰがネットワーク層についてはＩＰが採用されている。
【００１７】
通信装置１０Ｂ，１０Ｃおよび１０Ｄの各々は例えばＰＬＣである。通信装置１０Ｂ，１０Ｃおよび１０Ｄの各々は産業施設内に敷設された電動機の駆動制御や各種センサからのデータ収集を行うコントローラなどのノード装置である。通信装置１０Ａはこれらコントローラに対して各種制御指令を与えたり、これらコントローラからデータを収集したりするノード装置である。なお、通信装置１０Ａ，１０Ｂ，１０Ｃおよび１０Ｄの構成は基本的には同一であるため、以下、これら４台の通信装置の各々を区別する必要がない場合には「通信装置１０」と表記する。
【００１８】
通信装置１０は、ネットワーク層におけるデータの送受信単位であるＩＰパケット単位でデータの送受信を行う通信装置である。このため、通信装置１０Ａ，１０Ｂ，１０Ｃおよび１０Ｄの各々は、それぞれ固有の通信アドレス（ＩＰアドレス）が予め割り振られている。本実施形態では、通信装置１０Ａ，１０Ｂ，１０Ｃおよび１０Ｄの各々に本実施形態の特徴を顕著に示す処理を実行させることで、リング状のデータ伝送路の１箇所が切断されても通信データの欠落を発生させないこと、およびデータストーム状態とならないことが実現される。よって、以下では、通信装置１０Ａ，１０Ｂ，１０Ｃおよび１０Ｄを中心に説明する。
【００１９】
図２は、通信装置１０の構成例を示すブロック図である。
図２に示すように、通信装置１０は、制御部１１０、通信インターフェース（図２では「Ｉ／Ｆ」と略記、以下、本明細書でも同様）部１２０、記憶部１３０、外部機器Ｉ／Ｆ部１４０およびこれら各構成要素間のデータ授受を仲介するバス１５０を有している。
【００２０】
制御部１１０は、例えばＣＰＵである。制御部１１０は記憶部１３０（より正確には不揮発性記憶部１３４）に記憶されている各種プログラムを実行することで通信装置１０の制御中枢として機能する。不揮発性記憶部１３４に記憶されているプログラムにしたがって制御部１１０が実行する処理の詳細については後に明らかにする。
【００２１】
通信Ｉ／Ｆ部１２０は例えばＮＩＣ（Network Interface Card）である。図２に示すように、通信Ｉ／Ｆ部１２０は通信ポート１２２と通信ポート１２４の２つの通信ポートを有している。これら２つの通信ポートはＬＡＮケーブルなどの信号線を介して夫々異なる通信装置に接続されている。例えば、通信装置１０Ａの通信ポート１２２は通信装置１０Ｂの通信ポート１２４に接続されており、通信装置１０Ａの通信ポート１２４は通信装置１０Ｄの通信ポート１２２に接続されている。そして、通信装置１０Ｂの通信ポート１２２は通信装置１０Ｃの通信ポート１２４に接続されており、通信装置１０Ｃの通信ポート１２２は通信装置１０Ｄの通信ポート１２４に接続されている。通信Ｉ／Ｆ部１２０は、通信ポート１２２或いは通信ポート１２４により受信したデータを制御部１１０に引き渡すとともに、制御部１１０から与えられたデータを通信ポート１２２と通信ポート１２４のうち制御部１１０によって指示された方から送出する。
【００２２】
外部機器Ｉ／Ｆ部１４０は、例えばシリアルインタフェースやパラレルインタフェースなどのＩ／Ｏマスタである。通信装置１０Ａの外部機器Ｉ／Ｆ部１４０には、通信システム１のネットワーク管理者等に各種指示を入力させるための入力装置（例えば、キーボードやマウス）や各種ユーザインタフェース画面を表示するための表示装置が接続される。通信装置１０Ｂ〜１０Ｄの各々の外部機器Ｉ／Ｆ部１４０には、電動機や各種センサなど、駆動制御やデータ収集の対象となる機器が接続される。外部機器Ｉ／Ｆ部１４０はその接続先の機器から出力されるデータを受け取って制御部１１０に与える一方、制御部１１０から与えられたデータを接続先の機器へと出力する。
【００２３】
記憶部１３０は、図２に示すように、揮発性記憶部１３２と不揮発性記憶部１３４を含んでいる。記憶部１３２は例えばＲＡＭ（Random Access Memory）であり、不揮発性記憶部１３４に記憶されている各種プログラムを実行する際のワークエリアとして制御部１１０によって利用される。また、揮発性記憶部１３２には、各種プログラムの実行過程で参照／更新されるデータが格納される。この種のデータの一例としては、図２における受信履歴テーブル１３２２が挙げられる。受信履歴テーブル１３２２の詳細については重複を避けるため、後に明らかにする。
【００２４】
不揮発性記憶部１３４は例えばフラッシュＲＯＭ（Read Only Memory）である。図２に示すように不揮発性記憶部１３４には、アプリケーションプログラム１３４２と通信制御プログラム１３４４とが記憶されている。アプリケーションプログラム１３４２は、制御対象機器（前述した電動機や各種センサ）の作動制御のための上位プロトコル階層（ＯＳＩ参照モデルにおけるアプリケーション層やトランスポート層）の処理を制御部１１０に実行させるプログラムである。一方、通信制御プログラム１３４４は、より下位のプロトコル階層の通信プロトコル（本実施形態では、ＩＰ）にしたがったデータ通信を制御部１１０に実行させるプログラムである。
【００２５】
本実施形態では、制御部１１０は、通信装置１０の電源（図示略）投入或いはリセットを契機として、アプリケーションプログラム１３４２と通信制御プログラム１３４４の夫々を不揮発性記憶部１３４から揮発性記憶部１３２に読み出しその実行を開始する。図３は、アプリケーションプログラム１３４２にしたがって制御部１１０が実行する処理および通信制御プログラム１３４４にしたがって制御部１１０が実行する処理を説明するための機能ブロック図である。図３に示すように、アプリケーションプログラム１３４２にしたがって作動している制御部１１０は上位プロトコル階層の処理（図３では、「上位層処理」と略記）を実行する。一方、通信制御プログラム１３４４にしたがって作動している制御部１１０は、図３に示すように、データ送信処理ＳＡ１００、データ取得処理ＳＢ１００、データ中継処理ＳＣ１００およびデータ刈り取り処理ＳＤ１００を実行する。制御部１１０が実行する処理のうち上位プロトコル階層の処理については従来の通信装置におけるものと特に変わるところは無いため、以下では通信制御プログラム１３４４にしたがって制御部１１０が実行する処理を中心に説明する。
【００２６】
データ送信処理ＳＡ１００は、アプリケーションプログラム１３４２の実行過程におけるデータ送信の発生（例えば、データ送信の為のシステムコールの呼び出し等）を契機として実行される処理である。データ送信処理ＳＡ１００は、送信対象のデータ（例えば上記システムコールの引数として引き渡されたデータ）を通信ポート１２２および１２４の各々からブロードキャストする処理である。より詳細に説明すると、このデータ送信処理ＳＡ１００では、制御部１１０は、まず、送信対象のデータをペイロードとし、ヘッダ（図４参照）のソースアドレス（すなわち、送信元アドレス）に自装置のＩＰアドレスを書き込むとともに同ディスティネーションアドレス（すなわち、送信先アドレス）にブロードキャストアドレスを書き込み、さらに識別子に当該データを一意に示すデータを書き込んだＩＰパケットを２つ生成する。なお、図４における識別子とは、同一の送信元から送信されるデータの一意性を実現する識別子であり、一般的にはデータの再送処理、二重受信防止などに利用される。図４の識別子には、ＩＰパケットを送信するたびにその送信元の通信装置において異なる値がセットされる。
【００２７】
次いで、制御部１１０は、上記の要領で生成した各パケットを通信Ｉ／Ｆ部１２０に引き渡し、それぞれ通信ポート１２２と通信ポート１２４の各々から送出することを通信Ｉ／Ｆ部１２０に指示する。なお、通信ポート１２２と通信ポート１２４の各々について、リンクアップ状態をチェックし、未リンク（ケーブル故障中）だった通信ポートからの送出を抑制する処理を制御部１１０に実行させるようにしても良い。
【００２８】
データ刈り取り処理ＳＤ１００は、通信ポート１２２または通信ポート１２４によりＩＰパケットを受信したことを契機として実行される処理である。詳細については後述するが、データ刈り取り処理ＳＤ１００は、通信ポート１２２または通信ポート１２４により受信したＩＰパケットが通信システム１内を一巡して戻ってきたものであるか否かを判定し、一巡して戻ってきたものであると判定されたＩＰパケットを破棄する処理である。データ刈り取り処理ＳＤ１００にて破棄されなかったＩＰパケットはデータ取得処理ＳＢ１００およびデータ中継処理ＳＣ１００の処理対象となる。
【００２９】
データ取得処理ＳＢ１００は、通信ポート１２２または通信ポート１２４によりＩＰパケットを受信し、かつ当該受信したＩＰパケットがデータ刈り取り処理ＳＤ１００にて破棄されなった場合に実行される。このデータ取得処理ＳＢ１００は、通信ポート１２２および１２４の各々を介して同じパケットを受信した場合に、それらのうちの何れか一方（本実施形態では先に受信した方）を取得して上位プロトコル階層の処理に引き渡す処理である。ここで、「同じパケット」とは、同一の送信元から送信され、かつペイロードに同一のデータが書き込まれたパケット（すなわち、ヘッダの識別子が同一のパケット）のことを言う。以下、図５および図６を参照しつつ、データ取得処理ＳＢ１００について詳細に説明する。
【００３０】
図５は、制御部１１０が通信制御プログラム１３４４にしたがって実行するデータ取得処理ＳＢ１００の流れを示すフローチャートである。図５に示すように、制御部１１０は、まず、通信Ｉ／Ｆ部１２０を介して受信され、データ刈り取り処理ＳＤ１００を経たＩＰパケット（以下、処理対象のＩＰパケット）について、健全であるか否かをチェックする（ステップＳＢ１０１０）。より詳細に説明すると、制御部１１０は、処理対象のＩＰパケットのヘッダおよびペイロードを対象としてチェックサムを算出する。このチェックサムの算出には、図４におけるヘッダチェックサムの算出と同じアルゴリズムが使用される。次いで、制御部１１０は、このようにして算出されたチェックサムが同ＩＰヘッダに書き込まれているヘッダチェックサムと一致するか否かを判定する。制御部１１０は、両チェックサムが一致すれば処理対象のパケットは健全（すなわち、ビット化け等は発生していない）と判定し、逆に両チェックサムが一致しなければ処理対象のパケットは健全ではないと判定する。このように受信パケットの健全性をチェックするのは、本実施形態では、ＩＰヘッダ内の各要素（具体的には、送信元アドレスおよび識別子）をキーとして新規受信パケットであるか否かの判定が行われるため、これらの情報の健全性は特に重要だからである。
【００３１】
制御部１１０は、ステップＳＢ１０１０のチェック結果が“Ｙｅｓ”の場合には、ステップＳＢ１０２０以降の処理を実行し、逆にステップＳＢ１０１０のチェック結果が“Ｎｏ”の場合には、処理対象のパケットを破棄（ステップＳＢ１０５０）して本データ取得処理ＳＢ１００を終了する。ステップＳＢ１０１０の判定結果が“Ｙｅｓ”である場合に後続して実行されるステップＳＢ１０２０では、制御部１１０は、受信履歴テーブル１３２２の格納内容を参照し、処理対象のＩＰパケットが新規に受信したものであるか否かを判定する。
【００３２】
詳細については後述するが受信履歴テーブル１３２２には、ＩＰパケットを新規受信する毎にそのＩＰパケットを一意に示す情報（本実施形態では、送信元アドレスと識別子）が登録される。したがって、制御部１１０は、処理対象のＩＰパケットのヘッダに書き込まれている送信元アドレスと識別子の対と一致する送信元アドレスと識別子の対が受信履歴テーブル１３２２に格納されていれば当該ＩＰパケットは新規受信パケットではないと判定し、格納されていなければ新規受信パケットであると判定する。ステップＳＢ１０２０の判定結果が“Ｙｅｓ”である場合には、制御部１１０は、ステップＳＢ１０３０以降の処理を実行する。これに対して、ステップＳＢ１０２０の判定結果が“Ｎｏ”であれば、制御部１１０は、前述したステップＳＢ１０５０の処理を実行して本データ取得処理ＳＢ１００を終了する。
【００３３】
ステップＳＢ１０２０の判定結果が“Ｙｅｓ”である場合に後続して実行されるステップＳＢ１０３０では、制御部１１０は、処理対象のパケットを一意に示す情報（送信元アドレスおよび識別子）を受信履歴テーブル１３２２に登録する。図６は、受信履歴テーブル１３２２の構成例を示す図である。図６に示すように、受信履歴テーブル１３２２は、送信元管理テーブル１３２２ａと、送信元管理テーブルの各レコード（送信元アドレスおよび識別子履歴ポインタよりなるレコード）に一つずつ対応付けられた識別子履歴テーブル１３２２ｂとにより構成されている。
【００３４】
図６に示すように、送信元管理テーブル１３２２ａは、複数（本実施形態では、最大Ｍ個）のレコードと当該レコードの数を表すエントリ数データとにより構成されている。ここで、送信元管理テーブル１３２２ａを構成するレコードの最大数Ｍについては通信システム１に含まれる通信装置の数に応じて定めるようにすれば良い。例えば、本実施形態の通信システム１であれば、Ｍ＝３（すなわち、自装置を除いた通信装置の数）と定めておけば良い。送信元管理テーブル１３２２ａを構成する各レコードには、送信元管理テーブル１３２２ａの格納元の通信装置１０が新規に受信したＩＰパケットの送信元アドレスと識別子履歴ポインタとが格納される。識別子履歴ポインタには、当該識別子履歴ポインタに対応付けられた送信元アドレスの示す通信装置から受信したＩＰパケットの識別子をその受信順に格納する識別子履歴テーブル１３２２ｂの先頭アドレスがセットされる。
【００３５】
識別子履歴テーブル１３２２ｂは、最大Ｎ個の識別子（当該テーブルに対応付けられた送信元管理テーブル１３２２ａのレコードに格納されている送信元アドレスの示す通信装置１０から送信されたＩＰパケットのヘッダに書き込まれていた識別子）と、それら識別子の数を示すエントリ数データと、それら識別子のうちの最古のものの格納アドレスを示す最古ポインタと、新たに識別子の追加を行う際にその格納先のアドレスを示す次登録ポインタとから構成されている。なお、識別子履歴テーブル１３２２ｂに格納可能な識別子の最大数Ｎについては、通信システム１における各通信装置１０のＩＰパケットの送信頻度等に応じて適宜好適な値に定めておけば良い。本実施形態ではＮ＝３２と定められている。
【００３６】
図５のステップＳＢ１０２０では、制御部１１０は、まず、処理対象のＩＰパケットの送信元アドレスが送信元管理テーブル１３２２ａに格納されているか否かを判定する。当該送信元アドレスが登録されていなければ、制御部１１０は、新規受信パケットであると判定する。また、処理対象のＩＰパケットの送信元アドレスが送信元管理テーブル１３２２ａに格納されていた場合であっても、その送信元アドレスに対応する識別子履歴テーブル１３２２ｂに当該処理対象のＩＰパケットの識別子が登録されていない場合には、制御部１１０は新規受信パケットであると判定する。
【００３７】
図５のステップＳＢ１０３０においては、制御部１１０は、処理対象のＩＰパケットの送信元アドレスが送信元管理テーブル１３２２ａに登録されていなければ、制御部１１０は送信元管理テーブル１３２２ａに新たなレコードを生成するとともに当該レコードに対応付ける新たな識別子履歴テーブル１３２２ｂを生成し、当該レコードに上記処理対象のＩＰパケットの送信元アドレスと上記新たな識別子履歴テーブル１３２２ｂの先頭アドレスを格納する。そして、制御部１１０は、当該ＩＰパケットの識別子を当該新たな識別子履歴テーブル１３２２ｂに格納する。これに対して、処理対象のＩＰパケットの送信元アドレスが送信元管理テーブル１３２２ａに格納済である場合には、その送信元アドレスに対応する識別子履歴テーブル１３２２ｂへの当該処理対象のＩＰパケットの識別子の登録のみを行う。なお、識別子の登録の際に、既に最大数分の識別子が識別子履歴テーブル１３２２ｂに登録済である場合には、制御部１１０は最古ポインタの示す識別子を当該処理対象のＩＰパケットの識別子で書き換える。識別子履歴テーブル１３２２ｂをリングバッファ構造としたのは、登録済の識別子を高速に検索できるようにするためであるが、これは必ずしも必須ではない。
以上が受信履歴テーブル１３２２の構成である。
【００３８】
図５に戻って、ステップＳＢ１０３０に後続して実行されるステップＳＢ１０４０では、制御部１１０は、処理対象のＩＰパケットのペイロードに書き込まれているデータを読み出し、当該データを上位層処理に与える。なお、該当受信データの送信先アドレスより、自ノードでの受信が必要ではないと判断可能な場合には上位層への通知を行なわないことも可能である。
以上がデータ取得処理ＳＢ１００の詳細である。
【００３９】
データ中継処理ＳＣ１００は、データ取得処理ＳＢ１００と同様に、通信ポート１２２または通信ポート１２４によりＩＰパケットを受信し、かつ当該受信したＩＰパケットがデータ刈り取り処理ＳＤ１００にて破棄されなった場合に実行される。中継処理ＳＣ１００は、通信ポート１２２と通信ポート１２４の一方を介して受信したパケットを他方から送出する処理である。図３に示すようにデータ中継処理ＳＣ１００は第１中継処理ＳＣ１０２と第２中継処理ＳＣ１０４を含んでいる。第１中継処理ＳＣ１０２では、制御部１１０は、通信ポート１２４により受信され、データ刈り取り処理ＳＤ１００を経たＩＰパケットを通信Ｉ／Ｆ部１２０に与え、通信ポート１２２を指定して当該ＩＰパケットの送出を指示する。一方、第２中継処理ＳＣ１０４では、制御部１１０は、通信ポート１２２により受信され、データ刈り取り処理ＳＤ１００を経たＩＰパケットを通信Ｉ／Ｆ部１２０に与え、通信ポート１２４を指定して当該ＩＰパケットの送出を指示する。なお、データ送信処理ＳＡ１００における場合と同様に、通信ポート１２２と通信ポート１２４の各々について、リンクアップ状態をチェックし、未リンク（ケーブル故障中）だった通信ポートからの送出を抑制する処理を制御部１１０に実行させるようにしても良い。
【００４０】
データ刈り取り処理ＳＤ１００は、通信ポート１２２および通信ポート１２４の何れかによりＩＰパケットを受信したことを契機として実行される処理である。前述したように、データ刈り取り処理ＳＤ１００は、受信したパケットがリング型トポロジのデータ伝送路を一巡して戻ってきたものであるか否かを判定し、一巡して戻ってきたものであると判定されたパケットを破棄してデータ取得処理ＳＢ１００およびデータ中継処理ＳＣ１００による処理対象から除外する処理である。図７は、制御部１１０が通信制御プログラム１３４４にしたがって実行するデータ刈り取り処理ＳＤ１００の流れを示すフローチャートである。図７に示すように、制御部１１０は、受信したパケットのヘッダに書き込まれている送信元アドレスが自装置のＩＰアドレスと一致するか否かを判定し（ステップＳＤ１０１０）、その判定結果が“Ｎｏ”であれば、後段の処理へ当該ＩＰパケットを引き渡す（ステップＳＤ１０２０）一方、その判定結果が“Ｙｅｓ”であれば当該ＩＰパケットを破棄する（ステップＳＤ１０３０）。つまり、本実施形態では、通信ポート１２２および通信ポート１２４の何れかにより受信したＩＰパケットが自装置のデータ送信処理ＳＡ１００により送信されたＩＰパケットであった場合に、リング型トポロジのデータ伝送路を一巡して戻ってきたものであると判定されるのである。なお、ステップＳＤ１０１０の判定に先立って前述した健全性チェックを行い、健全である場合にステップＳＤ１０１０以降の処理を実行するようにしても勿論良い。
以上が通信装置１０の構成である。
【００４１】
（Ｂ：動作）
以下、通信装置１０Ａの制御部１１０がデータ送信処理ＳＡ１００を実行してＩＰパケットをブロードキャストする場合を例に取って、本実施形態の動作を説明する。なお、以下に説明する動作の開始時点までは通信装置１０ＡからのＩＰパケットのブロードキャストは行われておらず、通信装置１０Ｂ、１０Ｃおよび１０Ｄの各々の受信履歴テーブル１３２２には、通信装置１０ＡのＩＰアドレスは登録されていないものとする。また、ＩＰパケットの伝送過程でデータ化け等は発生せず、データ伝送過程においてＩＰパケットの健全性は保たれているとする。
【００４２】
まず、リング型トポロジのデータ伝送路に障害が発生していない場合の動作について説明する。図８（ａ）に示すように、通信装置１０Ａの通信ポート１２２からブロードキャストされたＩＰパケットは、通信装置１０Ｂの通信ポート１２４を介して当該通信装置１０Ｂによって受信される。同様に、通信装置１０Ａの通信ポート１２４からブロードキャストされたＩＰパケットは、通信装置１０Ｄの通信ポート１２２を介して当該通信装置１０Ｄによって受信される。これら２つのＩＰパケットの送信元アドレスが同一であり、かつ識別子も同一であることは前述した通りである。
【００４３】
通信装置１０Ｂ（通信装置１０Ｄ）の制御部１１０は、ＩＰパケットの受信を契機として、前述したデータ刈り取り処理ＳＤ１００を実行する。ここで、当該ＩＰパケットの送信元は通信装置１０Ａであり、当該ＩＰパケットのヘッダの送信元アドレスには通信装置１０ＡのＩＰアドレスが書き込まれている。このため、通信装置１０Ｂ（通信装置１０Ｄ）の制御部１１０が実行するデータ刈り取り処理ＳＤ１００のステップＳＤ１０１０の判定結果はＮｏとなり、ステップＳＤ１０２０の処理が実行される。すなわち、通信装置１０Ｂでは、通信ポート１２４を介して受信したＩＰパケットを処理対象としてデータ取得処理ＳＢ１００およびデータ中継処理ＳＣ１００が実行され、通信装置１０Ｄでは、通信ポート１２２を介して受信したＩＰパケットを処理対象としてデータ取得処理ＳＢ１００およびデータ中継処理ＳＣ１００が実行される。
【００４４】
前述したように本動作例では、ＩＰパケットの健全性は保たれているため、通信装置１０Ｂ（通信装置１０Ｄ）の制御部１１０が実行するデータ取得処理ＳＢ１００では、ステップＳＢ１０１０の判定結果は“Ｙｅｓ”となり、ステップＳＢ１０２０以降の処理が実行される。本動作例の開始時点では通信装置１０Ｂおよび１０Ｄの受信履歴テーブル１３２２には、通信装置１０ＡのＩＰアドレスは登録されていない。このため、通信装置１０Ｂ（通信装置１０Ｄ）の制御部１１０が実行するデータ取得処理ＳＢ１００のステップＳＢ１０２０の判定結果は“Ｙｅｓ”となり、ステップＳＢ１０３０およびステップＳＢ１０４０の処理が実行される。つまり、通信装置１０Ｂでは、通信装置１０Ａの通信ポート１２２からブロードキャストされたＩＰパケットを通信ポート１２４を介して受信したことを契機として、通信装置１０ＡのＩＰアドレスおよび当該ＩＰパケットの識別子が受信履歴テーブル１３２２に登録される。同様に、通信装置１０Ｄでは、通信装置１０Ａの通信ポート１２４からブロードキャストされたＩＰパケットを通信ポート１２２を介して受信したことを契機として、通信装置１０ＡのＩＰアドレスおよび当該ＩＰパケットの識別子が受信履歴テーブル１３２２に登録される。
【００４５】
通信装置１０Ｂの制御部１１０が実行するデータ中継処理ＳＣ１００では、通信ポート１２４を介して受信したＩＰパケットが通信ポート１２２から送出される。一方、通信装置１０Ｄの制御部１１０が実行するデータ中継処理ＳＣ１００では、通信ポート１２２を介して受信したＩＰパケットが通信ポート１２４から送出される。本実施形態では、通信装置１０Ｂの通信ポート１２２は通信線を介して通信装置１０Ｃの通信ポート１２４に接続されており、通信装置１０Ｄの通信ポート１２４は通信線を介して通信装置１０Ｃの通信ポート１２２に接続されている。このため、図８（ｂ）に示すように、通信装置１０Ｃは、通信装置１０Ａから送信され、通信装置１０Ｂにより中継されたＩＰパケットを通信ポート１２４を介して受信し、通信装置１０Ａから送信され、通信装置１０Ｄにより中継されたＩＰパケットを通信ポート１２２を介して受信する。以下、本動作例では、通信装置１０Ａから送信され通信装置１０Ｂにより中継されたＩＰパケットのほうが先に通信装置１０Ｃに到達した場合について説明する。
【００４６】
通信装置１０Ｃの制御部１１０も、ＩＰパケットの受信を契機として、前述したデータ刈り取り処理ＳＤ１００を実行する。通信装置１０Ｃの制御部１１０が実行するデータ刈り取り処理ＳＤ１００においても、ステップＳＤ１０１０の判定結果はＮｏとなり、ステップＳＤ１０２０の処理が実行される。すなわち、通信装置１０Ｃにおいても、データ取得処理ＳＢ１００とデータ中継処理ＳＣ１００が実行される。通信装置１０Ｂにより中継されたＩＰパケットの受信を契機として通信装置１０Ｃの制御部１１０が実行するデータ取得処理ＳＢ１００では、ステップＳＢ１０３０およびステップＳＢ１０４０の処理が実行される。前述したように、ＩＰパケットの健全性は保たれているためステップＳＢ１０１０の判定結果はＹｅｓとなり、上記ＩＰパケットの受信時点では通信装置１０ＡのＩＰアドレスは通信装置１０Ｃの受信履歴テーブル１３２２には登録されていないからである。
【００４７】
これに対して、通信装置１０Ｄにより中継されたＩＰパケットの受信を契機として通信装置１０Ｃの制御部１１０が実行するデータ取得処理ＳＢ１００では、ステップＳＢ１０３０およびステップＳＢ１０４０の処理が実行されることはない。通信装置１０Ｂにより中継されたＩＰパケットの受信を契機として実行されたデータ取得処理ＳＢ１００において当該ＩＰパケットの送信元アドレス（すなわち、通信装置１０ＡのＩＰアドレス）および当該ＩＰパケットの識別子は通信装置１０Ｃの受信履歴テーブル１３２２に登録済であり、ステップＳＢ１０２０の判定結果はＮｏとなるからである。
【００４８】
通信装置１０Ｂにより中継されたＩＰパケットの受信を契機として実行されるデータ中継処理ＳＣ１００では、通信装置１０Ｃの制御部１１０は当該ＩＰパケットを通信ポート１２２から送出する。同様に、通信装置１０Ｄにより中継されたＩＰパケットの受信を契機として実行されるデータ中継処理ＳＣ１００では、制御部１１０は当該ＩＰパケットを通信ポート１２４から送出する。このため、図８（ｃ）に示すように、通信装置１０Ｂは、通信装置１０Ａから送信され通信装置１０Ｄおよび通信装置１０Ｃにより中継されたＩＰパケットを通信ポート１２２を介して受信し、通信装置１０Ｄは通信装置１０Ａから送信され通信装置１０Ｂおよび通信装置１０Ｃにより中継されたＩＰパケットを通信ポート１２４を介して受信する。
【００４９】
通信装置１０Ｃにより中継されたＩＰパケットの受信を契機として通信装置１０Ｂの制御部１１０が実行するデータ取得処理ＳＢ１００では、ステップＳＢ１０３０およびステップＳＢ１０４０の処理が実行されることはない。通信装置１０Ａから送信されたＩＰパケットの受信を契機として実行されたデータ取得処理ＳＢ１００において当該ＩＰパケットの送信元アドレス（すなわち、通信装置１０ＡのＩＰアドレス）および当該ＩＰパケットの識別子は通信装置１０Ｂの受信履歴テーブル１３２２に登録済であり、ステップＳＢ１０２０の判定結果はＮｏとなるからである。同様に、通信装置１０Ｃにより中継されたＩＰパケットの受信を契機として通信装置１０Ｄの制御部１１０が実行するデータ取得処理ＳＢ１００においても、ステップＳＢ１０３０およびステップＳＢ１０４０の処理が実行されることはない。
【００５０】
通信装置１０Ｃにより中継されたＩＰパケットの受信を契機として通信装置１０Ｂの制御部１１０が実行するデータ中継処理ＳＣ１００では、制御部１１０は当該ＩＰパケットを通信ポート１２４から送出する。同様に、通信装置１０Ｃにより中継されたＩＰパケットの受信を契機として通信装置１０Ｄの制御部１１０が実行するデータ中継処理ＳＣ１００では、制御部１１０は当該ＩＰパケットを通信ポート１２２から送出する。このため、図８（ｄ）に示すように、通信装置１０Ａは、自装置から送信され通信装置１０Ｄ、通信装置１０Ｃおよび通信装置１０Ｂにより中継されたＩＰパケット（以下、時計回りのＩＰパケット）を通信ポート１２２を介して受信し、自装置から送信され通信装置１０Ｂ、通信装置１０Ｃおよび通信装置１０Ｄにより中継されたＩＰパケット（以下、反時計回りのＩＰパケット）を通信ポート１２４を介して受信する。
【００５１】
通信装置１０Ａの制御部１１０は、時計回りのＩＰパケットの受信を契機として前述したデータ刈り取り処理ＳＤ１００を実行する。このＩＰパケットは元々通信装置１０Ａによって送信されたものであり、当該ＩＰパケットのヘッダには送信元アドレスとして通信装置１０ＡのＩＰアドレスが書き込まれている。このため、当該ＩＰパケットの受信を契機として実行されるデータ刈り取り処理ＳＤ１００におけるステップＳＤ１０１０の判定結果は“Ｙｅｓ”となり、通信装置１０Ａにおいて当該ＩＰパケットは破棄される。したがって、当該ＩＰパケットのペイロードに書き込まれているデータが通信装置１０Ａの制御部１１０の実行する上位階層の処理に引き渡されることはなく、通信装置１０Ａから通信装置１０Ｄへ中継されることもない。通信装置１０Ａの制御部１１０が、反時計回りのＩＰパケットを受信した場合も同様に、当該ＩＰパケットのペイロードに書き込まれているデータが通信装置１０Ａの制御部１１０の実行する上位階層の処理に引き渡されることはなく、通信装置１０Ａから通信装置１０Ｂへ中継されることもない。
【００５２】
以上がリング型トポロジのデータ伝送路に障害が発生していない場合の各通信装置１０の動作である。このように本実施形態によれば、リング型トポロジのデータ伝送路に障害が発生していない状況下では、通信装置１０Ａから送信され、リング型トポロジのデータ伝送路に沿って時計回りおよび反時計回りに伝送された各ＩＰパケットが一周を超えて伝送されることはなく、既に役目を終わったデータによって該データ伝送路におけるデータ伝送帯域が無駄使いされることはない。
【００５３】
これに対して、図９に示すように、通信装置１０Ｂと通信装置１０Ｃとを接続する通信線が断線していた場合には、反時計回りのＩＰパケットが通信装置１０Ｂから通信装置１０Ｃへ中継されることはなく、時計回りのＩＰパケットが通信装置１０Ｃから通信装置１０Ｂへ中継されることはない。この場合、通信装置１０Ｂは反時計回りのＩＰパケットのみを受信し、通信装置１０Ｃおよび通信装置１０Ｄは時計回りのＩＰパケットのみを受信する。時計回りのＩＰパケットの内容と反時計回りのＩＰパケットの内容は同一であるため、送信元以外の通信装置（すなわち、通信装置１０Ｂ、１０Ｃおよび１０Ｄ）ではそれらのうちの何れか一方のみを受信できれば特段の問題は発生しない。このように本実施形態によれば、リング型トポロジのデータ伝送路の一箇所に断線などの障害が発生したとしても、ＩＰパケットの送信元以外の全ての通信装置にＩＰパケットが到達し、データの欠落は発生しない。そして、図９に示す状態から図８に示す状態に復旧した直後に通信装置１０Ａ〜１０Ｄのうちの何れかによりＩＰパケットの送信が行われたとしても、当該ＩＰパケットは当該送信元の通信装置１０におけるデータ刈り取り処理ＳＤ１００において破棄されるため、データストーム状態となることも無い。
【００５４】
また、本実施形態の通信システム１では通信装置１０の他に、スイッチングハブなどのネットワーク機器は用いられていないため、本実施形態によれば、複数の通信装置１０をリング状に接続して構成されたデータ伝送路の１箇所が切断されても通信データの欠落を発生させず、故障個所の復旧時にデータストーム状態となることも無い通信システムをスイッチングハブなどの他のネットワーク機器を用いることなく低コストで構築することが可能になる。
【００５５】
（Ｃ：変形）
以上、本発明の一実施形態について説明したが、この実施形態に以下の変形を加えても勿論良い。
（１）上記実施形態では、通信装置１０の制御部１１０を通信制御プログラム１３４４にしたがって作動させることで、当該制御部１１０を、データ送信処理ＳＡ１００を実行するデータ送信処理手段、データ取得処理ＳＢ１００を実行するデータ取得手段、データ中継処理ＳＣ１００を実行するデータ中継手段、およびデータ刈り取り処理ＳＤ１００を実行するデータ刈り取り手段として機能させた。しかし、これら各手段を電子回路などのハードウェアで実現しても良い。また、上記実施形態では、通信装置１０間で送受信されるデータブロックがＩＰパケットであったが、より下位のプロトコル階層のデータブロック（例えば、データリンク層の送受信単位であるフレーム）であっても良く、また、より上位のプロトコル階層のデータブロック（例えば、トランスポート層の送受信単位であるセグメント）であっても良い。要は、送信元アドレスとデータ識別子の書き込まれるヘッダと送受信対象のデータが書き込まれるペイロードとからなるデータブロックであれば良く、データ送信手段、データ取得手段、データ中継手段およびデータ刈り取り手段の各手段が動作するプロトコル階層はネットワーク層に限定される訳ではない。また、上記実施形態ではノード装置への本発明の適用例を説明したが、中継装置に本発明を適用しても良い。
【００５６】
（２）上記実施形態では、リング型トポロジのデータ伝送路を一巡して送信元へ戻ってきたデータブロックを当該送信元において刈り取る（破棄する）ことで、当該データ伝送路におけるデータ伝送帯域の無駄使いを回避し、障害復旧時のデータストーム状態の発生を回避する場合について説明した。これに加えて、データブロックのブロードキャスト時点を起算点として予め定められた所定時間が経過してもその送信元へ当該データブロックが戻ってこない場合には、ネットワーク管理者等に何らかの障害の発生を報知する処理を各通信装置１０の制御部１１０に実行させ、当該データ伝送路における障害発生の検知に役立てるようにしても良い。リング型トポロジのデータ伝送路に何ら障害が発生していないのであれば、そのデータ伝送路へブロードキャストされたデータブロックは必ずその送信元へ戻って来るはずだからである。なお、上記所定時間の具体的な値については、リング型トポロジのデータ伝送路におけるデータ伝送帯域の帯域幅、当該データ伝送路に含まれる通信装置の数、および各通信装置のデータ処理能力に応じて定めるようにすれば良い。例えば、帯域幅が狭いほど、通信装置の数が多いほど、各通信装置のデータ処理能力が低いほど上記所定時間を長く定めておくといった具合である。
【００５７】
（３）上記実施形態のデータ刈り取り処理ＳＤ１００では、通信Ｉ／Ｆ部１２０を介して受信したデータブロックの送信元が自装置である場合（すなわち、データブロックの送信元へ当該データブロックが戻ってきた場合）に、当該データブロックはリング型トポロジのデータ伝送路を一巡したと判定した。しかし、リング型トポロジのデータ伝送路へブロードキャストされたデータブロックが当該データ伝送路を一巡したか否かを判定する具体的な方法はこれに限定されるものではない。例えば、データブロックのヘッダにおいて、通信装置によって中継される毎に値を更新されるホップ数を定義し、データ送信処理ＳＡ１００では上記ホップ数の初期値を１としてデータブロックを送信するとともに、データ中継処理ＳＣ１００により中継する毎にホップ数を１ずつカウントアップする。そして、データ刈り取り処理ＳＤ１００のステップＳＤ１０１０では、受信したデータブロックのヘッダのホップ数を参照し、当該ホップ数が予め定められた閾値（例えば、通信システムに含まれる通信装置の数に等しい値）以上である場合に当該データブロックは一巡したと判定するといった具合である。このような態様によれば、データブロックがリング型トポロジのデータ伝送路を一巡したか否かの判定を行う通信装置とそのデータブロックの送信元の通信装置とが一致している必要はなく、通信システムに含まれる複数の通信装置のうちの少なくとも１つが当該データ刈り取り処理ＳＤ１００を実行する態様であれば良い。また、上記実施形態の態様と本変形例の態様とを併用しても勿論良い。
【００５８】
（４）上記実施形態では、通信装置１０の制御部１１０をデータ送信手段、データ取得手段、データ中継手段およびデータ刈り取り手段の各手段として機能させる通信制御プログラム１３４４が通信装置１０の不揮発性記憶部１３４に予め記憶されていた。しかし、ＣＤ−ＲＯＭやフラッシュＲＯＭなどのコンピュータ読み取り可能な記録媒体に通信制御プログラムを書き込んで配布しても良く、また、インターネットなどの電気通信回線経由のダウンロードにより上記通信制御プログラムを配布しても良い。このようにして配布される通信制御プログラムにしたがって一般的なコンピュータを作動させることで、当該コンピュータを上記実施形態の通信装置１０として機能させることが可能になるからである。例えば、上記の要領で配布される通信制御プログラムによって従来の通信装置の通信制御プログラムを更新し、当該通信装置の制御部を上記の要領で更新した通信制御プログラムにしたがって作動させることで、従来の通信装置を上記実施形態の通信装置１０として機能させることが可能になる。
【００５９】
（５）上記実施形態では、通信装置１０Ｂ〜１０Ｄの各々は機器の作動制御を行うＰＬＣであり、各々の外部機器Ｉ／Ｆ部１４０に制御対象機器が接続される一方、通信装置１０ＡはこれらＰＬＣに対して各種制御指令を与えたり、これらＰＬＣからデータを収集したりするノード装置であり、その外部機器Ｉ／Ｆ部１４０には各種指示を入力するための入力装置や表示装置等が接続される場合について説明した。しかし、アプリケーションプログラム１３４２にしたがって実行される処理が記憶部１３０へのデータの書き込みのように通信装置１０のみで完結する処理である場合には、通信装置１０に制御対象機器や入力装置、表示装置を接続する必要はなく、外部機器Ｉ／Ｆ部１４０を省略しても良い。
【符号の説明】
【００６０】
１…通信システム、１０，１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ…通信装置、１１０…制御部、１２０…通信Ｉ／Ｆ部、１２２，１２４…通信ポート、１３０…記憶部、１３２…揮発性記憶部、１３２２…受信履歴テーブル、１３４…不揮発性記憶部、１３４２…アプリケーションプログラム、１３４４…通信制御プログラム、１４０…外部機器Ｉ／Ｆ部、１５０…バス。
【図１】
2015198414.tif 000003
【図２】
2015198414.tif 000004
【図３】
2015198414.tif 000005
【図４】
2015198414.tif 000006
【図５】
2015198414.tif 000007
【図６】
2015198414.tif 000008
【図７】
2015198414.tif 000009
【図８】
2015198414.tif 000010
【図９】
2015198414.tif 000011
【図１０】
2015198414.tif 000012