JP5183829B1 - 通信装置及び通信方法及びプログラム - Google Patents

通信装置及び通信方法及びプログラム Download PDF

Info

Publication number
JP5183829B1
JP5183829B1 JP2012539098A JP2012539098A JP5183829B1 JP 5183829 B1 JP5183829 B1 JP 5183829B1 JP 2012539098 A JP2012539098 A JP 2012539098A JP 2012539098 A JP2012539098 A JP 2012539098A JP 5183829 B1 JP5183829 B1 JP 5183829B1
Authority
JP
Japan
Prior art keywords
data
frame
transmission
failure
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012539098A
Other languages
English (en)
Other versions
JPWO2013125027A1 (ja
Inventor
洋平 塚本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5183829B1 publication Critical patent/JP5183829B1/ja
Publication of JPWO2013125027A1 publication Critical patent/JPWO2013125027A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

通信装置(ノード2)は、通信装置(ノード3)への制御データAを送信中に障害が発生した場合に、制御データの送信を中断し(制御データA’)、障害を通知する障害データEの送信を開始し、障害データEの送信後に、中断した位置から制御データAの送信を再開する(制御データA’’)。
【選択図】図1

Description

本発明は、データを送信する技術に関する。
以下では、一例として、FA(Factory Automation)ネットワークでのデータ送信を説明する。
工場のラインは連続して製品を製造するものである。
そこで、工場のラインには自動的に複数の機器を連携して動作させて製品を製造する機能がある。
FAにおける機器の連携動作を実現する方法としてFAネットワークがある。
FAネットワークでは1台の制御装置(コントローラ)と複数台の工作装置(スレーブ)を用いる。
機器間の接続はイーサネット(登録商標)ベースのデイジーチェーン接続であり、通信フレーム(以下、単に「フレーム」ともいう)単位で情報をやり取りする。
隣接しないノード間の通信は中継により実現される。
機器の連携した動作は、コントローラとスレーブが通信することで実現される。
まず、コントローラは複数のスレーブに制御の指示を与える。
より具体的には、コントローラは、隣の位置のスレーブに制御指示を送信し、コントローラの隣のスレーブが更に隣のスレーブに制御指示を転送し、以降、同様の手順を繰り返し、順次、各スレーブに制御指示を伝播させる。
各スレーブは、コントローラの指示に従って稼動し、コントローラに制御結果を応答する。
制御結果の応答の場合も、スレーブ間の転送を通じてコントローラに制御結果の応答が到達する。
コントローラは、各スレーブから制御結果を受け取り、次の指示を決定し、各スレーブに次の指示を与える。
コントローラとスレーブは上記の動作を周期的に繰り返す。
以上のように自動的に複数の機器を連携して動作させ、製品を製造することができる。
高精度に機器を制御するためにはコントローラとスレーブとの間で短い周期で制御のための通信を行う必要がある。
FAネットワークには、機器を連携して動作させて製品を製造する機能の他に、機器の故障時に他の機器を安全に停止させる機能(以下、「障害管理」という)がある。
この機能を実現するために、故障が発生したスレーブはコントローラと他のスレーブに故障の通知(以下、「障害通知」という)を実施する。
障害通知のフレーム(障害フレーム)も、制御通信のためのフレームと同様に、隣り合うノード間で中継されて、コントローラ及び全ての他のスレーブに到達する。
障害フレームを受け取ったコントローラとスレーブは安全に停止する。
以上により、機器の故障が発生した際に、FAネットワークに含まれる全ての機器が安全に停止することができる。
このように、FAネットワークでは短い周期で制御通信を行う必要があるとともに、障害管理のために、短時間で障害通知を実施する必要がある。
この点につき、従来技術では、優先度に従って送信するフレームの順番を制御することで障害フレームを優先して送信して、短時間での障害通知を実現している。
例えば、特許文献1では、ノードが中継するフレームを優先中継フレームと非優先中継フレームに分け、自ノードから送信するフレームを優先送信フレームと非優先送信フレームに分け、フレームごとのバッファ(合計4つのバッファ)を設け、ノードが、フレーム間の優先度の順序に従って各フレームを送信する。
優先度は高い順に優先中継フレーム、優先送信フレーム、非優先中継フレーム、非優先送信フレームである。
非優先中継フレームがバッファに溜まった場合、非優先送信フレームのバッファへの入力を抑制することでバッファ溢れを防ぐ。
特許文献1の技術をFAネットワークに適用すると、ノードが中継する障害フレームを特許文献1の優先中継フレームとし、ノードから送信する障害フレームを特許文献1の優先送信フレームとし、これら障害フレーム(優先中継フレーム、優先送信フレーム)を制御通信のための制御フレーム(非優先中継フレーム、非優先送信フレーム)に優先して送信することで、短時間での障害通知を実現することができる。
特開2002−353970号公報
以上のように、特許文献1の方式をFAネットワークに適用すると、障害フレームを制御フレームに優先して送信することができ、短時間での障害通知を実現することができる。
しかしながら、特許文献1の方式では、以下の課題がある。
図43は、特許文献1の方式での課題を説明する図である。
図43は、一例として、3つのノードで構成されるFAネットワークでの通信フレームの送受信状況を示している。
図43において、A、B及びCは、ノード1から送信される制御フレームを表し、Eはノード2から送信される障害フレームを表している。
ノード1からは、順に、制御フレームA、制御フレームB、制御フレームCが送信される。
ノード2では、ノード1からの制御フレームを受信し、受信した制御フレームを所定のバッファに格納し、受信した制御フレームをノード3に転送する。
ここで、ノード2が制御フレームAをノード3に送信している途中でノード2において障害が発生し、障害フレームEを送信する必要が生じたとする。
特許文献1では、ノード2は、制御フレームAの送信を完了してから、障害フレームEをノード3に送信し、その後制御フレームB、制御フレームCを送信する。
このように、特許文献1では、制御フレームの送信中に障害が発生した場合に、送信中の制御フレームの送信完了を待ち、その後障害フレームの送信を行う。
例えば、制御フレームを送信し始めた直後に障害が発生すると、障害フレームの送信は制御フレーム1フレームを送信する分、遅れてしまう。
この発明は、これらの点に鑑みたものであり、通信フレームの送信中に優先して送信すべき特定のデータが新たに発生した場合に、この特定のデータを効率的かつ早期に送信できるようにし、また、特定データの発生時点で未送信であったデータの送信も早期に完了できるようにすることを主な目的とする。
本発明に係る通信装置は、
1つの通信フレームで送信するデータを、先頭から順に送信するデータ送信部と、
前記データ送信部がデータの送信を完了する前に特定のデータが新たに発生した場合に、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定部と、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御部とを有し、
前記データ送信部は、
前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記順序制御部による送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする。
本発明によれば、特定のデータを未送信データの前に送信するため、特定のデータを効率的かつ早期に送信することができ、また、特定のデータの送信が完了した後の送信を未送信データから開始するため、未送信データの送信も早期に完了できる。
実施の形態1に係る通信方法の概要を示す図。 実施の形態1に係る通信装置の構成例を示す図。 実施の形態1に係る通信フレームの構成例を示す図。 実施の形態1に係る障害データを含まない制御フレームを示す図。 実施の形態1に係る障害データを含む制御フレームを示す図。 実施の形態1に係る障害データを含まない分割フレームを示す図。 実施の形態1に係る障害データを含まない分割フレームを示す図。 実施の形態1に係る障害フレームを示す図。 実施の形態1に係る障害データの制御フレームへの挿入例を示す図。 実施の形態1に係る障害データの制御フレームへの挿入例を示す図。 実施の形態1に係る障害データの制御フレームへの挿入例を示す図。 実施の形態1に係る障害データの制御フレームへの挿入例を示す図。 実施の形態1に係るデータ復元方法の概要を示す図。 実施の形態1に係る送信フレーム生成部の構成例を示す図。 実施の形態1に係る受信データ再構成部の構成例を示す図。 実施の形態1に係るフレーム受信時の動作例を示すフローチャート図。 実施の形態1に係るデータ生成時の動作例を示すフローチャート図。 実施の形態1に係るフレーム送信時の動作例を示すフローチャート図。 実施の形態1に係るフレーム送信時の動作例を示すフローチャート図。 実施の形態1に係るフレーム送信時の動作例を示すフローチャート図。 実施の形態1に係る分割フレーム送信処理の動作例を示すフローチャート図。 実施の形態1に係る障害フレーム送信処理の動作例を示すフローチャート図。 実施の形態2に係る通信装置の構成例を示す図。 実施の形態2に係る通信装置の動作手順を示すフローチャート図。 実施の形態2に係るヘッダ受信状態時の処理を示すフローチャート図。 実施の形態2に係る制御受信状態時の処理を示すフローチャート図。 実施の形態2に係る割込み障害受信状態時の処理を示すフローチャート図。 実施の形態2に係る障害受信状態時の処理を示すフローチャート図。 実施の形態2に係る送信待機状態時の処理を示すフローチャート図。 実施の形態2に係る自装置送信状態時の処理を示すフローチャート図。 実施の形態2に係る自装置自装置状態時及び自装置中継状態時の処理を示すフローチャート図。 実施の形態2に係る自装置分割状態時の処理を示すフローチャート図。 実施の形態2に係る中継送信状態時の処理を示すフローチャート図。 実施の形態2に係る中継自装置状態時及び中継中継状態時の処理を示すフローチャート図。 実施の形態2に係る中継分割状態時の処理を示すフローチャート図。 実施の形態2に係る中継障害状態時の処理を示すフローチャート図。 実施の形態2に係る自装置障害状態時の処理を示すフローチャート図。 実施の形態2に係る外部入出力装置の出力処理を示すフローチャート図。 実施の形態2に係る受信待機状態時の処理を示すフローチャート図。 実施の形態2に係るフレーム受信時の状態遷移を示す図。 実施の形態2に係るフレーム送信時の状態遷移を示す図。 実施の形態1及び2に係る通信装置のハードウェア構成例を示す図。 従来の通信方法の概要を示す図。
以下に示す実施の形態1及び2では、制御フレームに障害フレームを割り込ませることで制御通信の周期が短いままに、障害通知の時間を短縮する例を説明する。
なお、実施の形態1及び2では、制約として、制御通信の周期性を維持するために、制御フレームの送信を実施する通信装置はネットワーク上で同時に1つとし、かつ障害フレームの送信は制御フレームの通信の1周期に1回までとする。
FAネットワークにおいても制御通信の周期性を維持するために、同様の制約を課す場合が多い。
ここで、図1を参照して、実施の形態1及び2におけるフレームの送信手順を概説する。
図1は、図43と同様に、3つの通信装置(ノード1、ノード2、ノード3)で構成されるFAネットワークでの通信フレームの送受信状況を示している。
図1において、A、B及びCは、通信装置(ノード1)から送信される制御フレームを表している。
なお、Eは通信装置(ノード2)から送信される障害データを表している。
障害データEは、障害の発生を通知するデータであり、図43で説明した障害フレームのペイロード部分と、所定のデリミタで構成される。
また、障害データEは、制御フレーム内の制御データよりも優先して送信すべきデータである。
通信装置(ノード1)からは、順に、制御フレームA、制御フレームB、制御フレームCが送信される。
通信装置(ノード2)では、通信装置(ノード1)からの制御フレームを受信し、受信した制御フレームを所定のバッファに格納し、受信した制御フレームを通信装置(ノード3)に転送する。
ここで、通信装置(ノード2)が制御フレームAを通信装置(ノード3)に送信している途中で通信装置(ノード2)において障害が発生し、障害データEを送信する必要が生じたとする。
実施の形態1及び2では、通信装置(ノード2)は、制御データの送信を中断し(制御データA’)、障害データEの送信を開始し、制御フレームAの一部として障害データEをノード3に送信する。
そして、通信装置(ノード2)は、障害データEの送信を完了したら、バッファに格納されている制御フレームAを用いて、送信が中断した位置から制御データの送信を開始する(制御データA’’)。
上述のように、特許文献1(図43)では、制御フレームの送信中に障害が発生した場合に、制御フレームの送信を完了した後に、障害フレームの送信を行う。
これに対して、実施の形態1及び2(図1)では、障害データを制御フレームに挿入し、制御フレームの一部として障害データを送信し、障害データの送信後に、制御フレームの残存分のデータのみを送信する。
これにより、制御フレームの送信中に障害データが発生した場合に、障害データを効率的かつ早期に送信できる。
このように、実施の形態1及び2の方式によれば、制御通信の周期が短いままに、障害通知の時間を短縮することができる。
実施の形態1.
図2は、本実施の形態に係る通信装置100の構成例を示す。
通信装置100は、通信装置200からフレームを受信し、通信装置300にフレームを送信する。
通信装置100にとって、通信装置200は外部装置の例である。
通信装置100が通信装置300に送信するフレームは、通信装置200から受信したフレームと、通信装置100が生成したフレームである。
また、通信装置100は、通信装置200から受信した制御フレームに通信装置100が生成した障害データを挿入し、通信装置100が生成した障害データが挿入された通信装置200からの制御フレームを通信装置300に送信する場合もある。
また、通信装置100は、通信装置200から受信した制御フレームに通信装置200から受信した障害データを挿入し、通信装置200から受信した障害データが挿入された通信装置200からの制御フレームを通信装置300に送信する場合もある。
また、通信装置100は、通信装置100が生成した制御フレームに通信装置200から受信した障害データを挿入し、通信装置200から受信した障害データが挿入された通信装置100が生成した制御フレームを通信装置300に送信する場合もある。
また、通信装置100は、通信装置100が生成した制御フレームに通信装置100が生成した障害データを挿入し、通信装置100が生成した障害データが挿入された通信装置100が生成した制御フレームを通信装置300に送信する場合もある。
なお、図2では、通信装置100の構成例を示しているが、通信装置200及び通信装置300も図1に示す構成を有する。
制御部101は、後述する102〜107の各要素の動作を制御する。
フレーム受信部102は、通信装置200からフレームを受信する。
フレーム受信部102はデータ受信部の例に相当する。
受信データ分配部103は、フレーム受信部102が受信したフレームを、後述する受信データ再構成部104と送信フレーム生成部106に転送する。
また、受信データ分配部103は、フレーム受信部102が受信したフレームの種類を判別し、フレーム受信部102が受信したフレームが後述する障害フレームであれば、後述する送信フレーム生成部106に障害フレームの受信を通知する。
受信データ再構成部104は、フレーム受信部102が受信したフレームから制御通信のための制御データを抽出して、制御データを再構成する。
なお、受信データ再構成部104の詳細は、後述する。
データ生成部105は、フレーム送信部107から送信させるフレーム(データ)を生成する。
また、データ生成部105は、生成したフレームが障害フレームであれば、送信フレーム生成部106に障害フレームの生成を通知する。
送信フレーム生成部106は、受信データ分配部103よりフレーム受信部102が受信したフレームを入力し、また、データ生成部105が生成したフレームを入力し、フレーム送信部107から送信させるフレームを生成する。
また、送信フレーム生成部106は、受信データ分配部103から障害フレームの受信が通知された場合、又はデータ生成部105から障害フレームの生成が通知された場合に、障害フレームに含まれている障害データを優先してフレーム送信部107から送信させるようにフレームを生成する。
送信フレーム生成部106の詳細は、後述する。
フレーム送信部107は、通信装置300にフレームを送信する。
より具体的には、フレーム送信部107は、1つのフレームで送信するデータを、先頭から順に送信する。
フレーム送信部107は、データ送信部の例に相当する。
次に、通信装置100、通信装置200、通信装置300の間で送受信されるフレームのフレームフォーマットを説明する。
図3は、全てのフレームのひな形を示す。
フレーム1000は、フレームヘッダ1010とフレームデータ1020で構成される。
フレームヘッダ1010は、フレームタイプ1011とフレームサイズ1012で構成される。
フレームタイプ1011は、フレーム1000の種類を示しフレーム1000の種類には制御フレーム、分割フレーム、障害フレームの3種類がある。
制御フレームは、制御データが含まれるフレームである。
分割フレームは、制御フレームに障害データが含まれることにより、制御フレームから押し出されたデータ(制御データ、障害データ)が含まれるフレームである。
障害フレームは、障害データが含まれるフレームである。
フレームサイズ1012は、フレーム1000の受信完了を検出するためのフレームサイズである。
フレームサイズ1012には、フレーム1000全体のデータサイズが示されている。
以下、図4〜図8を参照して、3種類のフレームを説明する。
3種類のフレームは共通してフレームタイプ1011とフレームサイズ1012とフレームデータ1020を持つ。
制御フレームを示すフレームタイプ1011を持つフレームヘッダ1010を制御フレームヘッダ2010、3010と呼ぶ。
分割フレームを示すフレームタイプ1011を持つフレームヘッダ1010を分割フレームヘッダ4010、5010と呼ぶ。
障害フレームを示すフレームタイプ1011を持つフレームヘッダ1010を障害フレームヘッダ6010と呼ぶ。
3種類のフレームは、それぞれ構成の異なるフレームデータ1020を持つ。
フレームデータ1020の構成要素となるのは制御データ2020、障害発生前分割制御データ3020、デリミタ3030、5020、障害データ3040、5030、6020、障害発生後分割制御データ3050、フレームから押し出された分割制御データ4020である。
次に、図4及び図5を参照して、制御フレームのフレームフォーマットを説明する。
制御フレームには、障害データを含まない制御フレーム2000と障害データを含む制御フレーム3000がある。
図4に示すように、障害データを含まない制御フレーム2000において、2010は制御フレームヘッダであり、2020は制御データである。
障害データを含まない制御フレーム2000は、フレーム受信部102が受信した制御フレーム、データ生成部105が生成した制御フレームのままである。
図5に示すように、障害データを含む制御フレーム3000において、3010は制御フレームヘッダであり、3020は障害発生前分割制御データであり、3030は障害データの範囲を検出するためのデリミタであり、3040は障害データであり、3050は障害発生後分割制御データである。
障害データを含む制御フレーム3000は、フレーム受信部102が受信した制御フレーム、データ生成部105が生成した制御フレームに、フレーム送信部107においてデリミタ3030と障害データ3040とが挿入されている。
なお、制御フレームヘッダ3010は、障害データを含まない制御フレーム2000の制御フレームヘッダ2010と同じものである。
換言すれば、制御フレームヘッダ3010は、デリミタ3030と障害データ3040とが挿入される前の制御フレームの制御フレームヘッダから変化していない。
次に、図6及び図7を参照して、分割フレームのフレームフォーマットを説明する。
分割フレームには、障害データを含まない分割フレーム4000と障害データを含む分割フレーム5000がある。
なお、障害データを含まない分割フレーム4000と障害データを含む分割フレーム5000のいずれも、フレーム送信部107により生成される。
図6に示すように、障害データを含まない分割フレーム4000において、4010は分割フレームヘッダであり、4020はフレームから押し出された分割制御データである。
障害データを含まない分割フレーム4000は、図5に示すように、制御フレームにデリミタ3030と障害データ3040とが挿入されたために、制御フレームから押し出された部分(制御データ)を、フレームから押し出された分割制御データ4020として含む。
図7に示すように、障害データを含む分割フレーム5000において、5010は分割フレームヘッダであり、5020はデリミタであり、5030は障害データである。
障害データを含む分割フレーム5000は、最後尾にデリミタ5020と障害データ5030が含まれている制御フレームに、新たなデリミタ3030と障害データ3040とが挿入されたために、制御フレームから押し出された部分(デリミタ5020と障害データ5030)を含む。
次に、図8を参照して、障害フレームのフレームフォーマットを説明する。
障害フレーム6000において、6010は障害フレームヘッダであり、6020は障害データである。
障害フレーム6000は、フレーム受信部102が受信した障害フレーム、データ生成部105が生成した障害フレームである。
なお、障害フレーム6000には、他の障害データが挿入されることはない。
なお、図4〜図8のフレームフォーマットにおいて、フレームヘッダは予め定められたサイズであり、デリミタも予め定められたサイズであり、障害データも予め定められたサイズである。
制御フレームのサイズは可変である。
但し、前述したように、制御フレームに障害データとデリミタが挿入された場合(図5)でも、障害データとデリミタ挿入後の制御フレームのサイズは、当初のサイズのまま維持される。
このため、デリミタと障害データのデータサイズ分のデータが押し出されることになり、押し出されたデータが分割フレーム(図6、図7)にて送信される。
また、フレームタイプとフレームサイズとフレームデータのフレームの先頭からの位置は予め定められている。
なお、本実施の形態において通信装置100、通信装置200、通信装置300の間で、データはワード単位でやり取りされる。
1ワードはデリミタと同じサイズである。
なお、通信装置100は、以下のルールに従って、障害データを制御フレームに挿入する。
ルール:
制御フレームの送信中に障害データが発生した場合に、障害データの発生時点で未送信の未送信データ内で先頭に位置するデータ(先頭未送信データ)のデータ種別が優先種別でない場合(つまり、先頭未送信データが制御データの場合)、通信装置100は、即座にデリミタと障害データの送信を開始する(つまり、デリミタと障害データを先頭未送信データである制御データに先行して送信する)。
一方、先頭未送信データのデータ種別が優先種別である場合(つまり、先頭未送信データが障害データの場合)、通信装置100は、先頭未送信データを含む障害データの送信が完了した時点で、新たに発生した障害データの送信を開始する(つまり、先頭未送信データを含む障害データを送信した後にデリミタと新たな障害データを送信する)。
なお、「障害データが発生した場合」とは、通信装置100が通信装置200から障害フレームを受信した場合と通信装置100内のデータ生成部105が障害フレームを生成した場合の両者を含む。
また、通信装置100が送信中の制御フレームは、フレーム受信部102が通信装置200から受信した制御フレーム、通信装置100のデータ生成部105が生成した制御フレームのいずれかである。
障害データを優先して送信した結果、押し出されたデータは、分割フレームとして、制御フレームに続けて送信する。
次に、図5に示す障害データを含む制御フレーム3000の具体例を、図9〜図12を参照して説明する。
図9は、障害データを含まない制御フレーム2000aに障害データを挿入する例を示している。
なお、図9〜図12では、制御フレームヘッダを「制御」、制御データを「A」と表記している。
また、分割フレームヘッダを「分割」と表記していている。
図9の例では、障害データが発生した時点の未送信先頭データは制御データなので、通信装置100は、即座に障害データE(デリミタと障害データ)の送信を開始する。
この結果、制御フレーム3000aに示すように、障害データEが送信される。
なお、図9では、デリミタと障害データを合わせて障害データEとしている。
図10〜図12においても、障害データEと表記するが、図9と同様に、障害データEはデリミタと障害データの組合せである。
障害データEの送信が終了すると、通信装置100は、未送信の制御データAを送信する。
障害データEが挿入されたため、未送信の制御データAの一部は当該制御フレーム3000aに含ませることができない。
このため、通信装置100は、制御フレーム3000aに含ませることができなかった一部の制御データを分割フレーム4000aにて送信する。
この結果、障害データEと、障害データEの挿入前の制御データA(1/3)と、障害データEの挿入後の制御データA(2/3)が、同じ制御フレーム3000aで送信され、押し出された制御データA(3/3)が分割フレーム4000aで送信される。
図10は、障害データE0を含む制御フレーム3000bに新たな障害データE1を挿入する例を示している。
なお、障害データE0が挿入されたために制御フレーム3000bから押し出された一部の制御データA(制御データA(3/3))は、後続する分割フレーム4000bに含まれている。
図10の例では、障害データが発生した時点の未送信先頭データは制御データA(1/3)であるため、通信装置100は、即座に障害データE1の送信を開始する。
この結果、制御データA(1/3)の途中で障害データE1の送信が開始し、障害データE1の送信後に、通信装置100は、制御データA(1/3)の未送信部分と、障害データE0と、障害データE0以降の制御データAを制御フレーム3000cにて送信する。
障害データE1が挿入されたため、制御データAの一部は当該制御フレーム3000cに含ませることができない。
このため、通信装置100は、制御フレーム3000cに含ませることができなかった一部の制御データを分割フレーム4000cにて送信する。
また、通信装置100は、分割フレーム4000cの送信後に、分割フレーム4000bを分割フレーム4000dとして送信する。
この結果、障害データE1と、障害データE1の挿入前の制御データA(1/5)と、障害データE1の挿入後の制御データA(2/5)と、障害データE0と、障害データE0の後の制御データA(3/5)が同じ制御フレーム3000cで送信され、押し出された制御データA(4/5)が分割フレーム4000cで送信され、更に、分割フレーム4000bの制御データA(5/5)が分割フレーム4000dで送信される。
図11は、障害データE0を含む制御フレーム3000eに新たな障害データE1を挿入する例を示している。
なお、障害データE0が挿入されたために制御フレーム3000eから押し出された一部の制御データA(制御データA(3/3))は、後続する分割フレーム4000eに含まれている。
図11の例では、障害データが発生した時点の未送信先頭データは制御データA(2/3)であるため、通信装置100は、即座に障害データE1の送信を開始する。
この結果、制御データA(2/3)の途中で障害データE1の送信が開始し、障害データE1の送信後に、通信装置100は、制御データA(2/3)の未送信部分を制御フレーム3000fにて送信する。
制御フレーム3000fには、障害データの発生前に送信された制御データA(1/5)と障害データE0と、制御データA(2/5)も含まれる。
障害データE1が挿入されたため、制御データA(2/3)の一部は当該制御フレーム3000fに含ませることができない。
このため、通信装置100は、制御フレーム3000fに含ませることができなかった一部の制御データを分割フレーム4000fにて送信する。
また、通信装置100は、分割フレーム4000fの送信後に、分割フレーム4000eを分割フレーム4000gとして送信する。
この結果、制御データA(1/5)と、障害データE0と、制御データA(2/5)と、障害データE1と、障害データE1の挿入後の制御データA(3/5)が同じ制御フレーム3000fで送信され、押し出された制御データA(4/5)が分割フレーム4000fで送信され、更に、分割フレーム4000eの制御データA(5/5)が分割フレーム4000gで送信される。
図12は、障害データE0を含む制御フレーム3000hに新たな障害データE1を挿入する例を示している。
なお、障害データE0が挿入されたために制御フレーム3000hから押し出された一部の制御データA(制御データA(3/3))は、後続する分割フレーム4000hに含まれている。
図12の例では、障害データが発生した時点の未送信先頭データは障害データE0であるため、通信装置100は、障害データE0の送信完了を待って障害データE1の送信を開始する。
制御フレーム3000iには、障害データE0の前に送信された制御データA(1/5)も含まれる。
障害データE1が挿入されたため、制御データA(2/3)の一部は当該制御フレーム3000iに含ませることができない。
このため、通信装置100は、制御フレーム3000iに含ませることができなかった一部の制御データを分割フレーム4000iにて送信する。
また、通信装置100は、分割フレーム4000iの送信後に、分割フレーム4000hを分割フレーム4000jとして送信する。
この結果、制御データA(1/4)と、障害データE0と、障害データE1と、障害データE1の挿入後の制御データA(2/4)が同じ制御フレーム3000iで送信され、押し出された制御データA(3/4)が分割フレーム4000iで送信され、更に、分割フレーム4000hの制御データA(4/4)が分割フレーム4000jで送信される。
次に、以上の説明を踏まえて、送信フレーム生成部106の詳細を説明する。
図14は、送信フレーム生成部106の内部構成例を示す。
図14に示すように、送信フレーム生成部106は、送信用バッファ部110とフレーム生成管理部120に大別される。
なお、図14では、制御部101と受信データ再構成部104の図示を省略している。
送信用バッファ部110において、障害フレームバッファ部111は、受信データ分配部103から転送された障害フレーム及びデータ生成部105により生成された障害フレームを、FIFO(First−In First−Out)方式で蓄積する。
なお、障害フレームバッファ部111は、障害フレームヘッダを含めた障害フレーム全体を蓄積する。
制御フレームバッファ部112は、受信データ分配部103から転送された制御フレーム(障害データが含まれる制御フレームと障害データが含まれない制御フレームの両者)及びデータ生成部105により生成された制御フレームと、受信データ分配部103から転送された分割フレーム(障害データが含まれる分割フレームと障害データが含まれない分割フレームの両者)とを、FIFO方式で蓄積する。
なお、制御フレームバッファ部112は、制御フレームヘッダを含めた制御フレーム全体を蓄積し、分割フレームヘッダを含めた分割フレーム全体を蓄積する。
フレーム生成管理部120において、送信決定部121は、フレーム送信部107がデータの送信を完了する前に障害データ(特定のデータの例)が発生した場合に、先頭未送信データのデータ種別(制御データか障害データか)を解析し、障害データを未送信データの前に送信するか否かを決定する。
つまり、送信決定部121は、先頭未送信データが制御データであれば、障害データを先頭未送信データ(制御データ)に先行して送信すると決定する。
一方、送信決定部121は、先頭未送信データが障害データであれば、先頭未送信データを含む障害データが送信された後に新たな障害データを送信すると決定する。
なお、送信決定部121は、受信データ分配部103又はデータ生成部105からの通知により障害データの発生を検出することできる。
また、送信決定部121は、障害データのデータサイズを予め記憶している。
順序制御部122は、送信決定部121が障害データの発生を検出していなければ、制御フレームバッファ部112内のデータを1ワードずつ読み出し、読み出した1ワードのデータをフレーム送信部107に出力する。
そして、送信決定部121が障害データの発生を検出した場合は、順序制御部122は、障害データの既定データサイズに達するまで、障害フレームバッファ部111内のデータを1ワードずつ読み出し、読み出した1ワードのデータをフレーム送信部107に出力する。
つまり、順序制御部122は、制御フレームバッファ部112内のデータをフレーム送信部107に出力している際に、送信決定部121が障害データの発生を検出した場合は、制御フレームバッファ部112内のデータのフレーム送信部107への出力を中止し、障害データのデータサイズに達するまで、障害フレームバッファ部111内のデータをフレーム送信部107に出力する。
このように、順序制御部122は、障害データと制御データの送信順序を制御し、障害データが先に送信されるようにする。
残りデータサイズカウント部123は、送信可能残りデータサイズ(以下、「送信可能残りサイズ」という)とフレーム残りデータサイズ(以下、「フレーム残りサイズ」という)をカウントする。
送信可能残りサイズは、現在の制御フレームで送信可能な残りのデータサイズである。
つまり、送信可能残りサイズは、制御フレームヘッダ2010(図4)のフレームサイズ1012(図3)に記述されているデータサイズから制御フレームヘッダ2010のデータサイズ(既定データサイズ)を差し引いて得られるデータサイズ(制御データ2020のデータサイズ)から、送信済みの制御データのデータサイズと送信済みの障害データ(挿入された障害データ)のデータサイズの合計値を差し引いた値である。
フレーム残りサイズは、現在の制御フレームに含まれる制御データのうち未送信の制御データのデータサイズである。
つまり、フレーム残りサイズは、制御フレームヘッダ2010(図4)のフレームサイズ1012(図3)に記述されているデータサイズから制御フレームヘッダ2010のデータサイズ(既定データサイズ)を差し引いて得られるデータサイズ(制御データ2020のデータサイズ)から、送信済みの制御データのデータサイズを差し引いた値である。
送信決定部121は、障害データの発生時点での送信可能残りサイズが、障害データのデータサイズとデリミタのデータサイズとの加算値以上であれば、当該障害データを現在の制御フレームで送信するよう決定する。
一方、障害データの発生時点での送信可能残りサイズが、障害データのデータサイズとデリミタのデータサイズとの加算値未満であれば、送信決定部121は、当該障害データを現在の制御フレームではなく、後続のフレームで送信するよう決定する。
次に、受信データ再構成部104の詳細を説明する。
図15は、受信データ再構成部104の内部構成例を示す。
図15に示すように、受信データ再構成部104は、再構成用バッファ部130と再構成管理部140に大別される。
なお、図15では、制御部101とデータ生成部105と送信フレーム生成部106とフレーム送信部107の図示を省略している。
再構成用バッファ部130において、障害フレームバッファ部131は、受信データ分配部103から転送された障害フレームを、FIFO方式で蓄積する。
なお、障害フレームバッファ部131は、障害フレームヘッダを含めた障害フレーム全体を蓄積する。
制御フレームバッファ部132は、受信データ分配部103から転送された制御フレーム(障害データが含まれる制御フレームと障害データが含まれない制御フレームの両者)と分割フレーム(障害データが含まれる分割フレームと障害データが含まれない分割データの両者)を、FIFO方式で蓄積する。
なお、制御フレームバッファ部132は、制御フレームヘッダを含めた制御フレーム全体を蓄積し、分割フレームヘッダを含めた分割フレーム全体を蓄積する。
再構成管理部140において、データ抽出部141は、制御フレームバッファ部132からデータを読み出し、読み出したデータが制御データならば、その制御データを制御データ用スタック144(分割データ格納部の例)にプッシュし、読み出したデータが障害データならば、その障害データを障害データ用スタック145にプッシュする。
データサイズカウント部142は、制御データ用スタック144に格納されている制御データのデータサイズの累積値をカウントし、また、障害データ用スタック145に格納されている障害データのデータサイズの累積値をカウントする。
データ復元部143は、制御フレームの制御フレームヘッダのフレームサイズに記述されているデータサイズから制御フレームヘッダのデータサイズを差し引いて、制御データのデータサイズを導出する。
そして、データサイズカウント部142がカウントしたデータサイズの累積値が、導出した制御データのデータサイズに達した際に、制御データ用スタック144に格納されている制御データを用いて、制御データを復元する。
つまり、障害データの挿入により1つの制御フレームに含まれていた1つの制御データが複数の部分データに分割された場合に、データ復元部143は、制御フレームヘッダのフレームサイズから分割前の制御データの総データサイズを導出し、データサイズカウント部142のカウント値が、導出した制御データの総データサイズに達した際に、制御データ用スタック144に格納されている制御データの部分データを統合して、分割前の制御データを復元することができる。
また、同様に、データ復元部143は、データサイズカウント部142がカウントしたデータサイズの累積値が、障害データのデータサイズ(既定サイズ)に達した際に、障害データ用スタック145に格納されている障害データを用いて、元の障害データを復元する。
図13は、受信データ再構成部104の動作原理を示す。
例えば、通信装置200において制御フレーム3000kに障害データE1が挿入された結果、通信装置100が、制御フレーム3000lと分割フレーム4000lとを受信したとする。
また、通信装置100が、制御フレーム3000kに後続する分割フレーム4000lを、分割フレーム4000mとして受信したとする。
前述したように、制御フレーム3000lの制御フレームヘッダのフレームサイズから、分割前の制御データAのデータサイズ(制御データA(1/4)〜A(4/4)の合計サイズ)を導出可能である。
通信装置100の受信データ分配部103は、制御フレーム3000lと分割フレーム4000lと分割フレーム4000mを受信データ再構成部104に転送し、受信データ再構成部104では、制御フレームバッファ部132がこれらフレームを蓄積する。
そして、データ抽出部141が制御フレームバッファ部132より、制御フレーム3000lの先頭からデータを読み出す。
データ抽出部141が制御フレームヘッダのフレームサイズを読み出した際に、データ復元部143が、フレームサイズに記述されるデータサイズから制御データのデータサイズを導出し、導出した制御データのデータサイズをデータサイズカウント部142に登録する。
データ抽出部141は制御フレーム3000l内のデータを順次読み出し、読み出したデータが制御データであれば制御データ用スタック144にプッシュし、障害データであれば障害データ用スタック145にプッシュする。
データサイズカウント部142は、制御データ用スタック144内のデータサイズ及び障害データ用スタック145内のデータサイズをカウントする。
なお、デリミタの次のデータは障害データなので、データ抽出部141は、デリミタが出現するまでは、読み出したデータを制御データと判断する。
デリミタが出現した後、障害データのデータサイズ(既定サイズ)分を読み出した後は、データ抽出部141は、再び制御データを読み出したと判断する。
以降、同様にして、データ抽出部141は分割フレーム4000lのデータと分割フレーム4000mのデータを読み出し、読み出したデータを制御データ用スタック144又は障害データ用スタック145にプッシュする。
そして、制御データ用スタック144のデータサイズが、データサイズカウント部142に登録したデータサイズに達した際に、制御データ用スタック144に格納されている分割後の制御データA(1/4)〜A(4/4)を用いて、分割前の元の制御データAを復元する。
同様に、障害データ用スタック145のデータサイズが、障害データの既定のデータサイズに達した際に、障害データ用スタック145に格納されている障害データE0(1/2)とE0(2/2)を用いて、分割前の元の障害データE0を復元する。
次に、フレーム受信部102及び受信データ分配部103の動作例を、図16を参照して説明する。
先ず、フレーム受信部102が、通信装置200からのフレームを受信し(ステップS151)、所定の受信バッファに受信したフレームを格納する。
次に、受信データ分配部103が、受信バッファ内のフレームのヘッダ(フレームタイプ)を検査し、フレームの種類を判断する(ステップS152、S153)。
フレームの種類が制御フレーム又は分割フレームであれば、受信データ分配部103は、制御フレーム又は分割フレームを制御フレームバッファ部112と制御フレームバッファ部132に転送し、制御フレームバッファ部112と制御フレームバッファ部132に制御フレーム又は分割フレームを格納する(ステップS154)。
フレームの種類が障害フレームであれば、受信データ分配部103は、送信決定部121に障害データの受信を通知し(ステップS155)、また、障害フレームを障害フレームバッファ部111と障害フレームバッファ部131に転送し、障害フレームバッファ部111と障害フレームバッファ部131に障害フレームを格納する(ステップS156)。
次に、データ生成部105の動作例を、図17を参照して説明する。
データ生成部105は、データを生成した場合に、生成したデータが障害データであれば(ステップS201)、送信決定部121に障害データの生成を通知する(ステップS202)。
また、データ生成部105は、障害データに障害フレームヘッダを付加して障害フレームを生成し、生成した障害フレームを障害フレームバッファ部111に転送し、障害フレームバッファ部111に障害フレームを格納する(ステップS203)。
一方、生成したデータが制御データであれば(ステップS201)、データ生成部105は、制御データに制御フレームヘッダを付加して制御フレームを生成し、生成した制御フレームを制御フレームバッファ部112に転送し、制御フレームバッファ部112に制御フレームを格納する(ステップS204)。
次に、送信フレーム生成部106の動作例を、図18〜図22を参照して説明する。
先ず、送信フレーム生成部106内の送信決定部121が受信データ分配部103又はデータ生成部105から障害データが発生した旨の通知を受けていない場合(図18のステップS301でNO)は、制御フレームバッファ部112内に制御フレームがあるか否かが判断される(ステップS302)。
制御フレームバッファ部112内に制御フレームがない場合(ステップS302でNO)は、処理がステップS301に戻る。
制御フレームバッファ部112内に制御フレームがある場合(ステップS302でYES)は、送信決定部121からの指示により順序制御部122が、制御フレームバッファ部112から制御フレームの1ワード分のデータを読み出す(ステップS303)。
次に、順序制御部122は、読み出したデータの種類を判断し(ステップS304)、読み出したデータが制御フレームヘッダである場合は、フレーム残りサイズと送信可能残りサイズを、所定の記憶領域に設定する。
より具体的には、順序制御部122は制御フレームヘッダ内のフレームサイズに記述されているサイズからフレームヘッダのサイズを差し引いた値を、フレーム残りサイズと送信可能残りサイズとして設定する。
一方、ステップS303で読み出したデータがデリミタである場合は、デリミタの後に障害データが続くので、順序制御部122は、障害残りサイズを、所定の記憶領域に設定する(ステップS306)。
順序制御部122は、障害残りサイズとして、障害データの既定データサイズを設定する。
また、ステップS303で読み出したデータが制御フレームヘッダでもデリミタでもない場合は、順序制御部122は、障害残りサイズが1ワード分以上ある場合(ステップS307でYES)は、障害残りサイズをデクリメントし(ステップS308)、更に、フレーム残りサイズと送信可能残りサイズをデクリメントする(ステップS309)。
一方、障害残りサイズが0である場合(ステップS307でNO)は、フレーム残りサイズと送信可能残りサイズだけをデクリメントする(ステップS309)。
次に、順序制御部122は、ステップS303で読み出したデータをフレーム送信部107に送信する。
次に、送信決定部121が、フレーム残りサイズと送信可能残りサイズの値を確認する(ステップS311)。
フレーム残りサイズが0であり、送信可能残りサイズが0である場合、又はフレーム残りサイズが1ワード以上であり、送信可能残りサイズが1ワード以上である場合は、処理をステップS301に戻す。
フレーム残りサイズが0であり、送信可能残りサイズが0であることは、障害データが挿入されずに1つの制御フレームに含まれている制御データがそのまま1つの制御フレームで送信されたことを意味する。
フレーム残りサイズが1ワード以上であり、送信可能残りサイズが1ワード以上であることは、1つの制御フレームに含まれている制御データのうち一部の制御データが未送信で残っており、また、その制御フレームにおいて送信可能なデータサイズが残っていることを意味する。
一方、フレーム残りサイズが1ワード以上であり、送信可能残りサイズが0である場合は、分割フレームの送信処理が行われる(ステップS312)。
分割フレームの送信処理は、図21を参照して後述する。
なお、フレーム残りサイズが1ワード以上であり、送信可能残りサイズが0であることは、デリミタと障害データが挿入されたために、1つの制御フレームに含まれていた制御データのうちの一部が押し出され、その制御フレームでは送信できなかったことを意味する。
ステップS301において、送信決定部121が受信データ分配部103又はデータ生成部105から障害データが発生した旨の通知を受けた場合(ステップS301でYES)は、送信決定部121は、送信可能残りサイズがあるか否かを確認する(図19のステップS401)。
送信可能残りサイズがある場合(ステップS401でYES)は、送信決定部121は、障害残りサイズがあるか否かを確認する(ステップS402)。
障害残りサイズがある場合(ステップS402でYES)は、現在、送信途中の障害データが存在していることを意味するので、現在送信途中の障害データの送信が完了してから、図18のステップS301で通知された障害データを制御フレームに挿入する。
なお、ステップS402でYESの状態は、図12に示す、障害データE0の送信中に障害データE1が発生した状態に相当する。
このため、順序制御部122は送信決定部121からの指示により、制御フレームバッファ部112から制御フレームの1ワード分のデータ(送信途中の障害データの残り)を読み出す(ステップS403)。
次に、順序制御部122が、フレーム残りサイズ、送信可能残りサイズ、障害残りサイズをデクリメントする(ステップS404)。
以降、障害残りサイズが0になるまで、ステップS401〜S404の処理が繰り返される。
ステップS402において障害残りサイズが0と判断された場合(ステップS402でNO)は、送信決定部121が、障害データを送信するために十分な送信可能残りサイズがあるかを確認する(図20のステップS501)。
つまり、送信可能残りサイズが障害データの既定データサイズとデリミタの加算値以上であれば、ステップS501でYESとなり、加算値未満であれば、ステップS501でNOとなる。
送信可能残りサイズが十分であれば(ステップS501でYES)、順序制御部122は送信決定部121の指示により、障害フレームバッファ部111から障害フレームの1ワード分のデータを読み出し、読み出したデータをフレーム送信部107に出力する(ステップS502)。
なお、障害フレームバッファ部111からの初回の読出しでは、障害フレームヘッダが読み出されるので、順序制御部122は、読み出した障害フレームヘッダはフレーム送信部107に出力せず、代わりにデリミタをフレーム送信部107に出力する。
次に、順序制御部122は、送信可能残りサイズをデクリメントする(ステップS503)。
次に、送信決定部121が、障害データの全てがフレーム送信部107に出力されたか否かを確認し(ステップS504)、出力されていない障害データがあれば、ステップS502〜S504の処理が繰り返される。
障害データの全てがフレーム送信部107に出力されていれば、処理が図18のステップS311に移行する。
なお、送信決定部121は、障害データの既定データサイズを記憶しているので、順序制御部122が障害フレームバッファ部111から障害データの全てを読み出したか否かを判断することができる。
ステップS501において送信可能残りサイズが十分ではないと判断された場合(ステップS501でNO)は、図18のステップS301で通知のあった障害データは、現在の制御フレームでは送信できないので、現在の制御フレームの送信が完了したのちに、障害フレームとして送信される。
このため、ステップS505〜S507において現在の制御フレームを送信する処理が完了した後に、ステップS508において障害フレームの送信処理が行われる。
ステップS505では、送信決定部121の指示により、順序制御部122が制御フレームバッファ部112から制御フレームの1ワード分のデータを読み出し、読み出したデータをフレーム送信部107に送信する。
次に、ステップS506において、順序制御部122が、フレーム残りサイズと送信可能残りサイズをデクリメントする。
次に、ステップS507において、送信決定部121が、フレーム残りサイズと送信可能残りサイズの値を確認する。
フレーム残りサイズが0であり、送信可能残りサイズが0である場合は、ステップS508において障害フレームの送信処理が行われる。
障害フレームの送信処理は図22を参照して後述する。
障害フレームの送信処理が終了すると、処理が図18のステップS301に移行する。
また、フレーム残りサイズが1ワード以上であり、送信可能残りサイズが1ワード以上である場合は、処理をステップS505に戻す。
また、フレーム残りサイズが1ワード以上であり、送信可能残りサイズが0である場合は、ステップS509において障害フレームの送信処理が行われ、ステップS510において分割フレームの送信処理が行われる。
分割フレームの送信処理は、図21を参照して後述する。
分割フレームの送信処理の終了後、ステップS508において障害フレームの送信処理が行われる。
次に、図19のステップS401において送信可能残りサイズがないと判断された場合(ステップS401でNO)は、1つ制御フレームのデータサイズ分の送信が完了している状態なので、図18のステップS301で通知のあった障害データは、制御フレームに挿入するのではなく、障害フレームとして送信される。
ここで、送信決定部121は、フレーム残りサイズがあるか否かを確認し(ステップS405)、フレーム残りサイズがない場合は、ステップS508において障害フレームの送信処理が行われる(ステップS406)。
一方、フレーム残りサイズがある場合は、1つの制御フレームに含まれていたが、その制御フレームでは送信できなかった制御データ又は障害データが存在するので、ステップS407において障害フレームの送信処理が行われ、ステップS408において分割フレームの送信処理が行われる。
次に、図21を参照して、分割フレームの送信処理を説明する。
先ず、送信決定部121が分割フレームヘッダを生成し、順序制御部122が分割フレームヘッダをフレーム送信部107に出力する(ステップS601)。
次に、送信決定部121の指示により、順序制御部122が制御フレームバッファ部112から制御フレームの1ワード分のデータを読み出し、読み出したデータをフレーム送信部107に出力する(ステップS602)。
また、このとき、順序制御部122はフレーム残りサイズをデクリメントする。
次に、送信決定部121が、フレーム残りサイズがあるか否かを確認し(ステップS603)、フレーム残りサイズがある場合には、フレーム残りサイズが0になるまで、ステップS601〜S603の処理が繰り返される。
フレーム残りサイズが0になれば、押し出されたデータが全て分割フレームで送信されたことになる。
次に、図22を参照して、障害フレームの送信処理を説明する。
先ず、送信決定部121の指示により、順序制御部122は障害フレームバッファ部111から障害フレームの1ワード分のデータを読み出し、読み出したデータをフレーム送信部107に送信する(ステップS701)。
次に、送信決定部121が、障害データの全てがフレーム送信部107に出力されたか否かを確認し(ステップS702)、出力されていない障害データがあれば、ステップS701及びS702の処理が繰り返される。
なお、前述したように、送信決定部121は、障害データの既定データサイズを記憶しているので、順序制御部122が障害フレームバッファ部111から障害データの全てを読み出したか否かを判断することができる。
以上のように、本実施の形態によれば、通信装置200が障害通知を実施した際、通信装置100は制御フレームに障害通知を割り込ませることで制御通信の周期が短いままに、障害通知の時間を短縮することができる。
実施の形態2.
本実施の形態では、実施の形態1と異なる構成の通信装置100を説明する。
なお、本実施の形態に係る通信装置100は、実施の形態1と構成が異なっており、また動作の手順も実施の形態1に示したものとは異なるが、基本的な動作原理は同じである。
つまり、本実施の形態においても、制御フレームの送信中に障害データが発生した場合に、障害データを制御フレームに挿入して送信し、障害データの挿入にて押し出されたデータは、分割フレームとして、制御フレームに続けて送信する。
このため、本実施の形態でも、図9〜図12に示す形態にて、制御フレーム及び分割フレームが送信される。
また、本実施の形態においても、図13に示した原理にてデータが復元される。
図23は、本実施の形態に係る通信装置100の構成例を示す。
なお、以降、通信装置100を自装置とも表記する。
通信装置200及び通信装置300も、図23に示す構成例を有するものとする。
受信ポート800は、通信装置200からフレーム1000を受信して受信データ分配装置801に1ワードずつ出力する。
受信データ分配装置801は、受信したデータを解析して受信内容に沿ってヘッダバッファ803、再構成バッファ805、中継データバッファ811、中継ヘッダバッファ804、中継障害バッファ812、中継障害ヘッダバッファ808、外部入出力装置813(以下、CPUともいう)に所定の情報を送付する。
具体的には、受信データ分配装置801は、予めフレームヘッダのサイズを保管しており、予め障害データのサイズを保管しており、予め障害フレームのサイズを保管しており、予めデリミタのサイズを保管している。
また、受信データ分配装置801は、制御フレームのフレームデータサイズ(以下、制御データサイズと記す)を、制御フレームヘッダが示すフレームサイズからフレームヘッダのサイズを減算して計算する。
また、受信データ分配装置801は、分割フレームのフレームデータサイズ(以下、分割データサイズと記す)を、分割フレームヘッダ4010、5010のフレームサイズ1012からフレームヘッダ1010のサイズを減算して計算する。
また、受信データ分配装置801は、障害フレームのフレームデータサイズ(以下、障害データサイズと記す)を、障害フレームヘッダ6010のフレームサイズ1012からフレームヘッダ1010のサイズを減算して計算する。
また、受信データ分配装置801は、フレーム1000の先頭を検出する手段(図23には不図示)がフレーム1000の先頭を検出したときに、受信カウンタ802にクリアを要求し、受信ポート800からフレーム1000を1ワードずつ受信する。
また、受信カウンタ802が、受信データ分配装置801からの要求に応じてフレームヘッダサイズを計測するが、受信カウンタ802がフレームヘッダ1010のサイズ未満のときに、受信データ分配装置801は、受信した1ワードをヘッダバッファ803に書き込む。
また、受信カウンタ802がフレームヘッダ1010のサイズのときに、ヘッダバッファ803に保存されているのが制御フレームヘッダであれば、受信データ分配装置801は、制御フレームヘッダを中継ヘッダバッファ804と再構成バッファ805に書き込み、制御データサイズを中継障害残りサイズカウンタ809と再構成カウンタ807に書き込む。
また、ヘッダバッファ803に保存されているのが分割フレームヘッダ4010、5010であれば、受信データ分配装置801は、分割フレームヘッダを中継ヘッダバッファ804に書き込み、分割データサイズを中継残りサイズカウンタ806に書き込む。
また、ヘッダバッファ803に保存されているのが障害フレームヘッダ6010であれば、受信データ分配装置801は、障害フレームヘッダを中継障害ヘッダバッファ808に書き込み、制御データサイズを中継障害残りサイズカウンタ809に書き込み、また、割り込みカウンタ810が0のとき内部の受信割り込みフラグを無効とし、割り込みカウンタ810が0以外のとき内部の受信割り込みフラグを有効とする。
受信カウンタ802がフレームヘッダ1010のサイズより大きく、かつ、受信カウンタ802がヘッダバッファ803に保存されているフレームヘッダ1010のフレームサイズ未満、かつ、受信割り込みフラグが無効、かつ、受信ポート800から受信した1ワードがデリミタでないときに、受信データ分配装置801は、以下の動作を行う。
つまり、上記の条件が成立した際に、ヘッダバッファ803に保存されているのが制御フレームヘッダまたは分割フレームヘッダであれば、受信データ分配装置801は、受信ポート800から受信した1ワードを中継データバッファ811と再構成バッファ805に書き込み、再構成カウンタ807にデクリメントを要求する。
一方、上記の条件が成立した際に、ヘッダバッファ803に保存されているのが障害フレームヘッダ6010であれば、受信データ分配装置801は、受信ポート800から受信した1ワードを中継障害バッファ812に書き込む。
また、受信カウンタ802がフレームヘッダ1010のサイズより大きく、かつ、受信カウンタ802がヘッダバッファ803に保存されているフレームヘッダ1010のフレームサイズ1012未満、かつ、受信割り込みフラグが無効、かつ、受信ポート800から受信した1ワードがデリミタ3030であったときに、受信データ分配装置801は、障害データのサイズを割り込みカウンタ810に書き込み、障害フレームタイプと障害フレームサイズを中継障害ヘッダバッファ808に書き込む。
また、受信データ分配装置801は、割り込みフラグが有効のときに、受信ポート800から受信した1ワードを中継障害バッファ812に書き込み、割り込みカウンタ810にデクリメントを要求する。
また、受信カウンタ802がフレームヘッダのサイズより大きく、かつ、ヘッダバッファ803に保存されているフレームヘッダのフレームサイズと等しいとき、受信データ分配装置801は、受信カウンタ802にクリアを要求する。
また、再構成カウンタ807の値が0のとき、受信データ分配装置801は、外部出力装置に制御データ受信完了信号を出力する。
受信カウンタ802は、受信データ分配装置801から要求に応じて主に受信データのワード数を計測する。
受信カウンタ802の動作の詳細を説明する。
受信カウンタ802は、受信データ分配装置801から要求されたとき内部の値をクリアする。
また、受信カウンタ802は、受信データ分配装置801から要求されたとき内部の値をインクリメントする。
また、受信カウンタ802は、受信データ分配装置801から読み出されたとき内部の値を出力する。
ヘッダバッファ803は、受信したフレームのフレームヘッダ1010を保存する。
ヘッダバッファ803の動作の詳細を説明する。
ヘッダバッファ803は、受信データ分配装置801からフレームヘッダを書き込まれたときフレームヘッダを保存する。
また、ヘッダバッファ803は、受信データ分配装置801に読み出されたとき受信データ分配装置801にフレームヘッダを出力する。
また、ヘッダバッファ803は、外部入出力装置813に読み出されたときに外部入出力装置813にフレームヘッダを出力する。
中継ヘッダバッファ804は、受信した制御フレームヘッダを保存し、中継分割ヘッダ生成装置814と中継割り込み可否判定装置815に制御フレームヘッダ2010、3010の情報を出力する。
中継ヘッダバッファ804の動作の詳細を説明する。
中継ヘッダバッファ804は、受信データ分配装置801から制御フレームヘッダ2010、3010を書き込まれたときに、制御フレームヘッダ2010、3010を保存する。
また、中継ヘッダバッファ804は、中継分割ヘッダ生成装置814に読み出されたとき、制御フレームヘッダ2010、3010を中継分割ヘッダ生成装置814に出力する。
また、中継ヘッダバッファ804は、中継割り込み可否判定装置815に読み出されたとき、制御フレームヘッダ2010、3010を中継割り込み可否判定装置815に出力する。
また、中継ヘッダバッファ804は、送信データ選択装置816に読み出されたとき、制御フレームヘッダ2010、3010を送信データ選択装置816に出力する。
再構成バッファ805は、障害発生前分割制御データ3020と障害発生後分割制御データ3050とフレームから押し出された分割制御データ4020を保存し、制御データ2を復元する。
再構成バッファ805の動作の詳細を説明する。
再構成バッファ805は、受信データ分配装置801から制御データを書き込まれたとき制御データを保存し、外部入出力装置813に読み出されたときに外部入出力装置813に制御データを出力する。
中継残りサイズカウンタ806は、中継する制御フレームまたは分割フレームの未送信ワード数を計測する。
中継残りサイズカウンタ806の動作の詳細を説明する。
中継残りサイズカウンタ806は、受信データ分配装置801に制御データサイズを書き込まれたとき、制御データサイズをカウント値としてセットする。
また、中継残りサイズカウンタ806は、受信データ分配装置801に中継データサイズを書き込まれたとき、中継データサイズをカウント値としてセットする。
また、中継残りサイズカウンタ806は、送信データ選択装置816から要求されたとき、カウント値をデクリメントする。
また、中継残りサイズカウンタ806は、中継分割ヘッダ生成装置814に読み出されたとき、カウント値を中継分割ヘッダ生成装置814に出力する。
また、中継残りサイズカウンタ806は、中継割り込み可否判定装置815に読み出されたときに、カウント値を中継割り込み可否判定装置815へ出力する。
再構成カウンタ807は、未受信の制御データ数を計測し、制御データの受信完了を検出する。
再構成カウンタ807の動作の詳細を説明する。
再構成カウンタ807は、受信データ分配装置801から要求されたとき内部の値をクリアする。
また、再構成カウンタ807は、受信データ分配装置801から要求されたときカウント値をデクリメントし、受信データ分配装置801から要求されたとき内部の値を出力する。
中継障害ヘッダバッファ808は、受信した障害フレームヘッダ6010を保存し、送信データ選択装置に出力する。
中継障害ヘッダバッファ808の動作の詳細を説明する。
中継障害ヘッダバッファ808は、受信データ分配装置801から書き込まれたとき、障害フレームヘッダ6010を保存する。
また、中継障害ヘッダバッファ808は、送信データ選択装置816に読み出されたとき、障害フレームヘッダ6010を送信データ選択装置816に出力する。
中継障害残りサイズカウンタ809は、送信データ選択装置816からの要求に応じて、受信した障害データの未送信ワード数を計測する。
中継障害残りサイズカウンタ809の動作の詳細を説明する。
中継障害残りサイズカウンタ809は、受信データ分配装置801から書き込まれたとき、障害データサイズをカウント値としてセットする。
また、中継障害残りサイズカウンタ809は、送信データ選択装置816から要求されたときに、上記カウント値をデクリメントする。
割り込みカウンタ810は、受信データ分配装置801からの要求に応じて制御フレームに含まれる障害データの受信ワード数を計測する。
割り込みカウンタ810の動作の詳細を説明する。
割り込みカウンタ810は、受信データ分配装置801から要求されたときに、内部の値を予め定められた障害データのサイズにセットする。
また、割り込みカウンタ810は、受信データ分配装置801から要求されたときに、内部の値をデクリメントする。
また、割り込みカウンタ810は、受信データ分配装置801から読み出されたときに、受信データ分配装置801に内部の値を出力する。
中継データバッファ811は、受信した制御フレームと分割フレームのフレームデータ1020を保存し、送信データ選択装置816に出力する。
中継データバッファ811の動作の詳細を説明する。
中継データバッファ811は、受信データ分配装置801から書き込まれたときに、制御フレームのフレームデータ1020または分割フレームのフレームデータ1020を保存する。
また、中継データバッファ811は、送信データ選択装置816に読み出されたときに、制御フレームのフレームデータ1020または分割フレームのフレームデータ1020を上記送信データ選択装置816に出力する。
中継障害バッファ812は、受信した障害データ28を保存し、送信データ選択装置816に出力する。
中継障害バッファ812の動作の詳細を説明する。
中継障害バッファ812は、受信データ分配装置801から書き込まれたときに、障害データを保存する。
また、中継障害バッファ812は、送信データ選択装置816に読み出されたときに、送信データ選択装置816に障害データを出力する。
外部入出力装置813(CPU)は、任意のタイミングで817〜822にフレームを書き込み、任意のタイミングで再構成バッファ805からデータを読み出す。
外部入出力装置813の動作の詳細を説明する。
外部入出力装置813は、任意のタイミングで、自装置ヘッダバッファ817に制御フレームヘッダ2010を書き込む。
また、外部入出力装置813は、任意のタイミングで、自装置残りサイズカウンタ818に制御フレームサイズの値を書き込む。
また、外部入出力装置813は、任意のタイミングで、自装置データバッファ819に制御フレームのフレームデータ1020を書き込む。
また、外部入出力装置813は、任意のタイミングで、自装置障害ヘッダバッファ820に障害フレームヘッダ6010を書き込む。
また、外部入出力装置813は、任意のタイミングで、自装置障害残りサイズカウンタ821に障害フレーム6000のフレームサイズの値を書き込む。
また、外部入出力装置813は、任意のタイミングで、自装置障害バッファ822に障害フレーム6000データを書き込む。
また、外部入出力装置813は、任意のタイミングで、再構成バッファ805からデータを読み出す。
中継分割ヘッダ生成装置814は、中継フレーム(通信装置200から受信したフレーム)が分割されたときに分割フレームヘッダ4010、5010を生成して送信データ選択装置816に出力する。
中継分割ヘッダ生成装置814の動作の詳細を説明する。
中継分割ヘッダ生成装置814は、送信データ選択装置816から要求されたとき、送信データ選択装置816に、分割フレームヘッダを出力する。
中継分割ヘッダ生成装置814が出力する分割フレームヘッダは、フレームサイズが中継残りサイズカウンタ806から読み出した値を示し、フレームタイプが分割フレームを示す。
中継割り込み可否判定装置815は、送信中の中継フレームに障害データを割り込ませることができるかどうかを送信データ選択装置816に出力する。
中継割り込み可否判定装置815の動作の詳細を説明する。
中継割り込み可否判定装置815は、送信データ選択装置816に要求されたとき中継残りサイズカウンタ806からカウント値を読み出す。
そして、中継割り込み可否判定装置815は、上記カウント値について、
(nは自然数)かつ、
{(デリミタのサイズ)+(障害データのサイズ)}*(n)≦(上記カウント値)
の関係を満たすnが存在すれば、有効を送信データ選択装置816に出力し、そうでなければ無効を出力する。
送信データ選択装置816は、優先度に沿って中継障害ヘッダバッファ808、中継障害バッファ812、自装置障害ヘッダバッファ820、自装置障害バッファ822、中継ヘッダバッファ804、中継データバッファ811、自装置ヘッダバッファ817、自装置データバッファ819、デリミタ出力装置823のいずれかから読み出したデータを送信ポート824に出力する。
送信データ選択装置816の動作の詳細を説明する。
送信データ選択装置816は、予めフレームヘッダ1010のサイズを保管しており、予め障害データのサイズを保管しており、1ワードを送信ポート824へ出力するとき、送信カウンタ825にインクリメントを要求する。
そして、送信データ選択装置816は、以下に示す状態遷移を行う。
なお、以下に示す各種の状態のうち、「中継障害状態」とは、通信装置200から受信した障害フレームを送信する状態である。
「自装置送信状態」とは、通信装置100(自装置)の外部入出力装置813からの制御フレームを送信する状態である。
「自装置自装置状態」とは、通信装置100(自装置)の外部入出力装置813からの制御フレームの送信途中に、通信装置100(自装置)の外部入出力装置813からの障害データを割り込ませて送信する状態である。
「自装置中継状態」とは、通信装置100(自装置)の外部入出力装置813からの制御フレームの送信途中に、通信装置200から受信した障害データを割り込ませて送信する状態である。
「自装置分割状態」とは、通信装置100(自装置)の外部入出力装置813からの制御フレームに含まれていた制御データであって、障害データの割込みにより押し出された制御データを、分割フレームで送信する状態である。
「自装置障害状態」とは、通信装置100(自装置)の外部入出力装置813からの障害フレームを送信する状態である。
「中継送信状態」とは、通信装置200から受信した制御フレームを送信する状態である。
「中継自装置状態」とは、通信装置200から受信した制御フレームの送信途中に、通信装置100(自装置)の外部入出力装置813からの障害データを割り込ませて送信する状態である。
「中継中継状態」とは、通信装置200から受信した制御フレームの送信途中に、通信装置200から受信した障害データを割り込ませて送信する状態である。
「中継分割状態」とは、通信装置200から受信した制御フレームに含まれていた制御データであって、障害データの割込みにより押し出された制御データを、分割フレームで送信する状態である。
なお、状態遷移のパターンは、図41に示す通りである。
以下にて、送信データ選択装置816の状態遷移の詳細を説明する。
送信待機状態であるとき、
中継障害残りサイズカウンタ809の値が1以上であれば中継障害状態に遷移し、
自装置残りサイズカウンタ818の値が1以上であれば自装置送信状態に遷移する。
自装置送信状態であり、かつ、
中継障害残りサイズカウンタ809の値が0であり、かつ、
自装置障害残りサイズカウンタ821の値が1以上であり、かつ、
自装置割り込み可否判定装置826の出力が有効であるとき、
自装置自装置状態に遷移する。
自装置送信状態であり、かつ、
中継障害残りサイズカウンタ809の値が1以上であり、かつ、
自装置障害残りサイズカウンタ821の値が0であり、かつ、
中継割り込み可否判定装置815の出力が有効であるとき、
自装置中継状態に遷移する。
自装置送信状態であり、かつ、
送信カウンタ825の値が自装置ヘッダバッファ817のフレームサイズ1012と等しく、かつ、
自装置残りサイズカウンタ818の値が0のとき、
送信待機状態に遷移する。
自装置送信状態であり、かつ、
送信カウンタ825の値が自装置ヘッダバッファ817のフレームサイズ1012と等しく、かつ、
自装置残りサイズカウンタ818の値が1以上のとき、
自装置分割状態に遷移する。
自装置送信状態であり、かつ、
送信カウンタ825の値が自装置ヘッダバッファ817のフレームサイズ1012と等しく、かつ、
自装置残りサイズカウンタ818の値が1以上のとき、
自装置分割状態に遷移する。
自装置自装置状態であり、かつ自装置障害残りサイズカウンタ821の値が0のとき、
自装置送信状態に遷移する。
自装置中継状態であり、かつ中継障害残りサイズカウンタ809の値が0のとき、
自装置送信状態に遷移する。
自装置分割状態であり、かつ、
自装置残りサイズカウンタ818の値が0のとき、
送信待機状態に遷移する。
自装置障害状態であり、かつ、自装置障害残りサイズカウンタ821の値が0のとき、
送信待機状態に遷移する。
中継送信状態であり、かつ、
中継障害残りサイズカウンタ809の値が0であり、かつ、
自装置障害残りサイズカウンタ821の値が1以上であり、かつ、
中継割り込み可否判定装置815の出力が有効であるとき、
中継自装置状態に遷移する。
中継送信状態であり、かつ、
中継障害残りサイズカウンタ809の値が1以上であり、かつ、
中継割り込み可否判定装置815の出力が有効であるとき、
中継中継状態に遷移する。
中継送信状態であり、かつ、
送信カウンタ825の値が中継ヘッダバッファ804のフレームサイズ1012と等しく、かつ、
中継残りサイズカウンタ806の値が0のとき、
送信待機状態に遷移する。
中継送信状態であり、かつ、
送信カウンタ825の値が中継ヘッダバッファ804のフレームサイズ1012と等しく、かつ、
中継残りサイズカウンタ806の値が1以上のとき、
中継分割状態に遷移する。
中継送信状態であり、かつ、
送信カウンタ825の値が中継ヘッダバッファ804のフレームサイズ1012と等しく、かつ、
中継残りサイズカウンタ806の値が1以上のとき、
中継分割状態に遷移する。
中継自装置状態であり、かつ自装置障害残りサイズカウンタ821の値が0のとき、
中継送信状態に遷移する。
中継中継状態であり、かつ中継障害残りサイズカウンタ809の値が0のとき、
中継送信状態に遷移する。
中継分割状態であり、かつ、
中継残りサイズカウンタ806の値が0のとき、
送信待機状態に遷移する。
中継障害状態であり、かつ、
中継障害残りサイズカウンタ809の値が0のとき、
送信待機状態に遷移する。
自装置送信状態であり、かつ、
送信カウンタ825の値がフレームヘッダ1010のサイズ未満のとき、
自装置ヘッダバッファ817から1ワードを送信ポート824へ出力し、
送信カウンタ825の値がフレームヘッダのサイズ以上のとき、
自装置データバッファ819から1ワードを送信ポート824へ出力し、
自装置残りサイズカウンタ818にデクリメントを要求し、
送信カウンタ825の値が自装置障害ヘッダバッファ820のフレームサイズ1012と等しいとき送信カウンタ825にクリアを要求する。
自装置中継状態であり、かつ、
中継障害残りサイズカウンタ809の値が障害データのサイズと等しいとき、
デリミタ出力装置823からデリミタ3030、5020を送信ポート824へ出力し、
中継障害残りサイズカウンタ809の値が障害データのサイズより小さいとき、
中継障害バッファ812から1ワードを送信ポート824へ出力し、
中継障害残り送信カウンタ825にデクリメントを要求する。
自装置自装置状態であり、かつ、
自装置障害残りサイズカウンタ821の値が障害データのサイズと等しいとき、
デリミタ出力装置823からデリミタ3030、5020を送信ポート824へ出力し、
自装置障害残りサイズカウンタ821の値が障害データのサイズより小さいとき、
自装置障害バッファ822から1ワードを送信ポート824へ出力し、
自装置障害残りサイズカウンタ821にデクリメントを要求する。
自装置分割状態であり、かつ、
送信カウンタ825の値がフレームヘッダ1010のサイズ未満のとき、
自装置分割ヘッダ生成装置827から1ワードを送信ポート824へ出力し、
送信カウンタ825の値がフレームヘッダ1010のサイズ以上のとき、
自装置データバッファ819から1ワードを送信ポート824へ出力し、
自装置残りサイズカウンタ818にデクリメントを要求し、
送信カウンタ825の値が自装置障害ヘッダバッファ820のフレームサイズ1012と等しいとき送信カウンタ825にクリアを要求する。
自装置障害状態であり、かつ、
送信カウンタ825の値がフレームヘッダ1010のサイズ未満のとき、
自装置障害ヘッダバッファ820から1ワードを送信ポート824へ出力し、
送信カウンタ825の値がフレームヘッダのサイズ以上のとき、
自装置データバッファ819から1ワードを送信ポート824へ出力し、
自装置残りサイズカウンタ818にデクリメントを要求し、
送信カウンタ825の値が自装置障害ヘッダバッファ820のフレームサイズ1012と等しいとき送信カウンタ825にクリアを要求する。
中継送信状態であり、かつ、
送信カウンタ825の値がフレームヘッダ1010のサイズ未満のとき、
中継ヘッダバッファ804から1ワードを送信ポート824へ出力し、
送信カウンタ825の値がフレームヘッダ1010のサイズ以上のとき、
中継データバッファ811から1ワードを送信ポート824へ出力し、
中継残りサイズカウンタ806にデクリメントを要求し、
送信カウンタ825の値が中継障害ヘッダバッファ808のフレームサイズ1012と等しいとき送信カウンタ825にクリアを要求する。
中継中継状態であり、かつ、
中継障害残りサイズカウンタ809の値が障害データのサイズと等しいとき、
デリミタ出力装置823からデリミタを送信ポート824へ出力し、
中継障害残りサイズカウンタ809の値が障害データのサイズより小さいとき、
中継障害バッファ812から1ワードを送信ポート824へ出力し、
中継障害残りサイズカウンタ809にデクリメントを要求する。
中継自装置状態であり、かつ、
自装置障害残りサイズカウンタ821の値が障害データのサイズと等しいとき、
デリミタ出力装置823からデリミタ3030、5020を送信ポート824へ出力し、
自装置障害残りサイズカウンタ821の値が障害データのサイズより小さいとき、
自装置障害バッファ322から1ワードを送信ポート824へ出力し、
自装置障害残りサイズカウンタ821にデクリメントを要求する。
中継分割状態であり、かつ、
送信カウンタ825の値がフレームヘッダ1010のサイズ未満のとき、
中継分割ヘッダ生成装置814から1ワードを送信ポート824へ出力し、
送信カウンタ825の値がフレームヘッダ1010のサイズ以上のとき、
中継データバッファ811から1ワードを送信ポート824へ出力し、
中継残りサイズカウンタ806にデクリメントを要求し、
送信カウンタ825の値が中継障害ヘッダバッファ808のフレームサイズ1012と等しいとき送信カウンタ825にクリアを要求する。
中継障害状態であり、かつ、
送信カウンタ825の値がフレームヘッダ1010のサイズ未満のとき、
中継障害ヘッダバッファ808から1ワードを送信ポート824へ出力し、
送信カウンタ825の値がフレームヘッダ1010のサイズ以上のとき、
中継データバッファ811から1ワードを送信ポート824へ出力し、
中継残りサイズカウンタ806にデクリメントを要求し、
送信カウンタ825の値が中継障害ヘッダバッファ808のフレームサイズと等しいとき送信カウンタ825にクリアを要求する。
自装置ヘッダバッファ817は、外部入出力装置813から入力された制御フレームヘッダ2010を保存し、送信データ選択装置816に制御フレームヘッダ2010の情報を出力する。
自装置ヘッダバッファ817の動作の詳細を説明する。
自装置ヘッダバッファ817は、外部入出力装置813から書き込まれたとき、制御フレームヘッダ2010を保存する。
また、自装置ヘッダバッファ817は、自装置分割ヘッダ生成装置827に読み出されたとき、制御フレームヘッダ2010を自装置分割ヘッダ生成装置827に出力する。
また、自装置ヘッダバッファ817は、自装置割り込み可否判定装置826に読み出されたとき、制御フレームヘッダ2010を自装置割り込み可否判定装置826に出力する。
また、自装置ヘッダバッファ817は、送信データ選択装置816に読み出されたとき、制御フレームヘッダ2010を送信データ選択装置816に出力する。
自装置残りサイズカウンタ818は、送信データ選択装置816からの要求に応じ自装置の制御フレームまたは分割フレームの未送信ワード数を計測する。
自装置残りサイズカウンタ818の動作の詳細を説明する。
自装置残りサイズカウンタ818は、外部入出力装置813から書き込まれたとき、制御データサイズをカウント値としてセットする。
また、自装置残りサイズカウンタ818は、送信データ選択装置816から要求されたときに、カウント値をデクリメントする。
また、自装置残りサイズカウンタ818は、自装置分割ヘッダ生成装置827に読み出されたとき、自装置分割ヘッダ生成装置827にカウント値を出力する。
また、自装置残りサイズカウンタ818は、自装置割り込み可否判定装置826に読み出されたとき、自装置割り込み可否判定装置826にカウント値を出力する。
自装置データバッファ819は、外部入出力装置813から書き込まれたフレームのうち制御フレームのフレームデータ1020を保存し、送信データ選択装置816に出力する。
自装置データバッファ819の動作の詳細を説明する。
自装置データバッファ819は、外部入出力装置813から書き込まれたときに、制御データを保存する。
また、自装置データバッファ819は、送信データ選択装置816に読み出されたときに、送信データ選択装置816に制御データを出力する。
自装置障害ヘッダバッファ820は、外部入出力装置から書き込まれた障害フレームヘッダ6010を保存し、送信データ選択装置に出力する。
自装置障害ヘッダバッファ820の動作の詳細を説明する。
自装置障害ヘッダバッファ820は、外部入出力装置813から書き込まれたとき、障害フレームヘッダ6010を保存する。
また、自装置障害ヘッダバッファ820は、送信データ選択装置816に読み出されたとき、障害フレームヘッダ6010を送信データ選択装置816に出力する。
自装置障害残りサイズカウンタ821は、送信データ選択装置816からの要求に応じて、外部入出力装置から書き込まれた障害データの未送信ワード数を計測する。
自装置障害残りサイズカウンタ821の動作の詳細を説明する。
自装置障害残りサイズカウンタ821は、外部入出力装置813から書き込まれたとき、障害データサイズの値をカウント値としてセットする。
また、自装置障害残りサイズカウンタ821は、送信データ選択装置816から要求されたとき、カウント値をデクリメントする。
また、自装置障害残りサイズカウンタ821は、送信データ選択装置816に読み出されたときに、送信データ選択装置816にカウント値を出力する。
自装置障害バッファ822は、外部入出力装置から書き込みまれたデータのうち障害データ28を保存し、送信データ選択装置816に出力する。
自装置障害バッファ822の動作の詳細を説明する。
自装置障害バッファ822は、外部入出力装置813から書き込まれたとき、障害データ28を保存する。
また、自装置障害バッファ822は、送信データ選択装置816に読み出されたとき、障害フレームヘッダ6010を送信データ選択装置816に出力する。
デリミタ出力装置823は、予めデリミタ3030、5020を保管しており、送信データ選択装置816から読み出されたとき、予め保管しているデリミタ3030、5020を送信データ選択装置816に出力する。
送信ポート824は、送信データ選択装置816から1ワードずつデータを受信して、通信装置300にフレームを送信する。
送信カウンタ825は、送信データ選択装置816からの要求に応じて送信データのワード数を計測する。
送信カウンタ825の動作の詳細を説明する。
送信カウンタ825は、送信データ選択装置816から要求を受けたとき、内部の値をクリアする。
また、送信カウンタ825は、送信データ選択装置816から要求を受けたとき、内部の値をインクリメントする。
また、送信カウンタ825は、送信データ選択装置816から読み出されたとき、内部の値を送信データ選択装置816に出力する。
自装置割り込み可否判定装置826は、送信中の自装置フレーム(通信装置100内で生成されたフレーム)に障害データを割り込ませることができるかどうかを送信データ選択装置816に出力する。
自装置割り込み可否判定装置826は、送信データ選択装置816に要求されたときに、自装置残りサイズカウンタ818からカウント値を読み出す。
また、自装置割り込み可否判定装置826は、上記カウント値について、
(nは自然数)かつ、
{(デリミタのサイズ)+(障害データのサイズ)}*(n)≦(上記カウント値)
の関係を満たすnが存在すれば、
有効を送信データ選択装置816に出力し、そうでなければ無効を出力する。
自装置分割ヘッダ生成装置827は、自装置フレームが分割されたときに分割フレームヘッダ4010、5010を生成して送信データ選択装置816に出力する。
自装置分割ヘッダ生成装置827は、送信データ選択装置816から要求されたとき、送信データ選択装置816に、分割フレームヘッダを出力する。
自装置分割ヘッダ生成装置827が出力する分割フレームヘッダは、フレームサイズ1012が自装置残りサイズカウンタ818から読み出した値を示し、フレームタイプ1011が分割フレームを示す。
次に動作について説明する。
図24は、通信装置100の動作手順を示す流れ図である。
図24に示すように、通信装置100には、複数の状態が設けられており、フレームの受信状況、障害データの発生状況等に基づき状態遷移が行われる。
フレーム受信時の状態遷移のパターンは図40に示す通りである。
フレーム送信時の状態遷移のパターンは図41に示す通りである。
次に、図24のフローチャートを説明する。
なお、図24のフローチャートは、通信装置100が動作クロックごとの動作に対応させている。
つまり、S2、S11、S20、S26、S30、S39、S54、S58、S61、S95、S67、S82、S86、S89、S101、S111の各処理は、1クロックで実施される動作である。
先ず、受信データ分配装置801は、受信データ分配装置801の状態を確認する(ステップS1)。
ステップS1において、
受信データ分配装置801がヘッダ受信状態であるとき、受信データ分配装置801がヘッダ受信状態であるときの処理(図面では、「ヘッダ受信状態時の処理」と表記する)を実施する(ステップS2)。
受信データ分配装置801がヘッダ受信状態であるときの処理を図25を用いて説明する。
受信データ分配装置801がヘッダ受信状態であるとき、受信データ分配装置801は、中継ヘッダバッファ804に受信した1ワードを保存し、受信カウンタ802にインクリメントを要求する(ステップS3)。
また、受信データ分配装置801は、受信カウンタ802の値とヘッダバッファ803のフレームサイズ1012とが一致したかを確認する(ステップS4)。
ステップS4において、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012と一致しているとき、受信データ分配装置801は、ヘッダバッファ803のフレームタイプ1011が障害フレームを示すかを確認する(ステップS5)。
ステップS5において、ヘッダバッファ803のフレームタイプ1011が障害フレームを示すとき、受信データ分配装置801は、ヘッダバッファ803のフレームタイプ1011が制御フレームを示すかを確認する(ステップS6)。
ステップS6において、ヘッダバッファ803のフレームタイプ1011が制御フレームを示すとき、受信データ分配装置801は、再構成バッファ805をクリアし、再構成カウンタ807にヘッダバッファ803のフレームサイズ1012の値をセットする(ステップS7)。
また、受信データ分配装置801は、ヘッダバッファ803からフレームヘッダ1010を読み出して中継ヘッダバッファ804に書き込む。
また、受信データ分配装置801は、中継残りサイズカウンタ806にヘッダバッファ803のフレームサイズ1012の値をセットし、制御受信状態へ遷移する(ステップS8)。
これにて、受信データ分配装置801がヘッダ受信状態であるときの処理を終了する。
ステップS6において、ヘッダバッファ803のフレームタイプ1011が制御フレームを示さないとき、受信データ分配装置801は、ヘッダバッファ803のフレームタイプ1011が分割フレームであるかを確認する(ステップS9)。
ステップS9において、ヘッダバッファ803のフレームタイプ1011が分割フレームを示すとき、受信データ分配装置801は、ステップS8の処理を実施する。
ステップS9において、ヘッダバッファ803のフレームタイプ1011が分割フレームを示さない場合は、受信データ分配装置801がヘッダ受信状態であるときの処理を終了する。
また、ステップS5において、ヘッダバッファ803のフレームタイプ1011が障害フレームを示さないとき、受信データ分配装置801は、ヘッダバッファ803からフレームヘッダを読み出して中継障害ヘッダバッファ808に書き込む。
また、受信データ分配装置801は、中継障害残りサイズカウンタ809へフレームデータのサイズを書き込み、障害受信状態へ遷移する(ステップS10)。
受信データ分配装置801がヘッダ受信状態であるときの処理を終了すると、外部入出力装置813の出力処理(ステップS106)を実施する。
外部入出力装置813の出力処理(ステップS106)の詳細は、図38を用いて後述する。
次に、受信データ分配装置801が制御受信状態であるときの処理(図面では、「制御受信状態時の処理」と表記する)を図26を用いて説明する。
まず、受信データ分配装置801は、通信装置200から受信した1ワードがデリミタ5020以外かどうか確認する(ステップS12)。
ステップS12において、受信データ分配装置801が通信装置200から受信した1ワードがデリミタ5020以外のとき、受信データ分配装置801は、再構成バッファ805に受信した1ワードを書き込み、再構成カウンタ807にデクリメントを要求する(ステップS13)。
また、受信データ分配装置801は、再構成カウンタ807の値が1以上か確認する(ステップS14)。
ステップS14において、再構成カウンタ807が1以上の値であるとき、受信データ分配装置801は、中継データバッファ811に通信装置200から受信した1ワードを書き込み、受信カウンタ802にインクリメントを要求する(ステップS15)。
また、受信データ分配装置801は、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012の値と等しいか確認する(ステップS16)。
ステップS16において、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012の値と等しいとき、受信データ分配装置801は、受信待機状態へ遷移する(ステップS17)。
また、受信データ分配装置801は受信カウンタ802にクリアを要求し、受信データ分配装置801が制御受信状態であるときの処理を終了する。
ステップS16において、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012の値と異なるとき、受信データ分配装置801が制御受信状態であるときの処理を終了する。
ステップS14において、再構成カウンタ807の値が0であるとき、受信データ分配装置801は、外部入出力装置813に制御フレームの受信を示す割り込みを出力し(ステップS18)、ステップS15から処理を実施する。
ステップS12において、受信データ分配装置801が通信装置200から受信した1ワードがデリミタ5020のとき、受信データ分配装置801は、ヘッダバッファ803からフレームヘッダ1010を読み出して中継障害バッファ812に書き込み、割り込み障害受信状態へ遷移し(ステップS19)、受信データ分配装置801が制御受信状態であるときの処理を終了する。
次に、受信データ分配装置801が割り込み障害受信状態であるときの処理(図面では、「割り込み障害受信状態時の処理」と表記する)を図27を用いて説明する。
まず、受信データ分配装置801は、中継障害バッファ812に通信装置200から受信した1ワードを書き込み(ステップS21)、割り込みカウンタ810にインクリメントを要求し、受信カウンタ802にインクリメントを要求する(ステップS21)。
次に、受信データ分配装置801は、割り込みカウンタ810の値が予め定められた障害データのサイズと等しいか確認する(ステップS22)。
ステップS22において、割り込みカウンタ810の値が予め定められて障害データのサイズと等しいとき、受信データ分配装置801は、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012の値と等しいか確認する(ステップS23)。
ステップS23において、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012の値と等しいとき、受信データ分配装置801は、受信待機状態へ遷移し(ステップS24)、割り込み障害受信状態であるときの処理を終了する。
ステップS23において、受信データ分配装置801の値がヘッダバッファ803のフレームサイズ1012の値と異なるとき、受信データ分配装置801は制御受信状態へ遷移する(ステップS25)。
ステップS22において、割り込みカウンタ810の値が予め定められて障害データのサイズと異なるとき、割り込み障害受信状態であるときの処理を終了する。
次に、受信データ分配装置801が障害受信状態であるときの処理(図面では、「障害受信状態時の処理」と表記する)を図28を用いて説明する。
まず、受信データ分配装置801は、中継障害バッファ812に通信装置200から受信した1ワードを書き込み、受信カウンタ802にインクリメントを要求する(ステップS26)。
また、受信データ分配装置801は、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012の値と等しいか確認する(ステップS27)。
ステップS27において、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012の値と等しいとき、受信データ分配装置801は、受信カウンタ802にクリアを要求し、中継障害バッファ812に通信装置200から受信した1ワードを書き込み、受信待機状態へ遷移し(ステップS28)、受信データ分配装置801が障害受信状態であるときの処理を終了する。
ステップS27において、受信カウンタ802の値がヘッダバッファ803のフレームサイズ1012の値と異なるとき、受信データ分配装置801は、受信待機状態へ遷移し、受信データ分配装置801が障害受信状態であるときの処理を終了する。
次に、送信データ選択装置816が送信待機状態であるときの処理(図面では、「送信待機状態時の処理」と表記する)を図29を用いて説明する。
まず、送信データ選択装置816は、中継障害残りサイズカウンタ809の値が0かどうか確認する(ステップS31)。
ステップS31において、中継障害残りサイズカウンタ809の値が0のとき、送信データ選択装置816は、自装置障害残りサイズカウンタ821の値が0かどうか確認する(ステップS32)。
ステップS32において、自装置障害残りサイズカウンタ821の値が0のとき、送信データ選択装置816は中継残りサイズカウンタ806の値が0かどうか確認する(ステップS33)。
ステップS33において、送信データ選択装置816は、中継残りサイズカウンタ806の値が0のとき、自装置残りサイズカウンタ818の値が0かどうか確認する(ステップS34)。
ステップS34において、自装置残りサイズカウンタ818の値が0のとき、送信データ選択装置816は自装置送信状態へ遷移し(ステップS35)、送信データ選択装置816が送信待機状態であるときの処理を終了する。
ステップS34において、自装置残りサイズカウンタ818の値が0以外のとき、送信データ選択装置816が送信待機状態であるときの処理を終了する。
ステップS33において、中継残りサイズカウンタ806の値が0以外のとき、送信データ選択装置816は中継状態へ遷移し(ステップS36)、送信データ選択装置816が送信待機状態であるときの処理を終了する。
ステップS32において、自装置障害残りサイズカウンタ821の値が0以外のとき、送信データ選択装置816は自装置障害状態へ遷移し(ステップS37)、送信データ選択装置816が送信待機状態であるときの処理を終了する。
ステップS31において、中継障害残りサイズカウンタ809の値が0以外のとき、送信データ選択装置816は、中継障害通知状態へ遷移し(ステップS38)、送信データ選択装置816が送信待機状態であるときの処理を終了する。
送信データ選択装置816が自装置送信状態であるときの処理(図面では、「自装置送信状態時の処理」と表記する)を図30を用いて説明する。
まず、送信データ選択装置816は、送信カウンタ825の値がフレームヘッダ1010のサイズ以下か確認する(ステップS40)。
ステップS40において、送信カウンタ825の値がフレームヘッダ1010のサイズ以下のとき、送信データ選択装置816は、自装置ヘッダバッファ817から1ワードを送信ポート824に出力し、送信カウンタ825にインクリメントを要求し、送信データ選択装置816が自装置送信状態であるときの処理を終了する(ステップS41)。
ステップS40において、送信カウンタ825の値がフレームヘッダ1010のサイズより大きいとき、送信データ選択装置816は、中継障害残りサイズカウンタ809の値が0であるか確認する(ステップS42)。
ステップS42において、送信データ選択装置816は、自装置障害残りサイズカウンタ821の値が0であるか確認する(ステップS43)。
ステップS43において、自装置障害残りサイズカウンタ821の値が0のとき、送信データ選択装置816は、送信カウンタ825の値が自装置ヘッダバッファ817のフレームサイズ1012の値と異なるか確認する(ステップS44)。
ステップS44において、送信カウンタ825の値が自装置ヘッダバッファ817のフレームサイズ1012の値と異なるとき、送信データ選択装置816は、自装置データバッファ819から1ワードを送信ポート824に出力し、自装置残りサイズカウンタ818にデクリメントを要求し、送信カウンタ825にインクリメントを要求し(ステップS45)、送信データ選択装置816が自装置送信状態であるときの処理を終了する。
ステップS44において、送信カウンタ825の値が自装置ヘッダバッファ817のフレームサイズ1012の値と等しいとき、送信データ選択装置816は、送信カウンタ825にクリアを要求し(ステップS46)、自装置残りサイズカウンタ818の値が0であるか確認する(ステップS47)。
ステップS47において、自装置残りサイズカウンタ818の値が0のとき、送信データ選択装置816は、送信カウンタ825にクリアを要求し、送信待機状態に遷移し(ステップS48)、送信データ選択装置816が自装置送信状態であるときの処理を終了する。
ステップS48において、自装置残りサイズカウンタ818の値が0以外のとき、送信データ選択装置816は自装置分割状態に遷移し(ステップS49)、送信データ選択装置816が自装置送信状態であるときの処理を終了する。
ステップS43において、自装置障害残りサイズカウンタ821の値が0でないとき、送信データ選択装置816は、自装置割り込み可否判定装置826の出力を確認する(ステップS50)。
ステップS50において、自装置割り込み可否判定装置826の出力が有効でないとき、送信データ選択装置816はステップS44から処理を実施する。
ステップS50において、自装置割り込み可否判定装置826の出力が有効であるとき、送信データ選択装置816は、デリミタ出力装置823からデリミタを送信ポート824に出力し、自装置自装置割り込み状態に遷移し(ステップS51)、送信データ選択装置816が自装置送信状態であるときの処理を終了する。
ステップS42において、中継障害残り送信カウンタ825の値が0でないとき、送信データ選択装置816は、自装置割り込み可否判定装置826の出力を確認する(ステップS52)。
ステップS52において、自装置割り込み可否判定装置826の出力が無効であるとき、送信データ選択装置816は、ステップS43から処理を実施する。
ステップS52において、自装置割り込み可否判定装置826の出力が有効であるとき、送信データ選択装置816は、デリミタ出力装置823からデリミタ3030、5020を送信ポート824に出力し、自装置中継割り込み状態に遷移する(ステップS53)。
次に、送信データ選択装置816が自装置中継状態であるときの処理(図面では、「自装置中継状態時の処理」と表記する)を図31を用いて説明する。
まず、送信データ選択装置816は、中継障害残りサイズカウンタ809の値が0以上であるか確認する(ステップS55)。
ステップS55において、中継障害残りサイズカウンタ809の値が0以上であるとき、送信データ選択装置816は、中継障害バッファ812から1ワードを送信ポート824へ出力し、送信カウンタ825にインクリメントを要求し、中継障害残り送信カウンタ825にデクリメントを要求し(ステップS56)、送信データ選択装置816が自装置中継状態であるときの処理を終了する。
ステップS56において、中継障害残りサイズカウンタ809の値が0であるとき、送信データ選択装置816は、自装置送信状態へ遷移し(ステップS57)、送信データ選択装置816が自装置中継状態であるときの処理を終了する。
次に、送信データ選択装置816が自装置自装置状態であるときの処理(図面では、「自装置自装置状態時の処理」と表記する)を図32を用いて説明する。
まず、送信データ選択装置816は、自装置障害残りサイズカウンタ821の値が0以上であるか確認する(ステップS59)。
ステップS59において、自装置障害残りサイズカウンタ821の値が0以上であるとき、送信データ選択装置816は自装置障害バッファ822から1ワードを送信ポート824へ出力し、送信カウンタ825にインクリメントを要求し、自装置障害残りサイズカウンタ821にデクリメントを要求し(ステップS60)、送信データ選択装置816が自装置自装置状態であるときの処理を終了する。
ステップS59において、自装置障害残りサイズカウンタ821の値が0であるとき、送信データ選択装置816は、自装置送信状態へ遷移し(ステップS57)、送信データ選択装置816が自装置自装置状態であるときの処理を終了する。
次に、送信データ選択装置816が自装置分割状態であるときの処理(図面では、「自装置分割状態時の処理」と表記する)を図32を用いて説明する。
まず、送信データ選択装置816は、送信カウンタ825の値がフレームヘッダ1010のサイズより小さいか確認する(ステップS62)。
ステップS62において、送信カウンタ825の値がフレームヘッダ1010のサイズより小さいとき、送信データ選択装置816は、自装置分割ヘッダ生成装置827から1ワードを送信ポート824に出力し、送信カウンタ825にインクリメントを要求し(ステップS63)、送信データ選択装置816が自装置分割状態であるときの処理を終了する。
ステップS62において、送信カウンタ825の値がフレームヘッダ1010のサイズ以上であるとき、送信データ選択装置816は、自装置残りサイズカウンタ818の値が0より大きいか確認する(ステップS64)。
ステップS64において、自装置残りサイズカウンタ818の値が0より大きいとき、送信データ選択装置816は、自装置データバッファ819から1ワードを送信ポート824へ出力し、自装置残りサイズカウンタ818にデクリメントを要求し、送信カウンタ825にインクリメントを要求し(ステップS65)、送信データ選択装置816が自装置分割状態であるときの処理を終了する。
ステップS64において、自装置残りサイズカウンタ818の値が0であるとき、送信データ選択装置816は、送信カウンタ825にクリアを要求し、送信待機状態へ遷移し(ステップS66)、送信データ選択装置816が自装置分割状態であるときの処理を終了する。
送信データ選択装置816が中継送信状態であるときの処理(図面では、「中継送信状態時の処理」と表記する)を図33を用いて説明する。
まず、送信データ選択装置816は、送信カウンタ825の値がフレームヘッダ1010のサイズ以下か確認する(ステップS68)。
ステップS68において、送信カウンタ825の値がフレームヘッダ1010のサイズ以下のとき、送信データ選択装置816は、中継ヘッダバッファ804から1ワードを送信ポート824に出力し、送信カウンタ825にインクリメントを要求し、送信データ選択装置816が中継送信状態であるときの処理を終了する(ステップS69)。
ステップS68において、送信カウンタ825の値がフレームヘッダ1010のサイズより大きいとき、送信データ選択装置816は、中継障害残りサイズカウンタ809の値が0であるか確認する(ステップS70)。
ステップS70において、送信データ選択装置816は、自装置障害残りサイズカウンタ821の値が0であるか確認する(ステップS71)。
ステップS71において、自装置障害残りサイズカウンタ821の値が0のとき、送信データ選択装置816は、送信カウンタ825の値が中継ヘッダバッファ804のフレームサイズ1012の値と異なるか確認する(ステップS72)。
ステップS72において、送信カウンタ825の値が中継ヘッダバッファ804のフレームサイズ1012の値と異なるとき、送信データ選択装置816は、中継データバッファ811から1ワードを送信ポート824に出力し、中継残りサイズカウンタ806にデクリメントを要求し、送信カウンタ825にインクリメントを要求し(ステップS73)、送信データ選択装置816が中継送信状態であるときの処理を終了する。
ステップS72において、送信カウンタ825の値が中継ヘッダバッファ804のフレームサイズ1012の値と等しいとき、送信データ選択装置816は、送信カウンタ825にクリアを要求し(ステップS74)、中継残りサイズカウンタ806の値が0であるか確認する(ステップS75)。
ステップS75において、中継残りサイズカウンタ806の値が0のとき、送信データ選択装置816は送信カウンタ825にクリアを要求し、送信待機状態に遷移し(ステップS76)、送信データ選択装置816が中継送信状態であるときの処理を終了する。
ステップS75において、中継残りサイズカウンタ806の値が0以外のとき、送信データ選択装置816は、中継分割状態に遷移し(ステップS77)、送信データ選択装置816が中継送信状態であるときの処理を終了する。
ステップS71において、自装置障害残りサイズカウンタ821の値が0でないとき、送信データ選択装置816は、中継割り込み可否判定装置815の出力を確認する(ステップS78)。
ステップS78において、中継割り込み可否判定装置815の出力が有効でないとき、送信データ選択装置816は、ステップS72から処理を実施する。
ステップS78において、中継割り込み可否判定装置815の出力が有効であるとき、送信データ選択装置816は、デリミタ出力装置823からデリミタ3030を送信ポート824に出力し、中継自装置割り込み状態に遷移し(ステップS79)、送信データ選択装置816が中継送信状態であるときの処理を終了する。
ステップS70において、中継障害残りサイズカウンタ809の値が0でないとき、送信データ選択装置816は、中継割り込み可否判定装置815の出力を確認する(ステップS80)。
ステップS80において、中継割り込み可否判定装置815の出力が無効であるとき、送信データ選択装置816は、ステップS71から処理を実施する。
ステップS80において、中継割り込み可否判定装置815の出力が有効であるとき、送信データ選択装置816は、デリミタ出力装置823からデリミタ3030を送信ポート824に出力し、中継中継割り込み状態に遷移し(ステップS81)、送信データ選択装置816が中継送信状態であるときの処理を終了する。
次に、送信データ選択装置816が中継中継状態であるときの処理(図面では、「中継中継状態時の処理」と表記する)を図34を用いて説明する。
まず、送信データ選択装置816は、中継障害残りサイズカウンタ809の値が0以上であるか確認する(ステップS83)。
ステップS83において、中継障害残りサイズカウンタ809の値が0以上であるとき、送信データ選択装置816は、中継障害バッファ812から1ワードを送信ポート824へ出力し、送信カウンタ825にインクリメントを要求し、中継障害残りサイズカウンタ809にデクリメントを要求し(ステップS84)、送信データ選択装置816が中継中継状態であるときの処理を終了する。
ステップS83において、中継障害残りサイズカウンタ809の値が0であるとき、送信データ選択装置816は、中継送信状態へ遷移し(ステップS85)、送信データ選択装置816が中継中継状態であるときの処理を終了する。
次に、送信データ選択装置816が中継自装置状態であるときの処理(図面では、「中継自装置状態時の処理」と表記する)を図34を用いて説明する。
まず、送信データ選択装置816は、自装置障害残りサイズカウンタ821の値が0以上であるか確認する(ステップS87)。
ステップS87において、自装置障害残りサイズカウンタ821の値が0以上であるとき、送信データ選択装置816は、自装置障害バッファ822から1ワードを送信ポート824へ出力し、送信カウンタ825にインクリメントを要求し、自装置障害残り送信カウンタ825にデクリメントを要求し(ステップS88)、送信データ選択装置816が中継自装置状態であるときの処理を終了する。
ステップS87において、自装置障害残りサイズカウンタ821の値が0であるとき、送信データ選択装置816は中継送信状態へ遷移し(ステップS88)、送信データ選択装置816が中継自装置状態であるときの処理を終了する。
次に、送信データ選択装置816が中継分割状態であるときの処理(図面では、「中継分割状態時の処理」と表記する)を図35を用いて説明する。
まず、送信データ選択装置816は、送信カウンタ825の値がフレームヘッダ1010のサイズより小さいか確認する(ステップS90)。
ステップS90において、送信カウンタ825の値がフレームヘッダ1010のサイズより小さいとき、送信データ選択装置816は、中継分割ヘッダ生成装置814から1ワードを送信ポート824に出力し、送信カウンタ825にインクリメントを要求し(ステップS91)、送信データ選択装置816が中継分割状態であるときの処理を終了する。
ステップS90において、送信カウンタ825の値がフレームヘッダ1010のサイズ以上であるとき、送信データ選択装置816は中継残りサイズカウンタ806の値が0より大きいか確認する(ステップS92)。
ステップS92において、中継残りサイズカウンタ806の値が0より大きいとき、送信データ選択装置816は、中継データバッファ811から1ワードを送信ポート824へ出力し、中継残りサイズカウンタ806にデクリメントを要求し、送信カウンタ825にインクリメントを要求し(ステップS93)、送信データ選択装置816が中継分割状態であるときの処理を終了する。
ステップS92において、中継残りサイズカウンタ806の値が0のとき、送信データ選択装置816は、送信カウンタ825にクリアを要求し、送信待機状態へ遷移し(ステップS94)、送信データ選択装置816が中継分割状態であるときの処理を終了する。
次に、送信データ選択装置816が中継障害状態であるときの処理(図面では、「中継障害状態時の処理」と表記する)を図36を用いて説明する。
まず、送信データ選択装置816は、送信カウンタ825の値がフレームヘッダ1010のサイズより小さいか確認する(ステップS96)。
ステップS96において、送信カウンタ825の値がフレームヘッダ1010のサイズより小さいとき、送信データ選択装置816は、中継障害ヘッダバッファ808から1ワードを送信ポート824に出力し、送信カウンタ825にデクリメントを要求し(ステップS97)、送信データ選択装置816が中継障害状態であるときの処理を終了する。
ステップS96において、送信カウンタ825の値がフレームヘッダ1010のサイズ以上であるとき、送信データ選択装置816は中継残りサイズカウンタ806の値が0より大きいか確認する(ステップS98)。
ステップS98において、中継障害残りサイズカウンタ809の値が0より大きいとき、送信データ選択装置816は、中継障害バッファ812から1ワードを送信ポート824へ出力し、中継障害残りサイズカウンタ809にデクリメントを要求し、送信カウンタ825にインクリメントを要求し(ステップS99)、送信データ選択装置816が中継障害状態であるときの処理を終了する。
ステップS98において、中継障害残り送信カウンタ825の値が0のとき、送信データ選択装置816は、送信カウンタ825にクリアを要求し、送信待機状態へ遷移し(ステップS100)、送信データ選択装置816が中継障害状態であるときの処理を終了する。
次に、送信データ選択装置816が自装置害状態であるときの処理(図面では、「自装置障害状態時の処理」と表記する)を図37を用いて説明する。
まず、送信データ選択装置816は、送信カウンタ825の値がフレームヘッダ1010のサイズより小さいか確認する(ステップS101)。
ステップS96において、送信カウンタ825の値がフレームヘッダ1010のサイズより小さいとき、送信データ選択装置816は自装置障害ヘッダバッファ820から1ワードを送信ポート824に出力し、送信カウンタ825にデクリメントを要求し(ステップS102)、送信データ選択装置816が自装置障害状態であるときの処理を終了する。
ステップS101において、送信カウンタ825の値がフレームヘッダ1010のサイズ以上であるとき、送信データ選択装置816は、自装置障害残りサイズカウンタ821の値が0より大きいか確認する(ステップS103)。
ステップS103において、自装置障害残りサイズカウンタ821の値が0より大きいとき、送信データ選択装置816は、自装置障害バッファ822から1ワードを送信ポート824へ出力し、自装置障害残りサイズカウンタ821にデクリメントを要求し、送信カウンタ825にインクリメントを要求し(ステップS104)、送信データ選択装置816が自装置障害状態であるときの処理を終了する。
ステップS105において、自装置障害残りサイズカウンタ821の値が0のとき、送信データ選択装置816は、送信カウンタ825にクリアを要求し、送信データ選択装置816は送信待機状態へ遷移し(ステップS105)、送信データ選択装置816が自装置障害状態であるときの処理を終了する。
そして、ステップS30またはステップS39またはステップS54またはステップS58またはステップS61またはステップS95またはステップS67またはステップS82またはステップS86またはステップS89またはステップS101の処理が終了したとき、外部入出力装置813が、出力処理を実施する。
この処理を図38を用いて説明する。
まず、外部入出力装置813は、自身(外部入出力装置813)が障害データおよび障害フレームヘッダ6010を出力しているか確認する(ステップS107)。
ステップS107において、外部入出力装置813が障害データおよび障害フレームヘッダ6010を出力しているとき、外部入出力装置813は、障害フレームヘッダ6010を自装置障害ヘッダバッファ820に書き込み、障害データを自装置障害バッファ822に書き込み(ステップS108)、自身(外部入出力装置813)が制御データ2020および制御フレームヘッダ2010を出力しているか確認する(ステップS109)。
ステップS107において、外部入出力装置813が障害データ及び障害フレームヘッダ6010を出力していないとき、ステップS109の処理を実施する。
ステップS109において、外部入出力装置813が制御データ2020および制御フレームヘッダ2010を出力しているとき、外部入出力装置813は、制御フレームヘッダ2010を自装置ヘッダバッファ817に書き込み、制御データ2020を自装置データバッファ819に書き込み(ステップS110)、外部入出力装置813の出力処理を終了する。
ステップS109において、外部入出力装置813が制御データ2020および制御フレームヘッダ2010を出力していないとき、外部入出力装置813の出力処理を終了する。
次に、送信データ選択装置816が受信待機状態であるときの処理(図面では、「受信待機状態時の処理」と表記する)を図39を用いて説明する。
まず、受信データ分配装置801は、受信ポート800から1ワード受信したか確認する(ステップS112)。
ステップS112において、受信データ分配装置801は、受信ポート800から1ワード受信したとき、ヘッダ受信状態へ遷移する(S113)。
ステップS112において、受信データ分配装置801は、受信ポート800から1ワード受信していないとき、受信データ分配装置801が受信待機状態であるときの処理を終了する。
以上のように、本実施の形態によっても、通信装置200が障害通知を実施した際、通信装置100は制御フレームに障害通知を割り込ませることで制御通信の周期が短いままに、障害通知の時間を短縮することができる。
以上、本実施の形態では、
他の装置とデイジーチェーンで接続され、
他の装置からフレームヘッダとフレームデータで構成されるフレームを受信し、
他の装置から受信したフレームを中継し、
他の装置へ外部入出力装置から入力されたフレームを送信し、
所定の時間間隔で他の装置と送信と受信を繰り返す通信装置を説明した。
そして、本実施の形態に係る通信装置は、
他の装置からフレームを受信し、受信フレーム振り分け装置に出力する受信ポートを有し、
受信したフレーム(以下、中継フレームと記す)について、
受信したフレームヘッダを格納する中継ヘッダバッファと、
受信したフレームデータを格納する中継データバッファと、
受信した障害を通知するフレーム(以下、障害フレームと記す)について、
受信した障害フレームヘッダを格納する中継障害ヘッダバッファと、
受信した障害フレームデータを格納する中継障害バッファを有し、
受信した中継フレームヘッダを中継ヘッダバッファに、受信した中継フレームデータを中継データバッファに振り分けて格納し、受信した障害フレームヘッダを中継障害ヘッダバッファに、受信した障害フレームデータを中継障害バッファに振り分けて格納する受信フレーム振り分け装置を有することを説明した。
また、本実施の形態に係る通信装置は、
外部入出力装置から入力されたフレーム(以下、自装置フレームと記す)について、
自装置フレームのヘッダを格納する自装置ヘッダバッファと、
自装置フレームデータを格納する自装置データバッファと、
外部入出力装置から入力された障害フレーム(以下、自装置障害フレームと記す)について、
自装置障害フレームヘッダを格納する自装置障害ヘッダバッファと、
自装置障害フレームデータを格納する自装置障害バッファを有し、
送信するデータを1ワードごとに中継ヘッダバッファまたは中継データバッファまたは中継障害ヘッダバッファまたは中継障害バッファまたは自装置ヘッダバッファまたは自装置データバッファまたは自装置障害ヘッダバッファまたは自装置障害バッファから選択し、送信ポートから他装置へ送信する送信データ選択装置を有し、
本実施の形態に係る通信装置が、
送信データ選択装置から障害データを、送信中のフレームに割り込ませて送信することを説明した。
また、本実施の形態に係る通信装置が、
送信中のフレームに割り込む障害データの先頭を示すデリミタをデリミタ出力装置より読み出して送信する送信データ選択装置を有することを説明した。
また、本実施の形態に係る通信装置が、
受信したワード数をカウントする受信カウンタの値と、
受信したフレーム内の障害データのワード数をカウントする割り込みカウンタの値と、
受信したヘッダを格納するヘッダバッファの出力と、
受信した障害データのワード数をカウントする割り込みカウンタの値と、
受信フレーム振り分け装置自身が有するデリミタ検出機能に基づき、受信したワードの格納先を切り替える受信フレーム振り分け装置を有することを説明した。
また、本実施の形態に係る通信装置が、
送信データ選択装置自身が送信中の自装置フレームのサイズと、
送信したワード数をカウントする送信カウンタの値と、障害データの送信可否を出力する自装置割り込み可否判定装置の出力に基づき、送信中の自装置フレームに障害データを割り込ませる位置を制御する送信データ選択装置を有することを説明した。
また、本実施の形態に係る通信装置が、
送信データ選択装置自身が送信中の中継フレームのサイズと送信カウンタの値と、障害データの送信可否を出力する中継割り込み可否判定装置の出力に基づき、送信中のフレームに障害データを割り込ませる位置を制御する送信データ選択装置を有することを説明した。
また、本実施の形態に係る通信装置が、
送信カウンタと、送信した自装置フレームのフレームデータのワード数をカウントする自装置残りサイズカウンタの値に基づき、送信中の自装置フレームに障害データを割り込ませたことで押し出されたフレームデータに付加するフレームヘッダ(以下、自装置分割ヘッダと記す)を出力する自装置分割ヘッダ生成装置を有することを説明した。
また、本実施の形態に係る通信装置が、
送信カウンタと、送信した中継フレームのフレームデータのワード数をカウントする中継残りサイズカウンタの値に基づき、送信中の中継フレームに障害データを割り込ませたことで押し出されたフレームデータに付加するフレームヘッダ(以下、中継分割ヘッダと記す)を出力する中継分割ヘッダ生成装置を有することを説明した。
また、本実施の形態に係る通信装置が、
自装置データバッファから送信中の自装置フレームに障害データを割り込ませたことで押し出されたフレームデータを自装置分割ヘッダに続いて送信する送信データ選択装置を有することを説明した。
また、本実施の形態に係る通信装置が、
中継データバッファから送信中の中継フレームに障害データを割り込ませたことで押し出されたフレームデータを中継分割ヘッダに続いて送信する送信データ選択装置を有することを説明した。
また、本実施の形態に係る通信装置が、
分割データを格納する再構成バッファと、
受信した分割データ数をカウントする再構成カウンタを有し、
外部装置の読み出しに応じて、分割データを再構成して障害データが割り込む前のデータを外部装置に出力する機能を有することを説明した。
なお、以上では、FAネットワークで通信を行う通信装置を例にして説明したが、これまで説明してきた方式は他の種類のネットワークで通信を行う通信装置にも適用することができる。
すなわち、これまで説明してきた方式の用途は、FAネットワークで通信を行う通信装置に限定されるものではない。
最後に、実施の形態1及び2に示した通信装置100、200、300のハードウェア構成例について説明する。
図42は、実施の形態1及び2に示す通信装置100、200、300のハードウェア資源の一例を示す図である。
なお、図42の構成は、あくまでも通信装置100、200、300のハードウェア構成の一例を示すものであり、通信装置100、200、300のハードウェア構成は図42に記載の構成に限らず、他の構成であってもよい。
図42において、通信装置100、200、300は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。
また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。
ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。
これらは、記憶装置の一例である。
実施の形態1及び2で説明した「〜バッファ」、「〜バッファ部」は、例えば、RAM914等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、通信路に接続されている。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
通信装置100、200、300の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1及び2の説明において「〜部」、「〜装置」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1及び2の説明において、「〜の判断」、「〜の設定」、「〜の比較」、「〜の解析」、「〜の制御」、「〜のセット」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置303にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置303にファイルとして記憶されてもよい。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記憶媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記憶媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1及び2の説明において「〜部」、「〜装置」として説明しているものは、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1及び2で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「通信方法」を実現することができる。
また、「〜部」、「〜装置」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記憶媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1及び2の「〜部」、「〜装置」としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の「〜部」、「〜装置」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1及び2に示す通信装置100、200、300は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」、「〜装置」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
100 通信装置、101 制御部、102 フレーム受信部、103 受信データ分配部、104 受信データ再構成部、105 データ生成部、106 送信フレーム生成部、107 フレーム送信部、110 送信用バッファ部、111 障害フレームバッファ部、112 制御フレームバッファ部、120 フレーム生成管理部、121 送信決定部、122 順序制御部、123 残りデータサイズカウント部、130 再構成用バッファ部、131 障害フレームバッファ部、132 制御フレームバッファ部、140 再構成管理部、141 データ抽出部、142 データサイズカウント部、143 データ復元部、144 制御データ用スタック、145 障害データ用スタック、200 通信装置、300 通信装置、800 受信ポート、801 受信データ分配装置、802 受信カウンタ、803 ヘッダバッファ、804 中継ヘッダバッファ、805 再構成バッファ、806 中継残りサイズカウンタ、807 再構成カウンタ、808 中継障害ヘッダバッファ、809 中継障害残りサイズカウンタ、810 割り込みカウンタ、811 中継データバッファ、812 中継障害バッファ、813 外部入出力装置、814 中継分割ヘッダ生成装置、815 中継割り込み可否判定装置、816 送信データ選択装置、817 自装置ヘッダバッファ、818 自装置残りサイズカウンタ、819 自装置データバッファ、820 自装置障害ヘッダバッファ、821 自装置障害残りサイズカウンタ、822 自装置障害バッファ、823 デリミタ出力装置、824 送信ポート、825 送信カウンタ、826 自装置割り込み可否判定装置、827 自装置分割ヘッダ生成装置。

Claims (13)

  1. フレームサイズが可変であり、フレームヘッダにそのフレームサイズが記述されている通信フレームに含ませてデータを送信する通信装置であって、
    1つの通信フレームで送信するデータを、先頭から順に送信するデータ送信部と、
    前記データ送信部がデータの送信を完了する前に特定のデータが新たに発生した場合に、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定部と、
    前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御部と、
    現在の通信フレームのフレームヘッダに記述されている現在の通信フレームのフレームサイズに基づき、現在の通信フレームで送信可能な残りのデータサイズを送信可能残りデータサイズとしてカウントする残りデータサイズカウント部とを有し、
    前記送信決定部は、
    前記未送信データ内で先頭に位置する先頭未送信データのデータ種別が、優先してデータを送信すべき優先種別であるか否かを解析し、
    前記先頭未送信データのデータ種別が優先種別でない場合であって、前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記特定のデータの前に送信されるデリミタのデータサイズとの加算値以上である場合に、前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定し、
    前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記デリミタのデータサイズとの加算値未満である場合に、前記特定のデータを後続の通信フレームで送信するよう決定し、
    前記データ送信部は、
    前記送信決定部が前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記順序制御部による送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする通信装置。
  2. 前記順序制御部は、
    前記特定のデータが前記未送信データの前に送信される結果、現在の通信フレームでは送信できない前記未送信データの少なくとも一部が、現在の通信フレームに後続する通信フレームで送信されるように制御し、
    前記データ送信部は、
    現在の通信フレームでは送信できない前記未送信データの少なくとも一部を、現在の通信フレームに後続する通信フレームで送信することを特徴とする請求項1に記載の通信装置。
  3. 前記送信決定部は、
    前記先頭未送信データのデータ種別が優先種別である場合に、前記先頭未送信データ以降の優先種別のデータ部分が送信された後に前記特定のデータを送信するよう決定し、
    前記順序制御部は、
    前記先頭未送信データ以降の優先種別のデータ部分が送信された後に前記特定のデータが送信され、前記特定のデータの送信が完了した後の送信が前記未送信データ内の優先種別でないデータ部分の先頭から開始されるように、前記特定のデータと前記未送信データの送信順序を制御し、
    前記データ送信部は、
    前記順序制御部による送信順序の制御に基づき、前記先頭未送信データ以降の優先種別のデータ部分を送信し、前記特定のデータを送信し、前記特定のデータの送信が完了した後の送信を前記未送信データ内の優先種別でないデータ部分の先頭から開始することを特徴とする請求項1又は2に記載の通信装置。
  4. 前記データ送信部は、
    前記デリミタと前記特定のデータとが送信された後の送信可能残りデータサイズ分の未送信データを現在の通信フレームで送信し、現在の通信フレームで送信されなかった未送信データを後続の通信フレームで送信することを特徴とする請求項1〜3のいずれかに記載の通信装置。
  5. 前記データ送信部は、
    前記送信決定部が前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定した場合に、前記特定のデータを現在の通信フレームでデリミタに後続して送信することを特徴とする請求項1〜4のいずれかに記載の通信装置。
  6. 前記通信装置は、更に、
    外部装置から送信されたデータを受信するデータ受信部を有し、
    前記送信決定部は、
    前記データ送信部がデータの送信を完了する前に前記データ受信部が前記外部装置から前記特定のデータを受信した場合に、前記データ受信部が前記外部装置から受信した前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項1〜5のいずれかに記載の通信装置。
  7. 前記通信装置は、更に、
    前記データ送信部から送信させるデータを生成するデータ生成部を有し、
    前記送信決定部は、
    前記データ送信部がデータの送信を完了する前に前記データ生成部が前記特定のデータを生成した場合に、前記データ生成部が生成した前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項1〜6のいずれかに記載の通信装置。
  8. 前記データ送信部は、
    外部装置から受信したデータであって、1つの通信フレームで送信するデータを、先頭から順に送信し、
    前記送信決定部は、
    前記データ送信部が、前記外部装置から受信したデータの送信を完了する前に、前記特定のデータが発生した場合に、前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項1〜7のいずれかに記載の通信装置。
  9. 前記データ送信部は、
    前記通信装置内で生成されたデータであって、1つの通信フレームで送信するデータを、先頭から順に送信し、
    前記送信決定部は、
    前記データ送信部が、前記通信装置内で生成されたデータの送信を完了する前に、前記特定のデータが発生した場合に、前記特定のデータを前記未送信データの前に送信するか否かを決定することを特徴とする請求項1〜8のいずれかに記載の通信装置。
  10. 前記通信装置は、更に、
    所定の分割前データから分割された複数の分割データを、2つ以上の通信フレームにおいて受信するデータ受信部と、
    通信フレームごとに、前記データ受信部が受信したデータの中から前記分割前データの分割データを抽出するデータ抽出部と、
    前記データ抽出部により抽出された分割データを格納する分割データ格納部と、
    前記分割データ格納部に格納されている分割データのデータサイズの累積値をカウントするデータサイズカウント部と、
    前記分割前データの総データサイズを導出するとともに、前記データサイズカウント部がカウントしたデータサイズの累積値が、導出した前記分割前データの総データサイズに達した際に、前記分割データ格納部に格納されている分割データを用いて、前記分割前データを復元するデータ復元部とを有することを特徴とする請求項1〜9のいずれかに記載の通信装置。
  11. 前記送信決定部は、
    前記特定のデータとして、前記通信装置及び前記通信装置が所属するネットワーク内の少なくともいずれかで障害が検知されたことを通知する障害データが、前記データ送信部がデータの送信を完了する前に発生した場合に、前記障害データを前記未送信データの前に送信するか否かを決定することを特徴とする請求項1〜10のいずれかに記載の通信装置。
  12. コンピュータが、フレームサイズが可変であり、フレームヘッダにそのフレームサイズが記述されている通信フレームに含ませてデータを送信する通信方法であって、
    前記コンピュータが、1つの通信フレームで送信するデータを、先頭から順に送信するデータ送信ステップと、
    前記データ送信ステップによるデータの送信が完了する前に特定のデータが新たに発生した場合に、前記コンピュータが、前記特定のデータの発生時点で未送信の未送信データのデータ種別を解析し、前記特定のデータを前記未送信データの前に送信するか否かを決定する送信決定ステップと、
    前記送信決定ステップで前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記コンピュータが、前記特定のデータが前記未送信データの前に送信され、前記特定のデータの送信が完了した後の送信が前記未送信データから開始されるように、前記特定のデータと前記未送信データの送信順序を制御する順序制御ステップと、
    前記コンピュータが、現在の通信フレームのフレームヘッダに記述されている現在の通信フレームのフレームサイズに基づき、現在の通信フレームで送信可能な残りのデータサイズを送信可能残りデータサイズとしてカウントする残りデータサイズカウントステップとを有し、
    前記送信決定ステップにおいて、
    前記コンピュータは、前記未送信データ内で先頭に位置する先頭未送信データのデータ種別が、優先してデータを送信すべき優先種別であるか否かを解析し、
    前記先頭未送信データのデータ種別が優先種別でない場合であって、前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記特定のデータの前に送信されるデリミタのデータサイズとの加算値以上である場合に、前記コンピュータは、前記特定のデータを現在の通信フレームで前記未送信データの前に送信するよう決定し、
    前記特定のデータの発生時点での送信可能残りデータサイズが、前記特定のデータのデータサイズと、前記デリミタのデータサイズとの加算値未満である場合に、前記コンピュータは、前記特定のデータを後続の通信フレームで送信するよう決定し、
    前記データ送信ステップにおいて、
    前記送信決定ステップで前記特定のデータを前記未送信データの前に送信するよう決定した場合に、前記コンピュータは、前記順序制御ステップによる送信順序の制御に基づき、前記特定のデータを前記未送信データの前に送信し、前記特定のデータの送信が完了した後の送信を前記未送信データから開始することを特徴とする通信方法。
  13. コンピュータを、請求項1に記載された通信装置として機能させることを特徴とするプログラム。
JP2012539098A 2012-02-24 2012-02-24 通信装置及び通信方法及びプログラム Expired - Fee Related JP5183829B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/054556 WO2013125027A1 (ja) 2012-02-24 2012-02-24 通信装置及び通信方法及びプログラム

Publications (2)

Publication Number Publication Date
JP5183829B1 true JP5183829B1 (ja) 2013-04-17
JPWO2013125027A1 JPWO2013125027A1 (ja) 2015-07-30

Family

ID=48481383

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012539098A Expired - Fee Related JP5183829B1 (ja) 2012-02-24 2012-02-24 通信装置及び通信方法及びプログラム

Country Status (4)

Country Link
JP (1) JP5183829B1 (ja)
CN (1) CN104137487B (ja)
TW (1) TWI498697B (ja)
WO (1) WO2013125027A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6099595B2 (ja) * 2014-04-22 2017-03-22 本田技研工業株式会社 車内通信システム
JP6291516B2 (ja) * 2016-03-18 2018-03-14 本田技研工業株式会社 リング型ネットワークを用いた通信システム
JP7575955B2 (ja) 2021-01-13 2024-10-30 キヤノン株式会社 制御装置、システム、リソグラフィ装置、物品の製造方法、制御方法及びプログラム

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58173932A (ja) * 1982-04-05 1983-10-12 Oki Electric Ind Co Ltd パケツト伝送方式
JPS6120454A (ja) * 1984-07-06 1986-01-29 Nec Corp フレ−ム信号伝送装置
JPS6468044A (en) * 1987-09-09 1989-03-14 Hitachi Ltd Message restoring system
JPH09261230A (ja) * 1996-03-19 1997-10-03 Oki Electric Ind Co Ltd セル伝送方法
JP2002009832A (ja) * 2000-06-21 2002-01-11 Fujitsu Ltd ネットワーク中継装置およびパケット結合方法
JP2002261786A (ja) * 2001-02-27 2002-09-13 Nec Corp マルチアクセス通信システム及びデータ送受信装置
JP2003069603A (ja) * 2001-08-27 2003-03-07 Fujikura Ltd パケット通信制御装置
JP2005159792A (ja) * 2003-11-27 2005-06-16 Yokogawa Electric Corp 通信システム及び通信方法
JP2006148505A (ja) * 2004-11-19 2006-06-08 Mitsubishi Electric Corp 中継装置及び中継方法及び中継プログラム
JP2008236266A (ja) * 2007-03-19 2008-10-02 Fujitsu Ltd 伝送装置、保守用フレーム処理方法および伝送プログラム
JP2010251911A (ja) * 2009-04-13 2010-11-04 Shimadzu System Solutions Co Ltd ノード間データ応答システム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003017111A1 (en) * 2001-07-23 2003-02-27 Cognis Corporation Extensible modular communication executive with active message queue and intelligent message pre-validation
US7170876B2 (en) * 2002-04-30 2007-01-30 Qualcomm, Inc. Outer-loop scheduling design for communication systems with channel quality feedback mechanisms
KR100575989B1 (ko) * 2004-04-08 2006-05-02 삼성전자주식회사 동기화 이더넷에서의 비동기 데이터의 분할 전송 방법 및그 방법에 사용되는 데이터 구조
JP2006013643A (ja) * 2004-06-23 2006-01-12 Nec Infrontia Corp 通信プロトコル変換クレードル及びそれに用いるアドレス変換方法並びにそのプログラム
TWI299450B (en) * 2005-03-04 2008-08-01 Super Talent Electronics Inc A multi mode host and device having multiple communication protocols, a single mode device, and methods of initializing the host or device using an electrical receptacle or plug in order to perform data communications
TWI330789B (en) * 2007-01-30 2010-09-21 Holtek Semiconductor Inc Two-wire seriel communication interface device and method using handshaking
CN101562751B (zh) * 2008-12-31 2012-05-23 北京创毅视讯科技有限公司 一种移动多媒体广播系统中的多业务复用方法和装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58173932A (ja) * 1982-04-05 1983-10-12 Oki Electric Ind Co Ltd パケツト伝送方式
JPS6120454A (ja) * 1984-07-06 1986-01-29 Nec Corp フレ−ム信号伝送装置
JPS6468044A (en) * 1987-09-09 1989-03-14 Hitachi Ltd Message restoring system
JPH09261230A (ja) * 1996-03-19 1997-10-03 Oki Electric Ind Co Ltd セル伝送方法
JP2002009832A (ja) * 2000-06-21 2002-01-11 Fujitsu Ltd ネットワーク中継装置およびパケット結合方法
JP2002261786A (ja) * 2001-02-27 2002-09-13 Nec Corp マルチアクセス通信システム及びデータ送受信装置
JP2003069603A (ja) * 2001-08-27 2003-03-07 Fujikura Ltd パケット通信制御装置
JP2005159792A (ja) * 2003-11-27 2005-06-16 Yokogawa Electric Corp 通信システム及び通信方法
JP2006148505A (ja) * 2004-11-19 2006-06-08 Mitsubishi Electric Corp 中継装置及び中継方法及び中継プログラム
JP2008236266A (ja) * 2007-03-19 2008-10-02 Fujitsu Ltd 伝送装置、保守用フレーム処理方法および伝送プログラム
JP2010251911A (ja) * 2009-04-13 2010-11-04 Shimadzu System Solutions Co Ltd ノード間データ応答システム

Also Published As

Publication number Publication date
TWI498697B (zh) 2015-09-01
TW201335727A (zh) 2013-09-01
WO2013125027A1 (ja) 2013-08-29
CN104137487A (zh) 2014-11-05
CN104137487B (zh) 2017-09-01
JPWO2013125027A1 (ja) 2015-07-30

Similar Documents

Publication Publication Date Title
JP6600518B2 (ja) バスシステム
JP5549574B2 (ja) 並列計算機システム、同期装置、並列計算機システムの制御方法
CN110967969B (zh) 高可用性工业自动化系统及通过该系统传送信息的方法
JP2008271017A (ja) ファブリックスイッチ、バッファ容量制御方法、およびバッファ容量制御プログラム
EP3026556B1 (en) Event generation management for an industrial controller
JP5183829B1 (ja) 通信装置及び通信方法及びプログラム
US20090010157A1 (en) Flow control in a variable latency system
JP5125430B2 (ja) 情報処理装置及び情報処理方法
WO2012056930A1 (ja) プログラマブルコントローラ
US10027747B2 (en) Terminal communication apparatus, and distributed control system
CN105339906A (zh) 控制对永久存储设备的数据写入的方法
US6778543B1 (en) Method and device for controlling the synchronization between two serial communication buses of a network
JP4990250B2 (ja) 割込制御装置、割込制御システム、割込制御方法および割込制御プログラム
US7336657B2 (en) Inter-nodal data transfer system and data transfer apparatus
JP7169097B2 (ja) ネットワーク異常検出方法およびネットワークシステム
JP6112205B2 (ja) 情報処理システム、装置、方法及びプログラム
JP6070848B2 (ja) 情報処理装置,データ転送装置,データ転送方法,および制御装置
KR100737904B1 (ko) 마스터/슬레이브 디바이스간의 인터페이스 장치 및 그 방법
US20180309663A1 (en) Information processing apparatus, information processing system, and information processing method
JP2009130614A (ja) 通信制御装置、通信制御方法および通信制御プログラム
JP4900268B2 (ja) アプリケーション通信制御装置及びプログラム
JP2013110586A (ja) 通信システム、通信装置及び通信方法
JP5414909B2 (ja) プログラマブルコントローラ
JP2005250543A (ja) データ受信装置及びデータ送信装置及びデータ受信方法及びデータ送信方法及びプログラム
CN118158022A (zh) 一种多种总线通讯方法、港机边缘计算设备及相关设备

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130115

R150 Certificate of patent or registration of utility model

Ref document number: 5183829

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160125

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees