[実施例1]
<画像形成装置の構成>
本実施例では、通信線により相互に接続された複数の制御モジュールを備えた機器制御システムの一例として画像形成装置を取り上げる。なお、分散された複数の制御モジュールを採用する機器制御システムであれば本願発明の技術思想を適用できることはいうまでもない。図1に示すように、画像形成装置1000は、自動原稿搬送装置100、画像読取部200、画像形成部300および操作部10を備える。図1に示した画像形成装置は一般に複写機や複合機と呼ばれる製品形態をしている。以下で詳細に説明するように、画像形成装置1000は、複数の制御部(CPU)を用いて分散制御を実現する。自動原稿搬送装置100は、原稿を自動的に原稿台ガラス上に搬送する。画像読取部200は、自動原稿搬送装置100から搬送された原稿を読み取って画像データを出力する。画像形成部300は、画像読取部200から出力された画像データや通信線を介して接続された外部のホスト装置から入力された画像データに従って記録材に画像を形成する。操作部10は、ユーザが各種操作を行うためのGUI(グラフィカル・ユーザ・インタフェース)を有する。さらに、操作部10は、タッチパネル等の表示部を有し、ユーザに対して情報を提示する。
<画像形成部>
図2に示した画像形成部300の画像形成方式はとして電子写真方式を採用している。なお、本願発明の技術思想は、画像形成方式に依存するものではない。よって、本願発明は、インクジェット方式、熱転写方式やその他画像形成方式にも適用できる。なお、参照番号の末尾に示すアルファベットY、M、C、Kは、それぞれイエロー、マゼンダ、シアン、ブラックのトナーを示している。よって、各トナーに共通する事項について説明するときは末尾のアルファベットY、M、C、Kを省略する。各トナーについてそれぞれ個別の事項について説明する場合は参照番号の末尾にアルファベットY、M、C、Kを付記する。
感光ドラム(以下、「感光体225」と称する。)は、モータで矢印Aの方向に回転する。感光体225の周囲には、一次帯電装置221、露光装置218、現像装置223、転写装置220、クリーナ装置222および除電装置271が配置されている。現像装置223Kはモノクロ現像のための現像装置であり、感光体225K上の潜像をKのトナーで現像する。現像装置223Y、M、Cはフルカラー現像のための現像装置である。現像装置223Y、M、Cは、感光体225Y、M、C上の潜像をそれぞれY、M、Cのトナーで現像する。感光体225上に現像された各色のトナー像は、転写装置220によって中間転写体である転写ベルト226に一括で多重転写される。
転写ベルト226は、ローラ227、228、229に張架されている。ローラ227は、駆動源に結合されて転写ベルト226を駆動する駆動ローラとして機能し、ローラ228は転写ベルト226の張力を調節するテンションローラとして機能する。また、ローラ229は、二次転写装置231としての転写ローラのバックアップローラとして機能する。転写ローラ脱着ユニット250は、二次転写装置231を転写ベルト226に接着させるか、又は離脱させるための駆動ユニットである。二次転写装置231を通過した後の転写ベルト226の下部にはクリーナブレード232が設けられており、転写ベルト226上の残留トナーがブレードで掻き落とされる。
給紙カセット240、241および手差し給紙部253に格納された記録材は、レジストローラ255、給紙ローラ対235および縦パスローラ対236、237によってニップ部、つまり二次転写装置231と転写ベルト226との当接部に給送される。なお、その際に二次転写装置231は、転写ローラ脱着ユニット250によって転写ベルト226に当接されている。転写ベルト226上に形成されたトナー像は、このニップ部で記録材上に転写される。その後、トナー像が転写された記録材は、定着装置234でトナー像が熱定着されて装置外へ排出される。給紙カセット240、241および手差し給紙部253は、それぞれ記録材の有無を検知するためのシートなし検知センサ243、244、245を備える。また、給紙カセット240、241および手差し給紙部253は、それぞれ記録材のピックアップ不良を検知するための給紙センサ247、248、249を備える。
ここで、画像形成部300による画像形成動作について説明する。画像形成が開始されると、給紙カセット240、241および手差し給紙部253に格納された記録材は、ピックアップローラ238、239、254によりそれぞれ1枚ごとに給紙ローラ対235に搬送される。記録材は、給紙ローラ対235によりレジストローラ255へと搬送されると、その直前のレジストセンサ256により記録材の通過が検知される。レジストセンサ256により記録材の通過が検知された時点から所定の時間が経過した後に給紙ローラ対235は記録材の搬送動作を中断する。その結果、記録材は停止しているレジストローラ255に突き当たって停止する。レジストローラ255を起動させることにより、記録材は、二次転写装置231へ供給される。なお、レジストローラ255は、駆動源に結合され、クラッチによって駆動が伝えられることで回転駆動を行う。
次に、一次帯電装置221に電圧を印加して感光体225の表面を予定の帯電部電位で一様にマイナス帯電させる。続いて、帯電された感光体225上の画像部分が所定の露光部電位になるようにレーザスキャナ部を備えた露光装置218で露光を行い潜像が形成される。露光装置218はプリンタ制御I/F215を介してコントローラ460より送られてくる画像データに基づいてレーザ光をオン/オフすることによって画像に対応した潜像を形成する。現像装置223の現像ローラには各色ごとに予め設定された現像バイアスが印加されている。潜像は、現像ローラの位置を通過する際にトナーで現像され、トナー像として可視化される。トナー像は、転写装置220により転写ベルト226に転写され、さらに二次転写装置231で、給紙部より搬送されてきた記録材に転写された後、レジスト後搬送パス268を通過し、定着搬送ベルト230を介して、定着装置234へと搬送される。定着装置234では、画像乱れを防止するために、定着前帯電器251、252で帯電させトナーの吸着力を補強する。さらに定着ローラ233でトナー画像が熱定着される。その後、記録材は、排紙フラッパ257により排紙パス258側に搬送パスが切り換えられることにより、排紙ローラ270によってそのまま排紙トレー242に排紙される。感光体225上に残留したトナーは、クリーナ装置222で除去して回収される。感光体225は、除電装置271で一様に0ボルト付近まで除電されて、次の画像形成サイクルに備える。
図3には通信線により相互に接続された複数の制御モジュールを示している。図2に示す各制御負荷は、図3に示す第1搬送モジュール280、第2搬送モジュール281、作像モジュール282および定着モジュール283という4つの制御ブロックによって制御される。マスタモジュール284は、これらの4つの制御ブロックを統括して画像形成装置として機能させるための制御モジュールである。マスタモジュール284には、マスタ制御部/第1層制御部としてのマスタCPU1001が設けられている。マスタCPU1001は、プリンタ制御I/F215を介してコントローラ460より受信した指示や命令、画像データに基づいて画像形成装置1000の全体を制御する。画像形成を実行するための第1搬送モジュール280、第2搬送モジュール281、作像モジュール282および定着モジュール283は、各機能を制御するサブマスタ制御部/第2層制御部としてサブマスタCPU601、901、701、801を備える。サブマスタCPU601、901、701、801はマスタCPU1001により制御される。各機能モジュールは、さらに、各機能を実行するための制御負荷を動作させるためのスレーブ制御部/第3層制御部としてスレーブCPU602、603、902、903、702、703、704、705、706、802、803を備える。スレーブCPU602、603はサブマスタCPU601に制御される。スレーブCPU902、903はサブマスタCPU901に制御される。スレーブCPU702、703、704、705、706はサブマスタCPU701に制御される。スレーブCPU802、803はサブマスタCPU801に制御される。
図3に示すように、マスタCPU1001と複数のサブマスタCPU601、701、801、901は共通のネットワーク型通信バス1002によってバス接続される。サブマスタCPU601、701、801、901同士の間もネットワーク型通信バス1002によってバス接続される。なお、マスタCPU1001と複数のサブマスタCPU601、701、801、901はリング接続されるものでもよい。サブマスタCPU601は、さらに、シリアル通信バス612、613を介して、複数のスレーブCPU602、603のそれぞれと1対1接続されている。同様に、サブマスタCPU701は、シリアル通信バス711、712、713、714、715を介して、それぞれスレーブCPU702、703、704、705、706と接続される。サブマスタCPU801は、シリアル通信バス808、809を介して、それぞれスレーブCPU802、803と接続される。サブマスタCPU901は、シリアル通信バス909、910を介して、それぞれスレーブCPU902、903と接続される。ここで、シリアル通信バスは、短距離通信に用いられる。
一方、サブマスタCPU601、701、801、901とマスタCPU1001との間では、精密な制御タイミングを必要としない、画像形成動作の大まかな処理の流れを統括するような通信だけが行われる。例えば、マスタCPU1001はサブマスタCPUに、画像形成前処理開始、給紙開始、画像形成後処理開始といった指示を出す。また、マスタCPU1001はサブマスタCPUに、コントローラ460から指示されたモード(例えばモノクロモードや両面画像形成モードなど)に基づいた指示を画像形成開始の前に出す。サブマスタCPU601、701、801、901のそれぞれの間でも、精密なタイミング制御を必要としない通信だけが行われる。すなわち、画像形成装置の制御を、相互に精密なタイミング制御を必要としない制御単位に分け、それぞれのサブマスタCPUがそれぞれの制御単位を精密なタイミングで制御する。これにより、画像形成装置1000では、通信トラフィックを最小限に抑え、低速で安価なネットワーク型通信バス1002で接続することを可能としている。なお、マスタCPU、サブマスタCPUおよびスレーブCPUについては、実装される制御基板が必ずしも図3に示したとおりの制御基板である必要はなく、実装上の事情に合わせて変更可能である。
図4に示すように、様々な制御基板の構成を採用することができる。例えば、サブマスタCPU601とスレーブCPU602、603とは、同一の基板上に実装されている。また、サブマスタCPU701およびスレーブCPU702、703、704、又は、サブマスタCPU801およびスレーブCPU802、803のように、サブマスタCPUと個々のスレーブCPUが独立の基板上に実装されてもよい。スレーブCPU705、706のように一部のスレーブCPUが同一の基板上に実装されてもよい。サブマスタCPU901およびスレーブCPU902のように、サブマスタCPUとスレーブCPUの一部だけが同一基板上に配置されてもよい。
スレーブCPU802は、定着搬送ベルト230を回転させるためのモータ804、定着ローラ233を回転させるためのモータ805を制御負荷とし、二次転写装置231から定着後の搬送パスに記録用シート媒体を引き渡すまでの制御を行う。スレーブCPU803は、定着装置234における加熱ヒータ806、温度検知サーミスタ807、定着前帯電器251、252を制御負荷とする。スレーブCPU803は、定着前帯電器251、252を制御してトナーを帯電させる。さらに、スレーブCPU803は、温度検知サーミスタ807の検知結果をフィードバックさせながら、加熱ヒータ806の温度を制御する。サブマスタCPU801とスレーブCPU802、803は共通のシリアル通信バス808により接続されている。
次に、本発明の特徴である制御モジュール間での制御命令の異常検知に関して説明する。複数の制御モジュールのうち少なくとも第1制御モジュールとして、図5に示した第1搬送モジュール280を一例として採用する。第1搬送モジュール280は、給紙カセット240、241および手差し給紙部253に格納された記録材を二次転写装置231と転写ベルト226との当接部に給送するまでの給紙制御を司っている。第1搬送モジュール280は、給紙制御を統括的に制御するサブマスタCPU601と、各負荷の駆動を行うスレーブCPU602、603を含む。また、各スレーブCPUには、直接制御される負荷群が接続されている。
スレーブCPU602は、第1通信インタフェース501、第2通信インタフェース502、ROM503およびRAM504を内蔵している。スレーブCPU602は、第1通信インタフェース501を介してサブマスタCPU601と制御命令やステータス情報などを送信および受信する。よって、第1通信インタフェース501は、複数の制御モジュールのうち通信線を介して接続された第2制御モジュールから制御命令を受信する受信手段として機能する。スレーブCPU602は、第2通信インタフェース502を介してセンサから情報を受信したり、モータなどに制御信号を送信したりする。ROM503には制御プログラム、データおよびリストなどが格納されている。RAM504にはセンサから取得したデータや受信した制御命令の履歴などが格納される。スレーブCPU602は、第3通信インタフェース505を介してスレーブCPU603との間でエラーの発生を示す通知を送受信してもよい。スレーブCPU602は、給紙カセット240に関連したピックアップローラ238を駆動させるためのモータ606、シートなし検知センサ243および給紙センサ247を負荷とし、給紙パス266に記録材を引き渡すまでの制御を行う。スレーブCPU602は、さらに、給紙カセット241に関連したピックアップローラ239を駆動させるためのモータ607、シートなし検知センサ244、給紙センサ248を負荷とし、給紙パス266に記録材を引き渡すまでの制御を行う。
スレーブCPU603の内部構成は、スレーブCPU602の内部構成とほぼ同様であるため、説明を省略する。スレーブCPU603は、手差し給紙部253に関連したピックアップローラ254を駆動させるためのモータ608、シートなし検知センサ245、給紙センサ249を負荷とし、給紙パス266に記録材を引き渡すまでの制御を行う。スレーブCPU603は、さらに、給紙ローラ対235、236、237を駆動させるためのモータ609、610、611、および、レジストセンサ256を負荷とする。スレーブCPU603は、これらの負荷を制御して、給紙カセット240、241、手差し給紙部253から引き渡された記録材をレジストローラ255まで搬送して一時停止させるまでの制御を行う。なお、本実施例では、サブマスタCPU601とスレーブCPU602、603は各々独立のシリアル通信バス612、613により1対1で対向接続されている。
電磁気的なノイズの影響や複数の制御モジュール間の同期ズレ(制御遅延)などに起因していずれかの制御モジュールが異常動作を起こすことがある。異常動作が発生すると、制御命令の発行側の制御モジュールは、本来であれば発行しないような制御命令を発行してしまうかもしれない。この誤った制御命令を受信側の制御モジュールが実行してしまうと、設計上は想定されていない動作状態(禁止状態)に移行してしまうおそれがある。そして、この設計上は想定されていない動作状態においてセンサが検出した値を他の制御モジュールが利用してしまうと、機器制御システムの全体に異常動作が波及してしまうおそれがある。よって、実施例では、このような禁止状態へ制御モジュールを移行させてしまうような制御命令を検知することで、異常の波及を抑制する。例えば、複数の制御命令のそれぞれに対応した制御モジュールの動作状態を示す第1リスト、制御モジュールにおける複数の動作状態間の遷移を示す第2リスト、複数の制御命令間の遷移を示す第3リストのうち少なくとも1つの制約リストをメモリに記憶する。そして、受信手段により受信された制御命令に対応する動作状態が第1リストによって禁止されている動作状態かどうかの判定を実行してもよい。あるいは、受信手段により受信された複数の制御命令に対応した複数の動作状態間の遷移が第2リストによって禁止されていない遷移かどうかの判定を実行してもよい。あるいは、受信手段により受信された複数の制御命令間の遷移が第3リストによって禁止されていない遷移かどうかの判定を実行してもよい。すなわち、これら判定処理のうち少なくとも1つの判定処理を実行すれば、実行を制約されるべき制御命令を検出することができる。以下では、各スレーブCPUの動作上ありえない禁止状態をつくりだす制御命令を検出する検出手段として機能するスレーブCPU602、603を例にとってこの検出処理について説明する。
図6に示すように画像形成装置1000は画像形成を行う際に手差し給紙部253、給紙カセット240および給紙カセット241のいずれか1つから記録材を供給する。複数の給紙部が同時にて記録材の給紙動作状態へ移行することはない。すなわち、複数の給紙部に対して同時に給紙命令が発行されることはない。さらに、スレーブCPUに接続されるモータやセンサ等の負荷間にも動作上の制約が存在する。例えば、給紙カセット240から給紙する際にはモータ606がまず回転状態へ移行し、次に、給紙センサ247が記録材を検出している状態(オン状態)に移行し、さらにその後に後段のモータ611が駆動状態に移行する。また、給紙センサ247、レジストセンサ256がオフの状態に移行してから、モータ606、611は停止状態に移行する。このように、複数の動作状態には、時系列的に正しい遷移の順番が存在する。
図7には、スレーブCPU602、603についての制約リストの一例を示している。スレーブCPU602、603はこの制約リストに応じて動作状態の制約や異常な制御命令の検出したり、制御命令の実行可否を判定したりする。つまり、スレーブCPU602、603は、内蔵ROMや外部のROMにこれらの制約リストを格納している。制約リストは、複数の駆動デバイス(機能グループやモータ等)間における排他的な動作制約、複数の駆動デバイスの同時(同期)動作制約、動作の前提となる条件(各種センサ入力等)による動作制約を考慮して予め作成されるものとする。ここでは、制約リストの一例として、状態リスト、状態遷移リストおよび命令遷移リストの3種類について説明する。これらは、上述した第1リスト、第2リスト、第3リストにそれぞれ対応している。これらの制約リストは、適宜、禁止されるべき制御命令間の遷移や動作状態間の遷移を登録した禁止リスト、または、許可されるべき制御命令間の遷移や動作状態間の遷移を登録した許可リストの形式で記述される。禁止リストと許可リストは同等の内容を表現することが可能である。よって、これらの使い分けはシステム上の制約により記述が容易なリストを選択すればよいであろう。例えば、機器の制約が少ないものは禁止リストで記述し、制約が多ければ許可リストで記述する。このように、リストのサイズが小さくなるような形式を採用すれば、リスト記憶手段として機能するROM503の記憶容量を節約できる利点がある。
禁止リストは、禁止された動作状態、禁止された複数の動作状態間の遷移、禁止された複数の制御命令間の遷移を記述したリストである。禁止リストに記述された動作状態、動作状態間の遷移、制御命令間の遷移が検知されれば、その制御命令は禁止命令であるとしてCPUによって決定される。許可リストは、許可された動作状態、許可された複数の動作状態間の遷移、許可された複数の制御命令間の遷移を記述したリストである。許可リストに記述された動作状態、複数の動作状態間の遷移、複数の制御命令間の遷移に該当しない制御命令は禁止命令であるとしてCPUによって決定される。
動作状態リストは、制御モジュールによって制御される各負荷の動作状態を記述したリストである。CPUは、受信した制御命令を実際に実行する前に、仮想的に実行した後の動作状態を決定する。例えば、スレーブCPU602は、サブマスタCPU601からモータ606をONにせよとの制御命令を受信したと仮定する。この場合、スレーブCPU602は、この制御命令を実行すると、給紙カセット240に関する給紙センサ247が記録材を検知した状態に移行することを内部テーブルによって把握する。このような状態の決定手法を仮想的な実行と呼ぶことにする。通常、この制御命令を受信した時点において、給紙カセット241の給紙センサ248は記録材を検知した状態に移行してはいない。仮に給紙センサ247と給紙センサ248の双方が記録材を検知した動作状態に移行してしまうと、ジャムが発生するため、このような動作状態は動作状態リストによって禁止されているか、または、許可されていない。このように、スレーブCPU602は、受信した制御命令を実際に実行する前に、仮想的に実行した後の動作状態を決定する。そして、スレーブCPU602は、決定した動作状態と現在の動作状態に基づいて動作状態リストを参照し、決定した動作状態と現在の動作状態とが禁止された動作状態かどうかを判定する。決定した動作状態と現在の動作状態とが動作状態リストに記述されていれば、スレーブCPU602は、受信した制御命令を、実行を制約された制御命令であると検知する。
状態遷移リストは動作状態の遷移を示す制約リストである。状態遷移リストには、ある制御命令を実行する前の動作状態とこの制御命令を実行した後の動作状態とを関連付けて登録している。よって、スレーブCPUは、制御命令を受信すると、その時点での動作状態をセンサ等により取得する。さらに、スレーブCPUは、受信した制御命令を仮想的に実行した後の動作状態を決定する。この前後の動作状態が正しい動作状態の遷移を示しているかどうかをスレーブCPUが判定する。つまり、状態遷移リストには、複数の動作状態間の遷移が予め登録されている。スレーブCPUは、制御命令に基づいた複数の動作状態間の遷移が状態遷移リストに登録されている遷移であれば、受信した制御命令は正しい制御命令であると判定する。一方、スレーブCPUは、制御命令に基づいた複数の動作状態間の遷移が状態遷移リストに登録されていない遷移であれば、受信した制御命令は禁止命令であると判定する。
命令遷移リストは、複数の制御命令の実行順番(発行順序)を登録した制約リストである。複数の制御命令間では、その実行順番に制約があることがある。スレーブCPUは、受信した制御命令の履歴をRAMに保持しておく。スレーブCPUは、新たな制御命令を受信すると、新たな制御命令と、直前に受信した1つ以上の制御命令との実行順番が命令遷移リストによって禁止された実行順番かどうかを判定する。
図7には(a)から(g)まで複数のリストを例示したが、すべての制約リストが必須というわけではない。図7(a)によれば、スレーブCPU602に対する状態禁止リストが示されている。図中の○は動作状態を示し、×は停止状態を示している。1番目の状態リストは給紙カセット240が動作状態であり、給紙カセット241が停止状態であることを示している。2番目の状態リストは給紙カセット240が停止状態であり、給紙カセット241が動作状態であることを示している。3番目の状態リストは給紙カセット240が停止状態であり、給紙カセット241も停止状態であること示している。このように、図7(a)に示したリストは許可リストとして表現されている。よって、このリストでは、給紙カセット240と給紙カセット241の双方が動作状態となることは禁止されている。図7においては、機能グループの定義を省略している。機能グループの定義は、グループテーブル情報として規定できる。
図7(a)のリストでは、同時に許可されるべき複数の動作状態を関連付けて登録しているが、さらに、制約レベルも登録されている。制約レベルは、ラーの深刻度に対応しており、禁止命令が発行されときに取りうるべきエラー対処方法を選択する基準となる。スレーブCPUは、制約リストを参照することで禁止命令に対応した制約レベルを特定し、特定されたレベルに対応したエラー対処方法を選択する。例えば、制約レベルにおいて「1」は、機器制御システムの安全に係わる違反であることを示している。よって、制約レベルが1であれば、スレーブCPUは異常の発生を他のCPUに通知し、即時に動作を停止する。制約レベルにおいて「2」は、機器制御システムの機能制約に係わる違反であることを示している。制約レベルが2であれば、スレーブCPUは、異常の発生を他のCPUに通知し、制御命令を実行せずに破棄(キャンセル)する。制約レベルにおいて「3」は、機器制御システムの動作条件違反を示している。制約レベルが3であれば、スレーブCPUは、その制御命令を実行するための前提条件が満たされるようになるまで、その制御命令の実行を延期する。
モータ606、607はそれぞれ、図5の説明から明らかなように、給紙カセット240、241と同一機能グループに属し、これらを同時に動作させる制御命令は明らかに異常である。よって、異常な動作となったサブマスタCPU601からこれら2つのモータを同時に駆動状態とする制御命令を受信した場合、図7(a)の制約リストによりスレーブCPU602は、異常の発生を他のCPUに通知し、即時に動作を停止する。
図7(b)は、スレーブCPU602に対する動作状態リストを例示している。動作状態リストは禁止リストとして記述されている。このリストによれば、給紙センサ247が紙を検知している(オン)状態でのモータ606、607の駆動停止が禁止されている。スレーブCPU602は、給紙センサ247がオン状態かオフ状態かを監視している。給紙センサ247がオン状態であるときにモータ606、607の停止命令を受信すると、スレーブCPU602は、給紙センサ247がオフになるのを待って、モータ606、607を停止する。つまり、受信した制御命令を実行するための前提条件が満たされるまで待機してから、当該制御命令が実行される。ここで、スレーブCPU602について、図7(a)に示したリストと図7(b)に示したリストを使用して説明したが、これらのリストは、図7(g)に示す禁止リストへと統合されてもよい。
上述したように、スレーブCPUは、受信した制御命令を実際に実行する前に、仮想的に実行した後の動作状態を決定し、決定した動作状態が状態リストによって禁止されている動作状態かどうかを判定する。禁止された動作状態であれば、スレーブCPUは、受信した制御命令を禁止命令であると決定する。よって、通信相手のCPUが異常動作に起因して誤った制御命令(禁止命令)が発行したとしても、スレーブCPUは禁止命令を実行しないため、誤動作を回避できる。また、通信相手のCPUの異常動作がスレーブCPUに波及しなくなる。また、スレーブCPUと連携して動作する他のCPUへ異常が波及することも抑制できる。複数の制御モジュールのうち制約が少ないものは禁止リストで記述し、制約が多ければ許可リストで記述すれば、メモリの記憶容量を節約できる利点がある。
図7(c)は動作状態遷移リストを許可リストによって実現した事例を示している。このリストには、給紙センサ247とモータ606の各動作状態の遷移が関連付けて登録されている。動作状態遷移リストは、複数の動作状態間の遷移が所定の順番で発生する場合に使用される。つまり、動作状態遷移リストによって定義されていない順番での遷移は禁止され、動作状態遷移リストによって定義されている順番での遷移が許可される。現在の動作状態から、実際に制御命令を実行する前に仮想的に実行した後の動作状態への遷移を、リストに登録された遷移と比較することで、スレーブCPUは、受信した制御命令が禁止命令かどうかを判定する。動作状態遷移リストに登録されていない遷移が発生すると、スレーブCPUは、その制御命令を実行せずに破棄する。あるいは、登録された遷移が実現されるまで、スレーブCPUは、受信した制御命令の実行を延期してもよい。このどちらを採用するかは、動作状態遷移リストに登録されている制約レベルに応じて決定すればよい。
スレーブCPUは、動作状態リストに加えてまたは代えて、動作状態遷移リストを用いて制御命令の実行可否を判断することで、より厳密な制御命令の可否判定を実行できるであろう。つまり、複数の制御命令を実行した結果である動作状態の照合だけでなく、複数の動作状態間の遷移も参照すれば、判断要素が増えるだけに、判断の正確さが向上すると考えられる。
図7(d)、図7(e)は、スレーブCPU603に適用される制約リストである。これらは、対象となる駆動デバイス(レジストセンサ256とモータ611)が異なることを除けば、図7(b)と、図7(c)と同様の内容であるため説明は省略する。図7(f)は、スレーブCPU603についての制御命令遷移リストの一例を示している。関連する複数の制御命令間での発行の遷移に対する制約を示している。つまり、複数の制御命令には発行順番または実行順番が予め定義されており、その順番をこのリストで管理している。図7(f)のリストには、モータ611の制御命令とモータ608の制御命令について禁止されるべき遷移が登録されている。スレーブCPU603は、受信した制御命令の履歴をRAMに記憶しておく。スレーブCPU603は、新たな制御命令(Next)を受信すると、直前の制御命令(Current)を履歴から特定し、この2つの制御命令間の遷移が制御命令遷移リストに登録されている遷移かどうかを判定する。これにより、スレーブCPU603は、リストによって禁止された遷移であれば新たな制御命令を禁止命令と決定し、リストによって禁止されていない遷移であれば新たな制御命令を許可命令と決定する。具体的にはモータ608のオン命令を受信した後、モータ608のオン命令を受信したと仮定する。このような制御命令の遷移は、図7(f)の3番目の状態リストによって禁止されている。よって、スレーブCPU603は、モータ608のオン命令を実行せずに破棄する。なお、モータ608がオン状態で再度オン命令が発行されるような不要な命令が発行されたことは、図7(d)や図7(e)に示したリストからは検出できない。これは、同内容の制御命令が連続して発行されたときは、動作状態の遷移が発生しないからである。よって、制御命令遷移リストを導入すれば、動作状態の遷移からは検出できない異常を検出できるようになる。
図8を参照して、制御命令を受信した際のスレーブCPUの処理について説明する。S800で、スレーブCPUは、サブマスタCPUからの制御命令を受信したかどうかを判定する。制御命令を受信すると、S801に進む。S801で、スレーブCPUは、受信した制御命令を仮想的に実行した後の動作状態を決定する。なお、制御命令に対応した動作状態は予めテーブルに登録されていてもよい。スレーブCPUは、テーブルを参照することで、受信した制御命令に対応した動作状態を簡単に特定することができる。さらに、スレーブCPUは、決定した動作状態から複数の動作状態間の遷移を決定してもよい。さらに、スレーブCPUは、制御命令の履歴から、直前の制御命令と新たな制御命令間の遷移を特定してもよい。これらの処理は図7を用いて詳細に説明したとおりである。
S802で、スレーブCPUは、受信した制御命令が禁止命令かどうかを判定する。スレーブCPUは、例えば、受信した制御命令に対応する動作状態が、複数の制御命令のそれぞれに対応した制御モジュールの動作状態を示す動作状態リストによって禁止されているかどうかを判定する。また、スレーブCPUは、現在の動作状態から受信した制御命令に対応する動作状態への遷移が、制御モジュールにおける複数の動作状態間の遷移を示す動作状態遷移リストによって禁止されているかどうかを判定する。また、スレーブCPUは、直前に実行した制御命令から新たに受信した制御命令への遷移が、複数の制御命令間の遷移を示す制御命令遷移リストによって禁止されているかどうかを判定する。これらの3つある判定処理のうち、1つ以上が実行されればよい。スレーブCPUは、いずれかの判定処理によって、受信した制御命令を禁止命令と判定すると、禁止命令に対応した制約レベルをリストから特定し、特定された制約レベルに応じた処理を実行するために、S810に進む。なお、受信した制御命令が禁止命令でなければ、S803に進む。
S803で、スレーブCPUは、サブマスタCPUから受信した制御命令を正式に受け付けて実行する。S804で、スレーブCPUは、受信した制御命令を履歴に追記してRAMに書き込む。
S810で、スレーブCPUは、禁止命令に対応した制約レベルをリストから特定し、特定された制約レベルがレベル1かどうかを判定する。レベル1であれば、S811に進み、スレーブCPUは、制御命令を実行せずに破棄するとともに、サブマスタCPUにエラーの発生を通知する。なお、スレーブCPUと連携している他のスレーブCPUが存在すれば、スレーブCPUは、他のスレーブCPUにも第3通信インタフェース505を通じてエラーの発生を通知してもよい。第3通信インタフェース505は、複数の制御モジュールのうち通信線を介して接続された他の制御モジュールに対して異常が発生していることを示す通知を送信する送信手段として機能する。さらに、スレーブCPUは、システムリセットをこれらのCPUに要求する。このように、スレーブCPUは、検出手段によって実行を制約されるべき制御命令が検出されると、制御命令を実行せずに破棄する破棄手段として機能する。
特定された制約レベルがレベル1でなければ、S820に進む。ところで、禁止命令が検出されたということは、サブマスタCPUにエラーが発生している事を意味している。この場合に、他のスレーブCPUにエラーが発生しているとすれば、機器制御システムの全体でみると深刻なエラーが生じている可能性が高い。そこで、本実施例では、他の制御モジュールからエラーの発生を知らせる通知を受信すると、特定手段が特定したレベルを、レベルが示すエラーの深刻度よりも高い深刻度を示すレベルに変更することにする。S820で、スレーブCPUは、特定された制約レベルがレベル2かどうかを判定する。レベル2であれば、S821に進む。S821で、スレーブCPUは、連携している他のスレーブCPUからエラーの通知を受信しているかどうかを判定する。スレーブCPUは、複数の制御モジュールのうち第2制御モジュールとは異なる他の制御モジュールからエラーの発生を知らせる通知を受信しているかどうかを判定する判定手段として機能する。他のスレーブCPUにもエラーが発生していれば、機器制御システムに深刻なエラーが発生していると推定されるため、S811に進む。S811では、レベル2よりも深刻度の高いレベル1についてのエラー対処方法が実行される。このように、S820で特定されたレベル2を、レベル2が示すエラーの深刻度よりも高い深刻度を示すレベル1に変更している。
一方で、連携している他のスレーブCPUからエラーの通知を受信していなければ、S822に進む。S822で、スレーブCPUは、サブマスタCPUにエラーを通知し、サブマスタCPUから受信した制御命令を実行せずに廃棄する。特定された制約レベルがレベル1でもレベル2でもなければ、S831に進む。S831で、スレーブCPUは、自己の動作状態を監視し、受信した制御命令を実行するための前提条件を動作状態が満たすまで待機し、前提条件が満たされると、当該制御命令を実行する。このように、スレーブCPUは、第1制御モジュールの動作状態を監視する監視手段として機能する。また、スレーブCPUは、監視手段によって監視された動作状態が制御命令を実行可能な状態に変化するまで、制御命令の実行を延期する実行延期手段として機能する。
このように、本実施例によれば、許容されない動作状態、動作状態間の遷移または制御命令間の遷移などをリスト化しておくことで、実行を制約されるべき制御命令を適確に検出できるようになる。なお、実行を制約されるべき制御命令を検出できれば、その副次的な効果として、ある制御モジュールにおける異常動作が他の制御モジュールへ波及すること抑制できる効果も期待できよう。例えば、このような制御命令を実行せずに破棄したり、他の制御モジュールにエラーを通知したり、サブマスタCPUのエラーがスレーブCPUに波及することを抑制できる。また、エラーの深刻度が相対的に低ければ、監視された動作状態が制御命令を実行可能な状態に変化するまで制御命令の実行を延期してもよい。これにより、回復までに比較的に長い時間を消費するシステムリセットを回避できよう。このように、制約レベルに対応したエラー対処方法を選択することで、エラーの回復にかかる時間を短縮できよう。
また、スレーブCPUは、相対的に低い制約レベルを検知し、かつ、他のスレーブCPUからのエラーも検知することがある。この場合、スレーブCPUは、相対的に高い制約レベルへと制約レベルを変更することで(S820、S821)、機器制御システム全体でのエラーの発生状況を個々のスレーブCPUに反映できる。自分だけでなく他のスレーブCPUでもエラーが発生していれば、機器制御システム全体では大きなエラーが発生していると考えられるからである。
図9(a)、図9(b)は、サブマスタCPU601とスレーブCPU602、603との間における制御命令と、給紙センサ247、256、モータ606、611の動作状態との関係を示すタイミングチャートである。とりわけ、図9(a)は正常に制御命令が発行された場合のタイミングチャートを示し、図9(b)は制約レベル3の禁止命令が発行された場合のタイミングチャートを示している。図9(a)のタイミング(A)ではサブマスタCPU601からスレーブCPU603にモータ611の停止命令が発行されている。図7(d)によれば、レジストセンサ256がオン状態のときにモータ611の停止命令の実行は禁止されている。一方で、レジストセンサ256はオフ状態のときにモータ611の停止命令の実行は許可されている。よって、タイミング(A)での停止命令は実行され、モータ611が停止する。図9(b)のタイミング(B)でも、モータ611の停止命令が発行されている。しかし、タイミング(b)ではレジストセンサ256はオン状態であるので、この停止命令は、図7(d)のリストによって禁止命令と判定される。なお、制約レベルが3であるため、停止命令は実行を延期される。レジストセンサ256がオフ状態に移行したタイミング(C)で、スレーブCPUは、モータ611の停止命令を実行する。図9(b)のタイミング(D)では、モータ607の動作開始を指示するための制御命令が発行されている。図7(a)のリストによれば、モータ606、607は同時に動作することが禁止されている。また、その制約レベルは2である。よって、この制御命令は実行されるに破棄される。また、スレーブCPU602からサブマスタCPU601へエラー通知が実行される。エラー通知を受信したサブマスタCPU601はマスタCPU1001に異常の発生を報知してもよい。マスタCPU1001は、操作部10が備える表示部にエラー発生を表示したり、図示せぬ外部ネットワークを経由したホスト装置にエラー情報を送信したりしてもよい。エラーを操作者やホスト装置に報知することにより、速やかにエラーの発生を操作者等に認識させることが可能となる。例えば、システムリセットを実行してもエラーが再発する場合は、操作者によるメンテナンスによって、エラーの発生原因を修復することが可能となろう。
図9(a)、図9(b)では、モータのオン/オフをサブマスタCPU601からの制御命令に応じてスレーブCPUが実行するものとして説明した。しかし、図7(c)や図7(e)のような動作状態遷移リストとその他のリストとを基にスレーブCPU602、603が自立的に制御を実行してもよい。この場合、サブマスタCPU601からの制御命令は動作開始命令のみにすることが可能となる。また、サブマスタCPU601のエラーがスレーブCPU602、603へ波及しにくくなる利点もある。
以上説明したように、本実施例の機器制御システムにおいては、異常動作に起因した制御命令を適確に検出することが可能となる。また、常動作に起因して制御命令の発行タイミングがずれてしまった場合も、禁止命令として検出することができる。また、エラーレベルの深刻度を反映して定義された制約レベルを導入することで、エラーレベルに応じて制御命令の取り扱い方法を切り替えることも可能となる。
[他の実施例]
上述した実施例では制約リストをCPU個別に設けられるリストとして説明した。しかし、複数のCPUグループにとって共通の制約リストとして統合されてもよい。複数のCPUが個々の状態を相互に通知し合うことにより、個々のCPUへの制御命令がグループ全体として正常かどうかを判定することで、禁止命令の検出能力を向上させることが可能となろう。
図10は、スレーブCPU602、603の制約条件を1つに統合したリストの一例を示している。図7(a)のリストでは給紙カセット240、241の排他的な動作のみが禁止されていたが、図10(a)のリストでは給紙カセット240、241および手差し給紙部253の同時の給紙動作が禁止されている。図10(b)、図10(c)でも同様に3つ以上のモータやセンサで禁止命令が定義されている。図7(b)、図7(c)、図7(d)、図7(e)および図7(f)の示した各リストと比較し、より詳細に禁止命令が設定されている。このように、連携して動作する3つ以上のモジュールをグループ化して禁止命令を定義することで、より安全なシステムを構成することが可能となろう。また、異常動作に起因した禁止命令の検出はスレーブCPUのみで行うのではなく、他のCPUで実行してもよいことは既に説明したとおりである。さらに、本実施例では、禁止命令を検出することで、個々の制御モジュールにおける異常動作を検出してい。しかし、各制御モジュールのステータスをつき合わせることで、個々のステータスをシステム全体のステータスに置き換え、システム全体のステータスと禁止命令を定義したリストとを比較することで、異常動作を検出してもよい。
上述した実施例では、第1搬送モジュール280について説明したが、同様の技術思想は、第2搬送モジュール281、作像モジュール282および定着モジュール283にも適用できる。さらに、マスタCPU1001と、サブマスタCPU601、701、801、901との間にも同様の技術思想を適用してもよい。例えば、マスタCPU1001からの制御命令についてサブマスタCPU601は上述の異常動作の検出を実行することになる。この場合、スレーブCPU間でのエラー通知はサブマスタCPU間で実行されることになる。