(57)【要約】【課題】情報表現形式に違いのある相異なるＯＳを用いて動作する複数のプロセッサーが収集した情報を、それら情報の相互関係が明らかとなるように記憶する。【解決手段】第１ＯＳ上で印刷機構部を制御するプログラムが動作する第１処理装置と、第１ＯＳとは異なる第２ＯＳ上で外部装置と通信する通信部を制御するプログラムが動作する第２処理装置と、第１処理装置及び第２処理装置からアクセスされる第１記憶部と、第２処理装置によりアクセスされる第２記憶部と、を有し、第１処理装置は、印刷機構部で生じた第１イベントに係る第１イベント情報を第１記憶部に書き込み、第２処理装置は、通信部で生じた第２イベントに係る第２イベント情報と、第１記憶部から読み出した第１イベント情報とを、それぞれ所定の共通形式のデータを含むイベントログ情報として第２記憶部に保存する印刷装置。【選択図】図１
2019077078.tif 000002
【特許請求の範囲】
【請求項１】
第１オペレーティングシステム上で印刷機構部を制御するプログラムが動作する第１処理装置と、
第１オペレーティングシステムとは異なる第２オペレーティングシステム上で外部装置と通信する通信部を制御するプログラムが動作する第２処理装置と、
前記第１処理装置及び前記第２処理装置からアクセスされる第１記憶部と、
前記第２処理装置によりアクセスされる第２記憶部と、
を有し、
前記第１処理装置は、前記印刷機構部で生じた第１イベントに係る第１イベント情報を前記第１記憶部に書き込み、
前記第２処理装置は、前記通信部で生じた第２イベントに係る第２イベント情報と、前記第１記憶部から読み出した前記第１イベント情報とを、それぞれ所定の共通形式のデータを含むイベントログ情報として前記第２記憶部に保存する印刷装置。
【請求項２】
前記所定の共通形式のデータは、前記第１イベント及び前記第２イベントの発生時刻に関するデータであって、
前記第２処理装置は、前記第１イベント情報に含まれる第１イベントの発生時刻を示す第１時刻情報と、前記第２イベント情報に含まれる第２イベントの発生時刻を示す第２時刻情報とを、同一の時刻系に従う時刻に変換することにより前記共通形式のデータとして第２記憶部に保存する請求項１に記載の印刷装置。
【請求項３】
前記第１時刻情報は、前記印刷機構部の起動後の経過時間を示す情報であり、
前記第２時刻情報は、所定の時刻系に従う時刻を示す情報であり、
前記第２処理装置は、前記印刷機構部の起動時の時刻に前記第１時刻情報が示す前記起動後の経過時間を加算して、前記第１時刻情報を、前記所定の時刻系に従う時刻に変換する請求項２に記載の印刷装置。
【請求項４】
前記第１記憶部は、データ配列を成すように順序付けられた所定の記憶容量を有する複数の記憶領域に分割され、
前記第１処理装置は、前記第１イベントに係る前記第１イベント情報を、前記第１イベントの発生順に、前記データ配列の先頭から末尾に向かう順に、前記データ配列を構成する前記記憶領域のうち空き領域に設定されている前記記憶領域に記憶し、
前記第２処理装置は、前記第１イベント情報を、前記データ配列の先頭から末尾に向かう順に前記記憶領域から読み出して、前記読み出した前記記憶領域を空き領域に設定する請求項１から３のいずれか一項に記載の印刷装置。
【請求項５】
前記第１処理装置は、前記第１イベント情報を前記第１記憶部に保存しようとする際に、前記データ配列を構成する前記記憶領域のうち空き領域に設定されている前記記憶領域がないときは、前記保存しようとする前記第１イベント情報を破棄し、且つ、
前記第１処理装置は、空き領域に設定されている前記記憶領域がないことにより一つ以上の前記第１イベント情報を破棄した後に、前記記憶領域のいずれかが空き領域に設定されたときは、前記空き領域に設定された前記記憶領域に、前記破棄した前記第１イベント情報の数と、その後に発生した前記第１イベントに係る前記第１イベント情報とを保存する請求項４に記載の印刷装置。
【請求項６】
複数のプロセッサーを備えたマルチコア・プロセッサーを備え、
前記第１処理装置及び前記第２処理装置は、それぞれ相異なる前記プロセッサーで構成される請求項１から５のいずれか一項に記載の印刷装置。
【請求項７】
前記第１処理装置は、第１オペレーティングシステムとして、前記印刷機構部をリアルタイム制御するためのリアルタイムオペレーティングシステムを備える請求項１から６のいずれか一項に記載の印刷装置。
【請求項８】
前記第２処理装置は、前記第２記憶部に記憶した前記イベントログ情報を、前記通信部を介して外部装置へ送信する請求項１から７のいずれか一項に記載の印刷装置。
【請求項９】
第１オペレーティングシステム上で印刷機構部を制御するプログラムが動作する第１処理装置と、第１オペレーティングシステムとは異なる第２オペレーティングシステム上で外部装置と通信する通信部を制御するプログラムが動作する第２処理装置と、前記第１処理装置及び前記第２処理装置からアクセスされる第１記憶部と、前記第２処理装置によりアクセスされる第２記憶部と、を備える印刷装置の制御方法であって、
前記第１処理装置は、前記印刷機構部で生じた第１イベントに係る第１イベント情報を前記第１記憶部に書き込み、
前記第２処理装置は、前記通信部で生じた第２イベントに係る第２イベント情報と、前記第１記憶部から読み出した前記第１イベント情報とを、それぞれ所定の共通形式のデータを含むイベントログ情報として前記第２記憶部に保存する印刷装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置、及び印刷装置の制御方法に関する。
【背景技術】
【０００２】
従来、印刷装置として、デュアルコア・プロセッサーを備え、一方のプロセッサー・コアにより印刷ヘッド等の印刷機構部を制御し、他方のプロセッサー・コアによりサーバー等の外部機器と通信するものが知られている。このようなデュアルコア・プロセッサーを備える装置として、例えば、特許文献１には、印刷機構を制御するメインコアと、外部機器との通信制御を行うサブコアとが、共有メモリーを介して相互に通信を行って、互いの動作を監視する印刷装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１５９１３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、複数のプロセッサーやプロセッサー・コア（以下、単にプロセッサーという）を用いる装置では、各プロセッサーは、その装置が有する種々の異なる機能を分担し、これらを並列処理することで装置全体としての処理能力を向上する。このため、各プロセッサーは、それぞれが分担する機能に適した異なるオペレーティングシステム（ＯＳ、Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）上でアプリケーション・プログラム（以下、単にプログラムともいう）を動作させるよう構成されることが多い。
【０００５】
例えば、印刷装置においては、２つのプロセッサーを用いて、印刷ヘッド等の印刷機構部の動作制御と、外部装置との通信制御とが分担され、並列処理される。この場合、印刷機構部の動作制御には、例えば、リアルタイム制御に適したリアルタイムＯＳ（Ｒｅａｌ−Ｔｉｍｅ Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）が用いられ、通信制御には、例えば、汎用性のあるＯＳであるＬｉｎｕｘ（登録商標）が用いられる。
【０００６】
ところが、ＯＳが異なれば、各ＯＳが提供する機能に依存して各ＯＳ上で動作するプログラムが扱い得る情報の表現形式に関する制限は異なるものとなり、異なるＯＳで動作する２つのプロセッサー間での情報共有に不都合が生ずる場合があり得る。例えば、Ｌｉｎｕｘ上ではテキスト形式での情報表現は比較的容易であるのに対し、リアルタイムＯＳ上では、テキスト形式での表現を行うためには、より多くの処理が必要となり得る。また、Ｌｉｎｕｘでは、標準時（例えば日本標準時）に従う時刻情報を保持して時刻を計測することができる一方、リアルタイムＯＳでは、時刻を間接的に表す情報として、例えばプロセッサーを含む印刷装置の起動後の経過時間が計測される。
【０００７】
このため、例えば、これらの異なるＯＳで動作する２つのプロセッサーが、それぞれ、異なる形式の時刻情報を含むイベント発生記録（例えば異常発生記録）をメモリーに保存すると、イベント間の時間的な前後関係が曖昧となり得る。その結果、例えば複数の異常イベントの発生記録の時間的前後関係が曖昧となって、故障解析が煩雑になる等の問題も生じ得る。なお、印刷装置の起動後の経過時間の情報は、起動時の時刻を加算すれば時刻を表す情報となることから、ここでは、そのような経過時間の情報も含めて時刻情報と称している。
【０００８】
本発明の目的は、複数のプロセッサー（又はプロセッサー・コア）を有する印刷装置において、相異なるＯＳを用いて動作するそれぞれのプロセッサーが収集した表現形式に違いのある情報を、それら情報の相互関係が明らかとなるように保存することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の印刷装置は、第１オペレーティングシステム上で印刷機構部を制御するプログラムが動作する第１処理装置と、第１オペレーティングシステムとは異なる第２オペレーティングシステム上で外部装置と通信する通信部を制御するプログラムが動作する第２処理装置と、前記第１処理装置及び前記第２処理装置からアクセスされる第１記憶部と、前記第２処理装置によりアクセスされる第２記憶部と、を有し、前記第１処理装置は、前記印刷機構部で生じた第１イベントに係る第１イベント情報を前記第１記憶部に書き込み、前記第２処理装置は、前記通信部で生じた第２イベントに係る第２イベント情報と、前記第１記憶部から読み出した前記第１イベント情報とを、それぞれ所定の共通形式のデータを含むイベントログ情報として前記第２記憶部に保存する。
この構成によれば、第１記憶部を介した情報の転送は、第１処理装置から第２処理装置へ向かう一方向に限定され、第１記憶部には第１オペレーティングシステムの基本機能がサポートする表現形式に従う情報のみが保存される。このため、第１記憶部から読み出した情報を他の表現形式に一律に変換することができ、変換処理が容易となる。また、転送された第１イベント情報は、第２処理装置により共通形式のデータを含むイベントログ情報に変換されるので、第１イベント情報と第２イベント情報との相互関係を共通形式のデータ部分に基づいて判断することが可能となる。
【００１０】
また、本発明は、前記所定の共通形式のデータは、前記第１イベント及び前記第２イベントの発生時刻に関するデータであって、前記第２処理装置は、前記第１イベント情報に含まれる第１イベントの発生時刻を示す第１時刻情報と、前記第２イベント情報に含まれる第２イベントの発生時刻を示す第２時刻情報とを、同一の時刻系に従う時刻に変換することにより前記共通形式のデータとして第２記憶部に保存する構成であってもよい。
この構成によれば、第２記憶部に記憶された第１イベント情報及び第２イベント情報の共通形式データ部分から、第１イベント情報と第２イベント情報の時間的な前後関係を判断することができる。
【００１１】
また、本発明は、前記第１時刻情報は、前記印刷機構部の起動後の経過時間を示す情報であり、前記第２時刻情報は、所定の時刻系に従う時刻を示す情報であり、前記第２処理装置は、前記印刷機構部の起動時の時刻に前記第１時刻情報が示す前記起動後の経過時間を加算して、前記第１時刻情報を、前記所定の時刻系に従う時刻に変換する構成であってもよい。
この構成によれば、第１オペレーティングシステムが時刻そのものを直接的に表す時刻情報をサポートしない場合でも、第１イベント情報と第２イベント情報の時間的な前後関係を明確にしてイベントログを生成し、保存しておくことができる。
【００１２】
また、本発明は、前記第１記憶部は、データ配列を成すように順序付けられた所定の記憶容量を有する複数の記憶領域に分割され、前記第１処理装置は、前記第１イベントに係る前記第１イベント情報を、前記第１イベントの発生順に、前記データ配列の先頭から末尾に向かう順に、前記データ配列を構成する前記記憶領域のうち空き領域に設定されている前記記憶領域に記憶し、前記第２処理装置は、前記第１イベント情報を、前記データ配列の先頭から末尾に向かう順に前記記憶領域から読み出して、前記読み出した前記記憶領域を空き領域に設定する構成であってもよい。
この構成によれば、第２処理装置は、第１イベント情報間の時間的前後関係を明確にしつつ、第１記憶部から第１イベント情報を読み出すことができる。このため、第１イベント情報及び第２イベント情報を時系列で記録するイベントログを容易に作成することができる。
【００１３】
また、本発明は、前記第１処理装置は、前記第１イベント情報を前記第１記憶部に保存しようとする際に、前記データ配列を構成する前記記憶領域のうち空き領域に設定されている前記記憶領域がないときは、前記保存しようとする前記第１イベント情報を破棄し、且つ、前記第１処理装置は、空き領域に設定されている前記記憶領域がないことにより一つ以上の前記第１イベント情報を破棄した後に、前記記憶領域のいずれかが空き領域に設定されたときは、前記空き領域に設定された前記記憶領域に、前記破棄した前記第１イベント情報の数と、その後に発生した前記第１イベントに係る前記第１イベント情報とを保存する構成であってもよい。
この構成によれば、第１イベント情報が例えば異常発生を表す場合に、例えば異常の根本原因を表現している可能性のある最も古い異常発生イベントの情報を失うことなく、且つ最近における異常発生イベントの件数を保持することができる。このため、例えばイベントログに基づく故障解析が容易となる。
【００１４】
また、本発明は、複数のプロセッサーを備えたマルチコア・プロセッサーを備え、前記第１処理装置及び前記第２処理装置は、それぞれ相異なる前記プロセッサーで構成されていてもよい。
この構成によれば、第１オペレーティングシステム及び第２オペレーティングシステムを備える印刷装置を、小型かつ安価に構成することができる。
【００１５】
また、本発明では、前記第１処理装置は、前記第１オペレーティングシステムとして、前記印刷機構部をリアルタイム制御するためのリアルタイムオペレーティングシステムを備える構成であってもよい。
この構成によれば、第１オペレーティングシステムにより印刷機構部を効率的にリアルタイム制御しつつ、例えば印刷機構部の異常イベントを示す第１イベント情報を収集して、時系列に構成されたイベントログを生成することができる。このため、イベントログを用いて、例えば印刷機構部の故障解析を容易に行うことができる。
【００１６】
また、本発明は、前記第２処理装置は、前記第２記憶部に記憶した前記イベントログ情報を、前記通信部を介して外部装置へ送信する構成であってもよい。
この構成によれば、第２記憶部に蓄積されたイベントログ情報を外部装置において解析することができる。また、第２記憶部に保存されているイベントログ情報を外部装置に退避することができるので、第２記憶部の記憶容量不足による第１イベント情報及び又は第２イベント情報の保存漏れを防止することができる。
【００１７】
上記課題を解決するため、本発明は、第１オペレーティングシステム上で印刷機構部を制御するプログラムが動作する第１処理装置と、第１オペレーティングシステムとは異なる第２オペレーティングシステム上で外部装置と通信する通信部を制御するプログラムが動作する第２処理装置と、前記第１処理装置及び前記第２処理装置からアクセスされる第１記憶部と、前記第２処理装置によりアクセスされる第２記憶部と、を備える印刷装置の制御方法であって、前記第１処理装置は、前記印刷機構部で生じた第１イベントに係る第１イベント情報を前記第１記憶部に書き込み、前記第２処理装置は、前記通信部で生じた第２イベントに係る第２イベント情報と、前記第１記憶部から読み出した前記第１イベント情報とを、それぞれ所定の共通形式のデータを含むイベントログ情報として前記第２記憶部に保存する。
この構成によれば、第１記憶部を介した情報の転送は、第１処理装置から第２処理装置へ向かう一方向に限定され、第１記憶部には第１オペレーティングシステムの基本機能がサポートする表現形式に従う情報のみが保存される。このため、第１記憶部から読み出した情報を他の表現形式に一律に変換することができ、変換処理が容易となる。また、転送された第１イベント情報は、第２処理装置により共通形式データを含むイベントログ情報に変換されるので、第１イベント情報と第２イベント情報との相互関係を共通形式データ部分に基づいて判断することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係る印刷装置の構成を示す図。
【図２】第１処理装置におけるソフトウェア階層構造を示す図。
【図３】第２処理装置におけるソフトウェア階層構造を示す図。
【図４】第１記憶部が記憶するデータ配列のデータ構造を示す図。
【図５】第２イベント情報のデータ構造を示す図。
【図６】データ配列における書込み及び読出しの位置の例を示す図。
【図７】イベントログの一例を示す図。
【図８】第１イベント情報保存処理の手順を示すフローチャート。
【図９】第２イベントログ保存処理の手順を示すフローチャート。
【図１０】第１イベントログ保存処理の手順を示すフローチャート。
【図１１】イベントログ送信処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本発明の一実施形態に係る印刷装置１００の構成を示す図である。本印刷装置１００は、用紙に印刷を行う印刷機構部１０２と、外部装置と通信を行う通信部１０４と、処理装置１０６と、第１記憶部１０８と、第２記憶部１１０と、を有する。
【００２０】
印刷機構部１０２は、例えば用紙にインクを吐出する印刷ヘッド、用紙上で印刷ヘッドを移動する走査機構、用紙を搬送する搬送機構等（いずれも不図示）で構成される。また、通信部１０４は、例えば、周辺機器やサーバー等の外部装置と通信を行う送受信機（不図示）等で構成される。
【００２１】
処理装置１０６は、第１処理装置１３０と、第２処理装置１３２と、第１時間計測部１３４と、第２時間計測部１３６と、を備える。第１時間計測部１３４は、印刷装置１００の電源が投入されて印刷機構部１０２が起動されたときに、第２処理装置１３２により起動され、印刷機構部１０２の起動後の経過時間を計測する。
【００２２】
第２時間計測部１３６は、例えばリアルタイムクロック（ＲＴＣ、Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）であり、所定の時刻系、例えば日本標準時（ＪＳＴ、Ｊａｐａｎ  Ｓｔａｎｄａｒｄ  Ｔｉｍｅ）を保持する。すなわち、第２時間計測部１３６は、印刷装置１００の電源が投入されている間はもちろん、電源が断になったあとも、例えば印刷装置１００に設けられたバッテリー（不図示）により時間計測を継続して、日本標準時に従う現在時刻を保持する。なお、第２時間計測部１３６は、日本標準時に代えて、協定世界時（ＵＴＣ、Ｃｏｏｒｄｉｎａｔｅｄ  Ｕｎｉｖｅｒｓａｌ  Ｔｉｍｅ）に従う時刻を保持するものとしてもよい。
【００２３】
第１処理装置１３０及び第２処理装置１３２は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等のプロセッサーを備えるコンピューターである。第１処理装置１３０及び第２処理装置１３２は、プログラムが書き込まれたＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、データの一時記憶のためのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を有する構成であってもよい。そして、第１処理装置１３０は、機能要素（又は機能ユニット）として、印刷制御部１４０と、第１イベント検出部１４２と、第１イベント記録部１４４と、を有する。また、第２処理装置１３２は、機能要素（又は機能ユニット）として、通信制御部１５０と、第２イベント検出部１５２と、イベントログ記録部１５４と、を有する。
【００２４】
第１処理装置１３０及び第２処理装置１３２が備えるこれらの機能要素は、それぞれ、コンピューターである第１処理装置１３０及び第２処理装置１３２がプログラムを実行することにより実現される。
【００２５】
図２は、第１処理装置１３０のソフトウェア階層構造を示す図である。第１処理装置１３０は、ＣＰＵ、ＲＡＭ、ＲＯＭ等のハードウェアの動作を管理する第１オペレーティングシステム２００を備える。また第１処理装置１３０は、第１オペレーティングシステム２００上で実行されて印刷制御部１４０、第１イベント検出部１４２、第１イベント記録部１４４の各機能要素を実現するアプリケーションプログラム２０２、２０４、２０６を備える。本実施形態では、第１オペレーティングシステム２００は、印刷機構部１０２をリアルタイム制御する印刷制御部１４０の効率的な動作を確保する観点から、例えばＴ−Ｋｅｒｎｅｌなどのリアルタイムオペレーティングシステム（リアルタイムＯＳ）である。
【００２６】
図３は、第２処理装置１３２のソフトウェア階層構造を示す図である。第２処理装置１３２は、ＣＰＵ、ＲＡＭ、ＲＯＭ等のハードウェアの動作を管理する第２オペレーティングシステム３００を備える。また第２処理装置１３２は、第２オペレーティングシステム３００上で実行されて通信制御部１５０、第２イベント検出部１５２、イベントログ記録部１５４の各機能要素を実現するアプリケーションプログラム３０２、３０４、３０６を備える。本実施形態では、第２オペレーティングシステム３００は、リアルタイム処理を必要としない通信制御その他の種々の処理を汎用的に行う観点から、例えばＬｉｎｕｘである。
【００２７】
ここで、一般に、リアルタイムオペレーティングシステムでは、制御動作の効率性が重視されており、日本標準時等の時刻情報の保持は、基本機能としてはサポートされていない。このため、リアルタイムオペレーティングシステムを用いる場合には、時間に関する情報は、例えば、装置起動後の経過時間等が用いられる。これに対し、Ｌｉｎｕｘ当の汎用オペレーティングシステムでは、日本標準時等の時刻情報が、基本機能としてサポートされており、現在の時刻をアプリケーションプログラムの中で容易に取得することができる。このように、Ｔ−ＫｅｒｎｅｌなどのリアルタイムＯＳとＬｉｎｕｘ等の汎用ＯＳとでは、それらの基本機能を用いて取得される時間（又は時刻）についての表現形式が異なる。
【００２８】
なお、本実施形態では、第１処理装置１３０及び第２処理装置１３２は、それぞれが個別のプロセッサー（ＣＰＵ）を有するものとしたが、これには限られない。例えば、第１処理装置１３０及び第２処理装置１３２は、複数のプロセッサー（又はプロセッサー・コア）を備えるマルチコア・プロセッサー内の、個別のプロセッサー（又はプロセッサー・コア）により構成されるものとすることができる。
【００２９】
第１記憶部１０８（図１）は、例えば揮発性又は不揮発性の半導体メモリーで構成される。第１記憶部１０８は、データ配列１２０を成すように順序付けられた所定の記憶容量を有する複数（ｎ個）の記憶領域１２２−１、１２２−２、１２２−３、１２２−４、．．．、１２２−ｎに分割された部分を有する。これらの記憶領域１２２−１、１２２−２、１２２−３、１２２−４、．．．、１２２−ｎは、例えば、第１記憶部１０８内の記憶アドレス順に設けられる。記憶領域１２２のそれぞれには、後述する処理装置１０６の第１処理装置１３０により第１イベント情報が保存される。また、記憶領域１２２に保存された第１イベント情報は、処理装置１０６の第２処理装置１３２により読み出される。すなわち、第１イベント情報は、第１記憶部１０８を介して、第１処理装置１３０から第２処理装置１３２へ一方向に転送される。
【００３０】
以下、記憶領域１２２−１、１２２−２、１２２−３、１２２−４、…、１２２−ｎを総称するときは、記憶領域１２２という。また、以下において、データ配列１２０の先頭とは、記憶領域１２２のうちアドレス値が最も小さい記憶アドレスの位置に設けられた記憶領域１２２（例えば、１２２−１）をいうものとする。また、データ配列１２０の末尾とは、記憶領域１２２のうちアドレス値が最も大きい記憶アドレスの位置に設けられた記憶領域１２２（例えば、１２２−ｎ）をいうものとする。
【００３１】
第１記憶部１０８には、また、第１処理装置１３０が第１イベント情報を次に保存すべき記憶領域１２２の場所を示す書込みポインター１２４が保存される。さらに、第１記憶部１０８には、第２処理装置１３２が第１イベント情報を次に読み出すべき記憶領域１２２の場所を示す読出しポインター１２６が保存される。書込みポインター１２４及び読出しポインター１２６は、印刷装置１００の起動時に実行される初期化処理の際に、データ配列の先頭の記憶領域１２２を示す値に設定される。
【００３２】
図４は、データ配列１２０を構成する記憶領域１２２におけるデータ構造を示す図である。記憶領域１２２に記憶されるデータは、所定サイズのビット長を持つデータ列であり、その先頭から順に、ステイタス領域４００、破棄数領域４０２、及びイベント情報領域４０４を有する。また、イベント情報領域４０４は、さらに、時刻領域４０６とメッセージ領域４０８で構成されている。
【００３３】
ステイタス領域４００には、その記憶領域１２２に第１イベント情報が書き込まれているか否かを示すステイタスが記憶される。ステイタスは、イベント情報領域４０４に第１イベント情報が書き込まれていないことを示す「空き領域」、又はイベント情報領域４０４に第１イベント情報が書き込まれていることを示す「占有領域」のいずれかである。以下において、記憶領域１２２を「空き領域に設定する」又は「占有領域に設定する」とは、その記憶領域１２２のステイタス領域４００に「空き領域」であることを示す値又は「占有領域」であることを示す値を保存することをいうものとする。なお、第１記憶部１０８の記憶領域１２２は、印刷装置１００の起動時に実行される初期化処理の際に、全て「空き領域」に設定される。その他の領域に保存されるデータの詳細については後述する。
【００３４】
第２記憶部１１０（図１）は、例えば揮発性又は不揮発性の半導体メモリーで構成される。第２記憶部１１０には、発生した第１イベント（後述）及び第２イベント（後述）の履歴であるイベントログ１２８が保存される。イベントログ１２８は、処理装置１０６の第２処理装置１３２により第２記憶部１１０に保存されるイベントログ情報により構成される。
【００３５】
第１処理装置１３０の印刷制御部１４０は、印刷機構部１０２の動作をリアルタイム制御して、用紙への印刷を実行する。第１イベント検出部１４２は、印刷機構部１０２の動作に関連する第１イベントの発生を検出する。第１イベントには、例えば、印刷機構部１０２におけるインクの枯渇、用紙切れ等の、正常な印刷動作に伴って生ずるイベントのほか、印刷ヘッドの移動異常や用紙の紙詰まり等の異常動作に関するイベントが含まれる。
【００３６】
また、第１イベント検出部１４２は、第１イベントを検出したときに、印刷機構部１０２の起動後の経過時間を第１時間計測部１３４から取得し、取得した経過時間と上記検出した第１イベントの内容を表す情報とを第１イベント記録部１４４へ送る。
【００３７】
第１イベント記録部１４４は、第１イベント検出部１４２から受信した経過時間と第１イベントの内容を表す情報とに基づき、第１イベント情報を生成する。より具体的には、第１イベント記録部１４４は、受信した第１イベントの内容を記述するメッセージに、受信した経過時間を第１時刻情報として付加して、第１イベント情報を生成する。ここで、第１イベントの内容を記述する上記メッセージは、本実施形態では、例えば、第１イベントの種類毎に予め定められたコードで表される。ただし、これに限らず、第１イベントの内容を記述する上記メッセージを、テキストメッセージで構成するものとすることもできる。
【００３８】
第１イベント記録部１４４は、上記生成した第１イベント情報を、第１記憶部１０８の記憶領域１２２に記憶する。その際、第１イベント記録部１４４は、第１イベント情報を、第１イベントの発生順に、記憶領域１２２が構成するデータ配列１２０の先頭から末尾に向かう順に、空き領域に設定されている記憶領域１２２に保存する。すなわち、第１イベント記録部１４４は、データ配列１２０の先頭の記憶領域１２２から順に第１イベント情報を書き込む毎に、第１記憶部１０８が記憶する書込みポインター１２４を、データ配列１２０の末尾に向かって次の記憶領域１２２を示す値に設定する。より具体的には、第１イベント記録部１４４は、第１イベント情報を記憶領域１２２に書き込む毎に、書込みポインター１２４の値を、１個の記憶領域１２２のサイズ分だけ増加させる（インクリメントする）。また、書込みポインター１２４がデータ配列１２０の末尾の記憶領域１２２を示す値となった後は、第１イベント記録部１４４は、書込みポインター１２４を初期値（すなわち、データ配列１２０の先頭の記憶領域１２２を示すアドレス値）に設定する。
【００３９】
第１イベント情報は、図４に示すデータ構造のイベント情報領域４０４に保存される。より詳細には、第１イベント情報のうち、第１イベントの内容を記述するメッセージはメッセージ領域４０８に保存され、第１時刻情報は時刻領域４０６に保存される。また、第１イベント記録部１４４は、記憶領域１２２に第１イベント情報を保存したときは、その記憶領域１２２を占有領域に設定する。
【００４０】
第１イベント記録部１４４は、さらに、第１イベント情報を生成した際に、第１記憶部１０８に空き領域に設定されている記憶領域１２２がない間は、生成した第１イベント情報を破棄し、連続して破棄された第１イベント情報の累積数をカウントする。その後、第１イベント記録部１４４は、いずれかの記憶領域１２２が空き領域に設定された後、新たな第１イベントが発生すると、その第１イベントに係る第１イベント情報を、空き領域に設定されたその記憶領域１２２に保存する。
【００４１】
また、その際、第１イベント記録部１４４は、その第１イベント情報を保存する記憶領域１２２の破棄数領域４０２に、それまでに破棄した第１イベント情報の累積数（累積破棄数）を保存する。第１イベント記録部１４４は、累積破棄数を破棄数領域４０２に保存した後は、累積破棄数のカウントをゼロにリセットし、新たに第１イベント情報を破棄したときに、累積破棄数のカウントを開始する。なお、第１イベント記録部１４４は、第１イベント情報を記憶領域１２２に記憶する際に、累積破棄数がゼロであるときは、その記憶領域１２２の破棄数領域４０２に値ゼロを保存する。
【００４２】
なお、上述において、第１記憶部１０８に空き領域に設定されている記憶領域１２２がないか否かは、例えば、第１記憶部１０８が記憶する書込みポインター１２４が示す記憶領域１２２が占有領域であるか否かにより判断することができる。すなわち、書込みポインター１２４が示す記憶領域１２２が占有領域であれば、第１記憶部１０８には空き領域に設定されている記憶領域１２２はないものと判断することができる。データ配列１２０の記憶領域１２２が次々に占有領域に設定されて書込みポインター１２４がインクリメントされると、最後の空き領域の記憶領域１２２が占有領域に設定された後の書込みポインター１２４が示す記憶領域１２２は必ず占有領域であるためである。
【００４３】
第２処理装置１３２の通信制御部１５０（図１）は、通信部１０４を制御して、周辺機器やサーバー等の外部装置と通信を行う。
【００４４】
第２処理装置１３２の第２イベント検出部１５２は、印刷機構部１０２以外の部分の動作に関連する第２イベントの発生を検出する。第２イベントには、例えば、通信部１０４における通信動作の異常、通信部１０４を介して行われるサーバー等の外部装置との間の定期通信の発生、通信部１０４を介して受信される印刷装置１００の周辺機器におけるイベント等が含まれ得る。
【００４５】
また、第２イベント検出部１５２は、第２イベントを検出したときに、第２時間計測部１３６から現在時刻を取得し、取得した現在時刻と上記検出した第２イベントの内容を表す情報とをイベントログ記録部１５４へ送る。
【００４６】
イベントログ記録部１５４は、第２イベント検出部１５２から受信した現在時刻と第２イベントの内容を表す情報とに基づき、第２イベント情報を生成する。より具体的には、イベントログ記録部１５４は、受信した第２イベントの内容を記述するメッセージに、受信した現在時刻を第２時刻情報として付加して、第２イベント情報を生成する。そして、イベントログ記録部１５４は、上記生成した第２イベント情報を、イベントログ情報として、第２記憶部１１０が記憶するイベントログ１２８に追加して記憶する。ここで、第２イベントの内容を記述する上記メッセージは、本実施形態では、例えば、テキストメッセージで構成される。ただし、これに限らず、第２イベントの内容を記述する上記メッセージを、第２イベントの種類毎に予め定められたコードで表すものとすることもできる。
【００４７】
図５は、第２イベント情報のデータ構造を示す図である。第２イベント情報は、所定サイズのビット長を持つデータ列であり、その先頭から順に、時刻領域５０２、及びメッセージ領域５０４を含む。時刻領域５０２には、第２イベント情報の第２時刻情報が保存され、メッセージ領域５０４には、第２イベントの内容を記述するメッセージが保存される。
【００４８】
イベントログ記録部１５４は、また、例えば所定の時間間隔で第１記憶部１０８にアクセスし、第１記憶部１０８の記憶領域１２２から累積破棄数及び第１イベント情報を読み出して、その記憶領域１２２を空き領域に設定する。すなわち、イベントログ記録部１５４は、所定の時間間隔で第１記憶部１０８内に占有領域に設定された記憶領域１２２があるか否かを判断する。そして、占有領域に設定された記憶領域１２２があるときは、その記憶領域１２２から累積破棄数及び第１イベント情報（以下、「第１イベント情報等」ともいう）を読み出す。その際、占有領域に設定された記憶領域１２２が複数あるときは、イベントログ記録部１５４は、記憶領域１２２が構成するデータ配列１２０の先頭から末尾に向かう順に読み出しを行う。
【００４９】
より具体的には、イベントログ記録部１５４は、第１記憶部１０８が記憶する読出しポインター１２６が示す位置の記憶領域１２２が占有領域であれば、その記憶領域１２２から第１イベント情報等を読み出す。そして、イベントログ記録部１５４は、その記憶領域１２２を空き領域に設定すると共に、読出しポインター１２６を、データ配列１２０の末尾に向かって次の記憶領域１２２を示す値に設定する。すなわち、イベントログ記録部１５４は、読出しポインター１２６の値を、１個の記憶領域１２２のサイズ分だけ増加させる（インクリメントする）。また、読出しポインター１２６がデータ配列１２０の末尾の記憶領域１２２を示す値となった後は、イベントログ記録部１５４は、読出しポインター１２６を初期値（すなわち、データ配列１２０の先頭の記憶領域１２２を示すアドレス値）に設定する。
【００５０】
上記において、読出しポインター１２６が示す記憶領域１２２が空き領域に設定されていれば、第１記憶部１０８内には占有領域に設定されている記憶領域１２２はないものと判断することができる。データ配列１２０の記憶領域１２２が次々に空き領域に設定されて読出しポインター１２６がインクリメントされると、最後の占有領域の記憶領域１２２が空き領域に設定された後の読出しポインター１２６が示す記憶領域１２２は必ず空き領域であるためである。
【００５１】
なお、所定の時間間隔ごとにイベントログ記録部１５４が読み出し対象とする記憶領域１２２は、必ずしも占有領域に設定されている記憶領域１２２の全てである必要はなく、予め定められた数を上限とする数の記憶領域１２２であるものとすることができる。
【００５２】
さらに、イベントログ記録部１５４は、読み出した第１イベント情報に含まれる第１時刻情報を、第２イベント情報に含まれる第２時刻情報と共通の形式に変換する。具体的には、イベントログ記録部１５４は、印刷装置１００の電源投入時に記憶した印刷機構部１０２の起動時の時刻に第１時刻情報が示す印刷機構部１０２の起動後の経過時間を加算して、第１時刻情報を第２時刻情報と同様の日本標準時に従う時刻に変換する。すなわち、イベントログ記録部１５４は、第１時刻情報を、第２時刻情報と同一の時刻系に従う時刻に変換する。そして、イベントログ記録部１５４は、上記変換した第１時刻情報を含む第１イベント情報を、イベントログ情報として第２記憶部１１０のイベントログ１２８に追加して記憶する。
【００５３】
すなわち、イベントログ記録部１５４は、共通形式のデータとしての第１時刻情報と第２時刻情報とをそれぞれ含む第１イベント情報と第２イベント情報とを、イベントログ情報として第２記憶部１１０に保存する。なお、イベントログ記録部１５４は、共通形式のデータである第１時刻情報及び第２時刻情報に基づいて、第１イベント情報と第２イベント情報とをそれらの発生順にソートして、イベントログ１２８に保存するものとすることができる。
【００５４】
また、イベントログ記録部１５４は、第１記憶部１０８の記憶領域１２２から読み込んだ累積破棄数がゼロでないときは、まず、読み込んだ累積破棄数の情報をイベントログ情報としてイベントログ１２８に追加して記憶する。そして、その後に、イベントログ記録部１５４は、その累積破棄数と同時に読み込んだ第１イベント情報を、第１時刻情報についての上記変換を行った後、イベントログ１２８に追加して記憶する。
【００５５】
さらに、イベントログ記録部１５４は、例えば所定の時間間隔で、第２記憶部１１０に保存されたイベントログ１２８のイベントログ情報を、通信制御部１５０及び通信部１０４を介して、例えば外部のサーバーへ送信する。また、イベントログ記録部１５４は、イベントログ１２８のうち上記送信したイベントログ情報の部分を第２記憶部１１０から消去する。これにより、イベントログ１２８に新たに追加されるイベントログ情報の保存に用いることのできる第２記憶部１１０内の記憶領域が確保される。
【００５６】
図６は、第１記憶部１０８が記憶するデータ配列１２０における、第１処理装置１３０による第１イベント情報の書き込みと第２処理装置１３２による第２イベント情報の読み出しの様子の一例を示す図である。図示の例では、データ配列１２０は５１２個の記憶領域１２２で構成されており、各記憶領域１２２は、データ配列１２０の先頭から１２２−１、１２２−２、．．．１２２−５１２の符号で示されている。第１イベント情報は、記憶領域１２２−６から１２２−５０９まで書き込まれており、これらの記憶領域１２２のステイタス領域４００には占有領域であることを示す値１１が書き込まれている。また、これら以外の記憶領域１２２のステイタス領域４００には、空き領域であることを示す値００が書き込まれている。
【００５７】
さらに、占有領域に設定された記憶領域１２２−６〜１２２−５０９の破棄数領域４０２には、一例として、すべて０が書き込まれている。これにより、記憶領域１２２−６〜１２２−５０９のそれぞれに第１イベント情報を保存する直前において、破棄された第１イベント情報は無かったことがわかる。
【００５８】
また、占有領域に設定された記憶領域１２２−６〜１２２−５０９の、イベント情報領域４０４の時刻領域４０６には、印刷機構部１０２の起動後の経過時間を表す秒数が保存されている。
【００５９】
第１処理装置１３０の第１イベント記録部１４４は、上述したように、第１イベント情報を、第１イベントの発生順に、記憶領域１２２が構成するデータ配列１２０の先頭から末尾に向かう順に、空き領域に設定されている記憶領域１２２に保存する。すなわち、第１イベント記録部１４４は、書込みポインター１２４により示される、図６において図示左向き矢印で示す位置の記憶領域１２２−５１０に、次に発生する第１イベントに係る第１イベント情報を書き込む。そして、その後は、書込みポインター１２４をインクリメントしつつ、第１イベントを検出する毎に、記憶領域１２２−５１１、１２２−５１２に、順次、検出した第１イベントの第１イベント情報を、その発生順に書き込んでいく。
【００６０】
なお、第１イベント記録部１４４は、データ配列１２０を構成する最後（末尾）の記憶領域１２２−５１２まで第１イベント情報を書き込んだときは、書込みポインター１２４を、データ配列１２０を構成する最初の記憶領域１２２−１を示す値に設定する。これにより、第１イベント記録部１４４は、次に生成した第１イベント情報を、データ配列１２０を構成する最初の記憶領域１２２−１に戻って保存する。その後は、第１イベント記録部１４４は、上述したように、第１イベント情報を、第１イベントの発生順に、データ配列１２０の先頭から末尾に向かう順に記憶領域１２２に保存する。
【００６１】
また、第２処理装置１３２のイベントログ記録部１５４は、上述したように、記憶領域１２２が構成するデータ配列１２０の先頭から末尾に向かう順に、第１イベント情報等の読み出しを行う。すなわち、イベントログ記録部１５４は、次に第１イベント情報を第１記憶部１０８から読み出すときは、読出しポインター１２６により示される、図６において図示右向き矢印の開始点で示された位置の記憶領域１２２−６から第１イベント情報を読み出す。そして、その後は、読出しポインター１２６をインクリメントしつつ、順次、記憶領域１２２−７、１２２−８、．．．に記憶されている第１イベント情報を読み出す。
【００６２】
なお、イベントログ記録部１５４は、データ配列１２０の最後の記憶領域１２２−５１２まで占有領域となっていた場合であって、最後の記憶領域１２２−５１２から第１イベント情報等を読み込んだときは、読出しポインター１２６を、初期値に設定する。すなわち、読出しポインター１２６を、データ配列１２０を構成する最初の記憶領域１２２−１を示す値に設定する。これにより、イベントログ記録部１５４は、最後の記憶領域１２２−５１２から第１イベント情報等を読み込んだ後は、データ配列１２０の先頭の記憶領域１２２−１に戻って第１イベント情報等を読み出すこととなる。そして、その後は、イベントログ記録部１５４は、上述したように、記憶領域１２２が構成するデータ配列１２０の先頭から末尾に向かう順に、第１イベント情報等の読み出しを行う。
【００６３】
図７は、第２記憶部１１０に記憶されるイベントログ１２８の一例を示す図である。図示の例では、イベントログ１２８は、イベントログ情報７００−１〜７００−１２により構成されている。以下、イベントログ情報７００−１〜７００−１２を総称するときは、イベントログ情報７００という。
【００６４】
イベントログ情報７００−１〜７００−３、７００−７〜７００−９は、第２イベント情報を含む。これらのイベントログ情報には、それぞれ先頭の時刻情報領域７１０に第２時刻情報が「時：分 月．日 年」の形式で保存されており、これに続くメッセージ領域７１２に第２イベントの内容を示す第２イベントメッセージが保存されている。
【００６５】
また、イベントログ情報７００−４〜７００−６、７００−１１、７００−１２は、第１イベント情報を含む。これらのイベントログ情報には、それぞれ先頭の時刻情報領域７１０に第１時刻情報が、第２時刻情報と同じ「時：分 月．日 年」の形式で保存されており、これに続くメッセージ領域７１２に第１イベントの内容を示す第１イベントメッセージが保存されている。すなわち、イベントログ情報７００に含まれる第１時刻情報と第２時刻情報とは、同じ時刻系（本実施形態では日本標準時）に従う共通形式のデータとして、イベントログ１２８に記憶されている。
【００６６】
イベントログ情報７００−１０は、第１イベント情報の破棄数についての情報である。このイベントログ情報７００−１０により、イベントログ情報７００−１１の第１イベントメッセージに係る第１イベントの発生前に破棄された第１イベント情報の累積数が５であることが判る。イベントログ情報７００−１０は、イベントログ情報７００−１１に係る第１イベント情報が保存されていた記憶領域１２２から読み出した累積破棄数に基づいて、イベントログ１２８に追加されたイベントログ情報である。なお、イベントログ情報７００−１０の時刻情報領域７１０に、イベントログ情報７００−１１と同一の時刻情報を保存するようにしてもよい。
【００６７】
上述の構成を有する印刷装置１００は、第１イベント情報が、第１記憶部１０８のデータ配列１２０を介して、第１処理装置１３０から第２処理装置１３２へ一方向に転送される。このため、データ配列１２０には、第１処理装置１３０における第１オペレーティングシステム２００の基本機能がサポートする表現形式に従う情報のみが保存される。従って、第２処理装置１３２では、第１記憶部１０８のデータ配列１２０から読み出した情報（例えば、第１時刻情報）を他の表現形式へ一律に変換することができ、変換処理が容易となる。
【００６８】
また、転送された第１イベント情報は、第２処理装置１３２により、その第１時刻情報が、第２イベント情報の有する第２時刻情報と同じ時刻系に基づく共通形式データに変換された後、イベントログ１２８に保存される。このため、イベントログ１２８に保存された第１イベント情報と第２イベント情報とは、共通形式データで記述された第１時刻情報及び第２時刻情報により、それらの発生時刻についての相互関係が明確に表現されることとなる。
【００６９】
その結果、発生したイベントの履歴を統一されたフォーマット、統一された時系列で保持し及び管理することが可能となる。また、イベントを時系列に分析することができるので、不具合解析やユーザーからの問い合わせ対応時にイベントログ１２８を参照して、より早期に問題解決を図ることが可能となる。さらに、製品である印刷装置１００のカスタマイズや機能追加などの開発を行う際に、設計の場面でイベントログ１２８のデータを活用し、ファームウェアのパフォーマンス計測や評価を効率よく実施することが可能となる。
【００７０】
次に、第１処理装置１３０の第１イベント検出部１４２及び第１イベント記録部１４４における処理の手順、及び第２処理装置１３２の第２イベント検出部１５２及びイベントログ記録部１５４の処理の手順について説明する。
【００７１】
第１処理装置１３０の第１イベント検出部１４２及び第１イベント記録部１４４は、第１イベント情報保存処理を実行する。第１イベント情報保存処理は、第１イベントの発生を検出して、検出した第１イベントの内容及び発生時刻を示す第１イベント情報を、第１記憶部１０８のデータ配列１２０に保存する処理である。
【００７２】
第２処理装置１３２の第２イベント検出部１５２及びイベントログ記録部１５４は、第２イベントログ保存処理、第１イベントログ保存処理、及びイベントログ送信処理を実行する。第２イベントログ保存処理は、第２イベントの発生を検出して、検出した第２イベントの内容及び発生時刻を示す第２イベント情報を、イベントログ情報として第２記憶部１１０が記憶するイベントログ１２８に保存する処理である。また、第１イベントログ保存処理は、第１記憶部１０８が記憶するデータ配列１２０から第１イベント情報を読み出して、第１時刻情報を共通形式に変換した後、イベントログ情報として第２記憶部１１０が記憶するイベントログ１２８に保存する処理である。また、イベントログ送信処理は、第２記憶部１１０からイベントログ１２８を構成するイベントログ情報を読み出して、外部のサーバー等へ送信する処理である。
【００７３】
以下、第１処理装置１３０が実行する第１イベント情報保存処理、並びに、第２処理装置１３２が実行する第２イベントログ保存処理、第１イベントログ保存処理、及びイベントログ送信処理の手順について説明する。
【００７４】
＜第１イベント情報保存処理＞
まず、第１処理装置１３０が行う第１イベント情報保存処理の手順について、図８に示すフローチャートに従って説明する。図８に示す第１イベント情報保存処理は、印刷装置１００の電源がオンされたときに開始し、印刷装置１００の電源がオフされたときに終了する。
【００７５】
処理を開始すると、まず、第１処理装置１３０の第１イベント記録部１４４は、第１記憶部１０８が記憶するデータ配列１２０の全ての記憶領域１２２を空き領域に設定し（Ｓ１００）、累積破棄数のカウントをゼロにリセットする（Ｓ１０２）。また、第１イベント記録部１４４は、書込みポインター１２４及び読出しポインター１２６の値を初期値に設定する（Ｓ１０４）。ここで、書込みポインター１２４及び読出しポインター１２６の初期値は、データ配列１２０の先頭の記憶領域１２２の位置を示すアドレス値である。
【００７６】
続いて、第１処理装置１３０の第１イベント検出部１４２は、印刷機構部１０２の動作に係る所定の第１イベントの発生を検出したか否かを判断する（Ｓ１０６）。第１イベント検出部１４２は、例えば、印刷機構部１０２に設けられた各種のセンサー（不図示）からの信号を用いて、第１イベントの発生を検出することができる。
【００７７】
そして、第１イベント検出部１４２は、第１イベントの発生を検出していないときは（Ｓ１０６、ＮＯ）、ステップＳ１０６に戻って第１イベントの発生が検出されるのを待機する。一方、所定の第１イベントのいずれかの発生を検出したときは（Ｓ１０６、ＹＥＳ）、第１イベント検出部１４２は、第１時間計測部１３４から、印刷機構部１０２の起動後の経過時間を取得する（Ｓ１０８）。また、第１イベント検出部１４２は、上記検出した第１イベントの内容を示す情報と、上記取得した経過時間とを、第１イベント記録部１４４へ送る。
【００７８】
次に、第１イベント記録部１４４は、第１イベント検出部１４２から受信した上記第１イベントの内容を示す情報に、上記経過時間を第１時刻情報として付加して、第１イベント情報を生成する（Ｓ１１０）。続いて、第１イベント記録部１４４は、データ配列１２０に、空き領域に設定されている記憶領域１２２があるか否かを判断する（Ｓ１１２）。上述したように、この判断は、書込みポインター１２４が示す記憶領域１２２が空き領域に設定されているか否かを判断することにより行われる。
【００７９】
そして、書込みポインター１２４が示す記憶領域１２２が空き領域に設定されているときは（Ｓ１１２、ＹＥＳ）、その記憶領域１２２に、上記生成した第１イベント情報と累積破棄数（すなわち、第１イベント情報等）を保存する（Ｓ１１４）。また、第１イベント記録部１４４は、第１イベント情報等を保存した記憶領域１２２を占有領域に設定し（Ｓ１１６）、書込みポインター１２４を記憶領域１２２のサイズ分インクリメントする（Ｓ１１８）。これにより、第１イベント情報は、第１イベントの発生順に、データ配列１２０の先頭から末尾に向かう順に記憶領域１２２に保存される。なお、ステップＳ１１４において第１イベント情報等を保存した記憶領域１２２がデータ配列の末尾であるときは、第１イベント記録部１４４は、書込みポインター１２４を初期値（データ配列１２０の先頭の記憶領域１２２のアドレス）に設定する。
【００８０】
続いて、第１イベント記録部１４４は、累積破棄数をゼロにリセットした後（Ｓ１２０）、ステップＳ１０６に戻って処理を繰り返す。
【００８１】
一方、ステップＳ１１２において空き領域に設定されている記憶領域１２２がないときは（Ｓ１１２、ＮＯ）、第１イベント記録部１４４は、累積破棄数に１を加算する（Ｓ１２２）。そして、第１イベント記録部１４４は、生成した第１イベント情報を記憶領域１２２に保存することなく、ステップＳ１０６に戻って処理を繰り返す。
【００８２】
＜第２イベントログ保存処理＞
次に、第２処理装置１３２が行う第２イベントログ保存処理の手順について、図９に示すフローチャートに従って説明する。第２イベントログ保存処理は、後述する第１イベントログ保存処理、及びイベントログ送信処理と共に、第２処理装置１３２において並列に処理される。また、第２イベントログ保存処理は、印刷装置１００の電源がオンされたときに開始し、印刷装置１００の電源がオフされたときに終了する。
【００８３】
印刷装置１００の電源がオンされて印刷機構部１０２が起動されると、まず、第２処理装置１３２のイベントログ記録部１５４は、第１時間計測部１３４に印刷機構部１０２の起動後の経過時間の計測を開始させる（Ｓ２００）。続いて、イベントログ記録部１５４は、第２時間計測部１３６から、印刷機構部１０２の起動時の時刻を取得して記憶する（Ｓ２０２）。なお、第２時間計測部１３６から取得される時刻は、上述したように、所定の時刻系（本実施形態では日本標準時）に従う時刻である。
【００８４】
次に、第２イベント検出部１５２は、印刷機構部１０２の動作以外の、印刷装置１００の動作に係る所定の第２イベントの発生を検出したか否かを判断する（Ｓ２０４）。第２イベント検出部１５２は、例えば、通信制御部１５０からの通信異常通知を受信すること等により、第２イベントの発生を検出することができる。
【００８５】
そして、第２イベント検出部１５２は、第２イベントの発生を検出していないときは（Ｓ２０４、ＮＯ）、ステップＳ２０４に戻って第２イベントの発生が検出されるのを待機する。一方、所定の第２イベントのいずれかの発生を検出したときは（Ｓ２０４、ＹＥＳ）、第２イベント検出部１５２は、第２時間計測部１３６から、上記検出した第２イベントの発生時刻を取得する（Ｓ２０６）。第２イベント検出部１５２は、上記検出した第２イベントの内容を示す情報と、上記取得した発生時刻とを、イベントログ記録部１５４へ送る。
【００８６】
次に、イベントログ記録部１５４は、第２イベント検出部１５２から受信した上記第２イベントの内容を示す情報に、上記発生時刻を第２時刻情報として付加して、第２イベント情報を生成する（Ｓ２０８）。そして、イベントログ記録部１５４は、生成した第２イベント情報を、イベントログ情報として、第２記憶部１１０が記憶するイベントログ１２８に追加して保存した後（Ｓ２１０）、ステップＳ２０４に戻って処理を繰り返す。
【００８７】
＜第１イベントログ保存処理＞
次に、第２処理装置１３２が行う第１イベントログ保存処理の手順について図１０に示すフローチャートに従って説明する。第１イベントログ保存処理は、上述の第２イベントログ保存処理及び後述するイベントログ送信処理と共に、第２処理装置１３２において並列に処理される。また、第１イベントログ保存処理は、印刷装置１００の電源がオンされた後、所定の時間間隔で繰り返し実行される。
【００８８】
第１イベントログ保存処理を開始すると、まず、イベントログ記録部１５４は、データ配列１２０に占有領域に設定されている記憶領域２２０があるか否かを判断する（Ｓ３００）。上述したように、この判断は、読出しポインター１２６が示す記憶領域１２２が占有領域に設定されているか否かを判断することにより行われる。
【００８９】
そして、読出しポインター１２６が示す記憶領域１２２が占有領域に設定されていないときは（Ｓ３００、ＮＯ）、そのまま処理を終了する。一方、読出しポインター１２６が示す記憶領域１２２が占有領域であるときは（Ｓ３００、ＹＥＳ）、イベントログ記録部１５４は、読出しポインター１２６が示す占有領域である記憶領域１２２から第１イベント情報及び累積破棄数を読み込む（Ｓ３０２）。
【００９０】
次に、イベントログ記録部１５４は、読出しポインター１２６を記憶領域１２２のサイズ分インクリメントする（Ｓ３０４）。これにより、イベントログ記録部１５４は、データ配列１２０の先頭から末尾に向かう順に、従って第１イベントの発生順に、記憶領域１２２から第１イベント情報を読み出すことができる。なお、ステップＳ３０４において第１イベント情報等を読み出した記憶領域１２２がデータ配列の末尾であるときは、イベントログ記録部１５４は、読出しポインター１２６を初期値（データ配列１２０の先頭の記憶領域１２２のアドレス）に設定する。
【００９１】
次に、イベントログ記録部１５４は、読み出した累積破棄数がゼロか否かを判断する（Ｓ３０６）。そして、読み出した累積破棄数がゼロであるときは（Ｓ３０６、ＹＥＳ）、読み出した第１イベント情報が含む第１時刻情報を、第２時刻情報と同じ共通形式データに変換する（Ｓ３０８）。すなわち、イベントログ記録部１５４は、第２イベントログ保存処理（図９）のステップＳ２０２において取得した、印刷機構部１０２の起動時の時刻に、第１時刻情報が示す印刷機構部１０２の起動後の経過時間を加算する。
【００９２】
続いて、イベントログ記録部１５４は、第１時刻情報を変換した第１イベント情報を、イベントログ情報としてイベントログ１２８に追加して保存して（Ｓ３１０）、処理を終了する。
【００９３】
一方、ステップＳ３０６において、記憶領域１２２から読み出した累積破棄数がゼロでないときは（Ｓ３０６、ＮＯ）、読み出した累積破棄数の情報を、イベントログ情報としてイベントログ１２８に保存した後（Ｓ３１２）、ステップＳ３０８に処理を移す。
【００９４】
なお、上記実施形態では、イベントログ記録部１５４は、第１イベント情報に含まれる第１時刻情報を、第２時刻情報の形式に変換するものとしたが、これには限られない。第１イベント情報及び第２イベント情報が、それぞれ共通形式の第１時刻情報及び第２時刻情報を含んだ状態でイベントログ１２８に保存される限りにおいて、第１時刻情報及び第２時刻情報の一方又は双方を所定の共通形式に変換するものとすることができる。例えば、第１時刻情報の形式及び第２時刻情報の形式のいずれとも異なる、所定の時刻系に従う他の時刻表現形式を、共通形式として用いることができる。この場合、イベントログ記録部１５４は、第１時刻情報及び第２時刻情報の双方を、上記他の時刻表現式に変換した後に、これらの時刻情報を含む第１イベント情報及び第２イベント情報を、イベントログ情報としてイベントログ１２８に保存することができる。
【００９５】
＜イベントログ送信処理＞
次に、第２処理装置１３２が行うイベントログ送信処理の手順について図１１に示すフローチャートに従って説明する。イベントログ送信処理は、上述の第２イベントログ保存処理及び第１イベントログ保存処理と共に、第２処理装置１３２において並列に処理される。また、イベントログ送信処理は、印刷装置１００の電源がオンされた後、所定の時間間隔で繰り返し実行される。
【００９６】
処理を開始すると、第２処理装置１３２のイベントログ記録部１５４は、第２記憶部１１０にイベントログ１２８を構成するイベントログ情報が保存されているか否かを判断する（Ｓ４００）。そして、イベントログ情報が保存されていないときは（Ｓ４００、ＮＯ）、そのまま処理を終了する。一方、イベントログ情報が保存されているときは（Ｓ４００、ＹＥＳ）、イベントログ記録部１５４は、イベントログ１２８のイベントログ情報を読み出す（Ｓ４０２）。そして、読み出したイベントログ情報を通信部１０４を介して外部サーバー等へ送信して（Ｓ４０４）、処理を終了する。
【００９７】
以上、説明したように、本実施形態の印刷装置１００は、第１オペレーティングシステム２００上で印刷機構部１０２を制御するアプリケーションプログラム２０２が動作する第１処理装置１３０を備える。また、印刷装置１００は、第１オペレーティングシステム２００とは異なる第２オペレーティングシステム３００上で外部装置と通信する通信部１０４を制御するアプリケーションプログラム３０２が動作する第２処理装置１３２を備える。さらに、印刷装置１００は、第１処理装置１３０及び第２処理装置１３２からアクセスされる第１記憶部１０８と、第２処理装置１３２によりアクセスされる第２記憶部１１０と、を有する。そして、第１処理装置１３０は、印刷機構部１０２で生じた第１イベントに係る第１イベント情報を第１記憶部１０８に書き込む。また、第２処理装置１３２は、通信部１０４で生じた第２イベントに係る第２イベント情報と、第１記憶部１０８から読み出した第１イベント情報とを、それぞれ所定の共通形式のデータを含むイベントログ情報として第２記憶部１１０に保存する。
【００９８】
本発明の印刷装置、及び、印刷装置の制御方法を適用した印刷装置１００によれば、第１記憶部１０８を介した情報の転送は、第１処理装置１３０から第２処理装置１３２へ向かう一方向に限定される。そして、第１記憶部１０８には第１オペレーティングシステム２００の基本機能がサポートする表現形式に従う情報のみが保存される。このため、第１記憶部１０８から読み出した情報を他の表現形式に一律に変換することができ、変換処理が容易となる。また、転送された第１イベント情報は、第２処理装置１３２により共通形式データを含むイベントログ情報に変換されるので、第１イベント情報と第２イベント情報との相互関係を共通形式データ部分に基づいて判断することが可能となる。
【００９９】
詳細には、印刷装置１００では、上記所定の共通形式のデータは、第１イベント及び第２イベントの発生時刻に関するデータである。そして、第２処理装置１３２は、第１イベント情報に含まれる第１イベントの発生時刻を示す第１時刻情報と、第２イベント情報に含まれる第２イベントの発生時刻を示す第２時刻情報とが、同一の時刻系に従う時刻となるように変換を行う。すなわち、第２処理装置１３２は、第１時刻情報と第２時刻情報とを共通形式のデータとして第２記憶部１１０に保存する。これにより、第２記憶部１１０に記憶されたイベントログ１２８を参照して、各イベント情報の共通形式データ部分から、第１イベント情報と第２イベント情報の時間的な前後関係を判断することができる。
【０１００】
より詳細には、印刷装置１００では、第１時刻情報は、印刷機構部１０２の起動後の経過時間を示す情報であり、第２時刻情報は、所定の時刻系に従う時刻を示す情報である。そして、第２処理装置１３２は、印刷機構部１０２の起動時の時刻に第１時刻情報が示す上記起動後の経過時間を加算して、第１時刻情報を、所定の時刻系に従う時刻に変換する。これにより、第１オペレーティングシステム２００の基本機能が時刻そのものを直接的に表す時刻情報をサポートしない場合でも、第１イベント情報と第２イベント情報の時間的な前後関係を明確にしてイベントログ１２８を生成し、保存しておくことができる。
【０１０１】
また、印刷装置１００では、第１記憶部１０８は、データ配列１２０を成すように順序付けられた所定の記憶容量を有する複数の記憶領域１２２に分割されている。また、第１処理装置１３０は、第１イベントに係る第１イベント情報を、第１イベントの発生順に、データ配列１２０の先頭から末尾に向かう順に、データ配列１２０を構成する記憶領域１２２のうち空き領域に設定されている記憶領域１２２に記憶する。そして、第２処理装置１３２は、第１イベント情報を、データ配列１２０の先頭から末尾に向かう順に記憶領域１２２から読み出して、読み出した記憶領域１２２を空き領域に設定する。これにより、第２処理装置１３２は、第１イベント情報間の時間的前後関係を明確にしつつ、第１記憶部１０８から第１イベント情報を読み出すことができる。このため、第１イベント情報及び第２イベント情報を時系列で記録するイベントログ１２８を容易に作成することができる。
【０１０２】
また、印刷装置１００では、第１処理装置１３０は、第１イベント情報を第１記憶部１０８に保存しようとする際に、データ配列１２０内に空き領域に設定されている記憶領域１２２がないときは、保存しようとする第１イベント情報を破棄する。また、第１処理装置１３０は、一つ以上の第１イベント情報を破棄した後は、その後に空き領域に設定された記憶領域１２２に、上記破棄した第１イベント情報の数と、その後に発生した第１イベントに係る第１イベント情報とを保存する。これにより、例えば、第１イベント情報が異常発生を表す場合に、その異常の根本原因を表現している可能性のある最も古い異常発生イベントの情報を失うことなく、且つ最近における異常発生イベントの件数を保持することができる。このため、例えばイベントログ１２８に基づく故障解析が容易となる。
【０１０３】
また、印刷装置１００は、複数のプロセッサーを備えたマルチコア・プロセッサーを備え、第１処理装置１３０及び第２処理装置１３２は、それぞれ相異なるプロセッサーで構成され得る。この構成によれば、第１オペレーティングシステム２００及び第２オペレーティングシステム３００を用いて動作する印刷装置１００を、小型かつ安価に構成することができる。
【０１０４】
また、印刷装置１００では、第１処理装置１３０は、第１オペレーティングシステム２００として、印刷機構部１０２をリアルタイム制御するためのリアルタイムオペレーティングシステムを備える。このため、第１オペレーティングシステム２００により印刷機構部１０２を効率的にリアルタイム制御しつつ、例えば印刷機構部１０２の異常イベントを示す第１イベント情報を収集して、時系列に構成されたイベントログ１２８を生成することができる。これにより、イベントログ１２８を用いて、例えば印刷機構部１０２の故障解析を容易に行うことができる。
【０１０５】
また、印刷装置１００は、第２処理装置１３２が、第２記憶部１１０に記憶したイベントログ情報を、通信部１０４を介して外部装置へ送信する。これにより、第２記憶部１１０に蓄積されたイベントログ情報を外部装置において解析することができる。また、第２記憶部１１０に保存されているイベントログ１２８を外部装置に退避することができるので、第２記憶部１１０の記憶容量不足による第１イベント情報及び又は第２イベント情報の保存漏れを防止することができる。
【０１０６】
なお、上記実施形態は本発明を適用した一具体例を示すものであり、本発明はこれに限定されるものではない。
【０１０７】
例えば、第１処理装置１３０及び又は第２処理装置１３２のＣＰＵが実行するプログラムは、印刷装置１００が備えるＲＯＭ等に記憶されるプログラムに限定されない。例えば、他の記憶装置、記憶媒体や外部装置の記憶媒体に上記プログラムを記憶させ、第１処理装置１３０及び又は第２処理装置１３２により読み出して実行する構成としてもよい。
【０１０８】
また、上記実施形態では、第１処理装置１３０から第２処理装置１３２へ、第１記憶部１０８が記憶するデータ配列１２０を介して第１イベント情報が一方向に転送されるものとしたが、これには限定されない。例えば、第１記憶部１０８はデータ配列１２０とは異なる追加のデータ配列を記憶するものとし、第２処理装置１３２から第１処理装置１３０へ、上記追加のデータ配列を介して第２イベント情報を転送するものとしてもよい。
【０１０９】
より具体的には、通信部１０４を介して印刷装置１００に通信可能に接続された周辺機器におけるイベントを第２イベントとして、そのイベントに係る第２イベント情報を第１記憶部１０８を介して第２処理装置１３２から第１処理装置１３０へ転送するものとしてもよい。この場合、第２処理装置１３２は、例えば第２イベントの発生時刻を印刷機構部１０２の起動後の経過時間で表した時刻情報（上記第１時刻情報と同じ形式の時刻情報）として含ませた第２イベント情報を第１記憶部１０８の追加データ配列に保存する。第１処理装置１３０は、第１記憶部１０８の追加データ配列から第２イベント情報を読み出し、第２イベント情報に応じた適切な処理を行うことができる。これにより、第１処理装置１３０は、印刷機構部１０２と周辺機器との連携動作の制御をより適切に行うことが可能となる。印刷装置１００に接続される周辺機器としては、例えば、ＭＳＲ（磁気ストライプリーダー、Ｍａｇｎｅｔｉｃ  Ｓｔｒｉｐｅ  Ｒｅａｄｅｒ）や、バーコードリーダー（いずれも不図示）等の入力装置がある。
【０１１０】
また、上記実施形態では、第１イベント検出部１４２が第１イベントを検出したときに、第１イベント記録部１４４により第１イベント情報を第１記憶部１０８に保存し、第２イベント検出部１５２が第２イベントを検出したときに、イベントログ記録部１５４により第２イベント情報を第２記憶部１１０に保存するものとしたが、これには限られない。すなわち、印刷機構部１０２を制御するアプリケーションプログラム２０２または通信部１０４を制御するアプリケーションプログラム３０２は、第１記憶部１０８または第２記憶部１１０にイベント情報を任意に保存することができる。例えば、アプリケーションプログラム２０２が起動（動作開始）したことを、イベント記録部１４４に指示し第１イベント情報として記憶部１０８に保存し、また、アプリケーションプログラム３０２が起動（動作開始）したことを、イベント記録部１５４に指示し第２イベント情報として記憶部１１０に保存することもできる。
【０１１１】
また、上記実施形態では、印刷装置１００は、第１処理装置１３０と第２処理装置１３２の２つの処理装置を備えるものとしたが、これには限られない。例えば、３つ以上の処理装置を備え、一の処理装置から他の処理装置への一方向のデータの転送が、それぞれ、第１記憶部１０８に記憶された複数のデータ配列の一つを介して行われるものとすることができる。
【０１１２】
また、上記実施形態では、第１時刻情報と第２時刻情報とが同一の時刻系に従う時刻を表すように変換を行うものとしたが、これには限られない。すなわち、変換後の第１時刻情報と第２時刻情報とが、互いの時間的な前後関係を明確にする共通形式のデータとして保存される限りにおいて、日本標準等のいわゆる時刻系とは異なる基準に従う時刻情報を共通形式データとすることができる。例えば、変換後の第１時刻情報と第２時刻情報とが、同一の基準時刻からの経過時間を表すものとしてもよい。
【符号の説明】
【０１１３】
１００…印刷装置、１０２…印刷機構部、１０４…通信部、１０６…処理装置、１０８…第１記憶部、１１０…第２記憶部、１２０…データ配列、１２２…記憶領域、１２４…書込みポインター、１２６…読出しポインター、１２８…イベントログ、１３０…第１処理装置、１３２…第２処理装置、１３４…第１時間計測部、１３６…第２時間計測部、１４０…印刷制御部、１４２…第１イベント検出部、１４４…第１イベント記録部、１５０…通信制御部、１５２…第２イベント検出部、１５４…イベントログ記録部、２００…第１オペレーティングシステム、２０２、２０４、２０６、３０２、３０４、３０６…アプリケーションプログラム、３００…第２オペレーティングシステム。
【図１】
2019077078.tif 000003
【図２】
2019077078.tif 000004
【図３】
2019077078.tif 000005
【図４】
2019077078.tif 000006
【図５】
2019077078.tif 000007
【図６】
2019077078.tif 000008
【図７】
2019077078.tif 000009
【図８】
2019077078.tif 000010
【図９】
2019077078.tif 000011
【図１０】
2019077078.tif 000012
【図１１】
2019077078.tif 000013