(第1実施形態)
以下、本発明をラテラル方式のインクジェット式プリンターの印刷制御装置に具体化した第1実施形態を図1〜図7に従って説明する。
図1は、ラテラル方式のインクジェット式プリンターを備えた印刷システムの模式図である。図1に示すように、印刷システム100は、画像データを生成する画像生成装置110と、画像生成装置110から受信した画像データを基に印刷データを生成するホスト装置120と、ホスト装置120から受信した印刷データに基づく画像を印刷する印刷装置の一例としてのラテラル方式のインクジェット式プリンター(以下、単に「プリンター11」と称す)とを備えている。
画像生成装置110は、例えばパーソナルコンピューターにより構成され、その本体111内のCPUが画像作成用ソフトウェアを実行することで構築される画像生成部112を備える。ユーザーは、画像生成部112を起動して入力装置113の操作でモニター114上で画像を作成し、入力装置113を操作して画像の印刷を指示する。すると、その画像に係る画像データが所定の通信インターフェイスを介してホスト装置120へ送信される。
ホスト装置120は、例えばパーソナルコンピューターにより構成され、その本体121内のCPUがプリンタードライバー用ソフトウェアを実行することで構築されるプリンタードライバー122を備える。プリンタードライバー122は、画像生成装置110から受信した画像データを基に印刷データを生成し、プリンター11に設けられた制御装置Cへ送信する。制御装置Cは、プリンタードライバー122から受信した印刷データに基づいてプリンター11を制御し、プリンター11に印刷データに基づく画像を印刷させる。なお、モニター123には、プリンター11に制御用設定値を入力設定するためのメニュー画面や印刷対象の画像等が表示される。
次に、図1に示すプリンター11の構成について説明する。なお、以下における明細書中の説明において、「左右方向」、「上下方向」をいう場合は、図1等の図面に矢印で示した方向を基準として示すものとする。また、図1において手前側を前側、奥側を後側とする。
図1に示すように、プリンター11は、直方体状の本体ケース12を備える。本体ケース12内には、長尺状のシート13を繰り出す繰出し部14と、そのシート13にインクの噴射により印刷を施す印刷室15と、その印刷によりインクが付着したシート13に乾燥処理を施す乾燥装置16と、乾燥処理が施されたシート13を巻き取る巻取り部17とが設けられている。
すなわち、本体ケース12内におけるやや上寄りの位置には、本体ケース12内を上下に区画する平板状の基台18が設けられており、この基台18よりも上側の領域が矩形板状の支持部材19を基台18上に支持してなる印刷室15となっている。そして、基台18よりも下側の領域において、シート13の搬送方向で上流側となる左側寄りの位置に、繰出し部14が配設されると共に、下流側となる右側寄りの位置に、乾燥装置16及び巻取り部17が配設されている。
図1に示すように、繰出し部14には、前後方向に延びる巻き軸20が回転自在に設けられ、その巻き軸20に対してシート13が予めロール状に巻かれた状態で一体回転可能に支持されている。すなわち、シート13は、巻き軸20が回転することにより、繰出し部14から繰り出されるようになっている。また、繰出し部14から繰り出されたシート13は、巻き軸20の右側に位置する第1ローラー21に巻き掛けられて上方へ案内される。
一方、支持部材19の左側であって下側の第1ローラー21と上下方向で対応する位置には、第2ローラー22が下側の第1ローラー21と平行な状態で設けられている。そして、第1ローラー21によって搬送方向が鉛直上方向に変換されたシート13は、この第2ローラー22に左側下方から巻き掛けられることにより、その搬送方向が水平右方向に変換されて支持部材19の上面に摺接するようになっている。
また、支持部材19の右側には、左側の第2ローラー22と支持部材19を挟んで対向する第3ローラー23が第2ローラー22と平行な状態で設けられている。なお、第2ローラー22及び第3ローラー23は各々の周面の頂部が支持部材19の上面と同一高さとなるように位置調整されている。
印刷室15内で左側の第2ローラー22により搬送方向が水平右方向に変換されたシート13は、支持部材19の上面に摺接しつつ下流側となる右側に搬送された後、第3ローラー23に右側上方から巻き掛けられることにより搬送方向が鉛直下方向に変換されて基台18よりも下側の乾燥装置16に向けて搬送されるようになっている。そして、乾燥装置16内を通過することにより乾燥処理が施されたシート13は、更に鉛直下方向に搬送された後、第4ローラー24に巻き掛けられて搬送方向を水平右方向に変換され、この第4ローラー24の右側に配設された巻取り部17の巻取り軸25が搬送モーター61(図3参照)の駆動力に基づいて回転することによりロール状に巻き取られる。
図1に示すように、印刷室15内における支持部材19の前後両側には、左右方向に延びるガイドレール26(図1では2点鎖線で示す)が対をなすように設けられている。ガイドレール26の上面は支持部材19の上面よりも高くなっており、両ガイドレール26の上面には、矩形状のキャリッジ27が第1及び第2キャリッジモーター62,63(図3参照)の駆動に基づき両ガイドレール26に沿って図1に示す主走査方向X(図1では左右方向)への往復移動が可能な状態で支持されている。そして、このキャリッジ27の下面側には支持板28を介して複数の記録ヘッド29が支持されている。
支持部材19の左端から右端までの一定範囲が印刷領域とされており、この印刷領域単位でシート13は間欠的に搬送されるようになっている。そして、支持部材19上に停止したシート13に対してキャリッジ27の往復移動に伴い記録ヘッド29からインクが噴射されることでシート13に印刷が施される。
なお、印刷時には、支持部材19の下側に設けられた吸引装置30が駆動され、支持部材19の上面に開口する多数の吸引孔に及ぶ負圧による吸引力により、シート13は支持部材19の上面に吸着される。そして、シート13への1回分の印刷が終わると、吸引装置30の負圧が解除され、シート13の搬送が行われるようになっている。
また、印刷室15内において、第3ローラー23よりも右側となる非印刷領域には、非印刷時に記録ヘッド29のメンテナンスを行うためのメンテナンス装置32が設けられている。メンテナンス装置32は、記録ヘッド29毎にキャップ33と昇降装置34とを備える。各キャップ33は昇降装置34の駆動により、記録ヘッド29のノズル形成面35(図2参照)に当接するキャッピング位置と、ノズル形成面35から離間する退避位置との間を移動する。
また、図1に示すように、本体ケース12内には、異なる色のインクをそれぞれ収容した複数(例えば8個)のインクカートリッジIC1〜IC8が着脱可能に装着されている。そして、各インクカートリッジIC1〜IC8はインク供給路70A,70B等(図2参照)を通じて記録ヘッド29に接続され、各記録ヘッド29は各インクカートリッジIC1〜IC8から供給されたインクを噴射する。このため、本例のプリンター11では、8色のインクを用いたカラー印刷が可能となっている。なお、本体ケース12においてインクカートリッジIC1〜IC8の配置位置と対応する箇所には開閉式のカバー38が設けられている。インクカートリッジIC1〜IC8の交換作業はカバー38を開けて行われる。
8個のインクカートリッジIC1〜IC8は、例えば黒(K)、シアン(C)、マゼンタ(M)、イエロー(Y)等の各インクを収容する。なお、保湿液を収容する保湿液カートリッジが装填される構成も採用できる。もちろん、インクの種類(色数)は適宜設定でき、黒インクだけでモノクロ印刷する構成や、インクを2色としたり、8色以外で3色以上の任意の色数としたりした構成も採用できる。
各インクカートリッジIC1〜IC8はカートリッジホルダー(図示省略)を介して制御装置Cと電気的に接続されており、各インクカートリッジIC1〜IC8に実装された不揮発性の記憶素子47(図3参照)には、対応する色のインク残量情報が書き込まれるようになっている。
図2は、キャリッジの底面に設けられた複数の記録ヘッドと、各記録ヘッドへインクを供給するインク供給装置とを示す模式図である。図2に示すように、キャリッジ27の下面側に支持された支持板28には、複数個(本実施形態では15個)の記録ヘッド29がシート13の搬送方向(図2において白抜き矢印で示す方向)と直交する幅方向(前後方向)に亘って千鳥状の配置パターンで支持されている。つまり、15個の記録ヘッド29は、副走査方向Yに沿って一定ピッチで2列で配列された記録ヘッド29A,29Bが、副走査方向Yに互いに半ピッチ分ずれた千鳥配置をとっている。そして、各記録ヘッド29の下面となるノズル形成面35には、多数のノズル36が前後方向(副走査方向Y)に沿って1列に配置されてなるノズル列37が主走査方向Xに所定間隔をおいて複数列(本実施形態では8列)形成されている。
図2に示すように、各記録ヘッド29へ各色のインクを供給するためのインク供給装置39が設けられている。インク供給装置39は、ポンプモーター65、加圧ポンプ66、インクカートリッジIC1〜IC8及びサブタンク67を備えている。
各インクカートリッジIC1〜IC8は、カートリッジホルダーに装着された状態では、それぞれインク供給路70A(例えばチューブ)を通じてサブタンク67と接続され、さらにサブタンク67はインク供給路70B(例えばチューブ)を通じて各記録ヘッド29に接続されている。但し、図2では、複数(例えば8個)のサブタンク67と1つの記録ヘッド29との接続関係のみ示している。実際には、1個のサブタンク67からは記録ヘッド29の個数と同数本のインク供給路70Bが延びており、各インク供給路70Bは各記録ヘッド29に接続されている。
また、インクカートリッジIC1〜IC8は、カートリッジホルダーに装着された状態では、加圧ポンプ66の吐出口と空気供給路71を通じて接続されるようになっている。制御装置Cがポンプモーター65を駆動して加圧ポンプ66がポンプ駆動されることにより、加圧ポンプ66から吐出された加圧空気が空気供給路71を通じてインクカートリッジIC1〜IC8内に供給される。
インクカートリッジIC内にはインクパックが収容されており、空気供給路71を通じてインクカートリッジIC内に供給される加圧空気によってインクパックが加圧されることにより、インクカートリッジICからインク供給路70Aへインクが加圧供給されるようになっている。インクカートリッジICから供給されたインクはインク供給路70Aを通じてサブタンク67へ供給され、さらにサブタンク67からインク供給路70Bを通じて各記録ヘッド29へ供給される。
また、本体ケース12において図2に実線で示す閉状態にあるカバー38の回動端と対応する位置には、カバー38を閉状態にロックするための電磁ロック68が設けられている。例えば本体ケース12におけるカバー38の近傍位置には、ユーザーがカバー38のロック/ロック解除の操作をするための操作スイッチ72(図3参照)が設けられている。制御装置Cは、操作スイッチ72からカバー38をロックさせる操作がなされた際のロック信号を入力すると、電磁ロック68を励磁させることによりカバー38を閉状態にロックさせる。また、制御装置Cは、操作スイッチ72からカバー38のロックを解除させる操作がなされた際のロック解除信号を入力すると、電磁ロック68を消磁させることによりカバー38のロックを解除させる。カートリッジ交換を行う際は、図2に示すように、カバー38を二点鎖線で示す開状態(但し最大開度は図2の状態より大きい)で、インクカートリッジIC1〜IC8のうち少なくとも1個の交換を行って再びカバー38を図2に実線で示す閉状態とした後、操作スイッチ72を操作することでカバー38を閉状態にロックさせる。
図3は、印刷システム100の電気構成を示すブロック図である。図3に示すホスト装置120内のプリンタードライバー122は、モニター123に表示させるべきメニュー画面及び印刷条件設定画面などの各種画面の表示制御を行うと共に、各画面の表示状態において操作部124から入力した操作信号に応じた所定処理を行うホスト制御部125を備えている。ホスト制御部125は、プリンタードライバー122を統括的に制御する。また、プリンタードライバー122には、上位の画像生成装置110から受信した画像データに対して印刷データの生成に必要な画像処理を施す、解像度変換部126、色変換部127及びハーフトーン処理部128を備えている。解像度変換部126は、画像データを表示解像度から印刷解像度へ変換する解像度変換処理を行う。色変換部127は、表示用の表色系(例えばRGB表色系やYCbCr表色系)から印刷用の表色系(例えばCMYK表色系)に色変換する色変換処理を行う。さらにハーフトーン処理部128は、表示用の高階調(例えば256階調)の画素データを印刷用の低階調(例えば2階調又は4階調)の画素データに階調変換するハーフトーン処理などを行う。そして、プリンタードライバー122は、これらの画像処理を施した結果生成された印刷画像データに、印刷制御コード(例えばESC/P)で記述されたコマンドを付して印刷ジョブデータ(以下、単に「印刷データPD」と称す)を生成する。
ホスト装置120はデータの転送制御を行う転送制御部129を備える。転送制御部129は、プリンタードライバー122が生成した印刷データPDを所定容量のパケットデータずつプリンター11へ順次シリアル転送する。
一方、プリンター11側の制御装置Cは、ホスト装置120から印刷データPDを受信して記録系の制御をはじめとする各種制御を行う一対のコントローラー41,42を備えている。一対のコントローラー41,42は、複数個(本例では15個)の記録ヘッド29を所定個数(本例では7個と8個)の2つに分けて分担して制御する。すなわち、マスター側コントローラー41が7個の記録ヘッド29Bの制御を受け持ち、スレーブ側コントローラー42が8個の記録ヘッド29Aの制御を受け持つ。
図3に示すホスト装置120内のプリンタードライバー122は、2つのコントローラー41,42のそれぞれが受け持つ記録ヘッド29の配置位置に応じて印刷画像データを2つに分割し、分割した各印刷画像データに同一の印刷言語記述コマンドを付して2つの印刷データP1,P2を生成する。
図3に示すように、本実施形態のホスト装置120は、2つのシリアル通信ポートU1,U2を備えている。また、2つのコントローラー41,42もそれぞれシリアル通信ポートU3,U4を備えている。そして、転送制御部129は、シリアル通信ポートU1,U3間の通信を介してマスター側コントローラー41へ対応する印刷データP1をシリアル転送すると共に、シリアル通信ポートU2,U4間の通信を介してスレーブ側コントローラー42へ対応する印刷データP2をシリアル転送するようになっている。ホスト装置120は、2つのシリアル通信ポートU1,U2を用いた2系統でシリアル転送を行って、各コントローラー41,42へ比較的高速に印刷データP1,P2を転送する。なお、本実施形態では、印刷データP1,P2に含まれる形態でコマンドを入力するシリアル通信ポートU2,U4が、入力手段の一例を構成する。
図3に示すように、2つのコントローラー41,42には、複数個(N個(本例では4個))ずつのヘッド制御ユニット45(以下、単に「HCU45」という)が接続され、各HCU45にはそれ一個につき記録ヘッド29が複数個(M個(本例では2個))ずつ接続されている。
また、2つのコントローラー41,42に接続された各通信回路46には、8個のインクカートリッジIC1〜IC8に実装された8個の記憶素子47のうち半分の4個ずつがそれぞれ接続されている。マスター側コントローラー41は4個のインクカートリッジIC1〜IC4に実装された記憶素子47と通信可能であり、スレーブ側コントローラー42は4個のインクカートリッジIC5〜IC8に実装された記憶素子47と通信可能である。記憶素子47は不揮発性の記憶素子(不揮発性メモリ)により構成されている。記憶素子47には、対応するインクカートリッジICのインク残量情報、インク色、使用期限、メンテナンス情報、品番などの各種のインク関連情報が記憶される。なお、インクカートリッジIC(図2参照)がカートリッジホルダーに装着された状態で、記憶素子47とカートリッジホルダー側の端子部とが電気的に接続されることにより、通信回路46は記憶素子47に対して読み取り及び書き込みのための通信が可能な状態に接続される。
マスター側コントローラー41は、部品の一例である4個のインクカートリッジIC1〜IC4のインク残量等を管理し、一方のスレーブ側コントローラー42は、部品の一例である残り4個のインクカートリッジIC5〜IC8のインク残量等を管理する。マスター側コントローラー41は、通信回路46を介してインクカートリッジIC1〜IC4の各記憶素子47と通信してインク関連情報の読出し及び書込みが可能となっている。同様に、スレーブ側コントローラー42は、通信回路46を介して各インクカートリッジIC5〜IC8に実装された記憶素子47と通信してインク関連情報の読出し及び書込みが可能となっている。
さらに、制御装置Cは、マスター側コントローラー41の出力側(制御下流側)に通信線SL1を通じて接続されたメカコントローラー43を備えている。メカコントローラー43は主に搬送系及びキャリッジ駆動系を含むメカニカル機構44の制御を司る。マスター側コントローラー41は、自身が受け持つ7個の記録ヘッド29Bの印刷準備ができ(つまりインク滴噴射制御に使用する印刷画像データが準備され)、かつスレーブ側コントローラー42が受け持つ8個の記録ヘッド29Aも印刷準備ができた段階でキャリッジ起動コマンドをメカコントローラー43へ送信するようになっている。これにより、コントローラー41,42のうち一方の印刷準備完了前にキャリッジ27が起動されてしまうことに起因し、記録ヘッド29が噴射位置に到達したにも拘わらずインク滴が噴射されない噴射ミスが防止されるようにしている。
また、マスター側コントローラー41は、自身が受け持つ7個の記録ヘッド29Bの印刷を完了し、かつスレーブ側コントローラー42が受け持つ8個の記録ヘッド29Aも印刷を完了した段階で、シート13の搬送を指令する搬送コマンドをメカコントローラー43へ送信する。これにより、コントローラー41,42のうち一方が印刷完了前の段階でシート13が搬送開始(又は支持部材19上のシートの吸着解除)されてしまうことに起因し、記録ヘッド29から噴射されたインク滴のシート13に対する着弾位置のずれ(印刷位置ずれ)が防止されるようにしている。このようにマスター側コントローラー41は、スレーブ側コントローラー42と進捗の同期をとってコマンドを送信する機能を備えている。そして、両コントローラー41,42は、他方のコントローラーへコマンドを出力するスレーブ側と、スレーブ側から受け付けたコマンドと自身のコマンドとが揃いかつコマンド内容が一致することを確認した時点でメカコントローラー43へコマンドを出力するマスター側とに分かれる。本実施形態では、制御上の同期をとるための仕組みの部分がマスター側とスレーブ側とで異なる。
図3に示すように、マスター側コントローラー41にはリニアエンコーダー50が接続されている。このリニアエンコーダー50はキャリッジ27の移動経路に沿って設けられ、マスター側コントローラー41には、このリニアエンコーダー50からキャリッジ27の移動距離に比例する数のパルスをもつ検出信号(エンコーダーパルス信号)が入力される。マスター側コントローラー41に入力されたエンコーダーパルス信号は、両コントローラー41,42間に接続された信号線SL2を通じてスレーブ側コントローラー42へ伝達されるようになっている。さらにマスター側コントローラー41とスレーブ側コントローラー42は、同期処理に用いられる通信線SL3を通じて互いに接続されている。
図3に示すように、各コントローラー41,42は、それぞれCPU53(中央処理装置)、ASIC54(Application Specific IC(特定用途向け集積回路))、RAM55、及び不揮発性メモリー56を備えている。CPU53は、不揮発性メモリー56に記憶されたプログラムを実行することにより、印刷制御に必要な各種タスクを実行する。また、ASIC54は、印刷データの処理など記録系のデータ処理などを行う。
一方、メカコントローラー43には、モーター駆動回路60を介してメカニカル機構44を構成する搬送モーター61、第1キャリッジモーター(以下、「第1CRモーター62」ともいう)及び第2キャリッジモーター(以下、「第2CRモーター63」ともいう)がそれぞれ接続されている。また、メカコントローラー43には、メンテナンス装置32及び電磁ロック68がそれぞれ接続されている。さらにメカコントローラー43には、モーター駆動回路76を介してインク供給装置39を構成するポンプモーター65が接続されており、ポンプモーター65が駆動されることにより加圧ポンプ66が駆動される。
また、メカコントローラー43には、入力系として、前述の操作スイッチ72及びエンコーダー73がそれぞれ接続されている。メカコントローラー43は操作スイッチ72からロック操作信号を入力すると電磁ロック68を励磁し、操作スイッチ72から解除操作信号を入力すると電磁ロック68を消磁する。メカコントローラー43はマスター側コントローラー41から通信線SL1を通じて受信した各種コマンドに従って、各モーター61〜63,65、メンテナンス装置32及び電磁ロック68を駆動制御する。
制御装置Cは、印刷時に、搬送モーター61を駆動してシート13の次の被印刷領域を支持部材19上に配置すべくシート13を搬送する搬送動作と、シート搬送後に次の被印刷領域を支持部材19に吸着させる吸着動作と、記録ヘッド29によるシート13への印刷動作と、1回分(1頁分)の印刷終了後にシート13の吸着を解除する吸着解除動作とを行う。このとき、印刷動作は、キャリッジ27の主走査方向Xへの移動中に記録ヘッド29からインク滴を噴射することにより行われる。この印刷動作は、第1CRモーター62の駆動によるキャリッジ27の主走査方向Xへの1回の移動(1パス動作)と、1パス終了毎に行われるキャリッジ27の副走査方向Yへの移動とを、所定回数繰り返すことにより行われる。
図4は、マスター側コントローラー41とスレーブ側コントローラー42の機能構成を説明するブロック図である。図4に示すように、両コントローラー41,42は、互いに対称な構成を有している。これは、マスター側とスレーブ側の各コントローラー41,42を同じプログラムの構成で実現できているからである。なお、対称な構成(ほぼ同じ機能構成)であるので、以下、マスター側コントローラー41の構成を説明し、これと対比してスレーブ側コントローラー42の一部異なる機能構成を説明する。
図4に示すように、マスター側コントローラー41は、入力手段の一例としてのシリアル通信ポートU3、画像処理部81、主制御部82、メカ制御部83、出力手段の一例としてのメカI/F部84、同期手段の一例としての仮想メカコントローラー85(バーチャルメカコントローラー)を備えている。さらに、マスター側コントローラー41は、エラー管理部86、通信I/F部87、画像バッファー88、ヘッド制御部89及び検出手段の一例としてのインク管理部90を備えている。一方、スレーブ側コントローラー42は、仮想メカコントローラー85に替えて、ダミーメカコントローラー95を備える点が異なるだけで、その他の構成はマスター側コントローラー41と同様である。なお、主制御部82は、各部83〜90を統括的に制御する機能を有する。
また、スレーブ側コントローラー42のメカI/F部84は、マスター側コントローラー41の仮想メカコントローラー85と通信線SL3を通じて接続されている。すなわち、マスター側コントローラー41のメカI/F部84が実際のメカコントローラー43に接続されているのに対して、スレーブ側コントローラー42のメカI/F部84はマスター側コントローラー41内に設けられた仮想メカコントローラー85に接続されている。スレーブ側のメカI/F部84はメカコントローラー43へコマンドを出力したつもりで実際は仮想メカコントローラー85へコマンドを送信している。
図4に示すマスター側コントローラー41側の画像処理部81は、シリアル通信ポートU3が入力した印刷データP1の解凍処理、コマンド解析、マイクロウィーブ処理及び縦横変換処理などの画像処理を行う。一方、図4に示すスレーブ側コントローラー42側の画像処理部81は、シリアル通信ポートU4が入力した印刷データP2の解凍処理、コマンド解析、マイクロウィーブ処理及び縦横変換処理などの画像処理を行う。
画像処理部81は、解凍後の印刷データを画像バッファー88に一時格納する。ここで、印刷データP1は印刷画像データと印刷言語記述コマンドとを含む。主制御部82は、解凍後の印刷データP1中の印刷言語記述コマンドを解析して制御用のコマンドを取得し、その取得したコマンドをメカ制御部83へ送る。画像処理部81は、印刷画像データに対してドットをノズルに割り付ける割付処理(マイクロウィーブ処理)及び縦横変換処理などの必要な画像処理を順次施し、記録ヘッド29の制御に使用するヘッド制御データを生成して画像バッファー88に格納する。
ヘッド制御部89は、画像バッファー88からヘッド制御データを読み出し、このヘッド制御データを記録ヘッド29毎に分割して各HCU45へ割り振りつつ転送する。さらに、HCU45は記録ヘッド29へ対応するヘッド制御データを逐次送信する。記録ヘッド29内の不図示のヘッド駆動回路は、ヘッド制御データに基づきノズル36毎の噴射駆動素子を駆動制御し、ノズル36からインク滴を噴射させる。このとき、ヘッド制御部89は、リニアエンコーダー50から入力されるエンコーダーパルス信号を基に噴射タイミング信号を生成し、ヘッド駆動回路はこの噴射タイミング信号に基づき噴射駆動素子を駆動させる。
図4に示すメカ制御部83は、主制御部82から受け付けたコマンドをメカI/F部84へ送る。このとき、メカ制御部83は、受け付けたコマンドがシーケンス制御用のコマンドの場合、例えばヘッド制御部89の処理の進捗を監視し、次パスの印刷に使用するヘッド制御データが揃い印刷準備ができた段階でそのコマンドをメカI/F部84へ送る。その他のコマンドについてはそのコマンド種に応じた適切な時期にメカI/F部84へ送る。なお、コマンドの種類については後述する。
メカI/F部84は、メカ制御部83からコマンドを受け付けると、仮想メカコントローラー85に問合せをする。そして、メカI/F部84は、仮想メカコントローラー85から問合せの応答としてACK信号(肯定信号)を受信すると、コマンドをメカコントローラー43へ送信する。つまり、メカI/F部84は、仮想メカコントローラー85への問合せの応答としてACK信号を受信しなければ、ACK信号を受信するまで待機し、ACK信号を受信するとコマンドをメカコントローラー43へ送信する。但し、応答(ACK信号)を待つ待機時間が設定時間に達してタイムアウトとなった場合は、リトライ要求をメカ制御部83へ送信する。
一方のスレーブ側コントローラー42においても画像処理部81、主制御部82、メカ制御部83、メカI/F部84は同様の処理を行う。但し、ダミーメカコントローラー95は、仮想メカコントローラー85と異なる機能をもつ。ダミーメカコントローラー95は、メカI/F部84から問合せを受け付けると、無条件で直ちにACK信号を応答する。このため、スレーブ側コントローラー42におけるメカI/F部84は、メカ制御部83からコマンドを受け付けて問合せをすると、ダミーメカコントローラー95から直ぐにACK信号を受信するので、コマンドの受付けからほぼ待ち時間なくそのコマンドを出力できる。
これに対して、マスター側の仮想メカコントローラー85は、マスター側のメカI/F部84からコマンドの問合せを受け付けると、通信線SL3を通じてスレーブ側のメカI/F部84から送られてきたコマンドを受信し、かつ両コマンドが一致していることを条件に、各メカI/F部84にACK信号を応答する。このため、マスター側のメカI/F部84は、仮想メカコン85においてマスター側とスレーブ側の両メカI/F部84からのコマンドが揃い、かつその揃った両コマンドが一致したと判断されたときの応答を待ち、その応答を受け付けると、そのコマンドをメカコントローラー43へ出力する。このため、マスター側とスレーブ側の両コントローラー41,42の同期をとって、コマンドをメカコントローラー43へ送信できる。
図4に示すように、仮想メカコントローラー85とダミーメカコントローラー95は同じ構成であり、共に仮想メカコン部96とダミーメカコン部97を備える。仮想メカコン部96が起動されると仮想メカコントローラー85として機能し、ダミーメカコン部97が起動されるとダミーメカコントローラー95として機能する。仮想メカコン部96とダミーメカコン部97のうちどちらを起動するかは、主制御部82が、自身がマスターであるかスレーブであるかを判定して決める。主制御部82はマスターであると判定した場合、仮想メカコン部96を有効としこれを起動するとともに、ダミーメカコン部97を無効としこれを起動させない。一方、主制御部82はスレーブであると判定した場合、ダミーメカコン部97を有効としこれを起動するとともに、仮想メカコン部96を無効としこれを起動させない。
また、図4に示すマスター側のメカI/F部84は、メカコントローラー43からコマンドを受け付けたときには、そのコマンドを仮想メカコントローラー85へ送る。仮想メカコントローラー85は、マスター側のメカI/F部84から受け付けたコマンドをスレーブ側のメカI/F部84へ送信すると、ACK信号をマスター側のメカI/F部84へ応答する。マスター側のメカI/F部84は、仮想メカコントローラー85からその応答(ACK信号)を受け付けると、上位のメカ制御部83へそのコマンドを送るようになっている。本実施形態では、メカI/F部84のうちメカコントローラー43からのコマンドを入力する入力機能部分も、入力手段の一例として構成される。本実施形態では「第1のコマンド」には、ホスト制御部125から印刷データに含まれる形態でシリアル通信ポートU3,U4が入力するコマンドと、印刷データとは別にホスト制御部125で生成されてシリアル通信ポートU3,U4が入力するコマンドと、メカコントローラー43からメカI/F部84が入力するコマンドとがある。
ところで、仮想メカコントローラー85における同期処理においてコマンドが揃わない場合、マスター側のメカI/F部84は仮想メカコントローラー85からACK信号を受信できないので、待機時間が設定時間に達してタイムアウトになる。一方、スレーブ側コントローラー42のメカI/F部84も、仮想メカコントローラー85からACK信号を受信できないので、待機時間が設定時間に達して、やはりタイムアウトになる。この場合、メカI/F部84はメカ制御部83に対してリトライ要求をする。メカ制御部83はリトライ要求を受け付けると、メカI/F部84へコマンドを再送信(再発行)する。
通信I/F部87は、マスター側とスレーブ側における各ヘッド制御部89及び各インク管理部90が、処理の同期をとったり、互いの情報(検出結果及びインク消費量等)を交換し合ったりするための通信を行うために設けられたものである。本実施形態では、この通信I/F部87を、他のコントローラーとの間で一部のコマンドを送受信するためにも使用される。
図4に示すインク管理部90はインク残量演算部98を備えている。インク残量演算部98は、約半数の記録ヘッド29B(又は29A)が消費した8色分のインク消費量を取得する。ここで、ヘッド制御部89は、印刷画像データに基づき記録ヘッド29B(又は29A)のインク滴噴射回数に相当するドット数を色別に計数している。インク残量演算部98は、ヘッド制御部89からインク色毎のドット数を取得してその取得したドット数を色別に合計し、その合計した色別のドット数を基に記録ヘッド29B(又は29A)が消費したインク色別のインク消費量を演算する。こうしてマスター側のインク残量演算部98は7個の記録ヘッド29Bのインク消費量を色別に算出し、一方のスレーブ側のインク残量演算部98は8個の記録ヘッド29Aのインク消費量を色別に算出する。
本実施形態では、複数色のインクカートリッジIC1〜IC8を、マスター側コントローラー41とスレーブ側コントローラー42とで分担して管理する。このため、インク残量演算部98が算出した自コントローラー側の記録ヘッド29B(又は29A)が消費した8色分のインク消費量のうち、相手側のコントローラーが管理する4個のインクカートリッジICに対応する4色分のインク消費量を、各通信I/F部87,87間の通信を介して相手側のコントローラーへ通知する構成となっている。
そして、インク管理部90は、1回(1ジョブ)の印刷が終わったとき、カートリッジ交換が行われたとき、電源スイッチ(図示省略)がOFF操作された際の電源遮断時などの所定時期に、相手側管理の4色分のインク消費量情報をメカ制御部83及び通信I/F部87を経由して相手側コントローラーのインク管理部90へ送信する。そして、インク残量演算部98は、インク管理部90が受信した相手側管理の記録ヘッド29Aで消費された4色のインク消費量と、自身が受け持つ記録ヘッド29Bで消費された同じ4色のインク消費量とを色別に加算して、全ての記録ヘッド29A,29Bで消費された4色分のインク消費量をそれぞれ算出する。さらにインク残量演算部98は、この4色分の各インク消費量を、この4色の前回のインク残量からそれぞれ減算することで、この4色の現在のインク残量を算出する。現在のインク残量情報は、RAM55の所定記憶領域に一時記憶される。例えば、1回の印刷が終わったとき、カバー38が開閉されたとき(カートリッジ交換の可能性があるとき)、電源遮断時などの所定時期に、インク管理部90はRAM55から読み出した現在のインク残量を不揮発性メモリー56及び記憶素子47に書き込む。
インク管理部90は、インク残量を管理する他、インクカートリッジICの状態を監視し、インク関連のエラー検出も行う。インク管理部90は、例えばインク残量演算部98が算出したインク残量がインクエンド閾値未満になったか否かを判定し、インク残量がその閾値未満である場合にインクエンドと判定する。例えばインクエンドと判定されてから、一定の許容印刷時間を過ぎるか又は一定の許容インク量のインクが消費されると、強制的に印刷動作を停止させるエラーがインク管理部90からメカ制御部83を介してエラー管理部86に通知される。また、インクカートリッジICの外れや、色違いのインクカートリッジICの装着を検出したときにも、インク管理部90からメカ制御部83を介してエラー管理部86にエラーが通知される。
エラー管理部86は、コントローラー41,42の内部で発生したエラー通知をインク管理部90等から受け付けると、そのエラーの内容を判断し、そのエラー内容に応じた種類のエラーコマンドを発行する。エラーコマンドの種類は、例えばそのパラメーターの値で区別される。このエラーコマンドは主制御部82へ送られ、さらに主制御部82からメカ制御部83へ送られる。なお、本実施形態では、エラー管理部86と、検出手段の一例であるインク管理部90とにより、コマンド生成手段の一例が構成される。
メカ制御部83は、コマンドの実行順を制御するジョブ制御部93と、ジョブ制御部93で制御された順番で出力されたコマンドを受け付けてその出力タイミングを制御することでシーケンス制御を行うシーケンス制御部94とを備えている。なお、本実施形態では、ジョブ制御部93により管理手段の一例が構成され、シーケンス制御部94により指示手段の一例が構成される。
図5は、ジョブ制御部93の構成を示す。ジョブ制御部93は、コマンド判定部131、シーケンスキュー132、イミーディエットキュー133、コマンド出力部134、優先順位設定手段の一例としての優先順位付与部135及び再配列手段の一例としてのソート部136を備えている。主制御部82からメカ制御部83へ送られてきたコマンドは、ジョブ制御部93に入力される。ここで、コマンドには、印刷データPDに含まれる印刷言語記述コマンドを解釈して得られるなどのシーケンス制御用のコマンド(以下「シーケンスコマンド」という)と、コントローラー41,42の内部で行われる各種検出処理などの検出結果に基づき生成される内部発生コマンド(以下「内部コマンド」という)などがある。また、ホスト装置120(ホスト制御部125)から送られてくるコマンド(緊急コマンド)や、メカコントローラー43から送られてくる各種コマンド(緊急コマンド)もある。メカコントローラー43から送られてくるコマンドは、マスター側コントローラー41から通信線SL3を介してスレーブ側コントローラー42へも送られる。
このため、コマンドキューには、発行順序が重要なシーケンスキュー132と、直ちに処理するべきイミーディエットキュー133とがある。シーケンスキュー132のコマンド(シーケンスコマンド)は、ホスト制御部125、メカコントローラー43から発行されるので、複数のコントローラー41,42間で順序が入れ替わることはない。
イミーディエットキュー133も、メカコントローラー43やホスト装置120から発行されたコマンドはほぼ同時に受信するので、そのまま発行すれば、仮想メカコン85の同期処理において両方のコマンドが揃うことになる。たとえマスター側とスレーブ側で発行時期の多少のずれ(タイムラグ)があってリトライになっても、いずれリトライによる仮想メカコン85の同期処理で両方のコマンドが揃うことになる。
一方、エラー通知などのようにコントローラー41,42の内部で発生するコマンドは、コントローラー41,42間の通信I/F部87,87経由の通信を使って、相手側(他方)のコントローラーに送信される。これは、仮想メカコントローラー85においてマスター側とスレーブ側の両コントローラー41,42の同期をとるためには、両コントローラー41,42に同一のコマンドが用意されている必要があるからである。コントローラー41,42間の通信I/F部87,87経由の通信は、シリアル通信であるため、コマンドの伝送に比較的長い時間を要する。このため、両コントローラー41,42のうち一方で発生した内部コマンドが他方のコントローラーへ到着するまでの間に、メカコントローラー43やホスト装置120のコマンドが発行された場合、マスター側とスレーブ側の両イミーディエットキュー133間でコマンドの格納順序が保証されない。
図5に示すコマンド判定部131は、受け付けたコマンドが、シーケンスコマンドであるか緊急性の高い緊急コマンド(イミーディエットコマンド)であるかを判定する。コマンド判定部131は、その判定結果に応じて、シーケンスコマンドをシーケンスキュー132に格納し、緊急コマンドをイミーディエットキュー133に格納する。各キュー132,133には、コマンドが取得順に格納される。
内部コマンドは、エラーコマンドに代表されるように緊急性の高いコマンドであり、イミーディエットキュー133に格納される。イミーディエットキュー133に格納された内部コマンドは、シーケンスキュー132に優先して出力される。一方、シーケンスコマンドは実行される順番が重要な種類のコマンドであり、イミーディエットキュー133に内部コマンドが格納されていないときに、その格納順に出力される。このような出力規則の下、コマンド出力部134は、イミーディエットキュー133から優先して内部コマンドを出力すると共に、イミーディエットキュー133に格納コマンドがない状態において、シーケンスキュー132に格納されたシーケンスコマンドを格納順に出力する。
例えば図5に示すシーケンスキュー132からはその格納順に従ってシーケンスコマンドSQ1,SQ2,…の順番で出力される。また、イミーディエットキュー133からはその格納順に従ってコマンドPS1,ER1,PS2,…の順番で出力される。
コマンド出力部134は、下流のシーケンス制御部94からジョブ制御部93に対する応答又は要求を待ってコマンドを出力(発行)する。コマンド出力部134は、メカI/F部84からシーケンス制御部94を介して前回のコマンドを出力した旨の応答を受け付けると、次のコマンドを出力する。また、コマンド出力部134は、メカI/F部84からシーケンス制御部94を介してコマンドの再送を要求するリトライ要求(再送要求)を受け付けると、先に出力した同じコマンドをもう一度送る。
図5に示す優先順位付与部135は、コマンドに優先順位を付与する。優先順位付与部135は、緊急コマンドの種別を識別し、緊急性の高い種別のものほど高い優先順位を付与する。本実施形態では、緊急コマンドには、コマンドの緊急レベルに応じた種別を識別するための識別子(例えば所定ビットの識別番号)が含まれており、優先順位付与部135は、コマンドの識別子から判定した種別に応じた優先順位を付与する。
例えば、メモリーには、緊急コマンドの種別と優先順位との対応関係を示すテーブルデータが記憶されており、このテーブルデータを参照して、緊急コマンドの種別に応じた優先順位を付与する。緊急コマンドにその種別を識別するための識別子を設ける替わりに、コマンドを送るパケット中にフラグを設定して、フラグ値を基にコマンドの種別を判定する方法を採用してもよい。識別子の一例としては、コマンド番号を挙げることができる。もちろん、コマンドの種別の識別子をそのまま優先順位に対応する番号とし、優先順位付与部135を廃止した構成も採用できる。このようにコマンドの種類を識別するための識別子(例えば識別番号)を優先順位に代用する構成の場合は、コマンドを生成する際にその識別子を付与するエラー管理部86が、優先順位設定手段を構成する。
図5に示すソート部136は、イミーディエットキュー133の格納順を優先順位に従って並び替えるソート処理(再配列処理)を行う。本実施形態では、メカI/F部84からのリトライ要求を受け付けると、ソート部136はソート処理を行う。もちろん、ソート部136は、リトライ要求をソート処理のトリガーとするのではなく、キュー133にコマンドを入力する度、あるいはキュー133からのコマンドの出力に先立って、ソート処理を行ってもよい。この場合、カウンターが計数するキュー133の格納数が複数個に達している場合に限りソート処理を行うことが好ましい。
図4に示すシーケンス制御部94は、ジョブ制御部93から内部コマンドを受け付けた場合はそれを直ちに出力する。また、シーケンス制御部94は、シーケンスコマンドを受け付けたときは、メカコントローラー43からメカI/F部84を介して先の所定動作終了の旨を受信した後、当該所定動作の次に行うべき動作の開始タイミングになったときに、コマンドを出力する。
シーケンス制御部94は、シーケンスコマンドを受信したときは、所定のシーケンスに従った所定のタイミングになると、そのシーケンスコマンドをメカI/F部84へ出力する。コマンドには、例えば搬送コマンド、吸着コマンド、第1キャリッジ起動コマンド(キャリッジ主走査方向移動コマンド)、第2キャリッジ起動コマンド(キャリッジ副走査方向移動コマンド)、吸着解除コマンドなどがある。メカ制御部83は、これらのシーケンスコマンドを、ヘッド制御部89(図4参照)の進捗に合わせた適宜なタイミング、あるいはメカコントローラー43側の進捗に合わせた適宜なタイミングで送信する。
図7は、コマンドの出力処理を説明するブロック図である。なお、図7では、ジョブ制御部93内はイミーディエットキュー133のみを示している。また、図7では、仮想メカコントローラー85を単に「仮想メカコン」、ダミーメカコントローラー95を単に「ダミーメカコン」とそれぞれ記しており、以下の説明でもこれらの略称を用いることにする。図7に示すように、マスター側コントローラー41とスレーブ側コントローラー42のそれぞれ内部で行われるコマンド出力処理の流れ(図中の矢印)は同じになっている。
以下、本実施形態におけるコマンド出力処理を、図6及び図7を用いて説明する。主制御部82は、入力した印刷データのコマンド解析で得たコマンドや、ホスト装置120から入力したコマンド、メカコントローラー43から入力したコマンド(入力段階)、コントローラー41,42の内部で発行されたコマンド(コマンド生成段階)を、メカ制御部83へ出力する。メカ制御部83へ入力されたコマンドは、コマンド判定部131によりコマンドの種類が判定される。コマンド判定部131は、コマンドに含まれる識別子に基づいて、入力したコマンドが、第1のコマンドの一例であるシーケンスコマンドであるか、それとも第2のコマンドの一例である内部コマンドを含む緊急コマンドであるかを判定する。この判定結果に基づき、シーケンスコマンドはシーケンスキュー132にそれぞれ取得した順に格納され、緊急コマンドはイミーディエットキュー133にそれぞれ取得した順番に格納される(管理段階)。このとき、緊急コマンドについては、イミーディエットキュー133に格納する前に、優先順位付与部135がコマンドに優先順位を付与する。
コマンド出力部134は、シーケンスキュー132に格納されたシーケンスコマンドよりも、イミーディエットキュー133に格納されたコマンドを優先して出力する。このため、基本的に、イミーディエットキュー133にコマンドがあるうちは、そのコマンドの出力が優先して進められる。
図6は、マスター側とスレーブ側のイミーディエットキュー133A,133Bを示す。なお、図6のキュー133において、一番下に格納されたコマンドのうち破線で囲ったコマンドはメカコントローラー43へ出力されるものである。例えば、ホスト装置120からコマンドPS1を受信したマスター側コントローラー41においてそのコマンドPS1の受信後に内部でエラーが発生し、このエラーによるエラーコマンドをスレーブ側コントローラー42へ送信している送信段階の途中でホスト装置120から次のコマンドPS2が送られてきたとする。この場合、図6(a)及び図7に示すように、マスター側のキュー133Aには、コマンドPS1,ER1,PS2の順番に格納され、スレーブ側のキュー133Bには、コマンドPS1,PS2の順番に格納される。このとき、スレーブ側のキュー133Bには、まだエラーコマンドER1は届いていない(図6(a)の状態)。
この図6(a)の格納状態のとき、ジョブ制御部93は、イミーディエットキュー133内の最下流格納位置(図7における最下位置)のコマンドPS1,PS1をシーケンス制御部94へ出力する(図7中の(1))。シーケンス制御部94は、ジョブ制御部93から受信したコマンドをメカI/F部84へ出力する(図7中の(2))(指示段階)。この場合、コマンドは緊急コマンドなので、直ちに出力される。
メカI/F部84は、コマンドを受信すると、マスター側では仮想メカコン85にコマンドPS1の問合せをし(図7中の(3))、スレーブ側ではダミーメカコン95にコマンドPS1の問合せをする(図7中の(3))。
スレーブ側ではダミーメカコン95は問合せを受け付けると、無条件で直ちにACK信号を応答する(図7中の(4))。スレーブ側のメカI/F部84はその応答を受け付けると、コマンドPS1を通信線SL3へ出力する(図7中の(5))。この出力されたコマンドPS1は、マスター側の仮想メカコン85が受信する。
仮想メカコン85は、マスター側とスレーブ側の両メカI/F部84からコマンドを受け付けると、両コマンドが一致するか否かを判断し、一致すれば、マスター側のメカI/F部84に対してACK信号を応答する(図7中の(6))。この場合、仮想メカコン85はコマンドPS1,PS1が一致すると判断するので、マスター側のメカI/F部84に対してACK信号を応答する。そして、マスター側のメカI/F部84はACK信号の応答を受け付けると、メカコントローラー43へコマンドを送信する(図7中の(7))。つまり、仮想メカコン85の同期処理においてマスター側とスレーブ側の両方で同一のコマンドが揃ったことが確認されたタイミングで、マスター側のメカI/F部84からコマンドPS1がメカコントローラー43へ送信される。
メカI/F部84は、コマンドをメカコントローラー43へ出力する度に、シーケンス制御部94を介してジョブ制御部93へコマンド出力の旨を応答する。ジョブ制御部93は、コマンド出力の旨の応答を受け付けると、次のコマンドを出力する。このようにジョブ制御部93はコマンドを1つずつ順番に出力する。
コマンドPS1,PS1が発行された後、スレーブ側のキュー133Bには遅れて届いたコマンドER1が格納される。両キュー133A,133Bは、図6(b)の格納状態になる。コマンド出力部134は、両キュー133A,133Bから、最下流格納位置のコマンドER1,PS2をそれぞれ発行する。この発行されたコマンドER1,PS2は、それぞれマスター側とスレーブ側の各メカI/F部84に送られる(図7中の(1),(2))(指示段階)。
メカI/F部84は、コマンドを受信すると、マスター側では仮想メカコン85にコマンドER1の問合せをし(図7中の(3))、スレーブ側ではダミーメカコン95にコマンドPS2の問合せをする(図7中の(3))。
スレーブ側ではダミーメカコン95は問合せを受け付けると、無条件で直ちにACK信号を応答する(図7中の(4))。スレーブ側のメカI/F部84はその応答を受け付けると、コマンドPS2を通信線SL3へ出力する(図7中の(5))。この出力されたコマンドPS2は、マスター側の仮想メカコン85が受信する。
仮想メカコン85は、マスター側とスレーブ側の両メカI/F部84からコマンドER1,PS2を受け付けると、両コマンドが一致するか否かを判断するが、この場合、仮想メカコン85はコマンドER1,PS2が一致しないと判断するので、マスター側とスレーブ側の各メカI/F部84に対してNACK信号を応答する(図7中の(8))。そして、メカI/F部84はNACK信号の応答を受け付けると、シーケンス制御部94に対してリトライを要求する(図7中の(9))。さらにシーケンス制御部94はそのリトライをジョブ制御部93に要求する(図7中の(10))。
ジョブ制御部93がリトライ要求を受け付けると、ソート部136がイミーディエットキュー133A,133B内のコマンドを優先順位の順番に並び替えるソート処理を行う(図7中の(11))(再配列段階)。このソート処理の結果、図6(c)に示すように、キュー133A,133B内の最下流格納位置は共にコマンドER1が位置する。コマンド出力部134は、両キュー133A,133Bから、最下流格納位置のコマンドER1,ER1をそれぞれ発行する。この発行されたコマンドER1,ER1は、それぞれマスター側とスレーブ側の各メカI/F部84に送られる(図7中の(1),(2))。
メカI/F部84は、コマンドを受信すると、マスター側では仮想メカコン85にコマンドER1の問合せをし(図7中の(3))、スレーブ側ではダミーメカコン95にコマンドPS2の問合せをする(図7中の(3))。
スレーブ側のメカI/F部84は、ダミーメカコン95から無条件で直ちにACK信号の応答を受け付けると、コマンドER1を通信線SL3へ出力する(図7中の(4),(5))。この出力されたコマンドER1は、マスター側の仮想メカコン85が受信する。
仮想メカコン85は、マスター側とスレーブ側の両メカI/F部84から受け付けたコマンドER1,ER1が一致すると判断するので、マスター側とスレーブ側の各メカI/F部84に対してACK信号を応答する(図7中の(6))。そして、メカI/F部84はACK信号の応答を受け付けると、メカコントローラー43へコマンドER1を送信する(図7中の(7))。つまり、仮想メカコン85の同期処理においてマスター側とスレーブ側の両方で同一のコマンドが揃ったことが確認されたタイミングで、マスター側のメカI/F部84からコマンドER1がメカコントローラー43へ送信される。
なお、リトライが所定回数繰り返されてもACK信号の応答が得られない場合、タイムアウトになってコマンド送信エラーが発行されることになるが、上記のソート処理によってリトライ時にはACK信号の応答が得られるので、この種のコマンド送信エラーが発行されることは回避される。
その後、両キュー133A,133Bは、図6(d)の格納状態になる。コマンド出力部134は、キュー133A,133B内の最下流格納位置のコマンドPS2,PS2を、それぞれシーケンス制御部94を介してメカI/F部84へ出力する(図7中の(1),(2))。
メカI/F部84は、コマンドを受信すると、マスター側では仮想メカコン85にコマンドPS2の問合せをし(図7中の(3))、スレーブ側ではダミーメカコン95にコマンドPS2の問合せをする(図7中の(3))。
スレーブ側のメカI/F部84は、ダミーメカコン95から無条件で直ちにACK信号の応答を受け付けると、コマンドPS2を通信線SL3へ出力する(図7中の(4),(5))。この出力されたコマンドPS2は、マスター側の仮想メカコン85が受信する。
仮想メカコン85は、マスター側とスレーブ側の両メカI/F部84から受け付けたコマンドPS2,PS2が一致すると判断するので、マスター側とスレーブ側の各メカI/F部84に対してACK信号を応答する(図7中の(6))。そして、メカI/F部84はACK信号の応答を受け付けると、メカコントローラー43へコマンドPS2を送信する(図7中の(7))。つまり、仮想メカコン85の同期処理においてマスター側とスレーブ側の両方で同一のコマンドが揃ったことが確認されたタイミングで、マスター側のメカI/F部84からコマンドPS2がメカコントローラー43へ送信される。
以上詳述したように、本実施形態では、以下に示す効果を得ることができる。
(1)内部コマンドが発生したときに通信線SL4を介して他のコントローラーへも内部コマンドを送信する構成において、両キュー133A,133Bに格納されるコマンドの順番が異なっても、ソート処理により優先順位の順番にコマンドが並び替えられるので、コマンドを全てメカコントローラー43へ出力することができる。この結果、通信線SL4を介した通信に相対的に時間がかかって送信先のコントローラーでコマンドの取得時期が遅れ、これが原因で各コントローラー41,42内のイミーディエットキュー133に格納されたコマンドの順番が異なることになっても、仮想メカコン85でコマンドが揃わないことに起因するコマンド送信エラーの発生を回避できる。
(2)ソート処理は、リトライ要求があったときに行われるので、不要なソート処理をなるべく少なく抑えることができる。この結果、例えばソート処理が原因でコマンド出力部134からのコマンド出力時期が遅延する事態を回避できる。
(3)仮想メカコン85は、マスター側とスレーブ側の各メカI/F部84からのコマンドが揃いかつ各コマンドが一致したと判断したときに、マスター側のメカI/F部84にACK信号を応答し、この応答に基づきマスター側のメカI/F部84がメカコントローラー43へコマンドを送信する。よって、マスター側とスレーブ側のコントローラー41,42間で同期をとってメカコントローラー43へコマンドを送信することができる。
(4)複数のコントローラー41,42は、図4及び図7に示すようにその機能構成が同じなので、マスター側とスレーブ側とで同期処理に係る機能構成が一部異なるものの、共通のプログラムにより実現することができる。
(5)インク管理部90(検出手段)は、インクカートリッジICの記憶素子47から取得したインク関連情報に基づきインク切れなどのエラーを検出する。そして、インク切れなどの検出結果に基づき生成されたエラーコマンドが、通信I/F部87,87を通じて他のコントローラーへ送信された際に、両キュー133A,133B間で格納順序が異なっても、ソート処理により同じ格納順序に並び替えられる。よって、インク切れのときに、コマンド送信エラーが発生する事態を回避できる。
(第2実施形態)
次に第2実施形態を図8及び図9に基づいて説明する。
図8は、コマンドの出力処理を説明するブロック図である。ジョブ制御部93は、コマンド判定部131、シーケンスキュー132、イミーディエットキュー133、コマンド出力部134、循環手段の一例としての循環処理部138及び周期設定部139を備えている。
図8に示す循環処理部138は、イミーディエットキュー133内のコマンドの格納順を1つずらす循環処理を行う。本実施形態では、メカI/F部84からのリトライ要求を受け付けると、循環処理部138は、キュー133内の最下流格納位置にあるコマンドを再びキュー133内へ再入力させることでコマンドの配列順を順方向に1つずらす循環処理を行う。
周期設定部139は、循環処理部138が1回の循環処理を行う周期を設定するためのものである。ここで、マスター側は第1周期設定部139Aを備え、スレーブ側は第2周期設定部139Bを備えている。第1周期設定部139Aには第1周期T1が設定され、第2周期設定部139Bには、第1周期T1と異なる第2周期T2(≠T1)が設定されている。第1周期T1と第2周期T2との周期差(時間差)ΔTは、ジョブ制御部93からコマンドが出力されてから、仮想メカコン85でコマンド不一致のためにメカI/F部84からリトライ要求を受け付けるまでの想定所要時間を単位時間とすると、マスター側とスレーブ側の各循環処理部138,138の単位時間当たりの循環処理回数N1,N2が異なるように設定される。本実施形態では、第1周期T1が第2周期T2よりも長く設定されている(T1>T2)。一例として第1周期T1及び第2周期T2は共に10〜1000ミリ秒の範囲内の値に設定され、周期差ΔTが1〜200ミリ秒の範囲内の値に設定されている。もちろん、ジョブ制御部93のコマンド出力時からそのリトライ要求受け付け時までの間に、マスター側とスレーブ側とのいずれか一方の循環処理部138で少なくとも1回の循環処理が行われればよい。なお、3個以上のコントローラーを備えた構成では、各循環処理部の周期がそれぞれ異なるように設定するのが好ましい。
以下、第2実施形態におけるコマンド出力処理を、図8及び図9を用いて説明する。図9は、マスター側とスレーブ側のイミーディエットキュー133A,133Bを示す。なお、図9のキュー133において、一番下に格納されたコマンドのうち破線で囲ったコマンドはメカコントローラー43へ出力されるものである。例えば、ホスト装置120からコマンドPS1を受信したマスター側コントローラー41においてそのコマンドPS1の受信後に内部でエラーが発生し、このエラーによるエラーコマンドをスレーブ側コントローラー42へ送信している送信段階の途中でホスト装置120から次のコマンドPS2が送られてきたとする。この場合、図8及び図9(a)に示すように、マスター側のキュー133Aには、コマンドPS1,ER1,PS2の順番に格納され、スレーブ側のキュー133Bには、コマンドPS1,PS2の順番に格納される。このとき、スレーブ側のキュー133Bには、まだエラーコマンドER1は届いていない(図9(a)の状態)。
この図9(a)の状態では、ジョブ制御部93は、各キュー133A,133Bの最下流格納位置(図8及び図9における最下位置)のコマンドPS1,PS1を、シーケンス制御部94を介してメカI/F部84へ出力する(図8中の(1),(2))(指示段階)。この場合、コマンドは緊急コマンドなので、直ちに出力される。
各メカI/F部84がコマンドを受信すると、仮想メカコン85やダミーメカコン95との間で前記第1実施形態と同様の問合せ処理などが行われる。その結果、仮想メカコン85は、マスター側とスレーブ側の各メカI/F部84からコマンドPS1,PS1を受信する(図8中の(3)〜(5))。
仮想メカコン85は、マスター側とスレーブ側の両メカI/F部84から受け付けたコマンドPS1,PS1が一致するので、マスター側とスレーブ側の各メカI/F部84にACK信号を応答する(図8中の(6))。そして、マスター側のメカI/F部84はACK信号の応答を受け付けると、メカコントローラー43へコマンドPS1を送信する(図8中の(7))。
ジョブ制御部93は、メカI/F部84からコマンド出力の旨の応答を受信すると、次のコマンドの出力を行う。図9(a)においてコマンドPS1,PS1が発行された後、図9(b)に示すように、スレーブ側のキュー133Bには遅れて届いたコマンドER1が格納される。コマンド出力部134は、両キュー133A,133Bから、最下流格納位置のコマンドER1,PS2をそれぞれ発行する。この発行されたコマンドER1,PS2は、それぞれマスター側とスレーブ側の各メカI/F部84に送られる(図8中の(1),(2))(指示段階)。
各メカI/F部84がコマンドを受信すると、仮想メカコン85やダミーメカコン95との間で前記第1実施形態と同様の問合せ処理などが行われる。その結果、仮想メカコン85は、マスター側とスレーブ側の各メカI/F部84からコマンドER1,PS2を受信する(図8中の(3)〜(5))。
仮想メカコン85は、両コマンドER1,PS2を受け付けると、両コマンドが一致するか否かを判断するが、この場合、仮想メカコン85はコマンドER1,PS2が一致しないと判断するので、マスター側とスレーブ側の各メカI/F部84に対してNACK信号を応答する(図8中の(8))。そして、メカI/F部84はNACK信号の応答を受け付けると、シーケンス制御部94を介してジョブ制御部93にリトライを要求する(図7中の(9),(10))。
ジョブ制御部93がリトライ要求を受け付けると、循環処理部138がキュー133A,133B内のコマンドの格納位置を順方向に1つずらす循環処理を行う(図8中の(11))(再配列段階)。この循環処理は、そのコマンドについて最初のリトライ要求を受け付けたことを開始条件として継続的に行う。最初のリトライ要求を受け付けると、まず一方の循環処理部138(本実施形態では一例として設定周期の短いスレーブ側の循環処理部)が直ぐに1回目の循環処理を開始し、以後、第2周期設定部139Bに設定された第2周期T2毎に1回ずつの循環処理を行う。他方の循環処理部138(本実施形態では一例として設定周期の長いマスター側の循環処理部)は、最初のリトライ要求を受け付けると、その時点から第1周期設定部139Aに設定された第1周期T1の計時を開始し、第1周期T1が経過すると、1回目の循環処理を開始する。以後、他方の循環処理部138は、第1周期設定部139Aに設定された第1周期毎に1回ずつの循環処理を行う。本例では、1回の循環処理で、キュー133の最下流格納位置にあるコマンドがそのキュー133に再入力され、コマンドの順番が順方向に1つずらされる。
図9(b)における両キュー133A,133Bのうち、一方のキュー133B内のコマンドに対して1回目の循環処理が行われ、図9(c)に示すように、最下流格納位置のコマンドER1,ER1が揃うことになる。
コマンド出力部134は、図9(d)に示す状態の両キュー133A,133Bから、最下流格納位置のコマンドER1,ER1をそれぞれ発行(出力)する。この発行されたコマンドER1,ER1は、それぞれマスター側とスレーブ側の各メカI/F部84に送られる(図8中の(1),(2))(指示段階)。
このリトライ時にも、コマンドを受信した各メカI/F部84が、仮想メカコン85やダミーメカコン95との間で前記第1実施形態と同様の問合せ処理などを行い、その結果、仮想メカコン85は、マスター側とスレーブ側の両メカI/F部84からコマンドER1,ER1を受け付ける(図8中の(3)〜(5))。このとき、仮想メカコン85は、両コマンドER1,ER1が一致すると判断するので、マスター側とスレーブ側の各メカI/F部84にACK信号を応答する(図8中の(6))。そして、マスター側のメカI/F部84はACK信号の応答を受け付けると、メカコントローラー43へコマンドER1を送信する(図8中の(7))。なお、リトライが所定回数繰り返されてもACK信号の応答が得られない場合、タイムアウトになってコマンド送信エラーが発行されることになるが、上記の循環処理によって、許容リトライ回数に達する前のリトライ回数のうちにメカI/F部84は仮想メカコン85からACK信号の応答を得るので、この種のコマンド送信エラーの発生が回避される。
図6(d)の格納状態からコマンドER1,ER1が出力されたことにより、両キュー133A,133Bの最下流格納位置のコマンドPS2,PS2は揃うことになる。その結果、仮想メカコン85での同期処理など同様の処理を経て、マスター側のメカI/F部84からメカコントローラー43へコマンドPS2が送信される。よって、仮想メカコン85でコマンドが揃わないことに起因するコマンド送信エラーの発生が回避される。
一方、最初のリトライでもコマンドが揃わなかった場合、1回目のリトライ時に出力されたコマンドの仮想メカコン85による同期処理が行われている間も、各キュー133A,133Bの循環処理はそれぞれ設定周期T1,T2毎に継続的に行われる。このため、1回目のリトライ要求に対応してコマンドが発行された後、2回目のリトライ要求を受け付けるまでの経過時間をTwとすると、この経過時間Twの間に行われるキュー133Aの循環処理回数N1は概算でN1=[Tw/T1]回、キュー133Bの循環処理回数N2は概算でN2=[Tw/T2]回となる(但し、記号[ ]はガウス記号である。)。本実施形態では、T1>T2なので、循環処理回数N1,N2は、N1<N2となる。よって、キュー133A,133Bの最下流格納位置に配置されるコマンドの組合せは、リトライの度に異なることになり、やがて各キュー133A,133Bの最下流格納位置にある各コマンドは揃うことになる。
通常、各キュー133A,133Bにおける同じ内部コマンドの格納位置のずれは、1つ分か2つ分なので、そのずれた回数分のリトライを行えばコマンドは揃うことになる。よって、仮想メカコン85でコマンドが揃わないことに起因するコマンド送信エラーの発生を極力回避できる。なお、この第2実施形態では、ソート処理を行う第1実施形態に比べ、コマンド送信エラーを発行するまでのリトライ許容回数を多めの値に設定しておくが好ましい。
この第2実施形態によれば、第1実施形態におけるソート処理で得られる効果(1)〜(5)を、循環処理によっても同様に得ることができる。特に効果(4)については、複数のコントローラー41,42における各キュー133A,133Bを共に循環させる構成とし、それぞれに循環処理部138及び周期設定部139を設けたので、各コントローラー41,42を共通のプログラムにより実現することができる。
(6)循環処理部138の一方(本例では循環処理部138B)については、リトライ要求があったときに直ぐに1回目の循環処理を行ったので、1周期分の待ち時間がなくてもコマンドの格納順の変更が行われる。このため、リトライ要求があれば1周期分の待ち時間を待つことなく1回分の循環処理の処理時間を待つだけでほぼ直ちにコマンド出力部134によるコマンドの出力処理を行うことができる。
(第3実施形態)
次に第3実施形態を図10及び図11に基づいて説明する。
図11は、コマンドの出力処理を説明するブロック図である。ジョブ制御部93は、コマンド判定部131、シーケンスキュー132、イミーディエットキュー133、コマンド出力部134、番号付与手段の一例としてのシリアル番号付与部141及び再配列手段の一例としてのソート部142を備えている。
図11に示すシリアル番号付与部141は、緊急コマンドにシリアル番号を付与する。本実施形態では、マスター側のシリアル番号付与部141Aと、スレーブ側のシリアル番号付与部141Bとが、コマンドに付与するシリアル番号が重複しない設定としている。例えばマスター側のシリアル番号付与部141Aは、コマンドに奇数のシリアル番号を付与し、スレーブ側のシリアル番号付与部141Bは、コマンドに偶数のシリアル番号を付与する。もちろん、マスター側とスレーブ側のどちらで付与されたものかを識別可能であれば、マスター側とスレーブ側で重複するシリアル番号を付与してもよい。例えばコマンドにその発生元(シリアル番号付与元)を識別するための識別子を設けたり、コマンドを送るパケット中にフラグを設定したりして、その識別子やフラグ値を基に発生元を判定する方法を採用してもよい。
図11に示すソート部142は、イミーディエットキュー133に格納されたコマンドをシリアル番号の順番に並び替えるソート処理(再配列処理)を行う。本実施形態では、シリアル番号付与部141はシリアル番号を若い番号から順番に昇順で付与する。ソート部142は、このシリアル番号を付与する順番に合わせて、キュー133の出力側(下流側)から入力側(上流側)へ向かってコマンドをシリアル番号の昇順に並び替えるソート処理を行う。もちろん、シリアル番号を付与する順番が降順の場合、ソート部142はコマンドをシリアル番号の降順に並び替えるソート処理を行う。第1実施形態と同様に、ソート部142はメカI/F部84からリトライ要求を受け付けると、ソート処理を行う。もちろん、ソート部142は、リトライ要求をソート処理のトリガーとするのではなく、キュー133にコマンドを入力する度、あるいはキュー133からのコマンドの出力に先立って、ソート処理を行ってもよい。この場合、カウンターが計数するキュー133の格納数が複数個に達している場合に限りソート処理を行うことが好ましい。
また、図11に示すように、本実施形態の仮想メカコン85は、要求部143を備えている。要求部143は、仮想メカコン85がコマンドの不一致と判定した場合、仮想メカコン85がNACK信号の応答を行うときにソート要求を一緒に各メカI/F部84に送る。
マスター側とスレーブ側の両メカI/F部84は、仮想メカコン85からNACK信号の応答と一緒にソート要求を受け付けたときには、シーケンス制御部94を介してジョブ制御部93にリトライ要求と共にソート要求を行う。一方、両メカI/F部84は、仮想メカコン85において各メカI/F部84からのコマンドが揃わず、仮想メカコン85からACK信号の応答がないままタイムアウトになった場合、シーケンス制御部94を介してジョブ制御部93にリトライを要求する。
ソート部142は、リトライ要求を一緒にソート処理要求を受け付けたときにソート処理を行う。そして、コマンド出力部134はソート処理終了後のキュー133の最下流格納位置にあるコマンドを出力する。一方、リトライ要求のみでソート要求がない場合は、ソート部142によるソート処理を行うことなく、コマンド出力部134は前回のコマンドを再送する。このように本実施形態では、仮想メカコン85においてコマンド不一致になって、マスター側とスレーブ側の両キュー133A,133Bのコマンド格納順が揃っていない可能性が高いときに限り、ソート処理を行う。
以下、第3実施形態におけるコマンド出力処理を、図10及び図11を用いて説明する。図10は、マスター側とスレーブ側のイミーディエットキュー133A,133Bを示す。なお、図10のキュー133において、一番下に格納されたコマンドのうち破線で囲ったコマンドはメカコントローラー43へ出力されるものである。例えば、ホスト装置120からコマンドPS1を受信したマスター側コントローラー41においてそのコマンドPS1の受信後に内部でエラーが発生し、このエラーによるエラーコマンドをスレーブ側コントローラー42へ送信している送信段階の途中でホスト装置120から次のコマンドPS2が送られてきたとする。この場合、図10(a)及び図11に示すように、マスター側のキュー133Aには、コマンドPS1,ER1,PS2の順番に格納され、スレーブ側のキュー133Bには、コマンドPS1,PS2の順番に格納される。このとき、スレーブ側のキュー133Bには、まだエラーコマンドER1は届いていない(図10(a)の状態)。
この図10(a)の状態では、ジョブ制御部93は、各キュー133A,133Bの最下流格納位置(図10及び図11における最下位置)のコマンドPS1,PS1を、シーケンス制御部94を介してメカI/F部84へ出力する(図11中の(1),(2))(指示段階)。
各メカI/F部84がコマンドを受信すると、仮想メカコン85やダミーメカコン95との間で前記第1実施形態と同様の問合せ処理などが行われる。その結果、仮想メカコン85は、マスター側とスレーブ側の各メカI/F部84からコマンドPS1,PS1を受信する(図11中の(3)〜(5))。
仮想メカコン85は、マスター側とスレーブ側の両メカI/F部84から受け付けたコマンドPS1,PS1が一致するので、マスター側とスレーブ側の各メカI/F部84にACK信号を応答する(図11中の(6))。そして、メカI/F部84はACK信号の応答を受け付けると、メカコントローラー43へコマンドPS2を送信する(図11中の(7))。
ジョブ制御部93は、メカI/F部84からコマンド出力の旨の応答を受信すると、次のコマンドの出力を行う。図10(a)においてコマンドPS1,PS1が発行された後、図10(b)に示すように、スレーブ側のキュー133Bには遅れて届いたコマンドER1が格納される。コマンド出力部134は、両キュー133A,133Bから、最下流格納位置のコマンドER1,PS2をそれぞれ発行する。この発行されたコマンドER1,PS2は、それぞれマスター側とスレーブ側の各メカI/F部84に送られる(図11中の(1),(2))(指示段階)。
各メカI/F部84がコマンドを受信すると、仮想メカコン85やダミーメカコン95との間で前記第1実施形態と同様の問合せ処理などが行われる。その結果、仮想メカコン85はマスター側とスレーブ側の各メカI/F部84からコマンドER1,PS2を受信する(図11中の(3)〜(5))。
仮想メカコン85は、両コマンドER1,PS2を受け付けると、両コマンドが一致するか否かを判断するが、この場合、仮想メカコン85はコマンドER1,PS2が一致しないと判断する。このようにコマンド不一致と判断したときには、要求部143は、仮想メカコン85がNACK信号の応答を行うときにマスター側とスレーブ側の各メカI/F部84へソート要求も一緒に送る(図11中の(8))。そして、メカI/F部84はNACK信号の応答をソート要求と共に受け付けると、シーケンス制御部94を介してジョブ制御部93にソート要求と共にリトライを要求する(図11中の(9),(10))。
ジョブ制御部93がソート要求と一緒にリトライ要求を受け付けると、ソート部142は、イミーディエットキュー133A,133B内のコマンドの格納位置をシリアル番号の順番に並び替えるソート処理を行う(図11中の(11))(再配列段階)。このソート処理の結果、図10(c)に示すように、キュー133A,133Bの最下流格納位置には共にコマンドER1,ER1が位置する。各コマンド出力部134は、キュー133A,133Bから最下流格納位置のコマンドER1,ER1をそれぞれ発行(出力)する。この発行されたコマンドER1,ER1は、それぞれマスター側とスレーブ側の各メカI/F部84に送られる(図11中の(1),(2))(指示段階)。
このリトライ時にも、コマンドを受信した各メカI/F部84が、仮想メカコン85やダミーメカコン95との間で前記第1実施形態と同様の問合せ処理などを行い、その結果、仮想メカコン85は、マスター側とスレーブ側の両メカI/F部84からコマンドER1,ER1を受け付ける(図11中の(3)〜(5))。このとき、仮想メカコン85は、両コマンドER1,ER1が一致すると判断するので、マスター側とスレーブ側の各メカI/F部84にACK信号を応答する(図11中の(6))。そして、メカI/F部84はACK信号の応答を受け付けると、メカコントローラー43へコマンドER1を送信する(図11中の(7))。なお、リトライが所定回数繰り返されてもACK信号の応答が得られない場合、タイムアウトになってコマンド送信エラーが発行されることになるが、上記のソート処理によってリトライ時にはACK信号が応答されるので、この種のコマンド送信エラーの発生が回避される。
その後、両キュー133A,133Bは、図10(d)の格納状態になる。コマンド出力部134は、キュー133A,133B内の最下流格納位置のコマンドPS2,PS2を、それぞれシーケンス制御部94を介してメカI/F部84へ出力する(図11中の(1),(2))。
そして、同期処理に置いて、仮想メカコン85は、マスター側とスレーブ側の各メカI/F部84から受け付けたコマンドPS2,PS2が一致すると判断するので、マスター側とスレーブ側の各メカI/F部84にACK信号を応答する(図11中の(6))。そして、マスター側のメカI/F部84はACK信号の応答を受け付けると、メカコントローラー43へコマンドPS2を送信する(図11中の(7))。
なお、仮想メカコン85においてコマンドが揃わずACK信号の応答がなく、タイムアウトになった場合、各メカI/F部84はシーケンス制御部94を介してジョブ制御部93にリトライ要求を行う。このとき、ジョブ制御部93ではソート要求を受け付けないので、ソート処理が行われることなく、コマンド出力部134は前回と同じコマンドを再発行する。
この第3実施形態によれば、第1実施形態における優先順位に替え、シリアル番号でソート処理を行うので、第1実施形態におけるソート処理で得られる効果(1)〜(5)を、同様に得ることができる。
(7)仮想メカコン85が要求部143を備え、仮想メカコン85がコマンド不一致と判断した場合に限り要求部143がソート要求を行う構成なので、ソート要求が必要な場合のみソート処理を行うことができる。よって、不要なソート処理を行うことによってコマンド出力処理の処理速度が低下することを防ぎ、効率よくマンド出力処理を行うことができる。
なお、上記実施形態は以下のような形態に変更することもできる。
・仮想メカコン85がNACK信号の応答をしない構成も採用できる。すなわち、コマンドが不一致の場合、仮想メカコン85はACK信号の応答をせず、応答待ち時間が設定時間を過ぎてタイムアウトになると、メカI/F部84がジョブ制御部93にリトライ要求を行う構成でもよい。この場合も、タイムアウトまでの待ち時間が発生するものの、リトライ要求時には、ソート処理や循環処理などの再配列処理を行うことができる。
・第2実施形態において、設定周期の短い方の循環処理部138の単位時間当たりの循環処理回数が複数回となるように周期を設定してもよい。各キュー133における単位時間当たりの循環処理回数が異なれば、各キュー133で次回出力されるコマンドの組合せを変更することはできる。また、リトライ回数が増えるものの、単位時間よりも長い周期を設定してもよい。さらにコマンドがメカコントローラー43へ出力された旨の応答を受け付けるまで、循環処理を継続するのではなく、リトライ要求を受け付ける度に1回の循環処理を行う構成でもよい。また、1回の循環処理でずれるコマンドのずれ数は2つ分以上であってもよい。また、キュー133の最も入力側に位置するコマンドを出力側に移動させる逆方向の循環を行ってもよい。
・第3実施形態における要求部143を備えた仮想メカコン85の構成を、第1及び第2実施形態に適用してもよい。この場合も、コマンドが不一致の場合に限り、ソート処理や循環処理などの再配列処理が行われるので、各キュー133で次回出力すべきコマンドが揃っているにも拘らず、再配列処理が行われる事態を回避できる。この場合、ソート処理の例では、無駄なソート処理を減らしてコマンド出力処理における処理速度を向上でき、循環処理の例では、揃っていたコマンドを却ってずらす事態を回避できる。
・第3実施形態において、例えばマスター側とスレーブ側のうち一方のみが循環処理部138を備えた構成も採用できる。この構成であっても、各キュー133A,133Bのうち一方に格納されたコマンドに循環処理(再配列処理)が施されることにより、両キュー133A,133Bにおいて次回出力されるコマンドの組合せを変更できる。また、3個以上のコントローラー(印刷制御装置)を備えた構成の場合、例えば1個のコントローラーについては、周期設定部の周期TをT=0に設定するか、循環処理部138及び周期設定部139を廃止した構成も採用できる。
・同期手段は、仮想メカコントローラー85による方法に限定されない。例えば複数の印刷制御装置の出力先としてメカコントローラー43との間に介在する同期回路を設け、同期回路において複数の印刷制御装置からのコマンドが揃い、かつすべて一致したら、そのコマンドをメカコントローラー43へ送信する構成を採用してもよい。
・同期手段は、複数の印刷制御装置の各出力手段からコマンドを受け付けるのではなく、コマンドを受け付けた際にコマンドが一致するか否かの判断に使用できる情報をコマンドに替えて受け付ける構成でもよい。情報としては、例えばコマンドの識別子情報(例えばコマンド番号)などを挙げることができる。
・内部コマンドはエラーコマンドに限定されない。印刷制御装置の一例であるコントローラー内で個別に発生した内部コマンドであればよい。内部コマンドであれば、仮に他のコントローラーへ通信線SL4を介して送信されたときに、その内部コマンドの通信所要時間が比較的長くかかることが原因で、送信元と送信先の各コントローラーのジョブ制御部93間でコマンドの取得順が異なることになる構成であれば、同様の課題が発生する。
・検出手段は、部品の一例であるインクカートリッジの状態(装着外れ、色違い、インク切れ等)を検出するインク管理部90に限定されない。記録ヘッド29毎にノズルの目詰まりを検査するためのノズル検査部を設け、複数のノズル検査部を部品の一例として複数のコントローラー41,42に分担して接続する。そして、各コントローラーには、ノズル検査部の検査制御とノズル検査部のノズル検査結果に基づきノズル目詰まり(ノズルエラー)を検出する検出機能とを有する検査制御部(検出手段)を備えた構成も採用できる。この場合、ノズル検査結果又はその検査結果に基づくコマンドを、コントローラー41,42間で通信I/F部87,87を介して他のコントローラーへ通知する。そして、各コントローラー41,42内に設けられた各検査制御部は、ノズル検査結果に基づきノズル目詰まりエラーコマンド(ノズルエラーコマンド)を生成したり、ノズル検査結果に基づきメンテナンス装置32にクリーニングを行わせるクリーニングコマンドを生成したりする。この場合、通信による所要時間が比較的長いことに起因し、マスター側とスレーブ側の両コントローラー41,42でコマンドを取得した順番(つまりキュー133B内のコマンド格納順)が異なっても、ノズルエラーコマンドやクリーニングコマンドを、コマンド送信エラーの発生を招くことなく、メカコントローラー43へ出力できる。
・印刷制御装置の一例であるコントローラー41,42が分担して制御する印刷手段は、記録ヘッド29に限定されない。印刷手段は、例えばキャリッジモーターを含むキャリッジ駆動系であってもよいし、搬送モーターを含む搬送駆動系であってもよい。さらに、記録ヘッド29に、キャリッジ駆動系又は搬送駆動系を加えて印刷手段を構成することもできる。また、キャリッジ駆動系及び搬送駆動系により、印刷手段を構成することもできる。
・印刷制御装置は二つに限らず、三つ以上の印刷制御装置を接続した構成も採用できる。
・記録ヘッドは1個でもよい。例えばライン記録方式の長尺状の記録ヘッドにおいて全ノズルを複数に分割したヘッド領域を複数に分担して二以上の印刷制御装置により制御し、これらの印刷制御装置を同期させてメカコントローラーにコマンドを出力する構成も採用できる。
・図4におけるコントローラーの各機能部を、プログラムを実行するCPUにより主にソフトウェアで実現したが、ハードウェアで実現したり、ソフトウェアとハードウェアとの協働により実現したりしてもよい。
・印刷装置は、ラテラル式のプリンター11に限定されず、シリアルプリンター、ラインプリンター、ページプリンターでもよい。さらにインクジェット式に限定されず、ドットインパクト式の印刷装置にも適用できる。
・前記実施形態では、印刷装置として、インクジェット式のプリンター11が採用されているが、インク以外の他の流体を噴射したり吐出したりする流体噴射装置を採用してもよい。また、微小量の液滴を吐出させる液体噴射ヘッド等を備える各種の液体噴射装置に流用可能である。この場合、液滴とは、上記液体噴射装置から吐出される液体の状態を言い、粒状、涙状、糸状に尾を引くものも含むものとする。また、ここでいう液体とは、液体噴射装置が噴射させることができるような材料であればよい。例えば、物質が液相であるときの状態のものであればよく、粘性の高い又は低い液状体、ゾル、ゲル水、その他の無機溶剤、有機溶剤、溶液、液状樹脂、液状金属(金属融液)のような流状体、また物質の一状態としての液体のみならず、顔料や金属粒子などの固形物からなる機能材料の粒子が溶媒に溶解、分散または混合されたものなどを含む。また、液体の代表的な例としては上記実施形態で説明したようなインクや液晶等が挙げられる。ここで、インクとは一般的な水性インクおよび油性インク並びにジェルインク、ホットメルトインク等の各種液体組成物を包含するものとする。液体噴射装置の具体例としては、例えば液晶ディスプレイ、EL(エレクトロルミネッセンス)ディスプレイ、面発光ディスプレイ、カラーフィルタの製造などに用いられる電極材や色材などの材料を分散または溶解のかたちで含む液体を噴射する液体噴射装置が挙げられる。さらに、バイオチップ製造に用いられる生体有機物を噴射する液体噴射装置、精密ピペットとして用いられ試料となる液体を噴射する液体噴射装置、捺染装置やマイクロディスペンサ等であってもよい。さらに、時計やカメラ等の精密機械にピンポイントで潤滑油を噴射する液体噴射装置、光通信素子等に用いられる微小半球レンズ(光学レンズ)などを形成するために紫外線硬化樹脂等の透明樹脂液を基板上に噴射する液体噴射装置、基板などをエッチングするために酸又はアルカリ等のエッチング液を噴射する液体噴射装置を採用してもよい。そして、これらのうちいずれか一種の液体噴射装置に本発明を適用することができる。また、流体は、トナーなどの粉粒体でもよい。なお、本明細書でいう流体には、気体のみからなるものは含まないものとする。
前記実施形態及び変形例から把握できる技術的思想を以下に記載する。
請求項1乃至9のいずれか一項に記載の前記同期手段を備えた一の前記印刷制御装置と、前記同期手段を備えない他の印刷制御装置とを備え、前記他の印刷制御装置の前記出力手段は前記同期手段に接続されており、前記一の印刷制御装置の前記出力手段は前記同期手段及び前記駆動制御手段に接続されていることを特徴とする印刷制御システム。この構成によれば、印刷手段を複数の印刷制御手段で分担して制御でき、しかも、各出力手段にコマンドが全て揃わないことに起因する同期手段のエラーを回避できる。