(57)【要約】【課題】本構成を有しない場合と比較して、ヘッダ部のコードが未定義コードに変化した場合であっても、受信したパケットの異常をリカバリすることができる通信装置、制御装置、及び通信処理プログラムを提供する。【解決手段】パケット推定部５４が、受信したパケットのヘッダ部のコードを解析して、未定義コードである場合は、未定義コードに変化前の元コードを推定する。推定コードの終了位置までカウンタ回路５５でカウントすると、コード決定部５８が、パケットの終了位置を含む予め定められた範囲内のデータパターンがパケットの終了位置を示す予め定められた期待データパターンと一致するか否か判断する。期待データパターンと一致する場合は、推定コードを元コードとして決定する。また決定した元コードに定義付けられているパケットが再送可として定められているパケットである場合は、再送要求をパケットの送信側の装置に出力する。【選択図】図２
2015037281.tif 000002
【特許請求の範囲】
【請求項１】
受信したパケットのヘッダ部のコードが元コードから、パケットの種類及びパケット長が未定義の未定義コードに変化しているか否かを判別し、未定義コードに変化している場合は、当該未定義コードに対して予め対応付けられているコードに基づいて元コードを推定する推定手段と、
前記推定手段により推定した推定コードに定義付けられているパケット長に応じたパケットの終了位置を含む予め定められた範囲内において受信した前記パケットのパターンと、パケットの終了位置を示す予め定められたパターンとが一致する場合に、推定コードを、受信したパケットの元コードとして決定する決定手段と、
を備えた通信装置。
【請求項２】
再送可能なパケットの種類が予め定められており、
前記決定手段は、決定した元コードに定義付けられているパケットの種類が前記再送可能なパケットの種類に一致する場合は、受信したパケットの再送要求を送信元に出力する、
請求項１に記載の通信装置。
【請求項３】
前記決定手段は、決定した元コードに定義付けられているパケットの種類が前記再送可能なパケットの種類と不一致の場合は、エラー発生通知を出力する、
請求項２に記載の通信装置。
【請求項４】
中央処理装置を備えた主制御装置と、
シリアル通信によりパケットの通信を行う前記主制御装置の制御に応じて動作する従制御装置と、
を備え、
前記主制御装置及び前記従制御装置の少なくとも一方が、前記通信装置を備えた、
制御装置。
【請求項５】
前記請求項１から請求項請求項３のいずれか１項に記載の通信装置の推定手段及び決定手段の少なくとも一方としてコンピュータを機能させるための通信処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、制御装置、及び通信処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、１以上の固定長フレームから構成される可変長パケット信号のパケット終了判定方法であって、前記可変長パケット信号の送信局で前記可変長パケット信号の最後部の固定長フレーム以外の各固定長フレームの所定の位置に第１の固定パターンを挿入し、前記最後部の固定長フレームの前記所定の位置に第２の固定パターンを挿入し、前記可変長パケット信号の受信局で、前記固定長フレームの所定の位置の固定パターンを検出し、その固定パターンが第２の固定パターンであることを検出したときに前記可変長パケット信号が終了したと判定することを特徴とするパケット終了判定方法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−０３６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、本構成を有しない場合と比較して、ヘッダ部のコードが未定義コードに変化した場合であっても、受信したパケットの異常をリカバリすることができる通信装置、制御装置、及び通信処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明の通信装置は、受信したパケットのヘッダ部のコードが元コードから、パケットの種類及びパケット長が未定義の未定義コードに変化しているか否かを判別し、未定義コードに変化している場合は、当該未定義コードに対して予め対応付けられているコードに基づいて元コードを推定する推定手段と、前記推定手段により推定した推定コードに定義付けられているパケット長に応じたパケットの終了位置を含む予め定められた範囲内において受信した前記パケットのパターンと、パケットの終了位置を示す予め定められたパターンとが一致する場合に、推定コードを、受信したパケットの元コードとして決定する決定手段と、を備える。
【０００６】
本発明の通信装置では、再送可能なパケットの種類が予め定められており、前記決定手段は、決定した元コードに定義付けられているパケットの種類が前記再送可能なパケットの種類に一致する場合は、受信したパケットの再送要求を送信元に出力することが好ましい。
【０００７】
本発明の通信装置の  前記決定手段は、決定した元コードに定義付けられているパケットの種類が前記再送可能なパケットの種類と不一致の場合は、エラー発生通知を出力するようにしてもよい。
【０００８】
本発明の制御装置は、中央処理装置を備えた主制御装置と、シリアル通信によりパケットの通信を行う前記主制御装置の制御に応じて動作する従制御装置と、を備え、前記主制御装置及び前記従制御装置の少なくとも一方が、前記通信装置を備える。
【０００９】
本発明の通信処理プログラムは、本発明の通信装置の推定手段及び決定手段の少なくとも一方としてコンピュータを機能させるためのものである。
【発明の効果】
【００１０】
請求項１、請求項４、及び請求項５に記載の発明によれば、本構成を有しない場合と比較して、ヘッダ部のコードが未定義コードに変化した場合であっても、受信したパケットの異常をリカバリすることができる。
【００１１】
請求項２に記載の発明によれば、再送要求を行わない場合と比較して、速やかにリカバリを行うことができる。
【００１２】
請求項３に記載の発明によれば、エラー発生通知を出力しない場合と比較して、速やかにリカバリを行うことができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態の画像形成装置の一例の概略構成を表す構成図である。
【図２】本実施の形態の通信装置の一例の概略を示す構成図である。
【図３】本実施の形態における、ヘッダ部のコードと、パケットの種類と、当該パケット長との対応関係の一例を示す説明図である。
【図４】本実施の形態における、ヘッダ部がデータ化けにより他の定義コードに変化している場合の具体的例を説明するための説明図である。
【図５】本実施の形態の通信装置における、受信したパケットのヘッダ部のコードが未定義コードであるか否かを判定し、未定義コードの場合にリカバリを行う動作の流れの一例を表すフローチャートである。
【図６】本実施の形態における未定義コードと、推定コードとの対応関係を示す説明図である。
【図７】本実施の形態におけるパケットの終了位置を含むデータパターンの比較による元コードの決定について説明するための説明図である。
【図８】本実施の形態の通信装置における、受信したパケットのヘッダ部のコードが未定義コードであるか否かを判定し、未定義コードの場合にリカバリを行う動作の流れのその他の一例を表すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。
【００１５】
まず、本発明の通信装置を適用した主制御装置及び機器制御装置を有する制御装置を備えた画像形成装置について説明する。図１には、画像形成装置１０の一例の概略構成を表す構成図を示す。画像形成装置１０は、主制御装置１２及び機器制御装置１４がシリアルバス４０を介して接続された制御装置１１と、機器制御装置１４に接続された各種機器を含む機器群１６とを備えている。シリアルバス４０は、主制御装置１２から見た場合には送信用となる信号線Ｔｘ、及び受信用となる信号線Ｒｘを備えた全二重の伝送路である。
【００１６】
機器群１６に含まれる各機器は、画像形成を行なうための機器であって、例えば、感光体や現像ロール等を回転させるモータ、用紙検出のためのセンサ、或いはトナー濃度を検出するためのセンサ等が含まれる。なお、ここでは画像形成装置１０を、電子写真方式で画像形成を行なう画像形成装置として説明したが、インクジェット方式で画像形成を行なう画像形成装置であってもよい。
【００１７】
主制御装置１２は、画像形成装置１０全体、及び機器制御装置１４を制御する機能を有している。主制御装置１２は、ＣＰＵ（中央処理装置：Central Processing Unit）２０、シリアライザ・デシリアライザ制御部２２（以下、「ＳｅｒＤｅｓ制御部２２」という）、及び複写レジスタ群２４を備えている。
【００１８】
ＣＰＵ２０は、不揮発性の記憶部（図示省略）に記憶されたプログラムを実行することにより、画像形成装置１０全体及び機器制御装置１４を制御する。なお、ＣＰＵ２０が実行するプログラムを記憶するための記憶部は、ＨＤＤ（ハードディスクドライブ）、フレキシブルディスク、ＤＶＤ（Digital Versatile Disk）、光磁気ディスク、及びＵＳＢ（Universal Serial Bus)メモリ等であってもよい。また当該記憶部は、通信ＩＦ（Interface）（図示省略）を介して接続された他の装置の記憶媒体であってもよい。
【００１９】
ＣＰＵ２０は、ＣＰＵバス２６を介してＳｅｒＤｅｓ制御部２２と接続されている。ＣＰＵバス２６は、複数の信号線を備えたパラレルバスである。
【００２０】
ＳｅｒＤｅｓ制御部２２は、ＣＰＵ２０からＣＰＵバス２６を介して機器制御装置１４に送信する情報（パラレル信号）を受け取ると、受け取ったパラレル信号をパケット化し、各パケットをシリアル信号に変換してシリアルバス４０を介して機器制御装置１４に送信する。また、ＳｅｒＤｅｓ制御部２２は、機器制御装置１４からシリアルバス４０を介してシリアル形式のパケットを受信すると、受信したパケットをパラレル形式のパケットに変換し、変換したパラレル形式のパケットをデコードして、該パケットに含まれるデータを取り出す。本実施の形態の通信装置５０は、ＳｅｒＤｅｓ制御部２２内に設けられており、機器制御装置１４から受信したシリアル形式のパケットのヘッダ部のコードが未定義コードであるか否かを判定し、未定義コードの場合にリカバリを行う（詳細後述）。
【００２１】
複写レジスタ群２４は、複数のレジスタ（記憶領域）を含むメモリで構成されている。機器制御装置１４に含まれる入出力制御レジスタ群３２の各レジスタの記憶内容が、複写レジスタ群２４に複写される。ここで、複写とは、入出力制御レジスタ群３２からレジスタに記憶されたデータを読出して、読出したデータをシリアルバス４０を介して主制御装置１２に送信し、複写レジスタ群２４の各レジスタに書込む一連の処理をいう。
【００２２】
機器制御装置１４は、シリアライザ・デシリアライザ制御部３０（以下、「ＳｅｒＤｅｓ制御部３０」という）、入出力制御レジスタ群３２、及び駆動・受信回路３４を備えている。本実施の形態の機器制御装置１４は、主制御装置１２の制御に応じて動作する本発明の従制御装置に対応している。
【００２３】
ＳｅｒＤｅｓ制御部３０は、主制御装置１２からシリアルバス４０を介してシリアル形式のパケットを受信すると、受信したパケットをパラレル形式のパケットに変換し、パラレル形式のパケットをデコードして、該パケットに含まれるデータを取り出す。また、ＳｅｒＤｅｓ制御部３０は、主制御装置１２に送信する情報（パラレル信号）をパケット化し、各パケットをシリアル信号に変換してシリアルバス４０を介して主制御装置１２に送信する。ＳｅｒＤｅｓ制御部２２と同様に、ＳｅｒＤｅｓ制御部３０内部には、本実施の形態の通信装置５０が設けられている。
【００２４】
入出力制御レジスタ群３２は、複数のレジスタ（記憶領域）を含むメモリで構成されている。入出力制御レジスタ群３２の複数のレジスタは、入力レジスタと、出力レジスタとを含んでいる。入力レジスタには、各機器の状態を示すデータが書込まれる。出力レジスタには、主制御装置１２のＣＰＵ２０から送信された各機器を制御するデータが書込まれる。また、入出力制御レジスタ群３２には、割込の発生を示すデータが書込まれるレジスタ、及び割込要因を示すデータが書込まれるレジスタも含まれる。
【００２５】
入出力制御レジスタ群３２の各レジスタに記憶された記憶内容は、前述したように、主制御装置１２の複写レジスタ群２４に複写される。本実施の形態では、ＣＰＵ２０は、複写レジスタ群２４に複写されたデータを読み出すことにより、入出力制御レジスタ群３２に書込まれたデータと同じデータを参照することができる。この他、本実施の形態では、ＣＰＵ２０は、シリアルバス４０を介して入出力制御レジスタ群３２に書込まれたデータを読出して取得することもできる。なお、本実施の形態において、複写レジスタ群２４のメモリサイズ、及び入出力制御レジスタ群３２のメモリサイズは、互いに等しく、入出力制御レジスタ群３２から複写レジスタ群２４への複写の際には、入出力制御レジスタ群３２から読み出されたデータは、当該データが記憶されていた入出力制御レジスタ群３２のレジスタに対応する複写レジスタ群２４のレジスタに書込まれるものとする。
【００２６】
駆動・受信回路３４は、画像形成装置１０を構成する機器群１６の各機器に接続される。駆動・受信回路３４は、入出力制御レジスタ群３２の出力レジスタに機器を制御するためのデータが書込まれると、そのデータに応じた駆動信号を当該出力レジスタに対応する機器に出力する。機器は出力された駆動信号に応じて駆動される。また、接続された機器から当該機器の状態を示す信号が入力されると、その信号に応じたデータを当該機器の状態を示すデータ用の入力レジスタに書込む。状態を示すデータは、例えば、機器がセンサである場合には、センサの検出結果を示すデータであってもよい。また例えば、機器がモータである場合には、モータの回転状態を示すデータであってもよい。
【００２７】
画像形成装置１０全体を制御するＣＰＵ２０は、入力レジスタに書込まれたデータから機器の状態を把握し、出力レジスタに制御用のデータを書込むことにより各機器の駆動を制御している。
【００２８】
次に、本実施の形態の通信装置５０について説明する。本実施の形態の通信装置５０は、上述したように、ＳｅｒＤｅｓ制御部２２及びＳｅｒＤｅｓ制御部３０の内部に設けられている。通信装置５０は、受信したシリアル形式のパケットのヘッダ部のコードを解析して未定義コードであるか否かを判定し、未定義コードの場合にリカバリを行う機能を有している。
【００２９】
図２は、本実施の形態の通信装置５０の一例の概略を示す構成図である。通信装置５０は、パケット推定部５２、パケット推定部５４、カウンタ回路５５、データパターン比較部５６、及びコード決定部５８を備えている。
【００３０】
パケット推定部５４は、シーケンス回路６０（以下、「ＳＱ回路６０」という）を備えている。パケット推定部５４は、受信したシリアル形式のパケットのデータ（図２、信号data_in参照）のヘッダ部を解析して未定義コードであるか否か判断し、未定義コードの場合は、元コード（データ化け前のコード）や元コードに応じたパケットの種類に基づいてパケット長を推測する機能を有している。
【００３１】
送受信されるパケットのヘッダ部は、当該パケットの種類を示す情報がコードに定義付けられている。図３には、ヘッダ部のコードと、パケットの種類と、当該パケット長との対応関係の一例を示す。なお、本実施の形態では、具体的一例として、ヘッダ部のコードは４ビット長としている。本実施の形態では、図３に示すように、コード「００００」、「０００１」、「００１０」、「００１１」、「１０１０」、「１０１１」、「１１００」、「１１０１」、「１１１０」、及び「１１１１」は、パケットの種類が定義付けされていない未定義コードである。本来、送受信されるパケットのヘッダ部のコードは、定義付けされたコードであるが、コードがデータ化け等を起こすことにより、このような未定義コードに変化する場合がある。パケット推定部５４は、図３に示した対応関係等に基づいて、ヘッダ部のコードが未定義コードであるか否か判断する。なお、図３に示した対応関係は、予め記憶部（図示省略）等に記憶させておく。
【００３２】
以下では、パケットの種類が定義付けられているコードを「定義コード」、定義付けられていないコードを「未定義コード」という。
【００３３】
カウンタ回路５５は、パケット推定部５４（ＳＱ回路６０）の制御により、受信したパケット（信号data_in）のパケット長のカウントを行う機能を有している。具体的には、図２に示すようにＳＱ回路６０から出力された信号couter_enに応じてパケット長のカウントを開始し、信号couter_clrに応じてカウント値をクリアする。カウント値（信号word_count）は、カウンタ回路５５からコード決定部５８に出力される。
【００３４】
データパターン比較部５６は、受信したパケット（信号data_in）のデータが、予め定められたデータパターンと一致するか否か比較する機能を有している。具体的には、データパターン比較部５６は、図２に示すようにフリップフロップ回路６２、６４、６６、６８、７０（以下、「フリップフロップ回路」を「ＦＦ回路」という）、比較回路６５、６７、６９、７１、７３（以下、「比較回路」を「ｃｏｍｐ回路」という）、及び論理和回路７４（以下、「ｏｒ回路７４」という）を備えている。
【００３５】
コード決定部５８は、推定した元コード（以下、「推定コード」という）のパケット長に応じて、受信したパケット（信号data_in）のデータが、予め定められたデータパターンと一致する場合に、推定コードを受信したパケットの元コードとして決定する機能を有している。また、本実施の形態のコード決定部５８は、決定したコードに定義付けられているパケットの種類に応じてパケットの再送の要求、またはシステムエラー発生の通知を出力する。具体的には、コード決定部５８は、図２に示すようにＬＵＴ（Look Up Table）回路７６を備えている。
【００３６】
パケット推定部５２は、受信したパケット（信号data_in）のヘッダ部を解析して、未定義コードであるか否か判断する機能を有している。また、パケット推定部５２は、パケットのＣＲＣ（Cyclic Redundancy Check）コードを解析し、パケットの異常（ＣＲＣエラー）を検出する機能を有している。さらに、パケット推定部５２は、ヘッダ部のコードが未定義コードではなく、かつＣＲＣエラーが発生していない場合は、受信したパケットを通信装置５０の後段の回路に信号data_outとして出力する機能を有している。これらの機能を達成するために、パケット推定部５２は、ＳＱ回路、カウンタ回路、ＬＵＴ回路、ｃｏｍｐ回路、ＦＦ回路、及びＦＩＦＯ（First-In First Out）回路を備えているが、図２では、記載が煩雑になるのを避けるため詳細な構成の記載を省略している。
【００３７】
次に、本実施の形態の通信装置５０におけるパケットの異常の検出について説明する。本実施の形態では、ビットエラーにより、ヘッダ部のコードが１ビットのデータ化けを起こしている場合を想定している。
【００３８】
図４には、受信したパケットのヘッダ部がデータ化けにより他の定義コードに変化している場合の具体的例について示す。図４（Ａ）は、パケットの種類が「Ｗｒｉｔｅ＿Ｗｏｒｄ」の場合の正常なパケットを示している。本実施の形態では、この場合のヘッダ部のコードは「０１００」となり、パケット長は、７である（図３参照）。コード「０１００」が、ビットエラーを起こした場合のコードは、「１１００」、「００００」、「０１１０」、及び「０１０１」のいずれかになる。このうち、コード「０１０１」及び「０１１０」は定義コードであり、コード「００００」及び「１１００」は未定義コードである。
【００３９】
図４（Ｂ）及び（Ｃ）には、ヘッダ部のコードがデータ化けした場合における誤認識について示している。図４（Ｂ）に示すように、データ化けによりヘッダ部のコードが「０１０１」に変化している場合は、定義付け（図３参照）により、パケットの種類を「Ｗｒｉｔｅ＿Ｂｌｏｃｋ」（パケット長、１４）と誤認識してしまう。また、図４（Ｃ）に示すように、データ化けによりヘッダ部のコードが「０１１０」に変化している場合は、定義付け（図３参照）により、パケットの種類を「Ｒｅａｄ＿Ｗｏｒｄ」（パケット長、４）と誤認識してしまう。
【００４０】
このように、データ化けにより、ヘッダ部のコードが他の定義コードに変化している場合は、パケット推定部５２により、ＣＲＣエラーとして検出される。
【００４１】
一方、ヘッダ部のコードが未定義コードにデータ変化した場合は、パケット推定部５４、カウンタ回路５５、データパターン比較部５６、及びコード決定部５８によりエラーとして検出を行う。図５には、受信したパケットのヘッダ部のコードを解析して未定義コードであるか否かを判定し、未定義コードの場合にリカバリを行う動作の流れの一例を表すフローチャートを示す。
【００４２】
まず、ステップＳ１００では、パケット推定部５４がヘッダ部のコードの解析を行う。本実施の形態では、図３に示した対応関係を参照して、コードの解析を行っている。次のステップＳ１０２では、未定義コードであるか否か判断し、未定義コードでない場合は、データ化けが発生していないため本処理を終了する。一方、未定義コードである場合は、データ化けが発生しているため、ステップＳ１０４に進む。
【００４３】
ステップＳ１０４では、解析した未定義コードに基づいて元コードを推定する。図６には、本実施の形態における未定義コードと、推定コードとの対応関係を示す。例えば、未定義コードが「００００」である場合は、元コードとして「１０００」、「０１００」、「００１０」、及び「０００１」が挙げられる。これらのコードのうち「００１０」及び「０００１」は未定義コードである。そのため、未定義コード「００００」から推定される元コードとしては、図６に示すように「１０００」（Ａｃｋ）及び「０１００」（Ｗｒｉｔｅ＿Ｗｏｒｄ）が推定される。なお、元コードの推定方法は特に限定されず、例えば、図６に示した対応関係を記憶部（図示省略）に記憶させておき、当該対応関係に基づいて推定してもよい。また例えば、元コードの推定を行い、図３に示した対応関係に基づいて推定コードのうち定義コードであるものを推定コードとしてもよい。
【００４４】
次のステップＳ１０６では、パケット推定部５４が推定コード及び推定コードのパケット長を出力する。当該出力に応じて、次のステップＳ１０８では、カウンタ回路５５がパケット長のカウントを開始する。カウンタ回路５５のカウント値（信号ｗｏｒｄ＿ｃｏｕｎｔ）は、コード決定部５８（ＬＵＴ回路７６０）に出力される。また、パケット推定部５４は、信号ｃｏｄｅ＿ｈｏｌｄにより先頭アドレスをコード決定部５８（ＬＵＴ回路７６）に出力する。
【００４５】
さらに、ＳＱ回路６０は、信号ｃｏｍｐ＿ｅｎをデータパターン比較部５６のｃｏｍｐ回路６５、６７、６９、７１、及び７３に出力する。データパターン比較部５６のｃｏｍｐ回路６５、６７、６９、７１、及び７３は信号ｃｏｍｐ＿ｅｎに応じて比較動作を開始する。
【００４６】
次のステップＳ１１０では、受信したパケットのパケット長が推定コード長に達したか否か、カウンタ回路５５のカウント値により判断する。カウント値に達した場合は、ステップＳ１１２へ進む。なお、推定コードが複数有る場合は、複数の推定コードに応じたパケット長のうち、最短のパケット長に達した場合に、ステップＳ１１２へ進む。
【００４７】
ステップＳ１１２では、データパターンの比較を行う。本実施の形態では、推定コードのパケット長に応じたパケットの終了位置を含むデータパターンと、予めパケットの終了位置として定めておいたデータパターン（以下、「期待データパターン」という）とを比較する。本実施の形態のパケットでは、図４に示したように、パケットの終了後、次パケットとの間のアイドル期間に、「ｍａｒｋ」が少なくとも４ワード挟まれている。当該「ｍａｒｋ」は、パケットの終わりの判断材料となる。ＣＲＣコードは、「０」にはならないため、パケットの終了位置を含むデータパターンは、パケットの種類にかかわらず、「≠０」、「０」、「０」、「０」、「０」となる。そのため、本実施の形態では、推定コードのパケット長に応じたパケットの終了位置を含むデータパターンが、「≠０」、「０」、「０」、「０」、「０」と一致するか否か判断する。具体的には、ｃｏｍｐ回路７３が第１ワードを「０００００００」と比較する。ｃｏｍｐ回路７１が第１ワードの１つ後のワードを「０００００００」と比較し、ｃｏｍｐ回路６９が第１ワードの２つ後のビットを「０００００００」と比較し、ｃｏｍｐ回路６７が第１ビットの３つ後のワードを「０００００００」と比較し、ｃｏｍｐ回路６５が第１ワードの４つ後のワードを「０００００００」と比較する。各ｃｏｍｐ回路６５、６７、６９、７１及び７３は、当該比較を各ワードに対して行う。ｏｒ回路７４は、全ての比較結果が一致しているか否かを示す信号をＬＵＴ回路７６に出力する。ＬＵＴ回路７６は、ｏｒ回路７４から出力された信号と、カウンタ回路５５のカウント値とに応じて、推定コード長の終了位置のデータパターンが期待データパターンと一致するか否か判断する。
【００４８】
次のステップＳ１１４では、データパターンを比較した結果、期待データパターンと一致するか否か判断する。一致しない場合は、ステップＳ１１６に進む。ステップＳ１１６では、他の推定コードが有るか否か、すなわち、推定コードのうち、未だパケットの終了位置までカウントしていないものがあるか否か判断する。有る場合は、ステップＳ１１０に戻り、本処理を繰り返す。一方、無い場合は、ステップＳ１２４へ進む。
【００４９】
一方、期待データパターンと一致する場合は、ステップＳ１１４からステップＳ１１８へ進む。ステップＳ１１８では、推定コードを元コードとして決定する。
【００５０】
図７には、パケットの終了位置を含むデータパターンの比較による元コードの決定について説明するための説明図を示す。図７（Ａ）は、ヘッダ部のコードが「０１００」パケットの種類が「Ｗｒｉｔｅ＿Ｗｏｒｄ」の場合の正常なパケットを示している。定義コード「０１００」に対応する未定義コードとしては、「００００」または、「１１００」が有る（図７（Ｂ）参照）。図７（Ｃ）及び図７（Ｄ）に示すように、未定義コード「００００」及び「１１００」のいずれの場合も、推定コードは、「１０００」（Ａｃｋ）、及び「０１００」（Ｗｒｉｔｅ＿Ｗｏｒｄ）となる。これらのうち、まず、カウント長が短い「１０００」（Ａｃｋ）についてデータパターンが一致するか否か判断する。Ａｃｋは、パケット長が１であるため、ＬＵＴ回路７６は、カウンタ回路５５のカウント値がパケット長の１と最小ｍａｒｋ数を足した５の場合に、当該カウント値が５のパケットを開始点としたパケットのデータパターンが期待データパターンである「≠０」、「０」、「０」、「０」、「０」と一致する可否か判断する。図７に示した具体例では、一致しないため、次に、「０１００」（Ｗｒｉｔｅ＿Ｗｏｒｄ）についてデータパターンが一致するか否か判断する。Ｗｒｉｔｅ＿Ｗｏｒｄは、パケット長が７であるため、ＬＵＴ回路７６は、カウンタ回路５５のカウント値がパケット長の７と最小ｍａｒｋ数を足した１１の場合に、当該カウント値が１１のパケットを開始点としたパケットのデータパターンが期待データパターンである「≠０」、「０」、「０」、「０」、「０」と一致する可否か判断する。図７に示した具体例では、一致するため、元コードが「０１００」であると決定する。
【００５１】
次のステップＳ１２０では、元コードに対応するパケットが再送可なパケットであるか否か判断する。本実施の形態では、再送可能なパケットの種類が予め定められている。例えば、送信側の装置で再送するための準備ができているパケット（「Ｗｒｉｔｅ」や「Ｒｅａｄ」等）については、再送可なパケットとして定めている。また、パケットに対する応答である「Ａｃｋ」や「Ｎａｃｋ」等については、再送を必要としないため、再送不可なパケットとして定めている。本実施の形態では、このようなパケットの種類と再送可であるか否かとの情報とが対応付けられて予めＬＵＴ回路７６に記憶されている。
【００５２】
ＬＵＴ回路７６が再送可なパケットであると判断した場合は、ステップＳ１２２に進む。ステップＳ１２２では、予め定められた再送要求を表す信号（ＮＡＣＫ＿ＲＥＱ）を送信側の装置に出力した後、本処理を終了する。なお、当該パケットに続いて次のパケットを受信している場合、次の受信パケットの受信終了までに再送要求を出力すれば間に合うが、次の受信パケットの受信終了までに再送要求が出力できない場合は、下記のステップＳ１２４と同様に予め定められたシステムエラーの発生を通知する信号を出力するようにしてもよい。
【００５３】
一方、ＬＵＴ回路７６が再送不可なパケットであると判断した場合は、ステップＳ１２４へ進む。ステップＳ１２４では、予め定められたシステムエラーの発生を通知する信号（ＣＯＤＥ＿ＥＲＲ）を出力した後、本処理を終了する。
【００５４】
以上説明したように、上記各実施の形態の通信装置５０では、パケット推定部５４が、受信したパケットのヘッダ部のコードを解析して、未定義コードである場合は、未定義コードから変化前の元コードを推定する。推定コードに定義付けられているパケットの種類及びパケット長に応じて、推定コードの終了位置までカウンタ回路５５でカウントすると、コード決定部５８が、パケットの終了位置を含む予め定められた範囲内のデータパターンがパケットの終了位置を示す予め定められた期待データパターンと一致するか否か判断する。期待データパターンと一致する場合は、推定コードを元コードとして決定する。また決定した元コードに定義付けられているパケットが再送可として定められているパケットである場合は、再送要求をパケットの送信側の装置に出力する。
【００５５】
ヘッダ部のコードが未定義コードに変化した場合、パケットの種類及びパケット長が不明となるため、ＣＲＣエラーとして検出することが困難になる。しなしながら本実施の形態の通信装置５０では、このように未定義コードに変化した場合であっても、受信したパケットの異常（データ化けの有無）を検出することができ、異常である場合は、リカバリすることができる。
【００５６】
なお、受信したパケットのヘッダ部のコードを解析して未定義コードであるか否かを判定し、未定義コードの場合にリカバリを行う動作の流れ（図５参照）は、本実施の形態に限定されない。図８には、当該動作のその他の一例の流れを表すフローチャートを示す。
【００５７】
ステップＳ２００及びステップＳ２０２は、上記動作（図５参照）のステップＳ１００及びステップＳ１０２に対応している。ステップＳ２００及びステップＳ２０２では、ステップＳ１００及びステップＳ１０２と同様に、パケット推定部５４が受信したパケットのヘッダ部のコードを解析し、未定義コードでなければ本処理を終了し、未定義コードである場合は、ステップＳ２０４へ進む。
【００５８】
ステップＳ２０４では、受信したパケットが「Ｍａｒｋ」状態から変化した時点を起点として、受信データをモニタし、次のステップＳ２０６では、モニタしたデータパターンを期待データパターンと比較する。具体的には、受信したパケットのデータパターンをデータパターン比較部５６により期待データパターンと比較する。
【００５９】
次のステップＳ２０８では、期待データパターンと一致するか否か判断し、一致しない場合は、ステップＳ２１０へ進む。ステップＳ２１０では、受信したパケットが再び「Ｍａｒｋ」状態に変化したか否か判断する。すなわち、パケットが終了したか否か判断する。変化した場合は、ステップＳ２２０へ進む。一方、変化していない場合は、ステップＳ２０４に戻り、受信データのデータパターンのモニタと期待データパターンとの比較を繰り返す。
【００６０】
一方、ステップＳ２０８で期待データパターンと一致すると判断した場合は、ステップＳ２１２へ進む。ステップＳ２１２では、コード決定部５８が、受信したデータの個数からパケット長を推定する。具体的には、「Ｍａｒｋ」状態に変化した起点からカウンタ回路５５でカウントを開始し、期待データパターンと一致すると判断した時点のカウンタ回路５５のカウント値に基づいて、パケット長を推定する。次のステップＳ２１４では、コード決定部５８が、未定義コードと、推定したパケット長とに基づいて元コードを決定する。
【００６１】
次のステップＳ２１６、ステップＳ２１８、及びステップＳ２２０は、上記動作（図５参照）のステップＳ１２０、ステップＳ１２２、及びステップＳ１２４にそれぞれ対応している。ステップＳ２１６〜ステップＳ２２０では、ステップＳ１２０〜ステップＳ１２２と同様に、再送可として定められているパケットであるか否か判断する。再送可である場合は、再送要求を送信側の装置に出力した後、本処理を終了し、また再送不可である場合は、予め定められたシステムエラーの発生を通知する信号を出力した後、本処理を終了する。
【００６２】
このように動作した場合であっても、上述した場合と同様に、受信したパケットのヘッダ部が未定義コードに変化した場合であっても、受信したパケットの異常（データ化けの有無）を直ちに検出することができ、異常である場合は、リカバリすることができる。また、本実施の形態の通信装置５０では、異常を検出するまでの時間が短縮される。
【００６３】
また、本実施の形態で用いた期待データパターンは、具体的一例であり、パケットの種類にかかわらずパケットの終了位置を判断することができるパターンであれば特に限定されるものではない。
【００６４】
また、本実施の形態では、１ビットのデータ化けが生じている場合について説明したが、２ビット以上のデータ化けが生じている場合は、ＣＲＣコードにより、ＣＲＣエラーとして検出するようにしている。
【００６５】
また、本実施の形態では、データパターン比較部５６をＦＦ回路、ｃｏｍｐ回路、及びｏｒ回路により構成したがこれに限らず、例えば、期待データパターンを格納したＬＵＴ回路等により構成してもよい。また、本実施の形態では、パケット推定部５４、データパターン比較部５６、及びコード決定部５８をハード（各回路）により構成しているがこれに限らず、ＣＰＵ等により予め定められたプログラムを実行することにより上記動作の少なくとも一部を実施するよう、ソフトウエア的に処理を行うように構成してもよい。
【００６６】
また、本実施の形態の制御装置１１では、主制御装置１２及び機器制御装置１４の両方に通信装置５０が設けられている場合について説明したが、いずれか一方に通信装置５０を設けるようしてもよい。なお、少なくともパケットを受信する側の装置には通信装置５０を設けることが好ましい。
【００６７】
また、本実施の形態では、通信装置５０を、制御装置１１（主制御装置１２及び機器制御装置１４）に適用した場合について説明したがこれに限らない。シリアル通信でパケットを受信する装置であれば適用する装置について限定されるものではない。
【００６８】
また、定義コード、未定義コード、及び推定コードは、具体的一例であり、本実施の形態（図３及び図６）に限定されるものではない。なお、上述のように未定義コードから推定した推定コードのコード長に基づいて終了位置を判断しているため、一つの未定義コードに対して推定される推定コードが複数有る場合は、各推定コードのパケット長が異なることが好ましい。
【００６９】
また、上記各実施の形態は本発明の一例であり、本発明の主旨を逸脱しない範囲内において状況に応じて変更可能であることはいうまでもない。本実施の形態で説明した画像形成装置１０及び通信装置５０等の構成や動作等は一例であり、本発明の主旨を逸脱しない範囲内において状況に応じて変更可能であることは言うまでもない。
【符号の説明】
【００７０】
１０  画像形成装置
１１  制御装置
１２  主制御装置
１４  機器制御装置
５０  通信装置
５２  パケット推定部
５４  パケット推定部
５５  カウンタ回路
５６  データパターン比較部
５８  コード決定部
【図１】
2015037281.tif 000003
【図２】
2015037281.tif 000004
【図３】
2015037281.tif 000005
【図４】
2015037281.tif 000006
【図５】
2015037281.tif 000007
【図６】
2015037281.tif 000008
【図７】
2015037281.tif 000009
【図８】
2015037281.tif 000010