(57)【要約】【課題】複数のヘッド制御部を備える印刷装置において、メイン制御部に負荷をかけることなく画像処理部と複数のヘッド制御部との間で通信を行う。【解決手段】複数の印刷ヘッドのそれぞれを制御する複数のヘッド制御部と、前記複数のヘッド制御部と汎用バスを介して通信する画像処理部と、前記画像処理部および前記汎用バスを介して前記ヘッド制御部を制御するメイン制御部と、前記メイン制御部が前記画像処理部および前記汎用バスを介して前記ヘッド制御部を制御する第一モードと、前記画像処理部が当該画像処理部と前記複数のヘッド制御部との間の前記汎用バスを介したメッセージの通信を制御する第二モードと、を周期的に切り換える切り換え手段と、を備える。【選択図】図３
2013166361.tif 000002
【特許請求の範囲】
【請求項１】
複数の印刷ヘッドのそれぞれを制御する複数のヘッド制御部と、
前記複数のヘッド制御部と汎用バスを介して通信する画像処理部と、
前記画像処理部および前記汎用バスを介して前記ヘッド制御部を制御するメイン制御部と、
前記メイン制御部が前記画像処理部および前記汎用バスを介して前記ヘッド制御部を制御する第一モードと、前記画像処理部が当該画像処理部と前記複数のヘッド制御部との間の前記汎用バスを介したメッセージの通信を制御する第二モードと、を周期的に切り換える切り換え手段と、
を備える印刷装置。
【請求項２】
前記第二モードにおいては、前記第一モードにおいて前記汎用バスの複数本のデータ信号線および複数本のアドレス信号線として機能する信号線のうちの少なくともいずれかそれぞれが、
前記メッセージを示す信号が出力される少なくとも１本のメッセージ信号線、
前記メッセージを示す信号の転送を同期させるためのクロック信号が出力されるクロック信号線、
前記ヘッド制御部からの前記メッセージの送信要求を示す信号が出力される送信要求信号線であって前記複数のヘッド制御部のそれぞれに対応する送信要求信号線、および、
前記送信要求に対する送信許可を示す信号が出力される送信許可信号線であって前記複数のヘッド制御部のそれぞれに対応する送信許可信号線、
のいずれかとして機能する、
請求項１に記載の印刷装置。
【請求項３】
前記第二モードにおいて前記ヘッド制御部は、前記メッセージを送信する場合にまず、当該ヘッド制御部に対応する前記送信要求信号線に前記送信要求を示す信号を出力し、当該ヘッド制御部に対応する前記送信許可信号線に前記送信許可を示す信号が出力された場合に前記メッセージを示す信号を前記メッセージ信号線に出力し、
前記第二モードにおいて前記画像処理部は、前記送信要求信号線に前記送信要求を示す信号を出力している一つ以上の前記ヘッド制御部のうちの同時点においては一つの前記ヘッド制御部に対応する前記送信許可信号線に前記送信許可を示す信号を出力する、
請求項２に記載の印刷装置。
【請求項４】
前記第二モードにおいて前記画像処理部は、前記ヘッド制御部に前記メッセージを送信する場合、いずれの前記送信許可信号線にも前記送信許可を示す信号を出力しない状態で前記メッセージ信号線に前記メッセージを示す信号を出力する、
請求項２または請求項３に記載の印刷装置。
【請求項５】
前記メッセージは、宛先部とメッセージ本体部とを含み、
前記宛先部には、前記画像処理部および前記複数のヘッド制御部のうちの少なくともいずれかを宛先として示す値が設定され、
前記メッセージ本体部には、前記画像処理部から前記ヘッド制御部への印刷データの転送の状況を示す値が設定される、
請求項１〜請求項４のいずれかに記載の印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の印刷ヘッドを備える印刷装置に関する。
【背景技術】
【０００２】
大判プリンターにおいては、複数の印刷ヘッドを搭載する機種が増加する傾向にある。そして、複数の印刷ヘッドごとに一つずつヘッドコントローラーを割り当て、各ヘッドコントローラーが対応する印刷ヘッドを制御する構成が採用されることが多い。特許文献１には、ＣＰＵバスを用いることなく印刷データを印刷ヘッドに転送することによりＣＰＵの負荷を軽減することが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３１４４２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
外部から印刷対象の画像データを取得すると、メイン制御部が画像処理部に画像データに基づいて印刷データを生成させ、画像処理部が複数のヘッド制御部のそれぞれに生成した印刷データを転送する構成を備えた印刷装置について考える。複数の印刷ヘッドで吐出タイミングを同期させるために、ヘッド制御部が画像処理部から印刷データを受信完了したことや、あるいはエラーで受信を完了できなかったことなどの情報を、ヘッド制御部や画像処理部の間で通知しあう必要がある。
ヘッド制御部が別のヘッド制御部や画像処理部と前述のような情報を通知しあうには、例えば割り込み信号でメイン制御部に通知して、メイン制御部がその割り込みサービスとして画像処理部や別のヘッド制御部に前述の情報を通知してもらうという方法が考えられる。しかしメイン制御部は、前述の割り込みが発生する度にその割り込みに対応する処理を行うためにＣＰＵ処理時間を割かねばならず、その間他の処理を実行できない。その結果、印刷装置全体のスループットの低下をまねく。またメイン制御部の割り込み信号に対するシステム応答時間や割り込みの優先順位等に応じて、割り込み信号をヘッド制御部が出力してから当該割り込みに対する処理が実行されるまでの時間が遅延する可能性がある。処理速度の速いＣＰＵを採用すればそれらの問題は解決しうるが、処理速度の速いＣＰＵを採用することはコストアップにつながる。
【０００５】
なお、メイン制御部を介さずに前述の情報を通知しあう別の方法として、例えば、ヘッド制御部自身がバスマスターとして動作し他のヘッド制御部に直接通信を行う方法が考えられる。しかしこの場合、各ヘッド制御部が例えばＰＣＩバスなどの仕様に準拠しバス権取得のプロトコルに対応している必要がある。そのために信号端子数やパッケージサイズが増加することになりコストアップにつながる。また、バス権取得の際のアービトレーション期間を極力小さくするために高速なクロックが必要になり、その場合に信号品質を確保するために基板層数や配線領域が増加する。そのためコストアップにつながる。またあるいは、メイン制御部を介さずに前述の情報を通知しあう別の方法として、ヘッド制御部同士で通信用の専用信号線を設ける方法が考えられる。しかし、信号端子数が増えることはヘッドコントローラーのコストアップにつながる。また、配線領域が増えることで基板サイズが大きくなり、全体のコストアップにつながる。
本発明は、複数のヘッド制御部を備える印刷装置において、メイン制御部に負荷をかけることなく画像処理部と複数のヘッド制御部との間で通信を行うことを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するための印刷装置は、複数のヘッド制御部と、画像処理部と、メイン制御部と、切り換え手段と、を備える。複数のヘッド制御部は、複数の印刷ヘッドのそれぞれを制御する機能を有する。画像処理部は、複数のヘッド制御部と汎用バスを介して通信する機能を有する。メイン制御部は、画像処理部および汎用バスを介してヘッド制御部を制御する機能を有する。切り換え手段は、メイン制御部が画像処理部および汎用バスを介してヘッド制御部を制御する第一モードと、画像処理部が当該画像処理部と複数のヘッド制御部との間の汎用バスを介したメッセージの通信を制御する第二モードと、を周期的に切り換える機能を有する。
【０００７】
このような構成を備えることにより、第二モードにおいては、画像処理部とヘッド制御部との間の通信にメイン制御部の介在が不要となるため、第二モード期間中はメイン制御部を他の処理に充てることができる。したがって本発明の構成を採用することにより、メイン制御部のスループット向上に寄与することができる。また、画像処理部と複数のヘッド制御部との間でメッセージを通信するために別のバスを新たに設けるのではなく、同一のバスの使用方法を時間によって切り換える構成であるので、コストアップを抑制できる。なお、画像処理部と複数のヘッド制御部との間のメッセージの通信は、画像処理部および複数のヘッド制御部のうちの一つのデバイスが送信元となり、他のデバイスのうちの少なくともいずれかを宛先とするメッセージを送信することを意味する。
【０００８】
さらに、上記目的を達成するための印刷装置において、第二モードにおいては、第一モードにおいて汎用バスの複数本のデータ信号線および複数本のアドレス信号線として機能する信号線のうちの少なくともいずれかそれぞれが、次の役割を果たす信号線として機能する。すなわち、メッセージを示す信号が出力される少なくとも１本のメッセージ信号線、メッセージを示す信号の転送を同期させるためのクロック信号が出力されるクロック信号線、ヘッド制御部からのメッセージの送信要求を示す信号が出力される送信要求信号線であって複数のヘッド制御部のそれぞれに対応する送信要求信号線、および、送信要求に対する送信許可を示す信号が出力される送信許可信号線であって前記複数のヘッド制御部のそれぞれに対応する送信許可信号線、のいずれかとして機能する。
【０００９】
このように第一モードと第二モードとで信号線の機能を切り換えることにより、後述するように第二モードにおいて画像処理部と各ヘッド制御部との間でメッセージの通信をメイン制御部の介在なしに行うことができる。
【００１０】
さらに、上記目的を達成するための印刷装置において、第二モードにおいてヘッド制御部は、メッセージを送信する場合にまず、当該ヘッド制御部に対応する送信要求信号線に送信要求を示す信号を出力し、当該ヘッド制御部に対応する送信許可信号線に送信許可を示す信号が出力された場合にメッセージを示す信号をメッセージ信号線に出力する。また、第二モードにおいて画像処理部は、送信要求信号線に送信要求を示す信号を出力している一つ以上のヘッド制御部のうちの同時点においては一つのヘッド制御部に対応する送信許可信号線に送信許可を示す信号を出力する。
【００１１】
このように画像処理部が第二モードにおいて汎用バスのアービトレーションをすることにより、メイン制御部の介在なしに汎用バスを用いて各ヘッド制御部からメッセージを送信させることができる。
【００１２】
さらに、上記目的を達成するための印刷装置において、第二モードにおいて画像処理部は、ヘッド制御部にメッセージを送信する場合、いずれの送信許可信号線にも送信許可を示す信号を出力しない状態でメッセージ信号線にメッセージを示す信号を出力する。
この場合、他のメッセージと競合せずに画像処理部がメッセージを送信することができる。
【００１３】
さらに、上記目的を達成するための印刷装置において、メッセージは、宛先部とメッセージ本体部とを含んでもよい。その場合に宛先部には、画像処理部および複数のヘッド制御部のうちの少なくともいずれかを宛先として示す値が設定されてもよい。また、メッセージ本体部には、画像処理部からヘッド制御部への印刷データの転送の状況を示す値が設定されてもよい。
このような構成のメッセージを画像処理部と複数のヘッド制御部との間で通知しあうことにより、画像処理部からヘッド制御部への印刷データの転送状況を他のヘッド制御部または画像処理部と共有することが可能できる。
【００１４】
なお、請求項に記載された各部の機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせにより実現される。また、これら各手段や各部の機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。さらに、本発明は印刷装置を上記のように制御するプログラムの発明としても、またそのプログラムを記録する記録媒体の発明としても成立する。むろん、そのプログラムを記録する記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体であってもよい。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態にかかるプリンターが備えるメインコントローラーと画像処理ＡＳＩＣと複数のヘッドコントローラーの構成を示すブロック図。
【図２】第一モードと第二モードとの切り換えを示すタイミングチャート。
【図３】（３Ａ）〜（３Ｃ）は、印刷データ転送に関するメッセージの通信を示すタイミングチャート。
【図４】（４Ａ）は画像処理ＡＳＩＣからメッセージが送信される際のタイミングチャート、（４Ｂ）はヘッドコントローラーからメッセージが送信される際のタイミングチャート。
【図５】（５Ａ）はメッセージのデータ構成を示す図、（５Ｂ）はメッセージの宛先部に設定される値と意味の対応関係を示す図、（５Ｃ）はメッセージ本体部に設定される値と意味の対応関係を示す図。
【図６】ヘッドコントローラーからの送信要求が競合した場合のタイミングチャート。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を添付図面を参照しながら以下の順に説明する。尚、各図において対応する構成要素には同一の符号が付され、重複する説明は省略される。
１．第一実施形態
１−１．構成
図１は、本発明の一実施形態にかかるプリンター（印刷装置）の発明の要部の構成を示すブロック図である。本実施形態のプリンターは複数の印刷ヘッドＨ０〜Ｈ３を備えた大判プリンターである。各印刷ヘッドＨ０〜Ｈ３はそれぞれ１：１に対応するヘッドコントローラー（ヘッド制御部として機能する）ＨＣ０〜ＨＣ３によって制御される。なお、以降ではヘッドコントローラーＨＣ０〜ＨＣ３のうちの任意のヘッドコントローラーを指す場合や全てのヘッドコントローラーを指す場合にヘッドコントローラーＨＣと表記する。メインコントローラー（メイン制御部として機能する）１０は、図示しないＣＰＵ，ＲＡＭ，ＲＯＭや、通信インターフェイス回路など各種の回路等を備え、ＲＯＭに格納されたプログラムをＲＡＭを用いてＣＰＵで実行し各種の回路と協働してプリンター全体を制御しプリンターを印刷装置として機能させる。例えば外部から印刷対象の画像データを取得すると、メインコントローラー１０は画像処理ＡＳＩＣ（画像処理部として機能する）１１に画像データに基づいて印刷データを生成させる。メインコントローラー１０と画像処理ＡＳＩＣ１１とはバスＢ１を介して通信する。
【００１７】
画像処理ＡＳＩＣ１１は、図示しないＣＰＵ，ＲＡＭ，ＲＯＭや画像処理回路、通信インターフェイス回路など各種の回路を備え、ＲＯＭに格納されたプログラムをＲＡＭを用いてＣＰＵで実行し画像処理回路や通信インー他フェイス回路と協働しながら主に画像処理に関する各種処理を行うことができる。例えば画像処理ＡＳＩＣ１１は、印刷対象の画像データに対して、イメージバッファー１２を使用しながら解像度変換処理や色変換処理やハーフトーン処理等を施して各ヘッドコントローラーＨＣに受け渡す形式の印刷データを生成する。生成した印刷データはイメージバッファー１２に格納される。画像処理ＡＳＩＣ１１とイメージバッファー１２とはバスＢ２を介して通信する。
【００１８】
画像処理ＡＳＩＣ１１は、バンド単位で印刷データを生成し、生成した印刷データのうちの印刷ヘッドがドット形成を担当する部分の印刷データを当該印刷ヘッドに対応するヘッドコントローラーにイメージバッファー１２から順に転送する。画像処理ＡＳＩＣ１１と各ヘッドコントローラーＨＣとは２種類のバスＢ３，Ｂ４を介して通信することができる。印刷データは、印刷データ転送用のバスＢ４を介して各ヘッドコントローラーＨＣに転送される。バスＢ４はバスＢ３と比較して高速にデータ転送が可能なバスであり、大容量の印刷データの転送を担当する。なお、画像処理ＡＳＩＣ１１は、印刷データをバスＢ４を介して画像処理ＡＳＩＣ１１からヘッドコントローラーＨＣに転送する際、メインコントローラー１０の介在無しで転送することができる。
【００１９】
各ヘッドコントローラーＨＣは、図示しないＣＰＵ，ＲＡＭ，ＲＯＭ、画像処理回路、通信インターフェイス回路などを備え、ＲＯＭに格納されているプログラムをＲＡＭを用いてＣＰＵで実行し画像処理回路や通信インターフェイス回路と協働して、対応するヘッドを制御する。具体的には各ヘッドコントローラーＨＣは、画像処理ＡＳＩＣ１１から転送された印刷データに対して並べ替え処理等の処理を施して、処理後のデータに基づいて対応する印刷ヘッドにインクを吐出させるための駆動信号を所定の同期信号に同期させて印刷ヘッドに出力する。
【００２０】
各印刷ヘッドＨ０〜Ｈ３はそれぞれに対応するヘッドコントローラーＨＣから出力された駆動信号に応じてインク滴をノズルから吐出し、印刷媒体上に画像を形成する。吐出タイミングは複数の印刷ヘッドにおいて同期が取れている必要があり、そのためには各ヘッドコントローラーＨＣから対応する印刷ヘッドに駆動信号を出力するタイミングが同期している必要がある。そのためには、当該タイミングにおいて各ヘッドコントローラーＨＣが駆動信号を出力できる状態である必要がある。駆動信号が出力できる状態であるためには、画像処理ＡＳＩＣ１１から各ヘッドコントローラーＨＣへの印刷データの転送が完了している必要がある。したがって、画像処理ＡＳＩＣ１１から各ヘッドコントローラーＨＣへの印刷データの転送が完了したか否か等の状況が画像処理ＡＳＩＣ１１や各ヘッドコントローラーＨＣ間で共有できることが望まれる。
【００２１】
画像処理ＡＳＩＣ１１と各ヘッドコントローラーＨＣとの間に存在するもう一つのバスである「汎用バス」としてのバスＢ３は、本実施形態においては、第一モードと第二モードの２種類のモードで使用される。第一モードにおいては、メインコントローラー１０が画像処理ＡＳＩＣ１１を介して各ヘッドコントローラーＨＣを制御するための各種コマンドを送信するため等に使用される。第二モードにおいては、画像処理ＡＳＩＣ１１とヘッドコントローラーＨＣとの間のメッセージの通信に使用される。メッセージとは上述したような印刷データの転送状況などを通知するためのデータを意味する。
【００２２】
バスＢ３は、非同期ＳＲＡＭインターフェイス仕様に準拠した信号線で構成されている。具体的にはバスＢ３は、８本のアドレス信号線（Ａ［７：０］）と、８本のデータ信号線（Ｄ［７：０］）と、４本のチップセレクト信号線（ＣＳ０＃、ＣＳ１＃、ＣＳ２＃、ＣＳ３＃）と、ライトイネーブル信号線（ＷＥ＃）と、アウトプットイネーブル信号線（ＯＥ＃）とを備える。８本のアドレス信号線（Ａ［７：０］）や８本のデータ信号線（Ｄ［７：０］）はそれぞれ１本の線として図示されているが、それぞれ８本ずつの信号線で構成される。画像処理ＡＳＩＣ１１は、８本のアドレス信号線（Ａ［７：０］）と、８本のデータ信号線（Ｄ［７：０］）と、４本のチップセレクト信号線（ＣＳ０＃、ＣＳ１＃、ＣＳ２＃、ＣＳ３＃）と、ライトイネーブル信号線（ＷＥ＃）と、アウトプットイネーブル信号線（ＯＥ＃）のそれぞれと接続している。
【００２３】
ヘッドコントローラーＨＣ０は、８本のアドレス信号線（Ａ［７：０］）と、８本のデータ信号線（Ｄ［７：０］）と、チップセレクト信号線（ＣＳ０＃）と、ライトイネーブル信号線（ＷＥ＃）と、アウトプットイネーブル信号線（ＯＥ＃）とに接続している。ヘッドコントローラーＨＣ１は、８本のアドレス信号線（Ａ［７：０］）と、８本のデータ信号線（Ｄ［７：０］）と、チップセレクト信号線（ＣＳ１＃）と、ライトイネーブル信号線（ＷＥ＃）と、アウトプットイネーブル信号線（ＯＥ＃）とに接続している。ヘッドコントローラーＨＣ２は、８本のアドレス信号線（Ａ［７：０］）と、８本のデータ信号線（Ｄ［７：０］）と、チップセレクト信号線（ＣＳ２＃）と、ライトイネーブル信号線（ＷＥ＃）と、アウトプットイネーブル信号線（ＯＥ＃）とに接続している。ヘッドコントローラーＨＣ３は、８本のアドレス信号線（Ａ［７：０］）と、８本のデータ信号線（Ｄ［７：０］）と、チップセレクト信号線（ＣＳ３＃）と、ライトイネーブル信号線（ＷＥ＃）と、アウトプットイネーブル信号線（ＯＥ＃）とに接続している。
【００２４】
プリンターの電源投入直後のプリンターでは、第一モードのみが有効になっている。メインコントローラー１０が画像処理ＡＳＩＣ１１に第一モードと第二モードが切り替わる状態に遷移することを指示することで、画像処理ＡＳＩＣは第一モードと第二モードの２つのモードのそれぞれに応じた通信処理を実行できる状態となる。またメインコントローラー１０が各ヘッドコントローラーに画像処理ＡＳＩＣ１１およびバスＢ３を介して第二モードを有効にするコマンドを送信すると、各ヘッドコントローラーＨＣでは第一モードと第二モードとの切り換えを検知しモードに応じた通信処理を行う状態に遷移する。
【００２５】
図２は、第一モードと第二モードとが周期的に切り換えられることを示すバスＢ３におけるタイミングチャートである。第一モードの期間ではバスＢ３は、非同期ＳＲＡＭインターフェイスの通信仕様に従った通信を行う。例えば図２では、第一モード中にメインコントローラー１０の指示に応じて画像処理ＡＳＩＣ１１がアドレス信号線（Ａ［７：０］）にアドレスを示す信号を出力して、チップセレクト信号線（ＣＳ０＃）およびライトイネーブル信号線（ＷＥ＃）をアサートして、データ信号線（Ｄ［７：０］）にコマンドＣ１を示す信号を送出する例を示している。また図２には、同様にコマンドＣ２を送出する例も示している。ヘッドコントローラーＨＣ０は第一モードにおいてこのようにして転送されたコマンドＣ１を受信しコマンドＣ１に応じた処理を実行することができる。またヘッドコントローラーＨＣ０は第一モードにおいて転送されたコマンドＣ２を受信しコマンドＣ２に応じた処理を実行することができる。
【００２６】
第一モードを継続する期間の長さｔ１は予め決められている。第一モードにおいては上述したように、メインコントローラー１０は画像処理ＡＳＩＣ１１を介してヘッドコントローラーＨＣにコマンドを送信する。期間ｔ１は例えばコマンドを１回送信するのに要する時間に相当する。第一モードにおいては上述したように、画像処理ＡＳＩＣ１１ではメインコントローラー１０からの指示に応じてヘッドコントローラーＨＣにコマンドを送信するという第一モードに対応する画像処理ＡＳＩＣ１１における通信処理が実行される。また第一モードにおいては上述したように、ヘッドコントローラーＨＣではコマンドが送信されると送信されたコマンドを受信してコマンドに応じた処理を実行するという第一モードに対応するヘッドコントローラーにおける通信処理が実行される。第一モード期間が開始してから長さｔ１の時間が経過すると、メインコントローラー１０および画像処理ＡＳＩＣ１１は第一モードから第二モードへの切り換えタイミングであると判断し、画像処理ＡＳＩＣ１１は、ライトイネーブル信号線（ＷＥ＃）とアウトプットイネーブル信号線（ＯＥ＃）とを一旦アサートした後ネゲートする（図２の点線１０２を参照）。各ヘッドコントローラーＨＣは、図２の点線１０２内に示されるようにＷＥ＃とＯＥ＃がＬからＨになったことを検出するとともに、自身に対応するチップセレクト信号線（ＣＳｎ＃）がネゲートされていること確認すると第二モードに切り換ったと判断し、第二モードに対応するヘッドコントローラーＨＣにおける通信処理（メインコントローラー１１を介在させずに画像処理ＡＳＩＣ１１とヘッドコントローラーＨＣとの間で通信を行う）を実行する。また、第二モードにおいてメインコントローラー１０はヘッドコントローラーＨＣとは通信せずに別の処理を行う。また、第二モードにおいて画像処理ＡＳＩＣ１１は第二モードに対応する画像処理ＡＳＩＣ１１における通信処理（メインコントローラー１０を介在させずに画像処理ＡＳＩＣ１１とヘッドコントローラーＨＣとの間で通信を行う）を実行する。
【００２７】
ところで、第二モード期間において、バスＢ３のアドレス信号線（図２の点線１００で囲まれた期間のＡ［７：０］）とデータ信号線（図２の点線１０１で囲まれた期間のＤ［７：０］）とは、第一モードにおける同信号線の機能とは別の機能が割り当てられる。具体的には図４に示すように８本のデータ信号線（Ｄ［７：０］）のうちのＤ［０］がヘッドコントローラーＨＣ０に対応する送信要求信号線（ＲＥＱ０＃）として機能する。また、Ｄ［１］がヘッドコントローラーＨＣ１に対応する送信要求信号線（ＲＥＱ１＃）として機能する。また、Ｄ［２］がヘッドコントローラーＨＣ２に対応する送信要求信号線（ＲＥＱ２＃）として機能する。また、Ｄ［３］がヘッドコントローラーＨＣ３に対応する送信要求信号線（ＲＥＱ３＃）として機能する。また、８本のアドレス信号線（Ａ［７：０］）のうちのＡ［０］がヘッドコントローラーＨＣ０に対応する送信許可信号線（ＧＮＴ０＃）として機能する。また、Ａ［１］がヘッドコントローラーＨＣ１に対応する送信許可信号線（ＧＮＴ１＃）として機能する。また、Ａ［２］がヘッドコントローラーＨＣ２に対応する送信許可信号線（ＧＮＴ２＃）として機能する。また、Ａ［３］がヘッドコントローラーＨＣ３に対応する送信許可信号線（ＧＮＴ３＃）として機能する。また、８本のアドレス信号線Ａ［７：０］のうちのＡ［７］がクロック信号線（ＳＣＬＫ）として機能し、８本のデータ信号線Ｄ［７：０］のうちのＤ［７］がメッセージを送信するためのメッセージ信号線（ＳＤＡＴＡ）として機能する。
【００２８】
各ヘッドコントローラーは、第二モードに切り換わったと判断してから一定期間（例えば１６ＳＣＬＫ）経過後に全てのヘッドコントローラーＨＣのＲＥＱｎ＃がＨになっている場合に第一モードに再び切り換わるタイミングであると判断する。第二モードから第一モードに切り換わるタイミングであると判断すると各ヘッドコントローラーＨＣは、第一モードに対応するヘッドコントローラーＨＣにおける通信処理を実行する。メッセージを送信したいヘッドコントローラーＨＣは、第一モードから第二モードに切り替わったことを検出してから一定期間（例えば１６ＳＣＬＫ）が経過する前に送信要求信号線（ＲＥＱｎ＃）に送信要求を示す信号を出力するように、第二モードに対応するヘッドコントローラーにおける通信処理として予めプログラミングされている。また、画像処理ＡＳＩＣ１１においてもメッセージを送信したい場合は、第二モードに切り換わってから一定期間（例えば１６ＳＣＬＫ）が経過する前にメッセージを送信するように第二モードに対応する画像処理ＡＳＩＣ１１における通信処理として予めプログラミングされている。また、画像処理ＡＳＩＣ１１は、第二モードに切り換わって以降、全てのヘッドコントローラーＨＣや画像処理ＡＳＩＣ１１自身のメッセージの送信が終了し全てのヘッドコントローラーＨＣのＲＥＱｎ＃がＨになった時点（なお、第二モードにおいてはメッセージが一つも送信されない場合があってもよい）で第二モードが終了した（第二モードから第一モードへの切り換えタイミングである）と判断し、第一モードに対応する通信処理に切り換える。このようにすると、第二モードは一定期間ではなく、送信するメッセージが少ない場合には第二モードの期間を短くすることができ、その結果、早く第一モードへ移行することができる。また第一モードへの移行が遅くなりすぎないように第二モードの最大期間ｔ２が予め決められている。各ヘッドコントローラーＨＣは送信要求している途中であってもｔ２期間経過後にはＲＥＱｎ＃をＬからＨにネゲートする。そして、そのヘッドコントローラーＨＣは次回の第二モードに再度送信要求する。
【００２９】
メインコントローラー１０も画像処理ＡＳＩＣ１１のモード切り換え判断に同期しており、ヘッドコントローラーＨＣと通信する場合は第一モードの期間中に通信するように予めプログラミングされている。原則的には第一モードにおいてのみメインコントローラー１０はヘッドコントローラーＨＣと通信しないが、例外的にヘッドコントローラーＨＣへ第二モード期間中に通信しようとした場合は、メインコントローラー１０は画像処理ＡＳＩＣ１１にその通信を待機させられる。画像処理ＡＳＩＣ１１は、第二モード期間中にメインコントローラー１０を待機させていた場合はその通信を、モードが再度第一モードに切り換わってから行うようにする。このようにしてメインコントローラー１０や画像処理ＡＳＩＣ１１や各ヘッドコントローラーＨＣがモードの切り換えを判断し、各モードの期間中には当該モードに応じた通信処理を実行するようにしている。したがって、メインコントローラー１０や画像処理ＡＳＩＣ１１や各ヘッドコントローラーＨＣは「切り換え手段」としても機能する。
【００３０】
なお、第一モードにおいてはアドレス信号線（Ａ［７：０］）と接続する画像処理ＡＳＩＣ１１の８個の端子は、画像処理ＡＳＩＣ１１から各ヘッドコントローラーＨＣへ信号を出力する端子として使用され、各ヘッドコントローラーにおいてアドレス信号線（Ａ［７：０］）と接続する端子は信号を入力する端子として使用される。そのため第二モードにおいてもアドレス信号線（Ａ［７：０］）は画像処理ＡＳＩＣ１１においては出力端子として、またヘッドコントローラーにおいては入力端子として使用できるように、送信許可信号線（ＧＮＴ０＃〜ＧＮＴ３＃）やクロック信号線（ＳＣＬＫ）がアドレス信号線（Ａ［７：０］）のいずれかに割り当てられている。なお、第二モードにおいてクロック信号線（ＳＣＬＫ）に出力されるクロック信号は画像処理ＡＳＩＣ１１が生成し出力する。
【００３１】
また、第一モードにおいてはデータ信号線（Ｄ［７：０］）と接続する画像処理ＡＳＩＣ１１の８個の端子は入出力端子として使用され、ヘッドコントローラーにおいてデータ信号線（Ｄ［７：０］）と接続する端子も入出力端子として使用される。そのため第二モードにおいてデータ信号線（Ｄ［７：０］）には、ヘッドコントローラー側が出力した信号を画像処理ＡＳＩＣ１１が入力することになる送信要求信号線（ＲＥＱ０＃〜ＲＥＱ３＃）や、画像処理ＡＳＩＣ１１およびヘッドコントローラーＨＣが信号を入出力することになるメッセージ信号線（ＳＤＡＴＡ）が割り当てられる。
【００３２】
仮にアドレス信号線（Ａ［７：０］）に接続する画像処理ＡＳＩＣ１１の端子や、アドレス信号線（Ａ［７：０］）に接続するヘッドコントローラーＨＣの端子が、入出力端子として設定されている場合は、第二モードにおいてアドレス信号線（Ａ［７：０］）およびデータ信号線（Ｄ［７：０］）のうちのどの信号線が送信要求信号線や送信許可信号線やクロック信号線やメッセージ信号線に割り当てられても良い。
【００３３】
１−２．印刷データの画像処理ＡＳＩＣから各ヘッドコントローラーへの転送
図３は、画像処理ＡＳＩＣ１１から各ヘッドコントローラーＨＣへの印刷データの転送とその際に通信されるメッセージの例を示すタイミングチャートである。まず図３Ａを参照しながら印刷データの転送の流れを説明する。まず画像処理ＡＳＩＣ１１がヘッドコントローラーに転送する印刷データの準備が完了すると、画像処理ＡＳＩＣ１１は第二モード期間においてメッセージＭ１を転送する。本実施形態においてメッセージは図５Ａに示すように、８ｂｉｔの値で構成される。より具体的にはメッセージは４ｂｉｔの宛先部と４ｂｉｔのメッセージ本体部とからなる。宛先部に設定される値とその値が示す意味との対応付けは例えば図５Ｂに示すように画像処理ＡＳＩＣ１１と各ヘッドコントローラーＨＣとの間で予め共有されている。各ヘッドコントローラーＨＣや画像処理ＡＳＩＣ１１のそれぞれを個別の宛先とするユニキャストを示す値と、各ヘッドコントローラーＨＣと画像処理ＡＳＩＣの全てを宛先とするブロードキャストを示す値が予め決められている。また、図５Ｃに示すように、メッセージ本体部の値と意味も、画像処理ＡＳＩＣ１１と各ヘッドコントローラーＨＣとの間で共通の対応関係が予め決められている。
【００３４】
図３Ａの説明に戻る。宛先部に「ブロードキャスト」を意味する値「１１１１」が設定されメッセージ本体部に「画像処理ＡＳＩＣ１１が印刷データの準備を完了した」ことを意味する値「１０００」が設定されたメッセージＭ１がバスＢ３のＤ［７］すなわち第二モードにおけるメッセージ信号線ＳＤＡＴＡに送出されると、各ヘッドコントローラーＨＣは、メッセージＭ１を受けて印刷データの転送を待機する状態に遷移する。より具体的には、各ヘッドコントローラーＨＣは、メッセージＭ１を受信し宛先部がブロードキャストであることから自身も宛先に含まれることを特定し、メッセージ本体部の値が示す意味を特定したことによって、印刷データの転送を待機する状態に遷移する。なお、画像処理ＡＳＩＣ１１がメッセージを送信する場合は、図４Ａに示すようにいずれかのヘッドコントローラーＨＣの送信要求信号線（ＲＥＱｎ＃）がアサートされていたとしても送信許可を与えることなくどの送信許可信号線（ＧＮＴ０＃〜ＧＮＴ３＃）もネゲートした状態のまま、自身が生成してクロック信号線（ＳＣＬＫ）に出力するクロック信号に同期させてメッセージ信号線（ＳＤＡＴＡ）にメッセージを送出する。
【００３５】
バスＢ４を介して画像処理ＡＳＩＣ１１が印刷データＰＤ１をヘッドコントローラーＨＣ０に転送し終えると、第二モード期間においてヘッドコントローラーＨＣ０は宛先部に「ブロードキャスト」を示す値が設定されメッセージ本体部に「ヘッドコントローラーＨＣ０が印刷データを受信完了した」ことを示す値「００００」が設定されたメッセージＭ２をＳＤＡＴＡに送出する。ブロードキャストであるので、画像処理ＡＳＩＣ１１やその他のヘッドコントローラーＨＣ１，ＨＣ２，ＨＣ３もヘッドコントローラーＨＣ０が印刷データの受信を完了したことを認識することができる。
【００３６】
図４Ｂは、ヘッドコントローラーＨＣ０がメッセージＭ２を送信する場合のタイミングチャートを示している。まずヘッドコントローラーＨＣ０は、自身に対応する送信要求信号線（ＲＥＱ０＃）をアサートし、送信要求を示す。画像処理ＡＳＩＣ１１は第二モード期間中に、各送信要求信号線（ＲＥＱ０＃，ＲＥＱ１＃，ＲＥＱ２＃，ＲＥＱ３＃）のうち１つ以上の送信要求信号線がアサートされた（送信要求を示す信号が出力された）ことを検出すると、送信要求信号線をアサートしている１以上のヘッドコントローラーのうちの同時点においては一つのヘッドコントローラーに対応する送信許可信号線をアサートしてメッセージの送信を許可する（メッセージの送信権を与える）。図４Ｂにおいては、同時点においてはヘッドコントローラーＨＣ０に対応する送信要求信号線（ＲＥＱ０＃）のみがアサートされているので、画像処理ＡＳＩＣ１１はヘッドコントローラーＨＣ０に対応する送信許可信号線（ＧＮＴ０＃）をアサート（送信許可を示す信号を出力）する。送信要求を出していたヘッドコントローラーＨＣは自身に対応する送信許可信号線がアサートされるとメッセージ信号線（ＳＤＡＴＡ）に、８ｂｉｔのメッセージをクロック信号に同期させて送信する。すなわち図４Ｂの場合はヘッドコントローラーＨＣ０がメッセージＭ２をＳＣＬＫに同期させてＳＤＡＴＡに送出する。
【００３７】
仮に、図６に示すように第二モードにおいてヘッドコントローラーＨＣ０とヘッドコントローラーＨＣ２が同時期に送信要求信号線をアサートしている場合は、前述したように画像処理ＡＳＩＣ１１は同時期においてはそのうちのいずれかに送信許可を出す。図６の場合は、ヘッドコントローラーＨＣ０に送信許可を出していることを示している。その結果メッセージ信号線ＳＤＡＴＡには先にヘッドコントローラーＨＣ０からのメッセージＭ２０が送出される。ヘッドコントローラーＨＣ０の送信許可信号線をアサートしてから所定期間後（本実施形態においてメッセージのサイズは８ｂｉｔと決められているのでメッセージの送信に要する時間が経過したと画像処理ＡＳＩＣ１１が判断した後）に画像処理ＡＳＩＣ１１は送信要求を出しているヘッドコントローラーＨＣ２に対応する送信許可信号線（ＧＮＴ２＃）をアサートしてメッセージの送信を許可する。このようにして、第二モードにおいて画像処理ＡＳＩＣ１１はアービトレーションを行う。
【００３８】
図３Ａの説明に戻る。画像処理ＡＳＩＣ１１はヘッドコントローラーＨＣ０への印刷データＰＤ１の転送が完了したことをメッセージＭ２によって認識すると、他のヘッドコントローラーにも印刷データの転送を行う。例えば次に生成し終えた印刷データがヘッドＨ２に対応するヘッドコントローラーＨＣ２に転送するための印刷データＰＤ２である場合、画像処理ＡＳＩＣ１１はヘッドコントローラーＨＣ２にバスＢ４を介して印刷データＰＤ２を送信する。ヘッドコントローラーＨＣ２が印刷データＰＤ２の受信を完了すると第二モード期間において、宛先部に「ブロードキャスト」を示す値が設定されメッセージ本体部に「ヘッドコントローラーＨＣ２が印刷データを受信完了した」ことを示す値「００１０」が設定されたメッセージＭ３を送信する。
【００３９】
画像処理ＡＳＩＣ１１はヘッドコントローラーＨＣ２への印刷データＰＤ２の転送が完了したことをメッセージＭ３によって認識すると、残りのヘッドコントローラーにも印刷データの転送を行う。例えば次に画像処理ＡＳＩＣ１１が生成し終えた印刷データがヘッドＨ１に対応するヘッドコントローラーＨＣ１に転送するための印刷データＰＤ３である場合、画像処理ＡＳＩＣ１１はヘッドコントローラーＨＣ１にバスＢ４を介して印刷データＰＤ３を送信する。ヘッドコントローラーＨＣ１が印刷データＰＤ３の受信を完了すると、第二モードにおいて宛先部に「ブロードキャスト」を示す値が設定されメッセージ本体部に「ヘッドコントローラーＨＣ１が印刷データを受信完了した」ことを示す値「０００１」が設定されたメッセージＭ４を送信する。
【００４０】
画像処理ＡＳＩＣ１１はヘッドコントローラーＨＣ１への印刷データＰＤ２の転送が完了したことをメッセージＭ４によって認識すると、残りのヘッドコントローラーにも印刷データの転送を行う。画像処理ＡＳＩＣ１１は残りのヘッドコントローラーＨＣ３にバスＢ４を介して印刷データＰＤ４を送信する。ヘッドコントローラーＨＣ３が印刷データＰＤ４の受信を完了すると、宛先部に「ブロードキャスト」を示す値が設定されメッセージ本体部に「ヘッドコントローラーＨＣ３が印刷データを受信完了した」ことを示す値「００１１」が設定されたメッセージＭ５を第二モード期間において送信する。このように画像処理ＡＳＩＣ１１や各ヘッドコントローラーＨＣは、第二モードにおいてメッセージＭ１〜Ｍ５を送信することにより、メインコントローラー１０の介在なしに、各ヘッドコントローラーＨＣが印刷データを受信したことを確認しあうことができる。
【００４１】
図３Ｂは、印刷データを画像処理ＡＳＩＣ１１から各ヘッドコントローラーＨＣに転送する際にエラーが発生した場合のタイミングチャートを示している。図３ＢにおいてメッセージＭ６，Ｍ７，Ｍ８，Ｍ９は図３ＡにおけるメッセージＭ１，Ｍ２，Ｍ３，Ｍ４と同様であるので説明を省略する。画像処理ＡＳＩＣ１１が印刷データＰＤ８を転送中にエラーが発生しヘッドコントローラーＨＣ３が印刷データＰＤ８の受信を完了できなかった場合、ヘッドコントローラーＨＣ３は、宛先部に「ブロードキャスト」を示す値が設定されメッセージ本体部に「ヘッドコントローラーＨＣ３が印刷データを受信完了できなかった」ことを示す値「０１１１」が設定されたメッセージＭ１０を送信する。印刷データＰＤ８の受信を完了できなかったことが判明したのが第一モードの期間中である場合は次に第二モードの期間に切り替わってからヘッドコントローラーＨＣ３はメッセージＭ１０を送信する。その結果、画像処理ＡＳＩＣ１１や各ヘッドコントローラーＨＣはヘッドコントローラーＨＣ３が印刷データを受信完了できなかった事実を共有することができる。
【００４２】
ヘッドコントローラーが印刷データを受信できなければ対応する印刷ヘッドに駆動信号を出力できないため、印刷データ転送のリトライが必要である。したがってこのように、印刷データの転送に関する状況を画像処理ＡＳＩＣ１１と各ヘッドコントローラーＨＣとの間で共有することができる本実施形態の構成は有効である。さらに本実施形態によると、第二モード期間においては、メインコントローラー１０の介在なしに画像処理ＡＳＩＣ１１とヘッドコントローラーＨＣとの間でメッセージの通信が行えるので、メインコントローラー１０に負荷をかけずに済む。その結果、メインコントローラー１０のスループットの低下を防止できる。また、画像処理ＡＳＩＣ１１と各ヘッドコントローラーＨＣとの間の通信にメインコントローラー１０を介在させる必要がないため、メインコントローラー１０における割り込み応答時間や割り込み優先順位などの影響を受けずに速やかにメッセージの通信を行うことができる。なお、図３において図示はしていないが、メインコントローラー１０がヘッドコントローラーＨＣと通信する必要がある場合は第一モード期間において通信が行われる。第一モードと第二モードとでバスＢ３の信号線の機能が切り替わるので、第一モードにおいてはメインコントローラー１０からのアクセスを各ヘッドコントローラーＨＣは受け付けることができる。
【００４３】
なお、印刷データＰＤｎの転送時間は図３では第二モードの期間一つ分と第一モードの期間一つ分を合わせた程度の長さで示されているが、これはあくまで一例にすぎない。また図２や図３においては、第一モードの期間と第二モードの期間が同程度に図示されているがこれも一例に過ぎず、バス転送速度や、画像処理ＡＳＩＣ１１およびヘッドコントローラーＨＣの処理速度や、メインコントローラー１０によるヘッドコントローラーＨＣの制御頻度や制御に要する時間等に応じて適宜設計される事項である。
【００４４】
なお、上述した図３Ａおよび図３Ｂの例では各メッセージは宛先をブロードキャストとしていたが、ユニキャストのメッセージを送信することで印刷データを各ヘッドコントローラーＨＣに送信するようにしてもよい。図３Ｃを参照して具体的に説明する。画像処理ＡＳＩＣ１１は、各ヘッドコントローラーＨＣに転送する印刷データの準備が完了するとまず、宛先部に「ヘッドコントローラーＨＣ０」を示す値「００００」が設定されメッセージ本体部に「画像処理ＡＳＩＣ１１が印刷データの準備を完了した」ことを示す値「１０００」が設定されたメッセージＭ１１を第二モード期間に送信する。メッセージＭ１１を受信したヘッドコントローラーＨＣ０はバスＢ４を介して印刷データを受信する準備を行う。
【００４５】
続いて画像処理ＡＳＩＣ１１はヘッドコントローラーＨＣ０に印刷データＰＤ９を送信し、ヘッドコントローラーＨＣ０は印刷データＰＤ９の受信を完了すると、宛先部に「ヘッドコントローラーＨＣ１」を示す値「０００１」が設定されメッセージ本体部に「印刷データの転送開始」を示す値「１００１」が設定されたメッセージＭ１２を第二モード期間に送信する。ヘッドコントローラーＨＣ１はメッセージＭ１２を受けてバスＢ４を介して印刷データを受信する準備を行う。画像処理ＡＳＩＣ１１は、バスＢ４を介してヘッドコントローラーＨＣ０に印刷データＰＤ９を送信し終えてから所定時間経過後に印刷データＰＤ１０をヘッドコントローラーＨＣ１に送信する。
【００４６】
ヘッドコントローラーＨＣ１は印刷データＰＤ１０の受信を完了すると、宛先部に「ヘッドコントローラーＨＣ２」を示す値「００１０」が設定されメッセージ本体部に「印刷データの転送開始」を示す値「１００１」が設定されたメッセージＭ１３を第二モード期間に送信する。ヘッドコントローラーＨＣ２はメッセージＭ１３を受けてバスＢ４を介して印刷データを受信する準備を行う。画像処理ＡＳＩＣ１１は、バスＢ４を介してヘッドコントローラーＨＣ１に印刷データＰＤ１０を送信し終えてから所定時間経過後に印刷データＰＤ１１をヘッドコントローラーＨＣ２に送信する。
【００４７】
ヘッドコントローラーＨＣ２は印刷データＰＤ１０の受信を完了すると、宛先部に「ヘッドコントローラーＨＣ３」を示す値「００１１」が設定されメッセージ本体部に「印刷データの転送開始」を示す値「１００１」が設定されたメッセージＭ１４を第二モード期間に送信する。ヘッドコントローラーＨＣ３はメッセージＭ１４を受けてバスＢ４を介して印刷データを受信する準備を行う。画像処理ＡＳＩＣ１１は、バスＢ４を介してヘッドコントローラーＨＣ２に印刷データＰＤ１１を送信し終えてから所定時間経過後に印刷データＰＤ１２をヘッドコントローラーＨＣ３に送信する。
【００４８】
ヘッドコントローラーＨＣ３は印刷データＰＤ１２の受信を完了すると、宛先部に「画像処理ＡＳＩＣ１１」を示す値「１０００」が設定されメッセージ本体部に「ヘッドコントローラーＨＣ３が印刷データを受信完了した」ことを示す値「００１１」が設定されたメッセージＭ１５を第二モード期間に送信する。以上、印刷データの転送開始を示すメッセージをユニキャストで順に通知していく例を説明した。
【００４９】
２．他の実施形態
尚、本発明の技術的範囲は、上述した実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば、上記実施形態では、メッセージの宛先部に設定される値として、ユニキャストやブロードキャストを示す値が予め決められている例を説明したが、特定の複数のヘッドコントローラーＨＣに対するマルチキャストを示す値が含まれていてもよい。例えば、図３ＣのメッセージＭ１２では宛先部に画像処理ＡＳＩＣ１１とヘッドコントローラーＨＣ１とを宛先とすることを意味する値が設定されてもよい。
【００５０】
また、上記実施形態においては第二モードにおいてメッセージはシリアルに送信される例を説明したが、第二モードにおいてメッセージ信号線には２本以上の信号線が割り当てられてもよく、その場合にメッセージは当該２本以上の信号線を用いてパラレルに送信されてもよい。
なお上記実施形態では印刷装置の一実施形態としてプリンターを例にして説明したが、印刷機能に加えて画像読み取り機能やファクシミリ機能等を備えた装置にももちろん本発明を適用することができる。
【００５１】
また、上記実施形態で挙げた第一モードと第二モードとの切り換えの構成は一例に過ぎず、これに限定されるものではない。例えば上記実施形態において第一モードから第二モードへの切り換えの際にＷＥ＃およびＯＥ＃を一旦アサートしその直後にネゲートする構成を説明したが、これに限定されない。例えば、第一モードから第二モードへの切り換えの際にＷＥ＃およびＯＥ＃を一旦アサートしその直後にネゲートしなくてもよい。その場合、ＷＥ＃やＯＥ＃やＣＳｎ＃がアサートされるのは第一モードにおいてメインコントローラー１０が画像処理ＡＳＩＣ１１を介してヘッドコントローラーＨＣと通信する場合に限られる。したがって各ヘッドコントローラーＨＣは、ＷＥ＃やＯＥ＃やＣＳｎ＃を常に監視しておき、ＷＥ＃やＯＥ＃やＣＳｎ＃がＨであることを検出すると第一モードから第二モードへ切り替わったと判断してもよい。
【符号の説明】
【００５２】
１０：メインコントローラー、１１：画像処理ＡＳＩＣ、１２：イメージバッファー、Ｂ１：バス、Ｂ２：バス、Ｂ３：バス、Ｂ４：バス、Ｈ０〜Ｈ３：印刷ヘッド、ＨＣ０〜ＨＣ３（ＨＣ）：ヘッドコントローラー
【図１】
2013166361.tif 000003
【図２】
2013166361.tif 000004
【図３】
2013166361.tif 000005
【図４】
2013166361.tif 000006
【図５】
2013166361.tif 000007
【図６】
2013166361.tif 000008