以下、本発明をラテラル方式のインクジェット式プリンターの印刷制御装置に具体化した一実施形態を図1〜図12に従って説明する。
図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(図2参照)の駆動力に基づいて回転することによりロール状に巻き取られる。
図1に示すように、印刷室15内における支持部材19の前後両側には、左右方向に延びるガイドレール26(図1では2点鎖線で示す)が対をなすように設けられている。ガイドレール26の上面は支持部材19の上面よりも高くなっており、両ガイドレール26の上面には、矩形状のキャリッジ27が第1キャリッジモーター62(図2参照)の駆動に基づき両ガイドレール26に沿って図1に示す主走査方向X(図1では左右方向)への往復移動が可能な状態で支持されている。また、キャリッジ27は第2キャリッジモーター63(図2参照)の駆動に基づき副走査方向(図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のノズル形成面に当接するキャッピング位置と、ノズル形成面から離間する退避位置との間を移動する。
また、図1に示すように、本体ケース12内には、異なる色のインクをそれぞれ収容した複数(例えば8個)のインクカートリッジIC1〜IC8が着脱可能に装着されている。そして、各インクカートリッジIC1〜IC8はインク供給路等(図示省略)を通じて記録ヘッド29に接続され、各記録ヘッド29は各インクカートリッジIC1〜IC8から供給されたインクを噴射する。このため、本例のプリンター11では、8色のインクを用いたカラー印刷が可能となっている。なお、本体ケース12においてインクカートリッジIC1〜IC8の配置位置と対応する箇所には開閉式のカバー38が設けられている。インクカートリッジIC1〜IC8の交換作業はカバー38を開けて行われる。インクカートリッジ交換等を行う際のカバー38の開操作は、制御装置Cにより検出されるようになっている。
8個のインクカートリッジIC1〜IC8は、例えば黒(K)、シアン(C)、マゼンタ(M)、イエロー(Y)等の各インクを収容する。なお、保湿液を収容する保湿液カートリッジが装填される構成も採用できる。もちろん、インクの種類(色数)は適宜設定でき、黒インクだけでモノクロ印刷する構成や、インクを2色としたり、8色以外で3色以上の任意の色数としたりした構成も採用できる。
各インクカートリッジIC1〜IC8はカートリッジホルダー(図示省略)を介して制御装置Cと電気的に接続されており、各インクカートリッジIC1〜IC8に実装された不揮発性の記憶素子47(図2参照)には、対応する色のインク残量情報が書き込まれるようになっている。また、本実施形態では、制御装置Cには、無停電電源48が接続されており、プリンター11の各種駆動系及び表示系への電力供給は、無停電電源48から制御装置Cを介して行われるようになっている。なお、無停電電源48に替えて、無停電機能を備えない通常の電源を用いてもよい。
図2は、印刷システム100の電気構成を示すブロック図である。図2に示すホスト装置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を受信して記録系の制御をはじめとする各種制御を行うコントローラー40を備えている。コントローラー40は、複数個(本例では15個)の記録ヘッド29を制御する。
図2に示すように、本実施形態のホスト装置120は、シリアル通信ポートU1を備えている。また、コントローラー40もシリアル通信ポートU2を備えている。そして、転送制御部129は、シリアル通信ポートU1,U2間の通信を介してコントローラー40へ対応する印刷データPDをシリアル転送するようになっている。
図2に示すように、コントローラー40には、複数個(N個(本例では8個))のヘッド制御ユニット45(以下、単に「HCU45」という)が接続され、各HCU45にはそれ一個につき記録ヘッド29が複数個(M個(本例では2個))ずつ接続されている。
また、コントローラー40に接続された各通信回路46には、8個のインクカートリッジIC1〜IC8に実装された8個の記憶素子47がそれぞれ接続されている。コントローラー40は8個のインクカートリッジIC1〜IC4に実装された記憶素子47と通信可能である。記憶素子47は不揮発性の記憶素子により構成されている。記憶素子47には、対応するインクカートリッジICのインク残量情報、インク色、使用期限、メンテナンス情報、品番などの各種のインク関連情報が記憶される。なお、インクカートリッジIC(図1参照)がカートリッジホルダーに装着された状態で、記憶素子47とカートリッジホルダー側の端子部とが電気的に接続されることにより、通信回路46は記憶素子47に対して読み取り及び書き込みのための通信が可能となる。
コントローラー40は、8個のインクカートリッジIC1〜IC8のインク残量等を管理する。コントローラー40は、通信回路46を介してインクカートリッジIC1〜IC8の各記憶素子47と通信してインク関連情報の読出し及び書込みが可能となっている。
さらに、制御装置Cは、コントローラー40の出力側(制御下流側)に通信線SL1を通じて接続されたメカコントローラー43を備えている。メカコントローラー43は主に搬送系及びキャリッジ駆動系を含むメカニカル機構44の制御を司る。コントローラー40は、自身が受け持つ複数個(例えば15個)の記録ヘッド29の印刷準備ができた段階(つまりインク滴噴射制御に使用する印刷画像データが準備された段階)でキャリッジ起動コマンドをメカコントローラー43へ送信するようになっている。これにより、コントローラー40のうち一方の印刷準備完了前にキャリッジ27が起動されてしまうことに起因し、記録ヘッド29が噴射位置に到達したにも拘わらずインク滴が噴射されない噴射ミスが防止される。
また、コントローラー40は、自身が受け持つ複数個の記録ヘッド29の印刷を完了した段階で、シート13の搬送を指令する搬送コマンドをメカコントローラー43へ送信する。これにより、印刷完了前の段階でシート13が搬送開始(又は支持部材19上のシートの吸着解除)されてしまうことに起因し、記録ヘッド29から噴射されたインク滴のシート13に対する着弾位置ずれ(印刷位置ずれ)が防止される。
図2に示すように、コントローラー40にはリニアエンコーダー50が接続されている。このリニアエンコーダー50はキャリッジ27の移動経路に沿って設けられ、コントローラー40には、このリニアエンコーダー50からキャリッジ27の移動距離に比例する数のパルスをもつ検出信号(エンコーダーパルス信号)が入力される。コントローラー40に入力されたエンコーダーパルス信号は、キャリッジ27の主走査方向における位置(キャリッジ位置)及びキャリッジ移動方向の取得や、記録ヘッド29へ出力される噴射タイミング信号の生成に用いられる。
図2に示すように、コントローラー40は、CPU51(中央処理装置)、ASIC52(Application Specific IC(特定用途向け集積回路))、ROM53、第2の記憶手段の一例としてのRAM54、及び第1の記憶手段の一例としての不揮発性メモリー55を備えている。CPU51は、ROM53に記憶されたプログラムを実行することにより、印刷制御に必要な各種タスクを実行する。また、ASIC52は、印刷データPDの処理など記録系のデータ処理などを行う。もちろん、各タスクを含むプログラムは不揮発性メモリー55に記憶されてもよい。
本実施形態では、RAM54にはDRAM(Dynamic Random Access Memory)が用いられている。DRAMとしては、SDRAM(Synchronous DRAM)、DDR SDRAM(Double-Data-Rate SDRAM)、DDR2 SDRAM、DDR3 SDRAMなどが用いられているが、その他、EDO DRAM(Extended Data Out DRAM)、バーストEDO DRAMなどを用いることもできる。もちろん、RAM54には、SRAM(Static Random Access Memory)を用いてもよい。
また、本実施形態では、不揮発性メモリー55として、例えばFeRAM(強誘電体メモリー)が用いられているが、MRAM(Magnetoresistive RAM)、PRAM(Phase change RAM)、ReRAM(Resistive RAM)でもよい。もちろん、書込み可能回数が比較的多ければ、EEPROMやフラッシュメモリーでもよい。
一方、メカコントローラー43には、モーター駆動回路60を介してメカニカル機構44を構成する搬送モーター61、第1キャリッジモーター(以下、「第1CRモーター62」ともいう)及び第2キャリッジモーター(以下、「第2CRモーター63」ともいう)がそれぞれ接続されている。また、メカコントローラー43には、吸引装置30及びメンテナンス装置32がそれぞれ接続されている。なお、本実施形態では、記録ヘッド29及びメカニカル機構44により印刷手段の一例が構成される。このため、第1CRモーター62及び第2CRモーター63も、印刷手段の構成要素の一例を構成している。また、メカニカル機構44のうち搬送モーター61と各ローラー21〜24と軸20,25等により、印刷手段のうちの搬送手段の一例が構成される。
また、メカコントローラー43には、入力系として、電源スイッチ65、エンコーダー66及び温度センサー67がそれぞれ接続されている。電源スイッチ65がオン操作されたときのオン信号及びオフ操作されたときのオフ信号はメカコントローラー43を介してコントローラー40へ送信される。コントローラー40及びメカコントローラー43には、無停電電源48が接続されており、コントローラー40は電源スイッチ65のオン信号の入力に基づき無停電電源48の電力供給を指示し、電源スイッチ65のオフ信号の入力に基づき無停電電源48に電力供給の停止を指示する。
また、メカコントローラー43は、コントローラー40から通信線SL1を通じて受信した各種コマンドに従って、各モーター61〜63、吸引装置30及びメンテナンス装置32を駆動制御する。エンコーダー66は、搬送モーター61を動力源とする搬送駆動系の回転軸の回転を検出するものであり、メカコントローラー43は、エンコーダー66の検出信号(エンコーダーパルス信号)を用いてシート13の搬送量及び搬送位置を検出する。
また、温度センサー67は、シート13の温度を検出するためのものであり、メカコントローラー43には温度センサー67からシート温度に応じた温度検出信号が入力される。このシート温度はプリンター11が動作するのに必要な調整値を求めるために使用される。
制御装置Cは、印刷時に、搬送モーター61を駆動してシート13の次の被印刷領域を支持部材19上に配置すべくシート13を搬送する搬送動作と、シート搬送後に次の被印刷領域を支持部材19に吸着させる吸着動作と、記録ヘッド29によるシート13への印刷動作と、1回分(1頁分)の印刷終了後にシート13の吸着を解除する吸着解除動作とを行う。このとき、印刷動作(記録動作)は、キャリッジ27の主走査方向Xへの移動中に記録ヘッド29からインク滴を噴射することにより行われる。この印刷動作は、第1CRモーター62の駆動によるキャリッジ27の主走査方向Xへの移動(1パス動作)と、1パス終了毎に行われる第2CRモーター63の駆動によるキャリッジ27の副走査方向への移動とを、所定回数繰り返すことにより行われる。
図4は、コントローラー40内のコンピューターに係る部分の電気的構成を示すブロック図である。図4に示すように、CPU51、ASIC52、ROM53、RAM54、及び不揮発性メモリー55は、バス56に接続されており、CPU51及びASIC52はバス56を介してROM53、RAM54及び不揮発性メモリー55にアクセスすることが可能になっている。また、バス56にはメモリーコントローラー57が接続されており、このメモリーコントローラー57にはバス58を介して他のRAM59が接続されている。このRAM59は、主に印刷データの画像処理の際に、処理前、処理途中、処理後の各種データを格納するためのバッファーとして用いられる。ASIC52はメモリーコントローラー57を介してRAM59にアクセスすることで、印刷データ、その処理途中の印刷画像データの読み出し、及び読み出したデータに画像処理を施した後のデータ(プレーンデータ、ヘッド制御データ等)の書き込みを行う。また、画像処理のうち一部はCPU51が行い、CPU51もメモリーコントローラー57を介してRAM59にアクセスして印刷画像データ等の読み出し及び画像処理後のデータの書き込みを行う。また、ASIC52とRAM59間のデータ転送(DMA転送)はメモリーコントローラー57が行う。このメモリーコントローラー57へのデータ転送処理の指示及びその転送条件などの設定は、CPU51がメモリーコントローラー57にアクセスして行う。
CPU51とASIC52により、印刷データに各種の画像処理が施されることにより、プレーンデータ、ヘッド制御データが順番に生成される。すなわち、CPU51により、印刷データの解凍処理、印刷画像データの画素をノズルに割り付けるマイクロウィーブ処理などが施されることによりプレーンデータは生成され、ASIC52により、プレーンデータに縦横変換処理などの画像処理が施されることによりヘッド制御データが生成される。なお、本実施形態では、プレーンデータ及びヘッド制御データが、画像処理により生成される記録データに相当する。
RAM59に格納されたヘッド制御データは図2に示すHCU45を介して各記録ヘッド29へ転送される。記録ヘッド29には不図示のヘッド駆動回路が内蔵され、ヘッド駆動回路がノズル毎に設けられた不図示の噴射駆動素子をヘッド制御データに基づいて駆動制御することにより記録ヘッド29のノズルからインク滴が噴射される。なお、噴射駆動素子としては、電圧を振動に変換する圧電素子(ピエゾ素子)や静電駆動素子の他、インクを加熱して沸騰した際の気泡の力を利用してインク滴を噴射させるヒーター素子を用いることもできる。
図3は、コントローラー40の機能構成を説明するブロック図である。図3に示すコントローラー40内の各種機能構成部分は、CPU51がプログラムを実行することにより構築されている。
図3に示すように、コントローラー40は、OS(Operating System)として、制御手段の一例であるリアルタイムOS71を備えている。そして、コントローラー40内には、このリアルタイムOS71の管理下で選択的に起動される複数のタスク部81〜92等が備えられている。複数のタスク部には、図3に示すように、主制御部81、通信部82、画像処理部83、コマンド解析部84、印刷タスク部85、メカ制御部86、メカ通信部87、ヘッド制御部88、インク管理部89、緊急タスク部90(エマージェンシータスク部)、書込み手段及びコピー手段の一例である書込みタスク部91、及び書戻し手段の一例である書戻しタスク部92などがある。主制御部81は、各タスク部82〜92を統括的に制御する。なお、本実施形態では、リアルタイムOS71、各タスク部81〜92、RAM54及び不揮発性メモリー55により、データ記憶処理装置の一例が構成される。
リアルタイムOS71は、スケジューラー72及び優先順位変更手段の一例としての優先順位変更部73を備える。スケジューラー72は、タスク管理部74及びディスパッチ部75を備えている。
スケジューラー72は、タスク部81〜92のスケジュール管理を行う。すなわち、タスク部81〜92の起動要求を受け付けると、空きがあればそのタスク部を起動するが、既に他のタスク部が実行中(Run状態)であれば、そのタスク部をReady状態とする。そして、実行中のタスク部から処理を終了した旨あるいは待ちが発生した旨の通知SC(サービスコール)を受け付けると、そのときReady状態のタスク部が存在すればそのうち優先順位の一番高いタスク部を起動させることで実行タスク(起動タスク)を切り換えるようになっている。タスク管理部74は、タスクの状態(Wait,Ready,Run等)を管理する。ディスパッチ部75は、スケジューラー72がタスク切り換えイベントとなる通知SC(サービスコール)を受け付けると、タスク管理部74が管理するタスクの状態を参照してReady状態のタスク部のうち優先順位の一番高いタスク部に起動指示を通知してこれを起動させる。
タスク管理部74は、図5に示す優先順位管理テーブル97を有している。この優先順位管理テーブル97には、タスクが優先順位の順番に配列されている。図5の例では、複数のタスクが上側から優先順位の高い順番に配列されており、上側に位置するタスクほど優先順位が高く設定されている。
優先順位変更部73は、優先順位管理テーブル97の優先順位の順番を並び替え、スケジューラー72が起動させるべきタスクの優先順位を変更する機能を有する。電源オン時には、リアルタイムOS71は図5(a)に示す通常時の優先順位管理テーブル97を設定する。優先順位変更部73は、電源スイッチ65のオフ操作によるプリンター11の電源オフ時(通常電源オフ時)と、電源プラグ抜けや電源故障などによる電源遮断時(異常電源オフ時)に、優先順位管理テーブル97を、図5(a)に示す通常時の優先順位の順番から、図5(b)に示す電源オフ時の優先順位の順番に変更する。ここで、各タスクのうちCPU51が一のタスクを実行することにより、図3に示す各タスク部81〜92のうち一のタスク部が起動される。図3に示す各タスク部81〜92は、CPU51の実行対象である、主制御タスク、通信タスク、コマンド解析タスク、画像処理タスク、印刷タスク、メカ制御タスク、メカ通信タスク、ヘッド制御タスク、インク管理タスク、緊急タスク、書込みタスク及び書戻しタスクとそれぞれ対応している。なお、無停電機能を備えない通常の電源を用いた構成の場合は、停電も異常電源オフの原因となる。
図5(a)に示す通常時の優先順位管理テーブル97には、緊急タスク、書込みタスク、ヘッド制御タスク、画像処理タスク、…、書戻しタスクの順番に優先順位が設定されている。つまり、印刷系タスク部81〜89よりも書込みタスク部91の優先順位が高く設定されるとともに、書戻しタスク部92が印刷系タスク部81〜89よりも低い優先順位に設定されている。ここで、印刷系タスク部81〜89とは、印刷データPDに基づく印刷処理を行ううえで必要な処理を担うタスク部を指す。本実施形態では、印刷系タスク部には、通信系タスク部に属する通信部82及びメカ通信部87と、記録系タスク部に属する主制御部81、画像処理部83及びヘッド制御部88と、メカ駆動系タスク部(コマンド処理系タスク部)に属するコマンド解析部84、印刷タスク部85及びメカ制御部86とが含まれる。なお、通信系タスク部82,87は、記録系及びメカ駆動系の両方に属する通信部82と、メカ駆動系のみに属するメカ通信部87とに分かれる。また、本実施形態では、印刷系タスク部81〜89により、印刷制御手段の一例が構成される。
本実施形態では、このように通常時には、書込みタスク部91は緊急タスク部90を除くタスクの中で一番高い優先順位に設定されており、書戻しタスク部92は一番低い優先順位に設定されている。よって、書込みタスク部91は印刷系タスク部81〜89よりも高い優先順位に設定され、書戻しタスク部92は印刷系タスク部81〜89よりも低い一優先順位に設定されている。
また、図5(b)に示す電源オフ時の優先順位管理テーブル97には、緊急タスク、書込みタスク、書戻しタスク、ヘッド制御タスク、画像処理タスク、…の順番に優先順位が設定されている。つまり、書込みタスク部91と書戻しタスク部92との優先順位の関係を通常時と同じ関係に保持したまま、緊急タスク部90以外のタスクの中で書込みタスク部91と書戻しタスク部92とをそれぞれ第1位と第2位の優先順位に設定されるようになっている。このように電源オフ時には、書込みタスク部91と書戻しタスク部92は、書込みタスク部91の方が書戻しタスク部92よりも高い優先順位になる関係を保持したまま、共に印刷系タスク部81〜89よりも高い優先順位に設定される。換言すれば、電源オフ時には、書戻しタスク部92は、書込みタスク部91との優先順位の関係を保持したまま、印刷系タスク部81〜89よりも低い優先順位から、印刷系タスク部81〜89よりも高い優先順位へ変更される。
図3に戻って、各タスク部82〜92の機能について説明する。
通信部82は、シリアル通信ポートU2を制御する通信ドライバーソフトウェアを含み、シリアル通信ポートU2を介してホスト装置120との間で行われるシリアル通信を制御する。通信部82が受信した印刷データPDは、画像バッファー59Aに格納される。この画像バッファー59AはRAM59の少なくとも一部の記憶領域により構成される。画像バッファー59Aは、詳しくは、受信バッファーと中間バッファー(プレーンバッファ)と印刷バッファー(イメージバッファー)とを含み、印刷データPDはまず受信バッファーに格納される。
画像処理部83は、画像バッファー59Aから印刷データPDを読み出し、印刷データPDをまず解凍する。ここで、印刷データPDは印刷画像データと印刷言語記述コマンドとを含み、画像処理部83は、解凍後の印刷画像データを画像バッファー59A(詳しくはプレーンバッファー)に一時格納するとともに、印刷言語記述コマンドをコマンド解析部84に送る。
コマンド解析部84は、解凍後の印刷データPD中の印刷言語記述コマンドを解析して制御用のコマンドを取得し、その取得したコマンドを印刷タスク部85へ送る。
画像処理部83は、印刷データPDの解凍後の処理として、画像バッファー59Aから読み出した印刷画像データ(プレーンデータ)にマイクロウィーブ処理(ノズル割付処理)などの画像処理を順次施し、記録ヘッド29の制御に用いられるヘッド制御データを生成して画像バッファー59A(詳しくはイメージバッファー)に格納する。なお、マイクロウィーブ処理とは、記録ヘッド29のノズル形成面において副走査方向に隣接するノズルにより記録される主走査ライン(ドットライン)が隣接しないように印刷画像データ(プレーンデータ)の各ドットを各ノズルに割り付ける特定の割付処理を指す。なお、本実施形態では、縦横変換処理などの一部の画像処理は、ASIC52内の縦横変換回路などの画像処理用回路(図示省略)により行われる。この縦横変換処理の際には、ASIC52はRAM59との間でメモリーコントローラー57(図4参照)を介してデータ転送を行う。このメモリーコントローラー57に対する転送開始指示や転送条件設定処理は、CPU51が行う。このため、本実施形態では、CPU51がデータ転送処理及び転送条件設定処理などを行うソフトウェア部分によって、主制御部81の一部が構成されている。この点において、主制御部81は、記録ヘッド29の記録動作に用いられる噴射系データ生成のための画像処理を含む記録系処理を行う記録系タスク部81〜83,88に属する。本実施形態では、記録系タスク部81〜83,88により、記録系処理手段の一例が構成される。
ヘッド制御部88は、画像バッファー59Aからヘッド制御データを読み出し、このヘッド制御データを記録ヘッド29毎に分割して各HCU45へ割り振りつつ転送する。さらに、HCU45は受け付けたヘッド制御データを、対応する各記録ヘッド29へ逐次送信する。記録ヘッド29内の不図示のヘッド駆動回路は、ヘッド制御データに基づきノズル毎の噴射駆動素子を駆動制御することで、ノズルからインク滴を噴射させる。このとき、ヘッド駆動回路は、リニアエンコーダー50のエンコーダーパルス信号を基に生成された噴射タイミング信号を入力し、この噴射タイミング信号に基づく噴射タイミング毎に噴射駆動素子を駆動させることにより、シート13上に主走査方向Xに所定の印刷解像度でインク滴によるドットを形成する。
図3に示す印刷タスク部85は、コマンド解析部84から受け付けたコマンドを、メカコントローラー43へ指示できる形態のコマンドに処理するコマンド処理を行い、処理後のコマンドをメカ制御部86へ送る。
メカ制御部86は、受け付けたコマンドを実行順に管理してジョブを制御するジョブ制御部93と、ジョブ制御部93から実行順に受け付けたコマンドの出力先及び出力タイミングを制御して、ヘッド駆動系・搬送系・キャリッジ駆動系等の各種デバイスを制御するデバイス制御部94とを備えている。ジョブ制御部93は、印刷ジョブで指示された印刷動作を行う過程でヘッド駆動系、搬送系、キャリッジ駆動系のシーケンス動作の完了通知コマンドをデバイス制御部94を介して受け付けるため、ヘッド駆動系、搬送系、キャリッジ駆動系の駆動タイミングの把握が可能である。このため、ジョブ制御部93は、印刷動作の切れ目となるタイミングを把握することが可能である。ここで、印刷動作の切れ目とは、1ページ分の印刷が終わった改ページのタイミング、あるいはキャリッジ27が主走査方向Xに一回移動して1行分の印刷(1パス)を終了したタイミングなどを指す。
デバイス制御部94は、メカ通信部87、ヘッド制御部88、インク管理部89及び緊急タスク部90などと接続され、これら各部宛毎のコマンドを出力したり、各部からの通知を受け付けたりして、これらのデバイスを制御等する一種のデバイスマネージャー機能を有している。デバイス制御部94は、例えばヘッド制御部88の処理の進捗を監視し、次パスの印刷に使用するヘッド制御データが準備できた段階で、メカシーケンス用のコマンドをメカ通信部87へ送る。また、デバイス制御部94は、メカコントローラー43から通知された装置状態情報(ステータス情報)に基づいて、メカニカル機構44における搬送系及びキャリッジ駆動系の状態を把握し、噴射開始に適切な状態になったタイミングでヘッド制御部88に噴射開始の旨を指示する。
シーケンス制御用のコマンドには、例えば搬送コマンド、吸着コマンド、第1キャリッジ起動コマンド(キャリッジ主走査方向移動コマンド)、第2キャリッジ起動コマンド(キャリッジ副走査方向移動コマンド)、吸着解除コマンドなどがある。デバイス制御部94は、これらのコマンドを、ヘッド制御部88の進捗に合わせた適宜なタイミング、あるいはメカコントローラー43側の進捗に合わせた適宜なタイミングで発行する。
メカ通信部87は、メカ制御部86からコマンドを受け付けると、そのコマンドをメカコントローラー43へ送信する。また、メカ通信部87は、メカコントローラー43からコマンド受信成功の応答(ACK信号)、コマンド受信失敗の応答であるリトライ要求(NACK信号)、メカコントローラー43が発行したコマンドや状態情報を受け付けると、上位のメカ制御部86へ送る。
図3に示すインク管理部89は、各インクカートリッジIC1〜IC8のインク関連情報を管理する。インク管理部89は演算部95を備えている。演算部95は、記録ヘッド29及びメンテナンス装置32で消費されたインク消費量及び各インクカートリッジIC1〜IC8のインク残量を演算する。詳しくは、演算部95は、各記録ヘッド29が消費した8色分のインク消費量を演算する。ここで、ヘッド制御部88は、ヘッド制御データに基づき記録ヘッド29のインク滴噴射回数に相当するドット数を色別に計数するドットカウンター(図示せず)を内蔵している。演算部95は、ヘッド制御部88から各記録ヘッド29の色別のドット数を取得し、その取得したドット数を色別に合計し、さらにその合計した色別のドット数を基に全記録ヘッド29が消費したインク色別のインク消費量を演算する。また、インク管理部89は、メンテナンス装置32が記録ヘッド29に施したクリーニングの種類(強度・時間等)に応じたインク消費量を取得する。
そして、インク管理部89は、1回の印刷が終わったとき、インクカートリッジ交換が行われたとき、クリーニング終了時、電源スイッチ65がオフ操作された際の電源遮断時などの所定時期に、全ての記録ヘッド29で消費された8色分のインク消費量を色別(インクカートリッジ別)に算出する。さらに演算部95は、この8色分の各インク消費量を、この8色の前回のインク残量からそれぞれ減算することで、現在の8色のインク残量を算出する。本実施形態では、インク管理部89は、インク残量情報とこれ以外のインクに係る情報などとを含むインク関連情報(データの一部)を取得する。
さらにインク管理部89は、インクカートリッジICの状態を監視し、インク関連のエラー検出も行う。インク管理部89は、例えば演算部95が算出したインク残量がインクエンド閾値未満になったか否かを判定し、インク残量がその閾値未満である場合にインクエンドと判定する。例えばインクエンドになってから、一定の許容印刷時間又は一定の許容インク量が消費されるまでの期間を過ぎると、強制的に印刷動作を停止させるためのエラーが、メカ制御部86を介して緊急タスク部90に通知される。また、インクカートリッジICの外れや、色違いのインクカートリッジICの装着を検出したときにも、メカ制御部86を介して緊急タスク部90にエラーが通知される。このエラー通知には、エラー内容を把握できる識別子(例えばエラーコマンド番号)やパラメーター値が付与される。このようにインク管理部89は、インク関連のエラー検出情報もインク関連情報の一部として取得する。
緊急タスク部90は、インク管理部89からエラー通知を受け付けると、その識別子やパラメーター値を基にそのエラーの内容を判断し、その判断したエラー内容に応じた種類のエラーコマンドを発行する。エラーコマンドはメカ制御部86を介して適切な送信先へ送られる。例えばインクエンド通知用のエラーコマンドは、メカコントローラー43及びホスト制御部125に送られ、メカニカル機構44の動作の非常停止や、ホスト装置120のモニター123へのインクエンドの旨を報知する表示が行われる。また、緊急タスク部90は、電源オフ機能及び電源遮断検出機能を備えている。緊急タスク部90は、電源スイッチ65がオフ操作された際のオフ信号を入力すると、電源オフ機能により、前述の優先順位変更要求をリアルタイムOS71へ出力し、その後、データバックアップ処理終了の旨の書戻し完了通知を受け付けると、プリンター11の終了処理を行い、終了処理の後に電源を遮断させる。また、緊急タスク部90は、電源遮断検出機能により、電源プラグ抜けや電源故障などの不意な電源遮断を検出したときにも、同様の優先順位変更要求をリアルタイムOS71へ出力する。なお、電源オフ時の書戻し完了通知は、書込みタスク部91と書戻しタスク部92によるデータバックアップ処理完了の旨を通知するものである。
書込みタスク部91は、電源スイッチ65がオン操作された際のプリンター11の起動時に、CPU51とバス56を介して接続された不揮発性メモリー55からデータD(印刷関連情報を含む)を読み込み、その読み込んだデータDをRAM54に書き込む書込み処理を行う。なお、データDには、印刷関連情報以外に、主制御部81が印刷タスク部85に指示し、印刷タスク部85が記録ヘッド29及びメカニカル機構44を駆動させる調整処理を行わせた際に、調整処理の結果として取得された調整値データ(補正値データ)などが含まれる。調整処理としては、キャリッジ27の往動時と復動時における記録ヘッド29の噴射タイミングを、プリンター11の個体差や、シート13の厚み(媒体厚)に応じて調整する噴射タイミング調整処理などを挙げることができる。この噴射タイミング調整処理では、例えばテストパターンを印刷し、そのテストパターンの中からユーザーが最適と判断した番号又は数値を入力する方法、テストパターンをスキャナーに読み取らせて取得した画像データを画像解析してその画像解析結果から最適な調整値をプリンター11が求める方法などが挙げられる。この場合、主制御部81は、第1記憶部131のデータD中の噴射タイミング用の調整値(補正値)を更新する。この種の調整値(補正値)は、ユーザーが調整処理の実施を選択したときに限り更新されるものであり、通常、過去に一度設定されればその後ほとんど更新されることのない固定値に近い情報である。よって、この種の調整値は、プリンター11の電源オン時に一度読み出されて設定されれば、その後、ほとんど読み出しも書き替えも行われることがない。本実施形態では、印刷関連情報には、インク残量、インク消費量及びインクカートリッジ使用期限残り時間などのインク関連情報と、印刷ページ数、課金情報、メンテナンス情報(メンテナンス項目毎の実施回数)、印刷実施時刻情報などが含まれている。
また、書戻しタスク部92は、RAM54に記憶されているデータDを読み出し、その読み出したデータDを不揮発性メモリー55に書き戻す書戻し処理を行う。
図3に示すように、RAM54は、プログラムデータ記憶部130と、第1記憶部131(ミラー記憶領域部)と、第2記憶部132(コピー記憶領域部)とを有する。プログラムデータ記憶部130は、ROM53(又は不揮発性メモリー55)から読み出されたプログラムデータや各種の設定値の書込み先となる記憶領域である。
第1記憶部131(ミラー記憶領域部)は、不揮発性メモリー55から読み出されたデータDの書込み先となる記憶領域である。第1記憶部131は、印刷系タスク部81〜89、緊急タスク部90がアクセスしてデータの読出し及び書込みが可能な記憶領域である。電源オン時に不揮発性メモリー55から第1記憶部131に書き込まれたデータDは、プリンター11の稼働中(電源オン中)において各タスク部81〜90からの書込みアクセスにより逐次更新される。例えばインク管理部89が第1記憶部131に書込みアクセスし、インク残量やインクカートリッジ使用期限残り時間などの印刷関連情報を、第1記憶部131に書き込むことにより、データDのうちインク残量情報などの一部の情報が更新される。もちろん、他の印刷系タスク部の書込みアクセスによっても、第1記憶部131のデータDは更新される。なお、各タスク部毎のデータ更新内容の詳細については後述する。
第2記憶部132(コピー記憶領域部)は、第1記憶部131から読み出されたデータDのコピー先となる記憶領域である。この第2記憶部132は、書込みタスク部91による書込みアクセスと書戻しタスク部92による読み出しアクセスは許可されているものの、各タスク部81〜90の第2記憶部132への書込みアクセスが禁止されている。但し、各タスク部81〜90の第2記憶部132への読出しアクセスは許可しても構わない。
書戻しタスク部92は、各タスク部81〜92の中で一番優先順位が低いので(図5(a)参照)、印刷動作やメンテナンス動作などが行われていないプリンター11の待機中に起動されることになる。そして、プリンター11が待機状態にあるときに起動された書戻しタスク部92は、第2記憶部132に記憶されたデータDを不揮発性メモリー55へ書き戻す処理(書戻し処理)を行う。書戻しタスク部92は、書戻し処理を完了すると、書込みタスク部91に対して書戻し完了通知を行うようになっている。
書込みタスク部91は、書戻しタスク部92から書戻し完了通知を受け付けると、リアルタイムOS71に起動要求を出す。書込みタスク部91は、緊急タスク部90以外の各タスク部81〜89,91,92の中で一番優先順位が高いので、書戻しタスク部92による書戻し処理の完了後直ぐに起動される。書込みタスク部91は、書戻し完了通知を受け付けて起動されたときは、第1記憶部131のデータD(更新データ)を第2記憶部132に上書きすることでコピーする。もちろん、前回コピー時と今回コピー時との間に、第1記憶部131のデータDの更新が行われていないときなどは、コピーしても第2記憶部132のデータDが変らない場合もある。
また、電源オフ操作時、電源プラグ抜けや電源故障などの電源オフ時(電源遮断時)は、緊急タスク部90が起動され、この緊急タスク部90が優先順位変更部73に優先順位変更処理を要求する。優先順位変更部73は、優先順位管理テーブル97を、図5(b)に示す優先順、すなわち、書戻しタスク部92を印刷系タスク部81〜89の優先順位より高い順位(本例では第3位の優先順位)に変更する優先順位変更処理を行う。このため、電源遮断時は、書戻しタスク部92が直ぐ起動され、そのときの第2記憶部132の最新のデータDが不揮発性メモリー55へ書戻しされるようになっている。なお、コピー処理中の電源遮断時は、より優先順位の高い書込みタスク部91が起動されて、その途中のコピー処理を終えてから、書戻しタスク部92が起動される。
ここで、不揮発性メモリー55をFeRAMとしている本例では、不揮発性メモリー55に保存できるデータ記憶容量が、例えばフラッシュメモリーに比べ比較的小さい。本実施形態では、これまで不揮発性メモリー(例えばフラッシュメモリー)に保存していたデータを、プリンター稼働中に全く更新されないか殆ど更新されないデータ(不変データ)と、印刷の実施や時間経過などに伴って更新されるデータ(可変データ)とに大きく分け、不変データのかなりの部分についてはホスト装置120のホスト記憶部120Mに保存することにしている。このため、不揮発性メモリー55に保存しておくべきデータDの容量が比較的小さくなり、不揮発性メモリー55としてFeRAMを使用することが可能になった。フラッシュメモリーは、書込み可能回数がFeRAMに比べ非常に少なく、書戻し処理を電源オフ時などに制限する必要があったが、本実施形態では、不揮発性メモリー55としてFeRAMを使用するため、電源オフ時以外のプリンター11の稼働中においても不揮発性メモリー55へのデータDの書戻しを行うことができる。なお、電源オフ時には、書戻しタスク部91は、RAM54の第2記憶部132から読み出した最新のデータDを記憶素子47にも書き戻すようになっている。
図6は、不揮発性メモリー55の構成と、書込み処理、コピー処理、書戻し処理とを説明するブロック図である。図6に示すように、本実施形態の不揮発性メモリー55には、更新フラグFと、第1領域140Aと、第2領域140Bとを備えている。第1領域140Aには、計数手段の一例としての第1カウンター141が設けられ、第2領域140Bには、計数手段の一例としての第2カウンター142が設けられている。また、第1領域140Aには、データDを記憶するための第1記憶領域143が設けられ、第2領域140Bには、データDを記憶するための第2記憶領域144が設けられている。各領域140A,140Bには、先頭側の領域にカウンター141,142が配置され、カウンター141,142よりも後側の領域に各記憶領域143,144が配置されている。
本実施形態では、書戻しタスク部92による第2記憶部132のデータDの書戻しは、第1記憶領域143と第2記憶領域144との間で交互に切り換えられるようになっている。更新フラグFには、2つの記憶領域143,144のうち書戻し先の記憶領域を選択するために設けられている。更新フラグFが「0」であれば、第1記憶領域143が書戻し先として選択され、更新フラグFが「1」であれば、第2記憶領域144が書戻し先として選択される。この更新フラグFは、データDの書戻し処理が完了する度にそのフラグ値が切り換えられるようになっている。なお、本実施形態では、第1記憶領域143と第2記憶領域144とにより、不揮発性メモリーに設けられた複数の記憶部の一例が構成されている。すなわち、本実施形態では、複数の記憶部が2つの例となる。
電源オン時には、ROM53のプログラムデータ等がRAM54のプログラムデータ記憶部130に書き込まれ、CPU51がそのうちブートプログラムを実行することによりリアルタイムOS71が起動される。このリアルタイムOS71が起動された最初に、書込みタスク部91が起動される。図6に示すように、電源オン時に書込みタスク部91により不揮発性メモリー55の記憶領域143又は144からRAM54の第1記憶部131へのデータDの書込み処理が行われる(図6中の(1))(書込み段階)。すなわち、書込みタスク部91は、電源オン時に、前回の電源オフ時(電源遮断時)に不揮発性メモリー55に保存されたデータDを、その不揮発性メモリー55から読み出し、その読み出したデータDをRAM54の第1記憶部131に書き込む。
書込みタスク部91は、この電源オン時の書込み処理のときに限り、書込み処理に続けてコピー処理も行い、第1記憶部131のデータDを第2記憶部132にコピーする(図6中の(2))(コピー段階)。
その後、プリンター11が待機状態になると、各タスク部81〜92の中で一番優先順位の低い書戻しタスク部92が起動される。そして、書戻しタスク部92は、第2記憶部132のデータDを不揮発性メモリー55に書き戻す(図6中の(3))(書戻し段階)。このとき、書戻しタスク部92は、更新フラグFのフラグ値を基に、第1記憶領域143と第2記憶領域144のうち書戻し先とすべき一つの記憶領域を選択し、その選択した記憶領域へ第2記憶部132のデータDを書き戻す。この書戻し処理の開始に先立ち、2つのカウンター141,142のうち書戻し先の記憶領域に対応する一つのカウンターの計数値CTが書戻し開始値Aに変更される。書戻しタスク部92は、データDの書戻し中は、Kバイトのデータを書き戻す度に、書戻し先の記憶領域に対応するカウンターの計数処理を行う。本実施形態では、書戻しタスク部92は、Kバイトのデータを書き戻す度にカウンターをインクリメントする。
書戻しタスク部92が、データDを全て書戻し、1回の書戻し処理を完了すると、書戻し完了通知を書込みタスク部91へ送る。この書戻し完了通知の送信時は、書戻し先の記憶領域に対応するカウンターの計数値CTが書戻し完了値B(例えば最大値)となっている。書込みタスク部91は、書戻し完了通知を受け付けると起動し、第1記憶部131から第2記憶部132へデータDをコピーするコピー処理を行う(図6中の(2))。書込みタスク部91は、印刷系タスク部より優先順位の高いタスクであるため書戻し完了通知を受け付ければ、エラー発生時や電源遮断時などの緊急時を除く大抵の場合に、直ぐ起動される。こうして書戻し完了の度に書戻しタスク部91から送られてくる書戻し完了通知を受け付ける度に書込みタスク部91は起動し、前回コピー時と今回コピー時の間の期間に更新された第1記憶部131のデータDを、第2記憶部132へコピーする(図6中の(2))。そして、プリンター11が待機状態になる度に、書戻しタスク部92が起動し、そのコピーされた第2記憶部132のデータDを不揮発性メモリー55に書戻す(図6中の(3))。
図7は、不揮発性メモリー55における第1領域140A及び第2領域140Bの構成を示す。但し、第1領域140A及び2領域140Bは同じ構成であるので、図7では一方の第1領域140Aの構成を示している。図7に示すように、第1領域140A(又は第2領域140B)は、カウンター141(142)として使用されるカウンター領域141A(142A)と、データD(バックアップデータ)を記憶させるためのデータ記憶領域である第1記憶領域143(又は第2記憶領域144)とを備えている。カウンター領域141A(142A)は、印刷系タスク部81〜89及び緊急タスク部90による書込み禁止領域となっているが、書込みタスク部91及び書戻しタスク部92による書込みアクセスは許可されている。そのため、書込みタスク部91及び書戻しタスク部92によるカウンター141(142)の計数値を変更する処理(リセット、セット、計数処理など)が可能になっている。
カウンター領域141A(142A)には、一例として1バイト確保されており、8ビットのカウンター141(142)が構成されている。本実施形態では、データDのデータサイズ(つまりデータDの記憶領域容量)を255分割した値であるKバイト(K=データDのデータ容量/255)を、カウンター141(142)を「1」だけ計数する計数処理の単位としている。本例では、書戻し開始値Aを最小値「00000000」(2進数)としており、書込みタスク部91によるコピー処理完了後に開始したデータDの書戻しを全て完了すると、カウンター141(142)の計数値が最大値「11111111」(2進数)になるようになっている。このように本実施形態では、カウンター141(142)のビット数をGとすると、書戻しすべきデータDの容量DB(バイト)を、「2のG乗−1」で除した値K(バイト)を、カウンター141(142)の計数処理を行う単位としている。なお、容量DBはKの倍数になるように設定している。
以下、プリンター11において不揮発性メモリー55とRAM54との間におけるデータDの書込み、コピー、書戻しによって行われるデータ記憶処理を、図5〜図11等を参照しつつ説明する。図8及び図9は、書込みタスク部91、書戻しタスク部92及び印刷系タスク部81〜89の処理の流れを示すシーケンス図である。ここで、図8は通常時のデータ記憶処理の流れを示すシーケンス図、図9は電源遮断時のデータ記憶処理の流れを示すシーケンス図である。まず電源オンから電源オフ前までの通常時のデータ記憶処理について図5(a)、図6〜図8及び図10等を用いて説明する。
図8に示すように、電源オン時には、ROM53のプログラムデータ等がRAM54のプログラムデータ記憶部130に書き込まれ、CPU51がそのうちブートプログラム等を実行することによりリアルタイムOS71が起動される。このとき、リアルタイムOS71は、図5(a)に示す優先順位管理テーブル97を設定する。通常時に、タスク管理部74が参照する優先順位管理テーブル97は、書込みタスクが印刷系タスクよりも高い優先順位であり、かつ書戻しタスクが印刷系タスクよりも低い優先順位に設定されている。このリアルタイムOS71の起動後、最初に書込みタスク部91が起動され、書込みタスク部91は、不揮発性メモリー55の2つの記憶領域143,144のうち直近に更新された一方の記憶領域のデータDを、RAM54の第1記憶部131に書き込む書込み処理を行う(図6、図8中の(1))(書込み段階)。
書込みタスク部91は、この電源オン時に限り、書込み処理に続けてコピー処理も行う(図6中の(2)、図8中の最初の(2))(コピー段階)。すなわち、書込みタスク部91は、第1記憶部131のデータDを第2記憶部132にコピーする。この電源オン時には、プリンター11はメカニカル機構44の初期化処理を行う。この初期化処理の前又は後にプリンター11が待機状態になると、各タスク部81〜92の中で一番優先順位の低い書戻しタスク部92が起動される。そして、書戻しタスク部92は、第2記憶部132のデータDを不揮発性メモリー55に書き戻す(図6、図8中の(3))(書戻し段階)。書戻しタスク部92は、データDを全て書戻すと、書戻し完了通知を書込みタスク部91へ送る。書込みタスク部91は、書戻し完了通知を受け付けると起動し、第1記憶部131のデータDを第2記憶部132へコピーするコピー処理を行う(図6中の(2)、図8中の2回目以降の(2))。
こうしてプリンター11が待機状態にある間は、書込みタスク部91による第1記憶部131のデータDの第2記憶部132へのコピー(図8中の(2))と、書戻しタスク部92による第2記憶部132のデータDの不揮発性メモリー55への書戻し(図8中の(3))とが繰り返し行われる。
例えばプリンター11の電源オン後、ユーザーが画像生成装置110で印刷実行の指示操作を行うと、ホスト装置120からプリンター11へ印刷データPDが送られてくる。プリンター11へ送られてきた印刷データPDは、コントローラー40内のリアルタイムOS71によって起動された通信部82が受信する。以下、リアルタイムOS71は、印刷系タスク部81〜89のうち、記録処理系のデータの流れ、コマンド処理系のコマンドの流れに従って起動させるべき一つのタスク部を選択的に切り替えることにより、印刷系タスク部81〜89に、記録系処理及びコマンド処理(搬送系・キャリッジ駆動系処理)を含む印刷系処理をマルチタスク処理で実施させる。
記録系処理では、通信部82が受信した印刷データPDの画像処理部83による解凍処理、印刷画像データ(プレーンデータ)からヘッド制御データを生成する画像処理、ヘッド制御データをヘッド制御部88がHCU45を介して記録ヘッド29へ転送する転送処理などが行われる。搬送系・CR駆動系のコマンド処理では、コマンド解析部84による印刷言語記述コマンドの解析(コマンド解析)、印刷タスク部85によるコマンド処理、メカ制御部86によるコマンドのキュー管理及びメカシーケンスに従ったコマンドの出力タイミング制御、メカ通信部87によるコマンドのメカコントローラー43への送信が行われる。このように搬送系及びキャリッジ駆動系のコマンドに従ったメカニカル機構44のメカシーケンス制御と、記録ヘッド29のインク噴射制御とが、適切なタイミングで行われることで、プリンター11は印刷データPDに基づく画像をシート13に印刷する印刷動作を行う。
この印刷動作では、キャリッジ起動コマンドに基づき第1CRモーター62が駆動されてキャリッジ27が主走査方向Xへ移動し、その移動途中で記録ヘッド29内のヘッド駆動回路がヘッド制御データに基づいて噴射駆動素子を駆動してノズルからインク滴を噴射させることにより1パス分の印刷が行われる。そして、キャリッジ27が1パス分の移動を終える度に第2CRモーター63が駆動されてキャリッジ27が副走査方向に移動し、これを複数パス繰り返すことで1頁分の印刷が行われる。1頁分の印刷を終えると、メカコントローラー43はコントローラー40からの吸着解除コマンドに基づいて吸引装置30の吸引を開放した後、搬送コマンドに基づいて搬送モーター61を駆動してシート13を所定の搬送ピッチだけ搬送させる。また、印刷中の所定時期には、キャリッジ27をフラッシング位置に移動させ、記録ヘッド29のノズルからキャップ33(廃液受容器)に向けて、印刷とは関係のないインク滴を噴射することで、ノズルの目詰まりを予防又は解消するフラッシング(空吐出)が行われる。また、前回のクリーニング実施時期からの経過時間が一定時間を経過したとき、又は電源オン時にその経過時間が一定時間を超えていたときには、メンテナンス装置32を駆動して、記録ヘッド29のノズルからインクを強制的に排出させるクリーニングが行われる。このクリーニングは、昇降装置34の駆動によってキャップ33を記録ヘッド29のノズル形成面に当接させたキャッピング状態下で、不図示の吸引ポンプを駆動させてキャップ33内に負圧を導入することにより行われる。なお、フラッシング動作やクリーニング動作も、その一部は、印刷系タスク部81〜89の一部が起動されることにより行われる。
インク管理部89は、印刷動作、フラッシング動作、クリーニング動作などのインクの消費を伴う所定動作が行われるときには、例えばその動作の途中(例えば動作の切れ目)又は動作の直後など予め決められた所定時期に、演算部95にインク消費量及びインク残量の演算を行わせる。例えばインク残量は、今回算出したインク消費量を前回のインク残量から減算して求められる。インク管理部89は、RAM54の第1記憶部131のデータDのうち前回のインク消費量及びインク残量等のデータを、今回のインク消費量及びインク残量等のデータに書き替える。
また、インク管理部89は、電源オン時やインクカートリッジ交換時などの所定時期に、記憶素子47にアクセスし、インクカートリッジICの装着状態(装着外れ、装着間違い(色間違い)の有無など)、使用期限、インクエンド(インク切れ)などを検出する。例えば記憶素子47にアクセスできなければ装着外れであると検出される。また、記憶素子47には、インク色、使用期限、インク残量等のインクに関する各種情報が記憶されている。インク管理部89は、記憶素子47から読み出したインク色とそのときアクセスした装着位置に装着されるべきインクカートリッジのインク色とが対応していなければ、装着間違い(色間違い)であると検出する。また、インク管理部89は、記憶素子47から読み出した使用日限情報とリアルタイムクロック(図示せず)の時刻情報とを基にインクカートリッジ使用期限残り時間を演算する。インク管理部89は、このインクカートリッジ使用期限残り時間が「0」未満の値であると、使用日限エラーであると検出する。さらにインク管理部89は、記憶素子47から読み出したインク残量が、予め決められたインクエンド情報の値以下になっていると、インク切れ(インクエンド)であると検出する。なお、記憶素子47のインク残量は、初期には満充填(フル)のインク残量が設定され、少なくとも電源オフの度に第1記憶部131のインク残量等が書き込まれることで更新される。
インク管理部89は、インク関連情報(インク消費量、インク残量、インク切れ情報、使用期限残り時間、装着外れ、装着間違い、使用日限エラー情報など)を、RAM54の第1記憶部131の所定記憶領域にアクセスして更新する。
また、ジョブ制御部93は、ホスト装置120から指示された印刷ジョブに関するジョブ情報を取得する。ジョブ制御部93は、メカコントローラー43から取得した搬送系の稼働情報を基にジョブ毎の印刷長又は印刷枚数を求める。さらにジョブ制御部93は、その印刷長又は印刷枚数を基に課金情報を算出する。そして、ジョブ制御部93は、課金情報を含むこれらのジョブ情報を、第1記憶部131の所定記憶領域にアクセスして更新する。
また、メカコントローラー43には、搬送系のエンコーダー66の出力パルス数を計数してシート13の搬送量に相当する計数値を取得する不図示のカウンターが設けられ、印刷中におけるそのカウンターの計数値の変化量を基に、印刷されたシート13の長さである印刷長又は印刷枚数の情報が取得される。また、メカコントローラー43は、搬送系、キャリッジ駆動系及びクリーニング系などに関する種々のメカパラメーター情報を取得する。メカパラメーター情報には、例えば搬送状態(位置・速度等)、キャリッジ駆動状態(位置・速度等)、クリーニング状態などのステータス情報の他、搬送系、キャリッジ駆動系、クリーニング系の各種モーター等の駆動時間や駆動回転数などの稼働履歴情報が含まれる。この種のメカパラメーター情報はメカコントローラー43からコントローラー40へ定期的に送信される。このメカパラメーター情報はコントローラー40内のデバイス制御部94が受信する。また、デバイス制御部94は、リアルタイムクロックの時刻情報を基に、プリンター11の稼働時間を取得する。そして、デバイス制御部94は、メカコントローラー43から取得した情報にこの稼働時間等を加えたメカパラメーター情報を、RAM54の第1記憶部131にアクセスして書き替える。
ヘッド制御部88は、記録ヘッド29のインク滴噴射回数(ドット数)をインク色別に計数するドットカウンターを備え、その計数値からインク色毎のインク滴噴射回数(ドット数)を含むヘッド情報を取得する。そして、ヘッド制御部88は、取得したヘッド情報をRAM54の第1記憶部131にアクセスして更新する。
また、プリンター11は、種々の調整値(補正値)を取得するための調整機能を備える。例えば、ある調整機能はその測定部を動作させて実測値を計測し、初期設定値と実測値との差分を基に、初期設定値を調整(補正)するための調整値(補正値)を取得する。この種の調整値には、主走査方向Xにおけるフラッシング開始位置・終了位置、キャップ位置、印刷時の噴射開始位置を決める基準位置、搬送基準位置、シート温度に応じたシート13の伸びを考慮して搬送量を補正するための調整値(補正値)などがある。ここで、シート温度は、温度センサー67により検出され、メカコントローラー43からコントローラー40へ送信される。印刷タスク部85は、検出されたシート温度に応じた搬送調整値を演算する。
また、他の調整機能としては、テストパターンを印刷し、そのテストパターンの中から最適な印刷結果であるとユーザーが判断して入力した1つのテストパターンに対応する番号を基に、その番号に対応する噴射タイミング調整値を取得する機能がある。この種の調整値には、一方向印刷時における記録ヘッド29の主走査方向Xの噴射タイミングを調整するUni-d調整値、双方向印刷におけるキャリッジ27の往動時と復動時の噴射タイミングを調整するBi-d調整値がある。このUni-d調整値又はBi-d調整値を用いて、シート厚(例えば紙厚)に応じた噴射タイミングを演算できるようになっている。この種の調整情報は、ユーザーの操作によりプリンター11の調整機能が動作したとき、又はユーザーの操作で最適なテストパターンなど最適な指標に対応する番号等が入力されたときに更新される。この更新された調整情報は、印刷タスク部85がRAM54の第1記憶部131にアクセスすることで更新される。これらの調整情報データは、プリンター11の出荷検査段階、プリンター11をユーザーが初めて使用する際の最初の起動時、ユーザーが調整機構を動作させて行う調整作業時、故障修理のメンテナンス時などに設定され、一度設定されると、しばらくは更新されることのない種類のデータである。
このようにデータDには、プリンター11の稼働中に比較的頻繁に更新されるインク関連情報、ジョブ情報、メカパラメーター情報及びヘッド情報等を含む稼働情報データD1と、プリンター11の稼働中もほとんど更新されることのない(更新頻度の低い)調整情報を含む調整情報データD2(固定情報データ)とがある。本実施形態では、データDには、先頭側に稼働情報データD1が配置され、その後側に続けて調整情報データD2が配置されている。このため、書戻し処理では最初に稼働情報データD1が書戻しされ、これに続けて調整情報データD2が書戻しされることになる。但し、調整情報の中には、コントローラー40が定期的に調整機能を動作させて最適な調整情報を比較的頻繁に更新する種類のものもあり、この種の調整情報は、稼働情報データD1の領域に配置されている。
緊急タスク部90は、印刷動作上のエラーが発生すると、そのエラー内容の解析が可能な程度の情報を含むエラー情報を、RAM54の第1記憶部131に書き込む。本実施形態では、ホスト装置120はインターネットを介してユーザーサポート用のサーバー(図示せず)に接続されており、エラー情報はホスト装置120からサーバーに送信されるようになっている。このサーバーは、エラー情報を解析してエラーの原因をつきとめたり、プリンター11をエラーから回復させる方法を探し出したりする処理を行う。なお、本例では、エラー情報は、調整情報データD2に含まれる領域に配置される。
こうして印刷系タスク部81〜89が起動される印刷処理時には、適宜のタイミングで、第1記憶部131のデータDが更新される(データ更新段階)。更新された第1記憶部131のデータDは、起動された書込みタスク部91により第2記憶部132にコピーされる。なお、本実施形態では、インク関連情報、ジョブ情報、メカパラメーター情報、ヘッド情報、調整情報及びエラー情報が、プリンター11の動作によって更新される印刷関連情報に相当する。また、データDの中には、プリンター11の動作によって更新される訳ではないが、不揮発性メモリー55(第1の記憶手段)に書き込まれる情報も存在する。
本実施形態では、ホスト装置120のホスト制御部125は、定期的又は不定期にコントローラー40へデータDの送信を要求する。コントローラー40はその要求に応答する形で、印刷動作やクリーニング動作等が行われていない空いた時期や電源オフ時の終了処理の際に、RAM54の第1記憶部131又は第2記憶部132のデータDをホスト制御部125へ送信する。ホスト制御部125は、受信したデータDをホスト記憶部120Mに保存する。よって、ホスト装置120のホスト記憶部120Mにも、書戻し頻度に比べ低い頻度ではあるものの定期又は不定期に更新されたデータDが保存される。また、データDの一部又は全部がホスト装置120からインターネットを経由してプリンターメーカーのサーバーに送られ、プリンター11の稼働状況の解析などに用いられるようになっている。
印刷処理や印刷動作が行われているときは、優先順位の一番低い書戻しタスク部92が起動されることはない。このため、書込みタスク部91が書戻し完了通知を受け付けることがないので、印刷処理中や印刷動作中は書込みタスク部91によるデータDのコピー処理は基本的に行われない。
印刷動作もクリーニング動作も行われていない待機状態になると、書戻しタスク部92が起動される。そして、書戻しタスク部92は、第2記憶部132のデータDを不揮発性メモリー55へ書き戻す(図8中の(3))。このときのデータDは、最後に書き戻しタスク部92がコピーしたものなので、印刷動作前の旧いデータである。しかし、書込みタスク部91から書戻し完了通知を受け付けると、書込みタスク部91は、第1記憶部131の最新のデータDを第2記憶部132へコピーする(図8中の(2))。このコピー処理後、再び起動された書戻しタスク部92が第2記憶部132の最新のデータDを不揮発性メモリー55へ書き戻す。こうしてプリンター11が待機状態になる度に、更新されたデータDの書戻しが行われる。
ここで、書込みタスク部91は、印刷系タスク部81〜89よりも優先順位が高いので、コピー処理の途中に印刷系タスク部81〜89の割込みが入りコピー元データが書き替えられる事態は発生しない。また、第2記憶部132が、印刷系タスク部81〜89及び緊急タスク部90による書込みアクセスが禁止されているので、書戻しタスク部92による書戻し途中で書戻し元データが印刷系タスク部81〜89により書き替えられる事態が回避される。さらに、書込みタスク部91の起動条件は書戻しタスク部92がデータDを書戻し終わったときの書戻し完了通知を受け付けたときであるので、書戻しタスク部92による書戻し途中で、コピー処理が割り込んで書戻し元データを書き替えてしまう事態を回避できる。この結果、書戻しタスク部92により、RAM54から不揮発性メモリー55へ正しいデータDを書き戻すことができる。なお、印刷系タスク部が印刷のための処理を行って、印刷関連情報を取得する段階が、印刷制御段階に相当する。
次に書戻し処理について詳細に説明する。本実施形態では、書戻しタスク部92は、第2記憶部132のデータDの書戻し先を、不揮発性メモリー55の第1記憶領域143と第2記憶領域144との間で交互に切換える。すなわち、書戻しタスク部92は、更新フラグFが「0」のときは、第1記憶領域143へのデータDの書戻しを行い、この書戻しを完了すると、更新フラグFを「0」から「1」へ切り換える。また、書戻しタスク部92は、更新フラグFが「1」のときは、第2記憶領域144へのデータDの書戻しを行い、この書戻しを完了すると、更新フラグFを「1」から「0」へ切り換える。このように第2記憶部132のデータは、第1記憶領域143と第2記憶領域144に交互に書き戻しされる。
また、データDの書戻し処理の過程では、二つのカウンター141,142のうち書戻し先の記憶領域と対応するカウンターの計数処理が行われる。この計数処理が行われる結果、そのカウンターの計数値CTは書戻しされたデータ量に応じた値をとることになる。
以下、書戻しタスク部92が起動して行われる書戻し処理を、図10に示すフローチャートに従って説明する。図10は、書戻しタスクの内容をフローチャートで示す書戻し処理ルーチンである。コピー処理後、プリンター11が待機状態のときに、書戻しタスク部92は起動する。まず図10におけるステップS10において、更新フラグF=0であるか否かを判定する。更新フラグF=0であればステップS20に進み、更新フラグF=0でなければ(つまりF=1であれば)ステップS30に進む。
ステップS20では第1記憶領域143を書戻し先に選択する。このとき、書戻し処理の開始に先立ち、書戻し先の第1記憶領域143に対応する第1カウンター141の計数値CTを書戻し開始値Aに変更する。
一方 ステップS30では第2記憶領域144を書戻し先に選択する。このとき、書戻し処理の開始に先立ち、書戻し先の第2記憶領域144に対応する第2カウンター142の計数値CTを書戻し開始値Aに変更する。
ステップS40では、第2記憶部132のデータDのうちJバイト分のデータを不揮発性メモリー55の書戻し先として選択した記憶領域に書き戻す。すなわち、更新フラグF=0であって、書戻し先として第1記憶領域143を選択した場合(S20)は、この第1記憶領域143にデータDを書戻し、一方、更新フラグF=1であって、書戻し先として第2記憶領域144を選択した場合(S30)は、この第2記憶領域144にデータDを書戻す。また、新たに第2記憶部132にコピーされたデータDを書き戻す場合は、データDの最初からJバイトずつ順番に書戻しを行う。また、前回書戻しを中断した続きから同一のデータDを書き戻す場合は、そのときの計数値CTに対応する箇所からJバイトずつ順番に書戻しを行う。ここで、Jバイトは書戻しの最小単位であり、本例では、カウンター141,142の計数処理を行う単位であるKバイトの自然数n分の1の値(J=K/n)である。なお、書戻し処理開始前に行うカウンターの書戻し開始値Aへの変更(例えばリセット)は、コピー処理完了時に書込みタスク部91が行ってもよい。
次のステップS50では、Kバイト分を書き戻したか否かを判断する。Kバイト分を書き戻していなければ次のJバイト分のデータを不揮発性メモリー55に書き戻す(S40)。そして、Jバイト分ずつの書戻しをn回繰り返してK(=J×n)バイト分を書き戻すと(ステップS50で肯定判定)、ステップS60に進む。
ステップS60では、カウンターの計数処理を行う。すなわち、カウンター141,142のうち書戻し先の記憶領域に対応するカウンターの計数処理を行う。本例では、計数処理として、カウンターの計数値CTを「1」だけインクリメントする。
そして、ステップS70において、カウンター141,142の計数値CTが書戻し完了値Bに達したか否かを判断する。書戻し完了値Bに達していなければステップS40に戻り、以下同様に、S40〜S70の各処理を、計数値CTが書戻し完了値Bに達するまで(S70で肯定判定)繰り返す。この結果、Kバイト分の書戻しを完了する度に、カウンターが計数処理でインクリメントされる。そして、データDを全て不揮発性メモリー55に書戻し終えると、カウンターの計数値CTが書戻し完了値Bに達する(S70で肯定判定)ので、ステップS80に進む。
ステップS80では、更新フラグFの切り換えを行う。そして、書戻し完了通知を書込みタスク部91へ送信後、当該ルーチンを終了する。つまり、書戻しタスク部92は休止する。なお、電源遮断時(電源オフ時)の処理として行った書戻し処理を終えた際は、書戻し完了通知は緊急タスク部90へ送信される。また、書戻し処理中に、書戻しタスク部92より優先順位の高い他のタスク部の割り込みがあれば、カウンターの計数値CTが書戻し完了値Bに達していなくても、その時点で書戻しタスク部92はレディ状態に移行し、書戻し処理が中断される。
こうしてプリンター11の稼働中は印刷系タスク部81〜89や緊急タスク部90によりRAM54の第1記憶部131のデータDが更新される。そして、その更新されたデータDは第1記憶部131から第2記憶部132へコピーされ、その後、待機状態のときなどの所定時期に不揮発性メモリー55に書き戻される。この不揮発性メモリー55への書戻しは、第1記憶領域143と第2記憶領域144との間で交互に切り換えられる。すなわち、書戻しタスク部92は、更新フラグFが「0」のときは、第1記憶領域143へのデータDの書戻しを行い、この書戻しを完了すると、更新フラグFを「0」から「1」へ切り換える。また、書戻しタスク部92は、更新フラグFが「1」のときは、第2記憶領域144へのデータDの書戻しを行い、この書戻しを完了すると、更新フラグFを「1」から「0」へ切り換える。さらに第1記憶領域143へのデータDの書戻しを終えると、第1記憶領域143に対応する第1カウンター141の計数値CTが書戻し完了値Bとなる。次に第2記憶領域144へのデータDの書戻しを開始すると、その書戻し中はその書戻し先の第2記憶領域144と対応する第2カウンター142の計数値CTが書戻したデータ量に応じた値となる。そして、第2記憶領域144への書戻しを終えると、第2記憶領域144に対応する第2カウンター142の計数値CTが書戻し完了値Bとなる。次に第1記憶領域143へのデータDの書戻しを開始すると、その書戻し中はその書戻し先の第1記憶領域143と対応する第1カウンター141の計数値CTが書戻したデータ量に応じた値となる。そして、第1記憶領域143への書戻しを終えると、第1記憶領域143に対応する第1カウンター141の計数値CTが書戻し完了値Bとなる。
このため、第1記憶領域143と第2記憶領域144の両方が共にデータDの書戻しが終わっているときは、それぞれに対応するカウンター141,142の各計数値CTが共に書戻し完了値Bとなっている。また、第1記憶領域143と第2記憶領域144のうち一方のみデータDの書戻しが終わっていて他方が書戻し途中のときには、カウンター141,142のうちその一方と対応するカウンターの計数値CTが書戻し完了値Bとなっており、他方と対応するカウンターの計数値CTが書戻し完了値B以外の例えば中間値となっている。
次に電源遮断(電源オフ)時におけるデータ記憶処理について、図5及び図9等を参照しつつ説明する。なお、電源遮断(電源オフ)には、ユーザーが電源スイッチ65をオフ操作したときの正常電源遮断(正常電源オフ)と、電源プラグ抜けや電源故障などの不意な電源遮断及びシステムダウン時の電源遮断などの異常電源遮断(異常電源オフ)とがある。電源遮断時のデータ記憶処理において、正常電源オフと異常電源オフとの違いは、図9に示す終了処理(図9中の(15))の有無である。図9の例は、正常電源オフ時におけるデータ記憶処理を示すが、図9において終了処理を廃止したものが異常電源オフ時におけるデータ記憶処理になる。なお、本実施形態では、プリンター11は二次電池を備えており、電源プラグ抜けや電源故障などの不意な電源遮断(異常電源オフ)発生時でも、二次電池が放電されるまでの例えば10〜500ミリ秒の範囲内の所定時間の間は二次電池から電力が供給されるようになっている。
ユーザーが電源スイッチ65を操作した際の正常電源オフ(正常電源遮断)は、オフ信号がコントローラー40内に入力されることにより検出される。一方、電源プラグ抜けや電源故障などが原因で発生した異常電源オフ(異常電源遮断)は、コントローラー40内の緊急タスク部90の電源遮断検出機能により検出される。
図9に示すように、正常又は異常の電源オフ(電源遮断)が検出されると、緊急タスク部90が起動される。すなわち、リアルタイムOS71は、起動要求を受け付けているタスク部のうち一番優先順位の高い緊急タスク部90を起動させる。例えば印刷動作中に電源が遮断される場合もあり得るが、印刷系タスク部81〜89より優先順位が高い緊急タスク部90が起動される。起動された緊急タスク部90は、まずリアルタイムOS71に優先順位変更要求を行う(図9中の(11))。この優先順位変更要求はリアルタイムOS71内の優先順位変更部73が受け付け、優先順位変更部73は、タスク管理部74によって参照される優先順位管理テーブル97を、図5(a)に示す通常時のタスク優先順から図5(b)に示す電源オフ時のタスク優先順に変更するタスク優先順位変更処理を行う(図9中の(12))。優先順位変更部73は、例えば優先順位管理テーブル97のタスクの順番を並び替える処理を行う。もちろん、このタスク優先順位変更処理は、複数用意された優先順位管理テーブル97のうち参照すべきテーブルを図5(b)に示すものに切り替える処理としてもよい。
このタスク優先順位変更処理の結果、書込みタスク部91及び書戻しタスク部92の優先順位の関係を保持したまま、両タスク部91,92の優先順位が、印刷系タスク部81〜89よりも高くなる。つまり、書戻しタスク部92が、書込みタスク部91よりも低く、かつ印刷系タスク部81〜89よりも高い優先順位に変更される。
このため、電源遮断(電源オフ)時には、仮にそのとき印刷動作中であっても、書戻しタスク部92が起動される。また、プリンター11の待機中の電源遮断時は、書込みタスク部91又は書戻しタスク部92が起動されている。例えば印刷動作中の電源遮断時は、その印刷動作開始直前に書き戻されたデータDが不揮発性メモリー55に保存されている。また、印刷動作が行われていない待機中の電源遮断時は、それまでの待機中に最新のデータDが繰り返し書き戻され、不揮発性メモリー55には最新のデータDが保存されている。
図9の例のように、この電源オフ(電源遮断)の際に、仮に書込みタスク部91がコピー処理中であった場合は、より優先順位の高い書込みタスク部91のコピー処理を終えた後に、次に優先順位の高い書戻しタスク部92が起動される。そして、書戻しタスク部92は、そのコピーされたデータDの書戻し処理を行う(図9中の(13),(14)、図10のS10〜S80)。このような起動優先順位により、書込みタスク部91によるコピー途中の電源遮断時に書戻しタスク部92が割り込んで、コピー途中のデータDを書き戻す事態が回避される。このため、電源遮断時には、書込みタスク部91によるコピーが完了した正しい最新のデータDを不揮発性メモリー55に書き戻すことができる。
また、電源遮断時に書戻し中であった場合は、緊急タスク部90からCPU実行権が切り換わった際に書戻しタスク部92が再起動される。このとき、書戻しタスク部92は、計数値CTと対応する箇所からデータDの書戻し処理を行う(図10のS10〜S80)。
この電源遮断時に書戻し処理を正常に終えたときには、書戻し先の記憶領域に対応するカウンターの計数値CTは書戻し完了値Bとなっている(CT=B)。一方、書戻し処理を正常に終えられなかったときには、書戻し先の記憶領域に対応するカウンターの計数値CTが書戻し完了値B以外の値(CT≠B)となる。
正常電源オフ時は、書戻しタスク部92から書戻し完了通知を受け付けた緊急タスク部90が起動し、プリンター11の終了処理を行う。この終了処理は、電源オフ時にプリンター11を終了時にあるべき状態にする処理であり、電源遮断前の準備処理に相当する。終了処理ではデータの退避処理など所定の処理が行われる。もちろん、終了処理は、例えばキャリッジ27がホームポジションになければ、ホームポジションに移動させて記録ヘッド29をキャッピングするなど、各種の動作部を初期位置に戻すなどの終了動作を含んでもよい。緊急タスク部90は、終了処理を終わると、電源を遮断する。なお、正常電源オフ時は、電源遮断までの電力供給時間に余裕があるので、終了処理を先に行ってから、書戻しタスク部92による書戻し処理を行ってもよい。また、この電源オフ時は、インク関連情報もインクカートリッジICの記憶素子47にも書き込まれる。
例えば電源プラグ抜けや電源48の故障などによる不意な電源遮断、あるいはコントローラー40のシステムダウン(ハングアップ等)などが発生した際は、そのとき書戻し処理の途中であれば、その書戻し処理が途中のまま電源が遮断されることになる。このような場合、2つのカウンター141,142のうち一方の計数値CTが書戻し完了値Bをとり、他方の計数値CTが書戻し完了値B以外の値をとることになる。
この電源遮断(電源オフ)後、ユーザーが電源スイッチ65を操作してプリンター11の電源を投入した電源オン時には、書込みタスク部91が起動される。以下、図11のフローチャートに従って書込み処理を説明する。
まずステップS110では、全てのカウンター141,142の各計数値CTが書戻し完了値Bであるか否かを判断する。全ての計数値CTが書戻し完了値BであればステップS120に進み、全ての計数値CTが書戻し完了値BでなければステップS130に進む。
ステップS120では、更新フラグF=1であるか否かを判定する。更新フラグF=1であればステップS130に進み、更新フラグF=1でなければ(つまりF=0であれば)ステップS140に進む。
ステップS130では、不揮発性メモリー55のうち第1記憶領域143のデータDをRAM54の第1記憶部131に書き込む(書込み処理)。更新フラグF=1のときは、前回の電源遮断前に最後に行われた書戻し処理の書戻し先が第1記憶領域143であるので、この第1記憶領域143からデータDを書き込むことにより、不揮発性メモリー55から最新のデータDをRAM54の第1記憶部131に書き込むことができる。この書込み処理を終えると、本ルーチンを終了する。すなわち、書込みタスク部91は休止する。
一方、ステップS140では、不揮発性メモリー55のうち第1記憶領域143のデータDをRAM54の第1記憶部131に書き込む(書込み処理)。更新フラグF=0のときは、前回の電源遮断前に最後に行われた書戻し処理の書戻し先が第2記憶領域144であるので、この第2記憶領域144からデータDを書き込むことにより、不揮発性メモリー55から最新のデータDをRAM54の第1記憶部131に書き込むことができる。この書込み処理を終えると、本ルーチンを終了する。すなわち、書込みタスク部91は休止する。
一方、全てのカウンター141,142の計数値CTが書戻し完了値Bでない場合(S110で否定判定)は、ステップS150において、書戻しエラーを報知する。つまり、計数値CTが書戻し完了値Bに達していないカウンターが存在する場合は、電源遮断前に最後に行われた書戻し処理でデータDの書戻しが完了していないことを意味するので、その旨をユーザーに知らせるために書戻しエラーを報知する。書込みタスク部91は主制御部81へ書戻しエラー通知を行い、さらに主制御部81が通信部82を介してホスト制御部125へその書戻しエラー通知を送ることにより、ホスト制御部125へ書戻しエラーの旨が通知される。ホスト制御部125は、書戻しエラー通知を受け付けると、モニター123に書戻しエラー発生の旨(例えばエラー画面)を表示する。この結果、書戻しエラー発生の旨がユーザーに報知される。
次のステップS160では、不揮発性メモリー55における2つの記憶領域143,144のうち計数値CTが書戻し完了値Bになっている側のカウンターに対応する記憶領域のデータDを、RAM54の第1記憶部131に書き込む。この結果、前回の電源遮断前に最後に書戻し処理を完了したデータDが、RAM54の第1記憶部131に書き込まれる。
次のステップS170では、書戻し途中の記憶領域のデータDのうち計数値CTに相当する分までの一部のデータをRAM54の第1記憶部131に書き込む。つまり、不揮発性メモリー55における2つの記憶領域143,144のうち計数値CTが書戻し完了値B以外の値になっている側のカウンターに対応する記憶領域のデータDのうち計数値CTに相当する分までの一部のデータ、すなわち前回の電源遮断時に書戻しができたところまでの一部のデータを、をRAM54の第1記憶部131に書き込む。ここで、前回の電源遮断時に、データDのうちそのときの計数値CTに相当する一つの情報中の途中箇所で電源が遮断された場合、当該1つの情報は書戻しが中断されて信頼できないので、当該一つの情報の1つ前の情報までの信頼できる一部のデータDを、RAM54の第1記憶部131に書き込む。
このデータ修復処理の結果、前回の電源遮断前に書戻しが中断されたデータDのうち書戻しが完了できたところまでの一部のデータを、前回の電源遮断前に書戻しを完了できた1回旧いデータDの一部で補ったなるべく新しいデータDに修復できる。この修復を終えると、書込みタスク部91は本ルーチンを終了する。この電源オン時には書込みタスク部91は続いてコピー処理も行い、書き込んだ第1記憶部131のデータDを第2記憶部へコピーする。そして、コピー処理を終えた書込みタスク部91は休止する。なお、本実施形態では、この修復処理を行う書込みタスク部91により、修復手段の一例が構成される。
以上詳述したように、本実施形態によれば、以下に示す効果を得ることができる。
(1)書戻しタスク部92は、RAM54の第2記憶部132のデータDを、不揮発性メモリー55の複数の記憶領域143,144に交互に書き戻し、このときカウンター141,142のうち書戻し先の記憶領域と対応するカウンターの計数処理を行って書戻したデータ量に応じた計数値とするようにした。そして、電源オン時には、書込みタスク部91は、複数のカウンター141,142のうち計数値CTが書戻し完了値Bとなっているカウンターに対応する記憶領域のデータをRAM54の第1記憶部131に書き込む。このため、例えば不意な電源遮断により、書戻し処理が中断されても、その書戻しが中断された間違ったデータがRAM54に書き込まれる事態を回避できる。従って、書戻しを完了した正しいデータを不揮発性メモリー55からRAM54へ書き込むことができ、しかも前回の電源遮断時に書戻し処理が中断されても、その中断時の1回前に書き戻された比較的新しいデータをRAM54に書き込むことができる。
(2)不揮発性メモリー55に2つの記憶領域143,144を設け、データDの書戻し先を2つの記憶領域143,144間で交互に切り換える構成としたので、データ記憶容量を比較的多く確保できる。例えば3つ以上の記憶領域を確保して、書戻し先の記憶領域を順番に切り換える構成とした場合、データ記憶容量が小さくなってしまい、例えば大記憶容量の不揮発性メモリー55を用意しなければならなくなる。しかし、記憶領域の個数を書戻し先を切り換え可能な最少個数である2個としているので、データ記憶容量を比較的多く確保できる、
(3)不揮発性メモリー55に設けられた2つの記憶領域143,144間で交互に切り換える構成としたので、少なくとも一つの記憶領域と対応するカウンターが書戻し完了値Bとなっている。このため、書戻し完了値Bのカウンターに対応する記憶領域から正しいデータDをRAM54へ書き込むことができる。例えば一つの記憶領域へのデータの書戻しを完了する前の書戻し途中で、他の一つの記憶領域へのデータの書戻しを開始する構成とすると、不意な電源遮断時に2つのカウンターが共に書戻し完了値Bとならない事態が発生する。しかし、一つの記憶領域へのデータの書戻しを完了した後、他の一つの記憶領域へのデータの書戻しを開始する構成なので、必ず一つの記憶領域には書戻しを完了した正しいデータが格納された状態にすることができる。よって、書戻しを完了した信頼性の高いデータDをRAM54に書き込むことができる。
(4)書戻しタスク部92はプリンター11の電源遮断時に起動され、そのときの最新のデータDの書戻し処理を行うので、なるべく最新のデータDを不揮発性メモリー55に書き戻すことができる。
(5)電源オン時に、書込みタスク部91は、計数値CTが書戻し完了値Bになっていないカウンターが存在すると、その旨をホスト制御部125へ通知し、モニター123(報知手段)に書戻しエラーの旨を表示させることによりエラー報知を行う。この結果、ユーザーは、このエラー報知によって、前回の電源遮断時に書戻し処理を失敗した虞がある旨(つまり不揮発性メモリー55のデータが間違っている虞がある旨)を知ることができる。このため、ユーザーはデータ修復の必要性を認知できる。
(6)書戻し完了値B以外の計数値CTをもつカウンターが存在してエラー報知を行った場合、書込みタスク部91は、書戻しが中断されたデータのうち書戻しを終えたところまでの一部のデータを、書戻しを完了した1回旧いデータの一部で補完し、比較的新しいデータに修復する。書戻しが行われた分までの一部のデータを利用して少なくともその部分については最新のデータが用いられた修復データを取得できる。
(7)例えばカウンターに替えてフラグを採用した構成にすると、書戻し処理が中断された場合にデータD中のどの箇所で中断されたかを把握することができないが、カウンター141,142であるので、その計数値CTから、データDにおいて書戻し処理が中断された箇所を特定することができる。この結果、書戻しが中断された一部のデータを利用して適切な修復処理を行うことができ、修復データの信頼性を高めることができる。
(8)印刷系タスク部より優先順位の高い書込みタスク部91が、第1記憶部131のデータDを、印刷系タスク部による書込みが禁止された第2記憶部132にコピーし、書戻しタスク部92が第2記憶部132のデータDを不揮発性メモリー55に書き戻すので、不揮発性メモリー55に正確なデータDを書き戻すことができる。例えば書戻し途中に優先順位の高いタスクが起動されても、第2記憶部132のデータDは書き替えられることはないので、その後、書戻しタスク部92が起動し、中断した続きからデータの書戻し処理を再開した場合に、前回と今回で同一のデータを対象に書き戻しをすることができる。よって、印刷系タスク部の割り込みによる中断によって複数回に分けて断続的に書戻し処理を行っても、不揮発性メモリー55に正しいデータDを書き戻すことができる。
(9)書込みタスク部91の優先順位を印刷系タスク部よりも高くしているので、第1記憶部131から第2記憶部132へのデータDのコピーを、印刷系タスク部に優先して行うことができる。このため、書込みタスク部91によるコピーが印刷系タスク部の起動により中断され、コピー途中でコピー元のデータDが書き替えられる事態を回避できる。よって、第1記憶部131のデータを第2記憶部132に正しくコピーすることができる。
(10)書込みタスク部91は、書戻しタスク部92から受け付けた書戻し完了通知をトリガーにして、データDのコピーを開始する。このため、書戻しタスク部92による書戻し途中にその書戻し元データが書き替えられてしまう事態を回避できる。よって、正しいデータDを不揮発性メモリー55に書き戻すことができる。
(11)書戻しタスク部92の優先順位を、印刷系タスク部81〜89よりも低く設定した。このため、印刷画像データ及びヘッド制御データなどの噴射系データ生成処理と、記録ヘッド29への噴射系データの転送処理の最中に、書戻しタスク部の割り込みが発生せず、これらの記録ヘッド系処理が書戻し処理に優先して行われる。このため、例えば噴射系データが間に合わず、ノズルからインクが噴射されない噴射不良(ドット抜け)の発生頻度や、ヘッド制御データの準備が遅れキャリッジ27の起動タイミングが遅延する頻度をなるべく低減することができる。よって、噴射不良に起因する印刷不良の発生を防止しつつ、キャリッジ27の起動タイミングの遅延発生頻度を低減して印刷スループットの低下を抑制することができる。
また、印刷動作(記録系動作及び搬送系動作)やクリーニング動作などの所定動作が行われていないプリンター11の待機状態のときに、データDの書戻し処理を行う。よって、印刷系処理の最中に書戻し処理の割り込みが発生せず、印刷系処理が書戻し処理に優先して実施され、印刷スループットの低下を抑制できる。
(12)緊急タスク部90は、電源オフ時にタスク優先順位の変更をリアルタイムOS71に要求し、優先順位管理テーブル97を電源オフ時のタスク優先順位(図5(b))に更新する。この優先順位の変更によって、書込みタスクと書戻しタスクとの優先順位の関係を保ちつつ、両タスクの優先順位を印刷系タスクよりも高くする。このため、電源オフ時にも、書戻しタスク部92の起動が可能となり、なるべく最新のデータDを不揮発性メモリー55に書き戻すことができる。また、電源遮断時にも、書込みタスク部91の優先順位を書戻しタスク部92より高く設定したので、例えばコピー途中に電源遮断を検出しても、そのコピーを全て終えてからそのデータDの書き戻しを開始できる。例えば、書戻しタスク部92を書込みタスク部91よりも高い優先順位とすると、コピー途中の電源遮断時に、そのコピー途中のデータDを書き戻すことになり、データDの信頼性が損なわれる。これに対し、本実施形態では、コピー途中の電源遮断時にも、コピーをし終わった正しいデータDを不揮発性メモリー55に書き戻すことができる。
(第2実施形態)
次に第2実施形態について図12〜図18を用いて説明する。本実施形態のプリンターは、記録ヘッドを制御するコントローラーが複数設けられ、複数の記録ヘッドを複数のコントローラーが分担して制御する構成である。
図12は、本実施形態のプリンターの電気的構成を示すブロック図である。本実施形態のプリンター11の制御装置Cは、記録ヘッド29を分担して制御する複数(本例では2個)のコントローラー41,42を備えている。マスター側コントローラー41は複数個(例えば7個)の記録ヘッド29Aの噴射制御(記録制御)を行い、スレーブ側コントローラー42は複数個(例えば8個)の記録ヘッド29Bの噴射制御(記録制御)を行う。
ホスト装置120内のプリンタードライバー122は、2つのコントローラー41,42がそれぞれ受け持つ記録ヘッド29の配置位置(記録領域)に応じて印刷画像データを2つに分割し、分割した各印刷画像データに同一の印刷言語記述コマンドを付して2つの印刷データP1,P2を生成する。ホスト装置120は、転送制御部129により、シリアル通信ポートU1,U3間の通信を介してマスター側コントローラー41へ印刷データP1をシリアル転送すると共に、シリアル通信ポートU2,U4間の通信を介してスレーブ側コントローラー42へ印刷データP2をシリアル転送する。
また、2つのコントローラー41,42に接続された各通信回路46には、8個のインクカートリッジIC1〜IC8に実装された8個の記憶素子47のうち半分の4個ずつがそれぞれ接続されている。マスター側コントローラー41は4個のインクカートリッジIC1〜IC4に実装された各記憶素子47と通信可能であり、スレーブ側コントローラー42は4個のインクカートリッジIC5〜IC8に実装された各記憶素子47と通信可能である。記憶素子47には、第1実施形態と同様に、対応するインクカートリッジICのインク残量情報、インク色、使用期限、メンテナンス情報、品番などの各種のインク関連情報が記憶される。
マスター側コントローラー41は、通信回路46を介してインクカートリッジIC1〜IC4の各記憶素子47と通信してインク関連情報の読出し及び書込みが可能となっている。同様に、スレーブ側コントローラー42は、通信回路46を介して各インクカートリッジIC5〜IC8に実装された記憶素子47と通信してインク関連情報の読出し及び書込みが可能となっている。
このように、各コントローラー41,42の構成は、記録ヘッド29及びインクカートリッジICを制御及び管理する個数が異なる以外は、基本的に第1実施形態と同様である。各コントローラー41,42は、第1実施形態と同様に、CPU51、ASIC52、ROM53、RAM54及び不揮発性メモリー55をそれぞれ備えている。図12では、マスター側とスレーブ側の不揮発性メモリー55を区別するため、マスター側の不揮発性メモリーを55A、スレーブ側の不揮発性メモリーを55Bとしている。なお、記録ヘッド29を分担して制御している関係から、両コントローラー41,42間でコマンド出力タイミングの同期をとる必要があり、両コントローラー41,42が同期処理機能を備えている点が、第1実施形態と異なる。この同期処理機能について後述する。
図12に示すように、本実施形態では、マスター側コントローラー41が通信線SL1を介してメカコントローラー43と接続されている。また、リニアエンコーダー50の出力信号はマスター側コントローラー41へ入力されるとともに、マスター側コントローラー41から信号線SL2を介してスレーブ側コントローラー42へ送られる。また、両コントローラー41,42は、上記同期処理機能を実現するために通信線SL3を介して互いに接続されている。また、インクカートリッジICの管理を分担している関係から、自身が管理する記録ヘッド29で消費されたインク消費量のうち相手側のコントローラーが管理するインクカートリッジのインク色に対応するインク消費量を相手側のコントローラーへ送信するため、両コントローラー41,42は通信線SL4を介した通信が可能に接続されている。
マスター側コントローラー41は、自身が受け持つ7個の記録ヘッド29Aの印刷準備ができ(つまりインク滴噴射制御に使用する印刷画像データが準備され)、かつスレーブ側コントローラー42が受け持つ8個の記録ヘッド29Bも印刷準備ができた段階でキャリッジ起動コマンドをメカコントローラー43へ送信するようになっている。これにより、コントローラー41,42のうち一方の印刷準備完了前にキャリッジ27が起動されてしまうことに起因し、記録ヘッド29が噴射位置に到達したにも拘わらずインク滴が噴射されない噴射ミスが防止されるようにしている。
また、マスター側コントローラー41は、自身が受け持つ7個の記録ヘッド29Aの印刷を完了し、かつスレーブ側コントローラー42が受け持つ8個の記録ヘッド29Bも印刷を完了した段階で、シート13の搬送を指令する搬送コマンドをメカコントローラー43へ送信する。これにより、コントローラー41,42のうち一方が印刷完了前の段階でシート13が搬送開始(又は支持部材19上のシートの吸着解除)されてしまうことに起因し、記録ヘッド29から噴射されたインク滴のシート13に対する着弾位置のずれ(印刷位置ずれ)が防止されるようにしている。
このようにマスター側コントローラー41は、スレーブ側コントローラー42と進捗の同期をとってコマンドを送信する前述の同期処理機能を備えている。同期処理機能では、スレーブ側コントローラー42はマスター側コントローラー41へコマンドを出力し、マスター側コントローラー41は、スレーブ側から受け付けたコマンドと自身のコマンドとが揃いかつコマンド内容が一致することを確認した時点で、メカコントローラー43へコマンドを出力する。本実施形態では、同期処理機能を実現するために各コントローラー41,42に設けられた構成が、マスター側とスレーブ側で少し異なる。
図13は、マスター側コントローラー41とスレーブ側コントローラー42の機能構成を説明するブロック図である。図13に示すように、両コントローラー41,42は、同じプログラムの構成で実現されている。但し、同期処理機能の部分のみ起動される一部のプログラムが異なるため、異なる機能が実現されている。なお、図13では、コマンド処理系及び同期処理系の機能ブロックのみを示し、リアルタイムOS71、画像処理部83、ヘッド制御部88、インク管理部89及び緊急タスク部90などは省略している。
図13に示すように、各コントローラー41,42は、第1実施形態のコントローラー40と同様に、リアルタイムOS71、主制御部81、通信部82、画像処理部83、コマンド解析部84、印刷タスク部85、メカ制御部86、メカ通信部87、ヘッド制御部88、インク管理部89、緊急タスク部90、書込みタスク部91及び書戻しタスク部92を備えている。
さらに本実施形態では、同期処理機能を実現するため、マスター側コントローラー41は、同期手段の一例としての仮想メカコントローラー98(仮想メカコン98)を備え、スレーブ側コントローラー42は、ダミーメカコントローラー99(ダミーメカコン99)を備えている。
また、スレーブ側コントローラー42のメカ通信部87は、マスター側コントローラー41の仮想メカコン98と通信線SL3を通じて接続されている。すなわち、マスター側コントローラー41のメカ通信部87が実際のメカコントローラー43に接続されているのに対して、スレーブ側のメカ通信部87はマスター側コントローラー41内に設けられた仮想メカコン98に接続されている。スレーブ側のメカ通信部87はメカコントローラー43へコマンドを出力したつもりで実際は仮想メカコン98へコマンドを送信している。
次に同期処理機能について説明する。デバイス制御部94は、ジョブ制御部93から受信したコマンドをメカ通信部87へ出力する(図13中の(1))。メカ通信部87は、コマンドを受信すると、マスター側では仮想メカコン98にコマンドの問合せをし(図13中の(2))、スレーブ側ではダミーメカコン99にコマンドの問合せをする(図13中の(2))。
スレーブ側ではダミーメカコン99は問合せを受け付けると、無条件で直ちにACK信号を応答する(図13中の(3))。スレーブ側のメカ通信部87はその応答を受け付けると、コマンドを通信線SL3へ出力する(図13中の(4))。この出力されたコマンドは、マスター側の仮想メカコン98が受信する。
仮想メカコン98は、マスター側とスレーブ側の両メカ通信部87からコマンドを受け付けると、両コマンドが一致するか否かを判断し、一致すれば、マスター側のメカ通信部87に対してACK信号を応答する(図13中の(5))。そして、マスター側のメカ通信部87はACK信号の応答を受け付けると、メカコントローラー43へコマンドを送信する(図13中の(6))。つまり、仮想メカコン98の同期処理においてマスター側とスレーブ側の両方で同一のコマンドが揃ったことが確認されたタイミングで、マスター側のメカ通信部87からメカコントローラー43へコマンドが送信される。なお、メカ通信部87は、コマンドをメカコントローラー43へ出力する度に、メカ制御部86へコマンド出力の旨を応答する。メカ制御部86はコマンド出力の旨の応答を受け付けると、次のコマンドを出力する。
図14は、本実施形態のRAMと不揮発性メモリーの構成を示す。本実施形態では、マスター側とスレーブ側ともにRAMと不揮発性メモリーの構成は同じである。図14では、マスター側コントローラー41内のRAM54及び不揮発性メモリー55Aを示している。なお、図14では、スレーブ側コントローラー42の不揮発性メモリー55Bの対応する構成の符号を( )内に示している。
図14に示すように、RAM54は、第1実施形態と同様に、プログラムデータ記憶部130と、第1記憶部131(ミラー記憶領域部)と、第2記憶部132(コピー記憶領域部)とを有する。
第1記憶部131(ミラー記憶領域部)は、不揮発性メモリー55から読み出されたデータDの書込み先となる記憶領域であり、印刷系タスク部81〜89、緊急タスク部90がアクセスしてデータの読出し及び書込みが可能な記憶領域である。
第2記憶部132(コピー記憶領域部)は、第1記憶部131から読み出されたデータDのコピー先となる記憶領域であり、書込みタスク部91による書込みアクセスと書戻しタスク部92による読み出しアクセスは許可されているものの、各タスク部81〜90の第2記憶部132への書込みアクセスが禁止されている。
また、図14に示すように、本実施形態の不揮発性メモリー55A(55B)には、計数手段の一例としてのカウンター151(153)と、データDを記憶するための記憶部152(154)が1つずつ設けられている。この第2実施形態では、各コントローラー41,42に設けられた不揮発性メモリー55A,55Bの各記憶部152,154が、複数の記憶部の一例を構成している。そして、本例では、複数の記憶部が2つの例である。
図14に示すように、電源オン時に書込みタスク部91により不揮発性メモリー55からRAM54の第1記憶部131へのデータDの書込み処理が行われる(図14中の(1))(書込み段階)。すなわち、書込みタスク部91は、電源オン時に、前回の電源オフ時(電源遮断時)に不揮発性メモリー55に保存されたデータDを、その不揮発性メモリー55から読み出し、その読み出したデータDをRAM54の第1記憶部131に書き込む。
書込みタスク部91は、この電源オン時の書込み処理のときに限り、書込み処理に続けてコピー処理も行い、第1記憶部131のデータDを第2記憶部132にコピーする(図14中の(2))(コピー段階)。
その後、プリンター11が待機状態になると、各タスク部81〜92の中で一番優先順位の低い書戻しタスク部92が起動される。そして、書戻しタスク部92は、第2記憶部132のデータDを不揮発性メモリー55に書き戻す(図14中の(3))(書戻し段階)。書戻し処理に先立ち、カウンター151,153は書戻し開始値Aに変更される。書戻しタスク部92は、データDの書戻し中は、Kバイトのデータを書き戻す度にカウンター151(153)をインクリメントする計数処理を行う。
書戻しタスク部92が、データDを全て書戻し、書戻し処理を完了すると、カウンター151(153)の計数値CTは書戻し完了値B(例えば最大値)となっている。書込みタスク部91は、書戻し処理を完了した書込みタスク部91から書戻し完了通知を受け付けると起動し、第1記憶部131から第2記憶部132へデータDをコピーするコピー処理を行う(図14中の(2))。書込みタスク部91は、印刷系タスク部より優先順位の高いタスクであるため書戻し完了通知を受け付ければ大抵の場合は直ぐに起動される。この書戻し完了の度に書戻しタスク部91から送られてくる書戻し完了通知を受け付ける度に書込みタスク部91は起動し、前回コピー時と今回コピー時の間の期間に更新された第1記憶部131のデータDを、第2記憶部132へコピーする(図14中の(2))。コピー処理後、プリンター11が待機状態になる度に、書戻しタスク部92が起動し、第2記憶部132のデータDを不揮発性メモリー55に書戻す(図14中の(3))。
また、電源オフ操作時、電源プラグ抜けや電源故障などの電源オフ時(電源遮断時)は、優先順位変更部73が、優先順位管理テーブル97を、図5(b)に示す優先順、すなわち、書戻しタスク部92を印刷系タスク部81〜89の優先順位より高い順位(本例では第3位の優先順位)とする優先順に変更する。このため、本実施形態においても、電源オフ時(電源遮断時)には、書戻しタスク部92が起動される。
図15は、不揮発性メモリー55の構成を示す。図15に示すように、不揮発性メモリー55A(55B)は、カウンター151(153)として使用されるカウンター領域151A(153A)と、データD(バックアップデータ)を記憶させるための記憶部152(154)とを備えている。カウンター領域151A(153A)は、印刷系タスク部による書込み禁止領域となっているが、書込みタスク部91及び書戻しタスク部92による書込みアクセスは許可されている。そのため、書込みタスク部91及び書戻しタスク部92によるカウンター151(153)の計数値を変更する処理(リセット、セット、計数処理など)が可能になっている。
カウンター領域151A(153A)には、第1実施形態と同様に、例えば1バイト確保されており、8ビットのカウンター151(153)が構成されている。本実施形態でも同様に、データDのデータサイズを255分割した値であるKバイト(K=データDのデータ容量/255)を、カウンター151(153)を「1」だけ計数する計数処理の単位としている。書戻し開始値Aを最小値「00000000」(2進数)とし、データDの書戻しを全て完了したときの書戻し完了値Bを最大値「11111111」(2進数)になるようにしている。また、データDは、稼働情報データD1と調整情報データD2とを含み、第1実施形態と同様に、相対的に更新頻度の高い稼働情報データD1が記憶部152(154)のうち書戻し開始側の領域に格納され、相対的に更新頻度の低い調整情報データD2が記憶部152(154)のうち書戻し終了側の領域に格納されるようになっている。なお、本実施形態では、マスター側の不揮発性メモリー55における記憶部152を第1記憶部と称し、スレーブ側の不揮発性メモリー55における記憶部154を第2記憶部と称する場合もある。
以下、各コントローラー41,42内で書戻しタスク部92が起動して行われる書戻し処理を、図16に示すフローチャートに従って説明する。コピー処理後、プリンター11が待機状態のときに、各コントローラー41,42の書戻しタスク部92がそれぞれ起動する。各コントローラー41,42は非同期で動作するものの、プリンター11が印刷動作を行うタイミングや、プリンター11が待機状態になるタイミングに合わせて、各タスク部は起動する。このため、各コントローラー41,42において、書込みタスク部91及び書戻しタスク部92は同じように起動する。なお、以下では、マスター側コントローラー41における書戻し処理を説明し、スレーブ側の対応する符号を( )内に示して説明する。
まず図16におけるステップS210において、第2記憶部132のデータDのうちJバイト分のデータを不揮発性メモリー55に書き戻す。このとき、新たに第2記憶部132にコピーされたデータDを書き戻す場合は、カウンターの計数値CTを書戻し開始値Aに変更後、データDの最初からJバイトずつ順番に書戻しを行う。また、前回書戻しを中断した続きから同一のデータDを書き戻す場合は、そのときの計数値CTに対応する箇所からJバイトずつ順番に書戻しを行う。なお、カウンターの書戻し開始値Aへの変更は、コピー処理完了時に書込みタスク部91が行ってもよい。
次のステップS220では、Kバイト分を書き戻したか否かを判断する。Kバイト分を書き戻していなければ次のJバイト分のデータを不揮発性メモリー55に書き戻す(S210)。そして、Jバイト分ずつの書戻しをn回繰り返してK(=J×n)バイト分を書き戻すと(ステップS220で肯定判定)、ステップS230に進む。
ステップS230では、カウンター151(153)の計数処理を行う。本例では、計数処理として、カウンター151(153)の計数値CTを「1」だけインクリメントする。
そして、ステップS240において、カウンター151(153)の計数値CTが書戻し完了値Bに達したか否かを判断する。書戻し完了値Bに達していなければステップS210に戻り、以下同様に、S210〜S240の各処理を、計数値CTが書戻し完了値Bに達するまで(S240で肯定判定)繰り返す。この結果、Kバイト分の書戻しを完了する度に、カウンター151(153)が計数処理でインクリメントされる。そして、データDを全て不揮発性メモリー55に書戻し終えると、カウンター151(153)の計数値CTが書戻し完了値Bに達し(S240で肯定判定)、書戻し完了通知を書込みタスク部91へ送信後、当該ルーチンを終了する。つまり、書戻しタスク部92は休止する。なお、電源遮断時(電源オフ時)の処理として行った書戻し処理を終えた際は、書戻し完了通知は緊急タスク部90へ送信される。また、書戻し処理中に、書戻しタスク部92より優先順位の高い他のタスク部の割り込みがあれば、カウンター151(153)の計数値CTが書戻し完了値Bに達していなくても、その時点で書戻しタスク部92はレディ状態に移行し、書戻し処理が中断される。
次に電源遮断(電源オフ)時におけるデータ記憶処理について説明する。例えば不意な電源遮断時には、プリンター11が備える二次電池が放電されるまでの所定時間はデータ記憶処理を行うことができる。この不意な電源遮断は、各コントローラー41,42内の緊急タスク部90の電源遮断検出機能により検出される。
電源遮断が検出されると、緊急タスク部90が起動され、緊急タスク部90がリアルタイムOS71に優先順位変更要求を行うことにより、優先順位変更部73がタスク優先順位変更処理を行う。この結果、タスク管理部74によって参照される優先順位管理テーブル97が、図5(a)に示す通常時のタスク優先順から図5(b)に示す電源オフ時のタスク優先順に変更される。
このため、電源遮断時には、書戻しタスク部92が起動される。但し、コピー処理中に電源が遮断された場合は、より優先順位の高い書込みタスク部91がコピー処理を終えた後、次に優先順位の高い書戻しタスク部92が起動される。そして、書戻しタスク部92は、そのコピーされたデータDの書戻し処理を行う(図16のS210〜S240)。また、書戻し処理中に電源が遮断された場合は、そのときの計数値CTに対応する書戻しが中断された箇所からデータDの書戻し処理を行う(図16のS210〜S240)。このとき、書戻し処理を最後まで完了できた場合は、カウンター151(153)の計数値CTは、書戻し完了値Bになっている(CT=B)。このとき不揮発性メモリー55A(55B)には書戻し処理を完了した正しいデータDが保存されている。一方、書戻し処理を最後まで完了できなかった場合は、カウンター151(153)の計数値CTは、書戻し完了値B以外の値(CT≠B)となる。このとき不揮発性メモリー55A(55B)には書戻し途中の間違ったデータDが保存されている虞がある。
例えば電源プラグ抜けや電源48の故障などによる不意な電源遮断、あるいはコントローラー40のシステムダウン(ハングアップ等)などが発生した際は、そのとき書戻し処理の途中であれば、その書戻し処理が途中のまま電源が遮断されてしまう場合がある。このような場合、各コントローラー41,42は非同期なので、各カウンター151,153のうち一方の計数値CTが書戻し完了値Bをとり、他方の計数値CTが書戻し完了値B以外の値をとることもありうる。また、カウンター151,153の各計数値CTが共に書戻し完了値B以外の値をとることもありうる。
この電源遮断(電源オフ)後、ユーザーが電源スイッチ65を操作してプリンター11の電源を投入した電源オン時には、書込みタスク部91が起動される。以下、図17のフローチャートに従って書込み処理を説明する。
まずステップS310では、全てのカウンター151,153の各計数値CTが書戻し完了値Bであるか否かを判断する。全ての計数値CTが書戻し完了値BであればステップS320に進み、全ての計数値CTが書戻し完了値BでなければステップS330に進む。
ステップS320では、不揮発性メモリー55A(55B)のデータDをRAM54の第1記憶部131に書き込む(書込み処理)。前回の電源遮断前に最後に行われた書戻し処理が完了した正しいデータDをRAM54の第1記憶部131に書き込むことができる。この書込み処理を終えると、本ルーチンを終了する。すなわち、書込みタスク部91は休止する。
一方、ステップS330では、計数値CTが書戻し完了値Bのカウンターがあるか否かを判断する。書戻し完了値BのカウンターがあればステップS340に進み、書戻し完了値BのカウンターがなければステップS360に進む。
ステップS340では、不揮発性メモリー55A,55Bのうち書戻し完了値Bを計数値CTにもつカウンター側の不揮発性メモリーのデータDを、RAM54の第1記憶部131に書き込む(書込み処理)。
そして、次のステップS350では、データ修復の旨を報知する。例えば書込みタスク部91は、主制御部81を介してホスト制御部125にデータ修復の旨を通知し、この通知を受け付けたホスト制御部125がモニター123にデータ修復の旨を表示することにより報知される。ここで、データ修復の旨を報知するのは、一方のコントローラーで書戻し処理が完了していなかった旨を報知するためのものであり、このときデータDは正しく修復される。こデータ修復の旨の報知を終えると、書込みタスク部91は休止する。なお、ステップS340の書込み処理は、モニター123にデータ修復処理の実行をユーザーに選択させる選択肢を表示し、操作部124の操作によりデータ修復実行の旨が選択操作された場合に行ってもよい。
一方、書戻し完了値Bを計数値CTにもつカウンターがなかった場合は、ステップS360において、書戻しエラーを報知する。例えば書込みタスク部91は、主制御部81を介してホスト制御部125にエラーの旨を通知し、この通知を受け付けたホスト制御部125がモニター123にエラーの旨を表示することにより報知される。
そして、以下のステップS370,S380の処理によりデータ修復処理を行う。
ステップS370では、不揮発性メモリー55A,55Bのうち計数値CTの大きいカウンター側の不揮発性メモリーのデータDのうち計数値CTに相当する箇所の一部を除くデータDを、各コントローラー41,42のRAM54の第1記憶部131に書き込む。
次のステップS380では、ホスト装置120から計数値CTに相当する一部のデータを取得し、その取得したデータを、コントローラー41,42の各RAM54における計数値CTと対応する位置(アドレス)に書き込む。なお、本実施形態のプリンター11では、各コントローラー41,42は定期的にデータDをホスト制御部125へ送信しているため、ホスト装置120内のホスト記憶部120Mには前回の電源遮断前に最後に送信されたデータDが保存されている。このため、計数値CTに相当する箇所の一部の情報のみ、ホスト記憶部120Mに保存されているデータDを用いて修復する。
こうしてデータ修復処理によって修復されたデータDがコントローラー41,42の各RAM54に書き込まれる。この書込み処理を終えると、書込みタスク部91は休止する。書込み処理終了後、書込みタスク部91は直ぐ起動され、続いてコピー処理を行う。なお、ステップS360において報知した際のエラー表示画面には、例えばデータ修復処理を実行をユーザーに選択させる選択肢を表示し、操作部124の操作によりデータ修復実行の旨が選択操作された場合に次のステップS370に進むようにしてもよい。
ここで、計数値CTに対応する箇所のみホスト記憶部120Mに保存されたデータDで修復する理由は、次のとおりである。図18は、書戻し処理が中断された場合における書戻し先のデータDの中断箇所の周辺部分を示すものである。図18に示すように、書戻し処理が中断された場合、前回行われた(N−1)回目の書戻しデータD(図18におけるハッチング部分)に、今回行われたN回目の書戻しデータDが上書きされる。図18に示すように箇所で書戻しが中断された場合、1つの情報の途中まで書き戻されているので、この1つの情報は前回の旧い情報のデータと今回の新しい情報のデータとが混在し、間違った情報になっている虞がある。このため、この書戻しが中断された1つの情報より1つ前までは今回(N回目)の新しい情報を採用し、この1つの情報より1つ後の情報以降については前回(N−1回目)の1回分旧い情報を採用する。そして、計数値CTに相当する書戻し中断箇所の情報については、各コントローラー41,42から定期又は不定期にホスト装置120に送信してホスト記憶部120Mに保存されていたデータDを利用してデータDを修復する。
データDの書戻し処理では、相対的に更新頻度の高い稼働情報データD1が先に書き戻され、相対的に更新頻度の低い調整情報データD2が後から書き戻される。このため、前回(N−1回目)の1回分旧いデータが使用されるのが、相対的に更新頻度の低い調整情報データD2になる可能性が高い。このため、1回分旧いデータが使用されても、実質的に新しい情報と同じ情報に修復できる可能性が高い。
この第2実施形態においても、以下の効果を得ることができる。
(13)印刷手段を分担して制御する複数のコントローラー41,42を備えたプリンター11において、電源オン時に、カウンター151,153の計数値CTを確認し、不揮発性メモリー55A,55Bのうち計数値CTが書戻し完了値Bとなったカウンター側の不揮発性メモリーのデータDをRAM54の第1記憶部131に書き込む。よって、電源オン時に、不揮発性メモリーから正しいデータをRAM54に書き込むことができる。
(14)電源オン時に、カウンター151,153のうち一方が書戻し完了値Bでなかった場合、計数値CTが書戻し完了値Bとなっているカウンター側の不揮発性メモリーのデータDを、コントローラー41,42の各RAM54の第1記憶部131に書き込む。よって、不意な電源遮断やシステムダウン(例えばハングアップ等)に起因して、コントローラー41,42の一方で書戻し処理が中断された場合でも、他方のコントローラーの不揮発性メモリーのデータDを利用して一方のコントローラーのRAM54の第1記憶部131に正しいデータDを書き込むことができる。
(15)電源オン時に、カウンター151,153の両方が書戻し完了値Bでなかった場合、計数値CTの大きい方のカウンター側の不揮発性メモリーのデータDのうち計数値CTと対応する箇所の一部の情報を除くデータDに、ホスト記憶部120Mに保存されたデータDのうち計数値CTと対応する箇所の情報を補完することにより、データDを修復した。よって、両コントローラー41,42で書戻しが中断された場合でも、電源オン時に、比較的正しく修復されたデータDをコントローラー41,42の各RAM54の第1記憶部131に書き込むことができる。
なお、上記実施形態は以下のような形態に変更することもできる。
・データDの一部のみを複数の記憶部に書き戻す構成でもよい。図19に示すように、不揮発性メモリー55には、データDのうち稼働情報データD1を記憶するための記憶領域として第1記憶領域145及び第2記憶領域146を備え、調整情報データD2を記憶するための記憶領域として第3記憶領域147を備えている。この不揮発性メモリー55の先頭領域には、第1記憶領域145へ書戻されたデータ量を計数するための第1カウンター141と、第2記憶領域146へ書戻されたデータ量を計数するための第2カウンター142とが設けられている。さらに不揮発性メモリー55には、第1及び第2記憶領域145,146のうち、更新されたばかりのデータを記憶する記憶領域がどちらであるかを識別するための識別情報として更新フラグFが設けられている。稼働情報データD1は毎回その書戻し先が交互に切り換えられ、第1記憶領域145と第2記憶領域146に交互に書き戻される。また、調整情報データD2は常に第3記憶領域147に書き戻される。この構成によれば、データDのうち調整情報データD2を記憶するための記憶領域が第3記憶領域147の一面で済むので、不揮発性メモリー55の記憶容量を有効に活用できる。よって、不揮発性メモリー55にデータDの記憶に使用できる容量をより多く確保できる。なお、調整情報データD2は、ユーザーがプリンター11の調整機能を動作させたときに限り、更新される種類の情報なので、プリンター11の稼働の度に更新される訳ではなく、更新頻度は極めて低い。従って、仮にホスト記憶部120Mから取得しても、正常時と同じ調整情報データD2をRAM54に書き込むことができる。
・書込みタスク部91による書込み処理の実施タイミングは電源投入時(電源オン時)に限定されない。プリンター11の稼働中において定期的又は不定期に書込み処理を行ってもよい。この構成でも、書戻しを完了した正しいデータを不揮発性メモリー55からRAM54に書き込むことができる。
・書戻し手段は、データの書戻し先を交互に書き戻す構成に限定されない。例えば、各記憶部のうち同一の記憶部に2回以上連続して書き戻してもよい。この場合、各記憶部毎に連続書戻し回数は同じであっても異なっていてもよい。要するに、書き戻すタイミングがずれていれば足りる。また、直近に書戻しを完了した記憶部を、更新フラグF等により特定できればよい。
・記憶部は2個に限定されない。記憶部を例えば3個以上の複数個設けてもよい。この場合、書戻し先の記憶部を所定の順番で切り換えてもよいし、順番をランダムにして切り換えてもよい。
・第2実施形態におけるデータ修復処理は、書戻しが中断されたデータDと計数値CTの情報などをプリンター11からホスト装置120へ送信し、ホスト制御部125がその受信した情報と、ホスト記憶部120MのデータDとを用いて行ってもよい。そして、ホスト制御部125から受信した修復済みのデータDをRAM54に書き込む構成とする。
・書込みタスク部91(コピー手段)が起動したときにカウンター141,142,151,153の計数値CTが書戻し完了値Bに達する前の中間値(A値でもB値でもない計数値)であり書戻し途中であった場合は、そのときの計数値CTから把握できる書戻しが終わっている位置までのデータを第1記憶部131から第2記憶部132へコピーしてもよい。
・書戻しタスク部92による書戻し処理は、電源遮断時にのみ行ってもよい。
・電源遮断時に、カウンターの計数値CTを確認し、書戻し完了値Bであれば、書戻し処理を行わない構成としてもよい。この構成によれば、不意な電源遮断時の書戻し処理が中断されることを回避し易くなる。
・インクカートリッジICの記憶素子47を不揮発性メモリーとして、データ記憶処理装置を構成してもよい。
・計数手段の一例としてのカウンターは適宜のビット数に変更してもよい。要するに、書戻し処理が中断された場合に、データDのどの箇所まで書戻しが完了しているかを把握できるビット数であればよい。例えば2〜7ビットのうち任意のビット数のカウンターでもよい。さらに1バイトを超えてもよく、例えば9ビット、10ビット、さらには2バイトのカウンターを採用することもできる。
・計数手段の一例としてのカウンターの計数処理は、計数値のデクリメントでもよい。例えば書戻し開始値Aを最大値(例えば「255」)、書戻し完了値Bを最小値(例えば「0」)とし、最大値から書戻し処理を開始するとともに書戻し処理が進むに連れて計数値CTをデクリメントする。
・書戻し完了値Bは、最大値の「255」(B=255)又は最小値の「0」(B=0)に限定されない。書戻し完了値Bを例えば最小値と最大値の間の中間値としてもよい。要するに書戻しが完了したことを判別できる値であれば足りる。
・データDのデータサイズを255で分割したデータ量を1単位としてカウンター141,142,151,153の計数処理を行ったが、これに限定されない。つまりNビットのカウンターであれば、データの最大容量(データ記憶領域)の分割数は「2のG乗−1」に限定されず、「2のG乗−1」未満の値でもよい。例えば1バイトカウンターであれば、200とし、201〜255を他の用途の判定値又は他の用途の計数値のために使用してもよい。
・コピーされたデータ量に応じた計数値を取得できるように、コピー処理時にもカウンターの計数処理を行ってもよい。
・通常時のタスク部の優先順位は、図5(a)に示す順序に限定されない。例えば、書戻しタスク部92の優先順位は、印刷系タスク部81〜89のうち記録系タスク部81〜83,88よりも低く、印刷系タスク部のうちその他のタスク部84〜87よりも高く設定されてもよい。つまり、書戻しタスク部92を、印刷系タスク部のうちコマンド処理系のタスク部84〜87(搬送系・キャリッジ駆動系のタスク部を含む)よりも高い優先順位に設定する。この構成によれば、記録系処理中に書戻しタスク部92による割り込みが発生せず、記録系処理の遅延が発生し難い。また、書戻しタスク部92の優先順位が、タスク部84〜87よりも高いので、印刷動作中における記録系処理の合間に、搬送系やキャリッジ駆動系の処理動作に優先して、データDの書戻し処理を行うことができる。よって、印刷スループットの低下の抑制を図りつつ、データDの書戻し頻度を高めることができる。この結果、電源遮断時における不揮発性メモリー55のデータDの信頼性を高めることができ、またデータ修復時における修復データの信頼性も高めることができる。
・第1記憶部131(ミラー記憶領域)のデータ更新の有無を監視する監視部(監視手段)を設ける。そして、監視部からデータ更新の旨の通知を受け付けたときに書戻しタスク部92は起動し、そのときカウンター141,142,151,153が書戻し開始値Aであれば、第2記憶部132のデータを不揮発性メモリー55へ書き戻す書戻し処理を行う構成とする。上記の監視部は、データ更新の旨を書込みタスク部91(コピー手段)に通知し、書込みタスク部91が更新の旨の通知を受け付けると、コピー処理を開始する構成も採用できる。さらにコピー処理を完了すると、書込みタスク部91がコピー完了通知を書戻しタスク部92へ送り、書戻しタスク部92がコピー完了通知を受け付けると起動される構成としてもよい。
・書込みタスク部91が、データの書込み機能とコピー機能とを兼ねる構成に替え、不揮発性メモリー55のデータDを第1記憶部131に書き込む書込みタスク部(書込み手段)と、第1記憶部131のデータDを第2記憶部132にコピーするコピータスク部(コピー手段)とを別々に設けてもよい。この場合、書込みタスク部とコピータスク部との優先順位を異ならせてもよい。
・書戻しタスク部の優先順位は適宜変更してもよい。例えば書戻しタスクの優先順位を、記録系タスク部に属する一部のタスク部よりも低く、かつ記録系タスク部に属する他の一部のタスク部よりも高くしてもよい。このように書戻しタスク部は、記録系タスク部に属する全てのタスク部よりも優先順位が低いことには限定されず、記録系タスク部が複数のタスクから構成される場合は、記録系タスク部に属する少なくとも1つのタスク部よりも優先順位が低ければ足りる。この場合、その優先順位の高い1つのタスク部が書戻しタスク部より優先的に起動することで、記録系処理の遅延を回避し易くなる。また、書戻しタスクの優先順位を、キャリッジ駆動系と搬送駆動系タスクとの間に設定してもよい。
・コピー手段は、印刷制御手段が複数のタスク部から構成される場合、その全てのタスク部よりも優先順位が高い必要はなく、そのうち第1記憶部に書込みを行う全てのタスク部よりも優先順位が高ければ足りる。この構成によっても、コピー手段によるコピー途中に第1記憶部のコピー元データが印刷制御手段を構成するタスク部によって書き替えられることは回避できる。例えば、書込みタスク部91(コピー手段)の優先順位を、印刷系タスク部に属する複数のタスク部のうち、第1記憶部に書込みアクセスする一部のタスク部より高く設定とする。この構成であっても、コピー途中にコピー元データが書き替えられる事態を回避できる。
・電源遮断時には、書戻しタスク部92を書込みタスク部91よりも高い優先順位としてもよい。この場合、コピー処理の中断もありうるが、計数値CTが書戻し完了値Bになっているので、そのコピー中断のデータが書戻しされることがないので、何ら問題はない。印刷動作中の電源遮断の場合は、不揮発性メモリー55には最新ではないが印刷動作開始直前の比較的新しいデータDが保存される。
・書込みタスク部91及び書戻しタスク部92の起動優先順位は適宜変更してよい。例えば書込みタスク部91及び書戻しタスク部92を共に、記録系タスク部よりも低い優先順位としたり、印刷系タスク部よりも低い優先順位としたりしてもよい。さらに例えば書込みタスク部91及び書戻しタスク部92を共に、記録系タスク部よりも高い優先順位としたり、印刷系タスク部よりも高い優先順位としたりしてもよい。
・書込みタスク部91(コピー手段)は、書戻し完了通知をトリガーとしてコピーを開始する構成に限定されない。例えば書戻し手段(書戻しタスク部92)が起動されると、まず書込みタスク部91(コピー手段)にコピー要求を送り、書込みタスク部91はこのコピー要求を受け付けるとコピー処理を開始する。書込みタスク部91がコピーを終えてプリンター11が待機状態になると、書戻しタスク部92が再び起動されてこの再起動のときに書戻しタスク部92は第2記憶部132のデータDを不揮発性メモリー55に書戻す。この構成によれば、最新のデータをコピーした直後に書戻しを行うことができる。前記実施形態の方法では、印刷が終わって待機状態になった最初は第1記憶部131のデータDが印刷開始前にコピーされた旧いデータになるので、最初の書戻しで旧いデータの書き戻しを行う。これに対してこの変形例の方法であれば、最初の書戻しで最新データを書き戻すことができる。
・OSはリアルタイムOSに限定されない。その他のOSを採用してもよい。要するに、複数のタスクのうち優先度の高いタスクにCPUの実行権を割り当てる機能を有するOSであればよい。
・電源オフ時にタスク優先順位を変更しない構成も採用できる。例えば電源オフ時に優先的に起動される緊急タスク部が書戻し処理を行ってもよい。
・データ記憶処理装置は、例えばCPUによるソフトウェアではなく、ASIC等の集積回路によるハードウェアで構成してもよい。さらには、ソフトウェアとハードウェアとの協働により構成してもよい。また、ソフトウェアで構成する場合、マルチタスク処理に限定されない。
・前記実施形態において、第2の記憶手段を不揮発性メモリーとしてもよい。例えばプリンター稼働中には、プリンター本体側の不揮発性メモリー(第2の記録手段)に更新データを逐次書込み、この不揮発性メモリーのデータをインクカートリッジに実装された不揮発性の記憶素子47(第1の記憶手段)に書き戻す構成も採用できる。例えば電源オン時には記憶素子47からインク残量等のインク関連情報を含むデータDを本体側の不揮発性メモリーに書き込む構成とする。
・制御装置Cを、コントローラー40とメカコントローラー43とを一体とした構成としてもよい。この場合、コントローラーには、搬送制御タスク部やキャリッジ制御タスク部などのメカ駆動制御系のタスク部が追加される。この搬送制御タスク部は、搬送制御手段の一例を構成する。
・印刷媒体は、紙又は樹脂などからなる長尺状のシートに限定されず、単票紙や単票状の樹脂フィルムでもよい。また、金属製フィルム、布、フィルム基板、樹脂基板、半導体ウェハなどでもよい。また、CD、DVDなどの光ディスクや磁気ディスクなどでもよい。さらに、印刷媒体はシート状に限定されず、所定の立体形状の表面に印刷できる機構を有する印刷装置の場合、そのような所定の立体形状を有する物体も含む。
・印刷装置は、ラテラル式のプリンター11に限定されず、シリアルプリンター、ラインプリンター、ページプリンターでもよい。さらにインクジェット式に限定されず、ドットインパクト式プリンター、レーザープリンターなどでもよい。
・前記実施形態では、印刷装置として、インクジェット式のプリンター11が採用されているが、インク以外の他の流体を噴射したり吐出したりする流体噴射装置を採用してもよい。また、微小量の液滴を吐出させる液体噴射ヘッド等を備える各種の液体噴射装置に流用可能である。この場合、液滴とは、上記液体噴射装置から吐出される液体の状態を言い、粒状、涙状、糸状に尾を引くものも含むものとする。また、ここでいう液体とは、液体噴射装置が噴射させることができるような材料であればよい。例えば、物質が液相であるときの状態のものであればよく、粘性の高い又は低い液状体、ゾル、ゲル水、その他の無機溶剤、有機溶剤、溶液、液状樹脂、液状金属(金属融液)のような流状体、また物質の一状態としての液体のみならず、顔料や金属粒子などの固形物からなる機能材料の粒子が溶媒に溶解、分散または混合されたものなどを含む。また、液体の代表的な例としては上記実施形態で説明したようなインクや液晶等が挙げられる。ここで、インクとは一般的な水性インクおよび油性インク並びにジェルインク、ホットメルトインク等の各種液体組成物を包含するものとする。液体噴射装置の具体例としては、例えば液晶ディスプレイ、EL(エレクトロルミネッセンス)ディスプレイ、面発光ディスプレイ、カラーフィルタの製造などに用いられる電極材や色材などの材料を分散または溶解のかたちで含む液体を噴射する液体噴射装置が挙げられる。さらに、バイオチップ製造に用いられる生体有機物を噴射する液体噴射装置、精密ピペットとして用いられ試料となる液体を噴射する液体噴射装置、捺染装置やマイクロディスペンサ等であってもよい。さらに、時計やカメラ等の精密機械にピンポイントで潤滑油を噴射する液体噴射装置、光通信素子等に用いられる微小半球レンズ(光学レンズ)などを形成するために紫外線硬化樹脂等の透明樹脂液を基板上に噴射する液体噴射装置、基板などをエッチングするために酸又はアルカリ等のエッチング液を噴射する液体噴射装置を採用してもよい。そして、これらのうちいずれか一種の液体噴射装置に本発明を適用することができる。また、流体は、トナーなどの粉粒体でもよい。なお、本明細書でいう流体には、気体のみからなるものは含まないものとする。