(57)【特許請求の範囲】
【請求項１】
印刷データに基づいて印刷手段を分担して制御する第１印刷制御装置及び第２印刷制御装置と、前記印刷制御装置からのコマンドに基づいて印刷用のメカニカル機構を駆動制御する駆動制御手段とを備えた印刷装置であって、
前記第１印刷制御装置は、
第１のコマンドを入力する第１入力手段と、
前記印刷制御装置の内部で第２のコマンドを生成するコマンド生成手段と、
前記第２のコマンドを前記第２印刷制御装置へ送信する第１通信手段と、
前記第１及び第２のコマンドを取得した順番に管理する第１管理手段と、
前記第１及び第２のコマンドを前記管理された順番で出力する第１指示手段と、
前記第１指示手段から受け付けたコマンドを前記駆動制御手段へ出力するための第１出力手段と、
前記出力手段に当該コマンドを出力させる同期手段と、
を備え、
前記第２印刷制御装置は、
前記第１のコマンドを入力する第２入力手段と、
前記第１通信手段から送信された前記第２のコマンドを受信する第２通信手段と、
前記第１及び第２のコマンドを取得した順番に管理する第２管理手段と、
前記第１及び第２のコマンドを前記管理された順番で出力する第２指示手段と、
前記第２指示手段から受け付けたコマンドを前記同期手段へ出力するための第２出力手段と、
を備え、
前記第１管理手段は、前記管理手段に管理されたコマンドの順番を再配列させる再配列手段を有し、
前記第１出力手段は、前記第１指示手段から受け付けたコマンドを前記同期手段へ出力し、
前記同期手段は、前記第１指示手段から受信したコマンドと前記第２指示手段から受信したコマンドとを比較し、両コマンドが一致すると、前記第１出力手段に当該コマンドを前記駆動制御手段へ出力させ、前記両コマンドが一致しない場合は、前記第１出力手段および前記第２出力手段へ前記両コマンドが一致しない旨の信号を出力し、
前記第１出力手段及び前記第２出力手段は、前記両コマンドが一致しない旨の信号を受信すると、各々前記第１指示手段、前記第２指示手段へリトライを要求し、
前記第１管理手段が前記リトライ要求を受け付けると、前記再配列手段は前記第１管理手段に管理されたコマンドの順番を再配列する、
ことを特徴とする印刷装置。
【請求項２】
前記再配列手段は、前記管理手段に管理されたコマンドを所定の順序に並び替えるソート手段であることを特徴とする請求項１に記載の印刷装置。
【請求項３】
前記再配列手段は、前記管理手段に管理されたコマンドの順番を循環させる循環手段であることを特徴とする請求項１に記載の印刷装置。
【請求項４】
前記第１印刷制御装置は、前記コマンドに優先順位を設定する優先順位設定手段を更に備え、
前記ソート手段は、前記第１管理手段に管理されたコマンドを優先順位の順番に並び替えることを特徴とする請求項２に記載の印刷装置。
【請求項５】
前記第１印刷制御装置は、前記第１管理手段に取得される前のコマンドにシリアル番号を付与する番号付与手段を更に備え、
前記ソート手段は、前記第１管理手段に管理されたコマンドを前記シリアル番号の順番に並び替えることを特徴とする請求項２に記載の印刷装置。
【請求項６】
前記印刷装置に備えられた複数の部品が前記第１印刷制御装置及び前記第２印刷制御装置に分担して接続されており、
前記第１印刷制御装置は、前記分担する前記部品の状態を検出する検出手段を更に備え、
前記コマンド生成手段は、前記検出手段の検出結果に基づき前記第２のコマンドを生成することを特徴とする請求項１乃至５のうちいずれか一項に記載の印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置における印刷手段を制御する印刷制御装置、印刷装置及び印刷装置における印刷制御方法に関する。
【背景技術】
【０００２】
例えば特許文献１には、インクを噴射する記録ヘッド（流体噴射手段）を複数個備えた印刷装置が開示されている。この印刷装置では、往復移動可能に設けられたキャリッジに、複数の印刷ヘッドと、複数の印刷ヘッドを駆動制御する複数の駆動制御部とが搭載されている。また、印刷装置の本体側には、各駆動制御部にデータを転送する複数のデータ処理部が搭載されている。キャリッジの往復移動を制御する主制御部には、所定数の印刷ヘッドにつき１つの駆動制御部と１つのデータ処理部とを１組とする回路セットが複数組接続されている。所定数の印刷ヘッドにつき１組の回路セットで処理を分担する構成なので、この印刷装置によれば、データ処理部１個当たりの処理の負荷が軽減される。
【０００３】
さらに記録ヘッドが多くなる場合は、主制御部自体を二以上設け、主制御部とデータ処理部と駆動制御部とを１組の回路セットとする印刷制御装置を１つの基板で構成し、このような基板を複数備える印刷装置を構成するとよい。このように印刷装置を構成すれば、多数の記録ヘッドを複数の印刷制御装置が分担して制御するため、記録ヘッドの個数がどんなに多くなっても、その個数に応じて印刷制御装置の個数を増やすことにより、印刷制御装置１個当たりの負担を相対的に小さくしつつ、必要な印刷処理速度を維持することができる。
【０００４】
また、複数の記録ヘッドの制御を担当する各印刷制御装置と、キャリッジの駆動や印刷媒体（シート）の搬送を制御する駆動制御装置とを別々に構成し、各印刷制御装置が印刷データから取得したコマンドを駆動制御装置へ送信する構成を採用した場合、各印刷制御装置から駆動制御装置へのコマンドの出力タイミングを同期させる必要がある。例えば、１つの印刷制御装置をマスター（マスター側の印刷制御装置）とし、他の印刷制御装置をスレーブ（スレーブ側の印刷制御装置）とする。そして、マスター側の印刷制御装置は、スレーブ側の印刷制御装置から受信したコマンドと、自身のコマンドとが揃った段階で、キャリッジ系及び搬送系の駆動制御装置（メカコントローラー等）へコマンドを送信する構成とする。このような構成であれば、別々の印刷制御装置により制御される各記録ヘッドのインク噴射処理と、駆動制御装置により制御される印刷媒体の搬送処理とが行われるタイミングを適切に制御することができる。
【０００５】
また、複数の印刷制御装置間で複数の記録ヘッドを分担するだけでなく、記録ヘッドへインクを供給する複数のインクカートリッジ、記録ヘッドのノズル目詰まりを検査するノズル検査装置など、印刷装置に複数個設けられるこれらの部品についても、複数の印刷制御装置に分担して接続し、各印刷制御装置間で負担を分担することが望ましい。ここで、通常、インクカートリッジには、インク残量やインク色などのインク関連情報が書き込まれた記憶素子が設けられ、各印刷制御装置は、担当するインクカートリッジの記憶素子にアクセスしてインク種ごとのインク残量などのインク関連情報を分担して管理する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２５５５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、複数の印刷制御装置において、ある印刷制御装置のみにその内部で個別にコマンド（内部コマンド）が発生する場合がある。例えば、印刷制御装置が担当するインクカートリッジのインク切れエラー（インクエンドエラー）やノズル検査装置のノズル目詰まりエラーなど、担当する記録ヘッド、インクカートリッジ、ノズル検査装置などの部品におけるエラーなどは、印刷制御装置の内部で発生した内部コマンドに該当する。
【０００８】
しかしながら、例えばマスター側の印刷制御装置で内部コマンドが発生すると、他のスレーブ側の印刷制御装置では内部コマンドが発生していない。このため、マスター側の印刷制御装置が内部コマンドを出力する際に同期をとるために、スレーブ側の印刷制御装置から同一の内部コマンドを待っても送られてくることがないので、この同期処理でタイムアウトになり内部コマンドを出力できないという問題がある。
【０００９】
本発明は、上記課題に鑑みてなされたものであり、その目的は、複数の印刷制御装置間で出力すべきコマンドが揃わないために同期がとれず発生するエラーを低減できる印刷制御装置、印刷装置及び印刷装置における印刷制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明は、印刷手段を分担して制御する複数の印刷制御装置と、前記印刷制御装置からのコマンドに基づいて印刷用のメカニカル機構を駆動制御する駆動制御手段とを備えた印刷装置における印刷制御装置であって、第１のコマンドを入力する入力手段と、前記印刷制御装置の内部で第２のコマンドを生成するコマンド生成手段と、前記第２のコマンドを他の前記印刷制御装置へ送信する通信手段と、前記第１及び第２のコマンドを取得した順番に管理する管理手段と、前記第１及び第２のコマンドを前記管理された順番で出力する指示手段と、前記指示手段から受け付けたコマンドを前記駆動制御手段へ出力するための出力手段と、前記複数の印刷制御装置の各出力手段にコマンドが揃うと、前記出力手段に当該コマンドを出力させる同期手段と、を備え、前記管理手段に管理されたコマンドの順番を変更して前記複数の印刷制御装置の前記各指示手段から出力されるコマンドの組合せを変更させる再配列手段と、を備えたことを要旨とする。
【００１１】
この発明によれば、コマンド生成手段により生成された第２のコマンドは、管理手段に取得順に格納されると共に、通信手段により他の印刷制御装置へ送信される。このため、第２のコマンドは当該印刷制御装置と他の印刷制御装置の各管理手段に格納される。他の印刷制御装置側において第２のコマンドが管理手段に取得されるまでの間に先に第１のコマンドが格納された場合、当該印刷制御装置と他の印刷制御装置間で管理手段のコマンド格納順が異なることになる。しかし、再配列手段が、管理手段に管理されたコマンドの順番を再配列して複数の印刷制御装置の各指示手段から出力されるコマンドの組合せを変更させる。少なくとも１回の再配列処理を行うことにより、複数の印刷制御装置の各指示手段から出力されるコマンドが揃うことになる。この結果、複数の印刷制御装置の各出力手段にコマンドが揃い、同期手段が出力手段に当該コマンドを出力させる。よって、複数の印刷制御装置間で出力すべきコマンドが揃わないために同期がとれず発生するエラーを低減できる。
【００１２】
本発明の印刷制御装置では、前記再配列手段は、前記管理手段に管理されたコマンドを所定の順序に並び替えるソート手段であることが好ましい。
この発明によれば、管理手段に管理されたコマンドは、ソート手段により所定の順序に並び替えられる。各印刷制御装置において各管理手段に管理されたコマンドが、同じ所定の順序で並び替えられることにより、基本的に１回のコマンドの並び替え（ソート）を行うことで、複数の印刷制御装置間で出力すべきコマンドが揃うことになる。よって、複数の印刷制御装置から出力すべきコマンドが揃わないために同期がとれず発生するエラーを効果的に低減できる。
【００１３】
本発明の印刷制御装置では、前記再配列手段は、前記管理手段に管理されたコマンドの順番を循環させる循環手段であることが好ましい。
この発明によれば、循環手段は、管理手段に管理されたコマンドの順番を循環させる。この結果、コマンドの順番がずれることで、複数の印刷制御装置間で出力すべきコマンドが揃うことになる。よって、複数の印刷制御装置間で出力すべきコマンドが揃わないために同期がとれず発生するエラーを低減できる。
【００１４】
本発明の印刷制御装置では、前記コマンドに優先順位を設定する優先順位設定手段を更に備え、前記ソート手段は、前記管理手段に管理されたコマンドを優先順位の順番に並び替えることが好ましい。
【００１５】
この発明によれば、管理手段に管理されたコマンドは、ソート手段により優先順位の順番に並び替えられる。この場合、基本的に１回の並び替え（ソート）により、複数の印刷制御装置の各指示手段から次回出力されるコマンドが揃うことになる。よって、複数の印刷制御装置間で出力すべきコマンドが揃わないために同期がとれず発生するエラーを効果的に低減できる。
【００１６】
本発明の印刷制御装置では、前記管理手段に取得される前のコマンドにシリアル番号を付与する番号付与手段を更に備え、前記ソート手段は、前記管理手段に管理されたコマンドをシリアル番号の順番に並び替えることが好ましい。
【００１７】
この発明によれば、管理手段に管理されたコマンドは、ソート手段によりシリアル番号の順番に並び替えられる。この場合、基本的に１回の並び替え（ソート）により、複数の印刷制御装置の各指示手段から次回出力されるコマンドが揃うことになる。よって、複数の印刷制御装置間で出力すべきコマンドが揃わないために同期がとれず発生するエラーを効果的に低減できる。
【００１８】
本発明の印刷制御装置では、前記番号付与手段は、前記シリアル番号を前記複数の印刷制御装置間で重複しないように付与することが好ましい。
この発明によれば、シリアル番号が複数の印刷制御装置間で重複しないように付与されるので、各印刷制御装置において異なるコマンドに同じシリアル番号が付与されることを回避できる。このため、なるべく１回の並び替え（ソート）により、複数の印刷制御装置の各指示手段から次回出力されるコマンドが揃うことになる。よって、複数の印刷制御装置間で出力すべきコマンドが揃わないために同期がとれず発生するエラーを効果的に低減できる。
【００１９】
例えばシリアル番号を順番に付与する構成であると、例えば一の印刷制御装置の内部で発生した第２のコマンドに付与された番号と同じ番号が、他の印刷制御装置の内部で発生した第２のコマンドに付与される場合が発生する。この場合、異なる第２のコマンドに同じシリアル番号が付されることになり、並び替えるべき順番を特定できなくなる。これに対し、各印刷制御装置間で番号が重複しないようにシリアル番号を付与するので、異なる印刷制御装置でそれぞれ発生した第２のコマンドを適切な順番に配列することができる。
【００２０】
本発明の印刷制御装置では、前記再配列手段は、前記同期手段で前記各出力手段にコマンドが揃わなかったことに起因して前記出力手段から再送要求を受け付けたときに、前記再配列処理を行うことが好ましい。
【００２１】
この発明によれば、同期手段で各出力手段にコマンドが揃わなかったことに起因して出力手段から再送要求を受け付けたときに、再配列処理は行われる。このため、再配列処理を行ったばかりに、それまで各管理手段で揃っていたコマンドの順番が、却って揃わなく事態を回避できる。このため、なるべく並び替え回数（ソート回数）を少なく、複数の印刷制御装置の各指示手段から次回出力されるコマンドが揃うことになる。よって、複数の印刷制御装置間で出力すべきコマンドが揃わないために同期がとれず発生するエラーを効果的に低減できる。
【００２２】
本発明の印刷制御装置では、前記同期手段は、前記各出力手段が受け付けた各コマンドが一致するか否かを判断し、当該各コマンドが一致しないと判断すると、前記出力手段を介して前記再配列手段に前記再配列の実施を要求することが好ましい。
【００２３】
この発明によれば、同期手段は、各出力手段が受け付けた各コマンドが一致するか否かを判断し、各コマンドが一致しないときには、出力手段を介して再配列手段に再配列処理の実施を要求する。例えば、再送要求時のうち、コマンドが一致しないことによる再送要求時に限り、再配列手段に再配列処理を行わせることができる。よって、無駄な再配列処理を極力回避できる。
【００２４】
本発明の印刷制御装置では、前記印刷装置に備えられた複数の部品が前記複数の印刷制御装置に分担して接続されており、前記分担する前記部品の状態を検出する検出手段を更に備え、前記コマンド生成手段は、前記検出手段の検出結果に基づき前記第２のコマンドを生成することが好ましい。
【００２５】
この発明によれば、印刷制御装置に分担して接続された部品の状態を検出する検出手段の検出結果に基づき生成された第２のコマンドは、その検出対象の部品を分担する一の印刷制御装置の内部のみに存在する。この場合でも、複数の印刷制御装置間で出力すべきコマンドが同期手段において揃わないことに起因するエラーの発生を低減できる。
【００２６】
本発明は、印刷データに基づいて印刷手段を分担して制御する複数の印刷制御装置と、前記印刷制御装置からのコマンドに基づいて印刷用のメカニカル機構を駆動制御する駆動制御手段とを備えた印刷装置であって、前記印刷制御装置として、上記発明に係る前記印刷制御装置を備えていることを要旨とする。
【００２７】
この発明によれば、上記発明に係る印刷制御装置を備えているので、この印刷装置によって、上記印刷制御装置の発明と同様の効果を得ることができる。
本発明は、印刷手段を分担して制御する複数の印刷制御装置と、前記複数の印刷制御装置からのコマンドに基づき印刷用のメカニカル機構を駆動制御する駆動制御手段とを備えた印刷装置における印刷制御方法であって、第１のコマンドを入力する入力段階と、前記印刷制御装置の内部で第２のコマンドを生成するコマンド生成段階と、前記第２のコマンドを他の前記印刷制御装置へ送信する送信段階と、前記第１及び第２のコマンドを取得した順番に格納する管理段階と、前記第１及び第２のコマンドを前記管理された順番で出力する指示段階と、前記格納されたコマンドの順番を再配列して前記複数の印刷制御装置における前記指示段階でそれぞれ出力されるコマンドの組合せを変更させる再配列段階と、を備えたことを要旨とする。この発明によれば、上記印刷制御装置に係る発明と同様の効果を得ることができる。
【図面の簡単な説明】
【００２８】
【図１】第１実施形態における印刷システムの模式側面図。
【図２】記録ヘッドの底面とインク供給装置とを示す模式図。
【図３】印刷システムの電気的構成を示すブロック図。
【図４】マスター／スレーブの各コントローラーの機能構成を説明するブロック図。
【図５】ジョブ制御部の構成を示すブロック図。
【図６】（ａ）〜（ｄ）キューの出力処理を説明する模式図。
【図７】ソート処理を伴うコマンド出力処理を説明するブロック図。
【図８】第２実施形態における循環処理を伴うコマンド出力処理を説明するブロック図。
【図９】（ａ）〜（ｄ）キューの出力処理を説明する模式図。
【図１０】（ａ）〜（ｄ）第３実施形態におけるキューの出力処理を説明する模式図。
【図１１】ソート処理を伴うコマンド出力処理を説明するブロック図。
【発明を実施するための形態】
【００２９】
（第１実施形態）
以下、本発明をラテラル方式のインクジェット式プリンターの印刷制御装置に具体化した第１実施形態を図１〜図７に従って説明する。
【００３０】
図１は、ラテラル方式のインクジェット式プリンターを備えた印刷システムの模式図である。図１に示すように、印刷システム１００は、画像データを生成する画像生成装置１１０と、画像生成装置１１０から受信した画像データを基に印刷データを生成するホスト装置１２０と、ホスト装置１２０から受信した印刷データに基づく画像を印刷する印刷装置の一例としてのラテラル方式のインクジェット式プリンター（以下、単に「プリンター１１」と称す）とを備えている。
【００３１】
画像生成装置１１０は、例えばパーソナルコンピューターにより構成され、その本体１１１内のＣＰＵが画像作成用ソフトウェアを実行することで構築される画像生成部１１２を備える。ユーザーは、画像生成部１１２を起動して入力装置１１３の操作でモニター１１４上で画像を作成し、入力装置１１３を操作して画像の印刷を指示する。すると、その画像に係る画像データが所定の通信インターフェイスを介してホスト装置１２０へ送信される。
【００３２】
ホスト装置１２０は、例えばパーソナルコンピューターにより構成され、その本体１２１内のＣＰＵがプリンタードライバー用ソフトウェアを実行することで構築されるプリンタードライバー１２２を備える。プリンタードライバー１２２は、画像生成装置１１０から受信した画像データを基に印刷データを生成し、プリンター１１に設けられた制御装置Ｃへ送信する。制御装置Ｃは、プリンタードライバー１２２から受信した印刷データに基づいてプリンター１１を制御し、プリンター１１に印刷データに基づく画像を印刷させる。なお、モニター１２３には、プリンター１１に制御用設定値を入力設定するためのメニュー画面や印刷対象の画像等が表示される。
【００３３】
次に、図１に示すプリンター１１の構成について説明する。なお、以下における明細書中の説明において、「左右方向」、「上下方向」をいう場合は、図１等の図面に矢印で示した方向を基準として示すものとする。また、図１において手前側を前側、奥側を後側とする。
【００３４】
図１に示すように、プリンター１１は、直方体状の本体ケース１２を備える。本体ケース１２内には、長尺状のシート１３を繰り出す繰出し部１４と、そのシート１３にインクの噴射により印刷を施す印刷室１５と、その印刷によりインクが付着したシート１３に乾燥処理を施す乾燥装置１６と、乾燥処理が施されたシート１３を巻き取る巻取り部１７とが設けられている。
【００３５】
すなわち、本体ケース１２内におけるやや上寄りの位置には、本体ケース１２内を上下に区画する平板状の基台１８が設けられており、この基台１８よりも上側の領域が矩形板状の支持部材１９を基台１８上に支持してなる印刷室１５となっている。そして、基台１８よりも下側の領域において、シート１３の搬送方向で上流側となる左側寄りの位置に、繰出し部１４が配設されると共に、下流側となる右側寄りの位置に、乾燥装置１６及び巻取り部１７が配設されている。
【００３６】
図１に示すように、繰出し部１４には、前後方向に延びる巻き軸２０が回転自在に設けられ、その巻き軸２０に対してシート１３が予めロール状に巻かれた状態で一体回転可能に支持されている。すなわち、シート１３は、巻き軸２０が回転することにより、繰出し部１４から繰り出されるようになっている。また、繰出し部１４から繰り出されたシート１３は、巻き軸２０の右側に位置する第１ローラー２１に巻き掛けられて上方へ案内される。
【００３７】
一方、支持部材１９の左側であって下側の第１ローラー２１と上下方向で対応する位置には、第２ローラー２２が下側の第１ローラー２１と平行な状態で設けられている。そして、第１ローラー２１によって搬送方向が鉛直上方向に変換されたシート１３は、この第２ローラー２２に左側下方から巻き掛けられることにより、その搬送方向が水平右方向に変換されて支持部材１９の上面に摺接するようになっている。
【００３８】
また、支持部材１９の右側には、左側の第２ローラー２２と支持部材１９を挟んで対向する第３ローラー２３が第２ローラー２２と平行な状態で設けられている。なお、第２ローラー２２及び第３ローラー２３は各々の周面の頂部が支持部材１９の上面と同一高さとなるように位置調整されている。
【００３９】
印刷室１５内で左側の第２ローラー２２により搬送方向が水平右方向に変換されたシート１３は、支持部材１９の上面に摺接しつつ下流側となる右側に搬送された後、第３ローラー２３に右側上方から巻き掛けられることにより搬送方向が鉛直下方向に変換されて基台１８よりも下側の乾燥装置１６に向けて搬送されるようになっている。そして、乾燥装置１６内を通過することにより乾燥処理が施されたシート１３は、更に鉛直下方向に搬送された後、第４ローラー２４に巻き掛けられて搬送方向を水平右方向に変換され、この第４ローラー２４の右側に配設された巻取り部１７の巻取り軸２５が搬送モーター６１（図３参照）の駆動力に基づいて回転することによりロール状に巻き取られる。
【００４０】
図１に示すように、印刷室１５内における支持部材１９の前後両側には、左右方向に延びるガイドレール２６（図１では２点鎖線で示す）が対をなすように設けられている。ガイドレール２６の上面は支持部材１９の上面よりも高くなっており、両ガイドレール２６の上面には、矩形状のキャリッジ２７が第１及び第２キャリッジモーター６２，６３（図３参照）の駆動に基づき両ガイドレール２６に沿って図１に示す主走査方向Ｘ（図１では左右方向）への往復移動が可能な状態で支持されている。そして、このキャリッジ２７の下面側には支持板２８を介して複数の記録ヘッド２９が支持されている。
【００４１】
支持部材１９の左端から右端までの一定範囲が印刷領域とされており、この印刷領域単位でシート１３は間欠的に搬送されるようになっている。そして、支持部材１９上に停止したシート１３に対してキャリッジ２７の往復移動に伴い記録ヘッド２９からインクが噴射されることでシート１３に印刷が施される。
【００４２】
なお、印刷時には、支持部材１９の下側に設けられた吸引装置３０が駆動され、支持部材１９の上面に開口する多数の吸引孔に及ぶ負圧による吸引力により、シート１３は支持部材１９の上面に吸着される。そして、シート１３への１回分の印刷が終わると、吸引装置３０の負圧が解除され、シート１３の搬送が行われるようになっている。
【００４３】
また、印刷室１５内において、第３ローラー２３よりも右側となる非印刷領域には、非印刷時に記録ヘッド２９のメンテナンスを行うためのメンテナンス装置３２が設けられている。メンテナンス装置３２は、記録ヘッド２９毎にキャップ３３と昇降装置３４とを備える。各キャップ３３は昇降装置３４の駆動により、記録ヘッド２９のノズル形成面３５（図２参照）に当接するキャッピング位置と、ノズル形成面３５から離間する退避位置との間を移動する。
【００４４】
また、図１に示すように、本体ケース１２内には、異なる色のインクをそれぞれ収容した複数（例えば８個）のインクカートリッジＩＣ１〜ＩＣ８が着脱可能に装着されている。そして、各インクカートリッジＩＣ１〜ＩＣ８はインク供給路７０Ａ，７０Ｂ等（図２参照）を通じて記録ヘッド２９に接続され、各記録ヘッド２９は各インクカートリッジＩＣ１〜ＩＣ８から供給されたインクを噴射する。このため、本例のプリンター１１では、８色のインクを用いたカラー印刷が可能となっている。なお、本体ケース１２においてインクカートリッジＩＣ１〜ＩＣ８の配置位置と対応する箇所には開閉式のカバー３８が設けられている。インクカートリッジＩＣ１〜ＩＣ８の交換作業はカバー３８を開けて行われる。
【００４５】
８個のインクカートリッジＩＣ１〜ＩＣ８は、例えば黒（Ｋ）、シアン（Ｃ）、マゼンタ（Ｍ）、イエロー（Ｙ）等の各インクを収容する。なお、保湿液を収容する保湿液カートリッジが装填される構成も採用できる。もちろん、インクの種類（色数）は適宜設定でき、黒インクだけでモノクロ印刷する構成や、インクを２色としたり、８色以外で３色以上の任意の色数としたりした構成も採用できる。
【００４６】
各インクカートリッジＩＣ１〜ＩＣ８はカートリッジホルダー（図示省略）を介して制御装置Ｃと電気的に接続されており、各インクカートリッジＩＣ１〜ＩＣ８に実装された不揮発性の記憶素子４７（図３参照）には、対応する色のインク残量情報が書き込まれるようになっている。
【００４７】
図２は、キャリッジの底面に設けられた複数の記録ヘッドと、各記録ヘッドへインクを供給するインク供給装置とを示す模式図である。図２に示すように、キャリッジ２７の下面側に支持された支持板２８には、複数個（本実施形態では１５個）の記録ヘッド２９がシート１３の搬送方向（図２において白抜き矢印で示す方向）と直交する幅方向（前後方向）に亘って千鳥状の配置パターンで支持されている。つまり、１５個の記録ヘッド２９は、副走査方向Ｙに沿って一定ピッチで２列で配列された記録ヘッド２９Ａ，２９Ｂが、副走査方向Ｙに互いに半ピッチ分ずれた千鳥配置をとっている。そして、各記録ヘッド２９の下面となるノズル形成面３５には、多数のノズル３６が前後方向（副走査方向Ｙ）に沿って１列に配置されてなるノズル列３７が主走査方向Ｘに所定間隔をおいて複数列（本実施形態では８列）形成されている。
【００４８】
図２に示すように、各記録ヘッド２９へ各色のインクを供給するためのインク供給装置３９が設けられている。インク供給装置３９は、ポンプモーター６５、加圧ポンプ６６、インクカートリッジＩＣ１〜ＩＣ８及びサブタンク６７を備えている。
【００４９】
各インクカートリッジＩＣ１〜ＩＣ８は、カートリッジホルダーに装着された状態では、それぞれインク供給路７０Ａ（例えばチューブ）を通じてサブタンク６７と接続され、さらにサブタンク６７はインク供給路７０Ｂ（例えばチューブ）を通じて各記録ヘッド２９に接続されている。但し、図２では、複数（例えば８個）のサブタンク６７と１つの記録ヘッド２９との接続関係のみ示している。実際には、１個のサブタンク６７からは記録ヘッド２９の個数と同数本のインク供給路７０Ｂが延びており、各インク供給路７０Ｂは各記録ヘッド２９に接続されている。
【００５０】
また、インクカートリッジＩＣ１〜ＩＣ８は、カートリッジホルダーに装着された状態では、加圧ポンプ６６の吐出口と空気供給路７１を通じて接続されるようになっている。制御装置Ｃがポンプモーター６５を駆動して加圧ポンプ６６がポンプ駆動されることにより、加圧ポンプ６６から吐出された加圧空気が空気供給路７１を通じてインクカートリッジＩＣ１〜ＩＣ８内に供給される。
【００５１】
インクカートリッジＩＣ内にはインクパックが収容されており、空気供給路７１を通じてインクカートリッジＩＣ内に供給される加圧空気によってインクパックが加圧されることにより、インクカートリッジＩＣからインク供給路７０Ａへインクが加圧供給されるようになっている。インクカートリッジＩＣから供給されたインクはインク供給路７０Ａを通じてサブタンク６７へ供給され、さらにサブタンク６７からインク供給路７０Ｂを通じて各記録ヘッド２９へ供給される。
【００５２】
また、本体ケース１２において図２に実線で示す閉状態にあるカバー３８の回動端と対応する位置には、カバー３８を閉状態にロックするための電磁ロック６８が設けられている。例えば本体ケース１２におけるカバー３８の近傍位置には、ユーザーがカバー３８のロック／ロック解除の操作をするための操作スイッチ７２（図３参照）が設けられている。制御装置Ｃは、操作スイッチ７２からカバー３８をロックさせる操作がなされた際のロック信号を入力すると、電磁ロック６８を励磁させることによりカバー３８を閉状態にロックさせる。また、制御装置Ｃは、操作スイッチ７２からカバー３８のロックを解除させる操作がなされた際のロック解除信号を入力すると、電磁ロック６８を消磁させることによりカバー３８のロックを解除させる。カートリッジ交換を行う際は、図２に示すように、カバー３８を二点鎖線で示す開状態（但し最大開度は図２の状態より大きい）で、インクカートリッジＩＣ１〜ＩＣ８のうち少なくとも１個の交換を行って再びカバー３８を図２に実線で示す閉状態とした後、操作スイッチ７２を操作することでカバー３８を閉状態にロックさせる。
【００５３】
図３は、印刷システム１００の電気構成を示すブロック図である。図３に示すホスト装置１２０内のプリンタードライバー１２２は、モニター１２３に表示させるべきメニュー画面及び印刷条件設定画面などの各種画面の表示制御を行うと共に、各画面の表示状態において操作部１２４から入力した操作信号に応じた所定処理を行うホスト制御部１２５を備えている。ホスト制御部１２５は、プリンタードライバー１２２を統括的に制御する。また、プリンタードライバー１２２には、上位の画像生成装置１１０から受信した画像データに対して印刷データの生成に必要な画像処理を施す、解像度変換部１２６、色変換部１２７及びハーフトーン処理部１２８を備えている。解像度変換部１２６は、画像データを表示解像度から印刷解像度へ変換する解像度変換処理を行う。色変換部１２７は、表示用の表色系（例えばＲＧＢ表色系やＹＣｂＣｒ表色系）から印刷用の表色系（例えばＣＭＹＫ表色系）に色変換する色変換処理を行う。さらにハーフトーン処理部１２８は、表示用の高階調（例えば２５６階調）の画素データを印刷用の低階調（例えば２階調又は４階調）の画素データに階調変換するハーフトーン処理などを行う。そして、プリンタードライバー１２２は、これらの画像処理を施した結果生成された印刷画像データに、印刷制御コード（例えばＥＳＣ／Ｐ）で記述されたコマンドを付して印刷ジョブデータ（以下、単に「印刷データＰＤ」と称す）を生成する。
【００５４】
ホスト装置１２０はデータの転送制御を行う転送制御部１２９を備える。転送制御部１２９は、プリンタードライバー１２２が生成した印刷データＰＤを所定容量のパケットデータずつプリンター１１へ順次シリアル転送する。
【００５５】
一方、プリンター１１側の制御装置Ｃは、ホスト装置１２０から印刷データＰＤを受信して記録系の制御をはじめとする各種制御を行う一対のコントローラー４１，４２を備えている。一対のコントローラー４１，４２は、複数個（本例では１５個）の記録ヘッド２９を所定個数（本例では７個と８個）の２つに分けて分担して制御する。すなわち、マスター側コントローラー４１が７個の記録ヘッド２９Ｂの制御を受け持ち、スレーブ側コントローラー４２が８個の記録ヘッド２９Ａの制御を受け持つ。
【００５６】
図３に示すホスト装置１２０内のプリンタードライバー１２２は、２つのコントローラー４１，４２のそれぞれが受け持つ記録ヘッド２９の配置位置に応じて印刷画像データを２つに分割し、分割した各印刷画像データに同一の印刷言語記述コマンドを付して２つの印刷データＰ１，Ｐ２を生成する。
【００５７】
図３に示すように、本実施形態のホスト装置１２０は、２つのシリアル通信ポートＵ１，Ｕ２を備えている。また、２つのコントローラー４１，４２もそれぞれシリアル通信ポートＵ３，Ｕ４を備えている。そして、転送制御部１２９は、シリアル通信ポートＵ１，Ｕ３間の通信を介してマスター側コントローラー４１へ対応する印刷データＰ１をシリアル転送すると共に、シリアル通信ポートＵ２，Ｕ４間の通信を介してスレーブ側コントローラー４２へ対応する印刷データＰ２をシリアル転送するようになっている。ホスト装置１２０は、２つのシリアル通信ポートＵ１，Ｕ２を用いた２系統でシリアル転送を行って、各コントローラー４１，４２へ比較的高速に印刷データＰ１，Ｐ２を転送する。なお、本実施形態では、印刷データＰ１，Ｐ２に含まれる形態でコマンドを入力するシリアル通信ポートＵ２，Ｕ４が、入力手段の一例を構成する。
【００５８】
図３に示すように、２つのコントローラー４１，４２には、複数個（Ｎ個（本例では４個））ずつのヘッド制御ユニット４５（以下、単に「ＨＣＵ４５」という）が接続され、各ＨＣＵ４５にはそれ一個につき記録ヘッド２９が複数個（Ｍ個（本例では２個））ずつ接続されている。
【００５９】
また、２つのコントローラー４１，４２に接続された各通信回路４６には、８個のインクカートリッジＩＣ１〜ＩＣ８に実装された８個の記憶素子４７のうち半分の４個ずつがそれぞれ接続されている。マスター側コントローラー４１は４個のインクカートリッジＩＣ１〜ＩＣ４に実装された記憶素子４７と通信可能であり、スレーブ側コントローラー４２は４個のインクカートリッジＩＣ５〜ＩＣ８に実装された記憶素子４７と通信可能である。記憶素子４７は不揮発性の記憶素子（不揮発性メモリ）により構成されている。記憶素子４７には、対応するインクカートリッジＩＣのインク残量情報、インク色、使用期限、メンテナンス情報、品番などの各種のインク関連情報が記憶される。なお、インクカートリッジＩＣ（図２参照）がカートリッジホルダーに装着された状態で、記憶素子４７とカートリッジホルダー側の端子部とが電気的に接続されることにより、通信回路４６は記憶素子４７に対して読み取り及び書き込みのための通信が可能な状態に接続される。
【００６０】
マスター側コントローラー４１は、部品の一例である４個のインクカートリッジＩＣ１〜ＩＣ４のインク残量等を管理し、一方のスレーブ側コントローラー４２は、部品の一例である残り４個のインクカートリッジＩＣ５〜ＩＣ８のインク残量等を管理する。マスター側コントローラー４１は、通信回路４６を介してインクカートリッジＩＣ１〜ＩＣ４の各記憶素子４７と通信してインク関連情報の読出し及び書込みが可能となっている。同様に、スレーブ側コントローラー４２は、通信回路４６を介して各インクカートリッジＩＣ５〜ＩＣ８に実装された記憶素子４７と通信してインク関連情報の読出し及び書込みが可能となっている。
【００６１】
さらに、制御装置Ｃは、マスター側コントローラー４１の出力側（制御下流側）に通信線ＳＬ１を通じて接続されたメカコントローラー４３を備えている。メカコントローラー４３は主に搬送系及びキャリッジ駆動系を含むメカニカル機構４４の制御を司る。マスター側コントローラー４１は、自身が受け持つ７個の記録ヘッド２９Ｂの印刷準備ができ（つまりインク滴噴射制御に使用する印刷画像データが準備され）、かつスレーブ側コントローラー４２が受け持つ８個の記録ヘッド２９Ａも印刷準備ができた段階でキャリッジ起動コマンドをメカコントローラー４３へ送信するようになっている。これにより、コントローラー４１，４２のうち一方の印刷準備完了前にキャリッジ２７が起動されてしまうことに起因し、記録ヘッド２９が噴射位置に到達したにも拘わらずインク滴が噴射されない噴射ミスが防止されるようにしている。
【００６２】
また、マスター側コントローラー４１は、自身が受け持つ７個の記録ヘッド２９Ｂの印刷を完了し、かつスレーブ側コントローラー４２が受け持つ８個の記録ヘッド２９Ａも印刷を完了した段階で、シート１３の搬送を指令する搬送コマンドをメカコントローラー４３へ送信する。これにより、コントローラー４１，４２のうち一方が印刷完了前の段階でシート１３が搬送開始（又は支持部材１９上のシートの吸着解除）されてしまうことに起因し、記録ヘッド２９から噴射されたインク滴のシート１３に対する着弾位置のずれ（印刷位置ずれ）が防止されるようにしている。このようにマスター側コントローラー４１は、スレーブ側コントローラー４２と進捗の同期をとってコマンドを送信する機能を備えている。そして、両コントローラー４１，４２は、他方のコントローラーへコマンドを出力するスレーブ側と、スレーブ側から受け付けたコマンドと自身のコマンドとが揃いかつコマンド内容が一致することを確認した時点でメカコントローラー４３へコマンドを出力するマスター側とに分かれる。本実施形態では、制御上の同期をとるための仕組みの部分がマスター側とスレーブ側とで異なる。
【００６３】
図３に示すように、マスター側コントローラー４１にはリニアエンコーダー５０が接続されている。このリニアエンコーダー５０はキャリッジ２７の移動経路に沿って設けられ、マスター側コントローラー４１には、このリニアエンコーダー５０からキャリッジ２７の移動距離に比例する数のパルスをもつ検出信号（エンコーダーパルス信号）が入力される。マスター側コントローラー４１に入力されたエンコーダーパルス信号は、両コントローラー４１，４２間に接続された信号線ＳＬ２を通じてスレーブ側コントローラー４２へ伝達されるようになっている。さらにマスター側コントローラー４１とスレーブ側コントローラー４２は、同期処理に用いられる通信線ＳＬ３を通じて互いに接続されている。
【００６４】
図３に示すように、各コントローラー４１，４２は、それぞれＣＰＵ５３（中央処理装置）、ＡＳＩＣ５４（Application Specific IC（特定用途向け集積回路））、ＲＡＭ５５、及び不揮発性メモリー５６を備えている。ＣＰＵ５３は、不揮発性メモリー５６に記憶されたプログラムを実行することにより、印刷制御に必要な各種タスクを実行する。また、ＡＳＩＣ５４は、印刷データの処理など記録系のデータ処理などを行う。
【００６５】
一方、メカコントローラー４３には、モーター駆動回路６０を介してメカニカル機構４４を構成する搬送モーター６１、第１キャリッジモーター（以下、「第１ＣＲモーター６２」ともいう）及び第２キャリッジモーター（以下、「第２ＣＲモーター６３」ともいう）がそれぞれ接続されている。また、メカコントローラー４３には、メンテナンス装置３２及び電磁ロック６８がそれぞれ接続されている。さらにメカコントローラー４３には、モーター駆動回路７６を介してインク供給装置３９を構成するポンプモーター６５が接続されており、ポンプモーター６５が駆動されることにより加圧ポンプ６６が駆動される。
【００６６】
また、メカコントローラー４３には、入力系として、前述の操作スイッチ７２及びエンコーダー７３がそれぞれ接続されている。メカコントローラー４３は操作スイッチ７２からロック操作信号を入力すると電磁ロック６８を励磁し、操作スイッチ７２から解除操作信号を入力すると電磁ロック６８を消磁する。メカコントローラー４３はマスター側コントローラー４１から通信線ＳＬ１を通じて受信した各種コマンドに従って、各モーター６１〜６３，６５、メンテナンス装置３２及び電磁ロック６８を駆動制御する。
【００６７】
制御装置Ｃは、印刷時に、搬送モーター６１を駆動してシート１３の次の被印刷領域を支持部材１９上に配置すべくシート１３を搬送する搬送動作と、シート搬送後に次の被印刷領域を支持部材１９に吸着させる吸着動作と、記録ヘッド２９によるシート１３への印刷動作と、１回分（１頁分）の印刷終了後にシート１３の吸着を解除する吸着解除動作とを行う。このとき、印刷動作は、キャリッジ２７の主走査方向Ｘへの移動中に記録ヘッド２９からインク滴を噴射することにより行われる。この印刷動作は、第１ＣＲモーター６２の駆動によるキャリッジ２７の主走査方向Ｘへの１回の移動（１パス動作）と、１パス終了毎に行われるキャリッジ２７の副走査方向Ｙへの移動とを、所定回数繰り返すことにより行われる。
【００６８】
図４は、マスター側コントローラー４１とスレーブ側コントローラー４２の機能構成を説明するブロック図である。図４に示すように、両コントローラー４１，４２は、互いに対称な構成を有している。これは、マスター側とスレーブ側の各コントローラー４１，４２を同じプログラムの構成で実現できているからである。なお、対称な構成（ほぼ同じ機能構成）であるので、以下、マスター側コントローラー４１の構成を説明し、これと対比してスレーブ側コントローラー４２の一部異なる機能構成を説明する。
【００６９】
図４に示すように、マスター側コントローラー４１は、入力手段の一例としてのシリアル通信ポートＵ３、画像処理部８１、主制御部８２、メカ制御部８３、出力手段の一例としてのメカＩ／Ｆ部８４、同期手段の一例としての仮想メカコントローラー８５（バーチャルメカコントローラー）を備えている。さらに、マスター側コントローラー４１は、エラー管理部８６、通信Ｉ／Ｆ部８７、画像バッファー８８、ヘッド制御部８９及び検出手段の一例としてのインク管理部９０を備えている。一方、スレーブ側コントローラー４２は、仮想メカコントローラー８５に替えて、ダミーメカコントローラー９５を備える点が異なるだけで、その他の構成はマスター側コントローラー４１と同様である。なお、主制御部８２は、各部８３〜９０を統括的に制御する機能を有する。
【００７０】
また、スレーブ側コントローラー４２のメカＩ／Ｆ部８４は、マスター側コントローラー４１の仮想メカコントローラー８５と通信線ＳＬ３を通じて接続されている。すなわち、マスター側コントローラー４１のメカＩ／Ｆ部８４が実際のメカコントローラー４３に接続されているのに対して、スレーブ側コントローラー４２のメカＩ／Ｆ部８４はマスター側コントローラー４１内に設けられた仮想メカコントローラー８５に接続されている。スレーブ側のメカＩ／Ｆ部８４はメカコントローラー４３へコマンドを出力したつもりで実際は仮想メカコントローラー８５へコマンドを送信している。
【００７１】
図４に示すマスター側コントローラー４１側の画像処理部８１は、シリアル通信ポートＵ３が入力した印刷データＰ１の解凍処理、コマンド解析、マイクロウィーブ処理及び縦横変換処理などの画像処理を行う。一方、図４に示すスレーブ側コントローラー４２側の画像処理部８１は、シリアル通信ポートＵ４が入力した印刷データＰ２の解凍処理、コマンド解析、マイクロウィーブ処理及び縦横変換処理などの画像処理を行う。
【００７２】
画像処理部８１は、解凍後の印刷データを画像バッファー８８に一時格納する。ここで、印刷データＰ１は印刷画像データと印刷言語記述コマンドとを含む。主制御部８２は、解凍後の印刷データＰ１中の印刷言語記述コマンドを解析して制御用のコマンドを取得し、その取得したコマンドをメカ制御部８３へ送る。画像処理部８１は、印刷画像データに対してドットをノズルに割り付ける割付処理（マイクロウィーブ処理）及び縦横変換処理などの必要な画像処理を順次施し、記録ヘッド２９の制御に使用するヘッド制御データを生成して画像バッファー８８に格納する。
【００７３】
ヘッド制御部８９は、画像バッファー８８からヘッド制御データを読み出し、このヘッド制御データを記録ヘッド２９毎に分割して各ＨＣＵ４５へ割り振りつつ転送する。さらに、ＨＣＵ４５は記録ヘッド２９へ対応するヘッド制御データを逐次送信する。記録ヘッド２９内の不図示のヘッド駆動回路は、ヘッド制御データに基づきノズル３６毎の噴射駆動素子を駆動制御し、ノズル３６からインク滴を噴射させる。このとき、ヘッド制御部８９は、リニアエンコーダー５０から入力されるエンコーダーパルス信号を基に噴射タイミング信号を生成し、ヘッド駆動回路はこの噴射タイミング信号に基づき噴射駆動素子を駆動させる。
【００７４】
図４に示すメカ制御部８３は、主制御部８２から受け付けたコマンドをメカＩ／Ｆ部８４へ送る。このとき、メカ制御部８３は、受け付けたコマンドがシーケンス制御用のコマンドの場合、例えばヘッド制御部８９の処理の進捗を監視し、次パスの印刷に使用するヘッド制御データが揃い印刷準備ができた段階でそのコマンドをメカＩ／Ｆ部８４へ送る。その他のコマンドについてはそのコマンド種に応じた適切な時期にメカＩ／Ｆ部８４へ送る。なお、コマンドの種類については後述する。
【００７５】
メカＩ／Ｆ部８４は、メカ制御部８３からコマンドを受け付けると、仮想メカコントローラー８５に問合せをする。そして、メカＩ／Ｆ部８４は、仮想メカコントローラー８５から問合せの応答としてＡＣＫ信号（肯定信号）を受信すると、コマンドをメカコントローラー４３へ送信する。つまり、メカＩ／Ｆ部８４は、仮想メカコントローラー８５への問合せの応答としてＡＣＫ信号を受信しなければ、ＡＣＫ信号を受信するまで待機し、ＡＣＫ信号を受信するとコマンドをメカコントローラー４３へ送信する。但し、応答（ＡＣＫ信号）を待つ待機時間が設定時間に達してタイムアウトとなった場合は、リトライ要求をメカ制御部８３へ送信する。
【００７６】
一方のスレーブ側コントローラー４２においても画像処理部８１、主制御部８２、メカ制御部８３、メカＩ／Ｆ部８４は同様の処理を行う。但し、ダミーメカコントローラー９５は、仮想メカコントローラー８５と異なる機能をもつ。ダミーメカコントローラー９５は、メカＩ／Ｆ部８４から問合せを受け付けると、無条件で直ちにＡＣＫ信号を応答する。このため、スレーブ側コントローラー４２におけるメカＩ／Ｆ部８４は、メカ制御部８３からコマンドを受け付けて問合せをすると、ダミーメカコントローラー９５から直ぐにＡＣＫ信号を受信するので、コマンドの受付けからほぼ待ち時間なくそのコマンドを出力できる。
【００７７】
これに対して、マスター側の仮想メカコントローラー８５は、マスター側のメカＩ／Ｆ部８４からコマンドの問合せを受け付けると、通信線ＳＬ３を通じてスレーブ側のメカＩ／Ｆ部８４から送られてきたコマンドを受信し、かつ両コマンドが一致していることを条件に、各メカＩ／Ｆ部８４にＡＣＫ信号を応答する。このため、マスター側のメカＩ／Ｆ部８４は、仮想メカコン８５においてマスター側とスレーブ側の両メカＩ／Ｆ部８４からのコマンドが揃い、かつその揃った両コマンドが一致したと判断されたときの応答を待ち、その応答を受け付けると、そのコマンドをメカコントローラー４３へ出力する。このため、マスター側とスレーブ側の両コントローラー４１，４２の同期をとって、コマンドをメカコントローラー４３へ送信できる。
【００７８】
図４に示すように、仮想メカコントローラー８５とダミーメカコントローラー９５は同じ構成であり、共に仮想メカコン部９６とダミーメカコン部９７を備える。仮想メカコン部９６が起動されると仮想メカコントローラー８５として機能し、ダミーメカコン部９７が起動されるとダミーメカコントローラー９５として機能する。仮想メカコン部９６とダミーメカコン部９７のうちどちらを起動するかは、主制御部８２が、自身がマスターであるかスレーブであるかを判定して決める。主制御部８２はマスターであると判定した場合、仮想メカコン部９６を有効としこれを起動するとともに、ダミーメカコン部９７を無効としこれを起動させない。一方、主制御部８２はスレーブであると判定した場合、ダミーメカコン部９７を有効としこれを起動するとともに、仮想メカコン部９６を無効としこれを起動させない。
【００７９】
また、図４に示すマスター側のメカＩ／Ｆ部８４は、メカコントローラー４３からコマンドを受け付けたときには、そのコマンドを仮想メカコントローラー８５へ送る。仮想メカコントローラー８５は、マスター側のメカＩ／Ｆ部８４から受け付けたコマンドをスレーブ側のメカＩ／Ｆ部８４へ送信すると、ＡＣＫ信号をマスター側のメカＩ／Ｆ部８４へ応答する。マスター側のメカＩ／Ｆ部８４は、仮想メカコントローラー８５からその応答（ＡＣＫ信号）を受け付けると、上位のメカ制御部８３へそのコマンドを送るようになっている。本実施形態では、メカＩ／Ｆ部８４のうちメカコントローラー４３からのコマンドを入力する入力機能部分も、入力手段の一例として構成される。本実施形態では「第１のコマンド」には、ホスト制御部１２５から印刷データに含まれる形態でシリアル通信ポートＵ３，Ｕ４が入力するコマンドと、印刷データとは別にホスト制御部１２５で生成されてシリアル通信ポートＵ３，Ｕ４が入力するコマンドと、メカコントローラー４３からメカＩ／Ｆ部８４が入力するコマンドとがある。
【００８０】
ところで、仮想メカコントローラー８５における同期処理においてコマンドが揃わない場合、マスター側のメカＩ／Ｆ部８４は仮想メカコントローラー８５からＡＣＫ信号を受信できないので、待機時間が設定時間に達してタイムアウトになる。一方、スレーブ側コントローラー４２のメカＩ／Ｆ部８４も、仮想メカコントローラー８５からＡＣＫ信号を受信できないので、待機時間が設定時間に達して、やはりタイムアウトになる。この場合、メカＩ／Ｆ部８４はメカ制御部８３に対してリトライ要求をする。メカ制御部８３はリトライ要求を受け付けると、メカＩ／Ｆ部８４へコマンドを再送信（再発行）する。
【００８１】
通信Ｉ／Ｆ部８７は、マスター側とスレーブ側における各ヘッド制御部８９及び各インク管理部９０が、処理の同期をとったり、互いの情報（検出結果及びインク消費量等）を交換し合ったりするための通信を行うために設けられたものである。本実施形態では、この通信Ｉ／Ｆ部８７を、他のコントローラーとの間で一部のコマンドを送受信するためにも使用される。
【００８２】
図４に示すインク管理部９０はインク残量演算部９８を備えている。インク残量演算部９８は、約半数の記録ヘッド２９Ｂ（又は２９Ａ）が消費した８色分のインク消費量を取得する。ここで、ヘッド制御部８９は、印刷画像データに基づき記録ヘッド２９Ｂ（又は２９Ａ）のインク滴噴射回数に相当するドット数を色別に計数している。インク残量演算部９８は、ヘッド制御部８９からインク色毎のドット数を取得してその取得したドット数を色別に合計し、その合計した色別のドット数を基に記録ヘッド２９Ｂ（又は２９Ａ）が消費したインク色別のインク消費量を演算する。こうしてマスター側のインク残量演算部９８は７個の記録ヘッド２９Ｂのインク消費量を色別に算出し、一方のスレーブ側のインク残量演算部９８は８個の記録ヘッド２９Ａのインク消費量を色別に算出する。
【００８３】
本実施形態では、複数色のインクカートリッジＩＣ１〜ＩＣ８を、マスター側コントローラー４１とスレーブ側コントローラー４２とで分担して管理する。このため、インク残量演算部９８が算出した自コントローラー側の記録ヘッド２９Ｂ（又は２９Ａ）が消費した８色分のインク消費量のうち、相手側のコントローラーが管理する４個のインクカートリッジＩＣに対応する４色分のインク消費量を、各通信Ｉ／Ｆ部８７，８７間の通信を介して相手側のコントローラーへ通知する構成となっている。
【００８４】
そして、インク管理部９０は、１回（１ジョブ）の印刷が終わったとき、カートリッジ交換が行われたとき、電源スイッチ（図示省略）がＯＦＦ操作された際の電源遮断時などの所定時期に、相手側管理の４色分のインク消費量情報をメカ制御部８３及び通信Ｉ／Ｆ部８７を経由して相手側コントローラーのインク管理部９０へ送信する。そして、インク残量演算部９８は、インク管理部９０が受信した相手側管理の記録ヘッド２９Ａで消費された４色のインク消費量と、自身が受け持つ記録ヘッド２９Ｂで消費された同じ４色のインク消費量とを色別に加算して、全ての記録ヘッド２９Ａ，２９Ｂで消費された４色分のインク消費量をそれぞれ算出する。さらにインク残量演算部９８は、この４色分の各インク消費量を、この４色の前回のインク残量からそれぞれ減算することで、この４色の現在のインク残量を算出する。現在のインク残量情報は、ＲＡＭ５５の所定記憶領域に一時記憶される。例えば、１回の印刷が終わったとき、カバー３８が開閉されたとき（カートリッジ交換の可能性があるとき）、電源遮断時などの所定時期に、インク管理部９０はＲＡＭ５５から読み出した現在のインク残量を不揮発性メモリー５６及び記憶素子４７に書き込む。
【００８５】
インク管理部９０は、インク残量を管理する他、インクカートリッジＩＣの状態を監視し、インク関連のエラー検出も行う。インク管理部９０は、例えばインク残量演算部９８が算出したインク残量がインクエンド閾値未満になったか否かを判定し、インク残量がその閾値未満である場合にインクエンドと判定する。例えばインクエンドと判定されてから、一定の許容印刷時間を過ぎるか又は一定の許容インク量のインクが消費されると、強制的に印刷動作を停止させるエラーがインク管理部９０からメカ制御部８３を介してエラー管理部８６に通知される。また、インクカートリッジＩＣの外れや、色違いのインクカートリッジＩＣの装着を検出したときにも、インク管理部９０からメカ制御部８３を介してエラー管理部８６にエラーが通知される。
【００８６】
エラー管理部８６は、コントローラー４１，４２の内部で発生したエラー通知をインク管理部９０等から受け付けると、そのエラーの内容を判断し、そのエラー内容に応じた種類のエラーコマンドを発行する。エラーコマンドの種類は、例えばそのパラメーターの値で区別される。このエラーコマンドは主制御部８２へ送られ、さらに主制御部８２からメカ制御部８３へ送られる。なお、本実施形態では、エラー管理部８６と、検出手段の一例であるインク管理部９０とにより、コマンド生成手段の一例が構成される。
【００８７】
メカ制御部８３は、コマンドの実行順を制御するジョブ制御部９３と、ジョブ制御部９３で制御された順番で出力されたコマンドを受け付けてその出力タイミングを制御することでシーケンス制御を行うシーケンス制御部９４とを備えている。なお、本実施形態では、ジョブ制御部９３により管理手段の一例が構成され、シーケンス制御部９４により指示手段の一例が構成される。
【００８８】
図５は、ジョブ制御部９３の構成を示す。ジョブ制御部９３は、コマンド判定部１３１、シーケンスキュー１３２、イミーディエットキュー１３３、コマンド出力部１３４、優先順位設定手段の一例としての優先順位付与部１３５及び再配列手段の一例としてのソート部１３６を備えている。主制御部８２からメカ制御部８３へ送られてきたコマンドは、ジョブ制御部９３に入力される。ここで、コマンドには、印刷データＰＤに含まれる印刷言語記述コマンドを解釈して得られるなどのシーケンス制御用のコマンド（以下「シーケンスコマンド」という）と、コントローラー４１，４２の内部で行われる各種検出処理などの検出結果に基づき生成される内部発生コマンド（以下「内部コマンド」という）などがある。また、ホスト装置１２０（ホスト制御部１２５）から送られてくるコマンド（緊急コマンド）や、メカコントローラー４３から送られてくる各種コマンド（緊急コマンド）もある。メカコントローラー４３から送られてくるコマンドは、マスター側コントローラー４１から通信線ＳＬ３を介してスレーブ側コントローラー４２へも送られる。
【００８９】
このため、コマンドキューには、発行順序が重要なシーケンスキュー１３２と、直ちに処理するべきイミーディエットキュー１３３とがある。シーケンスキュー１３２のコマンド（シーケンスコマンド）は、ホスト制御部１２５、メカコントローラー４３から発行されるので、複数のコントローラー４１，４２間で順序が入れ替わることはない。
【００９０】
イミーディエットキュー１３３も、メカコントローラー４３やホスト装置１２０から発行されたコマンドはほぼ同時に受信するので、そのまま発行すれば、仮想メカコン８５の同期処理において両方のコマンドが揃うことになる。たとえマスター側とスレーブ側で発行時期の多少のずれ（タイムラグ）があってリトライになっても、いずれリトライによる仮想メカコン８５の同期処理で両方のコマンドが揃うことになる。
【００９１】
一方、エラー通知などのようにコントローラー４１，４２の内部で発生するコマンドは、コントローラー４１，４２間の通信Ｉ／Ｆ部８７，８７経由の通信を使って、相手側（他方）のコントローラーに送信される。これは、仮想メカコントローラー８５においてマスター側とスレーブ側の両コントローラー４１，４２の同期をとるためには、両コントローラー４１，４２に同一のコマンドが用意されている必要があるからである。コントローラー４１，４２間の通信Ｉ／Ｆ部８７，８７経由の通信は、シリアル通信であるため、コマンドの伝送に比較的長い時間を要する。このため、両コントローラー４１，４２のうち一方で発生した内部コマンドが他方のコントローラーへ到着するまでの間に、メカコントローラー４３やホスト装置１２０のコマンドが発行された場合、マスター側とスレーブ側の両イミーディエットキュー１３３間でコマンドの格納順序が保証されない。
【００９２】
図５に示すコマンド判定部１３１は、受け付けたコマンドが、シーケンスコマンドであるか緊急性の高い緊急コマンド（イミーディエットコマンド）であるかを判定する。コマンド判定部１３１は、その判定結果に応じて、シーケンスコマンドをシーケンスキュー１３２に格納し、緊急コマンドをイミーディエットキュー１３３に格納する。各キュー１３２，１３３には、コマンドが取得順に格納される。
【００９３】
内部コマンドは、エラーコマンドに代表されるように緊急性の高いコマンドであり、イミーディエットキュー１３３に格納される。イミーディエットキュー１３３に格納された内部コマンドは、シーケンスキュー１３２に優先して出力される。一方、シーケンスコマンドは実行される順番が重要な種類のコマンドであり、イミーディエットキュー１３３に内部コマンドが格納されていないときに、その格納順に出力される。このような出力規則の下、コマンド出力部１３４は、イミーディエットキュー１３３から優先して内部コマンドを出力すると共に、イミーディエットキュー１３３に格納コマンドがない状態において、シーケンスキュー１３２に格納されたシーケンスコマンドを格納順に出力する。
【００９４】
例えば図５に示すシーケンスキュー１３２からはその格納順に従ってシーケンスコマンドＳＱ１，ＳＱ２，…の順番で出力される。また、イミーディエットキュー１３３からはその格納順に従ってコマンドＰＳ１，ＥＲ１，ＰＳ２，…の順番で出力される。
【００９５】
コマンド出力部１３４は、下流のシーケンス制御部９４からジョブ制御部９３に対する応答又は要求を待ってコマンドを出力（発行）する。コマンド出力部１３４は、メカＩ／Ｆ部８４からシーケンス制御部９４を介して前回のコマンドを出力した旨の応答を受け付けると、次のコマンドを出力する。また、コマンド出力部１３４は、メカＩ／Ｆ部８４からシーケンス制御部９４を介してコマンドの再送を要求するリトライ要求（再送要求）を受け付けると、先に出力した同じコマンドをもう一度送る。
【００９６】
図５に示す優先順位付与部１３５は、コマンドに優先順位を付与する。優先順位付与部１３５は、緊急コマンドの種別を識別し、緊急性の高い種別のものほど高い優先順位を付与する。本実施形態では、緊急コマンドには、コマンドの緊急レベルに応じた種別を識別するための識別子（例えば所定ビットの識別番号）が含まれており、優先順位付与部１３５は、コマンドの識別子から判定した種別に応じた優先順位を付与する。
【００９７】
例えば、メモリーには、緊急コマンドの種別と優先順位との対応関係を示すテーブルデータが記憶されており、このテーブルデータを参照して、緊急コマンドの種別に応じた優先順位を付与する。緊急コマンドにその種別を識別するための識別子を設ける替わりに、コマンドを送るパケット中にフラグを設定して、フラグ値を基にコマンドの種別を判定する方法を採用してもよい。識別子の一例としては、コマンド番号を挙げることができる。もちろん、コマンドの種別の識別子をそのまま優先順位に対応する番号とし、優先順位付与部１３５を廃止した構成も採用できる。このようにコマンドの種類を識別するための識別子（例えば識別番号）を優先順位に代用する構成の場合は、コマンドを生成する際にその識別子を付与するエラー管理部８６が、優先順位設定手段を構成する。
【００９８】
図５に示すソート部１３６は、イミーディエットキュー１３３の格納順を優先順位に従って並び替えるソート処理（再配列処理）を行う。本実施形態では、メカＩ／Ｆ部８４からのリトライ要求を受け付けると、ソート部１３６はソート処理を行う。もちろん、ソート部１３６は、リトライ要求をソート処理のトリガーとするのではなく、キュー１３３にコマンドを入力する度、あるいはキュー１３３からのコマンドの出力に先立って、ソート処理を行ってもよい。この場合、カウンターが計数するキュー１３３の格納数が複数個に達している場合に限りソート処理を行うことが好ましい。
【００９９】
図４に示すシーケンス制御部９４は、ジョブ制御部９３から内部コマンドを受け付けた場合はそれを直ちに出力する。また、シーケンス制御部９４は、シーケンスコマンドを受け付けたときは、メカコントローラー４３からメカＩ／Ｆ部８４を介して先の所定動作終了の旨を受信した後、当該所定動作の次に行うべき動作の開始タイミングになったときに、コマンドを出力する。
【０１００】
シーケンス制御部９４は、シーケンスコマンドを受信したときは、所定のシーケンスに従った所定のタイミングになると、そのシーケンスコマンドをメカＩ／Ｆ部８４へ出力する。コマンドには、例えば搬送コマンド、吸着コマンド、第１キャリッジ起動コマンド（キャリッジ主走査方向移動コマンド）、第２キャリッジ起動コマンド（キャリッジ副走査方向移動コマンド）、吸着解除コマンドなどがある。メカ制御部８３は、これらのシーケンスコマンドを、ヘッド制御部８９（図４参照）の進捗に合わせた適宜なタイミング、あるいはメカコントローラー４３側の進捗に合わせた適宜なタイミングで送信する。
【０１０１】
図７は、コマンドの出力処理を説明するブロック図である。なお、図７では、ジョブ制御部９３内はイミーディエットキュー１３３のみを示している。また、図７では、仮想メカコントローラー８５を単に「仮想メカコン」、ダミーメカコントローラー９５を単に「ダミーメカコン」とそれぞれ記しており、以下の説明でもこれらの略称を用いることにする。図７に示すように、マスター側コントローラー４１とスレーブ側コントローラー４２のそれぞれ内部で行われるコマンド出力処理の流れ（図中の矢印）は同じになっている。
【０１０２】
以下、本実施形態におけるコマンド出力処理を、図６及び図７を用いて説明する。主制御部８２は、入力した印刷データのコマンド解析で得たコマンドや、ホスト装置１２０から入力したコマンド、メカコントローラー４３から入力したコマンド（入力段階）、コントローラー４１，４２の内部で発行されたコマンド（コマンド生成段階）を、メカ制御部８３へ出力する。メカ制御部８３へ入力されたコマンドは、コマンド判定部１３１によりコマンドの種類が判定される。コマンド判定部１３１は、コマンドに含まれる識別子に基づいて、入力したコマンドが、第１のコマンドの一例であるシーケンスコマンドであるか、それとも第２のコマンドの一例である内部コマンドを含む緊急コマンドであるかを判定する。この判定結果に基づき、シーケンスコマンドはシーケンスキュー１３２にそれぞれ取得した順に格納され、緊急コマンドはイミーディエットキュー１３３にそれぞれ取得した順番に格納される（管理段階）。このとき、緊急コマンドについては、イミーディエットキュー１３３に格納する前に、優先順位付与部１３５がコマンドに優先順位を付与する。
【０１０３】
コマンド出力部１３４は、シーケンスキュー１３２に格納されたシーケンスコマンドよりも、イミーディエットキュー１３３に格納されたコマンドを優先して出力する。このため、基本的に、イミーディエットキュー１３３にコマンドがあるうちは、そのコマンドの出力が優先して進められる。
【０１０４】
図６は、マスター側とスレーブ側のイミーディエットキュー１３３Ａ，１３３Ｂを示す。なお、図６のキュー１３３において、一番下に格納されたコマンドのうち破線で囲ったコマンドはメカコントローラー４３へ出力されるものである。例えば、ホスト装置１２０からコマンドＰＳ１を受信したマスター側コントローラー４１においてそのコマンドＰＳ１の受信後に内部でエラーが発生し、このエラーによるエラーコマンドをスレーブ側コントローラー４２へ送信している送信段階の途中でホスト装置１２０から次のコマンドＰＳ２が送られてきたとする。この場合、図６（ａ）及び図７に示すように、マスター側のキュー１３３Ａには、コマンドＰＳ１，ＥＲ１，ＰＳ２の順番に格納され、スレーブ側のキュー１３３Ｂには、コマンドＰＳ１，ＰＳ２の順番に格納される。このとき、スレーブ側のキュー１３３Ｂには、まだエラーコマンドＥＲ１は届いていない（図６（ａ）の状態）。
【０１０５】
この図６（ａ）の格納状態のとき、ジョブ制御部９３は、イミーディエットキュー１３３内の最下流格納位置（図７における最下位置）のコマンドＰＳ１，ＰＳ１をシーケンス制御部９４へ出力する（図７中の（１））。シーケンス制御部９４は、ジョブ制御部９３から受信したコマンドをメカＩ／Ｆ部８４へ出力する（図７中の（２））（指示段階）。この場合、コマンドは緊急コマンドなので、直ちに出力される。
【０１０６】
メカＩ／Ｆ部８４は、コマンドを受信すると、マスター側では仮想メカコン８５にコマンドＰＳ１の問合せをし（図７中の（３））、スレーブ側ではダミーメカコン９５にコマンドＰＳ１の問合せをする（図７中の（３））。
【０１０７】
スレーブ側ではダミーメカコン９５は問合せを受け付けると、無条件で直ちにＡＣＫ信号を応答する（図７中の（４））。スレーブ側のメカＩ／Ｆ部８４はその応答を受け付けると、コマンドＰＳ１を通信線ＳＬ３へ出力する（図７中の（５））。この出力されたコマンドＰＳ１は、マスター側の仮想メカコン８５が受信する。
【０１０８】
仮想メカコン８５は、マスター側とスレーブ側の両メカＩ／Ｆ部８４からコマンドを受け付けると、両コマンドが一致するか否かを判断し、一致すれば、マスター側のメカＩ／Ｆ部８４に対してＡＣＫ信号を応答する（図７中の（６））。この場合、仮想メカコン８５はコマンドＰＳ１，ＰＳ１が一致すると判断するので、マスター側のメカＩ／Ｆ部８４に対してＡＣＫ信号を応答する。そして、マスター側のメカＩ／Ｆ部８４はＡＣＫ信号の応答を受け付けると、メカコントローラー４３へコマンドを送信する（図７中の（７））。つまり、仮想メカコン８５の同期処理においてマスター側とスレーブ側の両方で同一のコマンドが揃ったことが確認されたタイミングで、マスター側のメカＩ／Ｆ部８４からコマンドＰＳ１がメカコントローラー４３へ送信される。
【０１０９】
メカＩ／Ｆ部８４は、コマンドをメカコントローラー４３へ出力する度に、シーケンス制御部９４を介してジョブ制御部９３へコマンド出力の旨を応答する。ジョブ制御部９３は、コマンド出力の旨の応答を受け付けると、次のコマンドを出力する。このようにジョブ制御部９３はコマンドを１つずつ順番に出力する。
【０１１０】
コマンドＰＳ１，ＰＳ１が発行された後、スレーブ側のキュー１３３Ｂには遅れて届いたコマンドＥＲ１が格納される。両キュー１３３Ａ，１３３Ｂは、図６（ｂ）の格納状態になる。コマンド出力部１３４は、両キュー１３３Ａ，１３３Ｂから、最下流格納位置のコマンドＥＲ１，ＰＳ２をそれぞれ発行する。この発行されたコマンドＥＲ１，ＰＳ２は、それぞれマスター側とスレーブ側の各メカＩ／Ｆ部８４に送られる（図７中の（１），（２））（指示段階）。
【０１１１】
メカＩ／Ｆ部８４は、コマンドを受信すると、マスター側では仮想メカコン８５にコマンドＥＲ１の問合せをし（図７中の（３））、スレーブ側ではダミーメカコン９５にコマンドＰＳ２の問合せをする（図７中の（３））。
【０１１２】
スレーブ側ではダミーメカコン９５は問合せを受け付けると、無条件で直ちにＡＣＫ信号を応答する（図７中の（４））。スレーブ側のメカＩ／Ｆ部８４はその応答を受け付けると、コマンドＰＳ２を通信線ＳＬ３へ出力する（図７中の（５））。この出力されたコマンドＰＳ２は、マスター側の仮想メカコン８５が受信する。
【０１１３】
仮想メカコン８５は、マスター側とスレーブ側の両メカＩ／Ｆ部８４からコマンドＥＲ１，ＰＳ２を受け付けると、両コマンドが一致するか否かを判断するが、この場合、仮想メカコン８５はコマンドＥＲ１，ＰＳ２が一致しないと判断するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４に対してＮＡＣＫ信号を応答する（図７中の（８））。そして、メカＩ／Ｆ部８４はＮＡＣＫ信号の応答を受け付けると、シーケンス制御部９４に対してリトライを要求する（図７中の（９））。さらにシーケンス制御部９４はそのリトライをジョブ制御部９３に要求する（図７中の（１０））。
【０１１４】
ジョブ制御部９３がリトライ要求を受け付けると、ソート部１３６がイミーディエットキュー１３３Ａ，１３３Ｂ内のコマンドを優先順位の順番に並び替えるソート処理を行う（図７中の（１１））（再配列段階）。このソート処理の結果、図６（ｃ）に示すように、キュー１３３Ａ，１３３Ｂ内の最下流格納位置は共にコマンドＥＲ１が位置する。コマンド出力部１３４は、両キュー１３３Ａ，１３３Ｂから、最下流格納位置のコマンドＥＲ１，ＥＲ１をそれぞれ発行する。この発行されたコマンドＥＲ１，ＥＲ１は、それぞれマスター側とスレーブ側の各メカＩ／Ｆ部８４に送られる（図７中の（１），（２））。
【０１１５】
メカＩ／Ｆ部８４は、コマンドを受信すると、マスター側では仮想メカコン８５にコマンドＥＲ１の問合せをし（図７中の（３））、スレーブ側ではダミーメカコン９５にコマンドＰＳ２の問合せをする（図７中の（３））。
【０１１６】
スレーブ側のメカＩ／Ｆ部８４は、ダミーメカコン９５から無条件で直ちにＡＣＫ信号の応答を受け付けると、コマンドＥＲ１を通信線ＳＬ３へ出力する（図７中の（４），（５））。この出力されたコマンドＥＲ１は、マスター側の仮想メカコン８５が受信する。
【０１１７】
仮想メカコン８５は、マスター側とスレーブ側の両メカＩ／Ｆ部８４から受け付けたコマンドＥＲ１，ＥＲ１が一致すると判断するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４に対してＡＣＫ信号を応答する（図７中の（６））。そして、メカＩ／Ｆ部８４はＡＣＫ信号の応答を受け付けると、メカコントローラー４３へコマンドＥＲ１を送信する（図７中の（７））。つまり、仮想メカコン８５の同期処理においてマスター側とスレーブ側の両方で同一のコマンドが揃ったことが確認されたタイミングで、マスター側のメカＩ／Ｆ部８４からコマンドＥＲ１がメカコントローラー４３へ送信される。
【０１１８】
なお、リトライが所定回数繰り返されてもＡＣＫ信号の応答が得られない場合、タイムアウトになってコマンド送信エラーが発行されることになるが、上記のソート処理によってリトライ時にはＡＣＫ信号の応答が得られるので、この種のコマンド送信エラーが発行されることは回避される。
【０１１９】
その後、両キュー１３３Ａ，１３３Ｂは、図６（ｄ）の格納状態になる。コマンド出力部１３４は、キュー１３３Ａ，１３３Ｂ内の最下流格納位置のコマンドＰＳ２，ＰＳ２を、それぞれシーケンス制御部９４を介してメカＩ／Ｆ部８４へ出力する（図７中の（１），（２））。
【０１２０】
メカＩ／Ｆ部８４は、コマンドを受信すると、マスター側では仮想メカコン８５にコマンドＰＳ２の問合せをし（図７中の（３））、スレーブ側ではダミーメカコン９５にコマンドＰＳ２の問合せをする（図７中の（３））。
【０１２１】
スレーブ側のメカＩ／Ｆ部８４は、ダミーメカコン９５から無条件で直ちにＡＣＫ信号の応答を受け付けると、コマンドＰＳ２を通信線ＳＬ３へ出力する（図７中の（４），（５））。この出力されたコマンドＰＳ２は、マスター側の仮想メカコン８５が受信する。
【０１２２】
仮想メカコン８５は、マスター側とスレーブ側の両メカＩ／Ｆ部８４から受け付けたコマンドＰＳ２，ＰＳ２が一致すると判断するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４に対してＡＣＫ信号を応答する（図７中の（６））。そして、メカＩ／Ｆ部８４はＡＣＫ信号の応答を受け付けると、メカコントローラー４３へコマンドＰＳ２を送信する（図７中の（７））。つまり、仮想メカコン８５の同期処理においてマスター側とスレーブ側の両方で同一のコマンドが揃ったことが確認されたタイミングで、マスター側のメカＩ／Ｆ部８４からコマンドＰＳ２がメカコントローラー４３へ送信される。
【０１２３】
以上詳述したように、本実施形態では、以下に示す効果を得ることができる。
（１）内部コマンドが発生したときに通信線ＳＬ４を介して他のコントローラーへも内部コマンドを送信する構成において、両キュー１３３Ａ，１３３Ｂに格納されるコマンドの順番が異なっても、ソート処理により優先順位の順番にコマンドが並び替えられるので、コマンドを全てメカコントローラー４３へ出力することができる。この結果、通信線ＳＬ４を介した通信に相対的に時間がかかって送信先のコントローラーでコマンドの取得時期が遅れ、これが原因で各コントローラー４１，４２内のイミーディエットキュー１３３に格納されたコマンドの順番が異なることになっても、仮想メカコン８５でコマンドが揃わないことに起因するコマンド送信エラーの発生を回避できる。
【０１２４】
（２）ソート処理は、リトライ要求があったときに行われるので、不要なソート処理をなるべく少なく抑えることができる。この結果、例えばソート処理が原因でコマンド出力部１３４からのコマンド出力時期が遅延する事態を回避できる。
【０１２５】
（３）仮想メカコン８５は、マスター側とスレーブ側の各メカＩ／Ｆ部８４からのコマンドが揃いかつ各コマンドが一致したと判断したときに、マスター側のメカＩ／Ｆ部８４にＡＣＫ信号を応答し、この応答に基づきマスター側のメカＩ／Ｆ部８４がメカコントローラー４３へコマンドを送信する。よって、マスター側とスレーブ側のコントローラー４１，４２間で同期をとってメカコントローラー４３へコマンドを送信することができる。
【０１２６】
（４）複数のコントローラー４１，４２は、図４及び図７に示すようにその機能構成が同じなので、マスター側とスレーブ側とで同期処理に係る機能構成が一部異なるものの、共通のプログラムにより実現することができる。
【０１２７】
（５）インク管理部９０（検出手段）は、インクカートリッジＩＣの記憶素子４７から取得したインク関連情報に基づきインク切れなどのエラーを検出する。そして、インク切れなどの検出結果に基づき生成されたエラーコマンドが、通信Ｉ／Ｆ部８７，８７を通じて他のコントローラーへ送信された際に、両キュー１３３Ａ，１３３Ｂ間で格納順序が異なっても、ソート処理により同じ格納順序に並び替えられる。よって、インク切れのときに、コマンド送信エラーが発生する事態を回避できる。
【０１２８】
（第２実施形態）
次に第２実施形態を図８及び図９に基づいて説明する。
図８は、コマンドの出力処理を説明するブロック図である。ジョブ制御部９３は、コマンド判定部１３１、シーケンスキュー１３２、イミーディエットキュー１３３、コマンド出力部１３４、循環手段の一例としての循環処理部１３８及び周期設定部１３９を備えている。
【０１２９】
図８に示す循環処理部１３８は、イミーディエットキュー１３３内のコマンドの格納順を１つずらす循環処理を行う。本実施形態では、メカＩ／Ｆ部８４からのリトライ要求を受け付けると、循環処理部１３８は、キュー１３３内の最下流格納位置にあるコマンドを再びキュー１３３内へ再入力させることでコマンドの配列順を順方向に１つずらす循環処理を行う。
【０１３０】
周期設定部１３９は、循環処理部１３８が１回の循環処理を行う周期を設定するためのものである。ここで、マスター側は第１周期設定部１３９Ａを備え、スレーブ側は第２周期設定部１３９Ｂを備えている。第１周期設定部１３９Ａには第１周期Ｔ１が設定され、第２周期設定部１３９Ｂには、第１周期Ｔ１と異なる第２周期Ｔ２（≠Ｔ１）が設定されている。第１周期Ｔ１と第２周期Ｔ２との周期差（時間差）ΔＴは、ジョブ制御部９３からコマンドが出力されてから、仮想メカコン８５でコマンド不一致のためにメカＩ／Ｆ部８４からリトライ要求を受け付けるまでの想定所要時間を単位時間とすると、マスター側とスレーブ側の各循環処理部１３８，１３８の単位時間当たりの循環処理回数Ｎ１，Ｎ２が異なるように設定される。本実施形態では、第１周期Ｔ１が第２周期Ｔ２よりも長く設定されている（Ｔ１＞Ｔ２）。一例として第１周期Ｔ１及び第２周期Ｔ２は共に１０〜１０００ミリ秒の範囲内の値に設定され、周期差ΔＴが１〜２００ミリ秒の範囲内の値に設定されている。もちろん、ジョブ制御部９３のコマンド出力時からそのリトライ要求受け付け時までの間に、マスター側とスレーブ側とのいずれか一方の循環処理部１３８で少なくとも１回の循環処理が行われればよい。なお、３個以上のコントローラーを備えた構成では、各循環処理部の周期がそれぞれ異なるように設定するのが好ましい。
【０１３１】
以下、第２実施形態におけるコマンド出力処理を、図８及び図９を用いて説明する。図９は、マスター側とスレーブ側のイミーディエットキュー１３３Ａ，１３３Ｂを示す。なお、図９のキュー１３３において、一番下に格納されたコマンドのうち破線で囲ったコマンドはメカコントローラー４３へ出力されるものである。例えば、ホスト装置１２０からコマンドＰＳ１を受信したマスター側コントローラー４１においてそのコマンドＰＳ１の受信後に内部でエラーが発生し、このエラーによるエラーコマンドをスレーブ側コントローラー４２へ送信している送信段階の途中でホスト装置１２０から次のコマンドＰＳ２が送られてきたとする。この場合、図８及び図９（ａ）に示すように、マスター側のキュー１３３Ａには、コマンドＰＳ１，ＥＲ１，ＰＳ２の順番に格納され、スレーブ側のキュー１３３Ｂには、コマンドＰＳ１，ＰＳ２の順番に格納される。このとき、スレーブ側のキュー１３３Ｂには、まだエラーコマンドＥＲ１は届いていない（図９（ａ）の状態）。
【０１３２】
この図９（ａ）の状態では、ジョブ制御部９３は、各キュー１３３Ａ，１３３Ｂの最下流格納位置（図８及び図９における最下位置）のコマンドＰＳ１，ＰＳ１を、シーケンス制御部９４を介してメカＩ／Ｆ部８４へ出力する（図８中の（１），（２））（指示段階）。この場合、コマンドは緊急コマンドなので、直ちに出力される。
【０１３３】
各メカＩ／Ｆ部８４がコマンドを受信すると、仮想メカコン８５やダミーメカコン９５との間で前記第１実施形態と同様の問合せ処理などが行われる。その結果、仮想メカコン８５は、マスター側とスレーブ側の各メカＩ／Ｆ部８４からコマンドＰＳ１，ＰＳ１を受信する（図８中の（３）〜（５））。
【０１３４】
仮想メカコン８５は、マスター側とスレーブ側の両メカＩ／Ｆ部８４から受け付けたコマンドＰＳ１，ＰＳ１が一致するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４にＡＣＫ信号を応答する（図８中の（６））。そして、マスター側のメカＩ／Ｆ部８４はＡＣＫ信号の応答を受け付けると、メカコントローラー４３へコマンドＰＳ１を送信する（図８中の（７））。
【０１３５】
ジョブ制御部９３は、メカＩ／Ｆ部８４からコマンド出力の旨の応答を受信すると、次のコマンドの出力を行う。図９（ａ）においてコマンドＰＳ１，ＰＳ１が発行された後、図９（ｂ）に示すように、スレーブ側のキュー１３３Ｂには遅れて届いたコマンドＥＲ１が格納される。コマンド出力部１３４は、両キュー１３３Ａ，１３３Ｂから、最下流格納位置のコマンドＥＲ１，ＰＳ２をそれぞれ発行する。この発行されたコマンドＥＲ１，ＰＳ２は、それぞれマスター側とスレーブ側の各メカＩ／Ｆ部８４に送られる（図８中の（１），（２））（指示段階）。
【０１３６】
各メカＩ／Ｆ部８４がコマンドを受信すると、仮想メカコン８５やダミーメカコン９５との間で前記第１実施形態と同様の問合せ処理などが行われる。その結果、仮想メカコン８５は、マスター側とスレーブ側の各メカＩ／Ｆ部８４からコマンドＥＲ１，ＰＳ２を受信する（図８中の（３）〜（５））。
【０１３７】
仮想メカコン８５は、両コマンドＥＲ１，ＰＳ２を受け付けると、両コマンドが一致するか否かを判断するが、この場合、仮想メカコン８５はコマンドＥＲ１，ＰＳ２が一致しないと判断するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４に対してＮＡＣＫ信号を応答する（図８中の（８））。そして、メカＩ／Ｆ部８４はＮＡＣＫ信号の応答を受け付けると、シーケンス制御部９４を介してジョブ制御部９３にリトライを要求する（図７中の（９），（１０））。
【０１３８】
ジョブ制御部９３がリトライ要求を受け付けると、循環処理部１３８がキュー１３３Ａ，１３３Ｂ内のコマンドの格納位置を順方向に１つずらす循環処理を行う（図８中の（１１））（再配列段階）。この循環処理は、そのコマンドについて最初のリトライ要求を受け付けたことを開始条件として継続的に行う。最初のリトライ要求を受け付けると、まず一方の循環処理部１３８（本実施形態では一例として設定周期の短いスレーブ側の循環処理部）が直ぐに１回目の循環処理を開始し、以後、第２周期設定部１３９Ｂに設定された第２周期Ｔ２毎に１回ずつの循環処理を行う。他方の循環処理部１３８（本実施形態では一例として設定周期の長いマスター側の循環処理部）は、最初のリトライ要求を受け付けると、その時点から第１周期設定部１３９Ａに設定された第１周期Ｔ１の計時を開始し、第１周期Ｔ１が経過すると、１回目の循環処理を開始する。以後、他方の循環処理部１３８は、第１周期設定部１３９Ａに設定された第１周期毎に１回ずつの循環処理を行う。本例では、１回の循環処理で、キュー１３３の最下流格納位置にあるコマンドがそのキュー１３３に再入力され、コマンドの順番が順方向に１つずらされる。
【０１３９】
図９（ｂ）における両キュー１３３Ａ，１３３Ｂのうち、一方のキュー１３３Ｂ内のコマンドに対して１回目の循環処理が行われ、図９（ｃ）に示すように、最下流格納位置のコマンドＥＲ１，ＥＲ１が揃うことになる。
【０１４０】
コマンド出力部１３４は、図９（ｄ）に示す状態の両キュー１３３Ａ，１３３Ｂから、最下流格納位置のコマンドＥＲ１，ＥＲ１をそれぞれ発行（出力）する。この発行されたコマンドＥＲ１，ＥＲ１は、それぞれマスター側とスレーブ側の各メカＩ／Ｆ部８４に送られる（図８中の（１），（２））（指示段階）。
【０１４１】
このリトライ時にも、コマンドを受信した各メカＩ／Ｆ部８４が、仮想メカコン８５やダミーメカコン９５との間で前記第１実施形態と同様の問合せ処理などを行い、その結果、仮想メカコン８５は、マスター側とスレーブ側の両メカＩ／Ｆ部８４からコマンドＥＲ１，ＥＲ１を受け付ける（図８中の（３）〜（５））。このとき、仮想メカコン８５は、両コマンドＥＲ１，ＥＲ１が一致すると判断するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４にＡＣＫ信号を応答する（図８中の（６））。そして、マスター側のメカＩ／Ｆ部８４はＡＣＫ信号の応答を受け付けると、メカコントローラー４３へコマンドＥＲ１を送信する（図８中の（７））。なお、リトライが所定回数繰り返されてもＡＣＫ信号の応答が得られない場合、タイムアウトになってコマンド送信エラーが発行されることになるが、上記の循環処理によって、許容リトライ回数に達する前のリトライ回数のうちにメカＩ／Ｆ部８４は仮想メカコン８５からＡＣＫ信号の応答を得るので、この種のコマンド送信エラーの発生が回避される。
【０１４２】
図６（ｄ）の格納状態からコマンドＥＲ１，ＥＲ１が出力されたことにより、両キュー１３３Ａ，１３３Ｂの最下流格納位置のコマンドＰＳ２，ＰＳ２は揃うことになる。その結果、仮想メカコン８５での同期処理など同様の処理を経て、マスター側のメカＩ／Ｆ部８４からメカコントローラー４３へコマンドＰＳ２が送信される。よって、仮想メカコン８５でコマンドが揃わないことに起因するコマンド送信エラーの発生が回避される。
【０１４３】
一方、最初のリトライでもコマンドが揃わなかった場合、１回目のリトライ時に出力されたコマンドの仮想メカコン８５による同期処理が行われている間も、各キュー１３３Ａ，１３３Ｂの循環処理はそれぞれ設定周期Ｔ１，Ｔ２毎に継続的に行われる。このため、１回目のリトライ要求に対応してコマンドが発行された後、２回目のリトライ要求を受け付けるまでの経過時間をＴｗとすると、この経過時間Ｔｗの間に行われるキュー１３３Ａの循環処理回数Ｎ１は概算でＮ１＝［Ｔｗ／Ｔ１］回、キュー１３３Ｂの循環処理回数Ｎ２は概算でＮ２＝［Ｔｗ／Ｔ２］回となる（但し、記号［  ］はガウス記号である。）。本実施形態では、Ｔ１＞Ｔ２なので、循環処理回数Ｎ１，Ｎ２は、Ｎ１＜Ｎ２となる。よって、キュー１３３Ａ，１３３Ｂの最下流格納位置に配置されるコマンドの組合せは、リトライの度に異なることになり、やがて各キュー１３３Ａ，１３３Ｂの最下流格納位置にある各コマンドは揃うことになる。
【０１４４】
通常、各キュー１３３Ａ，１３３Ｂにおける同じ内部コマンドの格納位置のずれは、１つ分か２つ分なので、そのずれた回数分のリトライを行えばコマンドは揃うことになる。よって、仮想メカコン８５でコマンドが揃わないことに起因するコマンド送信エラーの発生を極力回避できる。なお、この第２実施形態では、ソート処理を行う第１実施形態に比べ、コマンド送信エラーを発行するまでのリトライ許容回数を多めの値に設定しておくが好ましい。
【０１４５】
この第２実施形態によれば、第１実施形態におけるソート処理で得られる効果（１）〜（５）を、循環処理によっても同様に得ることができる。特に効果（４）については、複数のコントローラー４１，４２における各キュー１３３Ａ，１３３Ｂを共に循環させる構成とし、それぞれに循環処理部１３８及び周期設定部１３９を設けたので、各コントローラー４１，４２を共通のプログラムにより実現することができる。
【０１４６】
（６）循環処理部１３８の一方（本例では循環処理部１３８Ｂ）については、リトライ要求があったときに直ぐに１回目の循環処理を行ったので、１周期分の待ち時間がなくてもコマンドの格納順の変更が行われる。このため、リトライ要求があれば１周期分の待ち時間を待つことなく１回分の循環処理の処理時間を待つだけでほぼ直ちにコマンド出力部１３４によるコマンドの出力処理を行うことができる。
【０１４７】
（第３実施形態）
次に第３実施形態を図１０及び図１１に基づいて説明する。
図１１は、コマンドの出力処理を説明するブロック図である。ジョブ制御部９３は、コマンド判定部１３１、シーケンスキュー１３２、イミーディエットキュー１３３、コマンド出力部１３４、番号付与手段の一例としてのシリアル番号付与部１４１及び再配列手段の一例としてのソート部１４２を備えている。
【０１４８】
図１１に示すシリアル番号付与部１４１は、緊急コマンドにシリアル番号を付与する。本実施形態では、マスター側のシリアル番号付与部１４１Ａと、スレーブ側のシリアル番号付与部１４１Ｂとが、コマンドに付与するシリアル番号が重複しない設定としている。例えばマスター側のシリアル番号付与部１４１Ａは、コマンドに奇数のシリアル番号を付与し、スレーブ側のシリアル番号付与部１４１Ｂは、コマンドに偶数のシリアル番号を付与する。もちろん、マスター側とスレーブ側のどちらで付与されたものかを識別可能であれば、マスター側とスレーブ側で重複するシリアル番号を付与してもよい。例えばコマンドにその発生元（シリアル番号付与元）を識別するための識別子を設けたり、コマンドを送るパケット中にフラグを設定したりして、その識別子やフラグ値を基に発生元を判定する方法を採用してもよい。
【０１４９】
図１１に示すソート部１４２は、イミーディエットキュー１３３に格納されたコマンドをシリアル番号の順番に並び替えるソート処理（再配列処理）を行う。本実施形態では、シリアル番号付与部１４１はシリアル番号を若い番号から順番に昇順で付与する。ソート部１４２は、このシリアル番号を付与する順番に合わせて、キュー１３３の出力側（下流側）から入力側（上流側）へ向かってコマンドをシリアル番号の昇順に並び替えるソート処理を行う。もちろん、シリアル番号を付与する順番が降順の場合、ソート部１４２はコマンドをシリアル番号の降順に並び替えるソート処理を行う。第１実施形態と同様に、ソート部１４２はメカＩ／Ｆ部８４からリトライ要求を受け付けると、ソート処理を行う。もちろん、ソート部１４２は、リトライ要求をソート処理のトリガーとするのではなく、キュー１３３にコマンドを入力する度、あるいはキュー１３３からのコマンドの出力に先立って、ソート処理を行ってもよい。この場合、カウンターが計数するキュー１３３の格納数が複数個に達している場合に限りソート処理を行うことが好ましい。
【０１５０】
また、図１１に示すように、本実施形態の仮想メカコン８５は、要求部１４３を備えている。要求部１４３は、仮想メカコン８５がコマンドの不一致と判定した場合、仮想メカコン８５がＮＡＣＫ信号の応答を行うときにソート要求を一緒に各メカＩ／Ｆ部８４に送る。
【０１５１】
マスター側とスレーブ側の両メカＩ／Ｆ部８４は、仮想メカコン８５からＮＡＣＫ信号の応答と一緒にソート要求を受け付けたときには、シーケンス制御部９４を介してジョブ制御部９３にリトライ要求と共にソート要求を行う。一方、両メカＩ／Ｆ部８４は、仮想メカコン８５において各メカＩ／Ｆ部８４からのコマンドが揃わず、仮想メカコン８５からＡＣＫ信号の応答がないままタイムアウトになった場合、シーケンス制御部９４を介してジョブ制御部９３にリトライを要求する。
【０１５２】
ソート部１４２は、リトライ要求を一緒にソート処理要求を受け付けたときにソート処理を行う。そして、コマンド出力部１３４はソート処理終了後のキュー１３３の最下流格納位置にあるコマンドを出力する。一方、リトライ要求のみでソート要求がない場合は、ソート部１４２によるソート処理を行うことなく、コマンド出力部１３４は前回のコマンドを再送する。このように本実施形態では、仮想メカコン８５においてコマンド不一致になって、マスター側とスレーブ側の両キュー１３３Ａ，１３３Ｂのコマンド格納順が揃っていない可能性が高いときに限り、ソート処理を行う。
【０１５３】
以下、第３実施形態におけるコマンド出力処理を、図１０及び図１１を用いて説明する。図１０は、マスター側とスレーブ側のイミーディエットキュー１３３Ａ，１３３Ｂを示す。なお、図１０のキュー１３３において、一番下に格納されたコマンドのうち破線で囲ったコマンドはメカコントローラー４３へ出力されるものである。例えば、ホスト装置１２０からコマンドＰＳ１を受信したマスター側コントローラー４１においてそのコマンドＰＳ１の受信後に内部でエラーが発生し、このエラーによるエラーコマンドをスレーブ側コントローラー４２へ送信している送信段階の途中でホスト装置１２０から次のコマンドＰＳ２が送られてきたとする。この場合、図１０（ａ）及び図１１に示すように、マスター側のキュー１３３Ａには、コマンドＰＳ１，ＥＲ１，ＰＳ２の順番に格納され、スレーブ側のキュー１３３Ｂには、コマンドＰＳ１，ＰＳ２の順番に格納される。このとき、スレーブ側のキュー１３３Ｂには、まだエラーコマンドＥＲ１は届いていない（図１０（ａ）の状態）。
【０１５４】
この図１０（ａ）の状態では、ジョブ制御部９３は、各キュー１３３Ａ，１３３Ｂの最下流格納位置（図１０及び図１１における最下位置）のコマンドＰＳ１，ＰＳ１を、シーケンス制御部９４を介してメカＩ／Ｆ部８４へ出力する（図１１中の（１），（２））（指示段階）。
【０１５５】
各メカＩ／Ｆ部８４がコマンドを受信すると、仮想メカコン８５やダミーメカコン９５との間で前記第１実施形態と同様の問合せ処理などが行われる。その結果、仮想メカコン８５は、マスター側とスレーブ側の各メカＩ／Ｆ部８４からコマンドＰＳ１，ＰＳ１を受信する（図１１中の（３）〜（５））。
【０１５６】
仮想メカコン８５は、マスター側とスレーブ側の両メカＩ／Ｆ部８４から受け付けたコマンドＰＳ１，ＰＳ１が一致するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４にＡＣＫ信号を応答する（図１１中の（６））。そして、メカＩ／Ｆ部８４はＡＣＫ信号の応答を受け付けると、メカコントローラー４３へコマンドＰＳ２を送信する（図１１中の（７））。
【０１５７】
ジョブ制御部９３は、メカＩ／Ｆ部８４からコマンド出力の旨の応答を受信すると、次のコマンドの出力を行う。図１０（ａ）においてコマンドＰＳ１，ＰＳ１が発行された後、図１０（ｂ）に示すように、スレーブ側のキュー１３３Ｂには遅れて届いたコマンドＥＲ１が格納される。コマンド出力部１３４は、両キュー１３３Ａ，１３３Ｂから、最下流格納位置のコマンドＥＲ１，ＰＳ２をそれぞれ発行する。この発行されたコマンドＥＲ１，ＰＳ２は、それぞれマスター側とスレーブ側の各メカＩ／Ｆ部８４に送られる（図１１中の（１），（２））（指示段階）。
【０１５８】
各メカＩ／Ｆ部８４がコマンドを受信すると、仮想メカコン８５やダミーメカコン９５との間で前記第１実施形態と同様の問合せ処理などが行われる。その結果、仮想メカコン８５はマスター側とスレーブ側の各メカＩ／Ｆ部８４からコマンドＥＲ１，ＰＳ２を受信する（図１１中の（３）〜（５））。
【０１５９】
仮想メカコン８５は、両コマンドＥＲ１，ＰＳ２を受け付けると、両コマンドが一致するか否かを判断するが、この場合、仮想メカコン８５はコマンドＥＲ１，ＰＳ２が一致しないと判断する。このようにコマンド不一致と判断したときには、要求部１４３は、仮想メカコン８５がＮＡＣＫ信号の応答を行うときにマスター側とスレーブ側の各メカＩ／Ｆ部８４へソート要求も一緒に送る（図１１中の（８））。そして、メカＩ／Ｆ部８４はＮＡＣＫ信号の応答をソート要求と共に受け付けると、シーケンス制御部９４を介してジョブ制御部９３にソート要求と共にリトライを要求する（図１１中の（９），（１０））。
【０１６０】
ジョブ制御部９３がソート要求と一緒にリトライ要求を受け付けると、ソート部１４２は、イミーディエットキュー１３３Ａ，１３３Ｂ内のコマンドの格納位置をシリアル番号の順番に並び替えるソート処理を行う（図１１中の（１１））（再配列段階）。このソート処理の結果、図１０（ｃ）に示すように、キュー１３３Ａ，１３３Ｂの最下流格納位置には共にコマンドＥＲ１，ＥＲ１が位置する。各コマンド出力部１３４は、キュー１３３Ａ，１３３Ｂから最下流格納位置のコマンドＥＲ１，ＥＲ１をそれぞれ発行（出力）する。この発行されたコマンドＥＲ１，ＥＲ１は、それぞれマスター側とスレーブ側の各メカＩ／Ｆ部８４に送られる（図１１中の（１），（２））（指示段階）。
【０１６１】
このリトライ時にも、コマンドを受信した各メカＩ／Ｆ部８４が、仮想メカコン８５やダミーメカコン９５との間で前記第１実施形態と同様の問合せ処理などを行い、その結果、仮想メカコン８５は、マスター側とスレーブ側の両メカＩ／Ｆ部８４からコマンドＥＲ１，ＥＲ１を受け付ける（図１１中の（３）〜（５））。このとき、仮想メカコン８５は、両コマンドＥＲ１，ＥＲ１が一致すると判断するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４にＡＣＫ信号を応答する（図１１中の（６））。そして、メカＩ／Ｆ部８４はＡＣＫ信号の応答を受け付けると、メカコントローラー４３へコマンドＥＲ１を送信する（図１１中の（７））。なお、リトライが所定回数繰り返されてもＡＣＫ信号の応答が得られない場合、タイムアウトになってコマンド送信エラーが発行されることになるが、上記のソート処理によってリトライ時にはＡＣＫ信号が応答されるので、この種のコマンド送信エラーの発生が回避される。
【０１６２】
その後、両キュー１３３Ａ，１３３Ｂは、図１０（ｄ）の格納状態になる。コマンド出力部１３４は、キュー１３３Ａ，１３３Ｂ内の最下流格納位置のコマンドＰＳ２，ＰＳ２を、それぞれシーケンス制御部９４を介してメカＩ／Ｆ部８４へ出力する（図１１中の（１），（２））。
【０１６３】
そして、同期処理に置いて、仮想メカコン８５は、マスター側とスレーブ側の各メカＩ／Ｆ部８４から受け付けたコマンドＰＳ２，ＰＳ２が一致すると判断するので、マスター側とスレーブ側の各メカＩ／Ｆ部８４にＡＣＫ信号を応答する（図１１中の（６））。そして、マスター側のメカＩ／Ｆ部８４はＡＣＫ信号の応答を受け付けると、メカコントローラー４３へコマンドＰＳ２を送信する（図１１中の（７））。
【０１６４】
なお、仮想メカコン８５においてコマンドが揃わずＡＣＫ信号の応答がなく、タイムアウトになった場合、各メカＩ／Ｆ部８４はシーケンス制御部９４を介してジョブ制御部９３にリトライ要求を行う。このとき、ジョブ制御部９３ではソート要求を受け付けないので、ソート処理が行われることなく、コマンド出力部１３４は前回と同じコマンドを再発行する。
【０１６５】
この第３実施形態によれば、第１実施形態における優先順位に替え、シリアル番号でソート処理を行うので、第１実施形態におけるソート処理で得られる効果（１）〜（５）を、同様に得ることができる。
【０１６６】
（７）仮想メカコン８５が要求部１４３を備え、仮想メカコン８５がコマンド不一致と判断した場合に限り要求部１４３がソート要求を行う構成なので、ソート要求が必要な場合のみソート処理を行うことができる。よって、不要なソート処理を行うことによってコマンド出力処理の処理速度が低下することを防ぎ、効率よくマンド出力処理を行うことができる。
【０１６７】
なお、上記実施形態は以下のような形態に変更することもできる。
・仮想メカコン８５がＮＡＣＫ信号の応答をしない構成も採用できる。すなわち、コマンドが不一致の場合、仮想メカコン８５はＡＣＫ信号の応答をせず、応答待ち時間が設定時間を過ぎてタイムアウトになると、メカＩ／Ｆ部８４がジョブ制御部９３にリトライ要求を行う構成でもよい。この場合も、タイムアウトまでの待ち時間が発生するものの、リトライ要求時には、ソート処理や循環処理などの再配列処理を行うことができる。
【０１６８】
・第２実施形態において、設定周期の短い方の循環処理部１３８の単位時間当たりの循環処理回数が複数回となるように周期を設定してもよい。各キュー１３３における単位時間当たりの循環処理回数が異なれば、各キュー１３３で次回出力されるコマンドの組合せを変更することはできる。また、リトライ回数が増えるものの、単位時間よりも長い周期を設定してもよい。さらにコマンドがメカコントローラー４３へ出力された旨の応答を受け付けるまで、循環処理を継続するのではなく、リトライ要求を受け付ける度に１回の循環処理を行う構成でもよい。また、１回の循環処理でずれるコマンドのずれ数は２つ分以上であってもよい。また、キュー１３３の最も入力側に位置するコマンドを出力側に移動させる逆方向の循環を行ってもよい。
【０１６９】
・第３実施形態における要求部１４３を備えた仮想メカコン８５の構成を、第１及び第２実施形態に適用してもよい。この場合も、コマンドが不一致の場合に限り、ソート処理や循環処理などの再配列処理が行われるので、各キュー１３３で次回出力すべきコマンドが揃っているにも拘らず、再配列処理が行われる事態を回避できる。この場合、ソート処理の例では、無駄なソート処理を減らしてコマンド出力処理における処理速度を向上でき、循環処理の例では、揃っていたコマンドを却ってずらす事態を回避できる。
【０１７０】
・第３実施形態において、例えばマスター側とスレーブ側のうち一方のみが循環処理部１３８を備えた構成も採用できる。この構成であっても、各キュー１３３Ａ，１３３Ｂのうち一方に格納されたコマンドに循環処理（再配列処理）が施されることにより、両キュー１３３Ａ，１３３Ｂにおいて次回出力されるコマンドの組合せを変更できる。また、３個以上のコントローラー（印刷制御装置）を備えた構成の場合、例えば１個のコントローラーについては、周期設定部の周期ＴをＴ＝０に設定するか、循環処理部１３８及び周期設定部１３９を廃止した構成も採用できる。
【０１７１】
・同期手段は、仮想メカコントローラー８５による方法に限定されない。例えば複数の印刷制御装置の出力先としてメカコントローラー４３との間に介在する同期回路を設け、同期回路において複数の印刷制御装置からのコマンドが揃い、かつすべて一致したら、そのコマンドをメカコントローラー４３へ送信する構成を採用してもよい。
【０１７２】
・同期手段は、複数の印刷制御装置の各出力手段からコマンドを受け付けるのではなく、コマンドを受け付けた際にコマンドが一致するか否かの判断に使用できる情報をコマンドに替えて受け付ける構成でもよい。情報としては、例えばコマンドの識別子情報（例えばコマンド番号）などを挙げることができる。
【０１７３】
・内部コマンドはエラーコマンドに限定されない。印刷制御装置の一例であるコントローラー内で個別に発生した内部コマンドであればよい。内部コマンドであれば、仮に他のコントローラーへ通信線ＳＬ４を介して送信されたときに、その内部コマンドの通信所要時間が比較的長くかかることが原因で、送信元と送信先の各コントローラーのジョブ制御部９３間でコマンドの取得順が異なることになる構成であれば、同様の課題が発生する。
【０１７４】
・検出手段は、部品の一例であるインクカートリッジの状態（装着外れ、色違い、インク切れ等）を検出するインク管理部９０に限定されない。記録ヘッド２９毎にノズルの目詰まりを検査するためのノズル検査部を設け、複数のノズル検査部を部品の一例として複数のコントローラー４１，４２に分担して接続する。そして、各コントローラーには、ノズル検査部の検査制御とノズル検査部のノズル検査結果に基づきノズル目詰まり（ノズルエラー）を検出する検出機能とを有する検査制御部（検出手段）を備えた構成も採用できる。この場合、ノズル検査結果又はその検査結果に基づくコマンドを、コントローラー４１，４２間で通信Ｉ／Ｆ部８７，８７を介して他のコントローラーへ通知する。そして、各コントローラー４１，４２内に設けられた各検査制御部は、ノズル検査結果に基づきノズル目詰まりエラーコマンド（ノズルエラーコマンド）を生成したり、ノズル検査結果に基づきメンテナンス装置３２にクリーニングを行わせるクリーニングコマンドを生成したりする。この場合、通信による所要時間が比較的長いことに起因し、マスター側とスレーブ側の両コントローラー４１，４２でコマンドを取得した順番（つまりキュー１３３Ｂ内のコマンド格納順）が異なっても、ノズルエラーコマンドやクリーニングコマンドを、コマンド送信エラーの発生を招くことなく、メカコントローラー４３へ出力できる。
【０１７５】
・印刷制御装置の一例であるコントローラー４１，４２が分担して制御する印刷手段は、記録ヘッド２９に限定されない。印刷手段は、例えばキャリッジモーターを含むキャリッジ駆動系であってもよいし、搬送モーターを含む搬送駆動系であってもよい。さらに、記録ヘッド２９に、キャリッジ駆動系又は搬送駆動系を加えて印刷手段を構成することもできる。また、キャリッジ駆動系及び搬送駆動系により、印刷手段を構成することもできる。
【０１７６】
・印刷制御装置は二つに限らず、三つ以上の印刷制御装置を接続した構成も採用できる。
・記録ヘッドは１個でもよい。例えばライン記録方式の長尺状の記録ヘッドにおいて全ノズルを複数に分割したヘッド領域を複数に分担して二以上の印刷制御装置により制御し、これらの印刷制御装置を同期させてメカコントローラーにコマンドを出力する構成も採用できる。
【０１７７】
・図４におけるコントローラーの各機能部を、プログラムを実行するＣＰＵにより主にソフトウェアで実現したが、ハードウェアで実現したり、ソフトウェアとハードウェアとの協働により実現したりしてもよい。
【０１７８】
・印刷装置は、ラテラル式のプリンター１１に限定されず、シリアルプリンター、ラインプリンター、ページプリンターでもよい。さらにインクジェット式に限定されず、ドットインパクト式の印刷装置にも適用できる。
【０１７９】
・前記実施形態では、印刷装置として、インクジェット式のプリンター１１が採用されているが、インク以外の他の流体を噴射したり吐出したりする流体噴射装置を採用してもよい。また、微小量の液滴を吐出させる液体噴射ヘッド等を備える各種の液体噴射装置に流用可能である。この場合、液滴とは、上記液体噴射装置から吐出される液体の状態を言い、粒状、涙状、糸状に尾を引くものも含むものとする。また、ここでいう液体とは、液体噴射装置が噴射させることができるような材料であればよい。例えば、物質が液相であるときの状態のものであればよく、粘性の高い又は低い液状体、ゾル、ゲル水、その他の無機溶剤、有機溶剤、溶液、液状樹脂、液状金属（金属融液）のような流状体、また物質の一状態としての液体のみならず、顔料や金属粒子などの固形物からなる機能材料の粒子が溶媒に溶解、分散または混合されたものなどを含む。また、液体の代表的な例としては上記実施形態で説明したようなインクや液晶等が挙げられる。ここで、インクとは一般的な水性インクおよび油性インク並びにジェルインク、ホットメルトインク等の各種液体組成物を包含するものとする。液体噴射装置の具体例としては、例えば液晶ディスプレイ、ＥＬ（エレクトロルミネッセンス）ディスプレイ、面発光ディスプレイ、カラーフィルタの製造などに用いられる電極材や色材などの材料を分散または溶解のかたちで含む液体を噴射する液体噴射装置が挙げられる。さらに、バイオチップ製造に用いられる生体有機物を噴射する液体噴射装置、精密ピペットとして用いられ試料となる液体を噴射する液体噴射装置、捺染装置やマイクロディスペンサ等であってもよい。さらに、時計やカメラ等の精密機械にピンポイントで潤滑油を噴射する液体噴射装置、光通信素子等に用いられる微小半球レンズ（光学レンズ）などを形成するために紫外線硬化樹脂等の透明樹脂液を基板上に噴射する液体噴射装置、基板などをエッチングするために酸又はアルカリ等のエッチング液を噴射する液体噴射装置を採用してもよい。そして、これらのうちいずれか一種の液体噴射装置に本発明を適用することができる。また、流体は、トナーなどの粉粒体でもよい。なお、本明細書でいう流体には、気体のみからなるものは含まないものとする。
【０１８０】
前記実施形態及び変形例から把握できる技術的思想を以下に記載する。
請求項１乃至９のいずれか一項に記載の前記同期手段を備えた一の前記印刷制御装置と、前記同期手段を備えない他の印刷制御装置とを備え、前記他の印刷制御装置の前記出力手段は前記同期手段に接続されており、前記一の印刷制御装置の前記出力手段は前記同期手段及び前記駆動制御手段に接続されていることを特徴とする印刷制御システム。この構成によれば、印刷手段を複数の印刷制御手段で分担して制御でき、しかも、各出力手段にコマンドが全て揃わないことに起因する同期手段のエラーを回避できる。
【符号の説明】
【０１８１】
１１…印刷装置の一例であるプリンター、１３…印刷媒体の一例であるシート、２７…キャリッジ、２９，２９Ａ，２９Ｂ…印刷手段を構成する記録ヘッド、３６…ノズル、４１…印刷制御装置、第１印刷制御装置及びマスター側印刷制御装置の一例であるマスター側コントローラー、４２…印刷制御装置、第２印刷制御装置及びスレーブ側印刷制御装置の一例であるスレーブ側コントローラー、４３…駆動制御手段の一例であるメカコントローラー、４４…メカニカル機構、４５…ヘッド制御ユニット（ＨＣＵ）、４６…通信回路、４７…記憶素子、５０…リニアエンコーダー、５３…ＣＰＵ、５４…ＡＳＩＣ、５５…ＲＡＭ、５６…不揮発性メモリー、６１…搬送手段を構成する搬送モーター、６２…第１ＣＲモーター、６３…第２ＣＲモーター、７２…操作スイッチ、８１…画像処理部、８２…主制御部、８３…指示手段の一例であるメカ制御部、８４…出力手段の一例であるメカＩ／Ｆ部、８５…同期手段の一例である仮想メカコントローラー、８６…コマンド生成手段の一例を構成するエラー管理部、８７…通信手段の一例である通信Ｉ／Ｆ部、８８…画像バッファー、８９…ヘッド制御部、９０…コマンド生成手段の一例を構成すると共に検出手段の一例であるインク管理部、９３…管理手段の一例であるジョブ制御部、９４…指示手段の一例であるシーケンス制御部、９５…ダミーメカコントローラー、９８…インク残量演算部、１００…印刷システム、１１０…画像生成装置、１２０…ホスト装置、１２２…プリンタードライバー、１２５…ホスト制御部、１３１…コマンド判定部、１３２シーケンスキュー、１３３，１３３Ａ，１３３Ｂ…イミーディエットキュー、１３４…コマンド出力部、１３５…優先順位設定手段の一例である優先順位付与部、１３６…再配列手段及びソート手段の一例であるソート部、１３８…再配列手段及び循環手段の一例である循環処理手段、１３９（１３９Ａ）…周期設定手段の一例である第１周期設定部、１３９（１３９Ｂ）…周期設定手段の一例である第２周期設定部、１４１（１４１Ａ，１４１Ｂ）…番号付与手段の一例であるシリアル番号付与部、１４２…再配列手段及びソート手段の一例であるソート部、Ｃ…制御装置、Ｕ３，Ｕ４…入力手段の一例を構成するシリアル通信ポート、ＩＣ１〜ＩＣ８…印刷材収容体の一例であるインクカートリッジ、ＳＬ３…通信線、ＳＬ４…通信線、ＰＤ，Ｐ１，Ｐ２…印刷データ、ＥＲ１…第２のコマンドの一例であるエラーコマンド（内部コマンド）、ＰＳ１，ＰＳ２…第１のコマンドの一例であるコマンド。
【図１】
0005655405.tif 000002
【図２】
0005655405.tif 000003
【図３】
0005655405.tif 000004
【図４】
0005655405.tif 000005
【図５】
0005655405.tif 000006
【図６】
0005655405.tif 000007
【図７】
0005655405.tif 000008
【図８】
0005655405.tif 000009
【図９】
0005655405.tif 000010
【図１０】
0005655405.tif 000011
【図１１】
0005655405.tif 000012