以下、本発明を実施するための最良の形態について図面を用いて説明する。
〔第1の実施形態〕
(プリンタのシステム構成の説明)
図1は、画像形成装置の構成を示すブロック図である。
データ処理装置101(例えばPC)は、画像データを生成し、当該画像データを画像形成装置102に送信する。
画像形成装置102(例えばレーザープリンタ)は、データ処理装置101から画像データを受信し、当該画像データに基づいてシートに画像形成を行う。なお、画像形成装置102は、スキャナ機能やFAX機能等を有する複合機であってもよい。
UI301は、ユーザインターフェースであり、ユーザに様々な情報を伝える表示部や、ユーザから様々な操作を受け付ける操作部を有する。表示部には、後述するトナー残量のカレント値が表示される。なお、トナー残量のカレント値は、外部I/Fを介してデータ処理装置101等の外部装置に送信し、データ処理装置101等の外部装置が有する表示部に表示してもよい。
コントローラ302は、PDLデータに基づいてビットマップデータを生成し、当該ビットマップデータをプリントエンジン303に送信する。コントローラ302の詳細は、図2を用いて後述する。
プリントエンジン303は、コントローラ302から受信したビットマップデータに基づいて、電子写真方式でトナーを用いてシートに画像形成を行う。なお、画像形成の方式は、電子写真方式以外の、例えばインクジェット方式等でもよい。この場合、電子写真方式の記録材はトナーであるが、インクジェット方式の記録材はインクである。
なお、コントローラ302とプリントエンジン303は、別体としているが、一体であってもよい。
(コントローラのシステム構成の説明)
図2は、コントローラの構成を示すブロック図である。
CPU401は、ROM402に格納されたプログラムをRAM403に展開し、当該プログラムを実行して画像形成装置102の制御を行う。また、CPU401は、後述するように、ドットカウント部604でカウントされるドットカウントから換算されるトナー消費量の予測値や、プリントエンジン303から通知されるトナー残量のセンサー値に基づいて、トナー残量を算出する。そして、CPU401は、算出したトナー残量を、パネルI/F405を介してUI301に表示したり、外部I/F404を介してデータ処理装置101に通知したりする。
ROM402は、CPU401が実行するプログラム等を記憶する。
RAM403は、ROM402から展開されたプログラム等を記憶する。また、RAM403は、PDLデータ、PDLデータを解釈して生成される中間データ、中間データをレンダリングして生成されるビットマップデータ、その他の処理に必要な一時的な各種処理ステータスやログ情報等も記憶する。
外部I/F404は、データ処理装置101とコントローラ302とを相互に接続し、双方間のデータ通信すなわちデータの送信や受信を中継する。
パネルI/F405は、UI301とコントローラ302とを相互に接続し、双方間のデータ通信すなわちデータの送信や受信を中継する。
エンジンI/F406は、プリントエンジン303とコントローラ302とを相互に接続し、双方間のデータ通信すなわちデータの送信や受信を中継する。
DMAC407は、CPU401から命令を受け、RAM403に対してデータアクセスすなわちデータの書き込みや読み出しを行う。
レンダリング部408は、中間データをビットマップデータに展開する。
EEPROM410は、画像形成装置102の設定情報等を記憶する。
バス411は、コントローラ302内の各構成を相互に接続する。
(プリンタエンジンのシステム構成の説明)
図3は、プリントエンジンの構成を示すブロック図である。
CPU501は、ROM502に格納されたプログラムをRAM503に展開し、当該プログラムを実行してプリントエンジン303の制御を行う。
ROM502は、CPU501が実行するプログラム等を記憶する。
RAM503は、ROM502から展開されたプログラム等を記憶する。
トナー残量センサー504は、カートリッジ509に含まれるトナー残量を計測する。センサーにおけるトナー残量の検知方式としては、例えば、透磁率検知式、マグネット式、圧電振動式、透過光式等が存在する。センサーは、例えば、トナー残量が20%、0%等の所定値に達した場合に、その値をセンサー値として検知する。つまり、トナー残量が100%〜21%であるときは100%、トナー残量が20%〜1%であるときは20%、トナー残量が0%であるときは0%として検知する。なお、センサーは、カートリッジ509の中に備えられることとしてもよい。
駆動制御部505は、画像形成部508が画像形成を行う際に必要な各種モーターを駆動させる。
ステータス変化検知部506は、画像形成装置におけるジャムやカバーオープン等のステータス変化を検知する。また、ステータス変化検知部506は、カートリッジ509の交換も検知する。なお、テータス変化の検知は、CPU501が行うこととしてもよい。
コントローラI/F507は、コントローラ302とプリントエンジン303とを相互に接続し、双方間のデータ通信すなわちデータの送信や受信を中継する。
画像形成部508は、コントローラ302から受信したビットマップデータに基づいて、電子写真方式でトナーを用いてシートに画像形成を行う。
カートリッジ509は、トナーを収容する収容部として、画像形成装置102に装着可能な所謂プロセスカートリッジであり、画像形成部508が画像形成を行う際に使用するトナー等を格納する。また、カートリッジ509は、不揮発性の記憶媒体を有し、その中にはカートリッジ情報が記憶される。カートリッジ情報には、例えば、カートリッジが新品か否かを示す情報、カートリッジの色を示す色情報、カートリッジの現在のトナー残量を示すトナー残量情報等が含まれる。なお、カートリッジ509は、バス510には接続されているが、専用線を介してCPU501と接続されることとしてもよい。
バス510は、プリントエンジン303内の各構成を相互に接続する。
図4は、本発明におけるDMAC407の構成例を示すブロック図である。
DMA部601は、信号線420に接続されているハードウェアから、データを入力して、予めDMA部に設定された値に基づき、スムージング部602、PWM部603へデータを出力する。
スムージング部602は、入力データに対して、スムージング処理を行い、ドットカウント部604、PWM部603へデータを出力する。
PWM部603は、入力されたデータをPWM形式に変換して、信号線420、エンジンI/F406、プリントエンジン303へデータを出力する。
ドットカウント部604は、展開されたビットマップデータに含まれるドットのうち、画像形成を行う際にトナーを消費するドットの数をカウントする。具体的には、白以外の色のドット数がカウントされる。例えば、モノクロ印刷の場合は、K(黒)に対応するドット数である。また、カラー印刷の場合は、Y(イエロー)・M(マゼンダ)・C(シアン)・K(黒)の何れかに対応するドットの数である。なお、ドット数のカウントは、CPU401やレンダリング部408が行ってもよい。
(トナーの残量検知の制御処理の説明)
図5及び図6は、トナーの残量検知の制御を示すフローチャートである。
左側のフローチャートに示す制御は、コントローラ302において、CPU401がROM402に格納された制御プログラムをRAM403に展開して実行することにより実現される。また、右側のフローチャートに示す制御は、プリントエンジン303において、CPU501がROM502に格納された制御プログラムをRAM503に展開して実行することにより実現される。
まず、CPU501は、カートリッジ509が交換されたか否か判断する(S201)。カートリッジ509が交換されたことは、ステータス変化検知部506がカートリッジ509の交換を検知しCPU501に通知することによって認識される。カートリッジ509の交換は、部品の着脱に応じてハード的にオン/オフ状態が変化するボタンやスイッチやスイッチによって検知することとするが、他の方法で検知してもよい。S201でYESの場合、S202に進む。S201でNOの場合、待機する。
次に、CPU501は、カートリッジ509が交換された旨を示すカートリッジ交換通知を、コントローラI/F507を介してコントローラ302へ送信する(S202)。
次に、CPU401は、カートリッジ交換通知を、エンジンI/F406を介してプリントエンジン303から受信したか否か判断する(S101)。S101でYESの場合、S102に進む。S101でNOの場合、待機する。
次に、CPU401は、カートリッジ509のカートリッジ情報を要求するカートリッジ情報要求を、エンジンI/F406を介してプリントエンジン303へ送信する(S102)。
次に、CPU501は、カートリッジ情報要求を、コントローラI/F507を介してコントローラ302から受信したか否か判断する(S203)。S203でYESの場合、S204に進む。S203でNOの場合、待機する。
次に、CPU501は、カートリッジ509のカートリッジ情報を、コントローラI/F507を介してコントローラ302へ送信する(S204)。
次に、CPU401は、カートリッジ情報を、エンジンI/F406を介してプリントエンジン303から受信したか否か判断する(S103)。S103でYESの場合、S104に進む。S103でNOの場合、待機する。
次に、CPU401は、カートリッジ情報に基づいて、トナー残量のカレント値の初期化を行う(S104)。ここで、トナー残量のカレント値とは、コントローラ302がカートリッジ509のトナー残量として認識している値であり、UI301を介してユーザに表示される値である。トナー残量のカレント値の初期化は、具体的には、カートリッジ情報を参照し、カートリッジが新品であることが分かれば、トナー残量のカレント値を100%に設定する。また、カートリッジが新品であることが分からなければ、トナー残量のカレント値を前述したカートリッジ情報に含まれるトナー残量情報に対応する値に設定する。
次に、CPU401は、画像形成を実行すべきジョブを、ホストI/F404を介してデータ処理装置101から入力したか否か判断する(S105)。ここで、ジョブには、PDLデータが含まれている。S105でYESの場合、S106に進む。S105でNOの場合、待機する。
次に、CPU401は、印刷ジョブに基づいて、画像形成に必要な画像処理を実行する(S106)。ここで、画像処理の中には、レンダリング部408を制御して、PDLデータを展開しラスタデータを生成する処理が含まれる。
次に、CPU401は、画像処理によって生成されたラスタデータを、エンジンI/F406を介してプリントエンジン303へ送信する(S107)。
次に、CPU401は、ドットカウント部604から、ラスタデータの生成時に計測されたドットカウント値を取得する(S108)。なお、ドットカウント値は、ページ単位で取得してもよいし、ジョブ単位で取得してもよい。
次に、CPU401は、ドットカウント値に基づいて、画像形成を実行した後におけるトナー残量の予測値を算出する(S109)。具体的には、まず、(今回のジョブ又はページの印刷実行時におけるドットカウント値〔dot〕)×(ドット毎のトナー消費量〔g/dot〕)=(今回のジョブ実行によるトナー消費量〔g〕)という計算を行う。次に、(現在のトナー残量〔g〕)―(今回のジョブ実行によるトナー消費量〔g〕)=(新たなトナー残量〔g〕)という計算を行う。次に、(新たなトナー残量〔g〕)/(カートリッジの未使用状態におけるトナー残量〔g〕)=(新たなトナー残量の予測値〔%〕)という計算を行う。
次に、CPU401は、算出した予測値で、トナー残量のカレント値を更新する(S110)。
一方、CPU501は、ラスタデータを、コントローラI/F507を介してコントローラ302から受信したか否か判断する(S205)。S205でYESの場合、S206に進む。S205でNOの場合、待機する。
次に、CPU501は、画像形成部508を制御することにより、ラスタデータに基づいて画像形成を実行する(S206)。
次に、CPU501は、トナー残量センサー504から、トナー残量のセンサー値を取得する(S207)。なお、センサー値取得のタイミングは、ページ単位で画像形成が完了したタイミングでもよいし、ジョブ単位で画像形成が完了したタイミングでもよい。また、センサー値取得のタイミングは、所定の時間が経過する度としてもよい。
次に、CPU501は、今回取得したセンサー値が、前回取得したセンサー値から変化したか否か判断する(S208)。S208でYESの場合、S209に進む。S208でNOの場合、S205に戻る。
次に、CPU501は、センサー値が変化した旨を示すセンサー値変化通知を、コントローラI/F507を介してコントローラ302へ送信する(S209)。
次に、CPU401は、センサー値変化通知を、エンジンI/F406を介してプリントエンジン303から受信したか否か判断する(S111)。S111でYESの場合、S112に進む。S111でNOの場合、S105に戻る。
次に、CPU401は、センサー値を要求するセンサー値要求を、エンジンI/F406を介してプリントエンジン303へ送信する(S112)。
次に、CPU501は、センサー値要求を、コントローラI/F507を介してコントローラ302から受信したか否か判断する(S210)。S210でYESの場合、S211に進む。S210でNOの場合、待機する。
次に、CPU501は、センサー値を、コントローラI/F507を介してコントローラ302へ送信する(S211)。
次に、CPU401は、センサー値を、エンジンI/F406を介してプリントエンジン303から受信したか否か判断する(S113)。S113でYESの場合、S114に進む。S113でNOの場合、待機する。
次に、CPU401は、センサー値でトナー残量のカレント値を更新する(S114)。
次に、CPU401は、トナー残量のカレント値を参照して、トナー残量がゼロになったか否か判断する(S115)。S115でYESの場合、処理を終了する。S115でNOの場合、S105に戻る。
一方、CPU501は、トナー残量のセンサー値を参照して、トナー残量がゼロになったか否か判断する(S212)。S212でYESの場合、処理を終了する。S212でNOの場合、S205に戻る。
(トナー残量更新処理の説明)
図7は、本発明の実施例1におけるトナー残量更新処理を示すフローチャートである。
データ処理装置から送信された印刷ジョブデータをホストI/F402で受信したら、CPU401が、印刷ジョブデータをRAM403に保存する(S301)。
印刷ジョブデータをRAM403に保存した後、CPU401が、印刷ジョブデータのヘッダ部の解析を行う(S302)。
印刷ジョブデータは、ヘッダ部701とデータ部702で構成されている(図11(a))。ヘッダ部701には、印刷ジョブの解像度やスムージングの設定値のように印刷ジョブ全体に関わる設定値703が格納されている。データ部702には、PDL言語で記述された画像データが格納されている。
印刷ジョブデータのヘッダ部701の解析の後、CPU401が、印刷ジョブデータのデータ部702の解析を行う(S303)。
印刷ジョブデータのデータ部702の解析の後、CPU401が、ヘッダ部701の解析結果とデータ部702の解析結果に基づいて、印刷ジョブデータのデータ処理を行う(S304)。
図8は、本発明の実施例1における受信した印刷ジョブのヘッダ解析処理手順を示すフローチャートである。
CPU401が、RAM403に保存した印刷ジョブデータに、ヘッダ部701がついているか否かチェックを行う(S401)。
RAM403に保存した印刷ジョブデータにヘッダ部701が付いていれば、CPU401が、ヘッダ部701にある解像度、スムージングの設定値を含む設定値703を取得する(S402)。
CPU401が、ヘッダ部701から取得した解像度、スムージングの設定値を含む設定値703をRAM403に保存する(S403)。
図11(b)のように、前述の設定値703は印刷ジョブを特定するためのジョブID712と紐づけてRAM403に保存されている。
図9は、本発明の実施例1における受信した印刷ジョブのデータ解析処理手順を示すフローチャートである。
印刷ジョブデータのデータ部702に複数ページ含まれる場合があるため、データ解析開始時は、ページID=0として、CPU401が以下の処理を行う(S501)。
EEPROM410に保存されている画像形成装置102の解像度及びスムージングを含む設定値を、印刷ジョブデータのカレントページの設定値として、CPU401がRAM403に保存する(S502)。
図11(c)のように、前述のカレントページの設定値721は印刷ジョブを特定するためのジョブID722とページID723を紐づけてRAM403に保存されている。
RAM403に保存しているジョブの設定値711を参照する(S503)。
RAM403中にデータ解析中のジョブIDと一致するジョブの設定値711がRAM403に保存してあれば、その設定値711を取得する(S504、S505)。
取得した設定値をRAM403にある印刷ジョブデータのカレントページの設定値721にCPU401が上書き保存する(S506)。
CPU401は、RAM403に保存してある印刷ジョブデータのデータ部702について1ページ分PDL解析を行う(S507)。
解析の結果、カレントページの設定値が含まれていれば、その設定値を、RAM403にある印刷ジョブデータのカレントページの設定値721にCPU401が上書き保存する(S508、5409、5410)。
RAM403に保存されている中間データから、レンダリング部408は、カレントページの印刷画像データを生成して、RAM403に保存する(S511)。
RAM403に印刷ジョブデータのデータ部702で未解析の部分があれば、ステップS513へ進む。RAM403に印刷ジョブデータのデータ部702の解析が残っていなければ、CPU401が印刷ジョブデータの解析を終了する(S512)。
ステップS511では、CPU401がカレントページを1ページ加算した上で、S503のフローへ進む(S511)。
図10は、本発明の実施例1における受信した印刷ジョブのデータ処理手順を示すフローチャートである。
印刷ジョブデータのデータ部702に複数ページ含まれる場合があるため、データ処理開始時は、ページID=0として、CPU401が以下の処理を行う(S601)。
CPU401が、ドットカウント部604の機能を有効にする。次に、RAM403に保存しているカレントページの設定情報に従い、DMA部601、スムージング部602、PWM部603の設定を行う。そして、CPU401が、DMA部601に対して、RAM403に保存した印刷画像データの出力実行を行う(S602)。
解像度が1200DPIか、もしくは、スムージングがOFFに設定されていた場合、印刷画像データは、DMAC407内のDMA部601、スムージング部602を経由して、ドットカウント部604、PWM部603へ出力される。印刷画像データがドットカウント部604へ入力されると、ドットカウント部604は印刷画像データのドット数をカウントする。印刷画像データがPWM部603へ入力されると、PWM部603は、印刷画像データをPWM形式に変換して、エンジンI/F406を経由して、プリントエンジン303へ出力する。
解像度が1200DPIか、もしくは、スムージングがOFFに設定されていた場合、印刷画像データは、DMAC407内のDMA部601を経由して、PWM部603へ出力される。印刷画像データがドットカウント部604へ入力されないので、ドットカウント部604は印刷画像データのドット数をカウントしない。印刷画像データがPWM部603へ入力されると、PWM部603は、印刷画像データをPWM形式に変換して、エンジンI/F406を経由して、プリントエンジン303へ出力する。
カレントページの印刷画像出力後、CPU401が、RAM403に保存しているカレントページの設定値721を参照する(S603)。
参照の結果、解像度が600DPIであれば、ステップS305へ進む。解像度が600DPI以外であればステップS308へ進む(S604)。
ステップS605では、カレントページの設定情報において、スムージングがONであれば、ステップS606へ進む。スムージングがON以外であればステップS608へ進む(S605)。
ステップS606では、CPU401がドットカウント部604からカレントページの印刷画像のドット数を取得する(S606)。
そして、CPU401が、取得したドット数と予め保持している係数Aを用いて演算を行い、カレントページのトナー残量値を算出して、RAM403に保存する(S607)。
ステップS608では、CPU401が、予め保持している係数Bをカレントページのトナー残量値として、RAM403に保存する(S608)。
RAM403に印刷ジョブデータの未出力の印刷画像データがまだ残っていれば、ステップS310へ進む。RAM403に印刷ジョブデータの印刷画像データが残っていなければ、CPU401が印刷ジョブデータのデータ処理を終了する(S609)。
ステップS610では、CPU401がカレントページを1ページ加算した上で、S602のフローへ進む(S610)。
(トナー残量算出値の基本的な推移の説明)
図12は、トナー残量の推移を示す図である。
L100は、現実のトナー残量の推移である。ここで、現実のトナー残量とは、実際に存在しているトナー残量の正確な値であり、例えばセンサーが全体域に渡って非常に精度の良いものでない限り、直接的に取得することは非常に困難である。
L200は、トナー残量のセンサー値の推移である。
L210は、トナー残量のセンサー値がとり得る値である。この例において、とり得る値は、100%、20%、0%であり、20%をLowレベル(カートリッジを交換する目安となるトナー無しに近い状態)の閾値とする。
L300は、トナー残量のカレント値の推移である。
P100〜P102は、物理量のポイントである。各ポイントとカレント値との関係は、以下のとおりである。
P100は、カートリッジが交換された際に、S104で、トナー残量のカレント値を100%に初期化した時に対応する。
P100〜P101の区間は、トナー残量のセンサー値が100%から20%に変化するまでの間に、S105〜S111のループを繰り返して、トナー残量の予測値を算出しトナー残量のカレント値を更新し続けている区間に対応する。
P101は、トナー残量のカレント値が急に変化する時であり、トナー残量のセンサー値が100%から20%に変化した際に、S114で、トナー残量のセンサー値によりトナー残量のカレント値を20%に更新した時に対応する。
P101〜P102の区間は、トナー残量のセンサー値が20%から0%に変化するまでの間に、S105〜S111のループを繰り返して、トナー残量の予測値を算出しトナー残量のカレント値を更新し続けている区間に対応する。
P102は、トナー残量のカレント値が急に変化する時であり、トナー残量のセンサー値が20%から0%に変化した際に、S114で、トナー残量のセンサー値によりトナー残量のカレント値を0%に更新した時に対応する。
(実施例1でのトナー残量算出の効果説明)
図13は、本発明の実施例1におけるトナー残量算出の効果を説明する図である。
図13(a)は、従来技術であるドットカウント値が得られた印刷ジョブのみトナー残量値の算出を行った場合の、トナー残量算出値の推移を説明する図である。
800は、物理消費と同じ消費量を取得できる仮定した場合の理想的な通知残量値の推移を示す線である。
810は、プリントエンジン303から通知され得るセンサー残量値(%)のポイントの例である。この例では、プリントエンジン303から通知され得るセンサー残量値は、100%、20%、0%であり、20%をLowレベルのしきい値とする。
820は、ドットカウント値が得られた印刷ジョブのみトナー残量値の算出を行った場合の通知残量値の推移を示す線である。
P821からP822の区間及びP823からP824の区間は、ドットカウント値が得られる印刷ジョブが実行されている区間である。この区間では、印刷ジョブ実行時に得られるドットカウント値に基づいて算出されたトナー残量値に従って推移する。
P822からP823の区間は、ドットカウント値が得られない印刷ジョブが実行されている区間である。そのため、P822からP823の区間のトナー残量値の変化がない状態となる。
P824からP825の区間は、プリントエンジン303から通知され得るセンサー残量値の通知により、トナー残量値は急激な推移が発生する。
821は、プリントエンジン303から通知され得るセンサー残量値の通知時の、ドットカウント値が得られた印刷ジョブのみトナー残量値の算出を行った場合の通知残量値と、理想的な通知残量値の差を示している。
図13(b)は、従来技術であるドットカウント値が得られた印刷ジョブのみトナー残量値の算出を行った場合の、トナー残量算出値の推移を説明する図である。
820は、ページが加算される毎に一律係数Bを計上することによって、トナー残量値の算出を行った場合の通知残量値の推移を示す線である。
P832からP324の区間は、印刷ジョブによらず、ページが加算される毎に一律係数Bを計上しているため、理想的な通知残量値との乖離が大きくなる。
P834からP835の区間は、プリントエンジン303から通知され得るセンサー残量値の通知により、トナー残量値は急激な推移が発生する。
831は、プリントエンジン303から通知され得るセンサー残量値の通知時の、ページが加算される毎に一律係数Bを計上することによって、トナー残量値の算出を行った場合の通知残量値と、理想的な通知残量値の差を示している。
図13(c)は、本発明の実施例1におけるトナー残量更新処理を行った場合のトナー残量算出値の推移を説明する図である。
840は、本発明の実施例1におけるトナー残量更新処理を行った場合のトナー残量算出値の推移を示す線である。
P841からP842の区間及びP843からP844の区間は、ドットカウント値が得られる印刷ジョブが実行されている区間である。この区間では、図13(a)の820と同じようにトナー残量値が推移する。
P842からP843の区間は、ドットカウント値が得られない印刷ジョブが実行されている区間である。この区間では、ページが加算される毎に一律係数Bをトナー残量値として計上しているため、図13(b)の830と同じようにトナー残量値が推移する。
P824からP825の区間は、プリントエンジン303から通知され得るセンサー残量値の通知により、トナー残量値は緩やかな推移が発生する。
841は、プリントエンジン303から通知され得るセンサー残量値の通知時の、本発明の実施例1におけるトナー残量更新処理を行った場合の通知残量値と、理想的な通知残量値の差を示している。
図13(a)821、図13(b)831、図13(b)841から、本発明の実施例1におけるトナー残量更新処理を行った場合の通知残量値と理想的な通知残量値の差が、従来技術による通知残量値と理想的な通知残量値の差より小さいことがわかる。
以上のように、本発明の実施例1におけるトナー残量更新処理を行うことにより、特定のデータパスのみしかドットカウント機能を使用することができないハードウェア構成を持つ画像形成装置でも、精度の高いトナー残量量を算出することができる。
〔第2の実施形態〕
実施例1において、印刷ジョブのデータ処理において、カレントページの設定情報がドットカウント部604にデータが入力できない値だった場合、一律係数Bをトナー残量値として算出していた。ところが、ドラフトモード設定時や通常より低い濃度で出力するような設定情報がなされていた場合、カレントページのトナー残量値として一律係数Bを用いて算出すると、実際のトナー残量値から乖離してしまう。
そこで、実施例1の印刷ジョブのデータ処理手順を一部変更することによって、前述の設定情報を加味したトナー残量値の算出を行う。
(トナー残量更新処理)
図14は、本発明の実施例2におけるトナー残量更新処理を示すフローチャートである。
本フローは、図7で説明したフローと同じであり、データ処理の中身が異なる。
図15は、本発明の実施例2における受信した印刷ジョブのデータ処理手順を示すフローチャートである。
印刷ジョブデータのデータ部702に複数ページ含まれる場合があるため、データ処理開始時は、ページID=0として、CPU401が以下の処理を行う(S801)。
CPU401が、ドットカウント部604の機能を有効にする。次に、RAM403に保存しているカレントページの設定情報に従い、DMA部601、スムージング部602、PWM部603の設定を行う。そして、CPU401が、DMA部601に対して、RAM403に保存した印刷画像データの出力実行を行う(S802)。
解像度が1200DPIか、もしくは、スムージングがOFFに設定されていた場合、印刷画像データは、DMAC407内のDMA部601、スムージング部602を経由して、ドットカウント部604、PWM部603へ出力される。印刷画像データがドットカウント部604へ入力されると、ドットカウント部604は印刷画像データのドット数をカウントする。印刷画像データがPWM部603へ入力されると、PWM部603は、印刷画像データをPWM形式に変換して、エンジンI/F406を経由して、プリントエンジン303へ出力する。
解像度が1200DPIか、もしくは、スムージングがOFFに設定されていた場合、印刷画像データは、DMAC407内のDMA部601を経由して、PWM部603へ出力される。印刷画像データがドットカウント部604へ入力されないので、ドットカウント部604は印刷画像データのドット数をカウントしない。印刷画像データがPWM部603へ入力されると、PWM部603は、印刷画像データをPWM形式に変換して、エンジンI/F406を経由して、プリントエンジン303へ出力する。
カレントページの印刷画像出力後、CPU401が、RAM403に保存しているカレントページの設定値721を参照する(S803)。
参照の結果、解像度が600DPIであれば、ステップS505へ進む。解像度が600DPI以外であればステップS808へ進む(S804)。
ステップS805では、カレントページの設定情報において、スムージングがONであれば、ステップS806へ進む。スムージングがON以外であればステップS808へ進む(S805)。
ステップS806では、CPU401がドットカウント部604からカレントページの印刷画像のドット数を取得する(S806)。
そして、CPU401が、取得したドット数と予め保持している係数Aを用いて演算を行い、カレントページのトナー残量値を算出して、RAM403に保存する(S807)。
参照の結果、ドラフトモードがOFFであれば、ステップS809へ進む。ドラフトモードがOFF以外であればステップS811へ進む(S808)。
ステップS809では、カレントページの設定値において、トナー濃度レベルが標準値以上であれば、ステップS810へ進む。トナー濃度レベルが標準値未満であればステップS811へ進む(S811)。
ステップS810では、CPU401が、予め保持している係数Bをカレントページのトナー残量値として、RAM403に保存する(S810)。
ステップS811では、CPU401が、カレントページのトナー残量値を0として、RAM403に保存する(S811)。
RAM403に印刷ジョブデータの未出力の印刷画像データがまだ残っていれば、ステップS410へ進む。RAM403に印刷ジョブデータの印刷画像データが残っていなければ、CPU401が印刷ジョブデータのデータ処理を終了する(S809)。
ステップS810では、CPU401がカレントページを1ページ加算した上で、S802のフローへ進む(S810)。
(実施例2でのトナー残量算出の効果説明)
図16は、本発明の実施例2におけるトナー残量算出の効果を説明する図である。
図16(a)は、低濃度で印刷される印刷ジョブが実行されたときに、実施例1におけるトナー残量更新処理行った場合の、トナー残量算出値の推移の一例を説明する図である。
800は、物理消費と同じ消費量を取得できる仮定した場合の理想的な通知残量値の推移を示す線である。
810は、プリントエンジン303から通知され得るセンサー残量値(%)のポイントの例である。この例では、プリントエンジン303から通知され得るセンサー残量値は、100%、20%、0%であり、20%をLowレベルのしきい値とする。
850は、実施例1におけるトナー残量更新処理行った場合の通知残量値の推移を示す線である。
P851からP852の区間及びP853からP854の区間は、ドットカウント値が得られる印刷ジョブが実行されている区間である。この区間では、印刷ジョブ実行時に得られるドットカウント値に基づいて算出されたトナー残量値に従って推移する。
P852からP853の区間は、ドットカウント値が得られない印刷ジョブが実行されている区間である。この区間では、ページが加算される毎に一律係数Bをトナー残量値として計上しているため、図13(c)の830と同じようにトナー残量値が推移する。
ただし、実際には、低濃度で印刷される印刷ジョブが実行されているため、実際には理想的な通知残量値の推移を示す線800からは乖離してしまう。
P854からP855の区間は、プリントエンジン303から通知され得るセンサー残量値の通知により、理想的な通知残量値との差異が判明して、トナー残量値を極端に緩やかに推移させる必要が発生する。
851は、プリントエンジン303から通知され得るセンサー残量値の通知時の、低濃度で印刷される印刷ジョブが実行されたときに、実施例1におけるトナー残量更新処理行った場合の、トナー残量算出値と、理想的な通知残量値の差を示している。
図16(b)は、本発明の実施例2におけるトナー残量更新処理を行った場合のトナー残量算出値の推移を説明する図である。
860は、本発明の実施例1におけるトナー残量更新処理を行った場合のトナー残量算出値の推移を示す線である。
P861からP862の区間及びP863からP864の区間は、ドットカウント値が得られる印刷ジョブが実行されている区間である。この区間では、図16(a)の850と同じようにトナー残量値が推移する。
P862からP863の区間は、ドットカウント値が得られない印刷ジョブが実行されている区間である。印刷するページの設定値から低濃度で印刷されるジョブであることが判断できるので、この区間ではトナー残量値に加算を行わない状態となる。
P864からP865の区間は、プリントエンジン303から通知され得るセンサー残量値の通知により、トナー残量値は緩やかな推移が発生する。
861は、プリントエンジン303から通知され得るセンサー残量値の通知時の、本発明の実施例2におけるトナー残量更新処理を行った場合の通知残量値と、理想的な通知残量値の差を示している。
図16(a)851、図16(b)861から、本発明の実施例1のトナー残量更新処理と比較して、本実施例2のトナー残量更新処理の方が理想的な通知残量値の差が小さいことがわかる。
以上のように、本発明の実施例2におけるトナー残量更新処理を行うことにより、低濃度で印刷される印刷ジョブが実行されているときでも、精度の高いトナー残量量を算出することができる。
〔第3の実施形態〕
実施例1において、印刷ジョブのデータ解析処理において、保存ジョブのように印刷までに時間がある場合でも、ハードウェアのドットカウント機能が使用できない場合は、カレントページのトナー残量値として一律係数Bを用いて算出していた。印刷までに時間がある場合、CPU401によるドットカウントを行い、その結果を、トナー残量値に使う方法も考えられる。そこで、実施例1のトナー残量更新処理の手順を一部変更することによって実現する。
(保存ジョブの処理手順の説明)
図17は、本発明の実施例3における受信した印刷データの保存ジョブの処理手順を示すフローチャートである。
本フローは、図7で説明したフローと同じであり、データ解析処理、データ処理の中身が異なる。
図18は、本発明の実施例3における受信した印刷データの保存ジョブのデータ解析処理手順を示すフローチャートである。
RAM403に保存したヘッダ部701から取得したジョブ種の設定値を参照して、保存ジョブか否かを確認する(S1001)。
ステップS1002の結果、ジョブ種が保存ジョブであれば、ステップS1003に進む(S1002)。
ステップS1002の結果、ジョブ種が保存ジョブ以外であれば、図7で示した実施例1のデータ解析処理と同じフローを通す(S1010)。
ステップS1003では、印刷ジョブデータのデータ部702に複数ページ含まれる場合があるため、データ解析開始時は、ページID=0として、CPU401が以下の処理を行う(S1003)。
CPU401は、RAM403に保存してある印刷ジョブデータのデータ部702について1ページ分PDL解析を行う(S1004)。
RAM403に保存されている中間データから、レンダリング部408は、カレントページの印刷画像データを生成して、RAM403に保存する(S1005)。
カレントページの印刷画像データ生成後、CPU401が印刷画像データのドット数をカウントする(S1006)。
印刷画像データのドット数をカウントした後、CPU401が印刷画像データのドット数を図11(b)のようにページの設定値721の構造でRAM403に保存する(S1007)。
RAM403に印刷ジョブデータのデータ部702で未解析の部分があれば、ステップS1009へ進む。RAM403に印刷ジョブデータのデータ部702の解析が残っていなければ、CPU401が印刷ジョブデータの解析を終了する(S1008)。
ステップS1009では、CPU401がカレントページを1ページ加算した上で、S1004のフローへ進む(S1009)。
図19は、本発明の実施例3における受信した印刷データの保存ジョブのデータ処理手順を示すフローチャートである。
RAM403に保存したヘッダ部701から取得したジョブ種の設定値を参照して、保存ジョブか否かを確認する(S1101)。
ステップS1101の結果、ジョブ種が保存ジョブ以外であれば、図9で示した実施例1のデータ解析処理と同じフローを通す(S1103)。
ステップS1101の結果、ジョブ種が保存ジョブであれば、CPU401が、RAM403に保存した印刷ジョブデータ及び全ページ分のページの設定値を、リムーバブルメディアに保存する。(S1102)。
(保存ジョブの印刷実行時のトナー残量更新処理手順の説明)
図20は、本発明の実施例3における保存ジョブの印刷実行時のトナー残量更新処理手順を示すフローチャートである。
保存ジョブの印刷指示を受けたら、CPU401が、リムーバブルメディア304に保存されている印刷ジョブデータ及び全ページ分の設定値を、RAM403に保存する。(S1201)。
ステップS1202以降のフローは、図7で説明したトナー残量更新処理手順フローのステップS302以降と同じであり、データ処理の中身のみ異なる。
図21は、本発明の実施例3における保存ジョブの印刷実行時のデータ処理手順を示すフローチャートである。
印刷ジョブデータのデータ部702に複数ページ含まれる場合があるため、データ処理開始時は、ページID=0として、CPU401が以下の処理を行う(S1301)。
CPU401が、ドットカウント部604の機能を有効にする。次に、RAM403に保存しているカレントページの設定情報に従い、DMA部601、スムージング部602、PWM部603の設定を行う。そして、CPU401が、DMA部601に対して、RAM403に保存した印刷画像データの出力実行を行う(S1302)。
解像度が1200DPIか、もしくは、スムージングがOFFに設定されていた場合、印刷画像データは、DMAC407内のDMA部601、スムージング部602を経由して、ドットカウント部604、PWM部603へ出力される。印刷画像データがドットカウント部604へ入力されると、ドットカウント部604は印刷画像データのドット数をカウントする。印刷画像データがPWM部603へ入力されると、PWM部603は、印刷画像データをPWM形式に変換して、エンジンI/F406を経由して、プリントエンジン303へ出力する。
解像度が1200DPIか、もしくは、スムージングがOFFに設定されていた場合、印刷画像データは、DMAC407内のDMA部601を経由して、PWM部603へ出力される。印刷画像データがドットカウント部604へ入力されないので、ドットカウント部604は印刷画像データのドット数をカウントしない。印刷画像データがPWM部603へ入力されると、PWM部603は、印刷画像データをPWM形式に変換して、エンジンI/F406を経由して、プリントエンジン303へ出力する。
カレントページの印刷画像出力後、CPU401が、RAM403に保存しているカレントページの設定値721を参照する(S1303)。
カレントページの印刷画像出力後、CPU401が、RAM403に保存されているページの設定値のうち、カレントページのドット数が保存されているか確認する。カレントページのドット数が保存されていた場合、CPU401が、取得したドット数と予め保持している係数Aを用いて演算を行い、カレントページのトナー残量値を算出して、RAM403に保存する(1308)。
カレントページのドット数が保存されていなかった場合は、ステップS1305へ進む。
ステップS1305では、参照の結果、解像度が600DPIであれば、ステップS1305へ進む。解像度が600DPI以外であればステップS1309へ進む(S1305)。
ステップS1306では、カレントページの設定値において、スムージングがONであれば、ステップS1307へ進む。スムージングがON以外であればステップS1309へ進む(S1306)。
ステップS1307では、CPU401がドットカウント部604からカレントページの印刷画像のドット数を取得する(S1307)。
そして、CPU401が、取得したドット数と予め保持している係数Aを用いて演算を行い、カレントページのトナー残量値を算出して、RAM403に保存する(S1308)。
ステップS1309では、CPU401が、予め保持している係数Bをカレントページのトナー残量値として、RAM403に保存する(S1309)。
RAM403に印刷ジョブデータの未出力の印刷画像データがまだ残っていれば、ステップS1311へ進む。RAM403に印刷ジョブデータの印刷画像データが残っていなければ、CPU401が印刷ジョブデータのデータ処理を終了する(S1310)。
ステップS1311では、CPU401がカレントページを1ページ加算した上で、S1302のフローへ進む(S1311)。
(実施例3でのトナー残量算出の効果説明)
図22は、本発明の実施例3におけるトナー残量算出の効果を説明する図である。
800は、物理消費と同じ消費量を取得できる仮定した場合の理想的な通知残量値の推移を示す線である。
810は、プリントエンジン303から通知され得るセンサー残量値(%)のポイントの例である。この例では、プリントエンジン303から通知され得るセンサー残量値は、100%、20%、0%であり、20%をLowレベルのしきい値とする。
870は、本発明の実施例1におけるトナー残量更新処理を行った場合のトナー残量算出値の推移を示す線である。
P871からP872の区間及びP873からP874の区間は、ドットカウント値が得られる印刷ジョブが実行されている区間である。この区間では、図13(a)の820と同じようにトナー残量値が推移する。
P872からP873の区間は、保存ジョブの受信時にドットカウント値を取得しているため、P871からP872の区間及びP873からP874の区間と同じようにトナー残量値が推移する。
P874からP875の区間は、プリントエンジン303から通知され得るセンサー残量値の通知により、トナー残量値は緩やかな推移が発生する。
871は、プリントエンジン303から通知され得るセンサー残量値の通知時の、本発明の実施例1におけるトナー残量更新処理を行った場合の通知残量値と、理想的な通知残量値の差を示している。
図13(c)841、図22 871から、本発明の実施例1のトナー残量更新処理と比較して、本実施例3のトナー残量更新処理の方が理想的な通知残量値の差が小さいことがわかる。
以上のように、本発明の実施例3におけるトナー残量更新処理を行うことにより、保存ジョブ印刷実行時に精度の高いトナー残量量を算出することができる。
〔第4の実施形態〕
実施例1において、印刷ジョブのデータ解析処理において、データ解析済みで且つ未印刷の印刷画像データが相当量残っている場合も、保存ジョブと同様に印刷までに時間をある程度確保できる。この場合も、CPU401によるドットカウントを行い、その結果を、トナー残量値に使う方法も考えられる。そこで、実施例1のトナー残量更新処理手順を一部変更することによって実現する。
(印刷ジョブの処理手順の説明)
図23は、本発明の実施例4における受信した印刷ジョブの処理手順を示すフローチャートである。
本フローは、図7で説明したフローと同じであり、データ解析処理、データ処理の中身のみ異なる。データ処理の中身は、実施例3で示した保存ジョブの印刷実行時のデータ処理手順のフローと同じである。
図24は、本発明の実施例4における受信した印刷ジョブのデータ解析処理手順を示すフローチャートである。
印刷ジョブデータのデータ部702に複数ページ含まれる場合があるため、データ解析開始時は、ページID=0として、CPU401が以下の処理を行う(S1501)。
EEPROM410に保存されている画像形成装置102の解像度及びスムージングを含む設定値を、印刷ジョブデータのカレントページの設定値として、CPU401がRAM403に保存する(S1502)。
図11(c)のように、前述のカレントページの設定値721は印刷ジョブを特定するためのジョブID722とページID723を紐づけてRAM403に保存されている。
RAM403に保存しているジョブの設定値711を参照する(S1503)。
RAM403中にデータ解析中のジョブIDと一致するジョブの設定値711がRAM403に保存してあれば、その設定値711を取得する(S1504、S1505)。
取得した設定値をRAM403にある印刷ジョブデータのカレントページの設定値721にCPU401が上書き保存する(S1506)。
CPU401は、RAM403に保存してある印刷ジョブデータのデータ部702について1ページ分PDL解析を行う(S1507)。
解析の結果、カレントページの設定値が含まれていれば、その設定値を、RAM403にある印刷ジョブデータのカレントページの設定値721にCPU401が上書き保存する(S1508、S1509、S1510)。
RAM403に保存されている中間データから、レンダリング部408は、カレントページの印刷画像データを生成して、RAM403に保存する(S1511)。
印刷画像データ生成後、CPU401が、RAM403に保存されているカレントページの設定値721を参照する(S1512)。
ステップS1513では、参照の結果、解像度が600DPIであれば、ステップS1513へ進む。解像度が600DPI以外であればステップS1518へ進む(S1513)。
ステップS1514では、カレントページの設定値において、スムージングがONであれば、ステップS1515へ進む。スムージングがON以外であればステップS1518へ進む(S1514)。
ステップS1515では、RAM403に保存されている未出力の印刷画像データを確認する。未出力の印刷画像データが予め定めた所定ページ未満であれば、ステップS1516へ進む。未出力の印刷画像データが予め定めた所定ページ以上あれば、ステップS1515へ進む。
ステップS1516では、CPU401がカレントページの印刷画像のドット数をカウントする(S1516)。
印刷画像データのドット数をカウントした後、CPU401が印刷画像データのドット数をRAM403に保存する(S1517)。
RAM403に印刷ジョブデータのデータ部702で未解析の部分があれば、ステップS413へ進む。RAM403に印刷ジョブデータのデータ部702の解析が残っていなければ、CPU401が印刷ジョブデータの解析を終了する(S1518)。
ステップS1519では、CPU401がカレントページを1ページ加算した上で、S1502のフローへ進む(S1519)。
(実施例4でのトナー残量算出の効果説明)
図25は、本発明の実施例4におけるトナー残量算出の効果を説明する図である。
800は、物理消費と同じ消費量を取得できる仮定した場合の理想的な通知残量値の推移を示す線である。
810は、プリントエンジン303から通知され得るセンサー残量値(%)のポイントの例である。この例では、プリントエンジン303から通知され得るセンサー残量値は、100%、20%、0%であり、20%をLowレベルのしきい値とする。
880は、本発明の実施例1におけるトナー残量更新処理を行った場合のトナー残量算出値の推移を示す線である。
P881からP882の区間及びP883からP884の区間は、ドットカウント値が得られる印刷ジョブが実行されている区間である。この区間では、図13(a)の820と同じようにトナー残量値が推移する。
P882からP883の区間は、データ処理よりデータ解析処理が所定ページ以上進んでいる場合、データ解析時にドットカウント値を取得しているため、P881からP882の区間及びP883からP884の区間と同じようにトナー残量値が推移する。
P884からP885の区間は、プリントエンジン303から通知され得るセンサー残量値の通知により、トナー残量値は緩やかな推移が発生する。
881は、プリントエンジン303から通知され得るセンサー残量値の通知時の、本発明の実施例1におけるトナー残量更新処理を行った場合の通知残量値と、理想的な通知残量値の差を示している。
図13(c)841、図25 881から、本発明の実施例1のトナー残量更新処理と比較して、本実施例4のトナー残量更新処理の方が理想的な通知残量値の差が小さいことがわかる。
以上のように、本発明の実施例4におけるトナー残量更新処理を行うことにより、データ処理よりデータ解析処理が所定ページ以上進んでいる場合に精度の高いトナー残量量を算出することができる。
このように、本実施形態では、ドットカウントをカウント可能とするとともに、印刷条件によりトナー残量値算出を制御する。
なお、上述した各実施形態では、ハードウェアのドットカウント機能を使用できないケースとして、解像度やスムージングの設定値による場合を挙げたが、本特許はこれらに限定するものではない。
また、上述した各実施形態では、通常より低濃度で印刷する設定方法として、ドラフトモードやトナー濃度の設定を挙げたが、本特許はこれらに限定するものではない。
〔他の実施形態〕
本発明は、以下の処理を実行することによっても実現される。
即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは情報処理装置に供給し、そのシステム或いは情報処理装置のCPU等がプログラムを読み出して実行する処理である。