(57)【要約】【課題】コントローラ間通信の混雑を抑制する。【解決手段】キューから状態ＳＴ（ｉ）を順次読み出して（Ｓ０）その状態値ＳＴ（ｉ）．Ｖで、第１記憶部内の、状態ＩＤ＝ＳＴ（ｉ）．ＩＤに対応するアドレスの内容を、更新する（Ｓ１）。ＳＤ（ｉ）．ＩＤに依存する状態ＩＤが同時期受信ＳＴ（０）〜ＳＴ（Ｎー１）内にＳＴ（ｊ）．ＩＤとして有り（Ｓ５）、そのＳＴ（ｊ）．ＩＤに対応する第１及び第２記憶部内のアドレスの内容（状態値）が同一でなければ（Ｓ７）、状態ＳＴ（ｊ）を状態ＳＴ（ｉ）よりも先に通知し（Ｓ８、Ｓ１０）、第２記憶部内の対応する内容を状態ＳＴ（ｊ）、ＳＴ（ｉ）で更新する（Ｓ９、Ｓ１１）。【選択図】図４
2014046470.tif 000002
【特許請求の範囲】
【請求項１】
状態変化のイベントを通知するサブコントローラと、
該サブコントローラからの通知に応答して、該通知に含まれる状態ＩＤと状態値とが状態として格納されるキューと、第１状態記憶部と、第２状態記憶部と、状態更新・通知部と、を備えたメインコントローラと、
を有する画像形成装置であって、
該状態更新・通知部は、
該キューから状態を順次取得して一時記憶するとともに該第１状態記憶部に対しその状態ＩＤに対応したアドレスにその状態値を格納させ、該一時記憶した各状態について、
該状態に依存する状態が該一時記憶内に存在する場合、該依存する状態について該第１状態記憶部内の対応する状態値と該第２状態記憶部内の対応する状態値とが互いに異なっていれば、該状態と該依存する状態とを同時に又は時間的に逆順に、該状態に対応したコンポーネントへ通知し、
該状態に依存する状態が該一時記憶内に存在しないか、存在する場合であっても該依存する状態について該第１状態記憶部内の対応する状態値と該第２状態記憶部内の対応する状態値とが互いに同一であれば、該状態を該状態に対応したコンポーネントへ通知し、
それぞれの通知の際に通知対象の状態について、該第２状態記憶部に対しその状態ＩＤに対応したアドレスにその状態値を格納させる、
ことを特徴とする画像形成装置。
【請求項２】
該サブコントローラは、プリントエンジンコントローラである、
ことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
該状態に対応したコンポーネントは、該メインコントローラ内のコンポーネントを含むことを特徴とする請求項１又は２に記載の画像形成装置。
【請求項４】
操作パネルをさらに備え、
該状態に対応したコンポーネントは、該操作パネルを含むことを特徴とする請求項１乃至３のいずれか１つに記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サブコントローラから通知された状態変化のイベントを、メインコントローラにより、対応するコンポーネントへ分配する画像形成装置に関する。
【背景技術】
【０００２】
画像形成装置において、各部の状態をセンサで検出し、その検出値の変化のイベントに応答して、直接、対応するコンポーネントに通知することにより、通知先で制御対象を起動したり停止したり、操作パネルの表示を変更したりすると、全体の構成が複雑になり、また、新機種で新たなセンサを追加・変更・削除した場合に、通知の信号線を独立に追加・変更・削除しなければならないので、コスト高の原因となる。
【０００３】
そこで、各種状態の変化を１箇所で受け付けて、メインコントローラにシリアル転送し、メインコントローラから対応するコンポーネントに通知する状態一括管理部を備え、新機種開発において通知すべき状態が追加・変更・削除された場合に、この状態一括管理部においてはソフトウェアで容易にこれに対処できるようにした構成が採用されている。
【０００４】
下記特許文献１には、パネル監視方式において、同様の構成が開示されている。
【０００５】
しかし、２つの状態がほぼ同時に変化し、それらの通知を受けた場合に、変化順に通知処理を行おうと、対応するコンポーネントで誤動作が生ずる場合がある。
【０００６】
例えば、給紙カセットの用紙残量が０になると、その状態が通知され、次にユーザが給紙カセットを取り出してこれに用紙を補充し、給紙カセットを閉じると、カセット閉の状態が検出される。その直後に、カセット内の用紙端部が上昇開始してこれが検出され、リフティング開始状態に変化した（用紙が補充された）ことが通知される。このカセット閉とリフティング開始の間において、用紙残量０かつカセット閉の状態となるので、給紙カセット選択コンポーネントにおいては、他の代替給紙カセットを選択するという誤動作が生ずることになる。
【０００７】
そこで、エンジンコントローラからカセット閉のイベントがメインコントローラに通知された場合、メインコントローラはエンジンコントローラに対しリフティングの状態（カセットの開／閉状態に依存する状態）を要求し、その応答がリフティング開始を示していれば、この状態をカセット閉よりも先に又は両者を同時に、対応コンポーネントに通知する。これにより、上記誤動作が防止される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−２３３４７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、メインコントローラが特定のイベントを受信する毎、このような問い合わせをエンジンコントローラに対し行わなければならない。状態の一括管理故に、通知すべき状態数が例えば１８０個もあり、比較的多いことと、信号線数が多数になるのを避けるため通知がシリアル転送で行われることから、コントローラ間通信が混雑し、前記問い合わせにより、さらに混雑して、ボトルネックとなる。
【００１０】
本発明の目的は、このような問題点に鑑み、コントローラ間通信の混雑を抑制することが可能な画像形成装置を提供することにある。
【課題を解決するための手段】
【００１１】
本発明による画像形成装置の一態様では、
状態変化のイベントを通知するサブコントローラと、
該サブコントローラからの通知に応答して、該通知に含まれる状態ＩＤと状態値とが状態として格納されるキューと、第１状態記憶部と、第２状態記憶部と、状態更新・通知部と、を備えたメインコントローラと、
を有する画像形成装置であって、
該状態更新・通知部は、
該キューから状態を順次取得して一時記憶するとともに該第１状態記憶部に対しその状態ＩＤに対応したアドレスにその状態値を格納させ、該一時記憶した各状態について、
該状態に依存する状態が該一時記憶内に存在する場合、該依存する状態について該第１状態記憶部内の対応する状態値と該第２状態記憶部内の対応する状態値とが互いに異なっていれば、該状態と該依存する状態とを同時に又は時間的に逆順に、該状態に対応したコンポーネントへ通知し、
該状態に依存する状態が該一時記憶内に存在しないか、存在する場合であっても該依存する状態について該第１状態記憶部内の対応する状態値と該第２状態記憶部内の対応する状態値とが互いに同一であれば、該状態を該状態に対応したコンポーネントへ通知し、
それぞれの通知の際に通知対象の状態について、該第２状態記憶部に対しその状態ＩＤに対応したアドレスにその状態値を格納させる。
【発明の効果】
【００１２】
上記態様の構成によれば、メインコントローラは、キューから状態を取得し、これに依存する状態をサブコントローラに問い合わせる必要が無いので、サブコントローラからメインコントローラへ通知する状態数が多くても、この通知が混雑するのを抑制することができるという効果を奏する。
【００１３】
また、ある状態とこれが依存する状態とを同時に又は時間的に逆順に、状態に対応したコンポーネントへ通知した後は、通知済みの状態を削除して未処理の状態を詰めたり、通知済みの状態をマークしたりする必要がないので、処理が簡単になるという効果を奏する。
【００１４】
本発明の他の目的、特徴的な構成及び効果は、以下の説明を特許請求の範囲及び図面の記載と関係づけて読むことにより明らかになる。 
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１に係る画像形成装置のイベント通知に関する概略機能ブロック図である。
【図２】（Ａ）及び（Ｂ）は図１中の第１状態記憶部２４及び第２状態記憶部２５のアドレスと状態値との関係を示す説明図である。
【図３】図１中の状態属性テーブル２６の構成図である。
【図４】図１中の状態更新・通知部２３による処理を示す概略フローチャートである。
【図５】本発明の実施例２での状態更新・通知部２３による処理を示す概略フローチャートである。
【実施例１】
【００１６】
図１は、画像形成装置１０のイベント通知に関する概略機能ブロック図である。
【００１７】
エンジン１１は、プリントエンジン並びに用紙の給紙部、搬送部及び排紙部を備え、メモリ上に生成されたビットマップデータが供給され、このデータに基づいて感光ドラムに静電潜像を形成し、この像をトナーで現像し、トナー像を用紙に転写し定着させ、排紙する。エンジン１１はまた、多数のセンサやカウンタ等の状態出力部を備え、それぞれの出力信号を、サブコントローラとしてのエンジンコントローラ１２に供給する。
【００１８】
エンジンコントローラ１２は、それぞれの信号種別を状態ＩＤ（例えば２バイト）で識別し、信号の値（例えば１バイト）を状態値とし、これら状態ＩＤと状態値との組を状態として一時記憶し、状態値に変化が有れば、それらの状態を、イベントとしてメインコントローラ２０にシリアル転送する。
【００１９】
メインコントローラ２０では、シリアル通信インターフェイス２１が、受信したシリアル値を並列化し、例えば３バイト毎を状態としてキュー２２に順次格納させる。シリアル通信インターフェイス２１は、シリアル受信が終了し、キュー２２への前記格納が終了すると、状態更新・通知部２３に割り込みをかける。
【００２０】
状態更新・通知部２３は、プログラム及びデータが格納される記憶部と、このプログラムに従って動作するプロセッサとを備えて構成され、前記割込は該プロセッサに対する割込である。
【００２１】
ここで、キュー２２の出力部からｉ番目の状態をＳＴ（ｉ）と表記し、その状態ＩＤ及び状態値をそれぞれＳＴ（ｉ）.ＩＤ及びＳＴ（ｉ）．Ｖと表記する。
【００２２】
状態値には２種類あり、その１つは例えば排出完了頁、給紙カセット内用紙残量（％）、トナー残量（％）などの整数値であり、他の１つはフラグ列であって、例えば第０ビットが本体トップカバーが開であるか否か、第２ビットが本体サイドカバーが開であるか否か等を表す。
【００２３】
図２（Ａ）に示すように、状態ＩＤに対応した第１状態記憶部２４のアドレス、例えばアドレスＡＤＲ０ｉ＝ＡＤＲ００００＋状態ＩＤには、状態値ＳＴｉが格納され、同様に、図２（Ｂ）に示すように、状態ＩＤに対応した第２状態記憶部２５のアドレス、例えばアドレスＡＤＲ１ｉ＝ＡＤＲ１０００＋状態ＩＤには、状態値ＳＴｉが格納される。
【００２４】
また、図１の状態属性テーブル２６には、図３に示すように、状態ＩＤ毎に、通知先識別子ＤＳＴが格納され、この状態ＩＤの状態が他の状態ＩＤの状態に依存していれば、該他の状態ＩＤがさらに格納される。図３の場合、状態ＩＤ１の通知先はＤＳＴ２とＤＳＴ０であり、状態ＩＤ１の状態が状態ＩＤ２の状態に依存していることを示している。図３において、複数の通知先がある場合の"/"は区切り記号であり、実施にはリスト構造で、通知先が順次リンクされている。また、依存状態ＩＤが空白になっているものは、依存状態ＩＤが存在しないことを示している。
【００２５】
ここで、状態Ａが状態Ｂに「依存」とは、エンジンコントローラ１２からシリアルに受信した一連の状態（同時期受信した状態）に状態Ａと状態Ｂが含まれ、通知先での誤動作を防止するために状態Ｂを状態Ａよりも先に状態更新・通知部２３が通知する必要があることを意味する。
【００２６】
通知先は、内部コンポーネント群２７内のソフトウェア若しくはハードウェアのコンポーネント又は操作パネル２８である。
【００２７】
図４は、図１の状態更新・通知部２３による処理を示す概略フローチャートである。この処理は、シリアル通信インターフェイス２１からの上記割り込みにより開始される。以下、括弧内は図中のステップ識別符号である。
【００２８】
（Ｓ０）キュー２２から状態を順次取り出し、配列ＳＴ（ｉ）に格納する。キュー２２内の状態数はＮであり、ｉ＝０〜Ｎ−１とする。
【００２９】
（Ｓ１）各ｉについて、ＳＴ（ｉ）．ＩＤに対応した第１状態記憶部２４内のアドレスに、ＳＴ（ｉ）．Ｖを格納することにより、第１状態記憶部２４に記憶されている状態を更新する。
【００３０】
（Ｓ２）ｉの初期値は０であり、ステップＳ１２からここへ戻ってくる毎に、ｉの値を１だけインクリメントし、ｉ＜ＮであればステップＳ３へ進み、そうでなければ図４の処理を終了する。
【００３１】
（Ｓ３）第１状態記憶部２４のＳＴ（ｉ）．ＩＤに対応したアドレスから状態値を読み出してこれをＭ１とし、第２状態記憶部２５のＳＴ（ｉ）．ＩＤに対応したアドレスから状態値を読み出してこれをＭ２とする。
【００３２】
（Ｓ４）Ｍ１とＭ２の値が等しくなければ、すなわち、状態が変化していないか、ステップＳ２〜Ｓ１２のループ処理で第２状態記憶部２５内の状態を既に更新済み（したがってこの状態を通知済み）であれば、ステップＳ５へ進み、そうでなければステップＳ１２へ進む。
【００３３】
（Ｓ５）状態属性テーブル２６を参照し、このＳＤ（ｉ）．ＩＤに依存する状態ＩＤが有り、ｉ＜ｊ＜Ｎについてこの依存状態ＩＤがＳＴ（ｊ）．ＩＤと一致するｊが存在すれば、ステップＳ６へ進み、そうでなければ、ステップＳ１０へ進む。０＜ｊ＜ｉについてこのようなｊが存在しても、依存状態ＩＤについてＳＤ（ｉ）．ＩＤよりも先に処理が行われていることになるので、問題はない。
【００３４】
（Ｓ６）第１状態記憶部２４のＳＴ（ｊ）．ＩＤに対応したアドレスから状態値を読み出してこれをＭ１とし、第２状態記憶部２５のＳＴ（ｊ）．ＩＤに対応したアドレスから状態値を読み出してこれをＭ２とする。
【００３５】
（Ｓ７）Ｍ１とＭ２の値が等しくなければ、すなわち、状態が変化していれば、ステップＳ８へ進み、そうでなければステップＳ１２へ進む。
【００３６】
（Ｓ８）状態属性テーブル２６を参照してＳＴ（ｊ）．ＩＤに対応した通知先へ、ＳＴ（ｊ）を通知する。
【００３７】
（Ｓ９）第２状態記憶部２５内のＳＴ（ｊ）．ＩＤに対応したアドレスに値ＳＴ（ｊ）．Ｖを書き込むことにより、その状態を更新する。
【００３８】
（Ｓ１０）状態属性テーブル２６を参照してＳＴ（ｉ）．ＩＤに対応した通知先へ、ＳＴ（ｉ）を通知する。
【００３９】
（Ｓ１１）第２状態記憶部２５内のＳＴ（ｉ）．ＩＤに対応したアドレスに値ＳＴ（ｉ）．Ｖを書き込むことにより、その状態を更新する。
【００４０】
（Ｓ１２）ステップＳ２へ戻る。
【００４１】
本実施例１によれば、メインコントローラ２０は、キュー２２から状態を取得し、これに依存する状態をエンジンコントローラ１２に問い合わせる必要が無いので、エンジンコントローラ１２からメインコントローラ２０へ通知する状態数が多く且つこの通知をシリアル転送で行っても、この通知が混雑するのを抑制することができるという効果を奏する。
【００４２】
また、ある状態とこれが依存する状態とを時間的に逆順に、状態に対応したコンポーネントへ通知した後は、通知済みの状態を削除して未処理の状態を詰めたり、通知済みの状態をマークしたりする必要がないので、処理が簡単になるという効果を奏する。
【実施例２】
【００４３】
上記実施例１では、同時期受信した状態のうち、ある状態に依存する状態が存在した場合に、該ある状態と該依存する状態との通知順を逆にする場合を説明したが、その通知を受けるコンポーネント（操作パネルもコンポーネントの１つ）が両状態を同時取得したときに、誤動作しないように取るべき動作を判断することができれば、両状態を纏めて同時に該コンポーネントへ通知することができる。本実施例２では、このような場合を説明する。
【００４４】
図５は、このような場合での状態更新・通知部２３による処理を示す概略フローチャートである。
【００４５】
図４と異なる点は、ステップＳ８Ａにおいて、依存する両状態を通知先コンポーネントへ同時に通知し、また、ステップＳ９からステップＳ１１へ進む点である。他の点は、上記実施例１と同一である。
【００４６】
本実施例２についても、上記実施例１と同様の効果が得られる。
【００４７】
以上において、本発明の好適な実施例を説明したが、本発明には他にも種々の変形例が含まれ、上記実施例で述べた各構成要素の機能を実現する他の構成を用いたもの、当業者であればこれらの構成又は機能から想到するであろう他の構成も、本発明に含まれる。
【００４８】
例えば、図４又は図５の処理を、シリアル通信インターフェイス２１からの割込の替わりに、インターバルタイマによる例えば２０ｍｓ毎の割込で開始する構成であってもよい。また、エンジンが複数に分割され、それぞれが対応するサブコントローラを介してイベントをメインコントローラ２０へ通知する構成であってもよい。
【符号の説明】
【００４９】
１０  画像形成装置
１１  エンジン
１２  エンジンコントローラ
２０  メインコントローラ
２１  シリアル通信インターフェイス
２２  キュー
２３  状態更新・通知部
２４  第１状態記憶部
２５  第２状態記憶部
２６  状態属性テーブル
２７  内部コンポーネント群
２８  操作パネル
【図１】
2014046470.tif 000003
【図２】
2014046470.tif 000004
【図３】
2014046470.tif 000005
【図４】
2014046470.tif 000006
【図５】
2014046470.tif 000007