次に、本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1は本発明の第1の実施形態の送受信システムの構成を示す図である。
本実施形態の送受信システムは、図1に示されるように、パーソナルコンピュータ等の端末装置10と、プリンタ等の画像形成装置20とが通信ケーブル30により接続された構成となっている。
端末装置10は、印刷データを生成して、通信ケーブル30経由にて生成した印刷データを画像形成装置20に対して送信する。画像形成装置20は、端末装置10から送信された印刷データを受け付けて、印刷データに応じた画像を用紙上に出力する。
次に、図1に示した送受信システムの詳細な構成を図2に示す。なお、図2では、端末装置10において印刷データを生成するための構成や、画像形成装置20において印刷データに基づく画像を印刷用紙等に出力するための構成については省略して示している。
本実施形態の送受信システムでは、端末装置10内に送信装置100が設けられ、画像形成装置20内に受信装置200が設けられている。そのため、この送信装置100と受信装置200とにより送受信システムが構成される。
そして、本実施形態の送受信システムでは、端末装置10と画像形成装置20は相互にデータの送受信を行うことが可能な構成となっているが、端末装置10から画像形成装置20に伝送するデータ量は、画像形成装置20から端末装置10に送信するデータ量と比較して大きなものとなっている。
そのため、送信装置100から受信装置200にデータを送信するための伝送路として4つの通信チャネル設けられているのに対して、受信装置200から送信装置100にデータを送信するための伝送路は1つの通信チャネルしか設けられていない。
このように、本実施形態の送受信システムでは、データ転送量が非対称の伝送システムとなっているのは、端末装置10から画像形成装置20には、大量の画像データを送信する必要があるのに対して、画像形成装置20から端末装置10に対しては各種の制御データ等の少ないデータのみを送信できれば良いからである。
このような理由により、本実施形態の送信装置100は、パケットデータを受信装置200に送信するための4つの送信ポートと、受信装置200からのパケットデータを受信するための少なくとも1つの受信ポートを備えている。ここで、パケットデータとは、転送しようとするデータをパケットと呼ばれる伝送単位により分割したものを意味する。
また、本実施形態の受信装置200は、パケットデータを送信装置100に送信するための少なくとも1つの送信ポートと、送信装置100からのパケットデータを受信するための複数の受信ポートを備えている。
そして、この送受信システムでは、送信すべきデータは、所定量毎のデータに制御情報を付加したパケットデータに変換されて送信装置100と受信装置200との間を送受信されるようになっている。
端末装置10内の送信装置100では、CPU109の制御に基づいて、メモリ108に一旦格納されたデータをパケットデータに変換した後に、4つの通信チャネルL0〜L3を介して画像形成装置20内の受信装置200に送信している。また、送信装置100は、1つの通信チャネルL4を介して、受信装置200からのパケットデータを受信している。
そして、送信装置100は、図2に示されるように、入出力制御部101と、パケット制御部102と、リンク制御部103と、4チャネル分のビット変換部104a〜104d、ビット逆変換部105、4チャネル分のパラレル/シリアル変換部(P/S)106a〜106d、シリアル/パラレル変換部(S/P)107を備えている。
入出力制御部101は、端末装置10内のメモリ108から画像データ等の、画像形成装置20に送信するためのデータを取り出してパケット制御部102に転送する。また、入出力制御部101は、パケット制御部102から渡されたデータを端末装置10のCPU等の内部のデータ処理部に転送する。
パケット制御部102は、入出力制御部101を経由して伝送されてきた画像データ等のデータをパケットデータに変換し、インターリーブ制御により4チャンネルに順次振り分けてパケットデータをリンク制御部103に転送する。また、このパケット制御部102はリンク制御部103を経由して伝送されてきたパケットデータから伝送データを取り出して、その取り出した伝送データを入出力制御部101に転送する。
リンク制御部103は、通常は送信装置100と受信装置200との間の通信を確立し、確立した通信を維持するための符号データを送受信している。リンク制御部103は、パケット制御部102からパケットデータが送られてくると、そのパケットデータを、4つのビット変換部104a〜104dのうちの、パケット制御部102により順次振り分けられたいずれかのビット変換部に転送する。またこのリンク制御部103は、ビット逆変換部105から転送されてきたパケットデータをパケット制御部102に転送する。
ビット変換部104a〜104dは、パケット制御部102において生成され、リンク制御部103を経由して入力されてきたパケットデータを通信用のビット配列のパケットデータに変換して、4つのパラレル/シリアル変換部106a〜106dのうちの対応するパラレル/シリアル変換部に転送する。
また、ビット逆変換部105は、シリアル/パラレル変換部107から渡された通信用のビット配列を持ったパケットを内部処理形式のビット配列のパケットに変換してリンク制御部103に転送する。
さらに、パラレル/シリアル変換部106a〜106dは対応するビット変換部104a〜104dから渡されたパラレル形式のパケットデータをシリアル形式のパケットデータに変換し、対応する4つの送信ポートから、受信装置200に向けて通信ケーブル30経由にて送信する。
さらに、シリアル/パラレル変換部107は、受信装置200から通信ケーブル30を経由して送信され受信ポートから入力されてきたシリアル形式のパケットデータをパラレル形式のパケットデータに変換してビット逆変換部105に転送する。
通信ケーブル30は、送信装置100の4つの通信チャンネルL0〜L3の送信ポートのそれぞれと、受信装置200の4つの通信チャンネルL0〜L3の受信ポートのそれぞれを1対1で接続するとともに、送信装置100の1つの通信チャネルL4の受信ポートと受信装置200の1つの通信チャネルL4の送信ポートとを接続している。
画像形成装置20内の受信装置200は、送信チャンネルの数と受信チャンネルの数が送信装置100とは逆になっている点を除き、送受信装置100とほぼ同一の構成を有する。したがって、ここでは、上記の送信装置100の説明を踏まえ、簡略に説明する。
画像形成装置20内の受信装置200では、CPU209の制御に基づいて、4つの通信チャネルL0〜L3を介して端末装置10内の送信装置100から送信されてきたパケットデータを転送データに変換した後に、メモリ208に格納している。また、受信装置200は、1つの通信チャネルL4を介して、送信装置100に対してパケットデータを送信している。
そして、受信装置200は、図2に示されるように、入出力制御部201と、パケット制御部202と、リンク制御部203と、4チャネル分のビット逆変換部204a〜204d、ビット変換部205、4チャネル分のシリアル/パラレル変換部(S/P)206a〜206dと、パラレル/シリアル変換部(P/S)207を備えている。
送信装置100の4つの通信チャネルL0〜L3の各送信ポートから通信ケーブル30を経由して送信されてきたパケットデータは各受信ポートから入力されてシリアル/パラレル変換部206a〜206dでパラレル形式のパケットデータに変換され、さらに各ビット逆変換部204a〜204dで通信用のビット配列から内部処理形式のビット配列のパケットデータに逆変換される。ビット逆変換部204a〜204dで逆変換されたパケットデータはリンク制御部203を経由してパケット制御部202に転送される。
リンク制御部203は、送信装置100のリンク制御部103と協同して、送信装置100と受信装置200との間の通信を確立し、確立した通信を維持するための符号データの送受信を行なう役割を担っている。このリンク制御部203は、通常は通信維持用の符号データの送受信を行っているが、ビット逆変換部204a〜204dからのパケットデータをパケット制御部202に受け渡す役割も担っている。
パケット制御部202は、送信装置100のパケット制御部102におけるインターリーブ制御により4チャンネルに振り分けられて伝送されてきた4チャンネル分のパケットデータを順次1つの経路に集める役割と、それらのパケットデータから転送データを取り出して入出力制御部201に転送する役割とを担っている。
入出力制御部201は、パケット制御部202から伝えられた転送データを画像形成装置20内のメモリ208に書き込む。画像形成装置20は、このメモリ208に書き込まれたデータを読み出してそのデータに従って動作して印刷用紙等の記録媒体上に画像を出力する。
また、画像形成装置20は、端末装置10に向けて送信すべきデータがあるときは、そのデータを入出力制御部201に転送する。入出力制御部201は、転送されてきたデータを読み出してパケット制御部202に転送する。パケット制御部202は、そのデータをパケットデータに変換してリンク制御部203に転送する。リンク制御部203は、パケット制御部202から転送されたパケットデータをビット変換部205に転送する。ビット変換部205は、転送されてきたパケットデータを通信用のビット配列を持ったパケットデータに変換してパラレル/シリアル変換部207に転送する。パラレル/シリアル変換部207は、そのパケットデータをシリアル形式のパケットデータに変換し通信チャネルL4の送信ポートから送信装置100に向けて通信ケーブル30経由で送信する。このパケットデータは、送信装置100の受信ポートに入力される。その後受信されたパケットデータは上述したような経路により処理される。
次に、図2に示した送信装置100のパケット制御部102および受信装置200のパケット制御部202の構成を図3〜図6のブロック図を参照して説明する。
図3および図4は、それぞれ、送信装置100から受信装置200に対してパケットデータを送信する際の、パケット制御部102およびパケット制御部202の動作を説明するためのブロック図である。
また、図5および図6は、それぞれ、受信装置200から送信装置100に対してパケットデータを送信する際の、パケット制御部202およびパケット制御部102の動作を説明するためのブロック図である。
なお、送信装置100と受信装置200との間で伝送されるパケットデータには、様々な種類のパケットデータが存在する。このパケットデータの種類としては、通常パケットデータ(以下通常パケットと略す。)と、ループバックパケット(以下ループバックパケットと略す。)が存在する。
通常パケットは、画像データ等のデータを送信装置100から受信装置200に伝送したり、受信装置200から送信装置100に各種データを伝送するためのパケットデータである。ただし、この通常パケットは、画像データのみでなく、画像データの解像度、カラー/モノクロの別、プリント出力に用いるべき用紙のサイズ、その他様々な、画像の出力に必要なデータを送信するためのパケットデータが含まれる。ここでは、それらを区別して記述する必要はなく、それら様々な種類のパケットデータを総称して「通常パケット」と称している。
また、ループバックパケットは、受信したときに送信元の装置に返信されるパケットデータである。例えば、送信装置100から受信装置200に対してループバックパケットを送信した場合、このループバックパケットを受信した受信装置200では、送信元の送信装置100に対して受信したループバックパケットを返信するように設定されている。また、同様に、受信装置200から送信装置100に対してループバックパケットを送信した場合、このループバックパケットを受信した送信装置100では、送信元の受信装置200に対して受信したループバックパケットを返信するように設定されている。
このループバックパケットは、伝送路の確認のために用いられるパケットデータであり、例えば端末装置10では、上記のように画像形成装置20を経由して返信されてきたループバックパケットのデータを調べることにより、そのループバックパケットを送信したチャンネルの通信性能の良否を判定している。
先ず、送信装置100から受信装置200に対してパケットデータを送信する際のパケット制御部102、202の動作について説明する。
パケット制御部102は、図3に示されるように、ラインバッファ31と、パケット生成部32と、インターリーブ送信制御部33と、4つの通信チャネルL0〜L3にそれぞれ対応した送信バッファ34a〜34dと、1つの通信チャネルL4に対応した受信バッファ35と、データ取得部36とを備えている。
端末装置10から画像形成装置20に送信される、画像データを始めとする通常のデータは、一旦メモリ108に格納される。このメモリ108に格納されたデータは、入出力制御部101により取り出されてラインバッファ31に移される。このラインバッファ31内のデータはパケット生成部32に渡され、パケット生成部32ではそのデータを埋め込んだパケットデータ(通常パケット)を生成する。つまり、パケット生成部32は、入力されたデータに基づいて、そのデータを送信するためのパケットデータを生成する。この生成されたパケットデータは、インターリーブ送信制御部33により4つの通信チャンネルL0〜L3のうちの次のパケット送信を担う通信チャンネルに割り当てられて、4つの送信バッファ34a〜34dのうちの対応する送信バッファに格納される。
つまり、インターリーブ送信制御部33は、パケット生成部32により生成された複数のパケットデータを、4つの送信ポート(送信部)に対して順次割り当てて送信するよう制御する。
そして送信バッファに格納されたパケットは、リンク制御部103を経由し、さらに図2に示したビット変換部104a〜104dやパラレル/シリアル変換部106a〜106dを経由して受信装置200に向けて送信される。
ループバックパケットを受信装置200に送信する場合には、端末装置10のCPU109からパケット制御部102のパケット生成部32に対して、ループバックデータおよびループバック送信チャンネル、ループバック送信タイミング等の各種ループバックパケット生成指示が入力される。
パケット生成部32では、このループバックパケット生成指示に基づいて、指示されたループバックデータを格納したループバックパケットを生成する。パケット生成部32において生成されたループバックパケットは、上記で説明した通常パケットと同様にインターリーブ送信制御部33に転送されて受信装置200に対して送信される。
また、パケット制御部202は、図4に示されるように、4つの通信チャネルL0〜L3にそれぞれ対応した受信バッファ41a〜41dと、インターリーブ受信制御部43と、データ取得部44と、パケット生成部45と、1つの通信チャネルL4に対応した送信バッファ42とを備えている。
送信装置100から各チャンネルを通って送信されてきたパケットデータは、受信バッファ41a〜41dのうちの送信されてきたチャンネルに対応する受信バッファに一旦格納されてインターリーブ受信制御部43に転送される。インターリーブ受信制御部43は、それら各チャンネルのパケットデータを一つの経路にまとめてデータ取得部44に転送する。
つまり、インターリーブ受信制御部43は、4つの受信ポート(受信部)を介して送信されてきたパケットデータを、この4つの受信ポートから順次取り込むことにより受信するよう制御する。
データ取得部44では、そのパケットの種類が判定され、通常パケットである場合には、その通常パケット中のデータが取り出されて、入出力制御部201を介して画像形成装置20内のメモリ208に書き込まれる。画像形成装置20はこのメモリ208に書き込まれたデータを読み出して、そのデータの内容に従った動作を実行する。
一方、データ取得部44は、転送されてきたパケットデータがループバックパケットであった場合には、そのループバックパケットから取り出したループバックデータをパケット生成部45に転送する。すると、パケット生成部45は、そのループバックデータを埋め込んだループバックパケットを再生して送信バッファ42に書き込む。この送信バッファ42内のループバックパケットはリンク制御部203を経由し、さらに図2に示したビット変換部205およびパラレル/シリアル変換部207を経由して送信装置100に向けて送信される。
また画像形成装置20から端末装置10に送信される、ループバックデータ以外の転送データは、入出力制御部201を介してパケット生成部45に送られて、パケット生成部45によりその転送データが埋め込まれた通常パケットが生成される。つまり、パケット生成部45は、入力されたデータに基づいて、そのデータを送信するためのパケットデータを生成する。この生成された通常パケットは、ループバックパケットと同様に、送信バッファ42に書き込まれ、送信装置100に向けて送信される。
次に、受信装置200から送信装置100に対してループバックパケットを送信する際のパケット制御部102、202の動作について図5、図6を参照して説明する。
画像形成装置20から端末装置10にループバックパケットを送信する場合には、図5に示されるように、画像形成装置20のCPU209からパケット制御部202のパケット生成部45に対して、ループバックデータおよびループバック送信チャンネル、ループバック送信タイミング等の各種ループバックパケット生成指示が入力される。
パケット生成部45では、このループバックパケット生成指示に基づいて、指示されたループバックデータを格納したループバックパケットを生成する。パケット生成部45において生成されたループバックパケットは、上記で説明した通常パケットと同様に送信装置100に対して送信される。
そして、図6に示されるように、送信装置100では、受信装置200から通信チャネルL4を介して送信されてきたパケットデータは、受信バッファ35に一旦格納されてデータ取得部36に転送される。データ取得部36では、そのパケットの種類が判定され、通常パケットである場合には、その通常パケット中のデータが取り出されて、入出力制御部101を介して端末装置10内に転送される。
一方、データ取得部36は、転送されてきたパケットデータがループバックパケットであった場合には、そのループバックパケットから取り出したループバックデータをパケット生成部32に転送する。すると、パケット生成部32は、そのループバックデータを埋め込んだループバックパケットを再生して、インターリーブ送信制御部33を介して送信バッファ34a〜34dのうちのいずれかの送信バッファに書き込む。この送信バッファ内のループバックパケットはリンク制御部103を経由し、さらに図2に示したビット変換部104a〜104dおよびパラレル/シリアル変換部106a〜106dを経由して受信装置200に向けて送信される。
次に、図7を参照して、送信装置100と受信装置200との間のパケットデータの送受信動作を説明する。図7は、送信装置100と受信装置200との間のパケットデータのインターリーブ動作を模式的に示す図である。
図7では、送信装置100のパケット生成部32により生成された通常パケットおよびループバックパケット等のパケットデータは、4つの通信チャネルL0〜L3に順次割り当てられて送信される。
そして、図7中のL0〜L3バッファは、受信装置200内のパケット制御部202における受信バッファ41a〜41dに相当し、送信装置100から通信チャネルL0〜L3を経由して送信されてきたパケットデータをそれぞれ格納する。そして、受信装置200では、データ取得部44がインターリーブ受信制御部43の動作により、L0〜L3バッファに格納されたパケットデータを順次取り出すような動作が行われる。
また、図7中のL4バッファは、送信装置100内のパケット制御部102における受信バッファ35に相当し、受信装置200から通信チャネルL4を経由して送信されてきたパケットデータを格納する。
以下の説明では、図7に示した模式図を用いて送信装置100と受信装置200との間のデータ伝送の動作を説明する。
先ず図8〜図10を参照して、送信装置100から受信装置200に対して通常パケットを転送する際の動作について説明する。以下の説明では、通常パケットpkt1、pkt2、pkt3、・・・・という順番で送信装置100から受信装置200に対して通常パケットを送信するものとして説明を行う。
また、送信装置100および受信装置200では、パケットデータを割り当てる通信チャネルとして、通信チャネルL0から順次切り替えを開始するものとして説明する。
ここで、図8(A)に示すように通常パケットpkt1がパケット生成部32により生成されると、図8(B)に示すように、この通常パケットpkt1は通信チャネルL0を経由して受信装置200に送信される。
そして、図8(C)に示すように、同様にして通常pkt2は、通信チャネルL1を経由して受信装置200に送信され、通常パケットpkt1はL0バッファに格納される。
すると、図9(A)に示すように、LOバッファのパケットpkt1はデータ取得部44により取り出され、通常パケットpkt2はL1バッファに格納され、通常パケットpkt3は通信チャネルL2を経由して受信装置200に送信される。
次に、図9(B)に示すように、データ取得部44は、パケットデータを取り出すバッファをL0バッファからL1バッファに切替えるため、L1バッファのパケットpkt2がデータ取得部44により取り出される。
以降同様の制御が行われることにより、通常パケットpkt3、pkt4、pkt5も順次通信チャネルL2、L3、L0を介して受信装置200に送信され、L2バッファ、L3バッファ、L0バッファに格納された後にデータ取得部44により取得される(図9(C)、図10(A)、図10(B))。
上記のような処理が行われることにより、図10(C)に示されるように、受信装置200では、通常パケットpkt1、pkt2、pkt3、pkt4、pkt5というように、送信装置100で送信された順序のまま受信されることになる。
次に、図11、図12を参照して、送信装置100から受信装置200に対して通常パケットを転送した際に、バーストエラーが発生した場合の送受信動作について説明する。
先ず、図11(A)に示すように、通常パケットpkt1がL0バッファに格納され、通常パケットpkt2が通信チャネルL1を経由して伝送されている最中にバーストエラーが発生して消失してしまい、通常パケットpkt2が受信装置200により正常に受信されなかったものとする。
すると、図11(B)に示すように、データ取得部44は、L0バッファから通常パケットpkt1を取り出した後に、L1バッファに次のパケットデータが格納されるのを待ち続けることになる。
しかし、図11(C)、図12(A)に示されるように、L1バッファに格納されるはずだった通常パケットpkt2が消失してしまっているため、L1バッファにパケットデータが格納される前に、L2バッファ、L3バッファ、L0バッファにそれぞれ通常パケットpkt3、pkt4、pkt5が格納されることになる。
そして、図12(B)に示されるように、L1バッファに通常パケットpkt6が格納されると、データ取得部44は、L1バッファから通常パケットpkt6を取り出す。
その後、図12(C)に示されるように、データ取得部44は、L2バッファ、L3バッファ、L0バッファから順次、通常パケットpkt3、pkt4、pkt5を取り出すため、受信装置200では、受信した通常パケットの順番が、pkt1、pkt6、pkt3、pkt4、pkt5、・・・となりインターリーブエラーが発生する。
このインターリーブエラーとは、送信装置100と受信装置200との間でパケットデータの伝送に使用する通信チャネルの同期がずれてしまうエラーである。このインターリーブエラーが発生すると、送信装置100と受信装置200との間では正常なパケットデータの送受信が行えなくなってしまう。
次に、ループバックパケットを送信装置100から受信装置200に送信した場合の送受信動作を図13、図14を参照して説明する。
先ず、最初の初期状態では、図13(A)に示すように、パケット生成部32において生成されたパケットデータは通信チャネルL0に送信され、データ取得部44は、通信チャネルL0からのパケットデータを取り出すように設定されているものとして説明する。
この図13(A)に示した状態において、パケット生成部32においてループバックパケットLP1(以降LP1と略す。)が生成されたものとして説明する。
すると、図13(B)に示すように、生成されたLP1は通信チャネルL0を介して受信装置200に送信され、図13(C)に示すようにL0バッファに格納される。
すると、図14(A)に示すように、データ取得部44は、L0バッファに格納されたLP1を取得する。
ここで、LP1はループバックパケットであるため、データ取得部44は、図14(B)に示すように、パケット生成部45において新たなループバックパケットを再生した後に、再生したLP1を通信チャネルL4を経由して送信装置100に返信する。
その結果、図14(C)に示されるように、LP1は送信装置100のL4バッファに格納される。
次に、ループバックパケットを受信装置200から送信装置100に送信した場合の送受信動作を図15、図16を参照して説明する。
先ず、最初の初期状態では、図15(A)に示すように、パケット生成部32において生成されたパケットデータは通信チャネルL0に送信され、データ取得部44は、通信チャネルL0からのパケットデータを取り出すように設定されているものとして説明する。
この図15(A)に示した状態において、受信装置200のパケット生成部45においてループバックパケットLP1(以降LP1と略す。)が生成されると、図15(B)に示すように、生成されたLP1は通信チャネルL4を介して送信装置100に送信されてL4バッファに格納される。
すると、図15(C)に示すように、送信装置100内のデータ取得部44は、LP1はループバックパケットであるため、L4バッファに格納されたLP1を取得してパケット生成部32に転送する。
ここで、パケット生成部32は、図16(A)に示すように、データ取得部44から転送されてきたLP1に基づいて新たなループバックパケットLP1を再生した後に、再生したLP1を通信チャネルL0を経由して受信装置200に返信する。
その結果、図16(B)に示されるようにLP1は受信装置200のL0バッファに格納され、図16(C)に示すようにデータ取得部44により取得される。
次に、本実施形態の送受信システムにおいて行われるインターリーブエラーが発生した場合のリカバリ処理について図面を参照して詳細に説明する。なお、本発明の第1の実施形態では、送信装置100側においてリカバリ処理が実行される
図17は、本実施形態の送受信システムにおいて行われるリカバリ処理の動作を説明するためのシーケンスチャートである。
先ず、受信装置200では、受信したパケットデータの受信順序が正常でないことを検出することにより、送信装置100と受信装置200との間でパケットデータの伝送に使用する通信チャネルの同期がずれてしまうインターリーブエラーが検出される(ステップS101)。
すると、受信装置200は、送信装置100に対して転送する送信リクエストを停止する(ステップS102)。
この送信リクエストとは、受信装置200が送信装置100に対して、例えば1ライン分等の所定量の画像データの転送を要求するためのリクエストである。送信装置100では、受信装置200からの送信リクエストを受け取ることにより、画像データ等の伝送データをパケットデータに変換して受信装置200に送信している。
そのため、受信装置200において送信リクエストの転送を停止することにより、送信装置100から受信装置200に対するデータの転送は停止されることになる。
その後、受信装置200は、送信装置100に対してインターリーブエラーが発生したことを通知する(ステップS103)。
すると、送信装置100では、発生したインターリーブエラーを解消するためのリカバリ処理を実行する(ステップS104)。このリカバリ処理の詳細については後述する。
そして、送信装置100は、リカバリ処理が完了すると、受信装置200に対してリカバリ処理の完了を通知する(ステップS105)。
受信装置200では、送信装置100からのリカバリ処理の完了通知を受け取ることにより、送信リクエストを再開する(ステップS106)。その結果、送信装置100と受信装置200との間では、パケットデータの送受信が再開されることになる。
次に、上記で説明したインターリーブエラーを解消するためのリカバリ処理の詳細を図面を参照して詳細に説明する。
本実施形態におけるインターリーブ送信制御部33は、インターリーブエラーが発生して受信装置200からエラー発生が通知された場合、データ転送を中止して、4つの送信ポート数分のループバックパケットを4つの送信ポートに対して送信順序が分かる状態で順次割り当てて送信する。そして、インターリーブ送信制御部33は、受信装置200から返信されてきた4つのループバックパケットの受信順序に応じて、データ転送の再開の際にパケットデータを割り当てる送信ポートを変更する。
例えば、インターリーブ送信制御部33は、インターリーブエラーが発生した場合、1から開始する昇順番号が割り振られたループバックパケットを4つの送信ポートに対して順次割り当てて送信し、受信装置200から返信されてきた4つのループバックパケットのうち最後に返信されてきたループバックパケットに割り振られた番号の数だけ、データ転送の再開の際にパケットデータを割り当てる送信ポートを進めることによりパケットデータを割り当てる送信ポートを変更する。
次に、上記で説明したインターリーブエラーからのリカバリ処理を実現するための具体的動作を図18〜図21を参照して説明する。
本実施形態では、送信装置100から受信装置200に対して、4つのループバックパケットLP1〜LP4(以降LP1〜LP4と略す。)を順次送信するものとして説明する。
先ず、送信装置100では、受信装置200から転送されてきたループバックパケットを図18に示すような格納メモリにて格納しているものとして説明を行う。この図18に示した格納メモリでは、ループバックパケットは受信された順番でアドレス101〜104に格納される。なお、図18では、ループバックパケットLP1〜LP4のうちいずれが格納されるか特定できないため、LPxとして表現している。
次に、送信装置100において実行されるリカバリ処理の動作を図19、図20を参照して説明する。
送信装置100では、先ず、Nの初期値としてループバックパケットの格納メモリの先頭アドレス101が設定される(ステップS201)。
そして、送信装置100は受信装置200に対してLP1を送信する(ステップS202)。そして、送信装置100において送信したLP1が受信された場合(ステップS203においてyes)、送信装置100ではインターリーブエラーは発生していないと判定して処理は終了する(ステップS204)。
ステップS203においてLP1が受信できない場合には、送信装置100は受信装置200に対してLP2を送信する(ステップS205)。
そして、送信装置100においてLP2が受信された場合(ステップS206においてyes)、送信装置100では、受信したLP2をループバックパケットの格納メモリのアドレスNに格納する(ステップS207)。そして、Nの値は1加算される(ステップS208)。
次に、送信装置100は受信装置200に対してLP3を送信する(ステップS209)。
そして、送信装置100においてLP3が受信された場合(ステップS210においてyes)、送信装置100では、受信したLP3をループバックパケットの格納メモリのアドレスNに格納する(ステップS211)。そして、Nの値は1加算される(ステップS212)。
同様にして、送信装置100は受信装置200に対してLP4を送信する(ステップS213)。そして、送信装置100においてLP4が受信された場合(ステップS214においてyes)、送信装置100では、受信したLP4をループバックパケットの格納メモリのアドレスNに格納する(ステップS215)。そして、Nの値は1加算される(ステップS216)。
そして、その後LP1が受信された場合(ステップS217においてyes)、送信装置100では、受信したLP1をループバックパケットの格納メモリのアドレスNに格納して(ステップS218)、Nの値は1加算される(ステップS219)。
また、LP2が受信された場合(ステップS220においてyes)、送信装置100では、受信したLP2をループバックパケットの格納メモリのアドレスNに格納して(ステップS221)、Nの値は1加算される(ステップS222)。
最後に、LP3が受信された場合(ステップS223においてyes)、送信装置100では、受信したLP3をループバックパケットの格納メモリのアドレスNに格納して(ステップS224)、Nの値は1加算される(ステップS225)。
上記のような処理が行われることにより、送信装置100では、受信装置200から返信されてきたループバックパケットは、格納メモリのアドレス101〜104に順次格納されることになる。そして、アドレス104には、最後に受信されたループバックパケットが格納される。
そして、送信装置100のインターリーブ送信制御部33は、上記のようにしてループバックパケット格納メモリに格納されたループバックパケットの順序に応じて、図21に示すような処理によりリカバリ処理を実行する。
このリカバリ処理では、インターリーブ送信制御部33は、ループバックパケットの格納メモリを確認して(ステップS301)、アドレス104に格納されているループバックパケット、つまり最後に受信されたループバックパケットがLP3であるか否かを判定する(ステップS302)。
そして、アドレス104に格納されているループバックパケットがLP3である場合(ステップS302においてyes)、インターリーブ送信制御部33は、データ転送の再開の際にパケットデータを割り当てる送信ポートを3つ進める(ステップS303)。
また、アドレス104に格納されているループバックパケットがLP2である場合(ステップS304においてyes)、インターリーブ送信制御部33は、データ転送の再開の際にパケットデータを割り当てる送信ポートを2つ進める(ステップS305)。
また、アドレス104に格納されているループバックパケットがLP2でない場合(ステップS304においてno)、つまりLP1である場合、インターリーブ送信制御部33は、データ転送の再開の際にパケットデータを割り当てる送信ポートを1つ進める(ステップS306)。
なお、上記のステップS304においてアドレス104に格納されているループバックパケットがLP2でない場合には、アドレス104に格納されているループバックパケットがLP1であると判定できるのは以下の理由による。
つまり、図19に示したフローチャートにおけるステップS204では、LP1送信後にLP1が受信された場合には、インターリーブエラーが発生していないと判定している。つまり、送信装置100から受信装置200に対して、LP1〜LP4の送信順でループバックパケットを送信して、LP1〜LP4の順番で受信された場合には、インターリーブエラーは発生していないと判定することができる。つまり、最後に受信したループバックパケットがLP4であればインターリーブエラーは発生していないことになり、その場合にはそもそもリカバリ処理は途中で終了しているからである。
その結果、ループバックパケットの格納メモリのアドレス104に格納されているループバックパケットがLP2、LP3のいずれでもない場合には、アドレス104にはLP1が格納されていると判定することできるのである。
次に、本実施形態におけるリカバリ処理の動作を図面を参照して詳細に説明する。
先ず、図22〜図25を参照して、送信側のインターリーブ動作が受信側のインターリーブ動作に対して通信チャネル1つ進んでいる場合の動作について説明する。
以下の説明では、図22(A)に示すように、送信装置100においてパケット生成部32により生成されたパケットデータを送信する通信チャネルが通信チャネルL1であり、データ取得部44がパケットデータを取り出す通信チャネルが通信チャネルL0となっていることにより送信側と受信側で通信チャネルが1つずれているものとして説明する。
ここで、図22(B)に示すように、このような状態でパケット生成部32においてLP1が生成されると、図22(C)に示すように、LP1は通信チャネルL1を経由して受信装置200に送信されてL1バッファに格納される。
また、同様な処理が行われることにより、図23(A)に示すように、LP2はL2バッファに格納され、LP3はL3バッファに格納される。
そして、図23(B)に示されるように、LP4がL0バッファに格納されると、図23(C)に示されるようにデータ取得部44はL0バッファに格納されたLP4を取得する。
次に、図24(A)に示されるように、データ取得部44により取得されたLP4は通信チャネルL4を経由して送信装置100に送信され、データ取得部44は、L1バッファに格納されたLP1を取得する。
次に、図24(B)に示されるように、データ取得部44により取得されたLP1は通信チャネルL4を経由して送信装置100に送信され、データ取得部44は、L2バッファに格納されたLP2を取得する。
そして、同様の動作により、図24(C)に示されるように、L3バッファに格納されていたLP3もデータ取得部44により取得されて送信装置100に送信される。
上記のような処理の結果、図25(A)に示すように、送信装置100では、LP1〜LP4の順番で送信したループバックパケットは、LP4、LP1、LP2、LP3の順序で受信されることになる。
そして、送信装置100のインターリーブ送信制御部33は、最後に受信したループバックパケットがLP3であるため、前記25(B)に示すように、次にパケットデータを送信する送信ポートを通信チャネルL1の送信ポートから3つ進める。
具体的には、インターリーブ送信制御部33は、次にパケットデータを送信する送信ポートを、通信チャネルL1の送信ポートから通信チャネルL0の送信ポートに変更する。
このリカバリ処理が行われたことにより、送信側において次にパケットデータを送信する通信チャネルと、受信側において次にパケットデータを受信する通信チャネルはともに通信チャネルL0となり、インターリーブエラーは解消されることになる。
次に、図26〜図28を参照して、送信側のインターリーブ動作が受信側のインターリーブ動作に対して通信チャネル2つ進んでいる場合の動作について説明する。
以下の説明では、図26(A)に示すように、送信装置100においてパケット生成部32により生成されたパケットデータを送信する通信チャネルが通信チャネルL2であり、データ取得部44がパケットデータを取り出す通信チャネルが通信チャネルL0となっていることにより送信側と受信側で通信チャネルが2つずれているものとして説明する。
ここで、図26(B)に示すように、このような状態でパケット生成部32においてLP1が生成されると、図26(C)に示すように、LP1は通信チャネルL2を経由して受信装置200に送信されてL2バッファに格納される。
また、同様な処理が行われることにより、図27(A)に示すように、LP2はL3バッファに格納され、LP3はL0バッファに格納される。
そして、LP3がL0バッファに格納されたことにより、図27(B)に示されるようにデータ取得部44はL0バッファに格納されたLP3を取得する。
次に、図27(C)に示されるように、データ取得部44により取得されたLP3は通信チャネルL4を経由して送信装置100に送信され、データ取得部44は、L1バッファに格納されたLP4を取得する。
次に、図28(A)に示されるように、データ取得部44により取得されたLP4は通信チャネルL4を経由して送信装置100に送信され、データ取得部44は、L2バッファに格納されたLP1を取得する。
そして、同様の動作により、図28(B)に示されるように、取得されたLP1は通信チャネルL4を経由して送信装置100に送信され、L3バッファに格納されていたLP2もデータ取得部44により取得されて送信装置100に送信される。
上記のような処理の結果、図28(B)に示すように、送信装置100では、LP1〜LP4の順番で送信したループバックパケットは、LP3、LP4、LP1、LP2の順序で受信されることになる。
そして、送信装置100のインターリーブ送信制御部33は、最後に受信したループバックパケットがLP2であるため、前記28(C)に示すように、次にパケットデータを送信する送信ポートを通信チャネルL2の送信ポートから2つ進める。
具体的には、インターリーブ送信制御部33は、次にパケットデータを送信する送信ポートを、通信チャネルL2の送信ポートから通信チャネルL0の送信ポートに変更する。
このリカバリ処理が行われたことにより、送信側において次にパケットデータを送信する通信チャネルと、受信側において次にパケットデータを受信する通信チャネルはともに通信チャネルL0となり、インターリーブエラーは解消されることになる。
最後に、図29〜図31を参照して、送信側のインターリーブ動作が受信側のインターリーブ動作に対して通信チャネル3つ進んでいる場合の動作について説明する。
以下の説明では、図29(A)に示すように、送信装置100においてパケット生成部32により生成されたパケットデータを送信する通信チャネルが通信チャネルL3であり、データ取得部44がパケットデータを取り出す通信チャネルが通信チャネルL0となっていることにより送信側と受信側で通信チャネルが3つずれているものとして説明する。
ここで、図29(B)に示すように、このような状態でパケット生成部32においてLP1が生成されると、図29(C)に示すように、LP1は通信チャネルL3を経由して受信装置200に送信されてL3バッファに格納される。
また、同様な処理が行われることにより、図30(A)に示すように、LP2はL0バッファに格納される。
そして、LP2がL0バッファに格納されたことにより、図30(B)に示されるようにデータ取得部44はL0バッファに格納されたLP2を取得する。また、送信装置100から送信されてきたLP3、LP4は、順次L1バッファ、L2バッファに格納される。
次に、図30(C)に示されるように、データ取得部44により取得されたLP2は通信チャネルL4を経由して送信装置100に送信され、データ取得部44は、L1バッファに格納されたLP3を取得する。
次に、図31(A)に示されるように、データ取得部44により取得されたLP3は通信チャネルL4を経由して送信装置100に送信され、データ取得部44は、L2バッファに格納されたLP4を取得する。
そして、同様の動作により、図31(B)に示されるように、L3バッファに格納されていたLP1もデータ取得部44により取得されて送信装置100に送信される。
上記のような処理の結果、図31(B)に示すように、送信装置100では、LP1〜LP4の順番で送信したループバックパケットは、LP2、LP3、LP4、LP1の順序で受信されることになる。
そして、送信装置100のインターリーブ送信制御部33は、最後に受信したループバックパケットがLP1であるため、前記31(C)に示すように、次にパケットデータを送信する送信ポートを通信チャネルL3の送信ポートから1つ進める。
具体的には、インターリーブ送信制御部33は、次にパケットデータを送信する送信ポートを、通信チャネルL3の送信ポートから通信チャネルL0の送信ポートに変更する。
このリカバリ処理が行われたことにより、送信側において次にパケットデータを送信する通信チャネルと、受信側において次にパケットデータを受信する通信チャネルはともに通信チャネルL0となり、インターリーブエラーは解消されることになる。
[第2の実施形態]
次に、本発明の第2の実施形態の送受信システムについて説明する。
本発明の第2の実施形態の送受信システムの構成については、図1〜図6に示した第1の実施形態の送受信システムと同様の構成であるため、その説明については省略する。
上記で説明した本発明の第1の実施形態の送受信システムでは、送信装置100側において、インターリーブエラーを解消するためのリカバリ処理を実行するものであったが、本発明の第2の実施形態の送受信システムでは、受信装置200側においてリカバリ処理を実行する点が異なっている。
本実施形態におけるインターリーブ受信制御部43は、インターリーブエラーが発生したことを検出した場合、データ転送を中止して、4つの受信ポート数分のループバックパケットを送信装置100への送信ポートに対して送信順序が分かる状態で順次送信し、送信装置100から4つの受信ポートに返信されてきた4つのループバックパケットの受信順序に応じて、データ転送の再開の際にパケットデータを取り込む受信ポートを変更する。
例えば、インターリーブ受信制御部43は、インターリーブエラーが発生した場合、1から開始する昇順番号が割り振られたループバックパケットを送信ポートに対して順次送信し、送信装置100から返信されてきた4つのループバックパケットのうち最後に返信されてきたループバックパケットに割り振られた番号の数だけ、データ転送の再開の際にパケットデータを取り込む受信ポートを戻すことによりパケットデータを取り込む受信ポートを変更する。
次に、本発明の第2の実施形態の送受信システムにおいて行われるリカバリ処理の動作を図32のシーケンスチャートを参照して説明する。
先ず、受信装置200では、受信したパケットデータの受信順序が正常でないことを検出することにより、送信装置100と受信装置200との間でパケットデータの伝送に使用する通信チャネルの同期がずれてしまうインターリーブエラーが検出される(ステップS401)。
すると、受信装置200は、送信装置100に対して転送する送信リクエストを停止する(ステップS402)。
そして、受信装置200では、発生したインターリーブエラーを解消させるためのリカバリ処理を実行する(ステップS403)。
リカバリ処理が完了すると、受信装置200は、送信リクエストを再開して送信装置100に対してパケットデータの送信を要求する(ステップS404)。
このように本実施形態の送受信システムでは、受信装置200においてインターリーブエラーの発生の検出およびリカバリ処理の実行が行われるため、送信装置100では、インターリーブエラーの発生を認識することなくデータの送受信が継続される。
なお、本実施形態の送受信システムにおけるリカバリ処理においても、図18に示したようなループバックパケットの格納メモリが受信装置200において設けられる。そして、受信装置200において、図19、図20のフローチャートに示されるリカバリ処理が実行される。
そして、受信装置200のインターリーブ受信制御部43は、上記のようにしてループバックパケット格納メモリに格納されたループバックパケットの順序に応じて、図33に示すような処理によりリカバリ処理を実行する。
このリカバリ処理では、インターリーブ受信制御部43は、ループバックパケットの格納メモリを確認して(ステップS501)、アドレス104に格納されているループバックパケット、つまり最後に受信されたループバックパケットがLP3であるか否かを判定する(ステップS502)。
そして、アドレス104に格納されているループバックパケットがLP3である場合(ステップS502においてyes)、インターリーブ受信制御部43は、データ転送の再開の際にパケットデータを割り当てる送信ポートを3つ戻す(ステップS503)。
また、アドレス104に格納されているループバックパケットがLP2である場合(ステップS504においてyes)、インターリーブ受信制御部43は、データ転送の再開の際にパケットデータを割り当てる送信ポートを2つ戻す(ステップS505)。
また、アドレス104に格納されているループバックパケットがLP2でない場合(ステップS504においてno)、つまりLP1である場合、インターリーブ受信制御部43は、データ転送の再開の際にパケットデータを割り当てる送信ポートを1つ戻す(ステップS506)。
次に、本実施形態におけるリカバリ処理の動作を図面を参照して詳細に説明する。
先ず、図34〜図37を参照して、送信側のインターリーブ動作が受信側のインターリーブ動作に対して通信チャネル1つ進んでいる場合の動作について説明する。
以下の説明では、図34(A)に示すように、送信装置100においてパケット生成部32により生成されたパケットデータを送信する通信チャネルが通信チャネルL1であり、データ取得部44がパケットデータを取り出す通信チャネルが通信チャネルL0となっていることにより送信側と受信側で通信チャネルが1つずれているものとして説明する。
ここで、図34(B)に示すように、このような状態で受信装置200のパケット生成部45においてLP1が生成されると、図34(C)に示すように、LP1は通信チャネルL4を経由して送信装置100に送信されてL4バッファに格納される。
そして、図35(A)に示すように、LP1はループバックパケットであるため、パケット生成部32は、LP1と同内容のLP1を生成する。また、同様な処理が行われることにより、LP2がL4バッファに格納される。
そして、図35(B)に示されるように、LP1は通信チャネルL1を経由して受信装置200に送信され、パケット生成部32は、LP2と同内容のLP2を生成し、LP3がL4バッファに格納される。
そして、次に、図35(C)に示されるように、LP1はL1バッファに格納され、LP2は通信チャネルL2を経由して受信装置200に送信される。
また、図36(A)に示されるように、同様の処理が行われることにより、LP2はL2バッファに格納され、LP3はL3バッファに格納される。
そして、図36(B)に示されるように、LP4がL0バッファに格納されると、図36(C)に示されるようにデータ取得部44は、L0バッファに格納されているLP4を取得する。
そして、同様の動作により、図37(A)に示されるように、L1バッファに格納されていたLP1もデータ取得部44により取得される。
上記のような処理の結果、図37(B)に示すように、受信装置200では、LP1〜LP4の順番で送信したループバックパケットは、LP4、LP1、LP2、LP3の順序で受信されることになる。
そして、受信装置200のインターリーブ受信制御部43は、最後に受信したループバックパケットがLP3であるため、前記37(C)に示すように、次にパケットデータを受信する受信ポートを通信チャネルL0の受信ポートから3つ戻す。
具体的には、インターリーブ受信制御部43は、次にパケットデータを受信する受信ポートを、通信チャネルL0の受信ポートから通信チャネルL1の受信ポートに変更する。
このリカバリ処理が行われたことにより、送信側において次にパケットデータを送信する通信チャネルと、受信側において次にパケットデータを受信する通信チャネルはともに通信チャネルL1となり、インターリーブエラーは解消されることになる。
次に、図38〜図41を参照して、送信側のインターリーブ動作が受信側のインターリーブ動作に対して通信チャネル2つ進んでいる場合の動作について説明する。
以下の説明では、図38(A)に示すように、送信装置100においてパケット生成部32により生成されたパケットデータを送信する通信チャネルが通信チャネルL2であり、データ取得部44がパケットデータを取り出す通信チャネルが通信チャネルL0となっていることにより送信側と受信側で通信チャネルが2つずれているものとして説明する。
ここで、図38(B)に示すように、このような状態で受信装置200のパケット生成部45においてLP1が生成されると、図38(C)に示すように、LP1は通信チャネルL4を経由して送信装置100に送信されてL4バッファに格納される。
そして、図39(A)に示すように、LP1はループバックパケットであるため、パケット生成部32は、LP1と同内容のLP1を生成する。また、同様な処理が行われることにより、LP2がL4バッファに格納される。
そして、図39(B)に示されるように、LP1は通信チャネルL2を経由して受信装置200に送信され、パケット生成部32は、LP2と同内容のLP2を生成し、LP3がL4バッファに格納される。
そして、次に、図39(C)に示されるように、LP1はL2バッファに格納され、LP2は通信チャネルL3を経由して受信装置200に送信される。
また、図40(A)に示されるように、同様の処理が行われることにより、LP2はL3バッファに格納され、LP3はL0バッファに格納される。
そして、図40(B)に示されるように、LP3がL0バッファに格納されたことにより、データ取得部44は、L0バッファに格納されているLP3を取得する。また、LP4はL1バッファに格納される。
そして、同様の動作により、図40(C)に示されるように、L1バッファに格納されていたLP4がデータ取得部44により取得される。
次に、同様の動作により、図41(A)に示されるように、L2バッファに格納されていたLP1がデータ取得部44により取得される。
上記のような処理の結果、図41(B)に示すように、受信装置200では、LP1〜LP4の順番で送信したループバックパケットは、LP3、LP4、LP1、LP2の順序で受信されることになる。
そして、受信装置200のインターリーブ受信制御部43は、最後に受信したループバックパケットがLP2であるため、前記41(C)に示すように、次にパケットデータを受信する受信ポートを通信チャネルL0の受信ポートから2つ戻す。
具体的には、インターリーブ受信制御部43は、次にパケットデータを受信する受信ポートを、通信チャネルL0の受信ポートから通信チャネルL2の受信ポートに変更する。
このリカバリ処理が行われたことにより、送信側において次にパケットデータを送信する通信チャネルと、受信側において次にパケットデータを受信する通信チャネルはともに通信チャネルL2となり、インターリーブエラーは解消されることになる。
次に、図42〜図45を参照して、送信側のインターリーブ動作が受信側のインターリーブ動作に対して通信チャネル3つ進んでいる場合の動作について説明する。
以下の説明では、図42(A)に示すように、送信装置100においてパケット生成部32により生成されたパケットデータを送信する通信チャネルが通信チャネルL3であり、データ取得部44がパケットデータを取り出す通信チャネルが通信チャネルL0となっていることにより送信側と受信側で通信チャネルが3つずれているものとして説明する。
ここで、図42(B)に示すように、このような状態で受信装置200のパケット生成部45においてLP1が生成されると、図42(C)に示すように、LP1は通信チャネルL4を経由して送信装置100に送信されてL4バッファに格納される。
そして、図43(A)に示すように、LP1はループバックパケットであるため、パケット生成部32は、LP1と同内容のLP1を生成する。また、同様な処理が行われることにより、LP2がL4バッファに格納される。
そして、図43(B)に示されるように、LP1は通信チャネルL3を経由して受信装置200に送信され、パケット生成部32は、LP2と同内容のLP2を生成し、LP3がL4バッファに格納される。
そして、次に、図43(C)に示されるように、LP1はL3バッファに格納され、LP2は通信チャネルL0を経由して受信装置200に送信される。
また、図44(A)に示されるように、同様の処理が行われることにより、LP2はL0バッファに格納され、LP3は通信チャネルを経由して受信装置200に送信される。
そして、図44(B)に示されるように、LP2がL0バッファに格納されたことにより、データ取得部44は、L0バッファに格納されているLP2を取得する。また、LP3はL1バッファに格納される。
そして、同様の動作により、図44(C)に示されるように、L1バッファに格納されていたLP3がデータ取得部44により取得される。
次に、同様の動作により、図45(A)に示されるように、L2バッファに格納されていたLP4がデータ取得部44により取得される。
上記のような処理の結果、図45(B)に示すように、受信装置200では、LP1〜LP4の順番で送信したループバックパケットは、LP2、LP3、LP4、LP1の順序で受信されることになる。
そして、受信装置200のインターリーブ受信制御部43は、最後に受信したループバックパケットがLP1であるため、前記45(C)に示すように、次にパケットデータを受信する受信ポートを通信チャネルL0の受信ポートから1つ戻す。
具体的には、インターリーブ受信制御部43は、次にパケットデータを受信する受信ポートを、通信チャネルL0の受信ポートから通信チャネルL3の受信ポートに変更する。
このリカバリ処理が行われたことにより、送信側において次にパケットデータを送信する通信チャネルと、受信側において次にパケットデータを受信する通信チャネルはともに通信チャネルL3となり、インターリーブエラーは解消されることになる。
[変形例]
上記第1および第2の実施形態では、端末装置10と画像形成装置20とが通信ケーブル30により直接接続されている構成であったが、本発明はこれに限定されるものではない。図46に示されるような、端末装置10とプリントサーバ40とがネットワーク50により接続され、このプリントサーバ40と画像形成装置20とが通信ケーブル30により接続されたような構成の場合でも同様に本発明を適用することができるものである。