(57)【要約】【課題】スレーブ制御手段の暴走を効率よく監視する画像形成装置を提供する。【解決手段】画像形成装置は、スレーブ制御部３３１と、スレーブ制御部３３２と、スレーブ制御部３３１及びスレーブ制御部３３２の動作を制御するサブマスタ制御部３３０と、を備える。サブマスタ制御部３３０は、スレーブ制御部３３１に対して動作確認を行わせるためのＳｌａｖｅ動作確認命令を送信する。スレーブ制御部３３１は、サブマスタ制御部３３０へＳｌａｖｅ動作確認命令に対する応答を送信するとともに、スレーブ制御部３３２に対してＳｌａｖｅ動作確認命令を受信したことを通知する。スレーブ制御部３３２は、スレーブ制御部３３１からＳｌａｖｅ動作確認命令を受信したことの通知を受信すると、動作状態を表す状態変数値を更新し、サブマスタ制御部３３０からの読取命令に応じて、状態変数値を含む応答をサブマスタ制御部３３０へ送信する。【選択図】図４
2019049933.tif 000002
【特許請求の範囲】
【請求項１】
装置の第１の構成要素の動作を制御する第１スレーブ制御手段と、
前記装置の第２の構成要素の動作を制御する第２スレーブ制御手段と、
前記第１スレーブ制御手段及び前記第２スレーブ制御手段の動作を制御するマスタ制御手段と、を備え、
前記マスタ制御手段は、前記第１スレーブ制御手段に対して動作確認を行わせるための動作確認命令を送信し、
前記第１スレーブ制御手段は、前記動作確認命令を受信した後に、前記第２スレーブ制御手段に対して前記動作確認命令を受信したことを通知し、
前記第２スレーブ制御手段は、前記第１スレーブ制御手段から前記通知を受信すると、動作状態を表す状態変数値を更新し、
前記マスタ制御手段は、前記状態変数値の読み取りを指示し、
前記第２スレーブ制御手段は、前記マスタ制御手段から前記状態変数値の読み取りの指示を受信すると、前記更新した状態変数値を返信し、
前記マスタ制御手段は、前記更新した状態変数値に基づき、前記第１スレーブ制御手段及び前記第２スレーブ制御手段に対してリセットを行うことを特徴とする、
情報処理装置。
【請求項２】
前記第１スレーブ制御手段は、前記マスタ制御手段へ前記動作確認命令に対する応答を送信するとともに、前記第２スレーブ制御手段に対して前記動作確認命令を受信したことを通知し、
前記マスタ制御手段は、前記第１スレーブ制御手段からの前記通知を受信した後に、前記状態変数値の読み取りを指示することを特徴とする、
請求項１記載の情報処理装置。
【請求項３】
画像形成のための一部の構成要素の動作を制御する第１スレーブ制御手段と、
画像形成のための他の一部の構成要素の動作を制御する第２スレーブ制御手段と、
前記第１スレーブ制御手段及び前記第２スレーブ制御手段の動作を制御するマスタ制御手段と、を備え、
前記マスタ制御手段は、前記第１スレーブ制御手段に対して動作確認を行わせるための動作確認命令を送信し、
前記第１スレーブ制御手段は、前記動作確認命令に応じて動作確認を行い、前記マスタ制御手段へ前記動作確認命令に対する第１応答を送信するとともに、前記第２スレーブ制御手段に対して前記動作確認命令を受信したことを通知し、
前記第２スレーブ制御手段は、前記第１スレーブ制御手段から前記動作確認命令を受信したことの前記通知を受信すると、動作状態を表す状態変数値を更新し、前記マスタ制御手段からの読取命令に応じて、前記状態変数値を含む第２応答を前記マスタ制御手段へ送信することを特徴とする、
画像形成装置。
【請求項４】
前記マスタ制御手段は、前記動作確認命令を前記第１スレーブ制御手段へ送信する前の前記第２スレーブ制御手段の第１状態変数値を保存しており、前記第２応答に含まれる第２状態変数値を前記第２スレーブ制御手段から取得して、前記第１状態変数値と前記第２状態変数値との比較により、前記第２スレーブ制御手段の動作確認を行うことを特徴とする、
請求項３記載の画像形成装置。
【請求項５】
前記マスタ制御手段は、前記第２スレーブ制御手段が正常に動作している場合に、前記第１状態変数値を前記第２状態変数値に更新することを特徴とする、
請求項４記載の画像形成装置。
【請求項６】
前記マスタ制御手段は、電源投入時に前記第２スレーブ制御手段に前記状態変数値を初期化させるとともに、自身で保存する状態変数値を初期化することを特徴とする、
請求項３〜５のいずれか１項記載の画像形成装置。
【請求項７】
前記マスタ制御手段は、前記第１スレーブ制御手段から前記動作確認命令に対する前記第１応答を所定時間内に受信しない場合に前記第１スレーブ制御手段が暴走していると判断し、前記第２スレーブ制御手段から前記読取命令に対する前記第２応答を所定時間内に受信しない場合或いは前記第２応答に含まれる前記状態変数値と自身で保存する状態変数値との比較の結果に応じて前記第２スレーブ制御手段が暴走していると判断することを特徴とする、
請求項３〜６のいずれか１項記載の画像形成装置。
【請求項８】
前記マスタ制御手段は、前記第１スレーブ制御手段と前記第２スレーブ制御手段とのいずれか一方が暴走する場合に、前記第１スレーブ制御手段と前記第２スレーブ制御手段とをリセットさせることを特徴とする、
請求項７記載の画像形成装置。
【請求項９】
前記第１スレーブ制御手段は、前記動作確認命令を受信したことを表す信号の論理を、前記動作確認命令の受信に応じて反転し、
前記第２スレーブ制御手段は、前記信号の論理の反転を確認すると、前記状態変数値を更新することを特徴とする、
請求項３〜８のいずれか１項記載の画像形成装置。
【請求項１０】
前記第２スレーブ制御手段は、前記信号の論理の反転を一定時間間隔で判断することを特徴とする、
請求項９記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタ制御手段が第１および第２スレーブ手段の動作確認を実行する装置に関する。
【背景技術】
【０００２】
画像形成装置は、モータやファン等の電気部品を筐体内部に分散して備える。これらの電気部品の制御は、マスタ制御部及びスレーブ制御部から構成されるマスタスレーブ型の分散制御システムにより行われる。マスタ制御部は、画像形成装置全体の動作を制御する。スレーブ制御部は、マスタ制御部と協働し対応する電気部品の動作を制御する。マスタ制御部とスレーブ制御部との間の通信方式には、シリアル通信が利用されることが多い。シリアル通信は、信号線の数を削除可能であり、配線削減によるコストダウンが可能であるためである。
【０００３】
マスタスレーブ型の分散制御システムは、スレーブ制御部にＣＰＵコアが搭載される場合、リソース不足、無限ループ、電源瞬断によるプログラム破壊等の異常の発生に対応するために、システムの暴走保護が必須の技術となる。特許文献１は、マスタ制御部が、一定周期でスレーブ制御部との間でデータの送受信を行うことで、スレーブ制御部の暴走を監視する技術を開示する。マスタ制御部は、データ送信後の所定時間以内にスレーブ制御部からデータを受信しない場合に、スレーブ制御部の暴走を検知して、スレーブ制御部をリセットする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１−１７７６４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、画像形成装置を構成する電気部品の複雑化、高機能化により、スレーブ制御部による制御対象が増加する傾向にある。これに対応するために、スレーブ制御部に、いわゆるマルチコアＣＰＵが用いられることがある。マルチコアＣＰＵを用いる場合、各ＣＰＵコアの暴走を監視する必要がある。特許文献１の技術を適用すると、マスタ制御部は、一定周期で複数のＣＰＵコアとの間でデータの送受信を行うことになる。これは、マスタ制御部とスレーブ制御部との間の通信量の増加を招くことになる。マスタ制御部とスレーブ制御部との間の通信量の増加は、制御システムの動作のボトルネックとなり、画像形成装置の動作に影響する可能性がある。
【０００６】
本発明は、上記課題に鑑みてなされたものであり、スレーブ制御手段の暴走を効率よく監視することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、装置の第１の構成要素の動作を制御する第１スレーブ制御手段と、前記装置の第２の構成要素の動作を制御する第２スレーブ制御手段と、前記第１スレーブ制御手段及び前記第２スレーブ制御手段の動作を制御するマスタ制御手段と、を備え、前記マスタ制御手段は、前記第１スレーブ制御手段に対して動作確認を行わせるための動作確認命令を送信し、前記第１スレーブ制御手段は、前記動作確認命令を受信した後に、前記第２スレーブ制御手段に対して前記動作確認命令を受信したことを通知し、前記第２スレーブ制御手段は、前記第１スレーブ制御手段から前記通知を受信すると、動作状態を表す状態変数値を更新し、前記マスタ制御手段は、前記状態変数値の読み取りを指示し、前記第２スレーブ制御手段は、前記マスタ制御手段から前記状態変数値の読み取りの指示を受信すると、前記更新した状態変数値を返信し、前記マスタ制御手段は、前記更新した状態変数値に基づき、前記第１スレーブ制御手段及び前記第２スレーブ制御手段に対してリセットを行うことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、スレーブ制御手段の暴走を効率よく監視することができる。
【図面の簡単な説明】
【０００９】
【図１】画像形成装置の外観図。
【図２】画像形成部の構成図。
【図３】制御システムの構成例示図。
【図４】作像モジュールの構成例示図。
【図５】サブマスタ制御部とスレーブ制御部との接続関係の説明図。
【図６】（ａ）はフレームの構成例示図、（ｂ）はシリアル通信時のタイミングチャート。
【図７】（ａ）〜（ｃ）は命令パケットと応答パケットとの組み合わせの例示図。
【図８】Ｓｌａｖｅ動作確認の説明図。
【図９】サブマスタ制御部がスレーブ制御部の動作を確認する処理を表すフローチャート。
【図１０】サブマスタ制御部がスレーブ制御部の動作を確認する処理を表すフローチャート。
【図１１】サブマスタ制御部がスレーブ制御部の動作を確認する処理を表すフローチャート。
【図１２】サブマスタ制御部がスレーブ制御部の動作を確認する処理を表すフローチャート。
【図１３】サブマスタ制御部がスレーブ制御部の動作を確認する処理を表すフローチャート。
【図１４】サブマスタ制御部がスレーブ制御部の動作を確認する処理を表すフローチャート。
【発明を実施するための形態】
【００１０】
以下、本実施形態の画像形成装置を、４つの感光体をタンデムに配した４ドラム系のカラー複合装置に適用した場合について説明する。
【００１１】
図１は、画像形成装置の外観図である。画像形成装置１０００は、自動原稿搬送部１００、画像読取部２００、画像形成部３００、及び操作部１０を備える。画像読取部２００は、画像形成部３００上に設けられる。画像読取部２００上には、自動原稿搬送部１００が取り付けられる。画像形成装置１０００を構成するこれらの構成要素は、複数の制御部により分散制御される。各制御部には、ＣＰＵ（Central Processing Unit）やＡＳＩＣ（Application Specific Integrated Circuit）等を用いることができる。
【００１２】
自動原稿搬送部１００は、原稿を自動的に画像読取部２００の原稿台ガラス上に搬送する。画像読取部２００は、自動原稿搬送部１００から搬送された原稿を読み取って画像データを出力する。画像形成部３００は、画像読取部２００から出力された画像データやネットワークを介して外部装置から入力された画像データに基づく画像を、紙等の記録材に形成する。操作部１０は、ユーザが各種操作を行うためのＧＵＩ（Graphical User Interface）を有する。操作部１０は、例えばタッチパネル等を備えたディスプレイにより構成されており、ユーザに対して情報を提示可能である。
【００１３】
（画像形成部）
図２は、画像形成部３００の詳細な構成図である。本実施形態の画像形成部３００は、電子写真方式を採用している。図２において、符号末尾のアルファベットＹ、Ｍ、Ｃ、Ｋは、それぞれイエロー、マゼンタ、シアン、ブラックの各色を示す。なお、以下の説明で全色を表す場合には、符号末尾のアルファベットＹ、Ｍ、Ｃ、Ｋを省略して説明する。
【００１４】
フルカラー静電画像を形成するための像担持体である感光ドラム（以下、単に「感光体」と称する。）２２５は、モータからの駆動力によって図中矢印Ａの方向に回転する。感光体２２５の周囲には、一次帯電部２２１、露光部２１８、現像部２２３、転写部２２０、クリーナ２２２、及び除電部２７１が設けられている。
【００１５】
現像部２２３Ｋはモノクロ現像のための現像モジュールであり、感光体２２５Ｋ上に形成された潜像をブラックのトナーで現像する。現像部２２３Ｙ、２２３Ｍ、２２３Ｃは、カラー現像のための現像モジュールであり、感光体２２５Ｙ、２２５Ｍ、２２５Ｃ上に形成された潜像を、それぞれイエロー、マゼンタ、シアンのトナーで現像する。感光体２２５上に現像された各色のトナー像は、転写部２２０によって中間転写体である転写ベルト２２６に多重転写される。これにより４色のトナー像が重畳される。
【００１６】
転写ベルト２２６は、ローラ２２７、２２８、２２９に張架される。ローラ２２７は、駆動源からの駆動力により転写ベルト２２６を駆動する駆動ローラである。ローラ２２８は、転写ベルト２２６の張力を調節するテンションローラである。ローラ２２９は、二次転写部２３１としての転写ローラのバックアップローラである。転写ローラ着脱ユニット２５０は、二次転写部２３１を転写ベルト２２６に接着、離間するための駆動ユニットである。二次転写部２３１を通過後の転写ベルト２２６の下部には、クリーナーブレード２３２が設けられる。クリーナーブレード２３２は、転写ベルト２２６上の残留トナーを掻き落とす。
【００１７】
カセット２４０、２４１及び手差し給紙部２５３は記録材を収納する。カセット２４０、２４１及び手差し給紙部２５３は、それぞれ記録材の有無を検知するための検知センサ２４３、２４４、２４５を備える。また、カセット２４０、２４１及び手差し給紙部２５３は、それぞれ記録材のピックアップ不良を検知するための給紙センサ２４７、２４８、２４９を備える。カセット２４０、２４１に収納された記録材は、ピックアップローラ２３８、２３９により１枚ずつ縦パスローラ対２３６、２３７を介して給紙ローラ対２３５に搬送される。手差し給紙部２５３に収納された記録材は、ピックアップローラ２５４により１枚ずつ給紙ローラ対２３５に搬送される。記録材は、給紙ローラ対２３５及びレジストローラ２５５により二次転写部２３１と転写ベルト２２６との当接部（ニップ部）に給送される。その際、二次転写部２３１は、転写ローラ着脱ユニット２５０によって転写ベルト２２６に当接される。転写ベルト２２６上に形成されたトナー像は、ニップ部で記録材上に転写される。記録材に転写されたトナー像は、定着部２３４によって、記録材に熱定着される。そして、トナー像が定着された記録材は外部に排紙される。
【００１８】
画像形成部３００による画像形成動作について説明する。画像形成の開始指示に応じて、カセット２４０、２４１及び手差し給紙部２５３に収納された記録材は、ピックアップローラ２３８、２３９、２５４により１枚ずつ給紙ローラ対２３５へ搬送される。記録材は、給紙ローラ対２３５によりレジストローラ２５５へ搬送される。レジストセンサ２５６はレジストローラ２５５の上流に配置されており、記録材の通過を検知する。
【００１９】
レジストセンサ２５６が記録材の通過を検知したことに応じて、給紙ローラは一旦停止する。その結果、記録材は、停止しているレジストローラ２５５に当接して停止する。この当接により、記録材の搬送方向端部が搬送経路に対して直交するように、記録材の姿勢が補正される。以下、この処理を「斜行補正」と称する。斜行補正は、以降の処理において、記録材に形成される画像の傾きを低減するために行われる。斜行補正後、レジストローラ２５５が再起動することで、記録材は、二次転写部２３１へ搬送される。なお、レジストローラ２５５は、クラッチを介して駆動源に結合されている。
【００２０】
一方、感光体２２５の表面は、電圧が印加された一次帯電部２２１によって所定の電位に一様にマイナス帯電される。そして、露光部２１８が、帯電された感光体２２５上の表面を露光し、潜像を形成する。露光部２１８は、プリンタ制御Ｉ／Ｆ（インタフェース）２１５を介してコントローラ４６０から送られてくる画像データに基づいてレーザ光の発光制御を行うことで、該画像データに応じた潜像を形成する。コントローラ４６０は、画像読取部２００や外部装置から画像データを取得する。また、コントローラ４６０は、操作部１０から入力される指示を受け付ける。
【００２１】
現像部２２３の現像ローラには、色毎に予め設定された現像バイアスが印加される。現像ローラは、トナーを用いて潜像を現像し、感光体２２５にトナー像を形成する。トナー像は、転写部２２０により転写ベルト２２６に転写され、さらに、二次転写部２３１で、搬送されてきた記録材に転写される。トナー像が転写された記録材は、搬送パス２６８を通過し、定着搬送ベルト２３０によって定着部２３４へ搬送される。
【００２２】
定着部２３４は、トナーの吸着力を補って画像乱れを防止するために、定着前帯電器２５１、２５２により記録材に転写されたトナー像を帯電する。定着部２３４は、定着ローラ２３３によりトナー像を記録材に熱定着する。トナー像の定着により、記録材への画像形成処理が終了する。画像形成された記録材は、排紙フラッパ２５７により排紙パス２５８側に切り替えられた搬送パスを介して、排紙ローラ２７０により排紙トレー２４２に排紙される。
【００２３】
なお、感光体２２５上に残留するトナーは、クリーナ２２２によって除去され、回収される。感光体２２５は、除電部２７１により一様にゼロボルト付近まで除電されて、次の画像形成処理に備える。
【００２４】
感光体２２５Ｙ、２２５Ｍ、２２５Ｃ、２２５Ｋのトナー像は、回転する転写ベルト２２６上に重畳される。そのために、感光体２２５Ｙ、２２５Ｍ、２２５Ｃ、２２５Ｋ上へのトナー像の形成タイミングは、感光体２２５Ｙ、２２５Ｍ、２２５Ｃ、２２５Ｋの位置及び転写ベルト２２６の回転速度に応じて決められる。
【００２５】
記録材は、カセット２４０、２４１及び手差し給紙部２５３から連続して給紙される。この場合、記録材は、記録材が重なり合わず、かつ最短の間隔でカセット２４０、２４１及び手差し給紙部２５３から給紙される。上述したように、斜行補正後に、レジストローラ２５５を起動させることにより、記録材は二次転写部２３１へ供給される。しかし、記録材が二次転写部２３１に到達すると、再びレジストローラ２５５が一時停止する。これは、後続の記録材に対して先行する記録材と同様に斜行補正を行うためである。
【００２６】
両面印刷を行う場合、画像形成部３００は、記録材の表面に画像形成された後に、記録材を排紙トレー２４２に排紙せず、引き続き記録材の裏面に画像を形成する。裏面に画像形成を行なう場合、センサ２６９が記録材を検知すると、排紙フラッパ２５７が搬送パスを裏面パス２５９側に切り替える。反転ローラ２６０は、裏面パス２５９を通過した記録材を両面反転パス２６１に搬送する。記録材は、送り方向幅の分だけ両面反転パス２６１に搬送された後に、反転ローラ２６０の逆回転駆動により進行方向が切り替えられる。そして、両面パス搬送ローラ２６２が、表面が下向きになっている記録材を両面パス２６３に搬送する。
【００２７】
記録材は、両面パス２６３を再給紙ローラ２６４に向かって搬送される。再給紙センサ２６５による記録材の通過検知に応じて（本実施形態では所定の時間経過後）、搬送動作が中断する。記録材は、停止している再給紙ローラ２６４に当接して停止する。このとき、記録材の進行方向端部が搬送経路に対して直交するように記録材の姿勢が補正される。以下、この処理を「再斜行補正」と称する。再斜行補正は、記録材の裏面に形成される画像の傾きを低減するために行われる。再斜行補正後、再給紙ローラ２６４が再起動する。再給紙ローラ２６４は、表裏が逆転した状態の記録材を、再度、給紙パス２６６上に搬送する。その後の画像形成動作については、上述した表面の画像形成動作と同じであるため省略する。両面に画像形成された記録材は、排紙トレー２４２に排紙される。
【００２８】
なお、画像形成部３００は、両面印刷時においても、記録材の連続給送が可能である。しかしながら、画像形成部３００は、記録材への画像形成や形成されたトナー像の定着などを行うための機構を１系統しか有していないため、表面への画像形成と裏面への画像形成とを同時に行うことはできない。したがって、両面印刷時には、画像形成部３００に対し、カセット２４０、２４１及び手差し給紙部２５３からの記録材と、裏面印刷のために反転させて再度給送された記録材とが、交互に画像形成される。
【００２９】
（制御システム）
図３は、画像形成部３００の動作を制御する制御システムの構成例示図である。制御システムは、画像形成部３００の各構成要素を、それぞれ異なる一部の構成要素を複数の制御モジュールに分けて制御する情報処理装置である。本実施形態では、画像形成部３００の各構成要素が、第１搬送モジュール３０２、第２搬送モジュール３０３、作像モジュール３０４、定着モジュール３０５の４つの制御モジュールに分けて制御される。各制御モジュールは、各々が自律的に、対応する構成要素の動作を制御する。画像形成部３００は、４つの制御モジュールを統括して制御するためのマスタモジュール３０６を有する。
【００３０】
マスタモジュール３０６であるマスタ制御部３０１は、プリンタ制御Ｉ／Ｆ２１５を介してコントローラ４６０から送られる指示及び画像データに基づいて、画像形成装置１０００の全体の動作制御を行う。画像形成を実行するための、第１搬送モジュール３０２、第２搬送モジュール３０３、作像モジュール３０４、及び定着モジュール３０５は、各制御モジュールの動作を制御するサブマスタ制御部３１０、３２０、３３０、３４０を備える。サブマスタ制御部３１０、３２０、３３０、３４０は、マスタ制御部３０１により制御される。各制御モジュールは、機能実現のための構成要素の動作制御を行うスレーブ制御部３１１〜３１４、３２１、３２２、３３１〜３３４、３４１、３４２を備える。スレーブ制御部３１１〜３１４は、サブマスタ制御部３１０により制御される。スレーブ制御部３２１、３２２は、サブマスタ制御部３２０により制御される。スレーブ制御部３３１〜３３４は、サブマスタ制御部３３０により制御される。スレーブ制御部３４１、３４２は、サブマスタ制御部３４０により制御される。スレーブ制御部３１１〜３１４、３２１、３２２、３３１〜３３４、３４１、３４２の各々は、ローラ駆動部、モータ、高電圧生成部等の、制御対象となる負荷が接続される。マスタ制御部３０１、サブマスタ制御部３１０、３２０、３３０、３４０、及びスレーブ制御部３１１〜３１４、３２１、３２２、３３１〜３３４、３４１、３４２の各々は、共通の発振器から供給されるクロック信号に基づいて、内部クロック信号を生成する。
【００３１】
マスタ制御部３０１と複数のサブマスタ制御部３１０、３２０、３３０、３４０とは、１対１接続（ピアツーピア接続）型のシリアル通信線１５０〜１５３を介して接続される。サブマスタ制御部３１０は、シリアル通信線１６０〜１６３を介して、複数のスレーブ制御部３１１〜３１４の各々に１対１接続される。サブマスタ制御部３２０は、シリアル通信線１７０、１７１を介して、スレーブ制御部３２１、３２２の各々に接続される。サブマスタ制御部３３０は、シリアル通信線３８０〜３８３を介して、スレーブ制御部３３１〜３３４の各々に接続される。サブマスタ制御部３４０は、シリアル通信線１９０、１９１を介して、スレーブ制御部３４１、３４２の各々に接続される。
【００３２】
マスタ制御部３０１とサブマスタ制御部３１０、３２０、３３０、３４０の各々との間の通信には、１以上のフレームで構成されるパケットが用いられる。サブマスタ制御部３１０とスレーブ制御部３１１〜３１４の各々との間の通信にもパケットが用いられる。サブマスタ制御部３２０とスレーブ制御部３２１、３２２との間の通信にもパケットが用いられる。サブマスタ制御部３３０とスレーブ制御部３３１〜３３４の各々との間の通信にもパケットが用いられる。サブマスタ制御部３４０とスレーブ制御部３４１、３４２との間の通信にもパケットが用いられる。
【００３３】
以下、作像モジュール３０４を例に詳細な構成及び動作を説明するが、他の各モジュールも同様な構成及び動作となる。
図４は、作像モジュール３０４の詳細な構成例示図である。主制御部としてのサブマスタ制御部３３０は、マイクロコンピュータ４０５を有する。マイクロコンピュータ４０５は、ＣＰＵ４０１、ＲＡＭ（Random Access Memory）４０２、ＲＯＭ（Read Only Memory）４０３、通信Ｉ／Ｆ４０４ａ〜４０４ｄ、及びリセット部４０７を備える。
【００３４】
ＣＰＵ４０１は、画像形成装置１０００の機能の一つである作像に関わる動作及びシーケンスの制御を行う。ＲＡＭ４０２は、ＣＰＵ４０１の一時記憶領域として使われる。ＲＯＭ４０３は、作像に関わる動作及びシーケンスの制御を行うためのプログラムと、マスタ制御部３０１及び副制御部としてのスレーブ制御部３３１〜３３４と通信するためのプログラムとを格納する。通信Ｉ／Ｆ４０４ａ〜４０４ｄは、シリアル通信線３８０〜３８４を介して、スレーブ制御部３３１〜３３４との間で１対１のシリアル通信を行う。通信Ｉ／Ｆ４０４ａ〜４０４ｄは、各スレーブ制御部３３１〜３３４との間で、同時に、異なる通信速度で通信可能である。リセット部４０７は、スレーブ制御部３３１〜３３４に対して動作のリセットを指示するリセット信号３８５を送信する。リセット信号３８５は、ＧＰＩＯ端子から出力される。
【００３５】
スレーブ制御部３３１は、露光部２１８Ｙに内蔵されるポリゴンミラー駆動モータ４１５の制御を行う。そのためにスレーブ制御部３３１は、ＣＰＵ４１０、ＲＡＭ４１１、ＲＯＭ４１２、通信Ｉ／Ｆ４１３、及びＧＰＩＯ端子４１９を有するマイクロコンピュータ４１７と、ＡＣＣ／ＤＥＣ制御部４１４と、ＢＤ（Beam Detect）センサ４１６とを備える。ＣＰＵ４１０は、ポリゴンミラーの起動、所定の回転速度による回転、及び回転停止の回転制御を行う。ＲＡＭ４１１は、ＣＰＵ４１０の一時記憶領域として使われる。ＲＯＭ４１２は、ポリゴンミラーの回転制御を行うためのプログラム及びサブマスタ制御部３３０と通信するためのプログラムを格納する。通信Ｉ／Ｆ４１３は、シリアル通信線３８０を介してサブマスタ制御部３３０との間で１対１のシリアル通信を行う。ＧＰＩＯ端子４１９は、信号４８１の論理がＣＰＵ４１０の指示に応じて反転する。
【００３６】
ＡＣＣ／ＤＥＣ制御部４１４は、ポリゴンミラー駆動モータ４１５を回転駆動する駆動部である。ＢＤセンサ４１６は、露光部２１８Ｙに内蔵されており、ポリゴンミラーにより走査されたレーザの光路上に配置されて、レーザ光検知を行う。ＢＤセンサ４１６は、レーザ光のＡＰＣ（Auto Power Control）時の参照光検知にも用いられる。ＡＣＣ／ＤＥＣ制御部４１４は、ＢＤセンサ４１６が所定の周期でレーザ光を検知するように、ポリゴンミラー駆動モータ４１５の速度を制御する。ポリゴンミラー駆動モータ４１５は、ポリゴンミラーを回転させる。各露光部２１８Ｍ、２１８Ｃ、２１８Ｋに内蔵されるポリゴンミラーについても、同様に、図示しない他のスレーブ制御部で動作が制御される。
【００３７】
スレーブ制御部３３２は、感光体２２５Ｙを回転駆動するドラムモータ４２５の制御を行う。そのためにスレーブ制御部３３２は、ＣＰＵ４２０、ＲＡＭ４２１、ＲＯＭ４２２、通信Ｉ／Ｆ４２３、及びＧＰＩＯ端子４２９を有するマイクロコンピュータ４２７と、ドラムモータ駆動部４２４とを備える。ＣＰＵ４２０は、感光体２２５Ｙを一定の速度で回転するように制御する。回転の開始と停止、及び回転速度は、複数の感光体２２５Ｙ、２２５Ｍ、２２５Ｃ、２２５Ｋ、及び転写ベルト２２６と同期して制御される。ＲＡＭ４２１は、ＣＰＵ４２０の一時記憶領域として使われる。ＲＯＭ４２２は、感光体２２５Ｙの駆動制御を行うためのプログラムと、サブマスタ制御部３３０と通信するためのプログラムとを格納する。通信Ｉ／Ｆ４２３は、シリアル通信線３８１を介して、サブマスタ制御部３３０との間で１対１のシリアル通信を行う。ＣＰＵ４２０は、ＧＰＩＯ端子４２９を介して信号４８１の論理を検知する。ドラムモータ駆動部４２４は、ドラムモータ４２５を駆動する。ここでは図示しないが、感光体２２５Ｍ、２２５Ｃ、２２５Ｋの制御に関わるスレーブ制御部も同様の構成であり、感光体２２５Ｙ、２２５Ｍ、２２５Ｃ、２２５Ｋが個別に回転制御される。
【００３８】
スレーブ制御部３３３は、ローラ２２７を回転駆動するローラ駆動モータ４３５を制御して、ローラ２２７、２２８、２２９に張架されている転写ベルト２２６の回転制御を行う。そのためにスレーブ制御部３３３は、ＣＰＵ４３０、ＲＡＭ４３１、ＲＯＭ４３２、通信Ｉ／Ｆ４３３、及びＧＰＩＯ端子４３９を有するマイクロコンピュータ４３７と、ローラ駆動部４３４とを備える。ＣＰＵ４３０は、ローラ２２７を駆動して、転写ベルト２２６を、感光体２２５Ｙ、２２５Ｍ、２２５Ｃ、２２５Ｋの回転駆動に同期するように予め定められた回転速度で制御する。スレーブ制御部３３２と同様に、回転の開始と停止、回転速度は、複数の感光体２２５Ｙ、２２５Ｍ、２２５Ｃ、２２５Ｋと同期して制御される。ＲＡＭ４３１は、ＣＰＵ４３０の一時記憶領域として使われる。ＲＯＭ４３２は、ローラ２２７の駆動制御、つまり転写ベルト２２６の回転制御を行うためのプログラムと、サブマスタ制御部３３０と通信するためのプログラムとを格納する。通信Ｉ／Ｆ４３３は、シリアル通信線３８２を介して、サブマスタ制御部３３０との間で１対１のシリアル通信を行う。ＧＰＩＯ端子４３９は、信号４８３の論理がＣＰＵ４３０の指示に応じて反転する。ローラ駆動部４３４は、転写ベルト２２６を所定速度で回転させるために、ローラ駆動モータ４３５を駆動する。
【００３９】
スレーブ制御部３３４は、一次帯電部２２１Ｙに高電圧を供給する昇圧コイル４４５の動作の制御を行う。そのためにスレーブ制御部３３４は、ＣＰＵ４４０、ＲＡＭ４４１、ＲＯＭ４４２、通信Ｉ／Ｆ４４３、及びＧＰＩＯ端子４４９を有するマイクロコンピュータ４４７と、高圧生成部４４４とを備える。ＣＰＵ４４０は、感光体２２５Ｙの駆動と共に高電圧を生成し、一次帯電部２２１Ｙに感光体２２５Ｙの表面を帯電させる。ＲＡＭ４４１は、ＣＰＵ４４０の一時記憶領域として使われる。ＲＯＭ４４２は、一次帯電部２２１Ｙの制御を行うためのプログラムと、サブマスタ制御部３３０と通信するためのプログラムとを格納する。通信Ｉ／Ｆ４４３は、シリアル通信線３８３を介して、サブマスタ制御部３３０との間で１対１のシリアル通信を行う。ＣＰＵ４４０は、ＧＰＩＯ端子４４９を介して信号４８３の論理を検知する。高電圧生成部２４４は、昇圧コイル４４５にＰＷＭ信号を入力する。昇圧コイル４４５は、ＰＷＭ信号に応じた高電圧を生成して、一次帯電部２２１Ｙに印加する。一次帯電部２２１Ｍ、２２１Ｃ、２２１Ｋについても、同様に、図示しない他のスレーブ制御部により印加される高電圧が制御される。
【００４０】
図５は、サブマスタ制御部３３０とスレーブ制御部３３１との接続関係の詳細な説明図である。サブマスタ制御部３３０とスレーブ制御部３３１とは、通信Ｉ／Ｆ４０４ａと通信Ｉ／Ｆ４１３とによりシリアル通信を行う。サブマスタ制御部３３０は、他のスレーブ制御部３３２〜３３４との間でも、スレーブ制御部３３１と同様に接続され、シリアル通信を行う。通信Ｉ／Ｆ４０４ａは、２線の調歩同期通信のマスタとなる。通信Ｉ／Ｆ４１３は、２線の調歩同期通信のスレーブとなる。通信Ｉ／Ｆ４０４ａと通信Ｉ／Ｆ４１３とは、後述のパケットの送受信を行う。
【００４１】
通信Ｉ／Ｆ４０４ａと通信Ｉ／Ｆ４１３とは、２線のシリアル通信線３８０ａ、３８０ｂで接続される。シリアル通信線３８０ａは、通信Ｉ／Ｆ４０４ａから通信Ｉ／Ｆ４１３へのパケットｍ２ｓの送信に用いられる。シリアル通信線３８０ｂは、通信Ｉ／Ｆ４１３から通信Ｉ／Ｆ４０４ａへのパケットｓ２ｍの送信に用いられる。通信Ｉ／Ｆ４１３は、シリアル通信線３８０ａを介してパケットｍ２ｓを受信すると、ＣＰＵ４１０に対して割込信号４１８を通知する。通信Ｉ／Ｆ４０４ａも同様に、シリアル通信線３８０ｂを介してパケットｓ２ｍを受信すると、ＣＰＵ４０１に対して割込信号４０８を通知する。
【００４２】
図６は、パケットを構成するフレームの構成例示図、及びサブマスタ制御部３３０と各スレーブ制御部３３１〜３３４とのシリアル通信時のタイミングチャートである。サブマスタ制御部３３０と各スレーブ制御部３３１〜３３４とは、調歩同期通信を行う。
【００４３】
図６（ａ）は、パケットを構成するフレームの構成例示図である。１フレームは、１ビットのスタートビット（論理ロー）、８ビットのデータ部、１ビットのパリティビット（奇数パリティ）、及び１ビットのストップビット（論理ロー）の１１ビットのビット列で構成される。サブマスタ制御部３３０とスレーブ制御部３３１との相互通信は、１以上のフレームで構成されるパケットの送受信により行われる。
【００４４】
図６（ｂ）は、シリアル通信線３８０ａ、３８０ｂを用いて、サブマスタ制御部３３０とスレーブ制御部３３１とがパケットの交換を行う際のタイミングチャートの一例を示す。この例は、サブマスタ制御部３３０がスレーブ制御部３３１にポリゴンミラー駆動モータ４１５の回転を指示する場合の例である。
【００４５】
ＣＰＵ４０１は、通信Ｉ／Ｆ４０４ａを介して、シリアル通信線３８０ａに、図６（ａ）のフォーマットに従ったフレームを含むパケット転送することで通信を開始する。本例では、ＣＰＵ４０１は、３つのフレーム（フレーム１〜フレーム３）からなるパケットｍ２ｓにより、スレーブ制御部３３１に指示を送る。フレーム１は、モータの回転を指示するためのコマンドである。フレーム２は、回転速度を指定するパラメータである。フレーム３は、通信エラー検知のためのＣＲＣ（Cyclic Redundancy Check）である。
【００４６】
通信Ｉ／Ｆ４１３は、シリアル通信線３８０ａを介して転送されるパケットｍ２ｓを受信すると、ＣＰＵ４１０に、割込信号４１８とともに受信したパケットｍ２ｓを送信する。ＣＰＵ４１０は、受信したパケットｍ２ｓに応じた応答を、通信Ｉ／Ｆ４１３に指示する。この例では、モータの回転を指示するコマンド（フレーム１）を受信したことに対する応答（フレーム４）を含むパケットｓ２ｍを送信する。
【００４７】
このようにサブマスタ制御部３３０は、通信Ｉ／Ｆ４０４ａにより、シリアル通信線３８０ａを介して命令パケット（パケットｍ２ｓs）を送信する。スレーブ制御部３３１は、シリアル通信線３８０ｂを介して、当該命令パケットに応じた応答パケット（パケットｓ２ｍ）を転送することで受信状態をサブマスタ制御部３３０へ通知する。
【００４８】
図７は、命令パケットと応答パケットとの組み合わせの例示図である。図７では、Ｗｒｉｔｅ命令（書込命令）、ｒｅａｄ命令（読取命令）、及びＳｌａｖｅ動作確認命令について説明する。
【００４９】
図７（ａ）は、指定した番地への指定したデータの書き込む場合のパケットを構成するフレームを示す。命令パケットは、６フレームで構成される。応答パケットは１フレームで構成される。サブマスタ制御部３３０のＣＰＵ４０１は、命令パケットとして、Ｗｒｉｔｅ命令（１６進数で２０、以降１６進数の表記には「０ｘ」を記載）、書き込みたいアドレスの上位、下位、書き込みたいデータの上位、下位、を順次フレームとして送信する。その後、ＣＰＵ４０１は、フレーム１〜５を加算した結果の下位８ビットをチェックサム（フレーム６）として送信する。
【００５０】
スレーブ制御部３３１のＣＰＵ４１０は、受信した命令パケットのフレーム１からＷｒｉｔｅ命令を判断し、受信した命令パケットのフレーム１〜５からチェックサムを算出し、命令パケットのフレーム６と一致するかを確認する。ＣＰＵ４１０は、算出したチェックサムがフレーム６と一致する場合、応答パケットとしてＡｃｋｎｏｗｌｅｄｇｅ（０ｘ０２）を送信する。また、ＣＰＵ４１０は、命令パケットで指定された番地に、指定されたデータ（値）の書き込み動作を行う。
【００５１】
図７（ｂ）は、指定した番地の値を読み出したい場合のパケットを構成するフレームを示す。命令パケットは、４フレームで構成される。応答パケットも４フレームで構成される。サブマスタ制御部３３０のＣＰＵ４０１は、命令パケットとして、Ｒｅａｄ命令（０ｘ３０）、読み取りたいアドレスの上位、下位、を順次フレームとして送信する。その後、ＣＰＵ４０１は、フレーム１〜３を加算した結果の下位８ビットをチェックサム（フレーム４）として送信する。
【００５２】
スレーブ制御部３３１のＣＰＵ４１０は、受信した命令パケットのフレーム１からＲｅａｄ命令を判断し、受信した命令パケットのフレーム１〜３からチェックサムを算出し、命令パケットのフレーム４と一致するかを確認する。ＣＰＵ４１０は、算出したチェックサムがフレーム４と一致する場合、応答パケットとしてＡｃｋｎｏｗｌｅｄｇｅ（０ｘ０３）を送信する。また、ＣＰＵ４１０は、順次Ｒｅａｄ値（上位、Ｒｅａｄ値（下位）を送信し、応答パケットのフレーム１〜３を加算した結果の下位８ビットをチェックサム（フレーム４）として送信する。
サブマスタ制御部３３０のＣＰＵ４０１は、応答パケットを受信すると応答パケットのフレーム２、３からＲｅａｄ値を確認する。
【００５３】
図７（ｃ）は、スレーブ制御部３３１の動作確認（Ｓｌａｖｅ動作確認）を行う際のパケットを構成するフレームを示す。命令パケットは、１フレームで構成される。応答パケットも１フレームで構成される。  サブマスタ制御部３３０のＣＰＵ４０１は、命令パケットとしてＳｌａｖｅ動作確認命令（０ｘ９９）を送信する。スレーブ制御部３３１のＣＰＵ４１０は、受信した命令パケットのフレーム１からＳｌａｖｅ動作確認命令を判断し、応答パケットとしてＡｃｋｎｏｗｌｅｄｇｅパケット（０ｘ９９）を送信する。このような命令パケット及び応答パケットの送受信により、Ｓｌａｖｅ動作確認が行われる。
【００５４】
（スレーブ制御部の動作確認）
図８は、Ｓｌａｖｅ動作確認の説明図である。図８のＳｌａｖｅ動作確認では、サブマスタ制御部３３０が、スレーブ制御部３３１、３３２に対して、暴走などの誤動作を起こしていないかを監視する。ここでは、サブマスタ制御部３３０に搭載されるＣＰＵ４０１が、スレーブ制御部３３１、３３２にそれぞれ搭載されているＣＰＵ４１０、４２０の正常動作を確認する。図８は、ＣＰＵ４１０、４２０が正常に動作しており、監視動作が正常に行われた場合のシーケンスを表す。
【００５５】
ＣＰＵ４０１は、通信Ｉ／Ｆ４０４ｂに対してＷｒｉｔｅ命令送信指示を行う（Ｓ８０１）。ＣＰＵ４０１は、図７（ａ）に示すフォーマットで、０ｘＦＦＦＦ番地に０ｘ００００を書き込むＷｒｉｔｅ命令の送信指示を行う。通信Ｉ／Ｆ４０４ｂは、送信指示を受け付けると、Ｗｒｉｔｅ命令をシリアル変換した命令パケットを送信する（Ｓ８０２）。
スレーブ制御部３３２の通信Ｉ／Ｆ４２３は、命令パケットを受信して、スレーブ制御部３３２のＣＰＵ４２０に割込信号を通知し、割り込みを発生させる（Ｓ８０３）。ＣＰＵ４２０は、割込信号を受信すると、受信した命令パケットを解釈して（Ｓ８０４）、命令に従いＲＡＭ４２１の０ｘＦＦＦＦ番地に０ｘ００００を書き込む（Ｓ８０５）。ＲＡＭ４２１の０ｘＦＦＦＦ番地の値は、スレーブ制御部３３２の動作状態を表す状態変数値となる。書き込みを終了したＣＰＵ４２０は、通信Ｉ／Ｆ４２３に対して図７（ａ）に示すフォーマットでＡｃｋｎｏｗｌｅｄｇｅの送信指示を行う（Ｓ８０６）。通信Ｉ／Ｆ４２３は、送信指示を受け付けると、通信Ｉ／Ｆ４０４ｂへＡｃｋｎｏｗｌｅｄｇｅをシリアル変換した応答パケットを送信する（Ｓ８０７）。
サブマスタ制御部３３０の通信Ｉ／Ｆ４０４ｂは、応答パケットを受信して、サブマスタ制御部３３０のＣＰＵ４０１に割込信号を通知し、割り込みを発生させる（Ｓ８０８）。ＣＰＵ４０１は、割込信号によりＷｒｉｔｅ命令が正常に終了したことを確認する。
Ｓ８０１〜Ｓ８０８までの動作は、Ｓｌａｖｅ動作確認の初期動作として画像形成装置１０００の電源投入時に必ず１度行われる。
【００５６】
初期動作後、サブマスタ制御部３３０のＣＰＵ４０１は、通信Ｉ／Ｆ４０４ａに対してＳｌａｖｅ動作確認命令送信指示を行う（Ｓ８１０）。通信Ｉ／Ｆ４０４ａは、送信指示を受け付けると、スレーブ制御部３３１の通信Ｉ／Ｆ４１３へＳｌａｖｅ動作確認命令をシリアル変換した命令パケットを送信する（Ｓ８１１）。
スレーブ制御部３３１の通信Ｉ／Ｆ４１３は、命令パケットを受信して、スレーブ制御部３３１のＣＰＵ４１０に割込信号を通知し、割り込みを発生させる（Ｓ８１２）。ＣＰＵ４１０は、割込信号を受信すると、受信した命令パケットを解釈する（Ｓ８１３）。ＣＰＵ４１０は、命令パケットを解釈して動作確認を行った後に、通信Ｉ／Ｆ４１３に対してＳｌａｖｅ動作確認命令を正常に受信したことを知らせるＡｃｋｎｏｗｌｅｄｇｅの送信指示を行う（Ｓ８１４）。通信Ｉ／Ｆ４１３は、送信指示を受け付けると、通信Ｉ／Ｆ４０４ａへＡｃｋｎｏｗｌｅｄｇｅをシリアル変換した応答パケットを送信する（Ｓ８１５）。
サブマスタ制御部３３０の通信Ｉ／Ｆ４０４ａは、応答パケットを受信して、サブマスタ制御部３３０のＣＰＵ４０１に割込信号を通知し、割り込みを発生させる（Ｓ８１６）。
【００５７】
スレーブ制御部３３１のＣＰＵ４１０は、Ｓ８１４の処理でＡｃｋｎｏｗｌｅｄｇｅ送信指示を行う際に、ＧＰＩＯ端子４１９の信号４８１の論理を反転する指示を行う（Ｓ８１７）。これにより信号４８１は、論理が反転する（Ｓ８１８）。信号４８１は、反転することでスレーブ制御部３３１がＳｌａｖｅ動作確認命令を受信したことをスレーブ制御部３３２に通知する。スレーブ制御部３３１のＧＰＩＯ端子４１９は、信号４８１を送信する信号線によりスレーブ制御部３３２のＧＰＩＯ端子４１９に接続される。
スレーブ制御部３３２のＣＰＵ４２０は、ＧＰＩＯ端子４２９を介して信号４８１を定期的に監視している。ＣＰＵ４２０は、信号４８１の論理反転を確認した場合（Ｓ８１９）、ＲＡＭ４２１の０ｘＦＦＦＦ番地を読み出し（Ｓ８２０）、読み出した値に「１」を加算して、ＲＡＭ４２１の０ｘＦＦＦＦ番地に加算結果を書き込む（Ｓ８２１）。これにより、信号４８１の反転に応じてＲＡＭ４２１の０ｘＦＦＦＦ番地の値が「１」インクリメントされる。つまりスレーブ制御部３３２が正常に動作し、信号４８１の論理が反転するたびに、状態変数値が更新されることになる。
【００５８】
サブマスタ制御部３３０のＣＰＵ４０１は、Ｓｌａｖｅ動作確認命令に従ってＣＰＵ４２０がＲＡＭ４２１番地の０ｘＦＦＦＦ番地の値を１インクリメントしたと推定されるタイミングで、通信Ｉ／Ｆ４０４ｂに対してＲｅａｄ命令送信指示を行う（Ｓ８３０）。通信Ｉ／Ｆ４０４ｂは、送信指示を受け付けると、スレーブ制御部３３２の通信Ｉ／Ｆ４２３へＲｅａｄ命令をシリアル変換した命令パケットを送信する（Ｓ８３１）。このＲｅａｄ命令送信指示は、サブマスタ制御部３３０が任意のタイミングで送信する。そのために、サブマスタ制御部３３０の処理負荷が大きい場合等には、Ｒｅａｄ命令送信指示の送信タイミングが、処理負荷が小さくなるまで待機されることもある。
スレーブ制御部３３２の通信Ｉ／Ｆ４２３は、命令パケットを受信して、スレーブ制御部３３２のＣＰＵ４２０に割込信号を通知し、割り込みを発生させる（Ｓ８３２）。ＣＰＵ４２０は、受信した命令パケットを解釈して（Ｓ８３３）、命令に従いＲＡＭ４２１の０ｘＦＦＦＦ番地の値を読み出す（Ｓ８３４）。ＣＰＵ４２０は、通信Ｉ／Ｆ４２３に対して、読み出した値を含むＡｃｋｎｏｗｌｅｄｇｅの送信指示を行う（Ｓ８３５）。通信Ｉ／Ｆ４２３は、送信指示を受け付けると、通信Ｉ／Ｆ４０４ｂへＡｃｋｎｏｗｌｅｄｇｅをシリアル変換した応答パケットを送信する（Ｓ８３６）。
【００５９】
サブマスタ制御部３３０の通信Ｉ／Ｆ４０４ｂは、この応答パケットを受信して、サブマスタ制御部３３０のＣＰＵ４０１に割込信号を通知し、割り込みを発生させる（Ｓ８３７）。ＣＰＵ４０１は、割込信号を受信すると０ｘＦＦＦＦ番地の読取値がＳｌａｖｅ動作確認命令を指示する前に対して１インクリメントした値であるかを確認する（Ｓ８３８）。ここで１インクリメントした値である場合、ＣＰＵ４０１は、スレーブ動作確認命令に応じてＣＰＵ４１０、ＣＰＵ４２０の両方が正常に動作していると判断して、Ｓｌａｖｅ動作確認処理を終了する。このようにしてスレーブ動作を行うＣＰＵ４１０、ＣＰＵ４２０が両方協調して命令が実行できているかを確認することで、サブマスタ制御部３３０は、スレーブ制御部３３１、３３２の暴走を監視することが可能である。スレーブ制御部３３１、３３２のいずれか一方が暴走する場合に、サブマスタ制御部３３０はスレーブ制御部３３１〜３３４をリセットさせる。
【００６０】
図９〜図１４は、サブマスタ制御部３３０がスレーブ制御部３３１、３３２の動作を確認する処理を表すフローチャートである。図９〜図１１は、サブマスタ制御部３３０の処理である。図１２は、スレーブ制御部３３１の処理である。図１３、図１４は、スレーブ制御部３３２の処理である。
【００６１】
図９は、サブマスタ制御部３３０によるＳｌａｖｅ動作確認の初期動作のフローチャートである。この処理は、図８のＳ８０１、Ｓ８０８の処理に対応する。この処理は、画像形成装置１０００に電源が投入され、サブマスタ制御部３３０と各スレーブ制御部３３１〜３３４とが通信可能な状態となったときに、一度実行される。
【００６２】
サブマスタ制御部３３０のＣＰＵ４０１は、スレーブ制御部３３２のＲＡＭ４２１の０ｘＦＦＦＦ番地の値を初期化するために、０ｘＦＦＦＦ番地に０ｘ００００を書き込むＷｒｉｔｅ命令を発行する（Ｓ９０１）。これによりＷｒｉｔｅ命令の命令パケットが、サブマスタ制御部３３０の通信Ｉ／Ｆ４０４ｂから、通信Ｉ／Ｆ４２３を介してスレーブ制御部３３２のＣＰＵ４２０へ命令が伝達される。Ｗｒｉｔｅ命令の命令パケットを受信したスレーブ制御部３３２の処理については後述する。
【００６３】
サブマスタ制御部３３０のＣＰＵ４０１は、命令パケットの送信から所定時間、該命令パケットに対するＡｃｋｎｏｗｌｅｄｇｅを待機する（Ｓ９０２）。所定時間内にＡｃｋｎｏｗｌｅｄｇｅを受信しない場合（Ｓ９０２：N）、ＣＰＵ４０１は、通信が正常に確立できていないか、或いはスレーブ制御部３３２が暴走状態にありＡｃｋｎｏｗｌｅｄｇｅを返せないものと判断する。この場合、ＣＰＵ４０１は、エラー処理を行う（Ｓ９０３）。所定時間内にＡｃｋｎｏｗｌｅｄｇｅを受信した場合（Ｓ９０２：Y）、ＣＰＵ４０１は、サブマスタ制御部３３０のＲＡＭ４０２の０ｘＦＦＦＦ番地に０ｘ００００を書き込む（Ｓ９０４）。これによりサブマスタ制御部３３０は、ＲＡＭ４０２の０ｘＦＦＦＦ番地の値を、スレーブ制御部３３２のＲＡＭ４２１の０ｘＦＦＦＦ番地の値と同値にする。つまりサブマスタ制御部３３０は、初期化されたスレーブ制御部３３２の状態変数値と同値を保存する。以上により、Ｓｌａｖｅ動作確認の初期動作が終了する。
【００６４】
図１０は、Ｓ９０３のエラー処理を表すフローチャートである。この処理は、所定時間内にＡｃｋｎｏｗｌｅｄｇｅを受信しない場合の処理である。そのためにサブマスタ制御部３３０のＣＰＵ４０１は、スレーブ制御部３３２に異常が発生したと判断してこの処理を行うことになる。サブマスタ制御部３３０のＣＰＵ４０１は、スレーブ制御部３３２にリセットを指示する。ＣＰＵ４０１は、リセット部４０７を介して、リセット信号３８５をアサートさせ、各スレーブ制御部３３１〜３３４にリセットをかける（Ｓ１００１）。これによりＣＰＵ４０１は、制御対象の動作を停止して、エラー処理を終了する。各スレーブ制御部３３１〜３３４は、リセット信号３８５に応じて所定のリセット動作を行うことになる。
【００６５】
図１１は、サブマスタ制御部３３０によるＳｌａｖｅ動作確認のフローチャートである。この処理は、図８のＳ８１０、Ｓ８１６、Ｓ８３０、Ｓ８３７、Ｓ８３８の処理に対応し、図９の初期動作処理後に行われる。サブマスタ制御部３３０は、この処理を定期的に行うことで、定期的にスレーブ制御部３３１、３３２の動作確認を行う。
【００６６】
サブマスタ制御部３３０のＣＰＵ４０１は、スレーブ制御部３３１に対するＳｌａｖｅ動作命令を発行する（Ｓ１１０１）。ＣＰＵ４０１は、通信Ｉ／Ｆ４０４ａ及びスレーブ制御部３３１の通信Ｉ／Ｆ４１３を介して、スレーブ制御部３３１のＣＰＵ４１０へＳｌａｖｅ動作確認命令の命令パケットを送信する。この命令パケットを受信したＣＰＵ４１０の処理については後述する。
【００６７】
サブマスタ制御部３３０のＣＰＵ４０１は、命令パケットの送信から所定時間、該命令パケットに対するＡｃｋｎｏｗｌｅｄｇｅを待機する（Ｓ１１０２）。スレーブ制御部３３１のＣＰＵ４１０は、正常に通信及び動作ができた場合に、Ｓｌａｖｅ動作命令に対するＡｃｋｎｏｗｌｅｄｇｅを返信する。所定時間内にＡｃｋｎｏｗｌｅｄｇｅを受信しない場合（Ｓ１１０２：N）、ＣＰＵ４０１は、通信が正常に確立できていないか、或いはスレーブ制御部３３１が暴走状態にありＡｃｋｎｏｗｌｅｄｇｅを返せないものと判断する。この場合、ＣＰＵ４０１は、図１０に示すエラー処理を行う（Ｓ９０３）。
【００６８】
所定時間内にＡｃｋｎｏｗｌｅｄｇｅを受信した場合（Ｓ１１０２：Y）、ＣＰＵ４０１は、Ａｃｋｎｏｗｌｅｄｇｅ受信後に所定時間待機する。この待機時間は、スレーブ制御部３３１及びスレーブ制御部３３２がＳｌａｖｅ動作確認に対する応答処理を全て終える時間以上である。
【００６９】
サブマスタ制御部３３０のＣＰＵ４０１は、待機時間が経過すると、スレーブ制御部３３２のＲＡＭ４２１の０ｘＦＦＦＦ番地へのＲｅａｄ命令を発行する（Ｓ１１０４）。これにより、通信Ｉ／Ｆ４０４ｂ及び通信Ｉ／Ｆ４２３を介して、スレーブ制御部３３２のＣＰＵ４２０にＲｅａｄ命令の命令パケットが伝達される。サブマスタ制御部３３０のＣＰＵ４０１は、この命令パケットの送信から所定時間、該命令パケットに対するＡｃｋｎｏｗｌｅｄｇｅを待機する（Ｓ１１０５）。所定時間内にＡｃｋｎｏｗｌｅｄｇｅを受信しない場合（Ｓ１１０５：N）、ＣＰＵ４０１は、通信が正常に確立できていないか、或いはスレーブ制御部３３２が暴走状態にありＡｃｋｎｏｗｌｅｄｇｅを返せないものと判断する。この場合、ＣＰＵ４０１は、図１０に示すエラー処理を行う（Ｓ９０３）。
【００７０】
所定時間内にＡｃｋｎｏｗｌｅｄｇｅを受信した場合（Ｓ１１０５：Y）、ＣＰＵ４０１は、Ｒｅａｄ命令に応じてスレーブ制御部３３２が読み取った値（ＲＡＭ４２１の０ｘＦＦＦＦ番地に書き込まれている値）を確認する。ここでは、ＣＰＵ４０１は、この値（状態変数値）が、Ｓｌａｖｅ動作確認命令を発行する前と発行後で１インクリメントしているかを確認する。確認方法は、Ｓ１１０５で取得したＡｃｋｎｏｗｌｅｄｇｅに含まれる値と、サブマスタ制御部３３０のＲＡＭ４０２の０ｘＦＦＦＦ番地の値とを比較することで行われる。Ａｃｋｎｏｗｌｅｄｇｅに含まれる値がＲＡＭ４０２の０ｘＦＦＦＦ番地の値より１大きい場合、Ａｃｋｎｏｗｌｅｄｇｅに含まれる値が、Ｓｌａｖｅ動作確認命令を発行する前と発行後で１インクリメントしていると判断される。
【００７１】
１インクリメントしていない場合（Ｓ１１０６：N）、ＣＰＵ４０１は、Ｓｌａｖｅ動作確認命令がうまく動作しておらず、スレーブ動作を担うスレーブ制御部３３１及びスレーブ制御部３３２の少なくとも一方が暴走していると判断する。この場合、ＣＰＵ４０１は、図１０に示すエラー処理（Ｓ９０３）を実行する。１インクリメントされている場合（Ｓ１１０６：Y）、ＣＰＵ４０１は、スレーブ動作を担うスレーブ制御部３３１及びスレーブ制御部３３２が正常に動作していると判断する。この場合、ＣＰＵ４０１は、ＲＡＭ４０２の０ｘＦＦＦＦ番地の値を１インクリメントする（Ｓ１１０７）。これによりサブマスタ制御部３３０は、ＲＡＭ４０２の０ｘＦＦＦＦ番地の値を、スレーブ制御部３３２のＲＡＭ４２１の０ｘＦＦＦＦ番地の値と同値に更新する。つまりサブマスタ制御部３３０は、更新されたスレーブ制御部３３２の状態変数値と同値を保存する。以上により、Ｓｌａｖｅ動作確認が終了する。
【００７２】
図１２は、スレーブ制御部３３１によるサブマスタ制御部３３０からの命令パケットに対する応答処理を表すフローチャートである。この処理は、図８のＳ８１２〜Ｓ８１４、Ｓ８１７、Ｓ８１８の処理に対応する。スレーブ制御部３３１は、図１２の処理を繰り返し実行することでサブマスタ制御部３３０からの命令パケットに応じた処理を行う。
【００７３】
スレーブ制御部３３１のＣＰＵ４１０は、通信Ｉ／Ｆ４１３がサブマスタ制御部３３０から命令パケットを受信することで通知する割込信号の有無を判断する（Ｓ１２０１）。割込信号の通知が有る場合（Ｓ１２０１：Y）、ＣＰＵ４１０は、通信Ｉ／Ｆ４１３が受信した命令パケットを取得する（Ｓ１２０２）。ＣＰＵ４１０は、取得した命令パケットがＳｌａｖｅ動作確認命令であるか否かを判断する（Ｓ１２０３）。Ｓｌａｖｅ動作確認命令の命令パケットは、図１１のＳ１１０１の処理でサブマスタ制御部３３０から送信される。命令パケットがＳｌａｖｅ動作確認命令ではない場合（Ｓ１２０３：N）、ＣＰＵ４１０は、該命令パケットに応じたＳｌａｖｅ動作確認命令以外の処理を行う（Ｓ１２０４）。本実施形態ではＳｌａｖｅ動作確認命令以外の処理は関係がないために、説明は省略する。処理が終わると、命令パケットに対する応答処理は終了する。
【００７４】
取得した命令パケットがＳｌａｖｅ動作確認命令である場合（Ｓ１２０３：Y）、ＣＰＵ４１０は、自身の動作確認を行った後に、通信Ｉ／Ｆ４１３を介してサブマスタ制御部３３０へＡｃｋｎｏｗｌｅｄｇｅの応答パケットを送信する（Ｓ１２０５）。ＣＰＵ４１０は、通信Ｉ／Ｆ４１３へＡｃｋｎｏｗｌｅｄｇｅの送信を指示する。Ａｃｋｎｏｗｌｅｄｇｅの応答パケットの送信後、ＣＰＵ４１０は、信号４８１の論理を現状出力している値から反転する（Ｓ１２０６）。信号４８１は、別のスレーブ制御部３３２へＳｌａｖｅ動作確認命令を受信したことを示す信号である。以上により、サブマスタ制御部３３０からの命令パケットに対する応答処理が終了する。
【００７５】
図１３は、スレーブ制御部３３２によるサブマスタ制御部３３０からの命令パケットに対する応答処理を表すフローチャートである。この処理は、図８のＳ８０３〜Ｓ８０６、Ｓ８３２〜Ｓ８３５の処理に対応する。スレーブ制御部３３２は、図１３の処理を繰り返し実行することでサブマスタ制御部３３０からの命令パケットに応じた処理を行う。
【００７６】
スレーブ制御部３３２のＣＰＵ４２０は、通信Ｉ／Ｆ４２３がサブマスタ制御部３３０から命令パケットを受信することで通知する割込信号の有無を判断する（Ｓ１３０１）。割込信号の通知が有る場合（Ｓ１３０１：Y）、ＣＰＵ４２０は、通信Ｉ／Ｆ４２３が受信した命令パケットを取得する（Ｓ１３０２）。ＣＰＵ４２０は、取得した命令パケットがＷｒｉｔｅ命令であるか否かを判断する（Ｓ１３０３）。Ｗｒｉｔｅ命令の命令パケットは、図９のＳ９０１の処理でサブマスタ制御部３３０から送信される。
命令パケットがＷｒｉｔｅ命令ではない場合（Ｓ１３０３：N）、ＣＰＵ４２０は、取得した命令パケットがＲｅａｄ命令であるか否かを判断する（Ｓ１３０４）。Ｒｅａｄ命令の命令パケットは、図１１のＳ１１０４の処理でサブマスタ制御部３３０から送信される。命令パケットがＲｅａｄ命令ではない場合（Ｓ１３０４：N）、ＣＰＵ４２０は、該命令パケットに応じたＷｒｉｔｅ命令及びＲｅａｄ命令以外の処理を行う（Ｓ１３０５）。本実施形態ではＷｒｉｔｅ命令及びＲｅａｄ命令以外の処理は関係がないために、説明は省略する。処理が終わると、命令パケットに対する応答処理は終了する。
【００７７】
取得した命令パケットがＷｒｉｔｅ命令である場合（Ｓ１３０３：Y）、ＣＰＵ４２０は、命令に応じて指定された番地に指定された値を書き込む（Ｓ１３０６）。命令実行後にＣＰＵ４２０は、通信Ｉ／Ｆ４２３を介してサブマスタ制御部３３０へＷｒｉｔｅ命令に対するＡｃｋｎｏｗｌｅｄｇｅの応答パケットを送信する（Ｓ１３０７）。スレーブ制御部３３２は、Ａｃｋｎｏｗｌｅｄｇｅの応答パケットをサブマスタ制御部３３０へ送信することで、命令を実行したことを通知する。そのため、ＣＰＵ４２０は、通信Ｉ／Ｆ４１３へＷｒｉｔｅ命令に対するＡｃｋｎｏｗｌｅｄｇｅの送信を指示する。
【００７８】
取得した命令パケットがＲｅａｄ命令である場合（Ｓ１３０４：Y）、ＣＰＵ４２０は、命令に応じて指定された番地の値を読み出す（Ｓ１３０８）。命令実行後にＣＰＵ４２０は、通信Ｉ／Ｆ４２３を介してサブマスタ制御部３３０へＲｅａｄ命令に対するＡｃｋｎｏｗｌｅｄｇｅの応答パケットを送信する（Ｓ１３０９）。Ｒｅａｄ命令に対するＡｃｋｎｏｗｌｅｄｇｅの応答パケットには、Ｓ１３０８の処理で読み出した値が含まれる。スレーブ制御部３３２は、Ａｃｋｎｏｗｌｅｄｇｅの応答パケットをサブマスタ制御部３３０へ送信することで、命令を実行したことを通知する。そのため、ＣＰＵ４２０は、通信Ｉ／Ｆ４１３へＷｒｉｔｅ命令に対するＡｃｋｎｏｗｌｅｄｇｅの送信指示を送る。
【００７９】
図１３は、スレーブ制御部３３２によるＳｌａｖｅ動作確認時の処理を表すフローチャートである。この処理は、図８のＳ８１９〜Ｓ８２１の処理に対応する。
【００８０】
スレーブ制御部３３２のＣＰＵ４２０は、信号４８１の値（論理）の反転を一定時間間隔で判断する（Ｓ１４０１、Ｓ１４０２：N）。信号４８１の値（論理）が反転した場合（Ｓ１４０２：Y）、ＣＰＵ４２０は、ＲＡＭ４２１の０ｘＦＦＦＦ番地の値を読み出す（Ｓ１４０３）。ＣＰＵ４２０は、読み出した値に１インクリメントする（Ｓ１４０４）。ＣＰＵ４２０は、インクリメントした値をＲＡＭ４２１の０ｘＦＦＦＦ番地に書き込み（Ｓ１４０５）、処理を終了する。
【００８１】
上記では、スレーブ制御部３３１及びスレーブ制御部３３２を１つのグループとして動作の監視を行う構成を説明したが、スレーブ制御部３３３、３３４を該グループに含めてもよい。この場合、スレーブ制御部３３３、３３４は、Ｓｌａｖｅ動作確認時にスレーブ制御部３３２と同様の処理を行うことになる。即ちスレーブ制御部３３３、３３４は、信号４８１の値に応じた処理を行う。このように動作の監視対象となる１つのグループのスレーブ制御部の数は、３以上であってもよい。
また、上記の説明では、サブマスタ制御部３３０からの命令に応じてスレーブ制御部３３１〜３３４が正常動作の確認を行う。これは、そのままマスタ制御部３０１とサブマスタ制御部３１０〜３４０との関係に用いることができる。すなわち、マスタ制御部３０１からの命令に応じて、サブマスタ制御部３１０〜３４０が自身の正常動作の確認を行ってもよい。
【００８２】
このように本実施形態では、マスタ側の制御部が、スレーブ側の制御部が正常に動作しているかを確認する命令をスレーブ側の制御部に指示する。スレーブ側の制御部は、該命令に応じた処理を行う。マスタ側の制御部は、その処理結果を確認することですべてのスレーブ側の制御部が正常に動作しているかを確認することができる。そのためにマスタ側の制御部は、スレーブ側の制御部の確認処理の負荷を軽減することができる。
また、マスタ側の制御部は、スレーブ側の制御部が正常に動作をしているかの応答結果を任意のタイミングで取得する。そのためにマスタ側の制御部は、別の処理で負荷がかかっているときには、応答結果の取得タイミングを遅らせることができる。マスタ側の制御部は、スレーブ側の制御部のリセットを、異常と判断したタイミングで行うことができるため、処理負荷を分散することができる。
【図１】
2019049933.tif 000003
【図２】
2019049933.tif 000004
【図３】
2019049933.tif 000005
【図４】
2019049933.tif 000006
【図５】
2019049933.tif 000007
【図６】
2019049933.tif 000008
【図７】
2019049933.tif 000009
【図８】
2019049933.tif 000010
【図９】
2019049933.tif 000011
【図１０】
2019049933.tif 000012
【図１１】
2019049933.tif 000013
【図１２】
2019049933.tif 000014
【図１３】
2019049933.tif 000015
【図１４】
2019049933.tif 000016