(57)【要約】  通信装置（ノード２）は、通信装置（ノード３）への制御データＡを送信中に障害が発生した場合に、制御データの送信を中断し（制御データＡ’）、障害を通知する障害データＥの送信を開始し、障害データＥの送信後に、中断した位置から制御データＡの送信を再開する（制御データＡ’’）。
2013125027.tif 000002
【特許請求の範囲】
【請求項１】
１つの通信フレームで送信するデータを、先頭から順に送信するデータ送信部と、
前記データ送信部がデータの送信を完了する前に特定のデータが新たに発生した場合に、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定部と、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御部とを有し、
前記データ送信部は、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記順序制御部による送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする通信装置。
【請求項２】
前記順序制御部は、
前記特定のデータが前記未送信データの前に送信される結果、前記通信フレームでは送信できない前記未送信データの少なくとも一部が、前記通信フレームに後続する通信フレームで送信されるように制御し、
前記データ送信部は、
前記通信フレームでは送信できない前記未送信データの少なくとも一部を、前記通信フレームに後続する通信フレームで送信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記送信決定部は、
前記未送信データ内で先頭に位置する先頭未送信データのデータ種別が、優先してデータを送信すべき優先種別であるか否かを解析し、
前記先頭未送信データのデータ種別が優先種別でない場合に、前記特定のデータを前記未送信データの前に送信するよう決定することを特徴とする請求項１に記載の通信装置。
【請求項４】
前記送信決定部は、
前記先頭未送信データのデータ種別が優先種別である場合に、前記先頭未送信データ以降の優先種別のデータ部分が送信された後に前記特定のデータを送信するよう決定し、
前記順序制御部は、
前記先頭未送信データ以降の優先種別のデータ部分が送信された後に前記特定のデータが送信され、前記特定のデータの送信が完了した後の送信が前記未送信データ内の優先種別でないデータ部分の先頭から開始されるように、前記特定のデータと前記未送信データの送信順序を制御し、
前記データ送信部は、
前記順序制御部による送信順序の制御に基づき、前記先頭未送信データ以降の優先種別のデータ部分を送信し、前記特定のデータを送信し、前記特定のデータの送信が完了した後の送信を前記未送信データ内の優先種別でないデータ部分の先頭から開始することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記通信装置は、更に、
現在の通信フレームで送信可能な残りのデータサイズを送信可能残りデータサイズとしてカウントする残りデータサイズカウント部を有し、
前記送信決定部は、
前記未送信データ内で先頭に位置する先頭未送信データのデータ種別が優先種別でない場合であって、前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記特定のデータの前に送信されるデリミタのデータサイズとの加算値以上である場合に、前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定し、
前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記デリミタのデータサイズとの加算値未満である場合に、前記特定のデータを後続の通信フレームで送信するよう決定することを特徴とする請求項３に記載の通信装置。
【請求項６】
前記データ送信部は、
前記デリミタと前記特定のデータとが送信された後の送信可能残りデータサイズ分の未送信データを現在の通信フレームで送信し、現在の通信フレームで送信されなかった未送信データを後続の通信フレームで送信することを特徴とする請求項５に記載の通信装置。
【請求項７】
前記データ送信部は、
前記送信決定部が前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定した場合に、前記特定のデータを現在の通信フレームでデリミタに後続して送信することを特徴とする請求項５に記載の通信装置。
【請求項８】
前記通信装置は、更に、
外部装置から送信されたデータを受信するデータ受信部を有し、
前記送信決定部は、
前記データ送信部がデータの送信を完了する前に前記データ受信部が前記外部装置から前記特定のデータを受信した場合に、前記データ受信部が前記外部装置から受信した前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１に記載の通信装置。
【請求項９】
前記通信装置は、更に、
前記データ送信部から送信させるデータを生成するデータ生成部を有し、
前記送信決定部は、
前記データ送信部がデータの送信を完了する前に前記データ生成部が前記特定のデータを生成した場合に、前記データ生成部が生成した前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１に記載の通信装置。
【請求項１０】
前記データ送信部は、
外部装置から受信したデータであって、１つの通信フレームで送信するデータを、先頭から順に送信し、
前記送信決定部は、
前記データ送信部が、前記外部装置から受信したデータの送信を完了する前に、前記特定のデータが発生した場合に、前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１に記載の通信装置。
【請求項１１】
前記データ送信部は、
前記通信装置内で生成されたデータであって、１つの通信フレームで送信するデータを、先頭から順に送信し、
前記送信決定部は、
前記データ送信部が、前記通信装置内で生成されたデータの送信を完了する前に、前記特定のデータが発生した場合に、前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１に記載の通信装置。
【請求項１２】
前記通信装置は、更に、
所定の分割前データから分割された複数の分割データを、２つ以上の通信フレームにおいて受信するデータ受信部と、
通信フレームごとに、前記データ受信部が受信したデータの中から前記分割前データの分割データを抽出するデータ抽出部と、
前記データ抽出部により抽出された分割データを格納する分割データ格納部と、
前記分割データ格納部に格納されている分割データのデータサイズの累積値をカウントするデータサイズカウント部と、
前記分割前データの総データサイズを導出するとともに、前記データサイズカウント部がカウントしたデータサイズの累積値が、導出した前記分割前データの総データサイズに達した際に、前記分割データ格納部に格納されている分割データを用いて、前記分割前データを復元するデータ復元部とを有することを特徴とする請求項１に記載の通信装置。
【請求項１３】
前記送信決定部は、
前記特定のデータとして、前記通信装置及び前記通信装置が所属するネットワーク内の少なくともいずれかで障害が検知されたことを通知する障害データが、前記データ送信部がデータの送信を完了する前に発生した場合に、前記障害データを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１に記載の通信装置。
【請求項１４】
コンピュータが、
１つの通信フレームで送信するデータを、先頭から順に送信し、
データの送信を完了する前に特定のデータが新たに発生した場合に、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定し、
前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御し、
前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする通信方法。
【請求項１５】
１つの通信フレームで送信するデータを、先頭から順に送信するデータ送信処理と、
前記データ送信処理がデータの送信を完了する前に特定のデータが新たに発生した場合に、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定処理と、
前記送信決定処理が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御処理とをコンピュータに実行させ、
前記送信決定処理が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記順序制御処理による送信順序の制御に基づき、前記データ送信処理において、前記コンピュータに、前記特定のデータを前記未送信データの前に送信させ、前記特定のデータの送信が完了した後の送信を前記未送信データから開始させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを送信する技術に関する。
以下では、一例として、ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）ネットワークでのデータ送信を説明する。
【背景技術】
【０００２】
工場のラインは連続して製品を製造するものである。
そこで、工場のラインには自動的に複数の機器を連携して動作させて製品を製造する機能がある。
ＦＡにおける機器の連携動作を実現する方法としてＦＡネットワークがある。
ＦＡネットワークでは１台の制御装置（コントローラ）と複数台の工作装置（スレーブ）を用いる。
機器間の接続はイーサネット（登録商標）ベースのデイジーチェーン接続であり、通信フレーム（以下、単に「フレーム」ともいう）単位で情報をやり取りする。
隣接しないノード間の通信は中継により実現される。【０００３】
機器の連携した動作は、コントローラとスレーブが通信することで実現される。
まず、コントローラは複数のスレーブに制御の指示を与える。
より具体的には、コントローラは、隣の位置のスレーブに制御指示を送信し、コントローラの隣のスレーブが更に隣のスレーブに制御指示を転送し、以降、同様の手順を繰り返し、順次、各スレーブに制御指示を伝播させる。
各スレーブは、コントローラの指示に従って稼動し、コントローラに制御結果を応答する。
制御結果の応答の場合も、スレーブ間の転送を通じてコントローラに制御結果の応答が到達する。
コントローラは、各スレーブから制御結果を受け取り、次の指示を決定し、各スレーブに次の指示を与える。
コントローラとスレーブは上記の動作を周期的に繰り返す。
以上のように自動的に複数の機器を連携して動作させ、製品を製造することができる。
高精度に機器を制御するためにはコントローラとスレーブとの間で短い周期で制御のための通信を行う必要がある。【０００４】
ＦＡネットワークには、機器を連携して動作させて製品を製造する機能の他に、機器の故障時に他の機器を安全に停止させる機能（以下、「障害管理」という）がある。
この機能を実現するために、故障が発生したスレーブはコントローラと他のスレーブに故障の通知（以下、「障害通知」という）を実施する。
障害通知のフレーム（障害フレーム）も、制御通信のためのフレームと同様に、隣り合うノード間で中継されて、コントローラ及び全ての他のスレーブに到達する。
障害フレームを受け取ったコントローラとスレーブは安全に停止する。
以上により、機器の故障が発生した際に、ＦＡネットワークに含まれる全ての機器が安全に停止することができる。
このように、ＦＡネットワークでは短い周期で制御通信を行う必要があるとともに、障害管理のために、短時間で障害通知を実施する必要がある。【０００５】
この点につき、従来技術では、優先度に従って送信するフレームの順番を制御することで障害フレームを優先して送信して、短時間での障害通知を実現している。【０００６】
例えば、特許文献１では、ノードが中継するフレームを優先中継フレームと非優先中継フレームに分け、自ノードから送信するフレームを優先送信フレームと非優先送信フレームに分け、フレームごとのバッファ（合計４つのバッファ）を設け、ノードが、フレーム間の優先度の順序に従って各フレームを送信する。
優先度は高い順に優先中継フレーム、優先送信フレーム、非優先中継フレーム、非優先送信フレームである。
非優先中継フレームがバッファに溜まった場合、非優先送信フレームのバッファへの入力を抑制することでバッファ溢れを防ぐ。【０００７】
特許文献１の技術をＦＡネットワークに適用すると、ノードが中継する障害フレームを特許文献１の優先中継フレームとし、ノードから送信する障害フレームを特許文献１の優先送信フレームとし、これら障害フレーム（優先中継フレーム、優先送信フレーム）を制御通信のための制御フレーム（非優先中継フレーム、非優先送信フレーム）に優先して送信することで、短時間での障害通知を実現することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−３５３９７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以上のように、特許文献１の方式をＦＡネットワークに適用すると、障害フレームを制御フレームに優先して送信することができ、短時間での障害通知を実現することができる。【００１０】
しかしながら、特許文献１の方式では、以下の課題がある。【００１１】
図４３は、特許文献１の方式での課題を説明する図である。
図４３は、一例として、３つのノードで構成されるＦＡネットワークでの通信フレームの送受信状況を示している。
図４３において、Ａ、Ｂ及びＣは、ノード１から送信される制御フレームを表し、Ｅはノード２から送信される障害フレームを表している。【００１２】
ノード１からは、順に、制御フレームＡ、制御フレームＢ、制御フレームＣが送信される。
ノード２では、ノード１からの制御フレームを受信し、受信した制御フレームを所定のバッファに格納し、受信した制御フレームをノード３に転送する。
ここで、ノード２が制御フレームＡをノード３に送信している途中でノード２において障害が発生し、障害フレームＥを送信する必要が生じたとする。
特許文献１では、ノード２は、制御フレームＡの送信を完了してから、障害フレームＥをノード３に送信し、その後制御フレームＢ、制御フレームＣを送信する。【００１３】
このように、特許文献１では、制御フレームの送信中に障害が発生した場合に、送信中の制御フレームの送信完了を待ち、その後障害フレームの送信を行う。
例えば、制御フレームを送信し始めた直後に障害が発生すると、障害フレームの送信は制御フレーム１フレームを送信する分、遅れてしまう。【００１４】
この発明は、これらの点に鑑みたものであり、通信フレームの送信中に優先して送信すべき特定のデータが新たに発生した場合に、この特定のデータを効率的かつ早期に送信できるようにし、また、特定データの発生時点で未送信であったデータの送信も早期に完了できるようにすることを主な目的とする。
【課題を解決するための手段】
【００１５】
本発明に係る通信装置は、
１つの通信フレームで送信するデータを、先頭から順に送信するデータ送信部と、
前記データ送信部がデータの送信を完了する前に特定のデータが新たに発生した場合に、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定部と、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御部とを有し、
前記データ送信部は、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記順序制御部による送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、特定のデータを未送信データの前に送信するため、特定のデータを効率的かつ早期に送信することができ、また、特定のデータの送信が完了した後の送信を未送信データから開始するため、未送信データの送信も早期に完了できる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１に係る通信方法の概要を示す図。
【図２】実施の形態１に係る通信装置の構成例を示す図。
【図３】実施の形態１に係る通信フレームの構成例を示す図。
【図４】実施の形態１に係る障害データを含まない制御フレームを示す図。
【図５】実施の形態１に係る障害データを含む制御フレームを示す図。
【図６】実施の形態１に係る障害データを含まない分割フレームを示す図。
【図７】実施の形態１に係る障害データを含まない分割フレームを示す図。
【図８】実施の形態１に係る障害フレームを示す図。
【図９】実施の形態１に係る障害データの制御フレームへの挿入例を示す図。
【図１０】実施の形態１に係る障害データの制御フレームへの挿入例を示す図。
【図１１】実施の形態１に係る障害データの制御フレームへの挿入例を示す図。
【図１２】実施の形態１に係る障害データの制御フレームへの挿入例を示す図。
【図１３】実施の形態１に係るデータ復元方法の概要を示す図。
【図１４】実施の形態１に係る送信フレーム生成部の構成例を示す図。
【図１５】実施の形態１に係る受信データ再構成部の構成例を示す図。
【図１６】実施の形態１に係るフレーム受信時の動作例を示すフローチャート図。
【図１７】実施の形態１に係るデータ生成時の動作例を示すフローチャート図。
【図１８】実施の形態１に係るフレーム送信時の動作例を示すフローチャート図。
【図１９】実施の形態１に係るフレーム送信時の動作例を示すフローチャート図。
【図２０】実施の形態１に係るフレーム送信時の動作例を示すフローチャート図。
【図２１】実施の形態１に係る分割フレーム送信処理の動作例を示すフローチャート図。
【図２２】実施の形態１に係る障害フレーム送信処理の動作例を示すフローチャート図。
【図２３】実施の形態２に係る通信装置の構成例を示す図。
【図２４】実施の形態２に係る通信装置の動作手順を示すフローチャート図。
【図２５】実施の形態２に係るヘッダ受信状態時の処理を示すフローチャート図。
【図２６】実施の形態２に係る制御受信状態時の処理を示すフローチャート図。
【図２７】実施の形態２に係る割込み障害受信状態時の処理を示すフローチャート図。
【図２８】実施の形態２に係る障害受信状態時の処理を示すフローチャート図。
【図２９】実施の形態２に係る送信待機状態時の処理を示すフローチャート図。
【図３０】実施の形態２に係る自装置送信状態時の処理を示すフローチャート図。
【図３１】実施の形態２に係る自装置自装置状態時及び自装置中継状態時の処理を示すフローチャート図。
【図３２】実施の形態２に係る自装置分割状態時の処理を示すフローチャート図。
【図３３】実施の形態２に係る中継送信状態時の処理を示すフローチャート図。
【図３４】実施の形態２に係る中継自装置状態時及び中継中継状態時の処理を示すフローチャート図。
【図３５】実施の形態２に係る中継分割状態時の処理を示すフローチャート図。
【図３６】実施の形態２に係る中継障害状態時の処理を示すフローチャート図。
【図３７】実施の形態２に係る自装置障害状態時の処理を示すフローチャート図。
【図３８】実施の形態２に係る外部入出力装置の出力処理を示すフローチャート図。
【図３９】実施の形態２に係る受信待機状態時の処理を示すフローチャート図。
【図４０】実施の形態２に係るフレーム受信時の状態遷移を示す図。
【図４１】実施の形態２に係るフレーム送信時の状態遷移を示す図。
【図４２】実施の形態１及び２に係る通信装置のハードウェア構成例を示す図。
【図４３】従来の通信方法の概要を示す図。
【発明を実施するための形態】
【００１８】
以下に示す実施の形態１及び２では、制御フレームに障害フレームを割り込ませることで制御通信の周期が短いままに、障害通知の時間を短縮する例を説明する。
なお、実施の形態１及び２では、制約として、制御通信の周期性を維持するために、制御フレームの送信を実施する通信装置はネットワーク上で同時に１つとし、かつ障害フレームの送信は制御フレームの通信の１周期に１回までとする。
ＦＡネットワークにおいても制御通信の周期性を維持するために、同様の制約を課す場合が多い。
【００１９】
ここで、図１を参照して、実施の形態１及び２におけるフレームの送信手順を概説する。
図１は、図４３と同様に、３つの通信装置（ノード１、ノード２、ノード３）で構成されるＦＡネットワークでの通信フレームの送受信状況を示している。
図１において、Ａ、Ｂ及びＣは、通信装置（ノード１）から送信される制御フレームを表している。
なお、Ｅは通信装置（ノード２）から送信される障害データを表している。
障害データＥは、障害の発生を通知するデータであり、図４３で説明した障害フレームのペイロード部分と、所定のデリミタで構成される。
また、障害データＥは、制御フレーム内の制御データよりも優先して送信すべきデータである。
【００２０】
通信装置（ノード１）からは、順に、制御フレームＡ、制御フレームＢ、制御フレームＣが送信される。
通信装置（ノード２）では、通信装置（ノード１）からの制御フレームを受信し、受信した制御フレームを所定のバッファに格納し、受信した制御フレームを通信装置（ノード３）に転送する。
ここで、通信装置（ノード２）が制御フレームＡを通信装置（ノード３）に送信している途中で通信装置（ノード２）において障害が発生し、障害データＥを送信する必要が生じたとする。
実施の形態１及び２では、通信装置（ノード２）は、制御データの送信を中断し（制御データＡ’）、障害データＥの送信を開始し、制御フレームＡの一部として障害データＥをノード３に送信する。
そして、通信装置（ノード２）は、障害データＥの送信を完了したら、バッファに格納されている制御フレームＡを用いて、送信が中断した位置から制御データの送信を開始する（制御データＡ’’）。
【００２１】
上述のように、特許文献１（図４３）では、制御フレームの送信中に障害が発生した場合に、制御フレームの送信を完了した後に、障害フレームの送信を行う。
これに対して、実施の形態１及び２（図１）では、障害データを制御フレームに挿入し、制御フレームの一部として障害データを送信し、障害データの送信後に、制御フレームの残存分のデータのみを送信する。
これにより、制御フレームの送信中に障害データが発生した場合に、障害データを効率的かつ早期に送信できる。
このように、実施の形態１及び２の方式によれば、制御通信の周期が短いままに、障害通知の時間を短縮することができる。
【００２２】
実施の形態１．
図２は、本実施の形態に係る通信装置１００の構成例を示す。
通信装置１００は、通信装置２００からフレームを受信し、通信装置３００にフレームを送信する。
通信装置１００にとって、通信装置２００は外部装置の例である。
通信装置１００が通信装置３００に送信するフレームは、通信装置２００から受信したフレームと、通信装置１００が生成したフレームである。
また、通信装置１００は、通信装置２００から受信した制御フレームに通信装置１００が生成した障害データを挿入し、通信装置１００が生成した障害データが挿入された通信装置２００からの制御フレームを通信装置３００に送信する場合もある。
また、通信装置１００は、通信装置２００から受信した制御フレームに通信装置２００から受信した障害データを挿入し、通信装置２００から受信した障害データが挿入された通信装置２００からの制御フレームを通信装置３００に送信する場合もある。
また、通信装置１００は、通信装置１００が生成した制御フレームに通信装置２００から受信した障害データを挿入し、通信装置２００から受信した障害データが挿入された通信装置１００が生成した制御フレームを通信装置３００に送信する場合もある。
また、通信装置１００は、通信装置１００が生成した制御フレームに通信装置１００が生成した障害データを挿入し、通信装置１００が生成した障害データが挿入された通信装置１００が生成した制御フレームを通信装置３００に送信する場合もある。
なお、図２では、通信装置１００の構成例を示しているが、通信装置２００及び通信装置３００も図１に示す構成を有する。
【００２３】
制御部１０１は、後述する１０２〜１０７の各要素の動作を制御する。
【００２４】
フレーム受信部１０２は、通信装置２００からフレームを受信する。
フレーム受信部１０２はデータ受信部の例に相当する。
【００２５】
受信データ分配部１０３は、フレーム受信部１０２が受信したフレームを、後述する受信データ再構成部１０４と送信フレーム生成部１０６に転送する。
また、受信データ分配部１０３は、フレーム受信部１０２が受信したフレームの種類を判別し、フレーム受信部１０２が受信したフレームが後述する障害フレームであれば、後述する送信フレーム生成部１０６に障害フレームの受信を通知する。
【００２６】
受信データ再構成部１０４は、フレーム受信部１０２が受信したフレームから制御通信のための制御データを抽出して、制御データを再構成する。
なお、受信データ再構成部１０４の詳細は、後述する。
【００２７】
データ生成部１０５は、フレーム送信部１０７から送信させるフレーム（データ）を生成する。
また、データ生成部１０５は、生成したフレームが障害フレームであれば、送信フレーム生成部１０６に障害フレームの生成を通知する。
【００２８】
送信フレーム生成部１０６は、受信データ分配部１０３よりフレーム受信部１０２が受信したフレームを入力し、また、データ生成部１０５が生成したフレームを入力し、フレーム送信部１０７から送信させるフレームを生成する。
また、送信フレーム生成部１０６は、受信データ分配部１０３から障害フレームの受信が通知された場合、又はデータ生成部１０５から障害フレームの生成が通知された場合に、障害フレームに含まれている障害データを優先してフレーム送信部１０７から送信させるようにフレームを生成する。
送信フレーム生成部１０６の詳細は、後述する。
【００２９】
フレーム送信部１０７は、通信装置３００にフレームを送信する。
より具体的には、フレーム送信部１０７は、１つのフレームで送信するデータを、先頭から順に送信する。
フレーム送信部１０７は、データ送信部の例に相当する。
【００３０】
次に、通信装置１００、通信装置２００、通信装置３００の間で送受信されるフレームのフレームフォーマットを説明する。
【００３１】
図３は、全てのフレームのひな形を示す。
フレーム１０００は、フレームヘッダ１０１０とフレームデータ１０２０で構成される。
フレームヘッダ１０１０は、フレームタイプ１０１１とフレームサイズ１０１２で構成される。
フレームタイプ１０１１は、フレーム１０００の種類を示しフレーム１０００の種類には制御フレーム、分割フレーム、障害フレームの３種類がある。
制御フレームは、制御データが含まれるフレームである。
分割フレームは、制御フレームに障害データが含まれることにより、制御フレームから押し出されたデータ（制御データ、障害データ）が含まれるフレームである。
障害フレームは、障害データが含まれるフレームである。
フレームサイズ１０１２は、フレーム１０００の受信完了を検出するためのフレームサイズである。
フレームサイズ１０１２には、フレーム１０００全体のデータサイズが示されている。
【００３２】
以下、図４〜図８を参照して、３種類のフレームを説明する。
３種類のフレームは共通してフレームタイプ１０１１とフレームサイズ１０１２とフレームデータ１０２０を持つ。
制御フレームを示すフレームタイプ１０１１を持つフレームヘッダ１０１０を制御フレームヘッダ２０１０、３０１０と呼ぶ。
分割フレームを示すフレームタイプ１０１１を持つフレームヘッダ１０１０を分割フレームヘッダ４０１０、５０１０と呼ぶ。
障害フレームを示すフレームタイプ１０１１を持つフレームヘッダ１０１０を障害フレームヘッダ６０１０と呼ぶ。
３種類のフレームは、それぞれ構成の異なるフレームデータ１０２０を持つ。
フレームデータ１０２０の構成要素となるのは制御データ２０２０、障害発生前分割制御データ３０２０、デリミタ３０３０、５０２０、障害データ３０４０、５０３０、６０２０、障害発生後分割制御データ３０５０、フレームから押し出された分割制御データ４０２０である。
【００３３】
次に、図４及び図５を参照して、制御フレームのフレームフォーマットを説明する。
制御フレームには、障害データを含まない制御フレーム２０００と障害データを含む制御フレーム３０００がある。
【００３４】
図４に示すように、障害データを含まない制御フレーム２０００において、２０１０は制御フレームヘッダであり、２０２０は制御データである。
障害データを含まない制御フレーム２０００は、フレーム受信部１０２が受信した制御フレーム、データ生成部１０５が生成した制御フレームのままである。
【００３５】
図５に示すように、障害データを含む制御フレーム３０００において、３０１０は制御フレームヘッダであり、３０２０は障害発生前分割制御データであり、３０３０は障害データの範囲を検出するためのデリミタであり、３０４０は障害データであり、３０５０は障害発生後分割制御データである。
障害データを含む制御フレーム３０００は、フレーム受信部１０２が受信した制御フレーム、データ生成部１０５が生成した制御フレームに、フレーム送信部１０７においてデリミタ３０３０と障害データ３０４０とが挿入されている。
なお、制御フレームヘッダ３０１０は、障害データを含まない制御フレーム２０００の制御フレームヘッダ２０１０と同じものである。
換言すれば、制御フレームヘッダ３０１０は、デリミタ３０３０と障害データ３０４０とが挿入される前の制御フレームの制御フレームヘッダから変化していない。
【００３６】
次に、図６及び図７を参照して、分割フレームのフレームフォーマットを説明する。
分割フレームには、障害データを含まない分割フレーム４０００と障害データを含む分割フレーム５０００がある。
なお、障害データを含まない分割フレーム４０００と障害データを含む分割フレーム５０００のいずれも、フレーム送信部１０７により生成される。
【００３７】
図６に示すように、障害データを含まない分割フレーム４０００において、４０１０は分割フレームヘッダであり、４０２０はフレームから押し出された分割制御データである。
障害データを含まない分割フレーム４０００は、図５に示すように、制御フレームにデリミタ３０３０と障害データ３０４０とが挿入されたために、制御フレームから押し出された部分（制御データ）を、フレームから押し出された分割制御データ４０２０として含む。
【００３８】
図７に示すように、障害データを含む分割フレーム５０００において、５０１０は分割フレームヘッダであり、５０２０はデリミタであり、５０３０は障害データである。
障害データを含む分割フレーム５０００は、最後尾にデリミタ５０２０と障害データ５０３０が含まれている制御フレームに、新たなデリミタ３０３０と障害データ３０４０とが挿入されたために、制御フレームから押し出された部分（デリミタ５０２０と障害データ５０３０）を含む。
【００３９】
次に、図８を参照して、障害フレームのフレームフォーマットを説明する。
障害フレーム６０００において、６０１０は障害フレームヘッダであり、６０２０は障害データである。
障害フレーム６０００は、フレーム受信部１０２が受信した障害フレーム、データ生成部１０５が生成した障害フレームである。
なお、障害フレーム６０００には、他の障害データが挿入されることはない。
【００４０】
なお、図４〜図８のフレームフォーマットにおいて、フレームヘッダは予め定められたサイズであり、デリミタも予め定められたサイズであり、障害データも予め定められたサイズである。
制御フレームのサイズは可変である。
但し、前述したように、制御フレームに障害データとデリミタが挿入された場合（図５）でも、障害データとデリミタ挿入後の制御フレームのサイズは、当初のサイズのまま維持される。
このため、デリミタと障害データのデータサイズ分のデータが押し出されることになり、押し出されたデータが分割フレーム（図６、図７）にて送信される。
また、フレームタイプとフレームサイズとフレームデータのフレームの先頭からの位置は予め定められている。
【００４１】
なお、本実施の形態において通信装置１００、通信装置２００、通信装置３００の間で、データはワード単位でやり取りされる。
１ワードはデリミタと同じサイズである。
【００４２】
なお、通信装置１００は、以下のルールに従って、障害データを制御フレームに挿入する。
ルール：
制御フレームの送信中に障害データが発生した場合に、障害データの発生時点で未送信の未送信データ内で先頭に位置するデータ（先頭未送信データ）のデータ種別が優先種別でない場合（つまり、先頭未送信データが制御データの場合）、通信装置１００は、即座にデリミタと障害データの送信を開始する（つまり、デリミタと障害データを先頭未送信データである制御データに先行して送信する）。
一方、先頭未送信データのデータ種別が優先種別である場合（つまり、先頭未送信データが障害データの場合）、通信装置１００は、先頭未送信データを含む障害データの送信が完了した時点で、新たに発生した障害データの送信を開始する（つまり、先頭未送信データを含む障害データを送信した後にデリミタと新たな障害データを送信する）。
なお、「障害データが発生した場合」とは、通信装置１００が通信装置２００から障害フレームを受信した場合と通信装置１００内のデータ生成部１０５が障害フレームを生成した場合の両者を含む。
また、通信装置１００が送信中の制御フレームは、フレーム受信部１０２が通信装置２００から受信した制御フレーム、通信装置１００のデータ生成部１０５が生成した制御フレームのいずれかである。
障害データを優先して送信した結果、押し出されたデータは、分割フレームとして、制御フレームに続けて送信する。
【００４３】
次に、図５に示す障害データを含む制御フレーム３０００の具体例を、図９〜図１２を参照して説明する。
【００４４】
図９は、障害データを含まない制御フレーム２０００ａに障害データを挿入する例を示している。
なお、図９〜図１２では、制御フレームヘッダを「制御」、制御データを「Ａ」と表記している。
また、分割フレームヘッダを「分割」と表記していている。
図９の例では、障害データが発生した時点の未送信先頭データは制御データなので、通信装置１００は、即座に障害データＥ（デリミタと障害データ）の送信を開始する。
この結果、制御フレーム３０００ａに示すように、障害データＥが送信される。
なお、図９では、デリミタと障害データを合わせて障害データＥとしている。
図１０〜図１２においても、障害データＥと表記するが、図９と同様に、障害データＥはデリミタと障害データの組合せである。
障害データＥの送信が終了すると、通信装置１００は、未送信の制御データＡを送信する。
障害データＥが挿入されたため、未送信の制御データＡの一部は当該制御フレーム３０００ａに含ませることができない。
このため、通信装置１００は、制御フレーム３０００ａに含ませることができなかった一部の制御データを分割フレーム４０００ａにて送信する。
この結果、障害データＥと、障害データＥの挿入前の制御データＡ（１／３）と、障害データＥの挿入後の制御データＡ（２／３）が、同じ制御フレーム３０００ａで送信され、押し出された制御データＡ（３／３）が分割フレーム４０００ａで送信される。
【００４５】
図１０は、障害データＥ０を含む制御フレーム３０００ｂに新たな障害データＥ１を挿入する例を示している。
なお、障害データＥ０が挿入されたために制御フレーム３０００ｂから押し出された一部の制御データＡ（制御データＡ（３／３））は、後続する分割フレーム４０００ｂに含まれている。
図１０の例では、障害データが発生した時点の未送信先頭データは制御データＡ（１／３）であるため、通信装置１００は、即座に障害データＥ１の送信を開始する。
この結果、制御データＡ（１／３）の途中で障害データＥ１の送信が開始し、障害データＥ１の送信後に、通信装置１００は、制御データＡ（１／３）の未送信部分と、障害データＥ０と、障害データＥ０以降の制御データＡを制御フレーム３０００ｃにて送信する。
障害データＥ１が挿入されたため、制御データＡの一部は当該制御フレーム３０００ｃに含ませることができない。
このため、通信装置１００は、制御フレーム３０００ｃに含ませることができなかった一部の制御データを分割フレーム４０００ｃにて送信する。
また、通信装置１００は、分割フレーム４０００ｃの送信後に、分割フレーム４０００ｂを分割フレーム４０００ｄとして送信する。
この結果、障害データＥ１と、障害データＥ１の挿入前の制御データＡ（１／５）と、障害データＥ１の挿入後の制御データＡ（２／５）と、障害データＥ０と、障害データＥ０の後の制御データＡ（３／５）が同じ制御フレーム３０００ｃで送信され、押し出された制御データＡ（４／５）が分割フレーム４０００ｃで送信され、更に、分割フレーム４０００ｂの制御データＡ（５／５）が分割フレーム４０００ｄで送信される。
【００４６】
図１１は、障害データＥ０を含む制御フレーム３０００ｅに新たな障害データＥ１を挿入する例を示している。
なお、障害データＥ０が挿入されたために制御フレーム３０００ｅから押し出された一部の制御データＡ（制御データＡ（３／３））は、後続する分割フレーム４０００ｅに含まれている。
図１１の例では、障害データが発生した時点の未送信先頭データは制御データＡ（２／３）であるため、通信装置１００は、即座に障害データＥ１の送信を開始する。
この結果、制御データＡ（２／３）の途中で障害データＥ１の送信が開始し、障害データＥ１の送信後に、通信装置１００は、制御データＡ（２／３）の未送信部分を制御フレーム３０００ｆにて送信する。
制御フレーム３０００ｆには、障害データの発生前に送信された制御データＡ（１／５）と障害データＥ０と、制御データＡ（２／５）も含まれる。
障害データＥ１が挿入されたため、制御データＡ（２／３）の一部は当該制御フレーム３０００ｆに含ませることができない。
このため、通信装置１００は、制御フレーム３０００ｆに含ませることができなかった一部の制御データを分割フレーム４０００ｆにて送信する。
また、通信装置１００は、分割フレーム４０００ｆの送信後に、分割フレーム４０００ｅを分割フレーム４０００ｇとして送信する。
この結果、制御データＡ（１／５）と、障害データＥ０と、制御データＡ（２／５）と、障害データＥ１と、障害データＥ１の挿入後の制御データＡ（３／５）が同じ制御フレーム３０００ｆで送信され、押し出された制御データＡ（４／５）が分割フレーム４０００ｆで送信され、更に、分割フレーム４０００ｅの制御データＡ（５／５）が分割フレーム４０００ｇで送信される。
【００４７】
図１２は、障害データＥ０を含む制御フレーム３０００ｈに新たな障害データＥ１を挿入する例を示している。
なお、障害データＥ０が挿入されたために制御フレーム３０００ｈから押し出された一部の制御データＡ（制御データＡ（３／３））は、後続する分割フレーム４０００ｈに含まれている。
図１２の例では、障害データが発生した時点の未送信先頭データは障害データＥ０であるため、通信装置１００は、障害データＥ０の送信完了を待って障害データＥ１の送信を開始する。
制御フレーム３０００ｉには、障害データＥ０の前に送信された制御データＡ（１／５）も含まれる。
障害データＥ１が挿入されたため、制御データＡ（２／３）の一部は当該制御フレーム３０００ｉに含ませることができない。
このため、通信装置１００は、制御フレーム３０００ｉに含ませることができなかった一部の制御データを分割フレーム４０００ｉにて送信する。
また、通信装置１００は、分割フレーム４０００ｉの送信後に、分割フレーム４０００ｈを分割フレーム４０００ｊとして送信する。
この結果、制御データＡ（１／４）と、障害データＥ０と、障害データＥ１と、障害データＥ１の挿入後の制御データＡ（２／４）が同じ制御フレーム３０００ｉで送信され、押し出された制御データＡ（３／４）が分割フレーム４０００ｉで送信され、更に、分割フレーム４０００ｈの制御データＡ（４／４）が分割フレーム４０００ｊで送信される。
【００４８】
次に、以上の説明を踏まえて、送信フレーム生成部１０６の詳細を説明する。
図１４は、送信フレーム生成部１０６の内部構成例を示す。
図１４に示すように、送信フレーム生成部１０６は、送信用バッファ部１１０とフレーム生成管理部１２０に大別される。
なお、図１４では、制御部１０１と受信データ再構成部１０４の図示を省略している。
【００４９】
送信用バッファ部１１０において、障害フレームバッファ部１１１は、受信データ分配部１０３から転送された障害フレーム及びデータ生成部１０５により生成された障害フレームを、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）方式で蓄積する。
なお、障害フレームバッファ部１１１は、障害フレームヘッダを含めた障害フレーム全体を蓄積する。
制御フレームバッファ部１１２は、受信データ分配部１０３から転送された制御フレーム（障害データが含まれる制御フレームと障害データが含まれない制御フレームの両者）及びデータ生成部１０５により生成された制御フレームと、受信データ分配部１０３から転送された分割フレーム（障害データが含まれる分割フレームと障害データが含まれない分割フレームの両者）とを、ＦＩＦＯ方式で蓄積する。
なお、制御フレームバッファ部１１２は、制御フレームヘッダを含めた制御フレーム全体を蓄積し、分割フレームヘッダを含めた分割フレーム全体を蓄積する。
【００５０】
フレーム生成管理部１２０において、送信決定部１２１は、フレーム送信部１０７がデータの送信を完了する前に障害データ（特定のデータの例）が発生した場合に、先頭未送信データのデータ種別（制御データか障害データか）を解析し、障害データを未送信データの前に送信するか否かを決定する。
つまり、送信決定部１２１は、先頭未送信データが制御データであれば、障害データを先頭未送信データ（制御データ）に先行して送信すると決定する。
一方、送信決定部１２１は、先頭未送信データが障害データであれば、先頭未送信データを含む障害データが送信された後に新たな障害データを送信すると決定する。
なお、送信決定部１２１は、受信データ分配部１０３又はデータ生成部１０５からの通知により障害データの発生を検出することできる。
また、送信決定部１２１は、障害データのデータサイズを予め記憶している。
【００５１】
順序制御部１２２は、送信決定部１２１が障害データの発生を検出していなければ、制御フレームバッファ部１１２内のデータを１ワードずつ読み出し、読み出した１ワードのデータをフレーム送信部１０７に出力する。
そして、送信決定部１２１が障害データの発生を検出した場合は、順序制御部１２２は、障害データの既定データサイズに達するまで、障害フレームバッファ部１１１内のデータを１ワードずつ読み出し、読み出した１ワードのデータをフレーム送信部１０７に出力する。
つまり、順序制御部１２２は、制御フレームバッファ部１１２内のデータをフレーム送信部１０７に出力している際に、送信決定部１２１が障害データの発生を検出した場合は、制御フレームバッファ部１１２内のデータのフレーム送信部１０７への出力を中止し、障害データのデータサイズに達するまで、障害フレームバッファ部１１１内のデータをフレーム送信部１０７に出力する。
このように、順序制御部１２２は、障害データと制御データの送信順序を制御し、障害データが先に送信されるようにする。
【００５２】
残りデータサイズカウント部１２３は、送信可能残りデータサイズ（以下、「送信可能残りサイズ」という）とフレーム残りデータサイズ（以下、「フレーム残りサイズ」という）をカウントする。
送信可能残りサイズは、現在の制御フレームで送信可能な残りのデータサイズである。
つまり、送信可能残りサイズは、制御フレームヘッダ２０１０（図４）のフレームサイズ１０１２（図３）に記述されているデータサイズから制御フレームヘッダ２０１０のデータサイズ（既定データサイズ）を差し引いて得られるデータサイズ（制御データ２０２０のデータサイズ）から、送信済みの制御データのデータサイズと送信済みの障害データ（挿入された障害データ）のデータサイズの合計値を差し引いた値である。
フレーム残りサイズは、現在の制御フレームに含まれる制御データのうち未送信の制御データのデータサイズである。
つまり、フレーム残りサイズは、制御フレームヘッダ２０１０（図４）のフレームサイズ１０１２（図３）に記述されているデータサイズから制御フレームヘッダ２０１０のデータサイズ（既定データサイズ）を差し引いて得られるデータサイズ（制御データ２０２０のデータサイズ）から、送信済みの制御データのデータサイズを差し引いた値である。
送信決定部１２１は、障害データの発生時点での送信可能残りサイズが、障害データのデータサイズとデリミタのデータサイズとの加算値以上であれば、当該障害データを現在の制御フレームで送信するよう決定する。
一方、障害データの発生時点での送信可能残りサイズが、障害データのデータサイズとデリミタのデータサイズとの加算値未満であれば、送信決定部１２１は、当該障害データを現在の制御フレームではなく、後続のフレームで送信するよう決定する。
【００５３】
次に、受信データ再構成部１０４の詳細を説明する。
図１５は、受信データ再構成部１０４の内部構成例を示す。
図１５に示すように、受信データ再構成部１０４は、再構成用バッファ部１３０と再構成管理部１４０に大別される。
なお、図１５では、制御部１０１とデータ生成部１０５と送信フレーム生成部１０６とフレーム送信部１０７の図示を省略している。
【００５４】
再構成用バッファ部１３０において、障害フレームバッファ部１３１は、受信データ分配部１０３から転送された障害フレームを、ＦＩＦＯ方式で蓄積する。
なお、障害フレームバッファ部１３１は、障害フレームヘッダを含めた障害フレーム全体を蓄積する。
制御フレームバッファ部１３２は、受信データ分配部１０３から転送された制御フレーム（障害データが含まれる制御フレームと障害データが含まれない制御フレームの両者）と分割フレーム（障害データが含まれる分割フレームと障害データが含まれない分割データの両者）を、ＦＩＦＯ方式で蓄積する。
なお、制御フレームバッファ部１３２は、制御フレームヘッダを含めた制御フレーム全体を蓄積し、分割フレームヘッダを含めた分割フレーム全体を蓄積する。
【００５５】
再構成管理部１４０において、データ抽出部１４１は、制御フレームバッファ部１３２からデータを読み出し、読み出したデータが制御データならば、その制御データを制御データ用スタック１４４（分割データ格納部の例）にプッシュし、読み出したデータが障害データならば、その障害データを障害データ用スタック１４５にプッシュする。
【００５６】
データサイズカウント部１４２は、制御データ用スタック１４４に格納されている制御データのデータサイズの累積値をカウントし、また、障害データ用スタック１４５に格納されている障害データのデータサイズの累積値をカウントする。
【００５７】
データ復元部１４３は、制御フレームの制御フレームヘッダのフレームサイズに記述されているデータサイズから制御フレームヘッダのデータサイズを差し引いて、制御データのデータサイズを導出する。
そして、データサイズカウント部１４２がカウントしたデータサイズの累積値が、導出した制御データのデータサイズに達した際に、制御データ用スタック１４４に格納されている制御データを用いて、制御データを復元する。
つまり、障害データの挿入により１つの制御フレームに含まれていた１つの制御データが複数の部分データに分割された場合に、データ復元部１４３は、制御フレームヘッダのフレームサイズから分割前の制御データの総データサイズを導出し、データサイズカウント部１４２のカウント値が、導出した制御データの総データサイズに達した際に、制御データ用スタック１４４に格納されている制御データの部分データを統合して、分割前の制御データを復元することができる。
また、同様に、データ復元部１４３は、データサイズカウント部１４２がカウントしたデータサイズの累積値が、障害データのデータサイズ（既定サイズ）に達した際に、障害データ用スタック１４５に格納されている障害データを用いて、元の障害データを復元する。
【００５８】
図１３は、受信データ再構成部１０４の動作原理を示す。
例えば、通信装置２００において制御フレーム３０００ｋに障害データＥ１が挿入された結果、通信装置１００が、制御フレーム３０００ｌと分割フレーム４０００ｌとを受信したとする。
また、通信装置１００が、制御フレーム３０００ｋに後続する分割フレーム４０００ｌを、分割フレーム４０００ｍとして受信したとする。
前述したように、制御フレーム３０００ｌの制御フレームヘッダのフレームサイズから、分割前の制御データＡのデータサイズ（制御データＡ（１／４）〜Ａ（４／４）の合計サイズ）を導出可能である。
通信装置１００の受信データ分配部１０３は、制御フレーム３０００ｌと分割フレーム４０００ｌと分割フレーム４０００ｍを受信データ再構成部１０４に転送し、受信データ再構成部１０４では、制御フレームバッファ部１３２がこれらフレームを蓄積する。
そして、データ抽出部１４１が制御フレームバッファ部１３２より、制御フレーム３０００ｌの先頭からデータを読み出す。
データ抽出部１４１が制御フレームヘッダのフレームサイズを読み出した際に、データ復元部１４３が、フレームサイズに記述されるデータサイズから制御データのデータサイズを導出し、導出した制御データのデータサイズをデータサイズカウント部１４２に登録する。
データ抽出部１４１は制御フレーム３０００ｌ内のデータを順次読み出し、読み出したデータが制御データであれば制御データ用スタック１４４にプッシュし、障害データであれば障害データ用スタック１４５にプッシュする。
データサイズカウント部１４２は、制御データ用スタック１４４内のデータサイズ及び障害データ用スタック１４５内のデータサイズをカウントする。
なお、デリミタの次のデータは障害データなので、データ抽出部１４１は、デリミタが出現するまでは、読み出したデータを制御データと判断する。
デリミタが出現した後、障害データのデータサイズ（既定サイズ）分を読み出した後は、データ抽出部１４１は、再び制御データを読み出したと判断する。
以降、同様にして、データ抽出部１４１は分割フレーム４０００ｌのデータと分割フレーム４０００ｍのデータを読み出し、読み出したデータを制御データ用スタック１４４又は障害データ用スタック１４５にプッシュする。
そして、制御データ用スタック１４４のデータサイズが、データサイズカウント部１４２に登録したデータサイズに達した際に、制御データ用スタック１４４に格納されている分割後の制御データＡ（１／４）〜Ａ（４／４）を用いて、分割前の元の制御データＡを復元する。
同様に、障害データ用スタック１４５のデータサイズが、障害データの既定のデータサイズに達した際に、障害データ用スタック１４５に格納されている障害データＥ０（１／２）とＥ０（２／２）を用いて、分割前の元の障害データＥ０を復元する。
【００５９】
次に、フレーム受信部１０２及び受信データ分配部１０３の動作例を、図１６を参照して説明する。
【００６０】
先ず、フレーム受信部１０２が、通信装置２００からのフレームを受信し（ステップＳ１５１）、所定の受信バッファに受信したフレームを格納する。
【００６１】
次に、受信データ分配部１０３が、受信バッファ内のフレームのヘッダ（フレームタイプ）を検査し、フレームの種類を判断する（ステップＳ１５２、Ｓ１５３）。
フレームの種類が制御フレーム又は分割フレームであれば、受信データ分配部１０３は、制御フレーム又は分割フレームを制御フレームバッファ部１１２と制御フレームバッファ部１３２に転送し、制御フレームバッファ部１１２と制御フレームバッファ部１３２に制御フレーム又は分割フレームを格納する（ステップＳ１５４）。
フレームの種類が障害フレームであれば、受信データ分配部１０３は、送信決定部１２１に障害データの受信を通知し（ステップＳ１５５）、また、障害フレームを障害フレームバッファ部１１１と障害フレームバッファ部１３１に転送し、障害フレームバッファ部１１１と障害フレームバッファ部１３１に障害フレームを格納する（ステップＳ１５６）。
【００６２】
次に、データ生成部１０５の動作例を、図１７を参照して説明する。
【００６３】
データ生成部１０５は、データを生成した場合に、生成したデータが障害データであれば（ステップＳ２０１）、送信決定部１２１に障害データの生成を通知する（ステップＳ２０２）。
また、データ生成部１０５は、障害データに障害フレームヘッダを付加して障害フレームを生成し、生成した障害フレームを障害フレームバッファ部１１１に転送し、障害フレームバッファ部１１１に障害フレームを格納する（ステップＳ２０３）。
一方、生成したデータが制御データであれば（ステップＳ２０１）、データ生成部１０５は、制御データに制御フレームヘッダを付加して制御フレームを生成し、生成した制御フレームを制御フレームバッファ部１１２に転送し、制御フレームバッファ部１１２に制御フレームを格納する（ステップＳ２０４）。
【００６４】
次に、送信フレーム生成部１０６の動作例を、図１８〜図２２を参照して説明する。
【００６５】
先ず、送信フレーム生成部１０６内の送信決定部１２１が受信データ分配部１０３又はデータ生成部１０５から障害データが発生した旨の通知を受けていない場合（図１８のステップＳ３０１でＮＯ）は、制御フレームバッファ部１１２内に制御フレームがあるか否かが判断される（ステップＳ３０２）。
制御フレームバッファ部１１２内に制御フレームがない場合（ステップＳ３０２でＮＯ）は、処理がステップＳ３０１に戻る。
制御フレームバッファ部１１２内に制御フレームがある場合（ステップＳ３０２でＹＥＳ）は、送信決定部１２１からの指示により順序制御部１２２が、制御フレームバッファ部１１２から制御フレームの１ワード分のデータを読み出す（ステップＳ３０３）。
次に、順序制御部１２２は、読み出したデータの種類を判断し（ステップＳ３０４）、読み出したデータが制御フレームヘッダである場合は、フレーム残りサイズと送信可能残りサイズを、所定の記憶領域に設定する。
より具体的には、順序制御部１２２は制御フレームヘッダ内のフレームサイズに記述されているサイズからフレームヘッダのサイズを差し引いた値を、フレーム残りサイズと送信可能残りサイズとして設定する。
一方、ステップＳ３０３で読み出したデータがデリミタである場合は、デリミタの後に障害データが続くので、順序制御部１２２は、障害残りサイズを、所定の記憶領域に設定する（ステップＳ３０６）。
順序制御部１２２は、障害残りサイズとして、障害データの既定データサイズを設定する。
また、ステップＳ３０３で読み出したデータが制御フレームヘッダでもデリミタでもない場合は、順序制御部１２２は、障害残りサイズが１ワード分以上ある場合（ステップＳ３０７でＹＥＳ）は、障害残りサイズをデクリメントし（ステップＳ３０８）、更に、フレーム残りサイズと送信可能残りサイズをデクリメントする（ステップＳ３０９）。
一方、障害残りサイズが０である場合（ステップＳ３０７でＮＯ）は、フレーム残りサイズと送信可能残りサイズだけをデクリメントする（ステップＳ３０９）。
次に、順序制御部１２２は、ステップＳ３０３で読み出したデータをフレーム送信部１０７に送信する。
【００６６】
次に、送信決定部１２１が、フレーム残りサイズと送信可能残りサイズの値を確認する（ステップＳ３１１）。
フレーム残りサイズが０であり、送信可能残りサイズが０である場合、又はフレーム残りサイズが１ワード以上であり、送信可能残りサイズが１ワード以上である場合は、処理をステップＳ３０１に戻す。
フレーム残りサイズが０であり、送信可能残りサイズが０であることは、障害データが挿入されずに１つの制御フレームに含まれている制御データがそのまま１つの制御フレームで送信されたことを意味する。
フレーム残りサイズが１ワード以上であり、送信可能残りサイズが１ワード以上であることは、１つの制御フレームに含まれている制御データのうち一部の制御データが未送信で残っており、また、その制御フレームにおいて送信可能なデータサイズが残っていることを意味する。
一方、フレーム残りサイズが１ワード以上であり、送信可能残りサイズが０である場合は、分割フレームの送信処理が行われる（ステップＳ３１２）。
分割フレームの送信処理は、図２１を参照して後述する。
なお、フレーム残りサイズが１ワード以上であり、送信可能残りサイズが０であることは、デリミタと障害データが挿入されたために、１つの制御フレームに含まれていた制御データのうちの一部が押し出され、その制御フレームでは送信できなかったことを意味する。
【００６７】
ステップＳ３０１において、送信決定部１２１が受信データ分配部１０３又はデータ生成部１０５から障害データが発生した旨の通知を受けた場合（ステップＳ３０１でＹＥＳ）は、送信決定部１２１は、送信可能残りサイズがあるか否かを確認する（図１９のステップＳ４０１）。
送信可能残りサイズがある場合（ステップＳ４０１でＹＥＳ）は、送信決定部１２１は、障害残りサイズがあるか否かを確認する（ステップＳ４０２）。
障害残りサイズがある場合（ステップＳ４０２でＹＥＳ）は、現在、送信途中の障害データが存在していることを意味するので、現在送信途中の障害データの送信が完了してから、図１８のステップＳ３０１で通知された障害データを制御フレームに挿入する。
なお、ステップＳ４０２でＹＥＳの状態は、図１２に示す、障害データＥ０の送信中に障害データＥ１が発生した状態に相当する。
このため、順序制御部１２２は送信決定部１２１からの指示により、制御フレームバッファ部１１２から制御フレームの１ワード分のデータ（送信途中の障害データの残り）を読み出す（ステップＳ４０３）。
次に、順序制御部１２２が、フレーム残りサイズ、送信可能残りサイズ、障害残りサイズをデクリメントする（ステップＳ４０４）。
以降、障害残りサイズが０になるまで、ステップＳ４０１〜Ｓ４０４の処理が繰り返される。
【００６８】
ステップＳ４０２において障害残りサイズが０と判断された場合（ステップＳ４０２でＮＯ）は、送信決定部１２１が、障害データを送信するために十分な送信可能残りサイズがあるかを確認する（図２０のステップＳ５０１）。
つまり、送信可能残りサイズが障害データの既定データサイズとデリミタの加算値以上であれば、ステップＳ５０１でＹＥＳとなり、加算値未満であれば、ステップＳ５０１でＮＯとなる。
送信可能残りサイズが十分であれば（ステップＳ５０１でＹＥＳ）、順序制御部１２２は送信決定部１２１の指示により、障害フレームバッファ部１１１から障害フレームの１ワード分のデータを読み出し、読み出したデータをフレーム送信部１０７に出力する（ステップＳ５０２）。
なお、障害フレームバッファ部１１１からの初回の読出しでは、障害フレームヘッダが読み出されるので、順序制御部１２２は、読み出した障害フレームヘッダはフレーム送信部１０７に出力せず、代わりにデリミタをフレーム送信部１０７に出力する。
次に、順序制御部１２２は、送信可能残りサイズをデクリメントする（ステップＳ５０３）。
次に、送信決定部１２１が、障害データの全てがフレーム送信部１０７に出力されたか否かを確認し（ステップＳ５０４）、出力されていない障害データがあれば、ステップＳ５０２〜Ｓ５０４の処理が繰り返される。
障害データの全てがフレーム送信部１０７に出力されていれば、処理が図１８のステップＳ３１１に移行する。
なお、送信決定部１２１は、障害データの既定データサイズを記憶しているので、順序制御部１２２が障害フレームバッファ部１１１から障害データの全てを読み出したか否かを判断することができる。
【００６９】
ステップＳ５０１において送信可能残りサイズが十分ではないと判断された場合（ステップＳ５０１でＮＯ）は、図１８のステップＳ３０１で通知のあった障害データは、現在の制御フレームでは送信できないので、現在の制御フレームの送信が完了したのちに、障害フレームとして送信される。
このため、ステップＳ５０５〜Ｓ５０７において現在の制御フレームを送信する処理が完了した後に、ステップＳ５０８において障害フレームの送信処理が行われる。
ステップＳ５０５では、送信決定部１２１の指示により、順序制御部１２２が制御フレームバッファ部１１２から制御フレームの１ワード分のデータを読み出し、読み出したデータをフレーム送信部１０７に送信する。
次に、ステップＳ５０６において、順序制御部１２２が、フレーム残りサイズと送信可能残りサイズをデクリメントする。
次に、ステップＳ５０７において、送信決定部１２１が、フレーム残りサイズと送信可能残りサイズの値を確認する。
フレーム残りサイズが０であり、送信可能残りサイズが０である場合は、ステップＳ５０８において障害フレームの送信処理が行われる。
障害フレームの送信処理は図２２を参照して後述する。
障害フレームの送信処理が終了すると、処理が図１８のステップＳ３０１に移行する。
また、フレーム残りサイズが１ワード以上であり、送信可能残りサイズが１ワード以上である場合は、処理をステップＳ５０５に戻す。
また、フレーム残りサイズが１ワード以上であり、送信可能残りサイズが０である場合は、ステップＳ５０９において障害フレームの送信処理が行われ、ステップＳ５１０において分割フレームの送信処理が行われる。
分割フレームの送信処理は、図２１を参照して後述する。
分割フレームの送信処理の終了後、ステップＳ５０８において障害フレームの送信処理が行われる。
【００７０】
次に、図１９のステップＳ４０１において送信可能残りサイズがないと判断された場合（ステップＳ４０１でＮＯ）は、１つ制御フレームのデータサイズ分の送信が完了している状態なので、図１８のステップＳ３０１で通知のあった障害データは、制御フレームに挿入するのではなく、障害フレームとして送信される。
ここで、送信決定部１２１は、フレーム残りサイズがあるか否かを確認し（ステップＳ４０５）、フレーム残りサイズがない場合は、ステップＳ５０８において障害フレームの送信処理が行われる（ステップＳ４０６）。
一方、フレーム残りサイズがある場合は、１つの制御フレームに含まれていたが、その制御フレームでは送信できなかった制御データ又は障害データが存在するので、ステップＳ４０７において障害フレームの送信処理が行われ、ステップＳ４０８において分割フレームの送信処理が行われる。
【００７１】
次に、図２１を参照して、分割フレームの送信処理を説明する。
【００７２】
先ず、送信決定部１２１が分割フレームヘッダを生成し、順序制御部１２２が分割フレームヘッダをフレーム送信部１０７に出力する（ステップＳ６０１）。
次に、送信決定部１２１の指示により、順序制御部１２２が制御フレームバッファ部１１２から制御フレームの１ワード分のデータを読み出し、読み出したデータをフレーム送信部１０７に出力する（ステップＳ６０２）。
また、このとき、順序制御部１２２はフレーム残りサイズをデクリメントする。
次に、送信決定部１２１が、フレーム残りサイズがあるか否かを確認し（ステップＳ６０３）、フレーム残りサイズがある場合には、フレーム残りサイズが０になるまで、ステップＳ６０１〜Ｓ６０３の処理が繰り返される。
フレーム残りサイズが０になれば、押し出されたデータが全て分割フレームで送信されたことになる。
【００７３】
次に、図２２を参照して、障害フレームの送信処理を説明する。
【００７４】
先ず、送信決定部１２１の指示により、順序制御部１２２は障害フレームバッファ部１１１から障害フレームの１ワード分のデータを読み出し、読み出したデータをフレーム送信部１０７に送信する（ステップＳ７０１）。
次に、送信決定部１２１が、障害データの全てがフレーム送信部１０７に出力されたか否かを確認し（ステップＳ７０２）、出力されていない障害データがあれば、ステップＳ７０１及びＳ７０２の処理が繰り返される。
なお、前述したように、送信決定部１２１は、障害データの既定データサイズを記憶しているので、順序制御部１２２が障害フレームバッファ部１１１から障害データの全てを読み出したか否かを判断することができる。
【００７５】
以上のように、本実施の形態によれば、通信装置２００が障害通知を実施した際、通信装置１００は制御フレームに障害通知を割り込ませることで制御通信の周期が短いままに、障害通知の時間を短縮することができる。
【００７６】
実施の形態２．
本実施の形態では、実施の形態１と異なる構成の通信装置１００を説明する。
なお、本実施の形態に係る通信装置１００は、実施の形態１と構成が異なっており、また動作の手順も実施の形態１に示したものとは異なるが、基本的な動作原理は同じである。
つまり、本実施の形態においても、制御フレームの送信中に障害データが発生した場合に、障害データを制御フレームに挿入して送信し、障害データの挿入にて押し出されたデータは、分割フレームとして、制御フレームに続けて送信する。
このため、本実施の形態でも、図９〜図１２に示す形態にて、制御フレーム及び分割フレームが送信される。
また、本実施の形態においても、図１３に示した原理にてデータが復元される。
【００７７】
図２３は、本実施の形態に係る通信装置１００の構成例を示す。
なお、以降、通信装置１００を自装置とも表記する。
通信装置２００及び通信装置３００も、図２３に示す構成例を有するものとする。
【００７８】
受信ポート８００は、通信装置２００からフレーム１０００を受信して受信データ分配装置８０１に１ワードずつ出力する。
【００７９】
受信データ分配装置８０１は、受信したデータを解析して受信内容に沿ってヘッダバッファ８０３、再構成バッファ８０５、中継データバッファ８１１、中継ヘッダバッファ８０４、中継障害バッファ８１２、中継障害ヘッダバッファ８０８、外部入出力装置８１３（以下、ＣＰＵともいう）に所定の情報を送付する。
【００８０】
具体的には、受信データ分配装置８０１は、予めフレームヘッダのサイズを保管しており、予め障害データのサイズを保管しており、予め障害フレームのサイズを保管しており、予めデリミタのサイズを保管している。
また、受信データ分配装置８０１は、制御フレームのフレームデータサイズ（以下、制御データサイズと記す）を、制御フレームヘッダが示すフレームサイズからフレームヘッダのサイズを減算して計算する。
また、受信データ分配装置８０１は、分割フレームのフレームデータサイズ（以下、分割データサイズと記す）を、分割フレームヘッダ４０１０、５０１０のフレームサイズ１０１２からフレームヘッダ１０１０のサイズを減算して計算する。
また、受信データ分配装置８０１は、障害フレームのフレームデータサイズ（以下、障害データサイズと記す）を、障害フレームヘッダ６０１０のフレームサイズ１０１２からフレームヘッダ１０１０のサイズを減算して計算する。
【００８１】
また、受信データ分配装置８０１は、フレーム１０００の先頭を検出する手段（図２３には不図示）がフレーム１０００の先頭を検出したときに、受信カウンタ８０２にクリアを要求し、受信ポート８００からフレーム１０００を１ワードずつ受信する。
【００８２】
また、受信カウンタ８０２が、受信データ分配装置８０１からの要求に応じてフレームヘッダサイズを計測するが、受信カウンタ８０２がフレームヘッダ１０１０のサイズ未満のときに、受信データ分配装置８０１は、受信した１ワードをヘッダバッファ８０３に書き込む。
【００８３】
また、受信カウンタ８０２がフレームヘッダ１０１０のサイズのときに、ヘッダバッファ８０３に保存されているのが制御フレームヘッダであれば、受信データ分配装置８０１は、制御フレームヘッダを中継ヘッダバッファ８０４と再構成バッファ８０５に書き込み、制御データサイズを中継障害残りサイズカウンタ８０９と再構成カウンタ８０７に書き込む。
また、ヘッダバッファ８０３に保存されているのが分割フレームヘッダ４０１０、５０１０であれば、受信データ分配装置８０１は、分割フレームヘッダを中継ヘッダバッファ８０４に書き込み、分割データサイズを中継残りサイズカウンタ８０６に書き込む。
また、ヘッダバッファ８０３に保存されているのが障害フレームヘッダ６０１０であれば、受信データ分配装置８０１は、障害フレームヘッダを中継障害ヘッダバッファ８０８に書き込み、制御データサイズを中継障害残りサイズカウンタ８０９に書き込み、また、割り込みカウンタ８１０が０のとき内部の受信割り込みフラグを無効とし、割り込みカウンタ８１０が０以外のとき内部の受信割り込みフラグを有効とする。
【００８４】
受信カウンタ８０２がフレームヘッダ１０１０のサイズより大きく、かつ、受信カウンタ８０２がヘッダバッファ８０３に保存されているフレームヘッダ１０１０のフレームサイズ未満、かつ、受信割り込みフラグが無効、かつ、受信ポート８００から受信した１ワードがデリミタでないときに、受信データ分配装置８０１は、以下の動作を行う。
つまり、上記の条件が成立した際に、ヘッダバッファ８０３に保存されているのが制御フレームヘッダまたは分割フレームヘッダであれば、受信データ分配装置８０１は、受信ポート８００から受信した１ワードを中継データバッファ８１１と再構成バッファ８０５に書き込み、再構成カウンタ８０７にデクリメントを要求する。
一方、上記の条件が成立した際に、ヘッダバッファ８０３に保存されているのが障害フレームヘッダ６０１０であれば、受信データ分配装置８０１は、受信ポート８００から受信した１ワードを中継障害バッファ８１２に書き込む。
【００８５】
また、受信カウンタ８０２がフレームヘッダ１０１０のサイズより大きく、かつ、受信カウンタ８０２がヘッダバッファ８０３に保存されているフレームヘッダ１０１０のフレームサイズ１０１２未満、かつ、受信割り込みフラグが無効、かつ、受信ポート８００から受信した１ワードがデリミタ３０３０であったときに、受信データ分配装置８０１は、障害データのサイズを割り込みカウンタ８１０に書き込み、障害フレームタイプと障害フレームサイズを中継障害ヘッダバッファ８０８に書き込む。
【００８６】
また、受信データ分配装置８０１は、割り込みフラグが有効のときに、受信ポート８００から受信した１ワードを中継障害バッファ８１２に書き込み、割り込みカウンタ８１０にデクリメントを要求する。
【００８７】
また、受信カウンタ８０２がフレームヘッダのサイズより大きく、かつ、ヘッダバッファ８０３に保存されているフレームヘッダのフレームサイズと等しいとき、受信データ分配装置８０１は、受信カウンタ８０２にクリアを要求する。
また、再構成カウンタ８０７の値が０のとき、受信データ分配装置８０１は、外部出力装置に制御データ受信完了信号を出力する。
【００８８】
受信カウンタ８０２は、受信データ分配装置８０１から要求に応じて主に受信データのワード数を計測する。
【００８９】
受信カウンタ８０２の動作の詳細を説明する。
受信カウンタ８０２は、受信データ分配装置８０１から要求されたとき内部の値をクリアする。
また、受信カウンタ８０２は、受信データ分配装置８０１から要求されたとき内部の値をインクリメントする。
また、受信カウンタ８０２は、受信データ分配装置８０１から読み出されたとき内部の値を出力する。
【００９０】
ヘッダバッファ８０３は、受信したフレームのフレームヘッダ１０１０を保存する。
【００９１】
ヘッダバッファ８０３の動作の詳細を説明する。
ヘッダバッファ８０３は、受信データ分配装置８０１からフレームヘッダを書き込まれたときフレームヘッダを保存する。
また、ヘッダバッファ８０３は、受信データ分配装置８０１に読み出されたとき受信データ分配装置８０１にフレームヘッダを出力する。
また、ヘッダバッファ８０３は、外部入出力装置８１３に読み出されたときに外部入出力装置８１３にフレームヘッダを出力する。
【００９２】
中継ヘッダバッファ８０４は、受信した制御フレームヘッダを保存し、中継分割ヘッダ生成装置８１４と中継割り込み可否判定装置８１５に制御フレームヘッダ２０１０、３０１０の情報を出力する。
【００９３】
中継ヘッダバッファ８０４の動作の詳細を説明する。
中継ヘッダバッファ８０４は、受信データ分配装置８０１から制御フレームヘッダ２０１０、３０１０を書き込まれたときに、制御フレームヘッダ２０１０、３０１０を保存する。
また、中継ヘッダバッファ８０４は、中継分割ヘッダ生成装置８１４に読み出されたとき、制御フレームヘッダ２０１０、３０１０を中継分割ヘッダ生成装置８１４に出力する。
また、中継ヘッダバッファ８０４は、中継割り込み可否判定装置８１５に読み出されたとき、制御フレームヘッダ２０１０、３０１０を中継割り込み可否判定装置８１５に出力する。
また、中継ヘッダバッファ８０４は、送信データ選択装置８１６に読み出されたとき、制御フレームヘッダ２０１０、３０１０を送信データ選択装置８１６に出力する。
【００９４】
再構成バッファ８０５は、障害発生前分割制御データ３０２０と障害発生後分割制御データ３０５０とフレームから押し出された分割制御データ４０２０を保存し、制御データ２を復元する。
【００９５】
再構成バッファ８０５の動作の詳細を説明する。
再構成バッファ８０５は、受信データ分配装置８０１から制御データを書き込まれたとき制御データを保存し、外部入出力装置８１３に読み出されたときに外部入出力装置８１３に制御データを出力する。
【００９６】
中継残りサイズカウンタ８０６は、中継する制御フレームまたは分割フレームの未送信ワード数を計測する。
【００９７】
中継残りサイズカウンタ８０６の動作の詳細を説明する。
中継残りサイズカウンタ８０６は、受信データ分配装置８０１に制御データサイズを書き込まれたとき、制御データサイズをカウント値としてセットする。
また、中継残りサイズカウンタ８０６は、受信データ分配装置８０１に中継データサイズを書き込まれたとき、中継データサイズをカウント値としてセットする。
また、中継残りサイズカウンタ８０６は、送信データ選択装置８１６から要求されたとき、カウント値をデクリメントする。
また、中継残りサイズカウンタ８０６は、中継分割ヘッダ生成装置８１４に読み出されたとき、カウント値を中継分割ヘッダ生成装置８１４に出力する。
また、中継残りサイズカウンタ８０６は、中継割り込み可否判定装置８１５に読み出されたときに、カウント値を中継割り込み可否判定装置８１５へ出力する。
【００９８】
再構成カウンタ８０７は、未受信の制御データ数を計測し、制御データの受信完了を検出する。
【００９９】
再構成カウンタ８０７の動作の詳細を説明する。
再構成カウンタ８０７は、受信データ分配装置８０１から要求されたとき内部の値をクリアする。
また、再構成カウンタ８０７は、受信データ分配装置８０１から要求されたときカウント値をデクリメントし、受信データ分配装置８０１から要求されたとき内部の値を出力する。
【０１００】
中継障害ヘッダバッファ８０８は、受信した障害フレームヘッダ６０１０を保存し、送信データ選択装置に出力する。
【０１０１】
中継障害ヘッダバッファ８０８の動作の詳細を説明する。
中継障害ヘッダバッファ８０８は、受信データ分配装置８０１から書き込まれたとき、障害フレームヘッダ６０１０を保存する。
また、中継障害ヘッダバッファ８０８は、送信データ選択装置８１６に読み出されたとき、障害フレームヘッダ６０１０を送信データ選択装置８１６に出力する。
【０１０２】
中継障害残りサイズカウンタ８０９は、送信データ選択装置８１６からの要求に応じて、受信した障害データの未送信ワード数を計測する。
【０１０３】
中継障害残りサイズカウンタ８０９の動作の詳細を説明する。
中継障害残りサイズカウンタ８０９は、受信データ分配装置８０１から書き込まれたとき、障害データサイズをカウント値としてセットする。
また、中継障害残りサイズカウンタ８０９は、送信データ選択装置８１６から要求されたときに、上記カウント値をデクリメントする。
【０１０４】
割り込みカウンタ８１０は、受信データ分配装置８０１からの要求に応じて制御フレームに含まれる障害データの受信ワード数を計測する。
【０１０５】
割り込みカウンタ８１０の動作の詳細を説明する。
割り込みカウンタ８１０は、受信データ分配装置８０１から要求されたときに、内部の値を予め定められた障害データのサイズにセットする。
また、割り込みカウンタ８１０は、受信データ分配装置８０１から要求されたときに、内部の値をデクリメントする。
また、割り込みカウンタ８１０は、受信データ分配装置８０１から読み出されたときに、受信データ分配装置８０１に内部の値を出力する。
【０１０６】
中継データバッファ８１１は、受信した制御フレームと分割フレームのフレームデータ１０２０を保存し、送信データ選択装置８１６に出力する。
【０１０７】
中継データバッファ８１１の動作の詳細を説明する。
中継データバッファ８１１は、受信データ分配装置８０１から書き込まれたときに、制御フレームのフレームデータ１０２０または分割フレームのフレームデータ１０２０を保存する。
また、中継データバッファ８１１は、送信データ選択装置８１６に読み出されたときに、制御フレームのフレームデータ１０２０または分割フレームのフレームデータ１０２０を上記送信データ選択装置８１６に出力する。
【０１０８】
中継障害バッファ８１２は、受信した障害データ２８を保存し、送信データ選択装置８１６に出力する。
【０１０９】
中継障害バッファ８１２の動作の詳細を説明する。
中継障害バッファ８１２は、受信データ分配装置８０１から書き込まれたときに、障害データを保存する。
また、中継障害バッファ８１２は、送信データ選択装置８１６に読み出されたときに、送信データ選択装置８１６に障害データを出力する。
【０１１０】
外部入出力装置８１３（ＣＰＵ）は、任意のタイミングで８１７〜８２２にフレームを書き込み、任意のタイミングで再構成バッファ８０５からデータを読み出す。
【０１１１】
外部入出力装置８１３の動作の詳細を説明する。
外部入出力装置８１３は、任意のタイミングで、自装置ヘッダバッファ８１７に制御フレームヘッダ２０１０を書き込む。
また、外部入出力装置８１３は、任意のタイミングで、自装置残りサイズカウンタ８１８に制御フレームサイズの値を書き込む。
また、外部入出力装置８１３は、任意のタイミングで、自装置データバッファ８１９に制御フレームのフレームデータ１０２０を書き込む。
また、外部入出力装置８１３は、任意のタイミングで、自装置障害ヘッダバッファ８２０に障害フレームヘッダ６０１０を書き込む。
また、外部入出力装置８１３は、任意のタイミングで、自装置障害残りサイズカウンタ８２１に障害フレーム６０００のフレームサイズの値を書き込む。
また、外部入出力装置８１３は、任意のタイミングで、自装置障害バッファ８２２に障害フレーム６０００データを書き込む。
また、外部入出力装置８１３は、任意のタイミングで、再構成バッファ８０５からデータを読み出す。
【０１１２】
中継分割ヘッダ生成装置８１４は、中継フレーム（通信装置２００から受信したフレーム）が分割されたときに分割フレームヘッダ４０１０、５０１０を生成して送信データ選択装置８１６に出力する。
【０１１３】
中継分割ヘッダ生成装置８１４の動作の詳細を説明する。
中継分割ヘッダ生成装置８１４は、送信データ選択装置８１６から要求されたとき、送信データ選択装置８１６に、分割フレームヘッダを出力する。
中継分割ヘッダ生成装置８１４が出力する分割フレームヘッダは、フレームサイズが中継残りサイズカウンタ８０６から読み出した値を示し、フレームタイプが分割フレームを示す。
【０１１４】
中継割り込み可否判定装置８１５は、送信中の中継フレームに障害データを割り込ませることができるかどうかを送信データ選択装置８１６に出力する。
【０１１５】
中継割り込み可否判定装置８１５の動作の詳細を説明する。
中継割り込み可否判定装置８１５は、送信データ選択装置８１６に要求されたとき中継残りサイズカウンタ８０６からカウント値を読み出す。
そして、中継割り込み可否判定装置８１５は、上記カウント値について、
（ｎは自然数）かつ、
｛（デリミタのサイズ）＋（障害データのサイズ）｝＊（ｎ）≦（上記カウント値）
の関係を満たすｎが存在すれば、有効を送信データ選択装置８１６に出力し、そうでなければ無効を出力する。
【０１１６】
送信データ選択装置８１６は、優先度に沿って中継障害ヘッダバッファ８０８、中継障害バッファ８１２、自装置障害ヘッダバッファ８２０、自装置障害バッファ８２２、中継ヘッダバッファ８０４、中継データバッファ８１１、自装置ヘッダバッファ８１７、自装置データバッファ８１９、デリミタ出力装置８２３のいずれかから読み出したデータを送信ポート８２４に出力する。
【０１１７】
送信データ選択装置８１６の動作の詳細を説明する。
【０１１８】
送信データ選択装置８１６は、予めフレームヘッダ１０１０のサイズを保管しており、予め障害データのサイズを保管しており、１ワードを送信ポート８２４へ出力するとき、送信カウンタ８２５にインクリメントを要求する。
そして、送信データ選択装置８１６は、以下に示す状態遷移を行う。
なお、以下に示す各種の状態のうち、「中継障害状態」とは、通信装置２００から受信した障害フレームを送信する状態である。
「自装置送信状態」とは、通信装置１００（自装置）の外部入出力装置８１３からの制御フレームを送信する状態である。
「自装置自装置状態」とは、通信装置１００（自装置）の外部入出力装置８１３からの制御フレームの送信途中に、通信装置１００（自装置）の外部入出力装置８１３からの障害データを割り込ませて送信する状態である。
「自装置中継状態」とは、通信装置１００（自装置）の外部入出力装置８１３からの制御フレームの送信途中に、通信装置２００から受信した障害データを割り込ませて送信する状態である。
「自装置分割状態」とは、通信装置１００（自装置）の外部入出力装置８１３からの制御フレームに含まれていた制御データであって、障害データの割込みにより押し出された制御データを、分割フレームで送信する状態である。
「自装置障害状態」とは、通信装置１００（自装置）の外部入出力装置８１３からの障害フレームを送信する状態である。
「中継送信状態」とは、通信装置２００から受信した制御フレームを送信する状態である。
「中継自装置状態」とは、通信装置２００から受信した制御フレームの送信途中に、通信装置１００（自装置）の外部入出力装置８１３からの障害データを割り込ませて送信する状態である。
「中継中継状態」とは、通信装置２００から受信した制御フレームの送信途中に、通信装置２００から受信した障害データを割り込ませて送信する状態である。
「中継分割状態」とは、通信装置２００から受信した制御フレームに含まれていた制御データであって、障害データの割込みにより押し出された制御データを、分割フレームで送信する状態である。
なお、状態遷移のパターンは、図４１に示す通りである。
以下にて、送信データ選択装置８１６の状態遷移の詳細を説明する。
【０１１９】
送信待機状態であるとき、
中継障害残りサイズカウンタ８０９の値が１以上であれば中継障害状態に遷移し、
自装置残りサイズカウンタ８１８の値が１以上であれば自装置送信状態に遷移する。
【０１２０】
自装置送信状態であり、かつ、
中継障害残りサイズカウンタ８０９の値が０であり、かつ、
自装置障害残りサイズカウンタ８２１の値が１以上であり、かつ、
自装置割り込み可否判定装置８２６の出力が有効であるとき、
自装置自装置状態に遷移する。
【０１２１】
自装置送信状態であり、かつ、
中継障害残りサイズカウンタ８０９の値が１以上であり、かつ、
自装置障害残りサイズカウンタ８２１の値が０であり、かつ、
中継割り込み可否判定装置８１５の出力が有効であるとき、
自装置中継状態に遷移する。
【０１２２】
自装置送信状態であり、かつ、
送信カウンタ８２５の値が自装置ヘッダバッファ８１７のフレームサイズ１０１２と等しく、かつ、
自装置残りサイズカウンタ８１８の値が０のとき、
送信待機状態に遷移する。
【０１２３】
自装置送信状態であり、かつ、
送信カウンタ８２５の値が自装置ヘッダバッファ８１７のフレームサイズ１０１２と等しく、かつ、
自装置残りサイズカウンタ８１８の値が１以上のとき、
自装置分割状態に遷移する。
【０１２４】
自装置送信状態であり、かつ、
送信カウンタ８２５の値が自装置ヘッダバッファ８１７のフレームサイズ１０１２と等しく、かつ、
自装置残りサイズカウンタ８１８の値が１以上のとき、
自装置分割状態に遷移する。
【０１２５】
自装置自装置状態であり、かつ自装置障害残りサイズカウンタ８２１の値が０のとき、
自装置送信状態に遷移する。
【０１２６】
自装置中継状態であり、かつ中継障害残りサイズカウンタ８０９の値が０のとき、
自装置送信状態に遷移する。
【０１２７】
自装置分割状態であり、かつ、
自装置残りサイズカウンタ８１８の値が０のとき、
送信待機状態に遷移する。
【０１２８】
自装置障害状態であり、かつ、自装置障害残りサイズカウンタ８２１の値が０のとき、
送信待機状態に遷移する。
【０１２９】
中継送信状態であり、かつ、
中継障害残りサイズカウンタ８０９の値が０であり、かつ、
自装置障害残りサイズカウンタ８２１の値が１以上であり、かつ、
中継割り込み可否判定装置８１５の出力が有効であるとき、
中継自装置状態に遷移する。
【０１３０】
中継送信状態であり、かつ、
中継障害残りサイズカウンタ８０９の値が１以上であり、かつ、
中継割り込み可否判定装置８１５の出力が有効であるとき、
中継中継状態に遷移する。
【０１３１】
中継送信状態であり、かつ、
送信カウンタ８２５の値が中継ヘッダバッファ８０４のフレームサイズ１０１２と等しく、かつ、
中継残りサイズカウンタ８０６の値が０のとき、
送信待機状態に遷移する。
【０１３２】
中継送信状態であり、かつ、
送信カウンタ８２５の値が中継ヘッダバッファ８０４のフレームサイズ１０１２と等しく、かつ、
中継残りサイズカウンタ８０６の値が１以上のとき、
中継分割状態に遷移する。
【０１３３】
中継送信状態であり、かつ、
送信カウンタ８２５の値が中継ヘッダバッファ８０４のフレームサイズ１０１２と等しく、かつ、
中継残りサイズカウンタ８０６の値が１以上のとき、
中継分割状態に遷移する。
【０１３４】
中継自装置状態であり、かつ自装置障害残りサイズカウンタ８２１の値が０のとき、
中継送信状態に遷移する。
【０１３５】
中継中継状態であり、かつ中継障害残りサイズカウンタ８０９の値が０のとき、
中継送信状態に遷移する。
【０１３６】
中継分割状態であり、かつ、
中継残りサイズカウンタ８０６の値が０のとき、
送信待機状態に遷移する。
【０１３７】
中継障害状態であり、かつ、
中継障害残りサイズカウンタ８０９の値が０のとき、
送信待機状態に遷移する。
【０１３８】
自装置送信状態であり、かつ、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ未満のとき、
自装置ヘッダバッファ８１７から１ワードを送信ポート８２４へ出力し、
送信カウンタ８２５の値がフレームヘッダのサイズ以上のとき、
自装置データバッファ８１９から１ワードを送信ポート８２４へ出力し、
自装置残りサイズカウンタ８１８にデクリメントを要求し、
送信カウンタ８２５の値が自装置障害ヘッダバッファ８２０のフレームサイズ１０１２と等しいとき送信カウンタ８２５にクリアを要求する。
【０１３９】
自装置中継状態であり、かつ、
中継障害残りサイズカウンタ８０９の値が障害データのサイズと等しいとき、
デリミタ出力装置８２３からデリミタ３０３０、５０２０を送信ポート８２４へ出力し、
中継障害残りサイズカウンタ８０９の値が障害データのサイズより小さいとき、
中継障害バッファ８１２から１ワードを送信ポート８２４へ出力し、
中継障害残り送信カウンタ８２５にデクリメントを要求する。
【０１４０】
自装置自装置状態であり、かつ、
自装置障害残りサイズカウンタ８２１の値が障害データのサイズと等しいとき、
デリミタ出力装置８２３からデリミタ３０３０、５０２０を送信ポート８２４へ出力し、
自装置障害残りサイズカウンタ８２１の値が障害データのサイズより小さいとき、
自装置障害バッファ８２２から１ワードを送信ポート８２４へ出力し、
自装置障害残りサイズカウンタ８２１にデクリメントを要求する。
【０１４１】
自装置分割状態であり、かつ、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ未満のとき、
自装置分割ヘッダ生成装置８２７から１ワードを送信ポート８２４へ出力し、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以上のとき、
自装置データバッファ８１９から１ワードを送信ポート８２４へ出力し、
自装置残りサイズカウンタ８１８にデクリメントを要求し、
送信カウンタ８２５の値が自装置障害ヘッダバッファ８２０のフレームサイズ１０１２と等しいとき送信カウンタ８２５にクリアを要求する。
【０１４２】
自装置障害状態であり、かつ、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ未満のとき、
自装置障害ヘッダバッファ８２０から１ワードを送信ポート８２４へ出力し、
送信カウンタ８２５の値がフレームヘッダのサイズ以上のとき、
自装置データバッファ８１９から１ワードを送信ポート８２４へ出力し、
自装置残りサイズカウンタ８１８にデクリメントを要求し、
送信カウンタ８２５の値が自装置障害ヘッダバッファ８２０のフレームサイズ１０１２と等しいとき送信カウンタ８２５にクリアを要求する。
【０１４３】
中継送信状態であり、かつ、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ未満のとき、
中継ヘッダバッファ８０４から１ワードを送信ポート８２４へ出力し、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以上のとき、
中継データバッファ８１１から１ワードを送信ポート８２４へ出力し、
中継残りサイズカウンタ８０６にデクリメントを要求し、
送信カウンタ８２５の値が中継障害ヘッダバッファ８０８のフレームサイズ１０１２と等しいとき送信カウンタ８２５にクリアを要求する。
【０１４４】
中継中継状態であり、かつ、
中継障害残りサイズカウンタ８０９の値が障害データのサイズと等しいとき、
デリミタ出力装置８２３からデリミタを送信ポート８２４へ出力し、
中継障害残りサイズカウンタ８０９の値が障害データのサイズより小さいとき、
中継障害バッファ８１２から１ワードを送信ポート８２４へ出力し、
中継障害残りサイズカウンタ８０９にデクリメントを要求する。
【０１４５】
中継自装置状態であり、かつ、
自装置障害残りサイズカウンタ８２１の値が障害データのサイズと等しいとき、
デリミタ出力装置８２３からデリミタ３０３０、５０２０を送信ポート８２４へ出力し、
自装置障害残りサイズカウンタ８２１の値が障害データのサイズより小さいとき、
自装置障害バッファ３２２から１ワードを送信ポート８２４へ出力し、
自装置障害残りサイズカウンタ８２１にデクリメントを要求する。
【０１４６】
中継分割状態であり、かつ、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ未満のとき、
中継分割ヘッダ生成装置８１４から１ワードを送信ポート８２４へ出力し、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以上のとき、
中継データバッファ８１１から１ワードを送信ポート８２４へ出力し、
中継残りサイズカウンタ８０６にデクリメントを要求し、
送信カウンタ８２５の値が中継障害ヘッダバッファ８０８のフレームサイズ１０１２と等しいとき送信カウンタ８２５にクリアを要求する。
【０１４７】
中継障害状態であり、かつ、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ未満のとき、
中継障害ヘッダバッファ８０８から１ワードを送信ポート８２４へ出力し、
送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以上のとき、
中継データバッファ８１１から１ワードを送信ポート８２４へ出力し、
中継残りサイズカウンタ８０６にデクリメントを要求し、
送信カウンタ８２５の値が中継障害ヘッダバッファ８０８のフレームサイズと等しいとき送信カウンタ８２５にクリアを要求する。
【０１４８】
自装置ヘッダバッファ８１７は、外部入出力装置８１３から入力された制御フレームヘッダ２０１０を保存し、送信データ選択装置８１６に制御フレームヘッダ２０１０の情報を出力する。
【０１４９】
自装置ヘッダバッファ８１７の動作の詳細を説明する。
自装置ヘッダバッファ８１７は、外部入出力装置８１３から書き込まれたとき、制御フレームヘッダ２０１０を保存する。
また、自装置ヘッダバッファ８１７は、自装置分割ヘッダ生成装置８２７に読み出されたとき、制御フレームヘッダ２０１０を自装置分割ヘッダ生成装置８２７に出力する。
また、自装置ヘッダバッファ８１７は、自装置割り込み可否判定装置８２６に読み出されたとき、制御フレームヘッダ２０１０を自装置割り込み可否判定装置８２６に出力する。
また、自装置ヘッダバッファ８１７は、送信データ選択装置８１６に読み出されたとき、制御フレームヘッダ２０１０を送信データ選択装置８１６に出力する。
【０１５０】
自装置残りサイズカウンタ８１８は、送信データ選択装置８１６からの要求に応じ自装置の制御フレームまたは分割フレームの未送信ワード数を計測する。
【０１５１】
自装置残りサイズカウンタ８１８の動作の詳細を説明する。
自装置残りサイズカウンタ８１８は、外部入出力装置８１３から書き込まれたとき、制御データサイズをカウント値としてセットする。
また、自装置残りサイズカウンタ８１８は、送信データ選択装置８１６から要求されたときに、カウント値をデクリメントする。
また、自装置残りサイズカウンタ８１８は、自装置分割ヘッダ生成装置８２７に読み出されたとき、自装置分割ヘッダ生成装置８２７にカウント値を出力する。
また、自装置残りサイズカウンタ８１８は、自装置割り込み可否判定装置８２６に読み出されたとき、自装置割り込み可否判定装置８２６にカウント値を出力する。
【０１５２】
自装置データバッファ８１９は、外部入出力装置８１３から書き込まれたフレームのうち制御フレームのフレームデータ１０２０を保存し、送信データ選択装置８１６に出力する。
【０１５３】
自装置データバッファ８１９の動作の詳細を説明する。
自装置データバッファ８１９は、外部入出力装置８１３から書き込まれたときに、制御データを保存する。
また、自装置データバッファ８１９は、送信データ選択装置８１６に読み出されたときに、送信データ選択装置８１６に制御データを出力する。
【０１５４】
自装置障害ヘッダバッファ８２０は、外部入出力装置から書き込まれた障害フレームヘッダ６０１０を保存し、送信データ選択装置に出力する。
【０１５５】
自装置障害ヘッダバッファ８２０の動作の詳細を説明する。
自装置障害ヘッダバッファ８２０は、外部入出力装置８１３から書き込まれたとき、障害フレームヘッダ６０１０を保存する。
また、自装置障害ヘッダバッファ８２０は、送信データ選択装置８１６に読み出されたとき、障害フレームヘッダ６０１０を送信データ選択装置８１６に出力する。
【０１５６】
自装置障害残りサイズカウンタ８２１は、送信データ選択装置８１６からの要求に応じて、外部入出力装置から書き込まれた障害データの未送信ワード数を計測する。
【０１５７】
自装置障害残りサイズカウンタ８２１の動作の詳細を説明する。
自装置障害残りサイズカウンタ８２１は、外部入出力装置８１３から書き込まれたとき、障害データサイズの値をカウント値としてセットする。
また、自装置障害残りサイズカウンタ８２１は、送信データ選択装置８１６から要求されたとき、カウント値をデクリメントする。
また、自装置障害残りサイズカウンタ８２１は、送信データ選択装置８１６に読み出されたときに、送信データ選択装置８１６にカウント値を出力する。
【０１５８】
自装置障害バッファ８２２は、外部入出力装置から書き込みまれたデータのうち障害データ２８を保存し、送信データ選択装置８１６に出力する。
【０１５９】
自装置障害バッファ８２２の動作の詳細を説明する。
自装置障害バッファ８２２は、外部入出力装置８１３から書き込まれたとき、障害データ２８を保存する。
また、自装置障害バッファ８２２は、送信データ選択装置８１６に読み出されたとき、障害フレームヘッダ６０１０を送信データ選択装置８１６に出力する。
【０１６０】
デリミタ出力装置８２３は、予めデリミタ３０３０、５０２０を保管しており、送信データ選択装置８１６から読み出されたとき、予め保管しているデリミタ３０３０、５０２０を送信データ選択装置８１６に出力する。
【０１６１】
送信ポート８２４は、送信データ選択装置８１６から１ワードずつデータを受信して、通信装置３００にフレームを送信する。
【０１６２】
送信カウンタ８２５は、送信データ選択装置８１６からの要求に応じて送信データのワード数を計測する。
【０１６３】
送信カウンタ８２５の動作の詳細を説明する。
送信カウンタ８２５は、送信データ選択装置８１６から要求を受けたとき、内部の値をクリアする。
また、送信カウンタ８２５は、送信データ選択装置８１６から要求を受けたとき、内部の値をインクリメントする。
また、送信カウンタ８２５は、送信データ選択装置８１６から読み出されたとき、内部の値を送信データ選択装置８１６に出力する。
【０１６４】
自装置割り込み可否判定装置８２６は、送信中の自装置フレーム（通信装置１００内で生成されたフレーム）に障害データを割り込ませることができるかどうかを送信データ選択装置８１６に出力する。
【０１６５】
自装置割り込み可否判定装置８２６は、送信データ選択装置８１６に要求されたときに、自装置残りサイズカウンタ８１８からカウント値を読み出す。
また、自装置割り込み可否判定装置８２６は、上記カウント値について、
（ｎは自然数）かつ、
｛（デリミタのサイズ）＋（障害データのサイズ）｝＊（ｎ）≦（上記カウント値）
の関係を満たすｎが存在すれば、
有効を送信データ選択装置８１６に出力し、そうでなければ無効を出力する。
【０１６６】
自装置分割ヘッダ生成装置８２７は、自装置フレームが分割されたときに分割フレームヘッダ４０１０、５０１０を生成して送信データ選択装置８１６に出力する。
【０１６７】
自装置分割ヘッダ生成装置８２７は、送信データ選択装置８１６から要求されたとき、送信データ選択装置８１６に、分割フレームヘッダを出力する。
自装置分割ヘッダ生成装置８２７が出力する分割フレームヘッダは、フレームサイズ１０１２が自装置残りサイズカウンタ８１８から読み出した値を示し、フレームタイプ１０１１が分割フレームを示す。
【０１６８】
次に動作について説明する。
図２４は、通信装置１００の動作手順を示す流れ図である。
【０１６９】
図２４に示すように、通信装置１００には、複数の状態が設けられており、フレームの受信状況、障害データの発生状況等に基づき状態遷移が行われる。
フレーム受信時の状態遷移のパターンは図４０に示す通りである。
フレーム送信時の状態遷移のパターンは図４１に示す通りである。
【０１７０】
次に、図２４のフローチャートを説明する。
なお、図２４のフローチャートは、通信装置１００が動作クロックごとの動作に対応させている。
つまり、Ｓ２、Ｓ１１、Ｓ２０、Ｓ２６、Ｓ３０、Ｓ３９、Ｓ５４、Ｓ５８、Ｓ６１、Ｓ９５、Ｓ６７、Ｓ８２、Ｓ８６、Ｓ８９、Ｓ１０１、Ｓ１１１の各処理は、１クロックで実施される動作である。
【０１７１】
先ず、受信データ分配装置８０１は、受信データ分配装置８０１の状態を確認する（ステップＳ１）。
【０１７２】
ステップＳ１において、
受信データ分配装置８０１がヘッダ受信状態であるとき、受信データ分配装置８０１がヘッダ受信状態であるときの処理（図面では、「ヘッダ受信状態時の処理」と表記する）を実施する（ステップＳ２）。
受信データ分配装置８０１がヘッダ受信状態であるときの処理を図２５を用いて説明する。
【０１７３】
受信データ分配装置８０１がヘッダ受信状態であるとき、受信データ分配装置８０１は、中継ヘッダバッファ８０４に受信した１ワードを保存し、受信カウンタ８０２にインクリメントを要求する（ステップＳ３）。
また、受信データ分配装置８０１は、受信カウンタ８０２の値とヘッダバッファ８０３のフレームサイズ１０１２とが一致したかを確認する（ステップＳ４）。
【０１７４】
ステップＳ４において、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２と一致しているとき、受信データ分配装置８０１は、ヘッダバッファ８０３のフレームタイプ１０１１が障害フレームを示すかを確認する（ステップＳ５）。
【０１７５】
ステップＳ５において、ヘッダバッファ８０３のフレームタイプ１０１１が障害フレームを示すとき、受信データ分配装置８０１は、ヘッダバッファ８０３のフレームタイプ１０１１が制御フレームを示すかを確認する（ステップＳ６）。
【０１７６】
ステップＳ６において、ヘッダバッファ８０３のフレームタイプ１０１１が制御フレームを示すとき、受信データ分配装置８０１は、再構成バッファ８０５をクリアし、再構成カウンタ８０７にヘッダバッファ８０３のフレームサイズ１０１２の値をセットする（ステップＳ７）。
【０１７７】
また、受信データ分配装置８０１は、ヘッダバッファ８０３からフレームヘッダ１０１０を読み出して中継ヘッダバッファ８０４に書き込む。
また、受信データ分配装置８０１は、中継残りサイズカウンタ８０６にヘッダバッファ８０３のフレームサイズ１０１２の値をセットし、制御受信状態へ遷移する（ステップＳ８）。
これにて、受信データ分配装置８０１がヘッダ受信状態であるときの処理を終了する。
【０１７８】
ステップＳ６において、ヘッダバッファ８０３のフレームタイプ１０１１が制御フレームを示さないとき、受信データ分配装置８０１は、ヘッダバッファ８０３のフレームタイプ１０１１が分割フレームであるかを確認する（ステップＳ９）。
【０１７９】
ステップＳ９において、ヘッダバッファ８０３のフレームタイプ１０１１が分割フレームを示すとき、受信データ分配装置８０１は、ステップＳ８の処理を実施する。
【０１８０】
ステップＳ９において、ヘッダバッファ８０３のフレームタイプ１０１１が分割フレームを示さない場合は、受信データ分配装置８０１がヘッダ受信状態であるときの処理を終了する。
【０１８１】
また、ステップＳ５において、ヘッダバッファ８０３のフレームタイプ１０１１が障害フレームを示さないとき、受信データ分配装置８０１は、ヘッダバッファ８０３からフレームヘッダを読み出して中継障害ヘッダバッファ８０８に書き込む。
また、受信データ分配装置８０１は、中継障害残りサイズカウンタ８０９へフレームデータのサイズを書き込み、障害受信状態へ遷移する（ステップＳ１０）。
【０１８２】
受信データ分配装置８０１がヘッダ受信状態であるときの処理を終了すると、外部入出力装置８１３の出力処理（ステップＳ１０６）を実施する。
外部入出力装置８１３の出力処理（ステップＳ１０６）の詳細は、図３８を用いて後述する。
【０１８３】
次に、受信データ分配装置８０１が制御受信状態であるときの処理（図面では、「制御受信状態時の処理」と表記する）を図２６を用いて説明する。
【０１８４】
まず、受信データ分配装置８０１は、通信装置２００から受信した１ワードがデリミタ５０２０以外かどうか確認する（ステップＳ１２）。
【０１８５】
ステップＳ１２において、受信データ分配装置８０１が通信装置２００から受信した１ワードがデリミタ５０２０以外のとき、受信データ分配装置８０１は、再構成バッファ８０５に受信した１ワードを書き込み、再構成カウンタ８０７にデクリメントを要求する（ステップＳ１３）。
また、受信データ分配装置８０１は、再構成カウンタ８０７の値が１以上か確認する（ステップＳ１４）。
【０１８６】
ステップＳ１４において、再構成カウンタ８０７が１以上の値であるとき、受信データ分配装置８０１は、中継データバッファ８１１に通信装置２００から受信した１ワードを書き込み、受信カウンタ８０２にインクリメントを要求する（ステップＳ１５）。
また、受信データ分配装置８０１は、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２の値と等しいか確認する（ステップＳ１６）。
【０１８７】
ステップＳ１６において、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２の値と等しいとき、受信データ分配装置８０１は、受信待機状態へ遷移する（ステップＳ１７）。
また、受信データ分配装置８０１は受信カウンタ８０２にクリアを要求し、受信データ分配装置８０１が制御受信状態であるときの処理を終了する。
【０１８８】
ステップＳ１６において、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２の値と異なるとき、受信データ分配装置８０１が制御受信状態であるときの処理を終了する。
【０１８９】
ステップＳ１４において、再構成カウンタ８０７の値が０であるとき、受信データ分配装置８０１は、外部入出力装置８１３に制御フレームの受信を示す割り込みを出力し（ステップＳ１８）、ステップＳ１５から処理を実施する。
【０１９０】
ステップＳ１２において、受信データ分配装置８０１が通信装置２００から受信した１ワードがデリミタ５０２０のとき、受信データ分配装置８０１は、ヘッダバッファ８０３からフレームヘッダ１０１０を読み出して中継障害バッファ８１２に書き込み、割り込み障害受信状態へ遷移し（ステップＳ１９）、受信データ分配装置８０１が制御受信状態であるときの処理を終了する。
【０１９１】
次に、受信データ分配装置８０１が割り込み障害受信状態であるときの処理（図面では、「割り込み障害受信状態時の処理」と表記する）を図２７を用いて説明する。
【０１９２】
まず、受信データ分配装置８０１は、中継障害バッファ８１２に通信装置２００から受信した１ワードを書き込み（ステップＳ２１）、割り込みカウンタ８１０にインクリメントを要求し、受信カウンタ８０２にインクリメントを要求する（ステップＳ２１）。
次に、受信データ分配装置８０１は、割り込みカウンタ８１０の値が予め定められた障害データのサイズと等しいか確認する（ステップＳ２２）。
【０１９３】
ステップＳ２２において、割り込みカウンタ８１０の値が予め定められて障害データのサイズと等しいとき、受信データ分配装置８０１は、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２の値と等しいか確認する（ステップＳ２３）。
【０１９４】
ステップＳ２３において、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２の値と等しいとき、受信データ分配装置８０１は、受信待機状態へ遷移し（ステップＳ２４）、割り込み障害受信状態であるときの処理を終了する。
【０１９５】
ステップＳ２３において、受信データ分配装置８０１の値がヘッダバッファ８０３のフレームサイズ１０１２の値と異なるとき、受信データ分配装置８０１は制御受信状態へ遷移する（ステップＳ２５）。
【０１９６】
ステップＳ２２において、割り込みカウンタ８１０の値が予め定められて障害データのサイズと異なるとき、割り込み障害受信状態であるときの処理を終了する。
【０１９７】
次に、受信データ分配装置８０１が障害受信状態であるときの処理（図面では、「障害受信状態時の処理」と表記する）を図２８を用いて説明する。
【０１９８】
まず、受信データ分配装置８０１は、中継障害バッファ８１２に通信装置２００から受信した１ワードを書き込み、受信カウンタ８０２にインクリメントを要求する（ステップＳ２６）。
また、受信データ分配装置８０１は、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２の値と等しいか確認する（ステップＳ２７）。
【０１９９】
ステップＳ２７において、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２の値と等しいとき、受信データ分配装置８０１は、受信カウンタ８０２にクリアを要求し、中継障害バッファ８１２に通信装置２００から受信した１ワードを書き込み、受信待機状態へ遷移し（ステップＳ２８）、受信データ分配装置８０１が障害受信状態であるときの処理を終了する。
【０２００】
ステップＳ２７において、受信カウンタ８０２の値がヘッダバッファ８０３のフレームサイズ１０１２の値と異なるとき、受信データ分配装置８０１は、受信待機状態へ遷移し、受信データ分配装置８０１が障害受信状態であるときの処理を終了する。
【０２０１】
次に、送信データ選択装置８１６が送信待機状態であるときの処理（図面では、「送信待機状態時の処理」と表記する）を図２９を用いて説明する。
【０２０２】
まず、送信データ選択装置８１６は、中継障害残りサイズカウンタ８０９の値が０かどうか確認する（ステップＳ３１）。
【０２０３】
ステップＳ３１において、中継障害残りサイズカウンタ８０９の値が０のとき、送信データ選択装置８１６は、自装置障害残りサイズカウンタ８２１の値が０かどうか確認する（ステップＳ３２）。
【０２０４】
ステップＳ３２において、自装置障害残りサイズカウンタ８２１の値が０のとき、送信データ選択装置８１６は中継残りサイズカウンタ８０６の値が０かどうか確認する（ステップＳ３３）。
【０２０５】
ステップＳ３３において、送信データ選択装置８１６は、中継残りサイズカウンタ８０６の値が０のとき、自装置残りサイズカウンタ８１８の値が０かどうか確認する（ステップＳ３４）。
【０２０６】
ステップＳ３４において、自装置残りサイズカウンタ８１８の値が０のとき、送信データ選択装置８１６は自装置送信状態へ遷移し（ステップＳ３５）、送信データ選択装置８１６が送信待機状態であるときの処理を終了する。
【０２０７】
ステップＳ３４において、自装置残りサイズカウンタ８１８の値が０以外のとき、送信データ選択装置８１６が送信待機状態であるときの処理を終了する。
【０２０８】
ステップＳ３３において、中継残りサイズカウンタ８０６の値が０以外のとき、送信データ選択装置８１６は中継状態へ遷移し（ステップＳ３６）、送信データ選択装置８１６が送信待機状態であるときの処理を終了する。
【０２０９】
ステップＳ３２において、自装置障害残りサイズカウンタ８２１の値が０以外のとき、送信データ選択装置８１６は自装置障害状態へ遷移し（ステップＳ３７）、送信データ選択装置８１６が送信待機状態であるときの処理を終了する。
【０２１０】
ステップＳ３１において、中継障害残りサイズカウンタ８０９の値が０以外のとき、送信データ選択装置８１６は、中継障害通知状態へ遷移し（ステップＳ３８）、送信データ選択装置８１６が送信待機状態であるときの処理を終了する。
【０２１１】
送信データ選択装置８１６が自装置送信状態であるときの処理（図面では、「自装置送信状態時の処理」と表記する）を図３０を用いて説明する。
【０２１２】
まず、送信データ選択装置８１６は、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以下か確認する（ステップＳ４０）。
【０２１３】
ステップＳ４０において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以下のとき、送信データ選択装置８１６は、自装置ヘッダバッファ８１７から１ワードを送信ポート８２４に出力し、送信カウンタ８２５にインクリメントを要求し、送信データ選択装置８１６が自装置送信状態であるときの処理を終了する（ステップＳ４１）。
【０２１４】
ステップＳ４０において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより大きいとき、送信データ選択装置８１６は、中継障害残りサイズカウンタ８０９の値が０であるか確認する（ステップＳ４２）。
【０２１５】
ステップＳ４２において、送信データ選択装置８１６は、自装置障害残りサイズカウンタ８２１の値が０であるか確認する（ステップＳ４３）。
【０２１６】
ステップＳ４３において、自装置障害残りサイズカウンタ８２１の値が０のとき、送信データ選択装置８１６は、送信カウンタ８２５の値が自装置ヘッダバッファ８１７のフレームサイズ１０１２の値と異なるか確認する（ステップＳ４４）。
【０２１７】
ステップＳ４４において、送信カウンタ８２５の値が自装置ヘッダバッファ８１７のフレームサイズ１０１２の値と異なるとき、送信データ選択装置８１６は、自装置データバッファ８１９から１ワードを送信ポート８２４に出力し、自装置残りサイズカウンタ８１８にデクリメントを要求し、送信カウンタ８２５にインクリメントを要求し（ステップＳ４５）、送信データ選択装置８１６が自装置送信状態であるときの処理を終了する。
【０２１８】
ステップＳ４４において、送信カウンタ８２５の値が自装置ヘッダバッファ８１７のフレームサイズ１０１２の値と等しいとき、送信データ選択装置８１６は、送信カウンタ８２５にクリアを要求し（ステップＳ４６）、自装置残りサイズカウンタ８１８の値が０であるか確認する（ステップＳ４７）。
【０２１９】
ステップＳ４７において、自装置残りサイズカウンタ８１８の値が０のとき、送信データ選択装置８１６は、送信カウンタ８２５にクリアを要求し、送信待機状態に遷移し（ステップＳ４８）、送信データ選択装置８１６が自装置送信状態であるときの処理を終了する。
【０２２０】
ステップＳ４８において、自装置残りサイズカウンタ８１８の値が０以外のとき、送信データ選択装置８１６は自装置分割状態に遷移し（ステップＳ４９）、送信データ選択装置８１６が自装置送信状態であるときの処理を終了する。
【０２２１】
ステップＳ４３において、自装置障害残りサイズカウンタ８２１の値が０でないとき、送信データ選択装置８１６は、自装置割り込み可否判定装置８２６の出力を確認する（ステップＳ５０）。
【０２２２】
ステップＳ５０において、自装置割り込み可否判定装置８２６の出力が有効でないとき、送信データ選択装置８１６はステップＳ４４から処理を実施する。
【０２２３】
ステップＳ５０において、自装置割り込み可否判定装置８２６の出力が有効であるとき、送信データ選択装置８１６は、デリミタ出力装置８２３からデリミタを送信ポート８２４に出力し、自装置自装置割り込み状態に遷移し（ステップＳ５１）、送信データ選択装置８１６が自装置送信状態であるときの処理を終了する。
【０２２４】
ステップＳ４２において、中継障害残り送信カウンタ８２５の値が０でないとき、送信データ選択装置８１６は、自装置割り込み可否判定装置８２６の出力を確認する（ステップＳ５２）。
【０２２５】
ステップＳ５２において、自装置割り込み可否判定装置８２６の出力が無効であるとき、送信データ選択装置８１６は、ステップＳ４３から処理を実施する。
【０２２６】
ステップＳ５２において、自装置割り込み可否判定装置８２６の出力が有効であるとき、送信データ選択装置８１６は、デリミタ出力装置８２３からデリミタ３０３０、５０２０を送信ポート８２４に出力し、自装置中継割り込み状態に遷移する（ステップＳ５３）。
【０２２７】
次に、送信データ選択装置８１６が自装置中継状態であるときの処理（図面では、「自装置中継状態時の処理」と表記する）を図３１を用いて説明する。
【０２２８】
まず、送信データ選択装置８１６は、中継障害残りサイズカウンタ８０９の値が０以上であるか確認する（ステップＳ５５）。
【０２２９】
ステップＳ５５において、中継障害残りサイズカウンタ８０９の値が０以上であるとき、送信データ選択装置８１６は、中継障害バッファ８１２から１ワードを送信ポート８２４へ出力し、送信カウンタ８２５にインクリメントを要求し、中継障害残り送信カウンタ８２５にデクリメントを要求し（ステップＳ５６）、送信データ選択装置８１６が自装置中継状態であるときの処理を終了する。
【０２３０】
ステップＳ５６において、中継障害残りサイズカウンタ８０９の値が０であるとき、送信データ選択装置８１６は、自装置送信状態へ遷移し（ステップＳ５７）、送信データ選択装置８１６が自装置中継状態であるときの処理を終了する。
【０２３１】
次に、送信データ選択装置８１６が自装置自装置状態であるときの処理（図面では、「自装置自装置状態時の処理」と表記する）を図３２を用いて説明する。
【０２３２】
まず、送信データ選択装置８１６は、自装置障害残りサイズカウンタ８２１の値が０以上であるか確認する（ステップＳ５９）。
【０２３３】
ステップＳ５９において、自装置障害残りサイズカウンタ８２１の値が０以上であるとき、送信データ選択装置８１６は自装置障害バッファ８２２から１ワードを送信ポート８２４へ出力し、送信カウンタ８２５にインクリメントを要求し、自装置障害残りサイズカウンタ８２１にデクリメントを要求し（ステップＳ６０）、送信データ選択装置８１６が自装置自装置状態であるときの処理を終了する。
【０２３４】
ステップＳ５９において、自装置障害残りサイズカウンタ８２１の値が０であるとき、送信データ選択装置８１６は、自装置送信状態へ遷移し（ステップＳ５７）、送信データ選択装置８１６が自装置自装置状態であるときの処理を終了する。
【０２３５】
次に、送信データ選択装置８１６が自装置分割状態であるときの処理（図面では、「自装置分割状態時の処理」と表記する）を図３２を用いて説明する。
【０２３６】
まず、送信データ選択装置８１６は、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより小さいか確認する（ステップＳ６２）。
【０２３７】
ステップＳ６２において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより小さいとき、送信データ選択装置８１６は、自装置分割ヘッダ生成装置８２７から１ワードを送信ポート８２４に出力し、送信カウンタ８２５にインクリメントを要求し（ステップＳ６３）、送信データ選択装置８１６が自装置分割状態であるときの処理を終了する。
【０２３８】
ステップＳ６２において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以上であるとき、送信データ選択装置８１６は、自装置残りサイズカウンタ８１８の値が０より大きいか確認する（ステップＳ６４）。
【０２３９】
ステップＳ６４において、自装置残りサイズカウンタ８１８の値が０より大きいとき、送信データ選択装置８１６は、自装置データバッファ８１９から１ワードを送信ポート８２４へ出力し、自装置残りサイズカウンタ８１８にデクリメントを要求し、送信カウンタ８２５にインクリメントを要求し（ステップＳ６５）、送信データ選択装置８１６が自装置分割状態であるときの処理を終了する。
【０２４０】
ステップＳ６４において、自装置残りサイズカウンタ８１８の値が０であるとき、送信データ選択装置８１６は、送信カウンタ８２５にクリアを要求し、送信待機状態へ遷移し（ステップＳ６６）、送信データ選択装置８１６が自装置分割状態であるときの処理を終了する。
【０２４１】
送信データ選択装置８１６が中継送信状態であるときの処理（図面では、「中継送信状態時の処理」と表記する）を図３３を用いて説明する。
【０２４２】
まず、送信データ選択装置８１６は、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以下か確認する（ステップＳ６８）。
【０２４３】
ステップＳ６８において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以下のとき、送信データ選択装置８１６は、中継ヘッダバッファ８０４から１ワードを送信ポート８２４に出力し、送信カウンタ８２５にインクリメントを要求し、送信データ選択装置８１６が中継送信状態であるときの処理を終了する（ステップＳ６９）。
【０２４４】
ステップＳ６８において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより大きいとき、送信データ選択装置８１６は、中継障害残りサイズカウンタ８０９の値が０であるか確認する（ステップＳ７０）。
【０２４５】
ステップＳ７０において、送信データ選択装置８１６は、自装置障害残りサイズカウンタ８２１の値が０であるか確認する（ステップＳ７１）。
【０２４６】
ステップＳ７１において、自装置障害残りサイズカウンタ８２１の値が０のとき、送信データ選択装置８１６は、送信カウンタ８２５の値が中継ヘッダバッファ８０４のフレームサイズ１０１２の値と異なるか確認する（ステップＳ７２）。
【０２４７】
ステップＳ７２において、送信カウンタ８２５の値が中継ヘッダバッファ８０４のフレームサイズ１０１２の値と異なるとき、送信データ選択装置８１６は、中継データバッファ８１１から１ワードを送信ポート８２４に出力し、中継残りサイズカウンタ８０６にデクリメントを要求し、送信カウンタ８２５にインクリメントを要求し（ステップＳ７３）、送信データ選択装置８１６が中継送信状態であるときの処理を終了する。
【０２４８】
ステップＳ７２において、送信カウンタ８２５の値が中継ヘッダバッファ８０４のフレームサイズ１０１２の値と等しいとき、送信データ選択装置８１６は、送信カウンタ８２５にクリアを要求し（ステップＳ７４）、中継残りサイズカウンタ８０６の値が０であるか確認する（ステップＳ７５）。
【０２４９】
ステップＳ７５において、中継残りサイズカウンタ８０６の値が０のとき、送信データ選択装置８１６は送信カウンタ８２５にクリアを要求し、送信待機状態に遷移し（ステップＳ７６）、送信データ選択装置８１６が中継送信状態であるときの処理を終了する。
【０２５０】
ステップＳ７５において、中継残りサイズカウンタ８０６の値が０以外のとき、送信データ選択装置８１６は、中継分割状態に遷移し（ステップＳ７７）、送信データ選択装置８１６が中継送信状態であるときの処理を終了する。
【０２５１】
ステップＳ７１において、自装置障害残りサイズカウンタ８２１の値が０でないとき、送信データ選択装置８１６は、中継割り込み可否判定装置８１５の出力を確認する（ステップＳ７８）。
【０２５２】
ステップＳ７８において、中継割り込み可否判定装置８１５の出力が有効でないとき、送信データ選択装置８１６は、ステップＳ７２から処理を実施する。
【０２５３】
ステップＳ７８において、中継割り込み可否判定装置８１５の出力が有効であるとき、送信データ選択装置８１６は、デリミタ出力装置８２３からデリミタ３０３０を送信ポート８２４に出力し、中継自装置割り込み状態に遷移し（ステップＳ７９）、送信データ選択装置８１６が中継送信状態であるときの処理を終了する。
【０２５４】
ステップＳ７０において、中継障害残りサイズカウンタ８０９の値が０でないとき、送信データ選択装置８１６は、中継割り込み可否判定装置８１５の出力を確認する（ステップＳ８０）。
【０２５５】
ステップＳ８０において、中継割り込み可否判定装置８１５の出力が無効であるとき、送信データ選択装置８１６は、ステップＳ７１から処理を実施する。
【０２５６】
ステップＳ８０において、中継割り込み可否判定装置８１５の出力が有効であるとき、送信データ選択装置８１６は、デリミタ出力装置８２３からデリミタ３０３０を送信ポート８２４に出力し、中継中継割り込み状態に遷移し（ステップＳ８１）、送信データ選択装置８１６が中継送信状態であるときの処理を終了する。
【０２５７】
次に、送信データ選択装置８１６が中継中継状態であるときの処理（図面では、「中継中継状態時の処理」と表記する）を図３４を用いて説明する。
【０２５８】
まず、送信データ選択装置８１６は、中継障害残りサイズカウンタ８０９の値が０以上であるか確認する（ステップＳ８３）。
【０２５９】
ステップＳ８３において、中継障害残りサイズカウンタ８０９の値が０以上であるとき、送信データ選択装置８１６は、中継障害バッファ８１２から１ワードを送信ポート８２４へ出力し、送信カウンタ８２５にインクリメントを要求し、中継障害残りサイズカウンタ８０９にデクリメントを要求し（ステップＳ８４）、送信データ選択装置８１６が中継中継状態であるときの処理を終了する。
【０２６０】
ステップＳ８３において、中継障害残りサイズカウンタ８０９の値が０であるとき、送信データ選択装置８１６は、中継送信状態へ遷移し（ステップＳ８５）、送信データ選択装置８１６が中継中継状態であるときの処理を終了する。
【０２６１】
次に、送信データ選択装置８１６が中継自装置状態であるときの処理（図面では、「中継自装置状態時の処理」と表記する）を図３４を用いて説明する。
【０２６２】
まず、送信データ選択装置８１６は、自装置障害残りサイズカウンタ８２１の値が０以上であるか確認する（ステップＳ８７）。
【０２６３】
ステップＳ８７において、自装置障害残りサイズカウンタ８２１の値が０以上であるとき、送信データ選択装置８１６は、自装置障害バッファ８２２から１ワードを送信ポート８２４へ出力し、送信カウンタ８２５にインクリメントを要求し、自装置障害残り送信カウンタ８２５にデクリメントを要求し（ステップＳ８８）、送信データ選択装置８１６が中継自装置状態であるときの処理を終了する。
【０２６４】
ステップＳ８７において、自装置障害残りサイズカウンタ８２１の値が０であるとき、送信データ選択装置８１６は中継送信状態へ遷移し（ステップＳ８８）、送信データ選択装置８１６が中継自装置状態であるときの処理を終了する。
【０２６５】
次に、送信データ選択装置８１６が中継分割状態であるときの処理（図面では、「中継分割状態時の処理」と表記する）を図３５を用いて説明する。
【０２６６】
まず、送信データ選択装置８１６は、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより小さいか確認する（ステップＳ９０）。
【０２６７】
ステップＳ９０において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより小さいとき、送信データ選択装置８１６は、中継分割ヘッダ生成装置８１４から１ワードを送信ポート８２４に出力し、送信カウンタ８２５にインクリメントを要求し（ステップＳ９１）、送信データ選択装置８１６が中継分割状態であるときの処理を終了する。
【０２６８】
ステップＳ９０において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以上であるとき、送信データ選択装置８１６は中継残りサイズカウンタ８０６の値が０より大きいか確認する（ステップＳ９２）。
【０２６９】
ステップＳ９２において、中継残りサイズカウンタ８０６の値が０より大きいとき、送信データ選択装置８１６は、中継データバッファ８１１から１ワードを送信ポート８２４へ出力し、中継残りサイズカウンタ８０６にデクリメントを要求し、送信カウンタ８２５にインクリメントを要求し（ステップＳ９３）、送信データ選択装置８１６が中継分割状態であるときの処理を終了する。
【０２７０】
ステップＳ９２において、中継残りサイズカウンタ８０６の値が０のとき、送信データ選択装置８１６は、送信カウンタ８２５にクリアを要求し、送信待機状態へ遷移し（ステップＳ９４）、送信データ選択装置８１６が中継分割状態であるときの処理を終了する。
【０２７１】
次に、送信データ選択装置８１６が中継障害状態であるときの処理（図面では、「中継障害状態時の処理」と表記する）を図３６を用いて説明する。
【０２７２】
まず、送信データ選択装置８１６は、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより小さいか確認する（ステップＳ９６）。
【０２７３】
ステップＳ９６において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより小さいとき、送信データ選択装置８１６は、中継障害ヘッダバッファ８０８から１ワードを送信ポート８２４に出力し、送信カウンタ８２５にデクリメントを要求し（ステップＳ９７）、送信データ選択装置８１６が中継障害状態であるときの処理を終了する。
【０２７４】
ステップＳ９６において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以上であるとき、送信データ選択装置８１６は中継残りサイズカウンタ８０６の値が０より大きいか確認する（ステップＳ９８）。
【０２７５】
ステップＳ９８において、中継障害残りサイズカウンタ８０９の値が０より大きいとき、送信データ選択装置８１６は、中継障害バッファ８１２から１ワードを送信ポート８２４へ出力し、中継障害残りサイズカウンタ８０９にデクリメントを要求し、送信カウンタ８２５にインクリメントを要求し（ステップＳ９９）、送信データ選択装置８１６が中継障害状態であるときの処理を終了する。
【０２７６】
ステップＳ９８において、中継障害残り送信カウンタ８２５の値が０のとき、送信データ選択装置８１６は、送信カウンタ８２５にクリアを要求し、送信待機状態へ遷移し（ステップＳ１００）、送信データ選択装置８１６が中継障害状態であるときの処理を終了する。
【０２７７】
次に、送信データ選択装置８１６が自装置害状態であるときの処理（図面では、「自装置障害状態時の処理」と表記する）を図３７を用いて説明する。
【０２７８】
まず、送信データ選択装置８１６は、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより小さいか確認する（ステップＳ１０１）。
【０２７９】
ステップＳ９６において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズより小さいとき、送信データ選択装置８１６は自装置障害ヘッダバッファ８２０から１ワードを送信ポート８２４に出力し、送信カウンタ８２５にデクリメントを要求し（ステップＳ１０２）、送信データ選択装置８１６が自装置障害状態であるときの処理を終了する。
【０２８０】
ステップＳ１０１において、送信カウンタ８２５の値がフレームヘッダ１０１０のサイズ以上であるとき、送信データ選択装置８１６は、自装置障害残りサイズカウンタ８２１の値が０より大きいか確認する（ステップＳ１０３）。
【０２８１】
ステップＳ１０３において、自装置障害残りサイズカウンタ８２１の値が０より大きいとき、送信データ選択装置８１６は、自装置障害バッファ８２２から１ワードを送信ポート８２４へ出力し、自装置障害残りサイズカウンタ８２１にデクリメントを要求し、送信カウンタ８２５にインクリメントを要求し（ステップＳ１０４）、送信データ選択装置８１６が自装置障害状態であるときの処理を終了する。
【０２８２】
ステップＳ１０５において、自装置障害残りサイズカウンタ８２１の値が０のとき、送信データ選択装置８１６は、送信カウンタ８２５にクリアを要求し、送信データ選択装置８１６は送信待機状態へ遷移し（ステップＳ１０５）、送信データ選択装置８１６が自装置障害状態であるときの処理を終了する。
【０２８３】
そして、ステップＳ３０またはステップＳ３９またはステップＳ５４またはステップＳ５８またはステップＳ６１またはステップＳ９５またはステップＳ６７またはステップＳ８２またはステップＳ８６またはステップＳ８９またはステップＳ１０１の処理が終了したとき、外部入出力装置８１３が、出力処理を実施する。
この処理を図３８を用いて説明する。
【０２８４】
まず、外部入出力装置８１３は、自身（外部入出力装置８１３）が障害データおよび障害フレームヘッダ６０１０を出力しているか確認する（ステップＳ１０７）。
【０２８５】
ステップＳ１０７において、外部入出力装置８１３が障害データおよび障害フレームヘッダ６０１０を出力しているとき、外部入出力装置８１３は、障害フレームヘッダ６０１０を自装置障害ヘッダバッファ８２０に書き込み、障害データを自装置障害バッファ８２２に書き込み（ステップＳ１０８）、自身（外部入出力装置８１３）が制御データ２０２０および制御フレームヘッダ２０１０を出力しているか確認する（ステップＳ１０９）。
【０２８６】
ステップＳ１０７において、外部入出力装置８１３が障害データ及び障害フレームヘッダ６０１０を出力していないとき、ステップＳ１０９の処理を実施する。
【０２８７】
ステップＳ１０９において、外部入出力装置８１３が制御データ２０２０および制御フレームヘッダ２０１０を出力しているとき、外部入出力装置８１３は、制御フレームヘッダ２０１０を自装置ヘッダバッファ８１７に書き込み、制御データ２０２０を自装置データバッファ８１９に書き込み（ステップＳ１１０）、外部入出力装置８１３の出力処理を終了する。
【０２８８】
ステップＳ１０９において、外部入出力装置８１３が制御データ２０２０および制御フレームヘッダ２０１０を出力していないとき、外部入出力装置８１３の出力処理を終了する。
【０２８９】
次に、送信データ選択装置８１６が受信待機状態であるときの処理（図面では、「受信待機状態時の処理」と表記する）を図３９を用いて説明する。
【０２９０】
まず、受信データ分配装置８０１は、受信ポート８００から１ワード受信したか確認する（ステップＳ１１２）。
【０２９１】
ステップＳ１１２において、受信データ分配装置８０１は、受信ポート８００から１ワード受信したとき、ヘッダ受信状態へ遷移する（Ｓ１１３）。
【０２９２】
ステップＳ１１２において、受信データ分配装置８０１は、受信ポート８００から１ワード受信していないとき、受信データ分配装置８０１が受信待機状態であるときの処理を終了する。
【０２９３】
以上のように、本実施の形態によっても、通信装置２００が障害通知を実施した際、通信装置１００は制御フレームに障害通知を割り込ませることで制御通信の周期が短いままに、障害通知の時間を短縮することができる。
【０２９４】
以上、本実施の形態では、
他の装置とデイジーチェーンで接続され、
他の装置からフレームヘッダとフレームデータで構成されるフレームを受信し、
他の装置から受信したフレームを中継し、
他の装置へ外部入出力装置から入力されたフレームを送信し、
所定の時間間隔で他の装置と送信と受信を繰り返す通信装置を説明した。
【０２９５】
そして、本実施の形態に係る通信装置は、
他の装置からフレームを受信し、受信フレーム振り分け装置に出力する受信ポートを有し、
受信したフレーム（以下、中継フレームと記す）について、
受信したフレームヘッダを格納する中継ヘッダバッファと、
受信したフレームデータを格納する中継データバッファと、
受信した障害を通知するフレーム（以下、障害フレームと記す）について、
受信した障害フレームヘッダを格納する中継障害ヘッダバッファと、
受信した障害フレームデータを格納する中継障害バッファを有し、
受信した中継フレームヘッダを中継ヘッダバッファに、受信した中継フレームデータを中継データバッファに振り分けて格納し、受信した障害フレームヘッダを中継障害ヘッダバッファに、受信した障害フレームデータを中継障害バッファに振り分けて格納する受信フレーム振り分け装置を有することを説明した。
【０２９６】
また、本実施の形態に係る通信装置は、
外部入出力装置から入力されたフレーム（以下、自装置フレームと記す）について、
自装置フレームのヘッダを格納する自装置ヘッダバッファと、
自装置フレームデータを格納する自装置データバッファと、
外部入出力装置から入力された障害フレーム（以下、自装置障害フレームと記す）について、
自装置障害フレームヘッダを格納する自装置障害ヘッダバッファと、
自装置障害フレームデータを格納する自装置障害バッファを有し、
送信するデータを１ワードごとに中継ヘッダバッファまたは中継データバッファまたは中継障害ヘッダバッファまたは中継障害バッファまたは自装置ヘッダバッファまたは自装置データバッファまたは自装置障害ヘッダバッファまたは自装置障害バッファから選択し、送信ポートから他装置へ送信する送信データ選択装置を有し、
本実施の形態に係る通信装置が、
送信データ選択装置から障害データを、送信中のフレームに割り込ませて送信することを説明した。
【０２９７】
また、本実施の形態に係る通信装置が、
送信中のフレームに割り込む障害データの先頭を示すデリミタをデリミタ出力装置より読み出して送信する送信データ選択装置を有することを説明した。
【０２９８】
また、本実施の形態に係る通信装置が、
受信したワード数をカウントする受信カウンタの値と、
受信したフレーム内の障害データのワード数をカウントする割り込みカウンタの値と、
受信したヘッダを格納するヘッダバッファの出力と、
受信した障害データのワード数をカウントする割り込みカウンタの値と、
受信フレーム振り分け装置自身が有するデリミタ検出機能に基づき、受信したワードの格納先を切り替える受信フレーム振り分け装置を有することを説明した。
【０２９９】
また、本実施の形態に係る通信装置が、
送信データ選択装置自身が送信中の自装置フレームのサイズと、
送信したワード数をカウントする送信カウンタの値と、障害データの送信可否を出力する自装置割り込み可否判定装置の出力に基づき、送信中の自装置フレームに障害データを割り込ませる位置を制御する送信データ選択装置を有することを説明した。
【０３００】
また、本実施の形態に係る通信装置が、
送信データ選択装置自身が送信中の中継フレームのサイズと送信カウンタの値と、障害データの送信可否を出力する中継割り込み可否判定装置の出力に基づき、送信中のフレームに障害データを割り込ませる位置を制御する送信データ選択装置を有することを説明した。
【０３０１】
また、本実施の形態に係る通信装置が、
送信カウンタと、送信した自装置フレームのフレームデータのワード数をカウントする自装置残りサイズカウンタの値に基づき、送信中の自装置フレームに障害データを割り込ませたことで押し出されたフレームデータに付加するフレームヘッダ（以下、自装置分割ヘッダと記す）を出力する自装置分割ヘッダ生成装置を有することを説明した。
【０３０２】
また、本実施の形態に係る通信装置が、
送信カウンタと、送信した中継フレームのフレームデータのワード数をカウントする中継残りサイズカウンタの値に基づき、送信中の中継フレームに障害データを割り込ませたことで押し出されたフレームデータに付加するフレームヘッダ（以下、中継分割ヘッダと記す）を出力する中継分割ヘッダ生成装置を有することを説明した。
【０３０３】
また、本実施の形態に係る通信装置が、
自装置データバッファから送信中の自装置フレームに障害データを割り込ませたことで押し出されたフレームデータを自装置分割ヘッダに続いて送信する送信データ選択装置を有することを説明した。
【０３０４】
また、本実施の形態に係る通信装置が、
中継データバッファから送信中の中継フレームに障害データを割り込ませたことで押し出されたフレームデータを中継分割ヘッダに続いて送信する送信データ選択装置を有することを説明した。
【０３０５】
また、本実施の形態に係る通信装置が、
分割データを格納する再構成バッファと、
受信した分割データ数をカウントする再構成カウンタを有し、
外部装置の読み出しに応じて、分割データを再構成して障害データが割り込む前のデータを外部装置に出力する機能を有することを説明した。
【０３０６】
なお、以上では、ＦＡネットワークで通信を行う通信装置を例にして説明したが、これまで説明してきた方式は他の種類のネットワークで通信を行う通信装置にも適用することができる。
すなわち、これまで説明してきた方式の用途は、ＦＡネットワークで通信を行う通信装置に限定されるものではない。
【０３０７】
最後に、実施の形態１及び２に示した通信装置１００、２００、３００のハードウェア構成例について説明する。
図４２は、実施の形態１及び２に示す通信装置１００、２００、３００のハードウェア資源の一例を示す図である。
なお、図４２の構成は、あくまでも通信装置１００、２００、３００のハードウェア構成の一例を示すものであり、通信装置１００、２００、３００のハードウェア構成は図４２に記載の構成に限らず、他の構成であってもよい。
【０３０８】
図４２において、通信装置１００、２００、３００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。
また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。
ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。
これらは、記憶装置の一例である。
実施の形態１及び２で説明した「〜バッファ」、「〜バッファ部」は、例えば、ＲＡＭ９１４等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
通信ボード９１５は、通信路に接続されている。
【０３０９】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【０３１０】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【０３１１】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
通信装置１００、２００、３００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【０３１２】
上記プログラム群９２３には、実施の形態１及び２の説明において「〜部」、「〜装置」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【０３１３】
ファイル群９２４には、実施の形態１及び２の説明において、「〜の判断」、「〜の設定」、「〜の比較」、「〜の解析」、「〜の制御」、「〜のセット」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置３０３にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置３０３にファイルとして記憶されてもよい。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記憶媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１及び２で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記憶媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０３１４】
また、実施の形態１及び２の説明において「〜部」、「〜装置」として説明しているものは、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１及び２で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「通信方法」を実現することができる。
また、「〜部」、「〜装置」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記憶媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１及び２の「〜部」、「〜装置」としてコンピュータを機能させるものである。あるいは、実施の形態１及び２の「〜部」、「〜装置」の手順や方法をコンピュータに実行させるものである。
【０３１５】
このように、実施の形態１及び２に示す通信装置１００、２００、３００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」、「〜装置」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０３１６】
１００  通信装置、１０１  制御部、１０２  フレーム受信部、１０３  受信データ分配部、１０４  受信データ再構成部、１０５  データ生成部、１０６  送信フレーム生成部、１０７  フレーム送信部、１１０  送信用バッファ部、１１１  障害フレームバッファ部、１１２  制御フレームバッファ部、１２０  フレーム生成管理部、１２１  送信決定部、１２２  順序制御部、１２３  残りデータサイズカウント部、１３０  再構成用バッファ部、１３１  障害フレームバッファ部、１３２  制御フレームバッファ部、１４０  再構成管理部、１４１  データ抽出部、１４２  データサイズカウント部、１４３  データ復元部、１４４  制御データ用スタック、１４５  障害データ用スタック、２００  通信装置、３００  通信装置、８００  受信ポート、８０１  受信データ分配装置、８０２  受信カウンタ、８０３  ヘッダバッファ、８０４  中継ヘッダバッファ、８０５  再構成バッファ、８０６  中継残りサイズカウンタ、８０７  再構成カウンタ、８０８  中継障害ヘッダバッファ、８０９  中継障害残りサイズカウンタ、８１０  割り込みカウンタ、８１１  中継データバッファ、８１２  中継障害バッファ、８１３  外部入出力装置、８１４  中継分割ヘッダ生成装置、８１５  中継割り込み可否判定装置、８１６  送信データ選択装置、８１７  自装置ヘッダバッファ、８１８  自装置残りサイズカウンタ、８１９  自装置データバッファ、８２０  自装置障害ヘッダバッファ、８２１  自装置障害残りサイズカウンタ、８２２  自装置障害バッファ、８２３  デリミタ出力装置、８２４  送信ポート、８２５  送信カウンタ、８２６  自装置割り込み可否判定装置、８２７  自装置分割ヘッダ生成装置。
【図１】
2013125027.tif 000003
【図２】
2013125027.tif 000004
【図３】
2013125027.tif 000005
【図４】
2013125027.tif 000006
【図５】
2013125027.tif 000007
【図６】
2013125027.tif 000008
【図７】
2013125027.tif 000009
【図８】
2013125027.tif 000010
【図９】
2013125027.tif 000011
【図１０】
2013125027.tif 000012
【図１１】
2013125027.tif 000013
【図１２】
2013125027.tif 000014
【図１３】
2013125027.tif 000015
【図１４】
2013125027.tif 000016
【図１５】
2013125027.tif 000017
【図１６】
2013125027.tif 000018
【図１７】
2013125027.tif 000019
【図１８】
2013125027.tif 000020
【図１９】
2013125027.tif 000021
【図２０】
2013125027.tif 000022
【図２１】
2013125027.tif 000023
【図２２】
2013125027.tif 000024
【図２３】
2013125027.tif 000025
【図２４】
2013125027.tif 000026
【図２５】
2013125027.tif 000027
【図２６】
2013125027.tif 000028
【図２７】
2013125027.tif 000029
【図２８】
2013125027.tif 000030
【図２９】
2013125027.tif 000031
【図３０】
2013125027.tif 000032
【図３１】
2013125027.tif 000033
【図３２】
2013125027.tif 000034
【図３３】
2013125027.tif 000035
【図３４】
2013125027.tif 000036
【図３５】
2013125027.tif 000037
【図３６】
2013125027.tif 000038
【図３７】
2013125027.tif 000039
【図３８】
2013125027.tif 000040
【図３９】
2013125027.tif 000041
【図４０】
2013125027.tif 000042
【図４１】
2013125027.tif 000043
【図４２】
2013125027.tif 000044
【図４３】
2013125027.tif 000045
【手続補正書】
【提出日】平成24年8月24日(2012.8.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フレームサイズが可変である通信フレームに含ませてデータを送信する通信装置であって、
１つの通信フレームで送信するデータを、先頭から順に送信するデータ送信部と、
前記データ送信部がデータの送信を完了する前に特定のデータが新たに発生した場合に、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定部と、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御部と、
現在の通信フレームで送信可能な残りのデータサイズを送信可能残りデータサイズとしてカウントする残りデータサイズカウント部とを有し、
前記送信決定部は、
前記未送信データ内で先頭に位置する先頭未送信データのデータ種別が、優先してデータを送信すべき優先種別であるか否かを解析し、
前記先頭未送信データのデータ種別が優先種別でない場合であって、前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記特定のデータの前に送信されるデリミタのデータサイズとの加算値以上である場合に、前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定し、
前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記デリミタのデータサイズとの加算値未満である場合に、前記特定のデータを後続の通信フレームで送信するよう決定し、
前記データ送信部は、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記順序制御部による送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする通信装置。
【請求項２】
前記順序制御部は、
前記特定のデータが前記未送信データの前に送信される結果、現在の通信フレームでは送信できない前記未送信データの少なくとも一部が、現在の通信フレームに後続する通信フレームで送信されるように制御し、
前記データ送信部は、
現在の通信フレームでは送信できない前記未送信データの少なくとも一部を、現在の通信フレームに後続する通信フレームで送信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記送信決定部は、
前記先頭未送信データのデータ種別が優先種別である場合に、前記先頭未送信データ以降の優先種別のデータ部分が送信された後に前記特定のデータを送信するよう決定し、
前記順序制御部は、
前記先頭未送信データ以降の優先種別のデータ部分が送信された後に前記特定のデータが送信され、前記特定のデータの送信が完了した後の送信が前記未送信データ内の優先種別でないデータ部分の先頭から開始されるように、前記特定のデータと前記未送信データの送信順序を制御し、
前記データ送信部は、
前記順序制御部による送信順序の制御に基づき、前記先頭未送信データ以降の優先種別のデータ部分を送信し、前記特定のデータを送信し、前記特定のデータの送信が完了した後の送信を前記未送信データ内の優先種別でないデータ部分の先頭から開始することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記データ送信部は、
前記デリミタと前記特定のデータとが送信された後の送信可能残りデータサイズ分の未送信データを現在の通信フレームで送信し、現在の通信フレームで送信されなかった未送信データを後続の通信フレームで送信することを特徴とする請求項１〜３のいずれかに記載の通信装置。
【請求項５】
前記データ送信部は、
前記送信決定部が前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定した場合に、前記特定のデータを現在の通信フレームでデリミタに後続して送信することを特徴とする請求項１〜４のいずれかに記載の通信装置。
【請求項６】
前記通信装置は、更に、
外部装置から送信されたデータを受信するデータ受信部を有し、
前記送信決定部は、
前記データ送信部がデータの送信を完了する前に前記データ受信部が前記外部装置から前記特定のデータを受信した場合に、前記データ受信部が前記外部装置から受信した前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜５のいずれかに記載の通信装置。
【請求項７】
前記通信装置は、更に、
前記データ送信部から送信させるデータを生成するデータ生成部を有し、
前記送信決定部は、
前記データ送信部がデータの送信を完了する前に前記データ生成部が前記特定のデータを生成した場合に、前記データ生成部が生成した前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜６のいずれかに記載の通信装置。
【請求項８】
前記データ送信部は、
外部装置から受信したデータであって、１つの通信フレームで送信するデータを、先頭から順に送信し、
前記送信決定部は、
前記データ送信部が、前記外部装置から受信したデータの送信を完了する前に、前記特定のデータが発生した場合に、前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜７のいずれかに記載の通信装置。
【請求項９】
前記データ送信部は、
前記通信装置内で生成されたデータであって、１つの通信フレームで送信するデータを、先頭から順に送信し、
前記送信決定部は、
前記データ送信部が、前記通信装置内で生成されたデータの送信を完了する前に、前記特定のデータが発生した場合に、前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜８のいずれかに記載の通信装置。
【請求項１０】
前記通信装置は、更に、
所定の分割前データから分割された複数の分割データを、２つ以上の通信フレームにおいて受信するデータ受信部と、
通信フレームごとに、前記データ受信部が受信したデータの中から前記分割前データの分割データを抽出するデータ抽出部と、
前記データ抽出部により抽出された分割データを格納する分割データ格納部と、
前記分割データ格納部に格納されている分割データのデータサイズの累積値をカウントするデータサイズカウント部と、
前記分割前データの総データサイズを導出するとともに、前記データサイズカウント部がカウントしたデータサイズの累積値が、導出した前記分割前データの総データサイズに達した際に、前記分割データ格納部に格納されている分割データを用いて、前記分割前データを復元するデータ復元部とを有することを特徴とする請求項１〜９のいずれかに記載の通信装置。
【請求項１１】
前記送信決定部は、
前記特定のデータとして、前記通信装置及び前記通信装置が所属するネットワーク内の少なくともいずれかで障害が検知されたことを通知する障害データが、前記データ送信部がデータの送信を完了する前に発生した場合に、前記障害データを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜１０のいずれかに記載の通信装置。
【請求項１２】
コンピュータが、フレームサイズが可変である通信フレームに含ませてデータを送信する通信方法であって、
前記コンピュータが、１つの通信フレームで送信するデータを、先頭から順に送信するデータ送信ステップと、
前記データ送信ステップによるデータの送信が完了する前に特定のデータが新たに発生した場合に、前記コンピュータが、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定ステップと、
前記送信決定ステップで前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記コンピュータが、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御ステップと、
前記コンピュータが、現在の通信フレームで送信可能な残りのデータサイズを送信可能残りデータサイズとしてカウントする残りデータサイズカウントステップとを有し、
前記送信決定ステップにおいて、
前記コンピュータは、前記未送信データ内で先頭に位置する先頭未送信データのデータ種別が、優先してデータを送信すべき優先種別であるか否かを解析し、
前記先頭未送信データのデータ種別が優先種別でない場合であって、前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記特定のデータの前に送信されるデリミタのデータサイズとの加算値以上である場合に、前記コンピュータは、前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定し、
前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記デリミタのデータサイズとの加算値未満である場合に、前記コンピュータは、前記特定のデータを後続の通信フレームで送信するよう決定し、
前記データ送信ステップにおいて、
前記送信決定ステップで前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記コンピュータは、前記順序制御ステップによる送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする通信方法。
【請求項１３】
コンピュータを、請求項１に記載された通信装置として機能させることを特徴とするプログラム。
【手続補正書】
【提出日】平成24年11月21日(2012.11.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フレームサイズが可変であり、フレームヘッダにそのフレームサイズが記述されている通信フレームに含ませてデータを送信する通信装置であって、
１つの通信フレームで送信するデータを、先頭から順に送信するデータ送信部と、
前記データ送信部がデータの送信を完了する前に特定のデータが新たに発生した場合に、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定部と、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御部と、
現在の通信フレームのフレームヘッダに記述されている現在の通信フレームのフレームサイズに基づき、現在の通信フレームで送信可能な残りのデータサイズを送信可能残りデータサイズとしてカウントする残りデータサイズカウント部とを有し、
前記送信決定部は、
前記未送信データ内で先頭に位置する先頭未送信データのデータ種別が、優先してデータを送信すべき優先種別であるか否かを解析し、
前記先頭未送信データのデータ種別が優先種別でない場合であって、前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記特定のデータの前に送信されるデリミタのデータサイズとの加算値以上である場合に、前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定し、
前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記デリミタのデータサイズとの加算値未満である場合に、前記特定のデータを後続の通信フレームで送信するよう決定し、
前記データ送信部は、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記順序制御部による送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする通信装置。
【請求項２】
前記順序制御部は、
前記特定のデータが前記未送信データの前に送信される結果、現在の通信フレームでは送信できない前記未送信データの少なくとも一部が、現在の通信フレームに後続する通信フレームで送信されるように制御し、
前記データ送信部は、
現在の通信フレームでは送信できない前記未送信データの少なくとも一部を、現在の通信フレームに後続する通信フレームで送信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記送信決定部は、
前記先頭未送信データのデータ種別が優先種別である場合に、前記先頭未送信データ以降の優先種別のデータ部分が送信された後に前記特定のデータを送信するよう決定し、
前記順序制御部は、
前記先頭未送信データ以降の優先種別のデータ部分が送信された後に前記特定のデータが送信され、前記特定のデータの送信が完了した後の送信が前記未送信データ内の優先種別でないデータ部分の先頭から開始されるように、前記特定のデータと前記未送信データの送信順序を制御し、
前記データ送信部は、
前記順序制御部による送信順序の制御に基づき、前記先頭未送信データ以降の優先種別のデータ部分を送信し、前記特定のデータを送信し、前記特定のデータの送信が完了した後の送信を前記未送信データ内の優先種別でないデータ部分の先頭から開始することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記データ送信部は、
前記デリミタと前記特定のデータとが送信された後の送信可能残りデータサイズ分の未送信データを現在の通信フレームで送信し、現在の通信フレームで送信されなかった未送信データを後続の通信フレームで送信することを特徴とする請求項１〜３のいずれかに記載の通信装置。
【請求項５】
前記データ送信部は、
前記送信決定部が前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定した場合に、前記特定のデータを現在の通信フレームでデリミタに後続して送信することを特徴とする請求項１〜４のいずれかに記載の通信装置。
【請求項６】
前記通信装置は、更に、
外部装置から送信されたデータを受信するデータ受信部を有し、
前記送信決定部は、
前記データ送信部がデータの送信を完了する前に前記データ受信部が前記外部装置から前記特定のデータを受信した場合に、前記データ受信部が前記外部装置から受信した前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜５のいずれかに記載の通信装置。
【請求項７】
前記通信装置は、更に、
前記データ送信部から送信させるデータを生成するデータ生成部を有し、
前記送信決定部は、
前記データ送信部がデータの送信を完了する前に前記データ生成部が前記特定のデータを生成した場合に、前記データ生成部が生成した前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜６のいずれかに記載の通信装置。
【請求項８】
前記データ送信部は、
外部装置から受信したデータであって、１つの通信フレームで送信するデータを、先頭から順に送信し、
前記送信決定部は、
前記データ送信部が、前記外部装置から受信したデータの送信を完了する前に、前記特定のデータが発生した場合に、前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜７のいずれかに記載の通信装置。
【請求項９】
前記データ送信部は、
前記通信装置内で生成されたデータであって、１つの通信フレームで送信するデータを、先頭から順に送信し、
前記送信決定部は、
前記データ送信部が、前記通信装置内で生成されたデータの送信を完了する前に、前記特定のデータが発生した場合に、前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜８のいずれかに記載の通信装置。
【請求項１０】
前記通信装置は、更に、
所定の分割前データから分割された複数の分割データを、２つ以上の通信フレームにおいて受信するデータ受信部と、
通信フレームごとに、前記データ受信部が受信したデータの中から前記分割前データの分割データを抽出するデータ抽出部と、
前記データ抽出部により抽出された分割データを格納する分割データ格納部と、
前記分割データ格納部に格納されている分割データのデータサイズの累積値をカウントするデータサイズカウント部と、
前記分割前データの総データサイズを導出するとともに、前記データサイズカウント部がカウントしたデータサイズの累積値が、導出した前記分割前データの総データサイズに達した際に、前記分割データ格納部に格納されている分割データを用いて、前記分割前データを復元するデータ復元部とを有することを特徴とする請求項１〜９のいずれかに記載の通信装置。
【請求項１１】
前記送信決定部は、
前記特定のデータとして、前記通信装置及び前記通信装置が所属するネットワーク内の少なくともいずれかで障害が検知されたことを通知する障害データが、前記データ送信部がデータの送信を完了する前に発生した場合に、前記障害データを前記未送信データの前に送信するか否かを決定することを特徴とする請求項１〜１０のいずれかに記載の通信装置。
【請求項１２】
コンピュータが、フレームサイズが可変であり、フレームヘッダにそのフレームサイズが記述されている通信フレームに含ませてデータを送信する通信方法であって、
前記コンピュータが、１つの通信フレームで送信するデータを、先頭から順に送信するデータ送信ステップと、
前記データ送信ステップによるデータの送信が完了する前に特定のデータが新たに発生した場合に、前記コンピュータが、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定ステップと、
前記送信決定ステップで前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記コンピュータが、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御ステップと、
前記コンピュータが、現在の通信フレームのフレームヘッダに記述されている現在の通信フレームのフレームサイズに基づき、現在の通信フレームで送信可能な残りのデータサイズを送信可能残りデータサイズとしてカウントする残りデータサイズカウントステップとを有し、
前記送信決定ステップにおいて、
前記コンピュータは、前記未送信データ内で先頭に位置する先頭未送信データのデータ種別が、優先してデータを送信すべき優先種別であるか否かを解析し、
前記先頭未送信データのデータ種別が優先種別でない場合であって、前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記特定のデータの前に送信されるデリミタのデータサイズとの加算値以上である場合に、前記コンピュータは、前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定し、
前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記デリミタのデータサイズとの加算値未満である場合に、前記コンピュータは、前記特定のデータを後続の通信フレームで送信するよう決定し、
前記データ送信ステップにおいて、
前記送信決定ステップで前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記コンピュータは、前記順序制御ステップによる送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする通信方法。
【請求項１３】
コンピュータを、請求項１に記載された通信装置として機能させることを特徴とするプログラム。
【国際調査報告】
2013125027.tif 000046
2013125027.tif 000047
2013125027.tif 000048
2013125027.tif 000049
2013125027.tif 000050
2013125027.tif 000051
2013125027.tif 000052
2013125027.tif 000053
2013125027.tif 000054