以下、図面を参照して本発明の実施形態を説明する。なお、図面において同一の機能を有する要素には同一の符号を付し、重複する説明を省略する。また、図面はあくまでも本発明の実施形態を説明するためのものであるので、各部材の寸法や比率は説明の都合上誇張または簡略化しており、実際の寸法や比率とは異なる。
本発明を適用した実施形態の情報処理装置として、プリンター、コピー、スキャナー、ファクシミリなどの機能を備えたMFP(multifunction peripheral、多機能周辺装置)を例に説明する。MFPは複合機などと称されることもある。
図1は、実施形態におけるMFPの構成を説明するためのブロック図である。
MFP10は、メインCPU100とサブCPU200を備えたマルチプロセッサ構成である。メインCPU100には、メインCPU100が専用に利用するRAM(Random Access Memory)121が接続されている。同様にサブCPU200にもサブCPU200が専用に利用するRAM221が接続されている。
メインCPU100は、MFP10全体の制御や、各プリンター、コピー、スキャナー、ファクシミリなどの機能が選択された際にそれら各機能を実行するための制御を行う。
メインCPU100はメインCPU用バス150を介して、表示部112、操作部113、画像処理部114、通信制御部115、モデム116とNCU(Network Control Unit)117、読取部118、プリントエンジン119、メインCPU用ROM(Read Only Memory)120、メインCPU用RAM121、不揮発性メモリー122、電源制御部123、およびネットワーク通信部124と接続されている。また、メインCPU用バス150には、サブCPU200と通信するためのサブCPU通信部130が接続されている。
表示部112は、たとえば液晶ディスプレイ、有機EL(electroluminescence)ディスプレイなどのディスプレイパネルを備える。ディスプレイパネルには操作画面、設定画面、編集画面などの各種画面が表示される。
操作部113は、たとえばコピー、スキャナー、ファクシミリの各機能を選択するためのボタンやキー、数値を入力するためのテンキー、スタートキー、ストップキーなどを備える。また表示部112と操作部113は、それらが一つになったタッチパネルであってもよい。
画像処理部114は、画像データの補正、回転、拡大、縮小などの画像処理を行う。また、外部装置300から受信した画像データのラスタライズも行う。またファクシミリの画像データに対しては、画像データの圧縮(符号化)、伸張(復号化)などの処理を行う。ここで外部装置300は、たとえばパソコン(PC)やサーバー、携帯情報端末などである(携帯情報端末はたとえば携帯電話、スマートフォン、タブレットなどである)。
通信制御部115は、ファクシミリ通信に係るプロトコル制御などを行う。このため通信制御部115は、モデム116を介してのデータの送受信の制御を行っている。
モデム116は、デジタル信号をアナログ信号で伝送するための変調やその復調を行う。モデム116は、ソフトウェアモデムとしてモデムの機能を実施するためのプログラムをメインCPU100が実行することとしてもよい。NCU117は、電話回線と接続されて、発呼や着呼に関する制御や検出を行う。NCU117はモデム116によって制御される。ここでは主にファクシミリの際の発呼や着呼に使用される。
読取部118は、原稿画像を光学的に読み取って画像データを取得する、いわゆるスキャナーである。
プリントエンジン119は、画像データに基づく画像を、周知の電子写真プロセスによって記録紙上に形成する、いわゆる印刷を行う。プリントエンジンは、インクジェット方式であってもよい。
メインCPU用ROM120は、メインCPU専用のROMであり、このMFP10における基本動作を担うための各種プログラムや固定データが格納されている。メインCPU100はこれらのプログラムに従って各種の処理を実行する。
メインCPU用RAM121は、メインCPU専用のRAMであり、メインCPU100がプログラムを実行する際にワークエリアとなる。また画像データを一時的に記憶する。このためメインCPU用RAM121は、コピー時に読取部118で読み取った画像データ、外部装置300から受信したジョブの画像データ、ファクシミリ受信した画像データなどを一時記憶する際に使用される。
不揮発性メモリー122は、読取部118で読み取られた原稿の画像データ、外部装置300から受信したジョブの画像データや、ファクシミリ受信した画像データなどを記憶する。また、メインCPU100が実行するアプリケーションプログラム(メインCPU用ROMに記憶されているプログラム以外のプログラム)も記憶している。
そして不揮発性メモリー122は、サブCPU200に実行させるためのプログラムも記憶している。このため不揮発性メモリー122は、サブCPU200が実行するプログラムを記憶するサブCPU用プログラム記憶部となる。不揮発性メモリー122は、たとえばHDD(Hard disk drive)、フラッシュメモリーを利用したSSD(solid state drive)などが用いられる。
また不揮発性メモリー122は、たとえば、コピー時の画像データの記憶や、外部装置からの印刷ジョブ(およびジョブに含まれる画像データ)の記憶などに使用される。
なお、ここで出力とは、通信制御部115とモデム116およびNCU117を介したファクシミリ出力、プリントエンジン119による印刷出力のことである。
電源制御部123は、メインCPU100およびサブCPU200からの指令によって、各部への電力供給を制御している。電源制御としては、たとえば、通常モードと省エネネルギーモード(以下省エネモードという)がある(スリープモードとも称されている)。通常モードは各部への通電が行われ、各機能が即時実行可能な状態である。省エネモードにおいては、メインCPU100およびバス150によって接続さている各部のうち、ユーザー操作の開始(操作部113からの入力)を検知する部分や、着呼(電話回線の電圧変動)を検知する部分、また外部装置300からのジョブの入力を検知する部分など以外への電力供給を停止する。具体的には、本実施形態では省エネモードに入ると、入力検知や、着呼検知をサブCPU200によって行わせる(詳細後述)。このためメインCPU100およびバス150によって接続さている、操作部113とNCU117以外の各部への電力供給は停止することになる。なお、サブCPU200については、省エネモードに入っても電源制御部123からの電力供給が停止されることはない。
MFP10は、通常、電源が投入されると、通常モードとなる。一方、一定時間無操作および無着信であれば、消費電力を抑えるため省エネモードとなる。このような制御をメインCPU100およびサブCPU200のいずれかが処理して電源制御部123へ指令し、電源制御部123が指令に従って、各部への通電を切り換えている。
ネットワーク通信部124は、LAN(Local Area Network)などのネットワーク301を通じて外部装置300(たとえばパソコンやサーバー、また携帯端末など)と接続されている。そして外部装置300との間で画像データやそのほか様々なデータのやり取りが行われる。また外部装置300は、たとえば無線通信機能(たとえば無線LAN(WiFi(Wireless Fidelity))、近距離無線通信(たとえばBluetooth(登録商標))など)を備え、外部装置300として無線通信を利用した携帯情報端末と画像データなどの送受信が行えるようにしておいてもよい。
サブCPU通信部130は、サブCPU200との間で様々なデータのやり取りを行うための通信制御を行う。たとえばRS232Cのような通信規格を使用してメインCPU100とサブCPU200との接続を行っている。本実施形態では、特にサブCPU200が使用するプログラムを書き換える際の通信に使用する。
なお、サブCPU通信部130を含めてメインCPU100とバス150を介して接続されている部分をメインCPU100側と称する。
次に、サブCPU200は、メインCPU100からサブCPU用RAM221内のプログラムが書き換えられることで、様々な処理を実行する。
サブCPU200はサブCPU用バス250を介して、サブCPU用ROM220、およびサブCPU用RAM221と接続されている。また、サブCPU用バス250には、メインCPU100と通信するためのメインCPU通信部230が接続されている。またサブCPU用バス250には、操作部113、NCU117などと接続されていて、これらの部分での信号検知を行うための信号検知部240が接続されている。さらに、サブCPU用バス250には、電源制御部123も接続されていて、サブCPU200から直接電源制御部123に指令を出して、省エネモードからの復帰ができるようになっている(詳細後述)。
サブCPU用ROM220は、サブCPU200が実行するあらかじめ固定されたプログラムが記憶されている。本実施形態では、メインCPU100から送信されてきたプログラムをサブCPU用RAM221へ書き込み、また読み出すための必要最小限のプログラムを記憶している。
サブCPU用RAM221は、サブCPU200専用のものであり、サブCPU200が実行するプログラムを記憶する。このためサブCPU用RAM221はサブCPU用記憶部となる。また、サブCPU用RAM221は、サブCPU200が使用するワークエリアとなる。このサブCPU用RAM221はサブCPU200専用のものであるため、そこへのデータの書き込み、読み出しはサブCPU200が行う。したがって、サブCPU200へ実行させるためにメインCPU100から送られてきたプログラムであっても、一度サブCPU200自身がサブCPU用RAM221へ書き込むことになる。
メインCPU通信部230は、メインCPU100側にあるサブCPU通信部130に対応しているサブCPU200側の通信制御部である。したがって、たとえばRS232Cのような通信規格を使用してメインCPU100とサブCPU200との接続を行っている。
メインCPU通信部230を含めてサブCPU200とバス250を介して接続されている部分をサブCPU200側と称する。
なお、メインCPU100とサブCPU200間の接続は、RS232Cのような通信規格に限らず、そのほかの通信規格でもよい。また、メインCPU100とサブCPU200間の接続は、通信ではなく、一つのバスにメインCPU100とサブCPU200が接続されて、バスを介してデータのやり取りを直接行う形態でもよい。また、メインCPU100とサブCPU200で共用するRAMを設けて、RAMを介してデータのやり取りする(メインCPUが書き込んだデータをサブCPUが読み出すなど)形態であってもよい。
信号検知部240は、主に省エネルギーモードの状態において機能するものであり、操作部113からの入力による電圧変動の検知、NCU117への着信時の信号検知(回線の電圧変動)および回線のモニターなどに使用される。信号検知部240は、たとえばアナログーデジタル変換器を備え、アナログ信号をデジタル信号に変換する。これにより、サブCPU200が、操作部113やNCU117に接続されている信号線の電圧変動や信号のモニターができるようになっている。
本実施形態1におけるMFP10の動作について説明する。
まず、基本動作について説明する。
メインCPU100が管理して直接アクセスする不揮発性メモリー122には、サブCPU200に実行させるプログラムを複数記憶しておく。サブCPU200に実行させるプログラムは、MFP10の状態変化や設定に応じてサブCPU200に特定の機能を実行させるために必要なプログラムである。そしてメインCPU100は、記憶されている複数のプログラムの中から、そのときのMFP10の状態変化(詳細にはメインCPU100の状態変化)や設定に応じて必要なプログラムを選択する。選択したプログラムはメインCPU100からサブCPU200に送信する。
送信されたプログラムはサブCPU用RAM221に書き込まれる。このとき送信されてきたプログラムを記憶する前に、以前からサブCPU用RAM221にあったプログラムは消去される。これはサブCPU用RAM221の容量が限られているため、複数のプログラムを記憶することができないためである。したがって、サブCPU用RAM221へのプログラムの記憶は、プログラムの書き換えということになる。
プログラム送信のタイミングは、状態変化が発生したとき、または、設定変更されたときなどである。これはあらかじめ設定された内容に基づいて、ある状態に達した時点でプログラムを送信する動作を含む。そしてサブCPU200ではサブCPU用RAM221に書き込まれたプログラムを実行する。
具体的な動作例としてファクシミリ機能を例に2つの動作例を説明する。
まず、動作例1として、カー(CAR)とナンバーディスプレイ番号(V.23)検知、および電源制御に設定変更された後の省エネモード中に、着信信号の検知によるファクシミリ受信を行う場合を説明する。図2〜5は、動作例1を説明するための説明図である。図においては、すでに説明したMFP10の構成のうちこの動作例1にかかわる部分のみを示し、そのほかの部分は省略している。
まず図2に示すようにメインCPU100が直接アクセスする不揮発性メモリー122には、サブCPU200に実行させるプログラムを複数記憶している。ここで例示したプログラムは、プログラムA:復号化プログラム、プログラムB:符号化プログラム、プログラムC:リング(Ring)検知+電源制御プログラム、プログラムD:V.23検知+電源制御プログラム、プログラムE:1300Hzトーン検知+電源制御プログラムである。これらのプログラムには、プログラム名称や識別符号、識別番号などのIDが付与されている。
ここで、リング(Ring)検知、カー(CAR)検知、1300Hzトーン検知などは、通信回線(ファクシミリのための電話回線)を掴んでいない状態で通信回線上を流れる電圧変化および信号をモニターすることにより行われる。これを着信監視という。電圧変化(電圧測定)および信号のモニターは、信号検知部240を介して行われる。
またナンバーディスプレイは電話回線をモニターすることで行われる。その際サブCPU200によりソフトモデムを実現するために、V.23検知プログラムに含まれる、V.23デコードプログラムが実行される。
電源制御プログラムによる電源制御は、あらかじめ決められた所定時間の経過により省エネモードに入ったり、省エネモードから通常モードへ復帰させたりすることである。
省エネモードにおいては、電源制御部123によりメインCPU100側の最低限必要な箇所以外への電力供給を停止する。一方、通常モードへの復帰は、ファクシミリのための信号を検知したり、操作部113からの入力を検知したりすることでメインCPU100を初めとした各部への電力供給を再開する。操作部113からの入力の有無を監視することを操作監視という。着信監視と操作監視を合わせて着信操作監視という。
サブCPU200に実行させるプログラムは、そのほか様々なプログラムであってもよい。たとえば画像縮小、回線電圧モニター、通信時間測定、メインCPU監視など様々な機能を実施することができる。また、MFP10は、図1に示したようにネットワーク通信部124を備えている。そこで、ネットワーク通信部124を介して外部装置300からサブCPU200が実行するプログラムを送信して不揮発性メモリー122に記憶させておくようにしてもよい。これにより、サブCPU用プログラムのバリエーションを増やすことができる。
図2の状態は、通常モードの状態を示している。すなわちメインCPU100が起動している状態である。この状態では、サブCPU200に実行させるプログラムとして(図示していないがサブCPU用RAM221に記憶されているプログラムのことである。以下同様)、プログラムC:リング検知+電源制御プログラムが記憶されている。したがって、サブCPU200はリング検知プログラムにより着信監視を行い、電源制御プログラムにより操作監視を行っている。
この状態から設定変更が行われたとする。変更内容は、ナンバーディスプレイ表示有り(V.23検知)で電源制御に設定変更されたものとする。この設定変更を起因として、サブCPU200に実行させるプログラムを、プログラムCからプログラムD:V.23検知+電源制御プログラムに書き換えるのである。図3はこの設定変更によりサブCPU200に実行させるプログラムが書き換えられた後の状態を示している。
この図3の状態から、一定時間経過すると、図4に示すように、サブCPU200は実行しているプログラムDの電源制御機能によって、電源制御部123へメインCPU100側への電源供給を切るように指令する。これにより省エネモードに入ることになる。すなわちメインCPU100が省エネモードとなった状態である。ここでの省エネモードに入る動作はメインCPU通信部230−サブCPU通信部130を経由してメインCPU100へその指令を伝達する。この指令を受けたメインCPU100は省エネモードに入る前に必要な処理、たとえばメインCPU用RAM121に一時記憶されているデータを不揮発性メモリーへ退避させるなどの処理を行う。また、本実施形態では省エネモードに入る前にサブCPU用プログラムの書き換えも行っている(詳細後述)。
省エネモードに入る前の処理が終了したなら、メインCPU100は電源制御部123へ省エネモードに入るように指令して各部への電源供給が停止される。
この省エネモードの状態で、サブCPU200がメインCPU100に代わって着信操作監視(カー(CAR)とナンバーディスプレイ番号(V.23)検知、および操作監視)を行うことになる。なお、この着信監視をさせる際には、さらに着信拒否プログラムを一緒に動作させることも可能である。着信拒否番号はメインCPU100が管理しており、不揮発性メモリー122に記憶されている。したがって、着信拒否を行う場合には、着信拒否番号をメインCPU100からサブCPU200へ送信して一時的にサブCPU200で使用できるようにする。この着信拒否番号のようにサブCPU200で一時的に使用する情報を付随情報という。付随情報は省エネモード中に実行するプログラムとともにサブCPU200へ送信することになる。付随情報はサブCPU用RAM221に書き込まれる。
着信拒否を行う場合、着信監視中に着信拒否番号からの着信があればサブCPU200がそれを検知して着信拒否を行うことになる。なお、サブCPU200に実行させることができる機能は、サブCPU用RAM221の容量によって異なる。つまりサブCPU用RAM221の容量が許せば、複数の機能をサブCPU200に実行させるための複数のプログラムまたは複数の機能を実行させる1つのプログラムを記憶させることができる。
続いて、省エネモードにおいて、着信があれば、図5に示すように、サブCPU200は実行しているプログラムDの電源制御機能によって、直接、電源制御部123へ、メインCPU100側への電源供給を再開するように指令する。これにより通常モードに復帰することになる。
そして、サブCPU200は、回線から取得したナンバーディスプレイ番号をメインCPU100へ伝達する。メインCPU100ではナンバーディスプレイ番号を表示する。そして、メインCPU100では起動とともに、すなわち、メインCPU100の状態が停止中から起動中へ変化したことを起因として、サブCPU200が実行するプログラムをプログラムA:復号化プログラムに書き換える。メインCPU100では、モデム116を介して受信したファクシミリデータをサブCPU200で復号処理させる。復号化したデータは、メインCPU100へ送り返されることになり、受信したファクシミリデータの画像形成が行われることになる。
このように、動作例1では、サブCPU200に対して、省エネモードのときにはファクシミリの着信監視を行わせ、着信によりメインCPU100を通常モードに復帰させたのちは、復号処理を行わせることができる。
次に、動作例2として、1300Hz検知無鳴動着信有り、および電源制御に設定変更された後の省エネモード中に、着信信号の検知によるファクシミリ受信ではなく、操作者によりファクシミリ送信を行う場合を説明する。図6〜9は、動作例2を説明するための説明図である。図においては、すでに説明したMFP10の構成のうちこの動作例2にかかわる部分のみを示し、そのほかの部分は省略している。
動作例1同様に、図6に示すようにメインCPU100が直接アクセスする不揮発性メモリー122には、たとえばプログラムA:復号化プログラム、プログラムB:符号化プログラム、プログラムC:リング(Ring)検知+電源制御プログラム、プログラムD:V.23検知+電源制御プログラム、プログラムE:1300Hzトーン検知+電源制御プログラムが記憶されている。もちろんこの動作例2においても、そのほかに様々なプログラムが記憶されていてもよい。
図6の状態は、通常モードの状態を示している。この状態では、サブCPU200に実行させるプログラムとして(図示していないがサブCPU用RAM221に記憶されているプログラムのことである。以下同様)、プログラムC:リング検知+電源制御プログラムが記憶されている(動作例1と同じである)。
この状態から設定変更が行われたとする。変更内容は、1300Hz無鳴動着信有り、および電源制御に設定変更されたものとする。この設定変更を起因として、サブCPU200に実行させるプログラムを、プログラムCからプログラムE:1300Hzトーン検知+電源制御プログラムに書き換えるのである。図7はこの設定変更によりサブCPU200に実行させるプログラムが書き換えられた後の状態を示している。
この図7の状態から、一定時間経過すると、図8に示すように、サブCPU200は実行しているプログラムEの電源制御機能によって、電源制御部123へメインCPU100側への電源供給を切るように指令する。これにより省エネモードに入ることになる(実際の動作は、動作例1の図4の説明と同様に、メインCPU通信部230−サブCPU通信部130を経由してメインCPU100へその指令を伝達すると、メインCPU100が必要な処理を行った後、電源制御部123へメインCPU100側の電源供給を切るように指令して、各部への電力供給が停止され、省エネモードとなる)。
この省エネモードの状態で、サブCPU200がメインCPU100に代わって着信操作監視(1300Hzトーン検知+操作監視)を行うことになる。
続いて、省エネモードにおいて、操作部113からの入力があれば、図9に示すように、サブCPU200は実行しているプログラムEの電源制御機能によって、電源制御部123へメインCPU100側への電源供給を再開するように指令する。これにより通常モードに復帰することになる。
そして、メインCPU100では起動とともに、すなわち、メインCPU100の状態が停止中から起動中へ変化したことを起因として、サブCPU200が実行するプログラムをプログラムB:符号化プログラムに書き換える。メインCPU100では入力されたファクシミリデータをサブCPU200で符号処理させる。符号化したデータは、メインCPU100へ送り返されることになり、ファクシミリデータとしてモデム116を介して外部へ送信されることになる。
このように、動作例2では、サブCPU200に対して、省エネモードのときにはファクシミリの着信監視とともに操作部113の操作監視を行わせ、操作部113からの入力によりメインCPU100を通常モードに復帰させたのちは、サブCPU用プログラムを書き換えて符号処理を行わせることができる。
次に、サブCPU200へのプログラム書き換えの処理手順を説明する。ここでは、動作例1および2の動作を行うための処理手順を説明する。
図10は、メインCPU100が実行するプログラム書き換え処理全体の処理手順を示すフローチャートである。
まず、メインCPU100は、起動時(電源投入時および省エネモードからの復帰時を含む)にサブCPU200へのプログラムが送信済みか否かを判断する(S101)。送信済みか否かは、後述するS105によって行われた送信済みフラグを確認することにより行う。
ここでサブCPU200へのプログラムが送信済みであれば、S108へ処理を進ませることになる(S101:YES)。一方、サブCPU200へのプログラムが送信済みでなければ(S101:NO)、メインCPU100は、復帰要因が着信か否かを判断する(S102)。復帰要因における着信は、復帰前にサブCPU200に実行させていたプログラムによって異なり、リング検知、1300Hzトーン検知、V.23検知などである。
復帰要因が着信の場合(S102:YES)、メインCPU100は、サブCPU200に実行させるための送信プログラムとして復号化処理を行うプログラムAを選択する(S103)。この着信復帰時に選択されるプログラムがなんであるかは、ユーザーによってあらかじめ決められたものであり、不揮発性メモリー122に記憶されている。ここでは装置状態として着信復帰、送信プログラムとして復号化プログラムがセットになってあらかじめ設定されているものとする。設定内容はユーザーによって任意に変更可能である。設定内容は、MFP10の電源を落としても記憶されているように不揮発性メモリー122に記憶する。
続いてメインCPU100は、サブCPU200へ選択したプログラムを送信する(S104)。このプログラムの送信は、サブCPU200との間で同期をとりながらの送信となる。この送信の処理手順については後述する。
続いてメインCPU100は、送信済みフラグを立てる(S105)。送信済みフラグは不揮発性メモリー122に記憶することになる。なぜならMFP10の電源を落としても、そのフラグの状態が記憶されているようにするためである。これによりS101において起動時に送信済みフラグの状態を読み出すことができる。
S102において、復帰要因が着信でなければ、続いてメインCPU100は、着信要因が操作復帰か否かを判断する(S106)。そしてメインCPU100は、送信プログラムとして符号化処理を行うプログラムであるプログラムBを選択する(S107)。その後メインCPU100は処理をS104へ進ませる。操作復帰時に選択されるプログラムがなんであるかは、ユーザーによってあらかじめ決められたものであり、不揮発性メモリー122に記憶されている。ここでは装置状態として操作復帰、送信プログラムとして符号化プログラムがセットになって記憶されている。
続いてS108において、メインCPU100は、着信変更ありか否かを判断する(S108)。着信変更とは、着信モードの設定変更のことで、サブCPU200側はこの設定に従い該当する機能を実現させるためのプログラムに書き換えることになる。この設定も、あらかじめ設定されていて不揮発性メモリー122に記憶されている。もちろんユーザーが任意に設定可能である。
着信変更がなければ(S108:NO)、S111へ進む。
一方、着信変更が設定されていたなら(S108:YES)、メインCPU100はその変更内容が通常か(S109)、ナンバーディスプレイか(S121)、1300Hz無鳴動着信か(S131)を、それぞれ判断する。
通常であれば(S109:YES)、送信プログラムとして、プログラムC:リング(Ring)検知+電源制御プログラムを選択する。通常でなければ(S109:NO)、S121へ進む。
ナンバーディスプレイであれば(S121:YES)、送信プログラムとして、プログラムD:V.23検知+電源制御プログラムを選択する。ナンバーディスプレイでなければ(S121:NO)、S131へ進む。
1300Hz無鳴動着信であれば(S131:YES)、送信プログラムとして、プログラムE:1300Hzトーン検知+電源制御プログラムを選択する。1300Hz無鳴動着信でなければ(S131:NO)、着信変更はないことになるので、S111へ進む。
続いて、メインCPU100は、省エネモードへ入る時間が経過したか否かを判断する(S111)。ここで、何らかの入力がない時間が、あらかじめ決められた省エネモードへ入る時間を経過している場合(S111:YES)、サブCPU200へ選択されたプログラムを送信する(S112)。続いて、メインCPU100は、省エネモードへ移行するために電源制御部123に対してメインCPU100側への電力供給を停止するように指令する(S113)。その後この手順を終了してから省エネモードに入る。
一方、S111において、省エネモードへ入る時間が経過していなければ、S108へ戻り、以降の処理を継続することになる。したがって、省エネモードに入るまでは着信変更(設定変更)の受付状態になっているということである。
次に、S104およびS112のサブCPU用プログラムを送信する処理手順を説明する。図11は、サブCPU用プログラムを送信する処理手順を示すサブルーチンフローチャートである。ここでは、メインCPU100とサブCPU200が同期をとってサブCPU用RAM221のプログラムを書き換えることになる。このため図11では、メインCPU100とサブCPU200の両方の処理手順を示した(図11中の破線矢印は、メインCPU100とサブCPU200間の処理タイミングの関係を示す)。
まず、メインCPU100は、この段階(S200)に来た時点で、これから送信するプログラムとすでにサブCPU200へ送信済みのプログラムとを照合する(S200)。これには、後述S205で記憶したプログラム名称やIDで確認する。送信しようとしているプログラムが送信済みプログラムと同じであれば、そのままメインルーチンS104またはS112へリターンする(この処理手順に入る前のステップへ戻る)。このS200のステップによって同じものを送信してしまう時間の無駄を省くことができる。ただし、このS200のステップはなくてもよい。なぜなら、同じプログラムを送信して書き換えても動作に支障はないからである。
S200の照合の結果、これから送信するプログラムと既に送信済みのプログラムが異なる場合は、続いてメインCPU100はサブCPU200へプログラム書き換えコマンドを送信する(S201)。メインCPU100では、書き換えコマンドの送信後、書き換え準備OKを受信するまで待機する(S202)。
サブCPU200では、プログラム書き換えコマンドを受信したか否かを判断する(S301)。受信しなければ(S301:NO)、受信待機となる。サブCPU200は、プログラム書き換えコマンドを受信したなら(S301:YES)、プログラム書き換えモードに変更する(S302)。プログラム書き換えモードとはサブCPU用RAM221内の自身が動作するプログラムを書き換える動作である。
続いて、サブCPU200はプログラム書き換えの準備が整ったなら準備OKをメインCPU100へ送信する(S303)。このプログラム書き換えの準備は、たとえば、この段階で送信されてくるプログラムをすぐに記憶できるようにする処理である(この処理にサブCPU用RAM221内のプログラムの消去処理を含めても構わない)。サブCPU200はプログラム書き換え準備OKを送信後、メインCPU100から送信されてくるプログラム等の待機状態となる(S304)。
メインCPU100では、書き換え準備OKを受信したなら(S202:YES)、サブCPU200に実行させるプログラム、そのプログラムのチェックサム、これらの送信後、送信完了を示す完了信号を順次送信する(S203)。プログラム等の送信後メインCPU100では、サブCPU200から書き換え結果を受信するまで待機する(S204)。
サブCPU200は、メインCPU100からプログラム、そのプログラムのチェックサム、完了信号を受信したなら(S304:YES)、それらを記憶して、記憶したプログラムのチェックサムを計算し、送信されてきたチェックサムと照合する(S305)。
続いて、サブCPU200は、チェックサムの照合結果がOKならば(S306:YES)、書き換えOKをメインCPU100へ送信し(S307)、(特に図示しないが)サブCPU用RAM221内の旧プログラムを消去後、リブート後に実行できるよう、受信したプログラムに書き換える。その後サブCPU200は自身をリブートして(S309)、サブCPU200の処理は終了する。リブートによって、サブCPU200はS305で記憶したプログラムによって動作するようになる。
一方、チェックサムの照合結果が合わない場合(S306:NO)、書き換えNGをメインCPU100へ送信する(S308)。その後サブCPU200は処理を終了する。
この場合はサブCPU用RAM221内の旧プログラムは消去しないため、書き換え前のプログラムが残ることになる。
サブCPU200から書き換え結果を受信したメインCPU100では(S204:YES)、受信した結果に応じてサブCPU200のプログラムがなんであるかを記憶する(S205)。サブCPU200から書き換え結果はOKなら、この時点でサブCPU200に実行させるプログラムはS203で送信したプログラム(すなわち(S103、S107、S110、S122、S132のいずれかで選択されたプログラム)である。したがって、S205ではサブCPU200に実行させるプログラムとして、送信したプログラムの名称やプログラムIDなどを記憶しておくことになる。
書き換え結果に応じたプログラム名称やID、またはプログラムが書き込まれていないことなどは不揮発性メモリー122に記憶する。したがって、不揮発性メモリー122は送信したプログラムの名称やプログラムIDなどを記憶した書き換え済みプログラム記憶部となる。
なお、書き換え結果がNGであった場合、再度、S201戻り、プログラムの書き換えを実行するようにしてもよい。この場合、リトライの回数を決めておくなどして数回の書き換え処理でも不可能となった場合に書き換え結果をNGとする。
S205の処理後、メインCPU100は処理をメインルーチンのS104またはS112へリターンする(この処理手順に入る前のステップへ戻る)。
以上により、サブCPU200へのプログラムの書き換えが終了する。
以上説明した処理手順によって、すでに説明した動作例1および2のように、メインCPU100の状態変化や設定変更に応じて、サブCPU200に様々な処理を実行させることができる。
次に、サブCPU200に様々なプログラムについての処理手順の例を説明する。
サブCPU200が実行する復号化の処理手順について説明する。この処理はメインCPU100が起動しているときにサブCPU200に実行させる。図12は、サブCPU200が実行する復号化の処理手順を示すフローチャートである。
サブCPU200は、モデム116からコーデック種類、受信データをバッファサイズ単位で受信する(S501)。
続いて、サブCPU200は、伝えられたコーデック方法で復号化し、ライン単位でメインCPU100へ送信する(S502)。
続いて、サブCPU200は、最終データか否かを判断して最終データとなるまでS501へ戻り復号化を行う(S503:NO)。最終データの復号が終了したなら(S503:YES)、全データをメインCPU100へ送信する(S504)。その後処理を終了する。なお、S504の全データとは、S502でライン単位で送信しているので、この時点で未送信のデータすべてを送信するということである。
サブCPU200が実行する符号化の処理手順について説明する。この処理はメインCPU100が起動しているときにサブCPU200に実行させる。図13は、サブCPU200が実行する符号化の処理手順を示すフローチャートである。
サブCPU200は、メインCPU100からコーデック種類、送信データをバッファサイズ単位で受信する(S601)。
続いて、サブCPU200は、伝えられたコーデック方法で符号化し、バッファ単位でメインCPU100へ送信する(S602)。
続いて、サブCPU200は、最終データの指定があるか否かを判断して最終データの指定があるまでS601へ戻り符号化を行う(S603:NO)。最終データの指定があれば符号化が終了するので(S603:YES)、全データをメインCPU100へ送信する(S604)。その後処理を終了する。なお、S604の全データとは、S602でバッファサイズ単位で送信しているので、この時点で未送信のデータすべてを送信するということである。
サブCPU200が実行する画像縮小の処理手順について説明する。この処理はメインCPU100が起動しているときにサブCPU200に実行させる。図14は、サブCPU200が実行する画像縮小の処理手順を示すフローチャートである。
サブCPU200は、メインCPU100から縮小前画像データをバッファサイズ単位で受信する(S701)。
続いて、サブCPU200は、伝えられたサイズ、解像度で主走査方向に縮小、副走査方向にライン間引きを実施して、バッファサイズ単位でメインCPU100へ送信する(S702)。
続いて、サブCPU200は、最終データの指定があるか否かを判断して最終データの指定があるまでS701へ戻り画像縮小を行う(S703:NO)。最終データの指定があれば画像縮小が終了するので(S703:YES)、縮小した全データをメインCPU100へ送信する(S704)。なお、S704の全データとは、S702でバッファサイズ単位で送信しているので、この時点で未送信のデータすべてを送信するということである。
サブCPU200が実行する回線電圧モニターの処理手順について説明する。この処理はメインCPU100が起動しているときであって、ファクシミリの送受信時にサブCPU200に実行させる。図15は、サブCPU200が実行する回線電圧モニターの処理手順を示すフローチャートである。回線電圧モニターとは、ファクシミリの送受信を行う回線のエラー検知などを行うための処理である。
サブCPU200は、信号検知部240を介して通信回線捕捉中の回線電圧をモニターする(S801)。
続いて、サブCPU200は、モニター中に、その時間とモニター結果である測定値(回線電圧値)を記録する(S802)。
続いて、サブCPU200は、通信完了後、メインCPU100へ測定結果を送信する(S803)。その後処理を終了する。
サブCPU200が実行する通信時間測定の処理手順について説明する。この処理はメインCPU100が起動しているときであって、ファクシミリの送受信時にサブCPU200に実行させる。図16は、サブCPU200が実行する通信時間測定の処理手順を示すフローチャートである。通信時間測定とは、ファクシミリの送受信の際の通信時間を測定する処理である。
サブCPU200は、信号検知部240を介して回線電圧の測定(回線捕捉、解放)によって通信時間を測定する(S901)。回線電圧が所定値以上(または以下)で通信中であることを判断する。
続いて、サブCPU200は、モニター中に、その時間とモニター結果である測定値(通信時間)を記録する(S902)。
続いて、サブCPU200は、通信完了後、メインCPU100へ測定結果を送信する(S903)。その後処理を終了する。
サブCPU200が実行するメインCPU監視の処理手順について説明する。この処理はメインCPU100が起動しているときにメインCPU100のエラーを検出する処理である。図17は、サブCPU200が実行するメインCPU監視の処理手順を示すフローチャートである。
サブCPU200は、定期的にメインCPU100に信号を送出し、それに対する応答をモニターする(S1001)。
続いて、サブCPU200は、応答がない場合、管理者PCへ定型文を送信し通知する(S1002)。ここで管理者PCとは、あらかじめ決められたPCなどのことである。なお、この通知に代えて、たとえば、MFP10の表示部112に故障発生などを表示させてもよい。ただし、この場合、MFP10の表示部112やネットワーク通信部124に対して、故障発生など特別な場合にのみ、メインCPU100からの制御を離れて表示やネットワーク通信が行われるようにしておく必要がある。たとえば、メインCPU100とサブCPU200が同じバスによって直接接続されている形態では、故障したメインCPU100に代わり、サブCPU200がバスによって接続されている表示部やネットワーク通信部を介して警告表示や警告メッセージを送るようにしてもよい。
サブCPU200が実行するリング検知+電源制御の処理手順について説明する。この処理はメインCPU100が省エネモードのときにサブCPU200が実行する処理である。図18は、サブCPU200が実行するリング検知+電源制御の処理手順を示すフローチャートである。
サブCPU200は、信号検知部240を介して回線電圧と到来信号のケイデンス(Cadence)をモニターし、リング信号かを判断する(S1101)。
続いて、サブCPU200は、所定回数検出したならメインCPU100を起動(メインCPU100側への電力供給)する(S1102)。その後処理を終了する。
サブCPU200が実行する1300Hzトーン検知+電源制御の処理手順について説明する。この処理はメインCPU100が省エネモードのときにサブCPU200が実行する処理である。図19は、サブCPU200が実行する1300Hzトーン検知+電源制御の処理手順を示すフローチャートである。
サブCPU200は、信号検知部240を介して回線上のトーン信号をモニターして、1300Hz信号かどうか判断する(S1201)。
続いて、サブCPU200は、1300Hz信号が所定フォーマットであれば、メインCPU100を起動(メインCPU100側への電力供給)する(S1202)。その後処理を終了する。
サブCPU200が実行するV.23検知(ナンバーディスプレイへの対応)+電源制御の処理手順について説明する。この処理はメインCPU100が省エネモードのときにサブCPU200が実行する処理である。図20は、サブCPU200が実行するV.23検知+電源制御の処理手順を示すフローチャートである。
サブCPU200は、信号検知部240を介して回線電圧と到来信号のケイデンスをモニターしてカー信号かどうかを判断する(S1301)。
続いて、サブCPU200は、カー検出時には一次応答して、交換機からV.23信号を受信する(S1302)。
続いて、サブCPU200は、V.23受信内容を記憶、受信完了後回線を開放する(S1303)。
続いて、サブCPU200は、回線電圧と到来信号のケイデンスをモニターしてリング信号かどうかを判断する(S1304)。
続いて、サブCPU200は、所定回数検出したならメインCPU100を起動(メインCPU100側への電力供給)する(S1305)。
続いて、サブCPU200は、メインCPU100へ受信信号(ナンバーディスプレイ番号)を通知する(S1306)。その後処理を終了する。
以上説明した実施形態によれば、以下のような効果を奏する。
サブCPU200に実行させるプログラムを複数、メインCPU100が管理している不揮発性メモリー122に記憶しておき、メインCPU100の状態変化や設定変更に応じてサブCPU200に実行させるプログラムを適切なものに書き換えることとした。これにより、ハードウェア資源の変更とは無関係にサブCPU200の処理能力を有効活用できるようになる。特にサブCPU200が管理するRAM221などの記憶装置の容量が少ない場合に有効である。たとえば、サブCPU200が、電源制御のみ行っているような場合、その記憶装置の容量が少ない。本実施形態では、そのような記憶容量の少ない場合でも、それに見合った大きさのプログラムを用意しておいて、状態変化や設定変更に応じてプログラムを入れ換えることで、有効にサブCPU200を働かせることができる。
また、本実施形態では、ファクシミリの通信中は、画像縮小、符号化、および復号化など、ファクシミリに直接かかわる処理を実行するように書き換えることで、サブCPU200にファクシミリ機能の一部を担わせることができる。これによりその間メインCPUでは、サブCPU200では実行できない画像処理や画像形成のためのラスタライズなどを行うことができる。
また、本実施形態では、サブCPU200に、回線電圧、電源電圧の監視や、メインCPU100の監視など、ファクシミリ通信に直接かかわらない処理に書き換え、実行させてもよい。この場合もメインCPU100では、MFP10としてサブCPU200では実行できない画像処理や画像形成のためのラスタライズなどを行うことができる。
また、本実施形態では、省エネモードの場合の信号監視をサブCPU200に実施させる場合は、設定に応じて、通信回線上監視する信号に合わせたプログラムに書き換えることとした。具体的には、ナンバーディスプレイが有効の場合はV.23の復調機能とメインCPU100の電源制御を行わせる。また無鳴動着信設定が有効の場合は1300Hzトーンの復調機能とメインCPU100の電源制御を行わせる。どちらも機能OFFの場合は通常モードとしてリング検知とメインCPU100の電源制御を行わせる。このように様々な設定を行ってユーザーの要望に合わせた省エネモードを実現できる。さらにナンバーディスプレイが有効の場合は、着信を拒否する番号(付随情報)を同時にサブCPU200に渡すことで不要な着信を抑えることができる。このようにサブCPU200側だけで着信拒否も行い得るので、より省エネルギー効果を高めることができる。
以上実施形態を説明したが、本発明はこれら実施形態に限定されるものではない。特に、図10および11を用いてサブCPU200のプログラムの書き換えを説明したが、この説明にない様々なプログラムをサブCPU200で実行させることができる。その場合も、書き換えるプログラムが変更させるだけであって、書き換えの処理手順は同様である。
また、実施形態では、サブCPU用RAM221はサブCPU200専用のものであり、サブCPU200がプログラムの書き換えを行うこととした。しかしこれに代えて、メインCPU100から直接サブCPU用RAM221へアクセスできるようにして、メインCPU100によってサブCPU200が実行するプログラムを直接書き換えるようにしてもよい。
そのほか、本発明は、特許請求の範囲に記載された内容によって規定されるものであり、様々な変形形態が可能である。