(57)【要約】【課題】複数の通信装置をカスケード接続した通信システムにおいて、宛先の通信装置まで適切に通信パケットを送信することができるようにする。【解決手段】メイン制御部１０１は、自身からみてｎ段先の他の通信装置宛の情報を発信する際に、ｎ段までの残段数と上記情報とを含む通信データに対する誤り判定コード（ＣＲＣ）を作成し、このＣＲＣを通信データと共に前段サブ制御部１１１へ送信する。前段サブ制御部１１１は、受信した通信データに対するＣＲＣを作成し、受信したＣＲＣと比較する。一致するときは、残段数により上記情報が自身宛のものかどうかを判定する。自身宛のものでない場合は残段数を１段減らした新たな通信データと、この新たな通信データに対するＣＲＣとを作成し、作成したＣＲＣを、新たな通信データと共に第３通信装置１２１へ送信する。各サブ制御部１１１，１２１は、自身宛の通信データかどうかは、残段数をみれば良い。【選択図】図１
2014007695.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信装置がカスケード接続された通信システムであって、
自身からみてｎ段先の他の通信装置宛の情報を発信する第１通信装置が、前記ｎ段までの残段数と前記情報とを含む通信データに対する誤り判定コードを作成し、この誤り判定コードを前記通信データと共に次段の第２通信装置へ送信するように構成されており、
前記第２通信装置が、前記第１通信装置より受信した通信データに対する誤り判定コードを作成し、この誤り判定コードを受信した誤り判定コードと比較して、一致するときは当該通信データに含まれる残段数により前記情報が自身宛のものかどうかを判定し、自身宛のものでない場合は前記残段数を１段減らした新たな通信データと、この新たな通信データに対する誤り判定コードとを新たに作成し、作成した誤り判定コードを、前記新たな通信データと共に次段の第３通信装置へ送信するように構成されていることを特徴とする、
カスケード接続による通信システム。
【請求項２】
前記第１通信装置は、前記他の通信装置が次段の通信装置であるときは第１識別情報、それ以外であるときは前記第１識別情報と異なる第２識別情報を、前記通信データに含めて前記第２通信装置へ送信するように構成されており、
前記第２通信装置は、受信した通信データに含まれる残段数を参照して前記他の通信装置が自身でも前記第３通信装置でもないと判定したときは当該通信データに含まれる第２識別情報をそのままとし、他方、前記他の通信装置が前記第３通知装置と判定したときは前記通信データに含まれる第２識別情報を前記第１識別情報に書き換えるように構成されていることを特徴とする、
請求項１記載の通信システム。
【請求項３】
前記第２通信装置は、前記作成した誤り判定コードと受信した誤り判定コードとが一致しない場合は、前記第３通信装置で確実に誤りと判定される内容の擬似誤り判定コードを作成し、作成した擬似誤り判定コードを、前記誤りコードに代えて、前記新たな通信データと共に前記第３通信装置へ送信するように構成されていることを特徴とする、
請求項１又は２記載の通信システム。
【請求項４】
前記第１通信装置は、前記他の通信装置に対して、前記通信データに対する応答又は不応答とは区別される自動送信パケットの送信を要求するコマンドを含んで前記通信データを生成するように構成されており、
前記他の通信装置は、前記コマンドに応答する自動送信パケットを、通信路が空いているタイミングで前記第１通信装置宛に返信するように構成されていることを特徴とする、
請求項１、２又は３記載の通信システム。
【請求項５】
前記コマンドは、前記自動送信パケットの送信要求回数を含んでおり、前記第１通信装置は、前記送信要求回数を記録するとともに、前記自動送信パケットを受信する度に、記録した前記送信要求回数を減じるように構成されていることを特徴とする、
請求項４記載の通信システム。
【請求項６】
前記第２通信装置は、受信した前記通信データをバッファリングし、前記他の通信装置が自身でないと判定し、かつ、当該通信データ以外の通信対象情報を保有しているときは、通信路の状況に応じて、前記通信データの前記第３通信装置への送信と、前記通信対象情報の送信先の装置への送信との優先順位を決定するように構成されていることを特徴とする、
請求項１ないし５のいずれかの項記載の通信システム。
【請求項７】
それぞれカスケード接続される複数の通信装置の初段となる通信装置であって、
次段の通信装置との間でシリアル通信を行う通信制御手段と、
送信バッファ及び受信バッファを有するバッファ部と、
自身からみてｎ段先の通信装置宛の情報と、前記ｎ段までの残段数と、前記ｎ段先の通信装置宛の情報及び残段数を含む通信データに対する誤り判定コードとを作成し、作成した通信データ及び誤り判定コードを前記送信バッファに保持させるとともに、前記受信バッファに保持されている前記ｎ段先の通信装置からの情報に対する所定の処理を実行する処理手段と、
前記送信バッファに保持されている通信データ及び誤り判定コードをシリアルデータに変換し、変換したシリアルデータを前記通信制御手段を通じて次段の通信装置に向けて送信するとともに、前記次段の通信装置から前記通信制御手段を通じて受信したシリアルデータをパラレルデータに変換し、変換したパラレルデータを前記受信バッファに保持させるデータ変換手段と、を備えたことを特徴とする、
通信装置。
【請求項８】
それぞれカスケード接続される複数の通信装置の初段以外の通信装置であって、
前段の通信装置及び次段の通信装置との間でシリアル通信を行う通信制御手段と、
送信バッファ及び受信バッファを有するバッファ部と、
前段の通信装置より誤りコードと共に受信した通信データに対する誤り判定コードを作成するとともに、この誤り判定コードと受信した誤り判定コードとを比較し、一致した場合は、当該前段の通信装置からみてｍ段先の通信装置宛の情報と共に前記通信データに含まれるｍ段までの残段数に基づき、自身が送信先であるか否かを判定し、自身宛のものでない場合は前記残段数を１段減らした新たな通信データと、この新たな通信データに対する誤り判定コードとを新たに作成し、作成した誤り判定コードを、前記新たな通信データと共に前記送信バッファに保持させるとともに、前記ｍ段先の通信装置からの情報が受信されたときは当該情報を前記受信バッファに保持させる処理手段と、
前記送信バッファに保持されている通信データ及び誤り判定コードをシリアルデータに変換し、変換したシリアルデータを前記通信制御手段を通じて次段の通信装置に向けて送信するとともに、前記次段の通信装置から前記通信制御手段を通じて受信したシリアルデータをパラレルデータに変換し、変換したパラレルデータを前記受信バッファに保持させる第１データ変換手段と、
前記受信バッファに保持されている前記次段の通信装置より受信したパラレルデータをシリアルデータに変換し、変換したシリアルデータを前記通信制御手段を通じて前段の通信装置に向けて送信する第２データ変換手段と、を備えたことを特徴とする、
通信装置。
【請求項９】
シリアル通信時の１ビット幅を送信するのに要するカウント数を決定するための分周カウンタをさらに備えており、
前記通信制御手段は、前記送信バッファに保持されている通信データの数を受け取り、受け取った通信データ数が多い場合は前記分周カウンタの値を小さくすることにより、１ビット送信に要する時間を短くするように構成されることを特徴とする、
請求項７又は８記載の通信装置。
【請求項１０】
前記通信データは、スタートビットに続く上位いくつかのビットのうち、少なくとも１ビットが前記スタートビットと異なる論理レベルの通信認識ビットとして含むことを特徴とする、
請求項７又は８記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の通信装置がカスケード接続された通信システムに関する。
【背景技術】
【０００２】
例えば、電子写真方式を採用する画像形成装置の制御には、メイン制御部による集中制御方式が採用されていることが多い。しかし、このような画像形成装置では、制御の一点集中のためにメイン制御部が備えるＣＰＵ（Central Processing Unit）にかかる負荷が増大する。そのため、パフォーマンス低下を防止する観点から、メイン制御部には、できるだけ高性能のＣＰＵが必要となっていた。
最近は、画像形成装置における負荷の増大に伴い、制御系統を分散し、メイン制御部を中心として、負荷ユニットに設けられた複数のサブ制御部との協働で、画像形成処理を分散制御することも行われている。この場合、メイン制御部から物理的に離れた複数のサブ制御部まで制御通信束線を引き回す必要があり、束線コストも増加する傾向にある。
【０００３】
そのため、画像形成装置を構成する複数の制御部を、それぞれサブＣＰＵ、あるいは、ＡＳＩＣ（Application Specific Integrated Circuit）に分割し、分散制御することも行われている。分散制御を行う場合、ＣＰＵ間、あるいは、ＣＰＵとＡＳＩＣ間、または、ＡＳＩＣとＡＳＩＣ間のデータのやり取りにシリアル通信が適用されることが多い。また、データのやり取りにおいては、通信パケットが用いられることが多い。
【０００４】
シリアル通信で使われる通信線に着目しても、単純にメインＣＰＵとサブＣＰＵ（ＡＳＩＣを含む。以下、サブＣＰＵと記載する場合、ＡＳＩＣをも含めるものとする。）間で１対１に対応させると、サブＣＰＵの個数だけ通信線が増加する。そこで、複数のサブＣＰＵをカスケード接続し、後段のサブＣＰＵに対する通信を前段のサブＣＰＵが中継することで、通信線の使用を最低限に抑えた、カスケード接続による通信システムが提案されている。
【０００５】
例えば、特許文献１には、通信制御装置を搭載した装置からみた場合のカスケード接続先の装置の相対アドレスを決定し、この相対アドレスを用いてカスケード接続先の装置との通信を行う通信システムが開示されている。この通信システムでは、マスター側であるメインＣＰＵと、スレーブ側であるサブＣＰＵとの間で通信を行う。その際、メインＣＰＵと、スレーブ側のサブＣＰＵの後段に接続されるサブＣＰＵ（メインＣＰＵからみた場合、カスケード接続先のサブＣＰＵ）との間でも通信を行う。このような通信形態では、通信線を共有することができるため、通信線の数と長さを最小限に抑えられるという利点がある。
【０００６】
特許文献２に開示された通信システムでは、メインＣＰＵが、カスケード接続された最終端に位置するサブＣＰＵまでのカスケード段数を判定する。具体的には、サブＣＰＵが通信パケット内のＩＤ番号（自身への通信と認識するための番号）に「＋１」したＩＤ番号をカスケード接続先へと順次転送していく。最終端に位置するサブＣＰＵが所定時間以上カスケード接続先から応答がない場合は、自身が最終端のＣＰＵと判断する。そして、自身が最終端であることを示すＩＤを通信パケットに含め、前段のサブＣＰＵ群を経由して、メインＣＰＵに向けてデータを送信する。これにより、メインＣＰＵが最終端までのカスケード段数を把握することができる。そして、以降は、メインＣＰＵはどの段数のサブＣＰＵに対して通信すべきかが分かることとなる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−３２１０２７号公報
【特許文献２】特開２００２−４４０８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、カスケード接続を前提とする従来の通信システムでは、通信線へのノイズの混入等により、通信パケットに含まれるデータに歪みが生じることがある。このデータの歪みは、処理が正確に行えなくなる等の問題の原因となる。
【０００９】
例えば、特許文献１での相対アドレスを指定する箇所、特許文献２でのＩＤを指定する箇所にそれぞれノイズが重畳した場合を想定する。ノイズの重畳により、相対アドレス、あるいは、ＩＤが誤って解釈される場合がある。その結果、本来はメインＣＰＵに直接接続されるサブＣＰＵへの通信が、誤ってカスケード接続された別のサブＣＰＵへ行われてしまうことがある。それに加え、本来必要とされる通信が行われないため、システム全体の動作が、異常終了してしまう場合もある。
【００１０】
このようなノイズに対する通信品質を確保する手段として、通信パケットに含まれるデータの誤りを検知する方式が存在する。例えば、通信パケットの最終フレーム位置にＣＲＣ（Cyclic Redundancy Check：巡回冗長検査コード）やチェックサムを付加する手法である。しかし、ＣＲＣやチェックサムを付加しても、カスケード接続による通信の場合、以下のような特有の問題が残る。
【００１１】
すなわち、通信パケットを受信したサブＣＰＵにおいて、データの誤りチェックのために通信パケットの全てをバッファした後に、カスケード接続先へと通信パケットを転送すると、バッファの時間だけ転送が遅れることになる。そして、そのような処理がカスケード接続された各サブＣＰＵで行われると、カスケード接続の段数分だけ、実効的な通信ボーレートが低減することになる。
【００１２】
この通信ボーレートの低減を最小限にするために、メインＣＰＵからの通信パケットを前段のサブＣＰＵが受信している最中に、後段のサブＣＰＵへと通信パケットの転送を開始する方法も提案されている。しかし、この場合は、前段のサブＣＰＵでＣＲＣを検証し、必要に応じてＣＲＣを再計算するよりも前に、通信パケットの転送が行われてしまう。そのため、後段のサブＣＰＵでは、有効なＣＲＣによるデータ誤り検知が不可能となる。
【００１３】
本発明は、複数の通信装置をカスケード接続した通信システムにおいて、宛先の通信装置まで適切に通信パケットを送信することができるようにすることを課題とする。
【課題を解決するための手段】
【００１４】
上記の課題を解決するため、本発明は、複数の通信装置がカスケード接続された通信システム及び通信装置を提供する。
本発明の通信システムは、自身からみてｎ段（ｎは自然数）先の他の通信装置宛の情報を発信する第１通信装置が、前記ｎ段までの残段数と前記情報とを含む通信データに対する誤り判定コードを作成する。そして、この誤り判定コードを前記通信データと共に次段の第２通信装置へ送信する。
また、前記第２通信装置が、前記第１通信装置より受信した通信データに対する誤り判定コードを作成し、この誤り判定コードを受信した誤り判定コードと比較する。一致するときは、当該通信データに含まれる残段数により前記情報が自身宛のものかどうかを判定する。自身宛のものでない場合は前記残段数を１段減らした新たな通信データと、この新たな通信データに対する誤り判定コードとを新たに作成し、作成した誤り判定コードを、前記新たな通信データと共に次段の第３通信装置へ送信する。
【００１５】
本発明の通信装置は、それぞれカスケード接続される複数の通信装置の初段となる通信装置であって、通信制御手段、バッファ部、処理手段、及びデータ変換手段を備える。
通信制御手段は、次段の通信装置との間でシリアル通信を行う。バッファ部は送信バッファ及び受信バッファを有する。
処理手段は、自身からみてｎ段（ｎは自然数）先の通信装置宛の情報と、前記ｎ段までの残段数と、前記ｎ段先の通信装置宛の情報及び残段数を含む通信データに対する誤り判定コードとを作成する。そして、作成した通信データ及び誤り判定コードを前記送信バッファに保持させるとともに、前記受信バッファに保持されている前記ｎ段先の通信装置からの情報に対する所定の処理を実行する。
データ変換手段は、前記送信バッファに保持されている通信データ及び誤り判定コードをシリアルデータに変換し、変換したシリアルデータを前記通信制御手段を通じて次段の通信装置に向けて送信する。また、前記次段の通信装置から前記通信制御手段を通じて受信したシリアルデータをパラレルデータに変換し、変換したパラレルデータを前記受信バッファに保持させる。
【００１６】
本発明の他の通信装置は、それぞれカスケード接続される複数の通信装置の初段以外の通信装置であって、通信制御手段、バッファ部、処理手段、第１及び第２データ変換手段を備える。通信制御手段は、前段の通信装置及び後段の通信装置との間でシリアル通信を行う。バッファ部は送信バッファ及び受信バッファを有する。
処理手段は、前段の通信装置より誤りコードと共に受信した通信データに対する誤り判定コードを作成するとともに、この誤り判定コードと受信した誤り判定コードとを比較する。一致した場合は、当該前段の通信装置からみてｍ段（ｍは自然数）先の通信装置宛の情報と共に前記通信データに含まれるｍ段までの残段数に基づき、自身が送信先であるか否かを判定する。自身宛のものでない場合は前記残段数を１段減らした新たな通信データと、この新たな通信データに対する誤り判定コードとを新たに作成する。そして、作成した誤り判定コードを、前記新たな通信データと共に前記送信バッファに保持させるとともに、前記ｍ段先の通信装置からの情報が受信されたときは当該情報を前記受信バッファに保持させる。
第１データ変換手段は、前記送信バッファに保持されている通信データ及び誤り判定コードをシリアルデータに変換し、変換したシリアルデータを前記通信制御手段を通じて次段の通信装置に向けて送信する。また、前記次段の通信装置から前記通信制御手段を通じて受信したシリアルデータをパラレルデータに変換し、変換したパラレルデータを前記受信バッファに保持させる。
第２データ変換手段は、前記受信バッファに保持されている前記次段の通信装置より受信したパラレルデータをシリアルデータに変換し、変換したシリアルデータを前記通信制御手段を通じて前段の通信装置に向けて送信する。
【発明の効果】
【００１７】
本発明では、カスケード接続された各通信装置が、受信した通信データの発信元から送信先である通信装置までの残段数を参照するだけで、自身への通信なのか、他の通信装置宛の通信データなのかの判定が可能となる。しかも、受信した通信データの誤りがある場合は、そのことを各段での受信時点で確認することができるため、誤った通信データが拡散される事態を回避することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明を適用した通信システムの実施の形態例を示す構成図。
【図２】シリアル通信Ｉ／Ｆの内部構成図。
【図３】送信バッファへ書き込むときの通信パケット構成例を示す図。
【図４】受信バッファから読み出す際の通信パケット構成例を示す図。
【図５】通信パケットのコマンド（ＣＭＮＤ）のデータ構造例を示す図。
【図６】前段サブ制御部１１１の動作手順説明図。
【図７】通信パケットの送受信タイミングの説明図。
【図８】自動送信パケットの送受信タイミングの説明図。
【図９】自動送信パケットの調整のシーケンス説明図。
【図１０】自動送信パケットを保持するバッファの説明図。
【図１１】後段サブ制御部における自動送信パケットの調停動作の手順説明図。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態例を説明する。
［通信システムの構成］
図１は、本実施形態にかかる通信システムの構成例を示す図である。
本実施形態の通信システムは、それぞれ隣合うものと相互にシリアル通信が可能となるように、メイン制御部１０１と前段サブ制御部１１１と後段サブ制御部１２１とをカスケード接続した通信システムとして構成される。メイン制御部１０１は、例えば画像形成装置における全体的な動作制御を司るメイン制御ユニットに搭載され、各サブ制御部１１１，１２１は、画像形成装置の画像形成ユニットあるいは搬送機構等に搭載されるサブ制御ユニットに搭載される。
【００２０】
各制御部１０１，１１１，１２１は、通信に関しては同一の機能を備えており、相互の通信には、二線式の調歩同期式（ＵＡＲＴ）シリアル通信を採用して、パケット単位でデータを送受信する。このようなカスケード接続を採用することで、メイン制御部１０１と前段サブ制御部１１１との間の通信線を後段サブ制御部１２１のために共有することができる。そのため、線材や通信線のコネクタのコスト低減に有益となる。
なお、図１の例では、前段サブ制御部１１１と後段サブ制御部１２１の２段の接続としたが、これ以上のサブ制御部が接続される構成であっても良い。
【００２１】
メイン制御部１０１は、各サブ制御部１１１、１２１の動作状態を監視するとともに、各サブ制御部１１１、１２１に指示を与える動作の主体となる。メイン制御部１０１からは、前段サブ制御部１１１、あるいは、後段サブ制御部１２１に対して、シリアル通信を介して指示を与えることができる。後段サブ制御部１２１に指示を与える場合には、前段サブ制御部１１１を経由することになる。
【００２２】
メイン制御部１０１は、所定のコンピュータプログラムを実行して周辺装置を使用しながら種々のデバイスを制御したり、後述する通信データの生成、誤り検出コードの生成、その他の処理を実行するＣＰＵ１０２を備える。また、ＲＯＭ（Read Only Memory）１０４、ＲＡＭ（Random Access Memory）１０５を備えている。ＲＯＭ１０４には、ＣＰＵ１０２が読取可能なデータやコンピュータプログラムが保持される。ＲＡＭ１０５は、ＣＰＵ１０２のワーク用のメモリとして用いられる。
メイン制御部１０１は、また、前段サブ制御部１１１との間のシリアル通信を制御するシリアル通信Ｉ／Ｆ（Inter face）１０３を備えている。
【００２３】
メイン制御部１０１は、さらに、ＷＤＴ（Watch dog timer）１０６、ＩＲＱ（Interrupt ReQuest）１０７、ポート１０８、タイマ１０９を備えている。ＷＤＴ１０６は、ＣＰＵ１０２の動作状態を監視する。ＩＲＱ１０７は、必要に応じてＣＰＵ１０２の処理の中断を促し、処理を切り替えるための割り込み要因を受け付ける。ポート１０８は、複数の汎用入出力ポートを有する。タイマ１０９は、モータ駆動信号などを生成するための高速周期割り込みを発生する。
【００２４】
前段サブ制御部１１１と後段サブ制御部１２１は、通信機能に関してはメイン制御部１０１と同じなので、共通する部分についての説明を省略する。ただし、本発明はＣＰＵ１０２が同じものに限定されるわけではなく、特にシリアル通信Ｉ／Ｆ１０３と同等の機能が各サブ制御部１１１，１２１において実現されれば良い。
【００２５】
次に、図２を参照して、シリアル通信Ｉ／Ｆ１０３について説明する。
シリアル通信Ｉ／Ｆ１０３は、カスケード接続された他の制御部との間でシリアル通信を行う際の通信制御手段として機能するものである。
シリアル通信Ｉ／Ｆ１０３は、データカウント部２０１、クロック生成部２０２、送信バッファと受信バッファを内部に持つバッファ部２０４を備えている。また、ＰＳ（パラレル−シリアル）変換部２０５，２０７、ＳＰ（シリアル−パラレル）変換部２０６，２０８、バッファコントローラ２０９を備えている。このシリアル通信Ｉ／Ｆ１０３は、ＣＰＵバス２０３を介して、ＣＰＵ１０２等との間で、データ、コマンドその他の情報の受け渡しを行う。
【００２６】
ＰＳ変換部２０５，２０７は、入力されたパラレルデータをシリアルデータに変換し、変換したシリアルデータを、バッファコントローラ２０９を介してバッファ部２０４の送信バッファに保持させる。ＳＰ変換部２０６，２０８は、入力されたシリアルデータをパラレルデータに変換し、変換したパラレルデータを、バッファコントローラ２０９を介してバッファ部２０４の受信バッファに保持させる。いずれも、個別にデータ送受信とデータ転送レートの設定が可能である。
【００２７】
データカウント部２０１はバッファ部２０４内に保持されている送信待ちデータの数をカウントする。クロック生成部２０２はデータカウント部２０１からバッファ部２０４に保持されている送信待ちデータ数を受け取り、クロック生成を行う。
バッファコントローラ２０９は、バッファ部２０４の送信バッファに保持されている各種情報を、ＰＳ変換部２０５，２０７へと転送する制御、あるいは、ＳＰ変換部２０６，２０８で変換された情報をバッファ部２０４の受信バッファへ転送する制御を行う。
【００２８】
図２を参照し、メイン制御部１０１と前段サブ制御部１１１との間のシリアル通信における、シリアル通信Ｉ／Ｆ１０３の動作について説明する。
なお、前段サブ制御部１１１と後段サブ制御部１２１との間の通信の動作も、メイン制御部１０１と前段サブ制御部１１１との間の通信の動作と同じである。
【００２９】
シリアル通信Ｉ／Ｆ１０３のバッファ部２０４内の送信バッファには、メイン制御部１０１のＣＰＵ１０２からＣＰＵバス２０３を介して送信用の情報が書き込まれる。この情報が上述した送信待ちデータとなる。送信待ちデータは、ＰＳ変換部２０５に読み出され、ＰＳ変換後に前段サブ制御部１１１のシリアル通信／Ｆ１１３に向けて送信される。
前段サブ制御部１１１のシリアル通信／Ｆ１１３からの受信データは、ＳＰ変換部２０６によってＳＰ変換された後にバッファ部２０４の受信バッファへと格納される。格納された受信データは、ＣＰＵ１０２によってＣＰＵバス２０３を介してリードされる。
【００３０】
データカウント部２０１は、ＣＰＵバス２０３からバッファ部２０４に送信待ちデータが書き込まれる度に、１カウントアップする。また、ＰＳ変換部２０５へ送信待ちデータが読み出される度に１カウントダウンする。このようにして、送信待ちデータの数を計測する。
同様に、データカウント部２０１は、ＳＰ変換部２０６でシリアルデータに変換され、バッファ部２０４の受信バッファに保持される度に１カウントアップする。また、ＣＰＵバス２０３を通じてバッファ部２０４の受信バッファが読み出される度に１カウントダウンする。
【００３１】
クロック生成部２０２はデータカウント部２０１からバッファ部２０４に保持されている送信待ちデータの数を受け取り、受け取ったデータ数に応じてクロック生成を行う。具体的には、データ数に応じて分周カウンタの最大値を切り替える。この分周カウンタは、シリアル通信時のデータの１ビット幅を送信するのに要するカウント数を決定するためのものである。つまり、送信待ちデータの数が多い場合には、通信ボーレートを上げるべく分周カウンタ値を小さくすることで、１ビット送信に要する時間を短くする。結果として、送信バッファ内の送信待ちデータを早く減らすことができるようになる。
【００３２】
次に、送信待ちデータの出力タイミングについて説明する。本実施形態では、シリアル通信Ｉ／Ｆ１０３へ入力されるシステムクロックでカウントアップするカウンタを用い、送信待ちデータの１ビット分を生成できるカウント値までのクロックをカウントする。その後、カウンタを「０」クリアし、再び所定カウント値までカウントする動作を繰り返すことで、ＰＳ変換部２０５へのデータ出力タイミングを作り出している。
【００３３】
次に、メイン制御部１０１とカスケード接続された後段サブ制御部１２１との間のシリアル通信形態について説明する。
メイン制御部１０１と後段サブ制御部１２１との間の通信は、前段サブ制御部１１１のシリアル通信Ｉ／Ｆ１１３を中継して行う。そのため、ここでは、前段サブ制御部１１１の動作、特に、前段サブ制御部１１１が備えるシリアル通信Ｉ／Ｆ１１３の動作を中心に説明する。
前段サブ制御部１１１のシリアル通信Ｉ／Ｆ１１３の構成は、図２に示したメイン制御部１０１が備えるシリアル通信Ｉ／Ｆ１０３と同様である。そのため、同様の構成要素については、図２と同じ符号を用いて説明を省略する。
【００３４】
前段サブ制御部１１１は、メイン制御部１０１（（シリアル通信Ｉ／Ｆ１０３）からパケット化された通信データ（以下、「通信パケット」と称する。）を受信し、受信した通信パケットをＳＰ変換部２０６でパラレルデータに変換した後、バッファ部２０４の受信バッファにこれを保持させる。その後、ＣＰＵ１１２で後述するデータ書き換え等を行った後、書き換えられた通信パケットをＰＳ変換部２０７でシリアルデータに変換する。そして、変換されたシリアルデータを後段サブ制御部１２１（シリアル通信Ｉ／Ｆ１２３）へ送信する。
【００３５】
また、後段サブ制御部１２１（シリアル通信Ｉ／Ｆ１２３）からメイン制御部１０１宛の通信パケットをシリアル通信で受信し、受信したシリアルデータをＳＰ変換部２０８でパラレルデータに変換した後、バッファ部２０４の受信バッファへ保持させる。その後、この保持されている情報をＰＳ変換部２０５でシリアルデータに変換し、変換したシリアルデータをメイン制御部１０１へ送信する。
【００３６】
シリアル通信の際のデータフォーマット例を図３及び図４を参照して説明する。図３は送信バッファへ書き込む際の通信パケット構成例、図４は受信バッファから読み出す際の通信パケット構成例である。
図３及び図４において、ＭＯＳＩ（Master Out Slave In）は、主局であるメイン制御部１０１からの通信パケットを、従局である前段サブ制御部１１１で受信ことを意味する。また、ＭＩＳＯ（Master In Slave Out）は、従局である前段サブ制御部１１１からの通信パケットを主局であるメイン制御部１０１で受信することを意味する。
【００３７】
図３を参照すると、メイン制御部１０１からは、ＣＭＮＤ（コマンド）、ＡＤＲＳ（アドレス）、ＤＡＴＡ（データ）、巡回冗長検査コード（ＣＲＣ：Cyclic Redundancy Check）がこの順に配列された通信パケットが送信される。
前段サブ制御部１１１（ＣＰＵ１１２）は、受信した通信パケットに含まれるＣＲＣと、ＣＭＮＤ,ＡＤＲＳ及びＤＡＴＡから自身で作成したＣＲＣとを比較する。一致している場合は、ＡＣＫ（コマンド）をメイン制御部１０１へ送信する。図示を省略したが、受信したＣＲＣと前段サブ制御部１１１で作成したＣＲＣとが不一致の場合は、ＮＡＣＫ（コマンド）をメイン制御部１０１に送信する。ＣＭＮＤ等をフレームデータという場合がある。
メイン制御部１０１からの通信パケットに含まれるＣＭＮＤには、ＡＤＲＳで指定される領域へのデータ書き込み（ライト）命令、あるいは上記領域からのデータ読み出し（リード）命令等が含まれる。また、読み出したデータの後段の制御部への転送指定を含む場合もある。  
【００３８】
ここで、図３に示したフレームデータについて、簡単に説明する。調歩同期式のシリアル通信では、通信開始を表すスタートビット、複数ビットのデータ、データの誤りを検出するパリティビット、通信の終了を判別するストップビットを一つのフレームデータとする。例えば、上述したＡＣＫのように、このフレームデータ単体で使用することもできる。また、ＣＭＮＤ、ＡＤＲＳ、ＤＡＴＡ、ＣＲＣと複数のフレームデータを組み合わせて、一つの通信パケットとして構成し、上述したライト命令やリード命令を実行する通信という形で通信における意味合いを持たせることもできる。
【００３９】
ＣＲＣについては、従来技術で述べた通りであるが、再度、詳しく説明する。ＣＲＣは、任意長のデータ入力に対し、固定サイズの値を出力する関数の一種であり、連続する誤りを検出するための誤り検出符号の一種でもある。例えば、対象となる通信データをある定数で除算し、その剰余を検査用の数値として用いる。パリティ・チェックサム方式に比べて誤り検出精度が高く、高速に演算することができ、１ビットずつの走査により計算できる利点がある。また、これを実現するためのハードウェア回路が容易などの特徴を持つことから、ネットワークからハードウェア回路におけるデータ転送に幅広く使われている。後述するが、本実施形態においては、このＣＲＣを通信パケットを受信する際に自身で作成し、この作成したＣＲＣと受信されてきたＣＲＣとを比較する。
【００４０】
図３に戻り、メイン制御部１０１は、前段サブ制御部１１１からＡＣＫを受信することで、通信が成功したと判断し、次の通信に備える。他方、ＮＡＣＫを受信した場合、通信が失敗したと判断し、従前に送信したデータを再送する。再送は、前段サブ制御部１１１からＡＣＫが返信されるまで繰り返す。
また、前段サブ制御部１１１からのＡＣＫあるいはＮＡＣＫが受信できない場合、メイン制御部１０１は、所定時間待機した後、従前に送信した通信パケットを再送する。ただし、複数回の再送の結果、全てＮＡＣＫが返信され、あるいは、無応答の場合、通信が確立できなかったとして、通信エラー表示を行い、通信を停止する。
【００４１】
図４は、図３とは通信パケットのフレームデータの配列が異なる。図４の例では、メイン制御部１０１からは、ＣＭＮＤ、ＡＤＲＳ、ＣＲＣの順に配列された通信パケットが送信される。ＣＭＮＤには、指定アドレス（ＡＤＲＳ）からのデータ（ＤＡＴＡ）の読み出し命令が含まれているものとする。
前段サブ制御部１１１は、受信した通信パケットに含まれるＣＭＮＤ及びＡＤＲＳに対してＣＲＣを作成する。そして、受信した通信パケットに含まれるＣＲＣと、自身で作成したＣＲＣとを比較する。一致した場合、ＡＣＫ、指定アドレスに対して読み出したＤＡＴＡ、ＣＲＣをメイン制御部１０１に送信する。前段サブ制御部１１１から送信するＣＲＣは、送信するＤＡＴＡに対して算出する。
他方、受信したＣＲＣと、自身が作成したＣＲＣとが不一致の場合、ＮＡＣＫをメイン制御部１０１に送信することは、図３の場合と同様である。この場合には、ＤＡＴＡ及びＣＲＣは送信しない。
メイン制御部１０１は、前段サブ制御部１１１からＡＣＫを受信することで、通信の成功を確認し、次に続くＤＡＴＡ及びＣＲＣを受信することになる。
【００４２】
前段サブ制御部１１１からの通信パケットに誤りがないかどうかは、ＣＲＣを用いたチェックにより判定する。すなわち、メイン制御部１０１において受信したＣＭＮＤ等のフレームデータについてのＣＲＣを作成し、受信したＣＲＣと、メイン制御部１０１自身で作成したＣＲＣとを比較する。一致した場合は、受信した通信パケットが信頼できるものとして扱う。メイン制御部１０１がＮＡＣＫを受信した場合、あるいは、受信したＣＲＣで不一致となった場合の処理は、図３の場合と同様である。すなわち、従前のリード実行動作を再度実施する。
【００４３】
なお、メイン制御部１０１から前段サブ制御部１１１への通信パケットにはノイズ混入などがなく、通信が成功したときであっても、前段サブ制御部１１１からのＡＣＫにノイズが混入することがある。この場合、メイン制御部１０１は、ＡＣＫと認識することができない。この場合は、従前の通信パケットを再送することになる。
【００４４】
次に、通信パケットに含まれるＣＭＮＤについて、詳しく説明する。
ＣＭＮＤのデータ構造例を図５に示す。図５の例では、ＣＭＮＤは、１１ビットで構成される。すなわち、通信パケットのフレーム開始を示すスタートビット（start）、続いて８ビットのデータ（Data）、データ誤りを検知するパリティビット（parity）、フレームの終了を示すストップビット（stop）の順で構成される。
８ビットのデータ（Data）の内訳は、上位の２ビット（7,6）が通信認識ビット、上位から３ビット目(5)が自身への通信か他のカスケード接続先への通信かを示す識別情報（ＩＤ）である。上位から４及び５ビット目（4,5）がライト（データ書込）実行、あるいは、リード（データ読出）実行かを示す指示コマンド、下位３ビット（2,1,0）は、情報の送信先までのカスケードの残段数をそれぞれ示している。
【００４５】
通信認識ビットは、受信データの異常による誤動作を防止する役割を果たす。例えば、通信線へのノイズの混入により、受信した通信パケットが所定間隔連続で"Ｌ（Ｌｏｗ）"となった場合を想定する。非通信時の通信線の論理が"Ｈ（Ｈｉｇｈ）"であるとすると、スタートビット（start）の論理は"Ｌ"である。メイン制御部１０１，前段サブ制御部１１１は、ノイズによる通信線の"Ｌ"を検知すると、通信が開始されたと判断する。すると、各制御部１０１，１１１は、以降の"Ｌ"入力をスタートビットに続くデータ（Data）及びパリティビット（parity）と判断することになる。最終的には、ストップビット（stop）の論理が、想定の"Ｈ"に対して"Ｌ"まで連続する場合もある。その場合、フレーム長が異常という形でエラー判定できる。しかし、ストップビット（stop）の位置ではノイズが"Ｈ"側に振れた場合には、エラーとは判断されないことになる。このような不具合を防止するため、スタートビット（start）に続くデータ（Data）の上位２ビットを通信認識ビットとして、"ＨＬ"、"ＬＨ"、"ＨＨ"のいずれかの組み合わせとした。これにより、ノイズによる誤動作を防止することができる。
【００４６】
続くＩＤを示す１ビット（5)は、情報の送信先が次段の制御部であることを示すＩＤである。例えば、メイン制御部１０１から送信される際、ＩＤが"Ｌ"であれば、前段サブ制御部１１１は、情報の送信先が自身宛てと判断する。他方、ＩＤが"Ｈ"であった場合は、送信先が後段サブ制御部１２１宛と判断する。
指定コマンドを示す２ビット（4,3）は、例えば"ＨＬ"ならばライト実行、"ＬＨ"ならばリード実行という形で割り当てる。
【００４７】
カスケードの残段数を示す下位３ビットは、何段先の装置（制御部）への通信かを示すものである。例えば残段数が"０００"ならば自身宛の通信、残段数が"００１"ならば次段のカスケード先への通信、残段数が"０１０"ならば自身から２つ後段のカスケード先への通信であることを示す。この残段数を示すビットは、後段のカスケード先へと転送する際に、デクリメントしていく。
【００４８】
本実施形態では、メイン制御部１０１及びサブ制御部１１１、１２１は同様の構成であり、かつ、相対的なアドレスの割振りをするために、特定のポートを使った認識を実施していない。つまり、前段サブ制御部１１１及び後段サブ制御部１２１は、特定ポートの情報などから自身がメイン制御部１０１からどれだけ後段にカスケード接続された位置にあるのかを認識することができない。そのため、自身宛の通信パケットかどうかをＩＤ及びカスケードの残段数を参照して判断する。そして、自身宛の通信パケットの場合は受信処理を行い、自身宛の通信パケットでない場合は中継器として動作するようにした。また、中継器として動作するときはＩＤ、及び／又は、残段数を書き換えて次段のカスケード先へ転送するようにした。例えばＩＤが"Ｈ"で残段数が"００１"の場合は、次段のカスケード先への通信パケットということになるので、ＣＭＮＤのＩＤを"Ｌ"、残段数を"０００"に書き換えて、次段のカスケード先へ送信する。
これにより、通信パケットを受信した制御部は、自身宛の通信なのか、後段のカスケード先への通信なのかを判断するだけで良くなる。その結果、相対アドレスの割り振りなどの構成を採らなくても、簡易な回路構成で、相対アドレスを割り振った場合と同等の機能を実現することができる。
なお、本実施形態では、宛先を示す情報としてＩＤと残段数を示す下位３ビットという２つの情報を用いている。これは、宛先を示す情報の信頼度を高めるためである。宛先を示す情報として残段数を示す下位３ビットのみ使用するようにしてもかまわない。また、残段数を示す情報のビット数はカスケード接続可能な段数に応じて設定されればよく、３ビット以外のビット数でもかまわない。
【００４９】
［通信形態］
次に、上記のように構成される通信システムにおいて、メイン制御部１０１から、前段サブ制御部１１１を経由して後段サブ制御部１２１に対して通信を行う場合の手順を、より具体的に説明する。
図６は、この場合の前段サブ制御部１１１の動作手順説明図である。
【００５０】
メイン制御部１０１は、自身からみれば後段サブ制御部１２１は２段先なので、ＣＭＮＤに含まれるＩＤを"Ｈ"、カスケード段数を"００１"とする。また、ＣＭＮＤに対するＣＲＣを作成する。そして、これらを含む通信パケットを生成し、前段サブ制御部１１１に送信する。
前段サブ制御部１１１は、メイン制御部１０１から上記の通信パケットを受信すると（Ｓ６０１）、通信パケットをバッファリングする。そして、その内容をデコードし、ＣＭＮＤに含まれるＩＤ及びカスケード段数のビット情報から、その通信パケットの通信先を判別する（Ｓ６０２）。本例では、後段サブ制御部１２１宛の通信パケットなので、受信したＣＭＮＤに対するＣＲＣを作成する（Ｓ６０３）。そして、作成したＣＲＣと受信したＣＲＣとを比較し、一致するかどうかを判定する（Ｓ６０４）。ＣＲＣが一致した場合には（Ｓ６０４：Ｙｅｓ）、受信したＣＭＮＤに含まれるＩＤ及びカスケード段数を示すビット情報を書き換える（Ｓ６０５）。すなわち、ＣＭＮＤに含まれるＩＤを"Ｈ"から"Ｌ"、残段数を"００１"から"０００"に書き換える。
【００５１】
その後、書き換えたＩＤ及び残段数に応じてＣＲＣを再計算する（Ｓ６０６）。通信パケット内のＣＭＮＤにおけるビット情報が変更されているため、それ応じてＣＲＣも変更しないと、後段サブ制御部１２１において正常なエラー判定ができなくなるためである。
【００５２】
一方、Ｓ６０４において、ＣＲＣが一致しなかった場合には（Ｓ６０４：Ｎｏ）、ＣＲＣに所定値を設定する（Ｓ６０７）。具体的には、ＣＲＣを通常の演算式で求められるものとは異なったものに設定し、擬似ＣＲＣを作成する。擬似ＣＲＣを作成するのは、以下の理由による。
再計算時に通常の演算式のままＣＲＣを計算すると、ノイズ影響を含んだ状態、つまり、ＣＭＮＤのビット情報に誤りが生じた状態で再計算を実行することになってしまう。すなわち、後段サブ制御部１２１では、再計算されたＣＲＣに基づいて、受信したデータに基づき内部で生成したＣＲＣと受信したＣＲＣの一致を見るため、このデータに誤りが生じている状態を後段のカスケード先で検知することが出来なくなる。この事態を放置すると、ノイズ影響が後段に伝播してしまう不具合が生じるおそれがある。このような事態の発生を防止するために、本実施形態では、擬似ＣＲＣを作成する。
【００５３】
このように、後段サブ制御部１２１で敢えてエラー処理がされるようにすることで、後段サブ制御部１２１へのライト命令又はリード命令の送信を防止し、メイン制御部１０１からの再送を促すことができる。
前段サブ制御部１１１は、ＣＲＣの再計算あるいは擬似ＣＲＣの作成を終えると、そのＣＲＣあるいは擬似ＣＲＣと変更されたＣＭＮＤとを含む通信パケットを、後段サブ制御部１２１へ送信する（Ｓ６０８）。
【００５４】
ところで、前段サブ制御部１１１において、通信パケットの中継を行う場合は、必ず一定の遅延が生じる。また、通信以外の時間、通信線は使用されていない。以下、このことを、図７を参照して説明する。
図７はカスケード接続先との間の通信タイミングの説明図である。上段はメイン制御部１０１と前段サブ制御部１１１、下段は前段サブ制御部１１１と後段サブ制御部１２１との間の通信タイミングである。ＭＯＳＩは従局への送信、ＭＩＳＯは従局からの受信を表す。
【００５５】
前段サブ制御部１１１では、メイン制御部１０１から通信パケット７０１を受信すると、それをバッファ部２０４の受信バッファにバッファリングする。そして、それが自身宛のものか、後段サブ制御部１２１へ転送するものかを判断する。自身宛でないときは、通信パケットに含まれるＣＭＮＤの内容を書き換える処理を行う。そのために、後段サブ制御部１２１へ送信（中継）するときの通信パケット７０２は、通信パケット７０１に対して遅延ｄ１が生じる。
また、後段サブ制御部１２１に対して通信パケット７０２を送信した後、応答の通信パケット７０３を受信する場合は、原則的には、受信した通信パケット７０３に対してＣＲＣ等の再計算などをすることなく、そのまま転送する。ただし、受信した通信パケット７０３をバッファ部２０４の受信バッファにバッファリングする。そして、最初のフレームデータが何かを判断するため、通信パケット７０３は、メイン制御部１０１に応答するときの通信パケット７０４に対して遅延ｄ２が生じる。この間、通信線は使用されていない。
【００５６】
メイン制御部１０１から前段サブ制御部１１１への通信パケット７０１の送信前、後段サブ制御部１２１から前段サブ制御部１１１への通信パケット７０４の送信前、あるいは通信パケット７０４の送信後に通信を行わない期間中も、通信線は使用されていない。
また、メイン制御部１０１と前段サブ制御部１１１を繋ぐ２つの通信線のうち１線に注目すると、メイン制御部１０１から前段サブ制御部１１１への通信パケット７０１の送信中、ＭＯＳＩ（主局から従局）では通信線Ｒｘ０を使用している。しかし、ＭＩＳＯでは通信線Ｔｘ０を使用していない。逆に、前段サブ制御部１１１からメイン制御部１０１へ通信パケット７０４への送信中、ＭＯＳＩで通信線Ｒｘ０は使われておらず、ＭＩＳＯでは通信線Ｔｘ０を使っている状態にある。
【００５７】
本実施形態では、このような通信線の空いているタイミングで、各サブ制御部１１１，１２１からメイン制御部１０１に向けて通信パケットを自動送信する。この機能を、本実施形態では、サブ制御部自動送信機能と呼ぶ。また、各サブ制御部１１１，１２１から自動送信される通信パケットを、特に「自動送信パケット」と称する。以下、サブ制御部自動送信機能について、図８を参照して説明する。
【００５８】
メイン制御部１０１と前段サブ制御部１１１との間の自動送信は、メイン制御部１０１から前段サブ制御部１１１へ通信パケットを送信する前、及び、前段サブ制御部１１１からメイン制御部１０１への通信パケットの送信が終了した後に可能となる。同様の関係が、前段サブ制御部１１１と後段サブ制御部１２１との間にも成り立つ。図８の例では、前段サブ制御部１１１からメイン制御部１０１への受信線Ｒｘ０のうち、空いているタイミングで自動送信パケット８０１を挿入する。また、後段サブ制御部１２１から前段サブ制御部１１１への受信線Ｒｘ１のうち、空いているタイミングで自動送信パケット８０２を挿入する。
【００５９】
自動送信パケット８０１，８０２は、最初のフレームに、ＡＣＫやＮＡＣＫとは異なる判別コマンド、図８に示した例では「Po_Cmnd」が割り当てられる。この判別コマンドは、自動送信パケットの開始であることを示す開始コマンドである。これにより、自動送信パケットとメイン制御部１０１の要求に対する応答の通信パケット（ＡＣＫとＤＡＴＡなど）との判別が容易となる。
また、判別コマンドの後に、現在送信された自動送信パケットが最初に送信したものから何番目の自動送信パケットであるかを示すＩＤ、ＤＡＴＡ（メイン制御部１０１に伝達すべきデータ）、ＣＲＣの順にフレームに割り当てられる。ＩＤは、メイン制御部１０１が送信すべき旨を設定した順序に従う番号（昇順／降順）である。これにより、自動送信パケットが、複数パケットのうち何番目のものかの判別が容易となる。
【００６０】
この自動送信パケット８０１，８０２の送信は、後段サブ制御部１２１に対するＣＭＮＤにおいて指定された送信要求回数に応じた回数、及び、順序で行われる。メイン制御部１０１は、送信要求回数及び順序をメモリ等に記録するとともに、自動送信パケット８０１，８０２を受信する度に、記録した送信要求回数を減じるように構成される。
自動送信パケット８０１，８０２の内容は、例えば、後段サブ制御部１２１が監視するポート情報やアナログ信号のＡ／Ｄ（アナログ／デジタル）変換後のデータ、タイマーモジュールのステータスなど、状態が刻々と変更していく情報である。
【００６１】
自動送信パケット８０２を受信する側（図８の例では前段サブ制御部１１１）からすると、自身が通信パケットを送信していないにも関わらず、受信するものである。そのため、前段サブ制御部１１１は、それが通信線へのノイズによる影響なのか、自動送信パケット８０２なのかを判別する必要がある。また、後段サブ制御部１２１がメイン制御部１０１に返信する自動送信パケットなのか、メイン制御部１０１の要求に対する応答の通信パケット（ＡＣＫとＤＡＴＡなど）なのかの判別も必要となる。
【００６２】
そこで、前段サブ制御部１１１は、通信パケットを受信し、それをバッファ部２０４の受信バッファへ送る際に、最初のフレームを参照する。上述した通り、ＡＣＫやＤＡＴＡであれば、メイン制御部１０１の要求に対する応答の通信パケットと判別し、他方、「Po_Cmnd」が割り当てられている場合は、自動送信パケットと判別する。
【００６３】
図８に示す通り、前段サブ制御部１１１は、後段サブ制御部１２１からの通信パケットの受信が完了して、それをメイン制御部１０１へ転送するまでは、自動送信を禁止する。前段サブ制御部１１１がメイン制御部１０１へと送信する通信パケットと、後段サブ制御部１２１から受信しメイン制御部１０１へと転送する通信パケットとの衝突が発生しないように調停するためである。この調停のシーケンスを図９に示す。
【００６４】
図９において、「自動送信」は自動送信パケットの送信である。「カスケード」はカスケード接続先への送信を要求する通信である。「通常送信」は、カスケード接続の前段から後段への通常の通信パケットの送信である。「応答送信」はメイン制御部１０１からの命令に応答する送信である。「応答スルー送信」は、後段サブ制御部１２１からの応答送信を受信した前段サブ制御部１１１がその応答送信をメイン制御部１０１へそのままスルーとする送信である。
【００６５】
前段サブ制御部１１１からメイン制御部１０１への自動送信９０１は、前段サブ制御部１１１がメイン制御部１０１からの通信パケットを受信していない間に行う。また、後段サブ制御部１２１から前段サブ制御部１１１への自動送信９０２は、後段サブ制御部１２１が前段サブ制御部１１１からの通信パケットを受信していない間に行う。
【００６６】
カスケード９０３では、接続先を指定する分、通常送信とは異なるＩＤ及びＣＲＣを持つ。カスケード９０３の発生を検知した前段サブ制御部１１１は、自動送信を停止する。
【００６７】
通常送信９０４では、あたかもメイン制御部１０１から送信された通信パケットを後段サブ制御部１２１が直接受信したかのようにするために、上記のようにＩＤの変更及びＣＲＣの再演算を実施した後に、通常送信という形で送信する。本実施形態ではカスケード段数を１段（前段サブ制御部１１１と後段サブ制御部１２１のみ）の関係で示しているため、この段階で通常送信となる。しかし、カスケード段数が２以上の場合、前段サブ制御部１１１で示した通常送信は、カスケード送信（メイン制御部１０１のカスケード送信とは異なるＩＤ及びＣＲＣを持つ）となる。
【００６８】
応答送信９０５は、メイン制御部１０１からの命令がライト命令の場合には、ＡＣＫ（あるいは、ＮＡＣＫ）のみを返信する。他方、リード命令の場合には、ＡＣＫに続き、指定のアドレスのＤＡＴＡ及びＣＲＣを１つの通信パケットとして返信する。
【００６９】
応答スルー送信９０６ではＣＲＣの再計算は実施されない。つまり、メイン制御部１０１からは、あたかも後段サブ制御部１２１から直接応答を受けたかのように見えることになる。
【００７０】
自動送信９０７は、後段サブ制御部１２１から前段サブ制御部１１１に対し、通信線Ｒｘ１が空いている時間帯に行われる。ただし、応答スルー送信９０６が実施されているときは、その途中であっても後段サブ制御部１２１から自動送信ができる。後段サブ制御部１２１から見ると、前段サブ制御部１１１からの通信がない限り、自身が送信すべき通信パケットの送信が完了した時点で、自動送信が可能となる。
自動送信９０８も自動送信９０７と同様の関係が成り立つ。つまり、前段サブ制御部１１１から見ると、メイン制御部１０１からの通信がなく、かつ、後段サブ制御部１２１からの自動送信を除く通信がない場合、自身が送信すべき通信パケットの送信が完了した時点で、自動送信可能となる。
【００７１】
通常送信９０９は、メイン制御部１０１から前段サブ制御部１１１へ対して行われる。この場合、前段サブ制御部１１１は、自身への通信であると認識するため、カスケード接続先である後段サブ制御部１２１へは、通信パケットを転送せず、自身で応答送信９１１を行う。この応答送信９１１の有無に関わらず、後段サブ制御部１２１は、前段サブ制御部１１１へ対して自動送信９１０を継続できる。
【００７２】
なお、前段サブ制御部１１１及び後段サブ制御部１２１は、自身が応答送信、あるいは、応答スルー送信を行う際には、自動送信を停止する。
【００７３】
後段サブ制御部１２１と前段サブ制御部１１１との間の調停は、上述した前段サブ制御部１１１とメイン制御部１０１との間の出力データ調停と同じ関係である。自身がカスケード接続先かどうかを意識しないでデータの調停ができるため、より簡易な構成設計が可能となる。
【００７４】
次に、ポーリングデータの識別と転送方法について説明する。前段サブ制御部１１１において、後段サブ制御部１２１から受信した通信パケットをそのまま転送すると、メイン制御部１０１は、受信した通信パケットが、どこから送信されたものかを特定することができない。特に、自動送信パケットは、前段サブ制御部１１１からのものなのか、後段サブ制御部１２１からのものなのかを判別できない。また、自動送信パケットを単純に転送してしまうと、自身の自動送信パケットの送信とカスケード接続先からの自動送信パケットの転送とが衝突する可能性がある。
そこで、本実施形態では、この衝突を避けるための調停を行う。具体的には、後段サブ制御部１２１からの通信パケット（あるいは自動送信パケット）を受信する際に、所定数の通信パケットをバッファ部２０４にバッファリングできるように制御する。この制御は、バッファコントロール部２０９が行う。制御されるのは、シリアル通信Ｉ／Ｆ１１３のバッファ部２０４である。この調停動作の手順を図１０を参照して説明する。
【００７５】
図１０を参照すると、前段サブ制御部１１１及び後段サブ制御部１２１のバッファ部２０４には、それぞれバッファ領域１００１，１００２が形成されている。これらのバッファ領域１００１，１００２は、共に、ポーリングデータ格納用バッファとカスケード接続先ポーリングデータ格納用バッファが形成されている。ポーリングデータ格納用バッファには、自身の自動送信パケットが格納される。カスケード接続先ポーリングデータ格納用バッファには、カスケード接続先からの自動送信パケットが格納される。
バッファコントロール部２０９は、バッファ領域１００２のポーリングデータ格納用バッファに格納された自動送信パケットを、一度、バッファ領域１００１のカスケード接続先ポーリングデータ格納用バッファに格納する。その後、前段サブ制御部１１１は、カスケード接続先ポーリングデータ格納用バッファに格納された後段サブ制御部１２１からの自動送信パケットと、自身が自動送信する自動送信パケットとの優先順位を決定する。優先順位は、例えば通信路Ｒｘ１の状況や自身の負荷状況に応じて決定する。その後、決定した順位で自動送信パケットを順次送信する。このようにして、衝突を防止する。
【００７６】
この場合の制御手順例を図１１に示す。図１１において、前段サブ制御部１１１のバッファコントロール部２０９は、受信中、あるいは、送信中の通信パケットの有無を確認する。つまり、ポーリングを行う（Ｓ１１０１）。パケット受信中であれば、受信完了まで所定時間待った後に再度確認する。パケット送信中であれば、所定時間待った後に再度確認をする（Ｓ１１０１：Ｙｅｓ）。
【００７７】
パケット送受信中でない場合（Ｓ１１０１：Ｎｏ）、バッファコントロール部２０９は、メイン制御部１０１又は後段サブ制御部１２１からの自動送信要求の有無を確認する（Ｓ１１０２）。自動送信要求があった場合は（Ｓ１１０２：Ｙｅｓ）、カスケード接続先からの通信パケットの受信の有無に関わらず、自動送信を実行する（Ｓ１１０５）。
他方、自動送信要求がなかった場合（Ｓ１１０２：Ｎｏ）、バッファコントロール部２０９は、カスケード接続先からの通信パケットの受信の有無を確認する（Ｓ１１０３）。カスケード接続先からの受信があり、かつ、自動送信パケットと判断した場合には（Ｓ１１０３：Ｙｅｓ）、カスケード接続先からの自動送信パケットをバッファ部２０４へと格納する（Ｓ１１０５）。カスケード接続先からの受信がない場合には（Ｓ１１０３：Ｎｏ）、バッファ部２０４への通信パケットの格納を行わない。
【００７８】
Ｓ１１０４でカスケード接続先からの自動送信パケットをバッファリングする際には、その転送順序を示すＩＤをインクリメントし、自動送信パケットの最終フレームのＣＲＣも再演算する。なお、受信したＣＲＣと自身の生成したＣＲＣが一致しない場合、Ｓ１１０５にてバッファした自動送信パケットを破棄する。
その後、自動送信を開始する（Ｓ１１０５）。全てのパケットが転送され、自動送信が終了すると（Ｓ１１０６：Ｙｅｓ）、バッファコントロール部２０９は、調停のための処理を終了する。バッファされた自動送信パケットで未転送のものがあれば（Ｓ１１０６：Ｎｏ）、Ｓ１１０１へと戻る。
なお、設定により自動転送を終了することもできる。
【００７９】
このように本実施形態では、前段サブ制御部１１１が、受信した通信パケットに含まれるＣＭＮＤ、特にＩＤ及びカスケードの残段数を参照して、自身宛の通信パケットか、後段への通信なのかを判断するだけで良い。そのため、通信ボーレートの減少を最低限に抑制することができる。
【００８０】
また、通信に際して、ノイズ混入の有無に応じて、デクリメントしたＣＭＮＤに基づいてＣＲＣを再演算し、又は、所定値に設定するため、有効に誤り検知を行うことができる。さらに、サブ制御部自動送信機能によって、通信線を有効活用して、通信ボーレートを向上させることもできる。
【００８１】
なお、本実施形態では、誤り判定コードとしてＣＲＣを用いた場合の例を示したが、チェックサムその他の誤り判定コードを用いても良い。
また、本実施形態では、通信データをパケット化して通信パケットとする例を示したが、必ずしもパケット化する必要はない。フレームデータのものを通信データとすることもできる。
また、本実施形態では、メイン制御部１０１が画像形成装置におけるメイン制御ユニット、各サブ制御部１１１，１２１が画像形成ユニットあるいは搬送機構等に搭載されるサブ制御ユニットに搭載されるものとして説明したが、この例に限定されない。通信機能を有する複数の装置によって分散制御を行う他の用途においても、本発明は適用が可能である。  
【符号の説明】
【００８２】
１０１・・・メイン制御部、１１１・・・前段サブ制御部、１２１・・・後段サブ制御部、１０２，１１２，１２２・・・ＣＰＵ、１０４、１１４，１２４・・・ＲＯＭ、１０５，１１５，１２５・・・ＲＡＭ、１０３，１１３，１２３・・・シリアル通信Ｉ／Ｆ。１０６、１１６，１２６・・・ＷＤＴ、１０７，１１７，１２７・・・ＩＲＱ、１０８，１１８，１２８・・・ポート、１０９，１１９，１２９・・・タイマ。２０１・・・データカウント部、２０２・・・クロック生成部、２０３・・・ＣＰＵバス、２０４・・・バッファ部。２０５，２０７・・・ＰＳ（パラレルシリアル）変換部、２０６，２０８・・・ＳＰ（シリアルパラレル）変換部、２０９・・・バッファコントローラ。
【図１】
2014007695.tif 000003
【図２】
2014007695.tif 000004
【図３】
2014007695.tif 000005
【図４】
2014007695.tif 000006
【図６】
2014007695.tif 000007
【図９】
2014007695.tif 000008
【図１０】
2014007695.tif 000009
【図１１】
2014007695.tif 000010
【図５】
2014007695.tif 000011
【図７】
2014007695.tif 000012
【図８】
2014007695.tif 000013