(第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キャリッジモーター62(図3参照)の駆動に基づき両ガイドレール26に沿って図1に示す主走査方向X(図1では左右方向)への往復移動が可能な状態で支持されている。また、キャリッジ27は第2キャリッジモーター63(図3参照)の駆動に基づき副走査方向(図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等(図3参照)を通じて記録ヘッド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パス終了毎に行われるキャリッジ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は、メカ制御部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へコマンドを再送信(再発行)する。また、仮想メカコントローラー85における同期処理においてマスター側とスレーブ側のコマンドが揃っても、その揃った両コマンドが不一致と判断した場合は、仮想メカコントローラー85は各メカI/F部84にACK信号を応答しない。この場合も、メカI/F部84はメカ制御部83に対してリトライ要求をすることになる。
通信I/F部87は、マスター側とスレーブ側における各ヘッド制御部89及び各インク管理部90が、処理の同期をとったり、互いの情報を交換し合ったりするための通信を行うために設けられたものである。
図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回の印刷が終わったとき、カートリッジ交換が行われたとき、電源スイッチ(図示省略)がOFF操作された際の電源遮断時などの所定時期に、相手側管理の4色分のインク消費量情報をメカ制御部83及び通信I/F部87を経由して相手側コントローラーのインク管理部90へ送信する。そして、インク残量演算部98は、インク管理部90が受信した相手側管理の記録ヘッド29Aで消費された4色のインク消費量と、自身が受け持つ記録ヘッド29Bで消費された同じ4色のインク消費量とを色別に加算して、全ての記録ヘッド29A,29Bで消費された4色分のインク消費量をそれぞれ算出する。さらにインク残量演算部98は、この4色分の各インク消費量を、この4色の前回のインク残量からそれぞれ減算することで、この4色の現在のインク残量を算出する。現在のインク残量情報は、RAM55の所定記憶領域に一時記憶される。例えばカバー38が開閉されたとき、1回(1ジョブ)の印刷が終わったとき、電源遮断時などの所定時期に、インク管理部90はRAM55から読み出した現在のインク残量を不揮発性メモリー56及び記憶素子47に書き込む。
インク管理部90は、インク残量を管理する他、インクカートリッジICの状態を監視し、インク関連のエラー検出も行う。インク管理部90は、例えばインク残量演算部98が算出したインク残量がインクエンド閾値未満になったか否かを判定し、インク残量がその閾値未満である場合にインクエンドと判定する。例えばインクエンドになってから、一定の許容印刷時間又は一定の許容インク量が消費されるまでの期間を過ぎると、強制的に印刷動作を停止させるためのエラーがメカ制御部83を介してエラー管理部86に通知される。また、インクカートリッジICの外れや、色違いのインクカートリッジICの装着を検出したときにも、メカ制御部83を介してエラー管理部86にエラーが通知される。
エラー管理部86は、インク管理部90からのエラー通知など、コントローラー41,42の内部で発生したエラー通知を受け付けると、そのエラーの内容を判断し、その判断したエラー内容に応じた種類のエラーコマンドを発行する。エラーコマンドの種類は、例えばそのパラメーターの値で区別される。このエラーコマンドは主制御部82へ送られ、さらに主制御部82からメカ制御部83へ送られる。なお、本実施形態では、エラー管理部86と、検出手段の一例であるインク管理部90とにより、コマンド生成手段の一例が構成される。
メカ制御部83は、コマンドの実行順を制御するジョブ制御部93と、ジョブ制御部93で制御された順番で出力されたコマンドを受け付けてその出力タイミングを制御することでシーケンス制御を行うシーケンス制御部94とを備えている。なお、本実施形態では、ジョブ制御部93により管理手段の一例が構成され、シーケンス制御部94により指示手段の一例が構成される。
図5は、ジョブ制御部93の構成を示す。ジョブ制御部93は、コマンド判定部131、シーケンスキュー132、イミーディエットキュー133及びコマンド出力部134を備えている。主制御部82からメカ制御部83へ送られてきたコマンドは、ジョブ制御部93に入力される。ここで、コマンドには、印刷データPDに含まれる印刷言語記述コマンドを解釈して得られるなどのシーケンス制御用のコマンド(以下「シーケンスコマンド」という)と、コントローラー41,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,…の順番で出力される。ここで、「コマンドPS」は、ホスト装置120により発行されたコマンドを示し、「コマンドER」はコントローラー41,42内で発行された内部コマンドを示す。コマンドPSは、例えばユーザーによるホスト装置120の画面操作などを基に発行される。
コマンド出力部134は、下流のシーケンス制御部94からジョブ制御部93に対する応答又は要求を待ってコマンドを出力(発行)する。コマンド出力部134は、メカI/F部84からシーケンス制御部94を介して前回のコマンドを出力した旨の応答を受け付けると、次のコマンドを出力する。また、コマンド出力部134は、メカI/F部84からシーケンス制御部94を介してコマンドの再送を要求するリトライ要求(再送要求)を受け付けると、先に出力した同じコマンドをもう一度送る。
図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のそれぞれ内部で行われる処理の流れ(図中の矢印)は同じになっている。
図7に示すように、メカI/F部84は、判定部135を備えている。判定部135は、メカI/F部84がシーケンス制御部94から受け付けたコマンドが、内部コマンドであるか否かを判定する。詳しくは、判定部135は、内部コマンドか、ホスト制御部125(ホスト装置120)で発行されたコマンドか、メカコントローラー43で発行されたコマンドかを判別可能である。本実施形態では、コマンドには、コマンドの種類を識別する識別子(例えば所定ビットの識別番号)が含まれており、判定部135は、コマンドの識別子から内部コマンドであるか否かを判定する。なお、各コマンドにその種類を識別する識別子を設ける替わりに、内部コマンドだけに識別子を設ける構成を採用してもよい。また、コマンドを送るパケット中にフラグを設定して、フラグ値を基に判定する方法を採用してもよい。識別子の一例としては、コマンド番号を挙げることができる。
以下、本実施形態におけるコマンド出力処理を、図6及び図7を用いて説明する。主制御部82は、入力した印刷データのコマンド解析で得たコマンドや、ホスト装置120から入力したコマンド、メカコントローラー43から入力したコマンド(入力段階)、コントローラー41,42の内部で発行されたコマンド(コマンド生成段階)を、メカ制御部83へ出力する。メカ制御部83へ入力されたコマンドは、コマンド判定部131によりコマンドの種類が判定される。コマンド判定部131は、コマンドに含まれる識別子に基づいて、入力したコマンドが、第1のコマンドの一例であるシーケンスコマンドであるか、それとも第2のコマンドの一例である内部コマンドを含む緊急コマンドであるかを判定する。この判定結果に基づき、シーケンスコマンドはシーケンスキュー132にそれぞれ取得した順に格納され、緊急コマンドはイミーディエットキュー133にそれぞれ取得した順番に格納される(管理段階)。
コマンド出力部134は、シーケンスキュー132に格納されたシーケンスコマンドよりも、イミーディエットキュー133に格納されたコマンドを優先して出力する。このため、基本的に、イミーディエットキュー133にコマンドがあるうちは、そのコマンドの出力が優先して進められる。
図6は、マスター側とスレーブ側のイミーディエットキュー133A,133Bを示す。なお、図6のキュー133において、一番下に格納されたコマンドのうち破線で囲ったコマンドはメカコントローラー43へ出力されるものである。例えば、マスター側コントローラー41でエラーが発生したとする。ホスト装置120からコマンドPS1を受信してから内部でエラーが発生し、これをスレーブ側コントローラー42に通知している間にホスト装置120からコマンドPS2が送られてきたとする。この場合、図6(a)に示すように、マスター側のキュー133Aには、コマンドPS1,ER1,PS2の順番に格納され、スレーブ側のキュー133Bには、コマンドPS1,PS2の順番に格納される。このとき、スレーブ側のキュー133Bには、まだエラーコマンドER1は届いていない(図6(a)の状態)。
この図6(a)の格納状態のとき、ジョブ制御部93は、イミーディエットキュー133内の最下流格納位置(図7における最下位置)のコマンドPS1,PS2をシーケンス制御部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が発行された後、両キュー133A,133Bは、図6(b)の格納状態になる。コマンド出力部134は、両キュー133A,133Bから、最下流格納位置のコマンドER1,PS2をそれぞれ発行する。この発行されたコマンドER1,PS2は、それぞれマスター側とスレーブ側の各メカI/F部84に送られる(図7中の(1),(2))。
この場合、マスター側のメカI/F部84では判定部135が、コマンドER1を内部コマンドと判定する。この結果、マスター側のメカI/F部84は、仮想メカコン85に同期処理を行わせるための問合せをすることなく、つまり仮想メカコン85を介することなく、コマンドER1を直ちにメカコントローラー43へ出力する(出力段階)。一方、スレーブ側のメカI/F部84では判定部135が、コマンドPS2を内部コマンドではないと判定する。この結果、コマンドPS2は同期処理のため、仮想メカコン85へ送られるが、コマンドが揃わずタイムアウトになるので、スレーブ側のメカI/F部84はメカ制御部83にリトライを要求する。
このため、図6(c)に示すように、リトライを要求されたコマンドPS2はキュー133Bに残る。また、このスレーブ側のキュー133Bには遅れて届いたコマンドER1が格納される。この図6(c)の状態で、両キュー133A,133BからコマンドPS2,PS2をそれぞれ発行する。この場合、仮想メカコン85における同期処理で、同一のコマンドPS2,PS2が揃ったことが確認される。この結果、マスター側のメカI/F部84は、仮想メカコン85からACK信号の応答を受け付ける。この応答を受け付けたマスター側のメカI/F部84は、コマンドPS2をメカコントローラー43へ出力する。
その後、両キュー133A,133Bは、図6(d)の格納状態になる。スレーブ側のコマンド出力部134は、キュー133Bから、コマンドER1を発行する。スレーブ側のメカI/F部84では、判定部135が、コマンドER1を内部コマンドと判定する。この結果、コマンドER1は仮想メカコン85へ送信される。この場合、仮想メカコン85は、受け付けたコマンドER1が内部コマンドであることから、揃わなくてもマスター側のメカI/F部84に送る。
マスター側のメカI/F部84では、判定部135が、仮想メカコン85から受け付けたコマンドER1を内部コマンドと判定するので、そのまま直ちにメカコントローラー43へ出力する。このとき、仮想メカコン85から受け付けたコマンドは、スレーブ側のメカI/F部84で内部コマンドと判定されたものであることが特定できるので、マスター側のメカI/F部84での判定部135の判定を省略し、仮想メカコン85から受け付けたことをもって、そのコマンドを直ちにメカコントローラー43へ出力する構成としてもよい。
このように両キュー133A,133Bに格納されるコマンドの順番が異なっても、コマンドPS1,ER1,PS2,ER1は全てメカコントローラー43へ出力される。本実施形態では、メカコントローラー43へエラーコマンドER1が2回出力されることになる。エラーコマンドER1はエラー発生時にメカコントローラー43の動作を停止したい場合に使用するものである。エラーコマンドはそのパラメーターによって、「即停止」、「キャップ後停止」、「何もしない」の3段階が指定される。例えば同じ停止命令のパラメーターが指定されたエラーコマンドが2回送られてきても、既に停止しているときに停止命令を受け付けるだけなので、特に問題はない。
以上詳述したように、本実施形態によれば、以下に示す効果を得ることができる。
(1)マスター側のメカI/F部84は、判定部135が、メカ制御部83から受け付けたコマンドが内部コマンド(第2のコマンド)であると判定すると、仮想メカコン85による同期処理を介さずにその内部コマンドをメカコントローラー43へ出力する。この結果、通信線SL4を介した通信に相対的に時間がかかって送信先のコントローラーで内部コマンドの取得時期が遅れ、これが原因で各コントローラー41,42内のキュー各133に格納されたコマンドの順番が異なることになっても、仮想メカコン85でコマンドが揃わないことに起因するコマンド送信エラーの発生を回避できる。
(2)各コントローラー41,42がエラーを検出した際に生成されるエラーコマンドは同期処理を行うことなく出力されるので、エラーコマンドをメカコントローラー43へ出力できなくなる事態を回避できる。また、マスター側とスレーブ側の各コントローラー41、42から同じエラーコマンドが、メカコントローラー43へ二重通知されることになる。しかし、先に出力されたエラーコマンドによりメカコントローラー43がメカニカル機構44の動作を停止させた後、後のエラーコマンドが送られてきても、既に停止状態なので、実質何も行われず、何ら問題はない。
(3)内部コマンドがエラーコマンドである場合、同期処理を経ずに出力されても問題はない。例えば複数のコントローラー41,42のうち1つのコントローラーのみでエラーコマンドが発生した場合でも、メカニカル機構44の動作は停止されるべきなので、内部コマンドが揃わずにメカコントローラー43へ出力されても何ら問題はない。
(4)仮想メカコン85は、マスター側とスレーブ側の各メカI/F部84からのコマンドが揃いかつ各コマンドが一致したと判断したときに、マスター側のメカI/F部84にACK信号を応答し、マスター側のメカI/F部84がACK信号の応答に基づきコマンドをメカコントローラー43へ送信する。よって、マスター側とスレーブ側のコントローラー41,42間で同期をとってメカコントローラー43へコマンドを送信できる。
(5)複数のコントローラー41,42は、図4及び図7に示すようにその機能構成が同じなので、共通のプログラムにより実現することができる。この場合、仮想メカコン部96とダミーメカコン部97のうち起動させる一方を選択することで異なる機能を実現できるので、マスター側とスレーブ側で同期処理に係る機能が一部異なるものの、各コントローラー41,42を共通のプログラムにより実現できる。
(6)インク管理部90(検出手段)は、インクカートリッジICの記憶素子47から取得したインク関連情報及びインク残量演算部98が算出したインク消費量に基づきインク切れ(インクエンド)などのエラーを検出する。そして、インク切れの検出結果に基づきコントローラーの内部で生成されたエラーコマンドは、メカI/F部84において内部コマンド(第2のコマンド)と判定されるため、仮想メカコン85の同期処理を介することなく、直ちにメカコントローラー43へ送信される。よって、インク切れのときに、コマンド送信エラーが発生する事態を回避できる。
(第2実施形態)
次に第2実施形態を図8〜図11を用いて説明する。この第2実施形態は、第1実施形態において起こりうるコマンド送信エラーを回避するための実施形態である。第1実施形態では、ホスト制御部125からのコマンドPS(以下「ホストコマンドPS」ともいう)(緊急コマンド)と、メカコントローラー43からのメカコマンドMC(緊急コマンド)とが、共通のキュー133に格納される構成であった。ここで、各キュー133A,133BでコマンドPS,MCの格納順が異なると、コマンドは不一致のままなので、コマンド送信エラーになってしまう。この第2実施形態は、この種のコマンド送信エラーを解決する構成を提供する。
図8は、メカコントローラー43から各コントローラー41,42へのコマンド送信手順を説明するブロック図である。このコマンド送信手順は第1実施形態では詳しく説明しなかったが、第1実施形態でも同様である。
メカコントローラー43はメカニカル機構44にその状態や動作を検出するために設けられた不図示の検出系の検出結果を基に状態通知コマンドや要求コマンド、エラーコマンド等のコマンドMCを発行し、その発行したコマンドMCをマスター側コントローラー41へ送信する(図8中の(11))。
このコマンドMCを受け付けたマスター側のメカI/F部84は仮想メカコン85にコマンドを送信する(図8中の(12))。仮想メカコン85は受け付けたコマンドを、通信線SL3を通ってスレーブ側コントローラー42へ送信し(図8中の(13))、この送信後、マスター側のメカI/F部84へACK信号を応答する(図8中の(14))。マスター側のメカI/F部84は、仮想メカコン85からACK信号の応答を受け付けると、そのコマンドMCをメカ制御部83へ送信する(図8中の(15))。
一方、コマンドMCを受け付けたスレーブ側のメカI/F部84は、ダミーメカコン95へコマンドMCを送り(図8中の(16))、その後直ぐ返されるACK信号を受け付けると(図8中の(17))、そのコマンドMCをスレーブ側のメカ制御部83へ送信する(図8中の(18))。ここで、マスター側コントローラー41がメカコントローラー43からコマンドMCを受信した後、そのコマンドMCが各コントローラー41,42のメカ制御部83,83へ送られるまでのコマンド送信所要時間は、コントローラー内部の送信だけで済むマスター側に比べ、通信線SL3によるシリアル通信を伴うスレーブ側で相対的に長くなる。
例えば、メカコントローラー43からコントローラー41,42へコマンドMC1が送信されるとほぼ同時に、ホスト制御部125からコントローラー41,42へコマンドPS1が送信されたとする。ホスト制御部125からのコマンドPSは、シリアル通信ポートU1,U3(又はU2,U4)間のシリアル通信で同時に送られてくるので、各キュー133A,133Bにほぼ同時に格納される。
例えばマスター側コントローラー41では、メカコントローラー43からのコマンドMC1を受信した後、極僅かの遅れでホスト制御部125からのコマンドPS1を受信したとすると、マスター側のキュー133AにはコマンドMC1,PS1の順番で格納される(図9(a))。一方、スレーブ側コントローラー42は、メカコントローラー43からのコマンドMC1を、通信線SL3を介した通信で遅延する分だけマスター側に遅れて受信する。このため、スレーブ側のキュー133BにはコマンドPS1,MC1の順番で格納されることになる(図9(a)参照)。このように各キュー133A,133Bのコマンド格納順が異なった場合、これらのコマンドMC1,PS1は判定部135において内部コマンドとは判定されないので、仮想メカコン85において不一致となり、リトライを繰り返しても不一致のままでやがてコマンド送信エラーとなる。また、コマンドMC1がヘッド制御部89へ送られるなどその出力経路がメカI/F部84を経由しないコマンドである場合、他方のホストコマンドPS1がメカI/F部84を経由する際に相手側のコマンドが届かず、タイムアウトによりコマンド送信エラーが発生する虞がある。
この第2実施形態は、各キュー133A,133Bにおいて、このような内部コマンド以外のコマンドの格納順が異なった場合でもコマンド送信エラーの発生を回避できるように、図10に示す構成のジョブ制御部93を採用している。
図10は、本実施形態のジョブ制御部93の構成を示す。なお、ジョブ制御部93以外の構成は、前記第1実施形態と共通であるので、第1実施形態と共通の構成については説明を省略し、ジョブ制御部93の構成のみ詳細に説明する。
図10に示すように、管理手段の一例としてのジョブ制御部93は、コマンド判定部140、第1キュー141、第2キュー142、第3キュー143、第4キュー144及びコマンド出力部145を備えている。
コマンド判定部140は、前記第1実施形態と同様に、入力したコマンドの種類(本例では4種類)を判定する。本実施形態のコマンド判定部140は、入力したコマンドが、内部コマンドER、ホスト制御部125からのホストコマンドPS(緊急コマンド)、メカコントローラー43からのメカコマンドMC(緊急コマンド)、シーケンスコマンドSQのうちいずれであるかを判定する。
そして、コマンド判定部140は、判定結果を基に、内部コマンドERであれば第1キュー141に格納し、ホストコマンドPSであれば第2キュー142に格納し、メカコマンドMCであれば第3キュー143に格納し、さらにシーケンスコマンドSQであれば第4キュー144に格納する。第1実施形態では、緊急コマンドは全て共通のイミーディエットキュー133に格納していたのに対して、この第2実施形態では、緊急コマンドを、内部コマンド、ホストコマンドPS、メカコマンドMCごとに別々のキュー141〜143に格納するようにしている。なお、本実施形態では、ホスト制御部125からのホストコマンドPS(第1のコマンド)を格納する第2キュー142が、第1の管理手段の一例を構成しており、メカコントローラー43からのメカコマンドMC(第1のコマンド)を格納する第3キュー143が、第2の管理手段の一例を構成している。
ここで、第1〜第4キュー141〜144には、コマンドを出力させるキューの優先順位が設定されている。本実施形態では、第1〜第4キュー141〜144の順番でコマンドの出力が優先される。出力部の一例としてのコマンド出力部145は、第1〜第4キュー141〜144のうちコマンドを出力するキューを、各キューの優先順位に従って決定してコマンドの出力順を制御する。本実施形態では、前述のように、第1キュー141が第1位の優先順位、第2キュー142が第2位の優先順位、第3キュー143が第3位の優先順位、第4キュー144が第4位の優先順位に設定されている。
コマンド出力部145は、各キュー141〜144のコマンド格納状態を管理し、第1キュー141にコマンドがあるうちは第1キュー141からのコマンドの出力を優先する。第1キュー141が空であれば、第2キュー142のコマンドの出力を優先する。さらに第1及び第2キュー141,142が共に空であれば、第3キュー143のコマンドの出力を優先する。そして、第1〜第3キュー141〜143が全て空であれば、第4キュー144のコマンドの出力を行う。
以下、この第2実施形態におけるコマンド出力処理を、図9(b)を参照しつつ説明する。なお、図9(b)では4つのキュー141〜144のうち第2キュー142と第3キュー143のみ図示している。
例えば、メカコントローラー43からコントローラー41,42へコマンドMC1が送信されるとほぼ同時に、ホスト制御部125からコントローラー41,42へコマンドPS1が送信されたとする。このとき、マスター側コントローラー41では、コマンドMC1を受信した後、極僅かの遅れでコマンドPS1を受信したとする。この場合、マスター側のジョブ制御部93では、コマンド判定部140が入力コマンドのコマンド種を判定し、コマンド種に応じたキューへコマンドを振分ける。このため、まずコマンドMC1が第3キュー143Aに格納され、続いてコマンドPS1が第2キュー142Aに格納される(図9(b)における左図参照)。
一方、スレーブ側コントローラー42では、ホストコマンドPS1はマスター側とほぼ同時に受信されるが、メカコマンドMC1は通信線SL3を介した通信で遅延した分だけマスター側に遅れて受信される。このため、スレーブ側のジョブ制御部93には、先にコマンドPS1が到達し、その後遅れてコマンドMC1が到達することになる。この場合、コマンド判定部140が入力コマンドのコマンド種を判定し、コマンド種に応じたキューへコマンドを振分ける。このため、まずコマンドPS1が第2キュー142Bに格納され、続いてコマンドMC1が第3キュー143Bに格納される(図9(b)における右図参照)。
よって、コマンドPS1,MC1がジョブ制御部93に到達する順番が、マスター側とスレーブ側で異なっても、共にコマンドPS1が第2キュー142A,142Bに格納され、コマンドMC1が第3キュー143A,143Bに格納される。
そして、コマンド出力部145は、第1〜第4キュー141〜144のうちコマンドが格納されたキューが複数ある場合は、そのうち優先順位の高いキューから順番にコマンドを出力させる。このため、図9(b)の例では、まず、優先順位第2位の第2キュー142A,142BからコマンドPS1,PS1が出力される。この場合、コマンドPS1,PS1は揃っているので、仮想メカコン85でコマンドPS1,PS1の一致が確認されることになり、マスター側のメカI/F部84からメカコントローラー43へコマンドPS1が送信される。
図9(b)の例では、コマンドPS1の出力により各キュー142A,142Bが空になると、次にコマンド出力部145は、コマンドが格納されているキューの中で最も優先順位の高いキュー143A,143BからコマンドMC1,MC1を出力させる。この場合、仮想メカコン85でコマンドMC1,MC1の一致が確認され、マスター側のメカI/F部84からメカコントローラー43へコマンドMC1が送信される。また、コマンドMC1がヘッド制御部89へ送られる場合などメカI/F部84を経由しないコマンドである場合もある。この場合、まず第2キュー142A,142Bから出力されたコマンドPS1,PS1が仮想メカコン85でその一致が確認され、コマンドPS1がマスター側のメカI/F部84からメカコントローラー43へ送信される。そして、次にコマンドMC1がシーケンス制御部94を経由して例えばヘッド制御部89へ送られる。
メカコマンドMCの中には、コントローラー41,42内で他のコマンドを二次的に誘起する種類のコマンドがある。本実施形態では、コントローラー41,42内でメカコマンドMCをトリガーとして誘起される二次コマンドも、メカコマンドMC(第1のコマンド)に属する設定としている。もちろん、この種の二次コマンドを内部コマンド(第2のコマンド)に属する設定としてもよい。
この種の二次コマンドを誘起するタイプのメカコマンドMCには、コントローラー41,42に所定動作を要求する要求コマンドなどが挙げられる。コントローラー41は、要求コマンドで要求された所定動作を完了すると、メカコントローラー43に完了通知コマンドを発行する。つまり、コントローラー41,42内において、要求コマンドをトリガーとして完了通知コマンドが誘起される。この種の二次コマンドの発行タイミングは、要求コマンドで要求された所定動作がマスターとスレーブ間で非同期に行われる場合はずれる虞がある。このずれた期間の間に、ホストコマンドPS1が割り込むと、二次コマンドMCとホストコマンドPS1とがジョブ制御部93に入力される順番が、マスターとスレーブ間で異なることになる。
このような場合でも本実施形態では、図9(b)に示すように、ホストコマンドPS1は第2キュー142A,142Bに格納され、メカコマンドMC1(二次コマンドを含む)は第3キュー143A,143Bに格納される。よって、この場合も、まず優先順位の高い第2キュー142A,142BからホストコマンドPS1,PS1が出力され、仮想メカコン85でコマンドPS1,PS1の一致が確認されるので、そのコマンドPS1がメカコントローラー43へ送信される。そして、次に優先順位の高い第3キュー143A,143BからコマンドMC1,MC1が出力され、仮想メカコン85でコマンドMC1,MC1の一致が確認されるので、そのコマンドMC1がメカコントローラー43へ送信される。あるいは、メカコマンドMCがシーケンス制御部94を介してヘッド制御部89などコントローラー41,42内の他の制御部へ送られる。
次に、要求コマンドがクリーニング要求の場合を例にしてコマンド出力処理を説明する。メカコントローラー43は、メンテナンス装置32のキャップ33の開放時間や、印刷枚数をカウントしており、そのカウント値から、記録ヘッド29のクリーニングが必要と判断すると、コントローラー41からの印刷準備指示のコマンドを拒否するリジェクトを返して、自発的にクリーニング動作を開始する。この際、メカコントローラー43は、クリーニング動作として、クリーニング用のインク噴射動作(空噴射)であるフラッシング動作をコントローラー41に要求する。ここで、フラッシング動作とは、記録ヘッド29のノズルから印刷とは関係のないインク滴を噴射してノズルの目詰まりを予防又は解消するクリーニング動作である。
また、このフラッシング動作が行われるとき、メカコントローラー43は、フラッシング動作の前後に、噴射駆動素子を非噴射の駆動範囲内で駆動させてノズル内のインクを微振動させる微振動動作をコントローラー41に要求する。ここで、微振動動作は、ノズル内のインクを微振動させてそのインクの増粘を防止するなどのために行われる。
詳細には、メカコントローラー43は、クリーニング動作に入ると、まずキャリッジ27をフラッシング位置まで移動させ、キャリッジ27が所定の位置に到達すると、コントローラー41,42に向かってフラッシング開始要求コマンド(メカコマンドMC)を発行する。
フラッシング開始要求コマンドを受け付けたコントローラー41,42は、直ちにACK信号を返す。このフラッシング開始要求コマンドはメカコマンドMCに属するので、メカI/F部84からジョブ制御部93に送られた際に第3キュー143に格納される。第3キュー143から出力されたフラッシング開始要求コマンドはシーケンス制御部94を介してヘッド制御部89に送られる。このフラッシング開始要求コマンドを受け付けたヘッド制御部89は、フラッシング動作を開始させる。すなわち、記録ヘッド29へ出力される電圧波形を噴射波形からフラッシング波形に切換え、かつフラッシング用噴射データを生成して記録ヘッド29へ転送することでフラッシング動作を開始する。
このフラッシング動作は、マスターとスレーブ間の同期をとる必要がないため非同期で行われる。所定のショット数を噴射してフラッシング動作が終了すると、ヘッド制御部89からシーケンス制御部94を経由してジョブ制御部93にフラッシング完了通知コマンドが送られる。
このフラッシング完了通知コマンドは、メカコントローラー43から発行されたメカコマンドMCをトリガーにしてコントローラー41,42内で発生する二次コマンドであり、本例ではメカコマンドMCに属する。この結果、フラッシング完了通知コマンドは第3キュー143に格納される。このとき、フラッシングの処理時間の都合でマスターとスレーブ間でタイムラグが発生し、マスターとスレーブ間でフラッシング完了通知コマンドの発行時刻がずれる可能性がある。その間にホストコマンドPS1に割り込まれると、ジョブ制御部93へ入力されるコマンドPS1,MC1の順番がマスターとスレーブ間で入れ替わることになる。
しかし、本実施形態では、図9(b)に示すように、ホストコマンドPS1は第2キュー142A,142Bに格納され、メカコマンドMC1は第3キュー143A,143Bに格納される。このため、まず各第2キュー142A,142BからホストコマンドPS1,PS1が出力され、仮想メカコン85でコマンドPS1,PS1の一致が確認されると、そのコマンドPS1がメカコントローラー43へ送信される。次に、各第3キュー143A,143BからメカコマンドMC1,MC1が出力され、仮想メカコン85でコマンドMC1,MC1の一致が確認されると、そのコマンドMC1(フラッシング完了通知コマンド)がメカコントローラー43へ送信される。
メカコントローラー43はこのフラッシング完了通知コマンドを受信すると、次に微振動開始要求コマンド(メカコマンドMC)をコントローラー41,42に発行する。この微振動開始要求コマンドを受信したコントローラー41,42は、直ちにACK信号を返す。この微振動開始要求コマンドもメカコマンドMCに属するため、各コントローラー41,42への到達時期がずれ、その間にホストコマンドPSが発行されると、ジョブ制御部93に入力されるコマンドPS,MCの順番がマスターとスレーブ間で異なることになる。この場合も、図9(b)に示すように、ホストコマンドPS1は第2キュー142A,142Bに格納され、メカコマンドMC1(微振動開始要求コマンド)は第3キュー143A,143Bに格納されるので、前述と同様にホストコマンドPS1はメカコントローラー43へ送信される。また、次に第3キュー143A,143Bから出力された微振動開始要求コマンドはヘッド制御部89へ送られ、ヘッド制御部89が記録ヘッド29の微振動を開始する。
一方、フラッシング完了通知を受信したメカコントローラー43は、第1CRモーター62を駆動してキャリッジ27をフラッシング位置からキャップ位置(例えばホームポジション)に移動させ、キャリッジ27がキャップ位置に到達すると、昇降装置34を駆動してキャップ33をキャッピング位置に向かって移動させる。メカコントローラー43は、キャップ33が記録ヘッド29をキャッピングする直前に微振動停止コマンド(メカコマンドMC)をコントローラー41,42に発行する。この微振動停止コマンドを受信したコントローラー41,42は、直ちにACK信号を返すと共に記録ヘッド29の微振動を停止させる。この結果、記録ヘッド29がキャップ33によってキャッピングされる直前に、記録ヘッド29の微振動が停止される。
他のメカコマンドMCの例としては、カバー38が閉じられたことを検知した際にメカコントローラー43から発行されるカバー閉通知コマンドが挙げられる。カバー38が閉まると、メカコントローラー43はカバー閉通知コマンド(メカコマンドMC)をコントローラー41に発行する。このカバー閉通知コマンドもメカコマンドMCに属するため、各コントローラー41,42への到達時期がずれ、その間にホストコマンドPSが割り込むと、ジョブ制御部93に入力されるコマンドPS,MCの順番がマスターとスレーブ間で異なることになる。本実施形態では、ホストコマンドPSは第2キュー142A,142Bに格納され、このメカコマンドMC(カバー閉通知コマンド)は、第3キュー143A,143Bに格納される。この場合も、コマンド送信エラーが発生することなく、ホストコマンドPS1をメカコントローラー43へ送信できる。
また、第3キュー143から出力されたカバー閉通知コマンドは、シーケンス制御部94を経由してインク管理部90に送られる。カバー閉通知コマンドを受け付けたインク管理部90は、記憶素子47にアクセスしてカートリッジ検出処理(インク関連の検出処理)を開始する。このカートリッジ検出処理は、マスターとスレーブ間の同期をとる必要がないため非同期で行われる。カートリッジ検出処理を終了すると、それぞれの検出結果通知コマンドを通信I/F部87,87間の通信で、他方のコントローラーへ送信する。その後、各コントローラー41,42は各検出結果通知コマンドの検出結果内容をマージし、そのマージ結果を基に、カートリッジICの装着外れやインク切れ等のエラーの有無をメカコントローラー43に伝えるためのパック状態通知コマンドを発行する。この発行されたパック状態通知コマンドはジョブ制御部93に送られる。このパック状態通知コマンドは、カバー閉通知コマンド(メカコマンドMC)をトリガーとして開始されるカートリッジ検出処理の結果を通知する検出系のコマンドであるので、内部コマンド(第2のコマンド)に属する設定としている。もちろん、パック状態通知コマンドを、メカコマンドMCに属する設定としてもよい。
カートリッジ検出処理の処理時間の都合でマスターとスレーブ間でタイムラグが発生し、マスターとスレーブ間でパック状態通知コマンドの発行時刻がずれる可能性がある。その間、ホストコマンドPS1に割り込まれると、マスターとスレーブ間で、ジョブ制御部93へ入力されるコマンドPS1,ER1の順番が入れ替わる。しかし、本実施形態では、図10に示すように、内部コマンドER1(パック状態通知コマンド)は第1キュー141に格納され、ホストコマンドPS1は第2キュー142に格納される。
そして、まず各第1キュー141から内部コマンドER1,ER1が出力され、判定部135が内部コマンドであると判定するので、マスター側のコマンドER1とスレーブ側のコマンドER1とがそれぞれメカコントローラー43へ送信される。次に、各第2キュー142A,142BからホストコマンドPS1,PS1が出力され、仮想メカコン85でコマンドPS1,PS1の一致が確認されると、そのコマンドPS1がメカコントローラー43へ送信される。パック状態通知コマンドを受け付けたメカコントローラー43は、正常なパック状態であれば、インク供給装置39のポンプモーター65を駆動してインク供給を開始し、一方、異常なパック状態であればインク供給を開始しない。本例では、パック状態通知コマンドは、メカコントローラー43に二重通知されるが、同じ内容のコマンドが短時間のうちに二回通知されるだけなので、特に動作上の問題は発生しない。なお、パック状態通知コマンドをメカコマンドMCに属する設定とした場合は、図9(b)に示すように各キューにコマンドが格納され、前述の処理が同様に行われることにより、仮想メカコン85でコマンドの一致が確認できないことに起因するコマンド送信エラーを回避できる。
このように、コントローラー41,42に到着するホストコマンドPSとメカコマンドMCの順番が異なることになったり、メカコマンドMCをトリガーとしてコントローラー41,42内で発行された二次コマンドMCとホストコマンドPSとの順番が異なることになったりしても、それぞれコマンドPS,MCは専用のキュー142,143に別々に格納される。このため、第1実施形態の構成で起こりうる同一キュー内でコマンドの順番が入れ替わる事態が回避される。よって、コントローラー41,42間でコマンドPS,MCを受信する順番が異なっても、コマンド送信エラーの発生を回避できる。
図11は、エラーコマンドの順番が入れ替わったときのコマンド出力処理を説明する模式図である。なお、図11では、第1キューとメカI/F部と仮想メカコンのみを模式的に示し、メカ制御部や第2〜第4キューなどの一部の構成を省略している。例えば図11(a)に示すように、エラーコマンドの順番が入れ替わった場合のコマンド出力処理を説明する。
例えばマスター側コントローラー41の内部でエラーコマンドER1が発生し、これとほぼ同時にスレーブ側コントローラー42の内部でエラーコマンドER1が発生したとする。この場合、マスター側コントローラー41からエラーコマンドER1が通信線SL4を介してホスト側へ送信され、これとほぼ同時にスレーブ側コントローラー42からエラーコマンドER2が通信線SL4を介してスレーブ側へ送信される。このため、内部で発生したコマンドが先に格納され、通信線SL4を介して遅れて到達したコマンドが後から格納されることになる。
このため、マスター側の第1キュー141AにはエラーコマンドER1,ER2の順番で格納され、スレーブ側の第1キュー141BにはエラーコマンドER2,ER1の順番で格納される。この状態から図11(a)の各キュー141A,141Bの最下流格納位置に配置されたエラーコマンドER1,ER2が出力される。出力されたエラーコマンドER1,ER2はメカI/F部84が受け付ける。
メカI/F部84では、判定部135が、受け付けたコマンドが内部コマンドであるか否かを判定する。この場合、エラーコマンドER1は内容コマンドと判定されるので、マスター側のメカI/F部84は、仮想メカコン85へ問い合わせることなく、コマンドER1をメカコントローラー43へ送信する。また、スレーブ側のメカI/F部84でも、判定部135がエラーコマンドER2を内容コマンドと判定するので、エラーコマンドER2はスレーブ側のメカI/F部84から通信線SL3を介して出力される。そして、通信線SL3を介してエラーコマンドER2を受信した仮想メカコン85は、スレーブ側のメカI/F部84から受け付けたコマンドが内部コマンドであると確認するので、そのコマンドをマスター側のメカI/F部84へ送信する。このメカI/F部84は判定部135で内部コマンドと判定したことをもって、あるいは仮想メカコン85から送られてきたコマンドであることをもって、その受け付けたコマンドをメカコントローラー43へ送信する。よって、第2実施形態においても、エラーコマンドのような内部コマンドが第1キュー141に格納される順番がマスター側とスレーブ側で異なっても、メカI/F部84が、エラーコマンドを仮想メカコン85へ問い合わせることなく、メカコントローラー43へスルーさせることにより、コマンド送信エラーの発生を回避できる。
以上詳述したように、第2実施形態によれば、以下に示す効果を得ることができる。
(7)ホスト制御部125からのホストコマンドPSを格納する第2キュー142と、メカコントローラー43からのメカコマンドMCを格納する第3キュー143とを別々に設けたので、各コントローラー41,42間でホストコマンドPSとメカコマンドMCとの取得順が入れ替わっても、それぞれを対応する各キューに別々に格納できる。よって、ホストコマンドPSとメカコマンドMCとを受信する順番がコントローラー41,42間で異なることに起因して第1実施形態の構成の場合に起こりうるコマンド送信エラーを回避することができる。また、メカコマンドMC(例えば要求コマンド)をトリガーとしてコントローラー41,42内で発生するコマンド(例えば完了通知コマンド)もメカコマンドMCに属する設定とし、ホストコマンド用の第2キュー142とは異なる第3キュー143に格納する構成とした。よって、この種のメカコマンドMCとホストコマンドPSとがジョブ制御部93へ入力される順番がマスターとスレーブ間で異なっても、コマンド送信エラーの発生を回避できる。
(8)各キュー141〜143に優先順位を設定したので、各コントローラー41,42間で対応するキューからコマンドを出力させることができる。このため、各コントローラー41,42においてメカ制御部83からメカI/F部84へ出力されるコマンドを揃えることができる。
(9)エラーコマンドなどの内部コマンドが第1キュー141に格納される順番がコントローラー41,42間で異なる場合でも、メカI/F部84の判定部135により内部コマンドと判定されれば、仮想メカコン85へ問い合わせることなく、その内部コマンドをメカコントローラー43へ出力する。よって、第2実施形態においても、仮想メカコン85でエラーコマンドが揃わないことに起因するコマンド送信エラーを回避できる。
なお、上記実施形態は以下のような形態に変更することもできる。
・前記各実施形態において、内部コマンドを通信I/F部87経由で通知しない構成を採用してもよい。この場合、内部コマンドが発生していない側のコントローラーのキュー133B内にその内部コマンドが格納されることはなくなり、メカコントローラー43へのエラーコマンドの2重通知も解消する。
・前記各実施形態では、判定部135により、「内部コマンド」であるかどうかを判定したが、予め同期処理を行わずそのままメカコントローラー43へスルーさせるべき「スルーコマンド」であるかどうかを判定してもよい。この場合、コマンドにスルーコマンド専用の識別子を付したり、パケット中にスルーコマンドである旨をフラグで設定したりして、スルーコマンドであるかどうかを判定すればよい。例えばコントローラー41,42の内部で発生したエラーコマンドと、このエラーコマンド以外の内部コマンドと、ホスト装置120で発行されたエラーコマンドとを、スルーコマンドとしてもよい。この構成であっても、少なくとも内部コマンドは同期処理されることなくスルーされる。
・前記第2実施形態において、第1〜第3キュー141〜143に設定される優先順位は適宜変更することができる。例えばホストコマンドPSを格納するためのキューを第1位の優先順位に設定し、メカコマンドMCを格納するためのキューを第2位の優先順位、内部コマンドを第3位の優先順位に設定してもよい。これらのうちどのキューに格納されるコマンドも緊急コマンドなので、特に優先順位に適宜設定してよい。
・前記第2実施形態において、内部コマンド専用のキュー(第1キュー141)は廃止してもよい。例えば内部コマンドは、ホストコマンド用の第2キュー又はメカコマンド用の第3キューに格納してもよい。この場合、各コントローラー41,42のメカ制御部83からメカI/F部84へ出力されるコマンドの組合せが、内部コマンドとホストコマンド、又は内部コマンドとメカコマンドの組合せになっても、そのうち内部コマンドは判定部135による判定の結果、同期処理を行うことなくメカコントローラー43へ送信される。よって、その後のリトライによってホストコマンド又はメカコマンドが揃うことになるので、コマンド送信エラーは回避される。
・前記第2実施形態において、第1のコマンド(内部コマンド、ホストコマンドPS、メカコマンドMC)が格納される複数のキューに優先順位を設定しない構成も採用できる。複数のコントローラー間で対応するキューからコマンドが出力されれば、仮想メカコン85においてコマンドが揃うので、コマンド送信エラーを回避できる。例えば、第1〜第3キューにおいて1つのキューからコマンドを1つ出力するとコマンド出力キューを次のキューへシフトさせる循環をコマンドが無くなるまで繰り返す構成も採用できる。
・同期手段は、仮想メカコントローラー85による方法に限定されない。例えば複数の印刷制御装置の出力先としてメカコントローラー43との間に介在する同期回路を設け、同期回路において複数の印刷制御装置からのコマンドが揃い、かつすべて一致したら、そのコマンドをメカコントローラー43へ送信する構成を採用してもよい。
・同期手段は、複数の印刷制御装置の各出力手段からコマンドを受け付けるのではなく、コマンドを受け付けた際にコマンドが一致するか否かの判断に使用できる情報をコマンドに替えて受け付ける構成でもよい。情報としては、例えばコマンドの識別子情報(例えばコマンド番号)などを挙げることができる。
・内部コマンドはエラーコマンドに限定されない。印刷制御装置の一例であるコントローラー内で個別に発生した内部コマンドであればよい。内部コマンドであれば、仮に他のコントローラーへ通信線SL4を介して送信されたときに、その内部コマンドの通信所要時間が比較的長くかかることが原因で、送信元と送信先の各コントローラーのジョブ制御部93間でコマンドの取得順が異なることになる構成であれば、同様の課題が発生する。
・前記第2実施形態において、メカコマンドMCをトリガーとしてコントローラー41,42内で発生した二次コマンドを、内部コマンド(第2のコマンド)として扱ってもよい。各コントローラー41,42から、完了通知コマンドが二重通知されても問題が起こらない種類のコマンドであれば、内部コマンドとして扱っても何ら問題はない。この構成であっても、この内部コマンドが仮想メカコン85を経由せずスルーすることから、ホストコマンドPSの送信エラーを回避できる。
・検出手段は、部品の一例であるインクカートリッジの状態(装着外れ、色違い、インク切れ等)を検出するインク管理部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乃至6のいずれか一項に記載の前記同期手段を備えた一の前記印刷制御装置と、前記同期手段を備えない他の印刷制御装置とを備え、前記他の印刷制御装置の前記出力手段は前記同期手段に接続されており、前記一の印刷制御装置の前記出力手段は前記同期手段及び前記駆動制御手段に接続されていることを特徴とする印刷制御システム。この構成によれば、印刷手段を複数の印刷制御手段で分担して制御でき、しかも、各出力手段にコマンドが全て揃わないことに起因する同期手段のエラーを回避できる。