(57)【特許請求の範囲】
【請求項１】
通信線により接続された複数の制御モジュールを備えた機器制御システムにおいて、
前記複数の制御モジュールのうち少なくとも第１制御モジュールは、
前記複数の制御モジュールのうち前記通信線を介して接続された第２制御モジュールから制御命令を受信する受信手段と、
複数の制御命令のそれぞれに対応した前記第１制御モジュールの動作状態を示す第１リスト、該第１制御モジュールにおける複数の動作状態間の遷移を示す第２リスト、および、複数の制御命令間の遷移を示す第３リストのうち少なくとも１つのリストを記憶したリスト記憶手段と、
前記受信手段により受信された制御命令に対応する動作状態が前記第１リストによって禁止されている動作状態かどうかの判定、前記受信手段により受信された複数の制御命令に対応した複数の動作状態間の遷移が前記第２リストによって禁止されていない遷移かどうかの判定、および、前記受信手段により受信された複数の制御命令間の遷移が前記第３リストによって禁止されていない遷移かどうかの判定のうち少なくとも１つの判定を実行することで、実行を制約されるべき制御命令を検出する検出手段と
を備え、
前記複数の制御モジュールのうち少なくとも第１制御モジュールは、
前記第１制御モジュールの動作状態を監視する監視手段と、
前記検出手段によって実行を制約されるべき制御命令が検出されると、前記監視手段によって監視された動作状態が該制御命令を実行可能な状態に変化するまで、該制御命令の実行を延期する実行延期手段と
をさらに備えることを特徴とする機器制御システム。
【請求項２】
前記複数の制御モジュールのうち少なくとも第１制御モジュールは、
前記検出手段によって実行を制約されるべき制御命令が検出されると、該制御命令を実行せずに破棄する破棄手段をさらに備えることを特徴とする請求項１に記載の機器制御システム。
【請求項３】
前記複数の制御モジュールのうち少なくとも第１制御モジュールは、
前記検出手段によって実行を制約されるべき制御命令が検出されると、前記複数の制御モジュールのうち前記通信線を介して接続された他の制御モジュールに対して異常が発生していることを示す通知を送信する送信手段をさらに備えることを特徴とする請求項１または２に記載の機器制御システム。
【請求項４】
通信線により接続された複数の制御モジュールを備えた機器制御システムにおいて、
前記複数の制御モジュールのうち少なくとも第１制御モジュールは、
前記複数の制御モジュールのうち前記通信線を介して接続された第２制御モジュールから制御命令を受信する受信手段と、
複数の制御命令のそれぞれに対応した前記第１制御モジュールの動作状態を示す第１リスト、該第１制御モジュールにおける複数の動作状態間の遷移を示す第２リスト、および、複数の制御命令間の遷移を示す第３リストのうち少なくとも１つのリストを記憶したリスト記憶手段と、
前記受信手段により受信された制御命令に対応する動作状態が前記第１リストによって禁止されている動作状態かどうかの判定、前記受信手段により受信された複数の制御命令に対応した複数の動作状態間の遷移が前記第２リストによって禁止されていない遷移かどうかの判定、および、前記受信手段により受信された複数の制御命令間の遷移が前記第３リストによって禁止されていない遷移かどうかの判定のうち少なくとも１つの判定を実行することで、実行を制約されるべき制御命令を検出する検出手段と
を備え、
前記第１リスト、前記第２リストおよび前記第３リストのそれぞれには、前記実行を制約されるべき制御命令に対応したエラーの深刻度を示すレベルが登録されており、
前記複数の制御モジュールのうち少なくとも第１制御モジュールは、
前記実行を制約されるべき制御命令に対応したレベルを特定する特定手段と、
前記特定手段によって特定されたレベルに対応したエラー対処方法を選択する選択手段と、
前記複数の制御モジュールのうち前記第２制御モジュールとは異なる他の制御モジュールからエラーの発生を知らせる通知を受信しているかどうかを判定する判定手段と、
前記他の制御モジュールからエラーの発生を知らせる通知を受信すると、前記特定手段が特定したレベルを、該レベルが示すエラーの深刻度よりも高い深刻度を示すレベルに変更する変更手段と
をさらに備えることを特徴とする機器制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵ群を有する分散制御システムによって実現された機器制御システムに関する。
【背景技術】
【０００２】
従来、プリンタや複写機などの画像形成装置の制御では、単一のＣＰＵによる集中制御が採用されていた。しかし、制御の一点集中によるＣＰＵ負荷の増大や、制御ＣＰＵ基板から離れた負荷ドライバユニットまで引き回される制御通信束線の長大化が課題となっていた。このような課題を解決するために、電子写真システムを構成する各制御モジュールを個々のサブＣＰＵに分割する分散制御システムが注目されている（特許文献１参照）。分散制御システムでは、分散配置された複数の制御モジュールが、制御情報や命令等を送受信しながら協調して動作する。よって、制御情報や命令が誤って伝えられると誤動作が発生する。通信データの誤りについては、パリティチェック等により検出でき、誤り訂正符号によってデータの誤りを訂正できる。また、特許文献２によれば、異常な数のパケットを受信していることを検出すると、ＬＡＮ通信制御装置が機能停止することが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０８−３３６１８９号公報
【特許文献２】特開２０００−２９５２５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、画像形成装置は、紙搬送、ヒータ制御、印刷プロセス制御と言った制御上の独立性の高い複数の機能グループを備えている。よって、画像形成装置に分散制御システムを適用する場合、複数の分散制御モジュールが機能グループごとにまとまった階層構造を採用し、下位階層が上位階層からの命令を受けて動作することになろう。このような階層構造ではシステムの安全性を高めるには、上位階層と下位階層との間で通信データが正しく送受できているかだけでなく、各階層が相互に正常に動作しているかを検出する必要がある。誤り検出符号や誤り訂正符号は、通信路で発生する通信データの誤りは検出できるが、分散制御モジュールの誤動作によって発行される誤った制御命令は通信路で生じる誤りではないため検出できない。１つの分散制御モジュールの誤動作は、階層構造を通じて、他の分散制御モジュールに波及する恐れがあるため、適切に検出して対処する必要がある。なお、異常動作の原因は様々である。電磁気的なノイズの影響で直接的に分散制御モジュールが異常となるケースや、各種センサの出力が異常となり間接的に分散制御モジュールが異常となるケースもある。また、複数の分散制御モジュール間の同期ズレ（制御遅延）などによっても異常が発生するケースもある。このような一部の分散制御モジュールの異常が連携する他の分散制御モジュールに波及するのを防ぐためには個々の分散制御モジュールが正常に動作していることを相互に確認することが有効であろう。
【０００５】
そこで、本発明は、このような課題および他の課題のうち、少なくとも１つを解決することを目的とする。例えば、複数の制御モジュールが連携して動作する機器制御システムにおいて、ある制御モジュールにおける異常動作が他の制御モジュールへ波及することを抑制するために、当該異常動作を検出することを目的とする。なお、他の課題については明細書の全体を通して理解できよう。
【課題を解決するための手段】
【０００６】
本発明は、例えば、
通信線により接続された複数の制御モジュールを備えた機器制御システムにおいて、
前記複数の制御モジュールのうち少なくとも第１制御モジュールは、
前記複数の制御モジュールのうち前記通信線を介して接続された第２制御モジュールから制御命令を受信する受信手段と、
複数の制御命令のそれぞれに対応した前記第１制御モジュールの動作状態を示す第１リスト、該第１制御モジュールにおける複数の動作状態間の遷移を示す第２リスト、および、複数の制御命令間の遷移を示す第３リストのうち少なくとも１つのリストを記憶したリスト記憶手段と、
前記受信手段により受信された制御命令に対応する動作状態が前記第１リストによって禁止されている動作状態かどうかの判定、前記受信手段により受信された複数の制御命令に対応した複数の動作状態間の遷移が前記第２リストによって禁止されていない遷移かどうかの判定、および、前記受信手段により受信された複数の制御命令間の遷移が前記第３リストによって禁止されていない遷移かどうかの判定のうち少なくとも１つの判定を実行することで、実行を制約されるべき制御命令を検出する検出手段と
を備え、
前記複数の制御モジュールのうち少なくとも第１制御モジュールは、
前記第１制御モジュールの動作状態を監視する監視手段と、
前記検出手段によって実行を制約されるべき制御命令が検出されると、前記監視手段によって監視された動作状態が該制御命令を実行可能な状態に変化するまで、該制御命令の実行を延期する実行延期手段と
をさらに備えることを特徴とする機器制御システムを提供する。
【発明の効果】
【０００７】
本発明によれば、許容されない動作状態、動作状態間の遷移または制御命令間の遷移などをリスト化しておくことで、実行を制約されるべき制御命令を適確に検出できるようになる。なお、実行を制約されるべき制御命令を検出できれば、その副次的な効果として、ある制御モジュールにおける異常動作が他の制御モジュールへ波及すること抑制できる効果も期待できよう。
【図面の簡単な説明】
【０００８】
【図１】本実施例に係る画像形成装置１０００の概観を示す図である。
【図２】本実施例に係る画像形成部３００の構成例を示す断面図である。
【図３】本実施例に係るマスタＣＰＵ、サブマスタＣＰＵおよびスレーブＣＰＵの関連を模式的に示す図である。
【図４】本実施例に係る画像形成装置１０００の制御基板の一例を示す図である。
【図５】本実施例に係るサブマスタＣＰＵ６０１、スレーブＣＰＵ６０２、６０３の接続関係を示す図である。
【図６】本実施例に係る手差し給紙部２５３、給紙カセット２４０および給紙カセット２４１の排他的な動作を示すシーケンス図である。
【図７】本実施例に係る図５に示したサブマスタＣＰＵ６０２、６０３の制約リストを示す図である。
【図８】本実施例に係るスレーブＣＰＵが制御命令を受信したときに実行する処理を示すフローチャートである。
【図９】本実施例に係る制約リストを用いた給紙制御を示したシーケンス図である。
【図１０】本実施例に係る複数のサブマスタＣＰＵにより構成されたグループについて制約リストを示した図である。
【発明を実施するための形態】
【０００９】
［実施例１］
＜画像形成装置の構成＞
本実施例では、通信線により相互に接続された複数の制御モジュールを備えた機器制御システムの一例として画像形成装置を取り上げる。なお、分散された複数の制御モジュールを採用する機器制御システムであれば本願発明の技術思想を適用できることはいうまでもない。図１に示すように、画像形成装置１０００は、自動原稿搬送装置１００、画像読取部２００、画像形成部３００および操作部１０を備える。図１に示した画像形成装置は一般に複写機や複合機と呼ばれる製品形態をしている。以下で詳細に説明するように、画像形成装置１０００は、複数の制御部（ＣＰＵ）を用いて分散制御を実現する。自動原稿搬送装置１００は、原稿を自動的に原稿台ガラス上に搬送する。画像読取部２００は、自動原稿搬送装置１００から搬送された原稿を読み取って画像データを出力する。画像形成部３００は、画像読取部２００から出力された画像データや通信線を介して接続された外部のホスト装置から入力された画像データに従って記録材に画像を形成する。操作部１０は、ユーザが各種操作を行うためのＧＵＩ（グラフィカル・ユーザ・インタフェース）を有する。さらに、操作部１０は、タッチパネル等の表示部を有し、ユーザに対して情報を提示する。
【００１０】
＜画像形成部＞
図２に示した画像形成部３００の画像形成方式はとして電子写真方式を採用している。なお、本願発明の技術思想は、画像形成方式に依存するものではない。よって、本願発明は、インクジェット方式、熱転写方式やその他画像形成方式にも適用できる。なお、参照番号の末尾に示すアルファベットＹ、Ｍ、Ｃ、Ｋは、それぞれイエロー、マゼンダ、シアン、ブラックのトナーを示している。よって、各トナーに共通する事項について説明するときは末尾のアルファベットＹ、Ｍ、Ｃ、Ｋを省略する。各トナーについてそれぞれ個別の事項について説明する場合は参照番号の末尾にアルファベットＹ、Ｍ、Ｃ、Ｋを付記する。
【００１１】
感光ドラム（以下、「感光体２２５」と称する。）は、モータで矢印Ａの方向に回転する。感光体２２５の周囲には、一次帯電装置２２１、露光装置２１８、現像装置２２３、転写装置２２０、クリーナ装置２２２および除電装置２７１が配置されている。現像装置２２３Ｋはモノクロ現像のための現像装置であり、感光体２２５Ｋ上の潜像をＫのトナーで現像する。現像装置２２３Ｙ、Ｍ、Ｃはフルカラー現像のための現像装置である。現像装置２２３Ｙ、Ｍ、Ｃは、感光体２２５Ｙ、Ｍ、Ｃ上の潜像をそれぞれＹ、Ｍ、Ｃのトナーで現像する。感光体２２５上に現像された各色のトナー像は、転写装置２２０によって中間転写体である転写ベルト２２６に一括で多重転写される。
【００１２】
転写ベルト２２６は、ローラ２２７、２２８、２２９に張架されている。ローラ２２７は、駆動源に結合されて転写ベルト２２６を駆動する駆動ローラとして機能し、ローラ２２８は転写ベルト２２６の張力を調節するテンションローラとして機能する。また、ローラ２２９は、二次転写装置２３１としての転写ローラのバックアップローラとして機能する。転写ローラ脱着ユニット２５０は、二次転写装置２３１を転写ベルト２２６に接着させるか、又は離脱させるための駆動ユニットである。二次転写装置２３１を通過した後の転写ベルト２２６の下部にはクリーナブレード２３２が設けられており、転写ベルト２２６上の残留トナーがブレードで掻き落とされる。
【００１３】
給紙カセット２４０、２４１および手差し給紙部２５３に格納された記録材は、レジストローラ２５５、給紙ローラ対２３５および縦パスローラ対２３６、２３７によってニップ部、つまり二次転写装置２３１と転写ベルト２２６との当接部に給送される。なお、その際に二次転写装置２３１は、転写ローラ脱着ユニット２５０によって転写ベルト２２６に当接されている。転写ベルト２２６上に形成されたトナー像は、このニップ部で記録材上に転写される。その後、トナー像が転写された記録材は、定着装置２３４でトナー像が熱定着されて装置外へ排出される。給紙カセット２４０、２４１および手差し給紙部２５３は、それぞれ記録材の有無を検知するためのシートなし検知センサ２４３、２４４、２４５を備える。また、給紙カセット２４０、２４１および手差し給紙部２５３は、それぞれ記録材のピックアップ不良を検知するための給紙センサ２４７、２４８、２４９を備える。
【００１４】
ここで、画像形成部３００による画像形成動作について説明する。画像形成が開始されると、給紙カセット２４０、２４１および手差し給紙部２５３に格納された記録材は、ピックアップローラ２３８、２３９、２５４によりそれぞれ１枚ごとに給紙ローラ対２３５に搬送される。記録材は、給紙ローラ対２３５によりレジストローラ２５５へと搬送されると、その直前のレジストセンサ２５６により記録材の通過が検知される。レジストセンサ２５６により記録材の通過が検知された時点から所定の時間が経過した後に給紙ローラ対２３５は記録材の搬送動作を中断する。その結果、記録材は停止しているレジストローラ２５５に突き当たって停止する。レジストローラ２５５を起動させることにより、記録材は、二次転写装置２３１へ供給される。なお、レジストローラ２５５は、駆動源に結合され、クラッチによって駆動が伝えられることで回転駆動を行う。
【００１５】
次に、一次帯電装置２２１に電圧を印加して感光体２２５の表面を予定の帯電部電位で一様にマイナス帯電させる。続いて、帯電された感光体２２５上の画像部分が所定の露光部電位になるようにレーザスキャナ部を備えた露光装置２１８で露光を行い潜像が形成される。露光装置２１８はプリンタ制御Ｉ／Ｆ２１５を介してコントローラ４６０より送られてくる画像データに基づいてレーザ光をオン／オフすることによって画像に対応した潜像を形成する。現像装置２２３の現像ローラには各色ごとに予め設定された現像バイアスが印加されている。潜像は、現像ローラの位置を通過する際にトナーで現像され、トナー像として可視化される。トナー像は、転写装置２２０により転写ベルト２２６に転写され、さらに二次転写装置２３１で、給紙部より搬送されてきた記録材に転写された後、レジスト後搬送パス２６８を通過し、定着搬送ベルト２３０を介して、定着装置２３４へと搬送される。定着装置２３４では、画像乱れを防止するために、定着前帯電器２５１、２５２で帯電させトナーの吸着力を補強する。さらに定着ローラ２３３でトナー画像が熱定着される。その後、記録材は、排紙フラッパ２５７により排紙パス２５８側に搬送パスが切り換えられることにより、排紙ローラ２７０によってそのまま排紙トレー２４２に排紙される。感光体２２５上に残留したトナーは、クリーナ装置２２２で除去して回収される。感光体２２５は、除電装置２７１で一様に０ボルト付近まで除電されて、次の画像形成サイクルに備える。
【００１６】
図３には通信線により相互に接続された複数の制御モジュールを示している。図２に示す各制御負荷は、図３に示す第１搬送モジュール２８０、第２搬送モジュール２８１、作像モジュール２８２および定着モジュール２８３という４つの制御ブロックによって制御される。マスタモジュール２８４は、これらの４つの制御ブロックを統括して画像形成装置として機能させるための制御モジュールである。マスタモジュール２８４には、マスタ制御部／第１層制御部としてのマスタＣＰＵ１００１が設けられている。マスタＣＰＵ１００１は、プリンタ制御Ｉ／Ｆ２１５を介してコントローラ４６０より受信した指示や命令、画像データに基づいて画像形成装置１０００の全体を制御する。画像形成を実行するための第１搬送モジュール２８０、第２搬送モジュール２８１、作像モジュール２８２および定着モジュール２８３は、各機能を制御するサブマスタ制御部／第２層制御部としてサブマスタＣＰＵ６０１、９０１、７０１、８０１を備える。サブマスタＣＰＵ６０１、９０１、７０１、８０１はマスタＣＰＵ１００１により制御される。各機能モジュールは、さらに、各機能を実行するための制御負荷を動作させるためのスレーブ制御部／第３層制御部としてスレーブＣＰＵ６０２、６０３、９０２、９０３、７０２、７０３、７０４、７０５、７０６、８０２、８０３を備える。スレーブＣＰＵ６０２、６０３はサブマスタＣＰＵ６０１に制御される。スレーブＣＰＵ９０２、９０３はサブマスタＣＰＵ９０１に制御される。スレーブＣＰＵ７０２、７０３、７０４、７０５、７０６はサブマスタＣＰＵ７０１に制御される。スレーブＣＰＵ８０２、８０３はサブマスタＣＰＵ８０１に制御される。
【００１７】
図３に示すように、マスタＣＰＵ１００１と複数のサブマスタＣＰＵ６０１、７０１、８０１、９０１は共通のネットワーク型通信バス１００２によってバス接続される。サブマスタＣＰＵ６０１、７０１、８０１、９０１同士の間もネットワーク型通信バス１００２によってバス接続される。なお、マスタＣＰＵ１００１と複数のサブマスタＣＰＵ６０１、７０１、８０１、９０１はリング接続されるものでもよい。サブマスタＣＰＵ６０１は、さらに、シリアル通信バス６１２、６１３を介して、複数のスレーブＣＰＵ６０２、６０３のそれぞれと１対１接続されている。同様に、サブマスタＣＰＵ７０１は、シリアル通信バス７１１、７１２、７１３、７１４、７１５を介して、それぞれスレーブＣＰＵ７０２、７０３、７０４、７０５、７０６と接続される。サブマスタＣＰＵ８０１は、シリアル通信バス８０８、８０９を介して、それぞれスレーブＣＰＵ８０２、８０３と接続される。サブマスタＣＰＵ９０１は、シリアル通信バス９０９、９１０を介して、それぞれスレーブＣＰＵ９０２、９０３と接続される。ここで、シリアル通信バスは、短距離通信に用いられる。
【００１８】
一方、サブマスタＣＰＵ６０１、７０１、８０１、９０１とマスタＣＰＵ１００１との間では、精密な制御タイミングを必要としない、画像形成動作の大まかな処理の流れを統括するような通信だけが行われる。例えば、マスタＣＰＵ１００１はサブマスタＣＰＵに、画像形成前処理開始、給紙開始、画像形成後処理開始といった指示を出す。また、マスタＣＰＵ１００１はサブマスタＣＰＵに、コントローラ４６０から指示されたモード（例えばモノクロモードや両面画像形成モードなど）に基づいた指示を画像形成開始の前に出す。サブマスタＣＰＵ６０１、７０１、８０１、９０１のそれぞれの間でも、精密なタイミング制御を必要としない通信だけが行われる。すなわち、画像形成装置の制御を、相互に精密なタイミング制御を必要としない制御単位に分け、それぞれのサブマスタＣＰＵがそれぞれの制御単位を精密なタイミングで制御する。これにより、画像形成装置１０００では、通信トラフィックを最小限に抑え、低速で安価なネットワーク型通信バス１００２で接続することを可能としている。なお、マスタＣＰＵ、サブマスタＣＰＵおよびスレーブＣＰＵについては、実装される制御基板が必ずしも図３に示したとおりの制御基板である必要はなく、実装上の事情に合わせて変更可能である。
【００１９】
図４に示すように、様々な制御基板の構成を採用することができる。例えば、サブマスタＣＰＵ６０１とスレーブＣＰＵ６０２、６０３とは、同一の基板上に実装されている。また、サブマスタＣＰＵ７０１およびスレーブＣＰＵ７０２、７０３、７０４、又は、サブマスタＣＰＵ８０１およびスレーブＣＰＵ８０２、８０３のように、サブマスタＣＰＵと個々のスレーブＣＰＵが独立の基板上に実装されてもよい。スレーブＣＰＵ７０５、７０６のように一部のスレーブＣＰＵが同一の基板上に実装されてもよい。サブマスタＣＰＵ９０１およびスレーブＣＰＵ９０２のように、サブマスタＣＰＵとスレーブＣＰＵの一部だけが同一基板上に配置されてもよい。
【００２０】
スレーブＣＰＵ８０２は、定着搬送ベルト２３０を回転させるためのモータ８０４、定着ローラ２３３を回転させるためのモータ８０５を制御負荷とし、二次転写装置２３１から定着後の搬送パスに記録用シート媒体を引き渡すまでの制御を行う。スレーブＣＰＵ８０３は、定着装置２３４における加熱ヒータ８０６、温度検知サーミスタ８０７、定着前帯電器２５１、２５２を制御負荷とする。スレーブＣＰＵ８０３は、定着前帯電器２５１、２５２を制御してトナーを帯電させる。さらに、スレーブＣＰＵ８０３は、温度検知サーミスタ８０７の検知結果をフィードバックさせながら、加熱ヒータ８０６の温度を制御する。サブマスタＣＰＵ８０１とスレーブＣＰＵ８０２、８０３は共通のシリアル通信バス８０８により接続されている。
【００２１】
次に、本発明の特徴である制御モジュール間での制御命令の異常検知に関して説明する。複数の制御モジュールのうち少なくとも第１制御モジュールとして、図５に示した第１搬送モジュール２８０を一例として採用する。第１搬送モジュール２８０は、給紙カセット２４０、２４１および手差し給紙部２５３に格納された記録材を二次転写装置２３１と転写ベルト２２６との当接部に給送するまでの給紙制御を司っている。第１搬送モジュール２８０は、給紙制御を統括的に制御するサブマスタＣＰＵ６０１と、各負荷の駆動を行うスレーブＣＰＵ６０２、６０３を含む。また、各スレーブＣＰＵには、直接制御される負荷群が接続されている。
【００２２】
スレーブＣＰＵ６０２は、第１通信インタフェース５０１、第２通信インタフェース５０２、ＲＯＭ５０３およびＲＡＭ５０４を内蔵している。スレーブＣＰＵ６０２は、第１通信インタフェース５０１を介してサブマスタＣＰＵ６０１と制御命令やステータス情報などを送信および受信する。よって、第１通信インタフェース５０１は、複数の制御モジュールのうち通信線を介して接続された第２制御モジュールから制御命令を受信する受信手段として機能する。スレーブＣＰＵ６０２は、第２通信インタフェース５０２を介してセンサから情報を受信したり、モータなどに制御信号を送信したりする。ＲＯＭ５０３には制御プログラム、データおよびリストなどが格納されている。ＲＡＭ５０４にはセンサから取得したデータや受信した制御命令の履歴などが格納される。スレーブＣＰＵ６０２は、第３通信インタフェース５０５を介してスレーブＣＰＵ６０３との間でエラーの発生を示す通知を送受信してもよい。スレーブＣＰＵ６０２は、給紙カセット２４０に関連したピックアップローラ２３８を駆動させるためのモータ６０６、シートなし検知センサ２４３および給紙センサ２４７を負荷とし、給紙パス２６６に記録材を引き渡すまでの制御を行う。スレーブＣＰＵ６０２は、さらに、給紙カセット２４１に関連したピックアップローラ２３９を駆動させるためのモータ６０７、シートなし検知センサ２４４、給紙センサ２４８を負荷とし、給紙パス２６６に記録材を引き渡すまでの制御を行う。
【００２３】
スレーブＣＰＵ６０３の内部構成は、スレーブＣＰＵ６０２の内部構成とほぼ同様であるため、説明を省略する。スレーブＣＰＵ６０３は、手差し給紙部２５３に関連したピックアップローラ２５４を駆動させるためのモータ６０８、シートなし検知センサ２４５、給紙センサ２４９を負荷とし、給紙パス２６６に記録材を引き渡すまでの制御を行う。スレーブＣＰＵ６０３は、さらに、給紙ローラ対２３５、２３６、２３７を駆動させるためのモータ６０９、６１０、６１１、および、レジストセンサ２５６を負荷とする。スレーブＣＰＵ６０３は、これらの負荷を制御して、給紙カセット２４０、２４１、手差し給紙部２５３から引き渡された記録材をレジストローラ２５５まで搬送して一時停止させるまでの制御を行う。なお、本実施例では、サブマスタＣＰＵ６０１とスレーブＣＰＵ６０２、６０３は各々独立のシリアル通信バス６１２、６１３により１対１で対向接続されている。
【００２４】
電磁気的なノイズの影響や複数の制御モジュール間の同期ズレ（制御遅延）などに起因していずれかの制御モジュールが異常動作を起こすことがある。異常動作が発生すると、制御命令の発行側の制御モジュールは、本来であれば発行しないような制御命令を発行してしまうかもしれない。この誤った制御命令を受信側の制御モジュールが実行してしまうと、設計上は想定されていない動作状態（禁止状態）に移行してしまうおそれがある。そして、この設計上は想定されていない動作状態においてセンサが検出した値を他の制御モジュールが利用してしまうと、機器制御システムの全体に異常動作が波及してしまうおそれがある。よって、実施例では、このような禁止状態へ制御モジュールを移行させてしまうような制御命令を検知することで、異常の波及を抑制する。例えば、複数の制御命令のそれぞれに対応した制御モジュールの動作状態を示す第１リスト、制御モジュールにおける複数の動作状態間の遷移を示す第２リスト、複数の制御命令間の遷移を示す第３リストのうち少なくとも１つの制約リストをメモリに記憶する。そして、受信手段により受信された制御命令に対応する動作状態が第１リストによって禁止されている動作状態かどうかの判定を実行してもよい。あるいは、受信手段により受信された複数の制御命令に対応した複数の動作状態間の遷移が第２リストによって禁止されていない遷移かどうかの判定を実行してもよい。あるいは、受信手段により受信された複数の制御命令間の遷移が第３リストによって禁止されていない遷移かどうかの判定を実行してもよい。すなわち、これら判定処理のうち少なくとも1つの判定処理を実行すれば、実行を制約されるべき制御命令を検出することができる。以下では、各スレーブＣＰＵの動作上ありえない禁止状態をつくりだす制御命令を検出する検出手段として機能するスレーブＣＰＵ６０２、６０３を例にとってこの検出処理について説明する。
【００２５】
図６に示すように画像形成装置１０００は画像形成を行う際に手差し給紙部２５３、給紙カセット２４０および給紙カセット２４１のいずれか１つから記録材を供給する。複数の給紙部が同時にて記録材の給紙動作状態へ移行することはない。すなわち、複数の給紙部に対して同時に給紙命令が発行されることはない。さらに、スレーブＣＰＵに接続されるモータやセンサ等の負荷間にも動作上の制約が存在する。例えば、給紙カセット２４０から給紙する際にはモータ６０６がまず回転状態へ移行し、次に、給紙センサ２４７が記録材を検出している状態（オン状態）に移行し、さらにその後に後段のモータ６１１が駆動状態に移行する。また、給紙センサ２４７、レジストセンサ２５６がオフの状態に移行してから、モータ６０６、６１１は停止状態に移行する。このように、複数の動作状態には、時系列的に正しい遷移の順番が存在する。
【００２６】
図７には、スレーブＣＰＵ６０２、６０３についての制約リストの一例を示している。スレーブＣＰＵ６０２、６０３はこの制約リストに応じて動作状態の制約や異常な制御命令の検出したり、制御命令の実行可否を判定したりする。つまり、スレーブＣＰＵ６０２、６０３は、内蔵ＲＯＭや外部のＲＯＭにこれらの制約リストを格納している。制約リストは、複数の駆動デバイス（機能グループやモータ等）間における排他的な動作制約、複数の駆動デバイスの同時（同期）動作制約、動作の前提となる条件（各種センサ入力等）による動作制約を考慮して予め作成されるものとする。ここでは、制約リストの一例として、状態リスト、状態遷移リストおよび命令遷移リストの３種類について説明する。これらは、上述した第１リスト、第２リスト、第３リストにそれぞれ対応している。これらの制約リストは、適宜、禁止されるべき制御命令間の遷移や動作状態間の遷移を登録した禁止リスト、または、許可されるべき制御命令間の遷移や動作状態間の遷移を登録した許可リストの形式で記述される。禁止リストと許可リストは同等の内容を表現することが可能である。よって、これらの使い分けはシステム上の制約により記述が容易なリストを選択すればよいであろう。例えば、機器の制約が少ないものは禁止リストで記述し、制約が多ければ許可リストで記述する。このように、リストのサイズが小さくなるような形式を採用すれば、リスト記憶手段として機能するＲＯＭ５０３の記憶容量を節約できる利点がある。
【００２７】
禁止リストは、禁止された動作状態、禁止された複数の動作状態間の遷移、禁止された複数の制御命令間の遷移を記述したリストである。禁止リストに記述された動作状態、動作状態間の遷移、制御命令間の遷移が検知されれば、その制御命令は禁止命令であるとしてＣＰＵによって決定される。許可リストは、許可された動作状態、許可された複数の動作状態間の遷移、許可された複数の制御命令間の遷移を記述したリストである。許可リストに記述された動作状態、複数の動作状態間の遷移、複数の制御命令間の遷移に該当しない制御命令は禁止命令であるとしてＣＰＵによって決定される。
【００２８】
動作状態リストは、制御モジュールによって制御される各負荷の動作状態を記述したリストである。ＣＰＵは、受信した制御命令を実際に実行する前に、仮想的に実行した後の動作状態を決定する。例えば、スレーブＣＰＵ６０２は、サブマスタＣＰＵ６０１からモータ６０６をＯＮにせよとの制御命令を受信したと仮定する。この場合、スレーブＣＰＵ６０２は、この制御命令を実行すると、給紙カセット２４０に関する給紙センサ２４７が記録材を検知した状態に移行することを内部テーブルによって把握する。このような状態の決定手法を仮想的な実行と呼ぶことにする。通常、この制御命令を受信した時点において、給紙カセット２４１の給紙センサ２４８は記録材を検知した状態に移行してはいない。仮に給紙センサ２４７と給紙センサ２４８の双方が記録材を検知した動作状態に移行してしまうと、ジャムが発生するため、このような動作状態は動作状態リストによって禁止されているか、または、許可されていない。このように、スレーブＣＰＵ６０２は、受信した制御命令を実際に実行する前に、仮想的に実行した後の動作状態を決定する。そして、スレーブＣＰＵ６０２は、決定した動作状態と現在の動作状態に基づいて動作状態リストを参照し、決定した動作状態と現在の動作状態とが禁止された動作状態かどうかを判定する。決定した動作状態と現在の動作状態とが動作状態リストに記述されていれば、スレーブＣＰＵ６０２は、受信した制御命令を、実行を制約された制御命令であると検知する。
【００２９】
状態遷移リストは動作状態の遷移を示す制約リストである。状態遷移リストには、ある制御命令を実行する前の動作状態とこの制御命令を実行した後の動作状態とを関連付けて登録している。よって、スレーブＣＰＵは、制御命令を受信すると、その時点での動作状態をセンサ等により取得する。さらに、スレーブＣＰＵは、受信した制御命令を仮想的に実行した後の動作状態を決定する。この前後の動作状態が正しい動作状態の遷移を示しているかどうかをスレーブＣＰＵが判定する。つまり、状態遷移リストには、複数の動作状態間の遷移が予め登録されている。スレーブＣＰＵは、制御命令に基づいた複数の動作状態間の遷移が状態遷移リストに登録されている遷移であれば、受信した制御命令は正しい制御命令であると判定する。一方、スレーブＣＰＵは、制御命令に基づいた複数の動作状態間の遷移が状態遷移リストに登録されていない遷移であれば、受信した制御命令は禁止命令であると判定する。
【００３０】
命令遷移リストは、複数の制御命令の実行順番（発行順序）を登録した制約リストである。複数の制御命令間では、その実行順番に制約があることがある。スレーブＣＰＵは、受信した制御命令の履歴をＲＡＭに保持しておく。スレーブＣＰＵは、新たな制御命令を受信すると、新たな制御命令と、直前に受信した１つ以上の制御命令との実行順番が命令遷移リストによって禁止された実行順番かどうかを判定する。
【００３１】
図７には（ａ）から（ｇ）まで複数のリストを例示したが、すべての制約リストが必須というわけではない。図７（ａ）によれば、スレーブＣＰＵ６０２に対する状態禁止リストが示されている。図中の○は動作状態を示し、×は停止状態を示している。１番目の状態リストは給紙カセット２４０が動作状態であり、給紙カセット２４１が停止状態であることを示している。２番目の状態リストは給紙カセット２４０が停止状態であり、給紙カセット２４１が動作状態であることを示している。３番目の状態リストは給紙カセット２４０が停止状態であり、給紙カセット２４１も停止状態であること示している。このように、図７（ａ）に示したリストは許可リストとして表現されている。よって、このリストでは、給紙カセット２４０と給紙カセット２４１の双方が動作状態となることは禁止されている。図７においては、機能グループの定義を省略している。機能グループの定義は、グループテーブル情報として規定できる。
【００３２】
図７（ａ）のリストでは、同時に許可されるべき複数の動作状態を関連付けて登録しているが、さらに、制約レベルも登録されている。制約レベルは、ラーの深刻度に対応しており、禁止命令が発行されときに取りうるべきエラー対処方法を選択する基準となる。スレーブＣＰＵは、制約リストを参照することで禁止命令に対応した制約レベルを特定し、特定されたレベルに対応したエラー対処方法を選択する。例えば、制約レベルにおいて「１」は、機器制御システムの安全に係わる違反であることを示している。よって、制約レベルが１であれば、スレーブＣＰＵは異常の発生を他のＣＰＵに通知し、即時に動作を停止する。制約レベルにおいて「２」は、機器制御システムの機能制約に係わる違反であることを示している。制約レベルが２であれば、スレーブＣＰＵは、異常の発生を他のＣＰＵに通知し、制御命令を実行せずに破棄（キャンセル）する。制約レベルにおいて「３」は、機器制御システムの動作条件違反を示している。制約レベルが３であれば、スレーブＣＰＵは、その制御命令を実行するための前提条件が満たされるようになるまで、その制御命令の実行を延期する。
【００３３】
モータ６０６、６０７はそれぞれ、図５の説明から明らかなように、給紙カセット２４０、２４１と同一機能グループに属し、これらを同時に動作させる制御命令は明らかに異常である。よって、異常な動作となったサブマスタＣＰＵ６０１からこれら２つのモータを同時に駆動状態とする制御命令を受信した場合、図７（ａ）の制約リストによりスレーブＣＰＵ６０２は、異常の発生を他のＣＰＵに通知し、即時に動作を停止する。
【００３４】
図７（ｂ）は、スレーブＣＰＵ６０２に対する動作状態リストを例示している。動作状態リストは禁止リストとして記述されている。このリストによれば、給紙センサ２４７が紙を検知している（オン）状態でのモータ６０６、６０７の駆動停止が禁止されている。スレーブＣＰＵ６０２は、給紙センサ２４７がオン状態かオフ状態かを監視している。給紙センサ２４７がオン状態であるときにモータ６０６、６０７の停止命令を受信すると、スレーブＣＰＵ６０２は、給紙センサ２４７がオフになるのを待って、モータ６０６、６０７を停止する。つまり、受信した制御命令を実行するための前提条件が満たされるまで待機してから、当該制御命令が実行される。ここで、スレーブＣＰＵ６０２について、図７（ａ）に示したリストと図７（ｂ）に示したリストを使用して説明したが、これらのリストは、図７（ｇ）に示す禁止リストへと統合されてもよい。
【００３５】
上述したように、スレーブＣＰＵは、受信した制御命令を実際に実行する前に、仮想的に実行した後の動作状態を決定し、決定した動作状態が状態リストによって禁止されている動作状態かどうかを判定する。禁止された動作状態であれば、スレーブＣＰＵは、受信した制御命令を禁止命令であると決定する。よって、通信相手のＣＰＵが異常動作に起因して誤った制御命令（禁止命令）が発行したとしても、スレーブＣＰＵは禁止命令を実行しないため、誤動作を回避できる。また、通信相手のＣＰＵの異常動作がスレーブＣＰＵに波及しなくなる。また、スレーブＣＰＵと連携して動作する他のＣＰＵへ異常が波及することも抑制できる。複数の制御モジュールのうち制約が少ないものは禁止リストで記述し、制約が多ければ許可リストで記述すれば、メモリの記憶容量を節約できる利点がある。
【００３６】
図７（ｃ）は動作状態遷移リストを許可リストによって実現した事例を示している。このリストには、給紙センサ２４７とモータ６０６の各動作状態の遷移が関連付けて登録されている。動作状態遷移リストは、複数の動作状態間の遷移が所定の順番で発生する場合に使用される。つまり、動作状態遷移リストによって定義されていない順番での遷移は禁止され、動作状態遷移リストによって定義されている順番での遷移が許可される。現在の動作状態から、実際に制御命令を実行する前に仮想的に実行した後の動作状態への遷移を、リストに登録された遷移と比較することで、スレーブＣＰＵは、受信した制御命令が禁止命令かどうかを判定する。動作状態遷移リストに登録されていない遷移が発生すると、スレーブＣＰＵは、その制御命令を実行せずに破棄する。あるいは、登録された遷移が実現されるまで、スレーブＣＰＵは、受信した制御命令の実行を延期してもよい。このどちらを採用するかは、動作状態遷移リストに登録されている制約レベルに応じて決定すればよい。
【００３７】
スレーブＣＰＵは、動作状態リストに加えてまたは代えて、動作状態遷移リストを用いて制御命令の実行可否を判断することで、より厳密な制御命令の可否判定を実行できるであろう。つまり、複数の制御命令を実行した結果である動作状態の照合だけでなく、複数の動作状態間の遷移も参照すれば、判断要素が増えるだけに、判断の正確さが向上すると考えられる。
【００３８】
図７（ｄ）、図７（ｅ）は、スレーブＣＰＵ６０３に適用される制約リストである。これらは、対象となる駆動デバイス（レジストセンサ２５６とモータ６１１）が異なることを除けば、図７（ｂ）と、図７（ｃ）と同様の内容であるため説明は省略する。図７（ｆ）は、スレーブＣＰＵ６０３についての制御命令遷移リストの一例を示している。関連する複数の制御命令間での発行の遷移に対する制約を示している。つまり、複数の制御命令には発行順番または実行順番が予め定義されており、その順番をこのリストで管理している。図７（ｆ）のリストには、モータ６１１の制御命令とモータ６０８の制御命令について禁止されるべき遷移が登録されている。スレーブＣＰＵ６０３は、受信した制御命令の履歴をＲＡＭに記憶しておく。スレーブＣＰＵ６０３は、新たな制御命令（Ｎｅｘｔ）を受信すると、直前の制御命令（Ｃｕｒｒｅｎｔ）を履歴から特定し、この２つの制御命令間の遷移が制御命令遷移リストに登録されている遷移かどうかを判定する。これにより、スレーブＣＰＵ６０３は、リストによって禁止された遷移であれば新たな制御命令を禁止命令と決定し、リストによって禁止されていない遷移であれば新たな制御命令を許可命令と決定する。具体的にはモータ６０８のオン命令を受信した後、モータ６０８のオン命令を受信したと仮定する。このような制御命令の遷移は、図７（ｆ）の３番目の状態リストによって禁止されている。よって、スレーブＣＰＵ６０３は、モータ６０８のオン命令を実行せずに破棄する。なお、モータ６０８がオン状態で再度オン命令が発行されるような不要な命令が発行されたことは、図７（ｄ）や図７（ｅ）に示したリストからは検出できない。これは、同内容の制御命令が連続して発行されたときは、動作状態の遷移が発生しないからである。よって、制御命令遷移リストを導入すれば、動作状態の遷移からは検出できない異常を検出できるようになる。
【００３９】
図８を参照して、制御命令を受信した際のスレーブＣＰＵの処理について説明する。Ｓ８００で、スレーブＣＰＵは、サブマスタＣＰＵからの制御命令を受信したかどうかを判定する。制御命令を受信すると、Ｓ８０１に進む。Ｓ８０１で、スレーブＣＰＵは、受信した制御命令を仮想的に実行した後の動作状態を決定する。なお、制御命令に対応した動作状態は予めテーブルに登録されていてもよい。スレーブＣＰＵは、テーブルを参照することで、受信した制御命令に対応した動作状態を簡単に特定することができる。さらに、スレーブＣＰＵは、決定した動作状態から複数の動作状態間の遷移を決定してもよい。さらに、スレーブＣＰＵは、制御命令の履歴から、直前の制御命令と新たな制御命令間の遷移を特定してもよい。これらの処理は図７を用いて詳細に説明したとおりである。
【００４０】
Ｓ８０２で、スレーブＣＰＵは、受信した制御命令が禁止命令かどうかを判定する。スレーブＣＰＵは、例えば、受信した制御命令に対応する動作状態が、複数の制御命令のそれぞれに対応した制御モジュールの動作状態を示す動作状態リストによって禁止されているかどうかを判定する。また、スレーブＣＰＵは、現在の動作状態から受信した制御命令に対応する動作状態への遷移が、制御モジュールにおける複数の動作状態間の遷移を示す動作状態遷移リストによって禁止されているかどうかを判定する。また、スレーブＣＰＵは、直前に実行した制御命令から新たに受信した制御命令への遷移が、複数の制御命令間の遷移を示す制御命令遷移リストによって禁止されているかどうかを判定する。これらの３つある判定処理のうち、１つ以上が実行されればよい。スレーブＣＰＵは、いずれかの判定処理によって、受信した制御命令を禁止命令と判定すると、禁止命令に対応した制約レベルをリストから特定し、特定された制約レベルに応じた処理を実行するために、Ｓ８１０に進む。なお、受信した制御命令が禁止命令でなければ、Ｓ８０３に進む。
【００４１】
Ｓ８０３で、スレーブＣＰＵは、サブマスタＣＰＵから受信した制御命令を正式に受け付けて実行する。Ｓ８０４で、スレーブＣＰＵは、受信した制御命令を履歴に追記してＲＡＭに書き込む。
【００４２】
Ｓ８１０で、スレーブＣＰＵは、禁止命令に対応した制約レベルをリストから特定し、特定された制約レベルがレベル１かどうかを判定する。レベル１であれば、Ｓ８１１に進み、スレーブＣＰＵは、制御命令を実行せずに破棄するとともに、サブマスタＣＰＵにエラーの発生を通知する。なお、スレーブＣＰＵと連携している他のスレーブＣＰＵが存在すれば、スレーブＣＰＵは、他のスレーブＣＰＵにも第３通信インタフェース５０５を通じてエラーの発生を通知してもよい。第３通信インタフェース５０５は、複数の制御モジュールのうち通信線を介して接続された他の制御モジュールに対して異常が発生していることを示す通知を送信する送信手段として機能する。さらに、スレーブＣＰＵは、システムリセットをこれらのＣＰＵに要求する。このように、スレーブＣＰＵは、検出手段によって実行を制約されるべき制御命令が検出されると、制御命令を実行せずに破棄する破棄手段として機能する。
【００４３】
特定された制約レベルがレベル１でなければ、Ｓ８２０に進む。ところで、禁止命令が検出されたということは、サブマスタＣＰＵにエラーが発生している事を意味している。この場合に、他のスレーブＣＰＵにエラーが発生しているとすれば、機器制御システムの全体でみると深刻なエラーが生じている可能性が高い。そこで、本実施例では、他の制御モジュールからエラーの発生を知らせる通知を受信すると、特定手段が特定したレベルを、レベルが示すエラーの深刻度よりも高い深刻度を示すレベルに変更することにする。Ｓ８２０で、スレーブＣＰＵは、特定された制約レベルがレベル２かどうかを判定する。レベル２であれば、Ｓ８２１に進む。Ｓ８２１で、スレーブＣＰＵは、連携している他のスレーブＣＰＵからエラーの通知を受信しているかどうかを判定する。スレーブＣＰＵは、複数の制御モジュールのうち第２制御モジュールとは異なる他の制御モジュールからエラーの発生を知らせる通知を受信しているかどうかを判定する判定手段として機能する。他のスレーブＣＰＵにもエラーが発生していれば、機器制御システムに深刻なエラーが発生していると推定されるため、Ｓ８１１に進む。Ｓ８１１では、レベル２よりも深刻度の高いレベル１についてのエラー対処方法が実行される。このように、Ｓ８２０で特定されたレベル２を、レベル２が示すエラーの深刻度よりも高い深刻度を示すレベル１に変更している。
【００４４】
一方で、連携している他のスレーブＣＰＵからエラーの通知を受信していなければ、Ｓ８２２に進む。Ｓ８２２で、スレーブＣＰＵは、サブマスタＣＰＵにエラーを通知し、サブマスタＣＰＵから受信した制御命令を実行せずに廃棄する。特定された制約レベルがレベル１でもレベル２でもなければ、Ｓ８３１に進む。Ｓ８３１で、スレーブＣＰＵは、自己の動作状態を監視し、受信した制御命令を実行するための前提条件を動作状態が満たすまで待機し、前提条件が満たされると、当該制御命令を実行する。このように、スレーブＣＰＵは、第１制御モジュールの動作状態を監視する監視手段として機能する。また、スレーブＣＰＵは、監視手段によって監視された動作状態が制御命令を実行可能な状態に変化するまで、制御命令の実行を延期する実行延期手段として機能する。
【００４５】
このように、本実施例によれば、許容されない動作状態、動作状態間の遷移または制御命令間の遷移などをリスト化しておくことで、実行を制約されるべき制御命令を適確に検出できるようになる。なお、実行を制約されるべき制御命令を検出できれば、その副次的な効果として、ある制御モジュールにおける異常動作が他の制御モジュールへ波及すること抑制できる効果も期待できよう。例えば、このような制御命令を実行せずに破棄したり、他の制御モジュールにエラーを通知したり、サブマスタＣＰＵのエラーがスレーブＣＰＵに波及することを抑制できる。また、エラーの深刻度が相対的に低ければ、監視された動作状態が制御命令を実行可能な状態に変化するまで制御命令の実行を延期してもよい。これにより、回復までに比較的に長い時間を消費するシステムリセットを回避できよう。このように、制約レベルに対応したエラー対処方法を選択することで、エラーの回復にかかる時間を短縮できよう。
【００４６】
また、スレーブＣＰＵは、相対的に低い制約レベルを検知し、かつ、他のスレーブＣＰＵからのエラーも検知することがある。この場合、スレーブＣＰＵは、相対的に高い制約レベルへと制約レベルを変更することで（Ｓ８２０、Ｓ８２１）、機器制御システム全体でのエラーの発生状況を個々のスレーブＣＰＵに反映できる。自分だけでなく他のスレーブＣＰＵでもエラーが発生していれば、機器制御システム全体では大きなエラーが発生していると考えられるからである。
【００４７】
図９（ａ）、図９（ｂ）は、サブマスタＣＰＵ６０１とスレーブＣＰＵ６０２、６０３との間における制御命令と、給紙センサ２４７、２５６、モータ６０６、６１１の動作状態との関係を示すタイミングチャートである。とりわけ、図９（ａ）は正常に制御命令が発行された場合のタイミングチャートを示し、図９（ｂ）は制約レベル３の禁止命令が発行された場合のタイミングチャートを示している。図９（ａ）のタイミング（Ａ）ではサブマスタＣＰＵ６０１からスレーブＣＰＵ６０３にモータ６１１の停止命令が発行されている。図７（ｄ）によれば、レジストセンサ２５６がオン状態のときにモータ６１１の停止命令の実行は禁止されている。一方で、レジストセンサ２５６はオフ状態のときにモータ６１１の停止命令の実行は許可されている。よって、タイミング（Ａ）での停止命令は実行され、モータ６１１が停止する。図９（ｂ）のタイミング（Ｂ）でも、モータ６１１の停止命令が発行されている。しかし、タイミング（ｂ）ではレジストセンサ２５６はオン状態であるので、この停止命令は、図７（ｄ）のリストによって禁止命令と判定される。なお、制約レベルが３であるため、停止命令は実行を延期される。レジストセンサ２５６がオフ状態に移行したタイミング（Ｃ）で、スレーブＣＰＵは、モータ６１１の停止命令を実行する。図９（ｂ）のタイミング（Ｄ）では、モータ６０７の動作開始を指示するための制御命令が発行されている。図７（ａ）のリストによれば、モータ６０６、６０７は同時に動作することが禁止されている。また、その制約レベルは２である。よって、この制御命令は実行されるに破棄される。また、スレーブＣＰＵ６０２からサブマスタＣＰＵ６０１へエラー通知が実行される。エラー通知を受信したサブマスタＣＰＵ６０１はマスタＣＰＵ１００１に異常の発生を報知してもよい。マスタＣＰＵ１００１は、操作部１０が備える表示部にエラー発生を表示したり、図示せぬ外部ネットワークを経由したホスト装置にエラー情報を送信したりしてもよい。エラーを操作者やホスト装置に報知することにより、速やかにエラーの発生を操作者等に認識させることが可能となる。例えば、システムリセットを実行してもエラーが再発する場合は、操作者によるメンテナンスによって、エラーの発生原因を修復することが可能となろう。
【００４８】
図９（ａ）、図９（ｂ）では、モータのオン／オフをサブマスタＣＰＵ６０１からの制御命令に応じてスレーブＣＰＵが実行するものとして説明した。しかし、図７（ｃ）や図７（ｅ）のような動作状態遷移リストとその他のリストとを基にスレーブＣＰＵ６０２、６０３が自立的に制御を実行してもよい。この場合、サブマスタＣＰＵ６０１からの制御命令は動作開始命令のみにすることが可能となる。また、サブマスタＣＰＵ６０１のエラーがスレーブＣＰＵ６０２、６０３へ波及しにくくなる利点もある。
【００４９】
以上説明したように、本実施例の機器制御システムにおいては、異常動作に起因した制御命令を適確に検出することが可能となる。また、常動作に起因して制御命令の発行タイミングがずれてしまった場合も、禁止命令として検出することができる。また、エラーレベルの深刻度を反映して定義された制約レベルを導入することで、エラーレベルに応じて制御命令の取り扱い方法を切り替えることも可能となる。
【００５０】
［他の実施例］
上述した実施例では制約リストをＣＰＵ個別に設けられるリストとして説明した。しかし、複数のＣＰＵグループにとって共通の制約リストとして統合されてもよい。複数のＣＰＵが個々の状態を相互に通知し合うことにより、個々のＣＰＵへの制御命令がグループ全体として正常かどうかを判定することで、禁止命令の検出能力を向上させることが可能となろう。
【００５１】
図１０は、スレーブＣＰＵ６０２、６０３の制約条件を１つに統合したリストの一例を示している。図７（ａ）のリストでは給紙カセット２４０、２４１の排他的な動作のみが禁止されていたが、図１０（ａ）のリストでは給紙カセット２４０、２４１および手差し給紙部２５３の同時の給紙動作が禁止されている。図１０（ｂ）、図１０（ｃ）でも同様に３つ以上のモータやセンサで禁止命令が定義されている。図７（ｂ）、図７（ｃ）、図７（ｄ）、図７（ｅ）および図７（ｆ）の示した各リストと比較し、より詳細に禁止命令が設定されている。このように、連携して動作する３つ以上のモジュールをグループ化して禁止命令を定義することで、より安全なシステムを構成することが可能となろう。また、異常動作に起因した禁止命令の検出はスレーブＣＰＵのみで行うのではなく、他のＣＰＵで実行してもよいことは既に説明したとおりである。さらに、本実施例では、禁止命令を検出することで、個々の制御モジュールにおける異常動作を検出してい。しかし、各制御モジュールのステータスをつき合わせることで、個々のステータスをシステム全体のステータスに置き換え、システム全体のステータスと禁止命令を定義したリストとを比較することで、異常動作を検出してもよい。
【００５２】
上述した実施例では、第１搬送モジュール２８０について説明したが、同様の技術思想は、第２搬送モジュール２８１、作像モジュール２８２および定着モジュール２８３にも適用できる。さらに、マスタＣＰＵ１００１と、サブマスタＣＰＵ６０１、７０１、８０１、９０１との間にも同様の技術思想を適用してもよい。例えば、マスタＣＰＵ１００１からの制御命令についてサブマスタＣＰＵ６０１は上述の異常動作の検出を実行することになる。この場合、スレーブＣＰＵ間でのエラー通知はサブマスタＣＰＵ間で実行されることになる。
【図１】
0005513186.tif 000002
【図２】
0005513186.tif 000003
【図３】
0005513186.tif 000004
【図４】
0005513186.tif 000005
【図５】
0005513186.tif 000006
【図６】
0005513186.tif 000007
【図７】
0005513186.tif 000008
【図８】
0005513186.tif 000009
【図９】
0005513186.tif 000010
【図１０】
0005513186.tif 000011