(58)【調査した分野】(Int.Cl.,DB名)
前記第3判定手段は、前記検証対象部品の所定の制御パラメータの値に基づき前記検証対象部品の状態を分類した状態種別と、前記検証対象部品の動作に影響を与える外乱の種別である外乱種別との関係を保持し、前記第1判定手段から通知される状態種別と、前記第2判定手段から通知される外乱種別と、前記保持する関係に基づき前記検証対象部品に動作不良の可能性があるかを判定することを特徴とする請求項1に記載の検証装置。
前記検証対象部品の所定の制御パラメータは、モータの加速度、モータの電流値及びモータの励磁パターンの少なくとも1つを含むことを特徴とする請求項3に記載の検証装置。
前記第3判定手段は、前記検証対象部品に動作不良の可能性があることを前記検証装置のユーザに通知することを特徴とする請求項1から6のいずれか1項に記載の検証装置。
【発明を実施するための形態】
【0009】
以下、本発明の例示的な実施形態について図面を参照して説明する。なお、以下の各図においては、実施形態の説明に必要ではない構成要素については図から省略する。
【0010】
<第一実施形態>
本実施形態による検証装置は、コンピュータシステム上でプログラムを実行することで実現でき、そのハードウェア構成を
図2に示す。
図2の本体部202のハードディスク202cには、検証装置の各機能を実現するためのプログラムや、制御対象装置に関する情報を含む各種データや、検証対象の制御ソフトウエアが格納される。中央処理部202aは、プログラム及び各種データを主記憶部202bにロードして実行し、これによりコンピュータシステム201は検証装置として動作する。なお、表示装置203は、本体部202からの指示により画面表示を行う。また、キーボード204は、このコンピュータシステム201にユーザの指示や文字情報を入力するためのものである。さらに、マウス205は、表示装置203上の任意の位置を指定することによりその位置に表示されていたアイコン等に応じた指示を入力するためのものである。
【0011】
図1は、本実施形態による制御ソフトウエアの検証のための検証装置の構成図である。なお、以下では、制御ソフトウエアの制御対象装置が画像形成装置であり、検証対象部品が二相ステッピングモータであるものとして説明を行うが、検証対象部品は、他の種別のモータであっても良い。さらに、制御対象装置は、画像形成装置以外の装置であっても良い。本実施形態による検証装置は、シミュレータ部101と、可能性検出部102を備えている。なお、シミュレータ部101は、所定期間を1単位時間とし、1単位時間毎にシミュレーション処理を行う同期方式を取る。以下の説明において、時間又は時刻とは、このシミュレーションにおける時間又は時刻を指すものとして使用する。
【0012】
シミュレータ部101の制御部シミュレータ301は、制御対象装置の制御部の動作を模擬する。つまり、制御部シミュレータ301は、制御対象装置の制御部が実行する制御ソフトウエアを実行し、制御対象装置のセンサ等が出力する制御対象装置の動作状態を示す信号を受け取り、制御対象装置の各部品に制御信号を出力する。なお、制御部シミュレータ301は、制御信号をシミュレータハブ(以下、HUBと記す。)302に出力する。また、制御部シミュレータ301は、制御信号を変化させる際には、そのときの時刻もHUB302に通知する。
【0013】
装置シミュレータ303は、制御ソフトウエアの制御対象装置、本例では、画像形成装置の各部品の動作を模擬する。装置シミュレータ303は、制御対象装置の各部品に対する制御信号と、各部品が出力する出力信号を管理する。具体的には、装置シミュレータ303は、制御対象装置の各部品に部品識別子(以下、部品IDと称する。)を割り当て、部品IDと当該部品の制御信号又は出力信号とを関連付けて管理する。
図3に、部品IDがSTPMであるステッピングモータについての制御信号の例を示す。なお、
図3の表の信号1〜4は、シミュレータ部101の各部の結線信号の識別子(以下、信号IDと称する)であり、HUB302が管理する。
【0014】
装置シミュレータ303は、各部品の出力信号の値の変化を、その時間と共にHUB302に通知する。また、装置シミュレータ303の事象判定部304は、外乱検出部107から、外乱検出部107にその発生や終了を通知する事象を事象情報通知で受け取り、事象情報通知で受け取った事象を事象情報305として保持している。そして、事象判定部304は、制御対象装置の模擬動作の結果、事象情報305が示す事象が発生したり終了したりすると、当該事象の発生や終了を状態通知で外乱検出部107に通知する。なお、事象情報305は、事象管理番号で識別される。具体的には、装置シミュレータ303は、ある時点でのHUB302からの制御信号や制御対象装置の各部品の特性等から1単位時間後の装置状態を解析する。事象判定部304は、1単位時間分の動作シミュレーション毎に、事象情報305に示される事象が発生しているか否かを判定する。判定結果が、1単位時間前の判定結果と異なる場合は、外乱検出部107に事象状態の更新を通知する。この事象通知は、事象管理番号と、事象の発生又は終了を示す値と、その時刻を含む。
【0015】
また、装置シミュレータ303は、HUB302及び可能性検出部102と、本実施形態の検証対象部品であるモータの情報を共有するために、シミュレーション開始前までに、モータ情報306を外部へ出力する。モータ情報306は、検証対象のモータの部品IDと、モータの制御信号の信号IDを含む。HUB302と可能性検出部102は、モータ情報306を読み込むことで、シミュレーション開始時に、検証対象のモータについての情報を取得する。
【0016】
HUB302は、制御部シミュレータ301と装置シミュレータ303の時刻同期処理と、信号結線処理と、信号の伝達処理を行う。さらに、HUB302は、可能性検出部102との連携処理を行い、可能性検出部102に検証対象のモータに対する制御信号の変化を通知する。
【0017】
制御部シミュレータ301と装置シミュレータ303の時刻同期について、簡単に説明する。HUB302は、まず、制御部シミュレータ301及び装置シミュレータ303に所定時間分(1単位時間分)のシミュレーション実行を指示する。指示を受けた各シミュレータは、所定時間分のシミュレーション処理を実行し、シミュレーション処理を終えると、HUB302にシミュレーション処理終了を通知する。
【0018】
HUB302は、信号結線および信号情報伝達処理のために信号管理情報307を有している。信号管理情報307は、信号IDと、信号サイズ(信号線が何ビット長であるかを示す情報)と、信号出力元のシミュレータと、信号入力先のシミュレータと、の4つの項目を含む。また、HUB302は、検証対象のモータに対する制御信号の変化を脆弱検出部103に通知するために、変化通知部308を有している。変化通知部308は、モータ情報306を読み込み、モータの部品ID毎に制御信号の信号IDを格納している。変化通知部308は、制御部シミュレータ301が出力する検証対象のモータの制御信号が変化すると、脆弱検出部103へ制御信号の変化を通知する。この通知は、制御信号の信号IDと、信号値と、変化の時間を含んでいる。
【0019】
図4は、モータの制御信号の変化を脆弱検出部103に通知するためのHUB302における処理のフローチャートである。HUB302は、S10で、制御部シミュレータ301が出力する制御信号と、装置シミュレータ303が出力する出力信号が変化するまで待機する。信号が変化すると、HUB302は、S11で、信号の変化を制御部シミュレータ301又は装置シミュレータ303に伝達する。その後、HUB302は、S12において、変化した信号が制御部シミュレータ301からの、検証対象部品であるモータの制御信号であるかを判定する。なお、この判定は、シミュレーション開始前に読み込んだモータ情報306により行う。変化した信号が検証対象部品であるモータの制御信号ではない場合、HUB302は、S10からの処理を繰り返す。一方、変化した信号が検証対象部品であるモータの制御信号であると、HUB302は、S13で、脆弱検出部103にモータの制御信号の変化を通知し、S10からの処理を繰り返す。
【0020】
次に、シミュレーション開始時のシミュレータ部101と可能性検出部102との連携に関してHUB302が行う処理について説明する。HUB302は、シミュレーション開始時に、可能性検出部102へシミュレーション開始予告通知を出力する。可能性検出部102は、動作不良検出の前準備終了後、HUB302に対して準備終了通知を行う。HUB302は、可能性検出部102からの準備終了通知が行われるまで待機し、準備終了通知受信後、各シミュレータにシミュレーションの実行開始を指示する。
【0021】
続いて、可能性検出部102について説明する。可能性検出部102の脆弱検出部103は、モータが外乱に対して脆弱な状態(モータの動作が不良となる可能性が有る状態)となっているかを検出する。また、外乱検出部107は、モータに対する外乱が発生しているか否かを検出する。さらに、判定部110は、脆弱状態と外乱状態から動作不良の可能性の有無を判定する。
【0022】
可能性検出部102は、HUB302からのシミュレーション開始予告通知を受け取ると、前準備を開始する。前準備において、脆弱検出部103は、モータ情報306を読み込み、モータの制御信号の信号IDを内部に格納する。なお、格納する信号IDは、検証対象となっているモータについての信号IDである。また、外乱検出部107は、後述する外乱要因情報108を事象情報通知として装置シミュレータ303に送信する。以上の前準備が完了すると、可能性検出部102は、HUB302に対して前準備完了通知を行う。
【0023】
脆弱検出部103は、パラメータ抽出部104と脆弱判定部105を備えている。パラメータ抽出部104は、ステッピングモータに関するプログラムの制御要素に着目し、モータの脆弱性に関する制御パラメータを抽出する。ステッピングモータに関するプログラムの制御要素とは、例えば、モータ速度、モータの電流設定値、モータの励磁パターンである。また、脆弱性に関する制御パラメータとは、例えば、モータ速度の変化率(モータ加速度)と、モータ電流値と、モータ励磁パターンである。
【0024】
パラメータ抽出部104は、抽出対象の制御パラメータに関する情報(以降、抽出パラメータ情報113と呼ぶ。)と、制御パラメータの抽出に必要なモータの制御信号を予め保持している。制御パラメータの抽出に必要なモータの制御信号とは、抽出対象の制御パラメータが、モータ加速度である場合は、モータ速度を定めるA相励磁信号とB相励磁信号とすることができる。また、抽出対象の制御パラメータが、モータ電流値である場合は、A相電流設定とB相電流設定とすることができる。
【0025】
図5は、パラメータ抽出部104における処理のフローチャートである。パラメータ抽出部104は、S20で、HUB302からモータの制御信号の変化が通知されるまで待機する。制御信号の変化通知を受け取ると、パラメータ抽出部104は、S21で、抽出パラメータ情報113に基づき、抽出すべき制御パラメータに関する制御信号であるかを判断する。抽出すべき制御パラメータに関する制御信号ではない場合、パラメータ抽出部104は、S20からの処理を繰り返す。一方、抽出すべき制御パラメータに関する制御信号であると、パラメータ抽出部104は、S22で、制御信号から制御パラメータの値を算出し、S23で、脆弱判定部105に更新通知を行う。更新通知は、制御パラメータの値と、その変化時刻を含む。パラメータ抽出部104は、その後、S20からの処理を繰り返す。
【0026】
具体例として、抽出対象の制御パラメータがモータ加速度であり、信号が
図3の通りに定義されている場合を例にして
図5の処理を説明する。なお、モータ加速度に関係する制御信号は、
図3の信号1及び2、つまり、A相及びB相励磁信号である。パラメータ抽出部104は、S20において、モータの制御信号の変化を通知されると、S21において制御信号が、A相励磁信号又はB相励磁信号であるかを判定する。例えば、S20で変化が通知された制御信号が、
図3の信号4、つまり、B相電流設定である場合には、S21の判定は"No"となり、S20に戻る。一方、S20で変化が通知された制御信号が、例えば、A相励磁信号である場合、S21の判定は"Yes"となり、処理はS22に進む。抽出対象の制御パラメータがモータ加速度であることから、パラメータ抽出部104は、S22において、モータの加速度を算出する。パラメータ抽出部104は、まず、励磁信号の変化の時間間隔からモータ速度を求め、これを現時点でのモータ速度とする。そして、現時点でのモータ速度と前回のモータ速度と、その時間間隔からモータ加速度を求める。
【0027】
S23で、パラメータ抽出部104は、モータの加速度の値と、変化時刻と、当該モータの部品IDを脆弱判定部105へ通知する。なお、パラメータ抽出部104は、制御パラメータの抽出時に、ソフトウエア制御上のばらつきに対するフィルタリングを行うことができる。例えば、制御上、モータの加速度の絶対値に0.005以下のばらつきが起こり得る場合、モータの加速度の絶対値が0.005以下の場合は、モータ加速度の値を0として扱うことができる。
【0028】
脆弱判定部105(第1判定部)は、パラメータ抽出部104から通知された制御パラメータ値に基づき、モータが外乱に対して脆弱な状態となっているか判定するための判定基準情報106を有している。脆弱判定部105は、パラメータ抽出部104からの更新通知をトリガとして、脆弱状態の判定を開始し、判定結果(脆弱状態が発生しているか否か)を判定部110に通知する。
【0029】
例えば、モータが加減速中に脆弱状態が発生するとの判定基準であれば、判定基準情報106は、モータ加速度が0でない場合に脆弱状態が発生との基準を示している。また、例えば、加速度又は減速度の絶対値が所定値以上又は以下との判定基準とすることもできる。脆弱判定部105は、脆弱状態であるか否かの判定を行い、前回の判定結果と異なる場合に判定部110に脆弱通知を行う。脆弱通知は、脆弱状態の発生又は終了を示す情報と、その時刻を示す情報を含んでいる。なお時刻は、パラメータ抽出部104からの更新通知に含まれる時刻情報である。
【0030】
次に、外乱検出部107について説明する。外乱検出部107は、外乱要因情報108と外乱判定部109とを備えている。外乱要因情報108は、制御対象装置の動作において、検証対象部品であるモータの動作に影響する要因を示す情報である。
図6に外乱要因情報108の例を示す。なお、外乱要因情報108は、装置シミュレータ303に事象情報として通知され、装置シミュレータ303において事象情報305として管理される。よって、装置シミュレータ303が外乱検出部107に対して行う状態通知とは、外乱要因情報108が示す状態が発生したこと、或いは、終了したことを示す通知である。
【0031】
外乱判定部109(第2判定部)は、装置シミュレータ303から発生を示す状態通知を受け取ると、外乱発生と判定し、終了を示す状態通知を受け取ると、外乱終了と判定し、外乱の発生又は終了を判定部110に通知する。この外乱通知は、外乱の発生又は終了を示す情報と、外乱の発生又は終了の時刻を含んでいる。
【0032】
判定部110(第3判定部)は、脆弱検出部103が通知する脆弱状態と、外乱検出部107が通知する外乱の発生の重なりを検出すると、モータの動作不良の可能性が有ると判定する。
【0033】
図7は、判定部110での判定処理のフローチャートである。判定部110は、S30で、脆弱状態が発生する状態まで待機する。脆弱状態が発生すると、判定部110は、S31で、外乱が発生しているかを判定し、外乱が発生していると動作不良の可能性有と判定してS33で警告を通知する。ここで、警告を通知するとは、検証装置を利用しているユーザに対する画面表示等、当該ユーザに対する任意の出力により行う。S31で、外乱が発生していないと、判定部110は動作不良の可能性は無いと判定し、S32で、脆弱状態が継続しているかを判定する。判定部110は、S32で、脆弱状態が継続していると、S31から処理を繰り返し、脆弱状態が継続していないと、S30から処理を繰り返す。なお、脆弱通知と外乱通知には、発生時刻が含まれているため、判定部110は、S33での警告通知に、動作不良が発生する可能性のある時刻を含めることができる。また、脆弱通知と外乱通知の発生及び終了に関するタイミングチャートを表示することもできる。
【0034】
なお、上記説明では、抽出対象の制御パラメータがモータ加速度である場合を例に挙げたが、抽出対象の制御パラメータがモータ電流値の場合は、
図5のS22においてモータ電流値を求める。具体的には、モータ電流が1ビットの信号A及び信号Bの2つの信号により設定され、2つの信号の値と出力電流の関係が
図8で示されるものとする。パラメータ抽出部104は、HUB302から信号A又は信号Bの値の変化が通知されると、脆弱判定部105に、信号A及び信号Bの値から得られる電流値を含む更新通知を行う。脆弱判定部105は、例えば、モータ電流値が66%以下であると、脆弱状態であると判定できる。
【0035】
また、抽出対象の制御パラメータが励磁パターンである場合、パラメータ抽出部104は、
図5のS22において励磁パターン(2相励磁、1−2相励磁など)を抽出し、抽出パラメータである励磁パターンを脆弱判定部105に通知する。脆弱判定部105は、判定基準情報106に従って、通知される励磁パターンからモータが脆弱状態であるかを判定する。この場合、判定基準情報106は、例えば、2相励磁ではない場合に脆弱状態と判定することを示している。
【0036】
なお、上記実施形態は、二相ステッピングモータを例にして行ったが、他の種別のモータであっても、制御信号の状態と脆弱状態を関連付けて本発明を適用することができる。例えば、モータがDCモータである場合、モータが、停止状態から定常回転速度になるまでの間は、脆弱状態であるとすることができる。さらに、検証対象のモータは、部品IDで区別できるため、同時に検証するモータは1つ以上であっても良い。さらに、検証対象部品は、その状態と、外乱との関係により動作不良の可能性を判定できる任意の部品とすることもできる。
【0037】
以上、制御部シミュレータ301からの制御信号の値に変化がある度に、予め定めた制御パラメータに基づき脆弱状態であるかを判定する。さらに、装置シミュレータ303の模擬動作から、所定の外乱が発生しているかを判定し、脆弱状態であるときに所定の外乱が発生すると、動作不良の可能性有と判定する。この構成により、制御ソフトウエアによるモータの動作不良の可能性の有無を検出することができる。したがって、プログラムの動作検証時に、モータ制御上の問題をユーザに通知することができ、検証効率を向上させることができる。
【0038】
<第二実施形態>
第一実施形態では、脆弱状態であるときに外乱が発生すると動作不良の可能性有と判定していた。しかし、外乱の種別によって、モータの脱調等を招く可能性の度合いは異なり得る。例えば、モータが加減速中との脆弱状態にあるときに、用紙が搬送路の所定位置に突入する外乱が発生してもモータ脱調の可能性は少ないが、当該モータが駆動しているローラに用紙が接するという外乱が発生するとモータ脱調の可能性がある場合である。また、脆弱状態の種別によっては、同じ外乱でも動作不良の可能性は異なる。例えば、モータが加減速中との脆弱状態は、さらに、定格範囲内及び定格範囲外という2つの状態種別に分類できるが、同じ外乱に対するモータ脱調の可能性は、この状態種別により異なる。本実施形態では、外乱種別と、脆弱状態の状態種別との組み合せにより動作不良の可能性有無を検出する。以下、本実施形態について第一実施形態との相違点を中心に説明する。
【0039】
図9は、本実施形態における可能性検出部102の構成図である。第一実施形態の可能性検出部102との相違点は、脆弱検出部103に種別判定部114を設け、外乱検出部107に外乱種別通知部116を設け、判定部110が動作不良条件情報111を保持することである。
【0040】
種別判定情報115は、制御パラメータの値により、脆弱状態を分類したものでありその例を
図10(A)に示す。
図10(A)は、制御パラメータが、モータ電流値の場合であり、モータ電流値により種別A、B、Cの3つの状態種別に分類している。
図9の種別判定部114は、パラメータ抽出部104からの更新通知に含まれる制御パラメータ値と種別判定情報115から脆弱状態の種別を判定する。種別判定部114は、判定した状態種別を判定部110に通知する。この状態種別通知は、状態種別を示す情報と状態種別が変化した時刻を含んでいる。
【0041】
外乱種別通知部116は、外乱の発生又は終了時に、発生又は終了した外乱の種別を判定部110に通知する。例えば、外乱種別は、事象通知に含まれる事象管理番号を使用して特定することができる。外乱種別通知は、外乱種別を示す情報とその変更時刻とを含んでいる。
【0042】
本実施形態において、判定部110は、外乱種別毎に動作不良の可能性を判定する。このため、判定部110は、
図10(B)にその例を示す動作不良条件情報111を保持している。判定部110は、脆弱検出部103からの脆弱通知及び脆弱種別通知により、脆弱状態の有無及びその種別を認識する。さらに、外乱通知及び外乱種別通知により、発生している外乱とその種別を認識する。判定部110は、脆弱状態において外乱が発生した場合、さらに、脆弱状態の状態種別と外乱の種別に基づき動作不良条件情報111を使用して動作不良の可能性を判定する。例えば、動作不良条件情報111が
図10(B)に示すものであり、状態種別Bの脆弱状態が発生しているものとする。この状態において、番号1で示される種別の外乱が発生した場合、
図10(B)の番号1の外乱種別に対応する状態種別には種別Bが記載されていないため、判定部110は、動作不良の可能性は無いと判定する。一方、番号2で示される種別の外乱が発生した場合、
図10(B)の番号2の外乱種別に対応する状態種別には種別Bが記載されているため、判定部110は、動作不良の可能性が有ると判定する。
【0043】
なお、例えば、状態種別によっては、外乱の発生有無に拘らず動作不良の可能性が有ると判定することもできる。例えば、モータの加速度が定格外の異常な加速度であると、脆弱状態の状態種別が"Z"であると定義し、判定部110は、状態種別"Z"の脆弱状態になると、外乱発生の有無に拘らず動作不良の可能性が有ると判定することもできる。
【0044】
以上、脆弱状態の状態種別及び外乱種別に応じて動作不良の可能性を判定することで、判定精度を高めることができ、制御ソフトウエアの動作検証の効率が向上する。
【0045】
<第三実施形態>
モータの加減速時、モータには、モータ自身の慣性モーメント(以下、自己慣性と呼ぶ。)による負荷トルク(以下、自己負荷と呼ぶ。)が発生する。したがって、既に説明した実施形態では、モータ加減速中の外乱発生を、モータの脱調といった動作不良の可能性の判定基準としていた。しかしながら、より判定精度を高めるためには、自己負荷及び外乱の方向と、モータの回転方向との関係を考慮することができる。そこで、本実施形態では、モータ脱調の可能性有無の判定において、モータ自己負荷とモータに対する外乱の方向を考慮する。
【0046】
本実施形態の可能性検出部102の構成は第一実施形態と同様である。本実施形態では、パラメータ抽出部104は、モータの加速度を求め、脆弱判定部105は加速度の正負、つまり、加速しているのか減速しているのかを判定して自己負荷の方向を判定する。具体的には、加速中であると、自己負荷の方向はモータの回転方向とは逆方向である。これは、モータの加速中には、回転速度を上げようとするモータの回転力に対して、一定速度で回転し続けようとする力がモータの回転方向とは逆方向に働くためである。一方、モータの減速中であれば、自己負荷の方向は、モータの回転方向と同方向である。これは、モータ減速中には、回転速度を下げようとするモータの回転力に対して、一定速度で回転し続けようとする力がモータ回転方向と同方向に働くためである。脆弱判定部105は、自己負荷の方向を含む脆弱通知を行う。
【0047】
また、本実施形態において、外乱検出部107は、
図11にその例を示す外乱要因情報108を有している。なお、
図11の外乱方向において、−1は、モータの回転方向と外乱方向が逆向きであることを示し、1は、同じ向きであることを示している。本実施形態において、外乱判定部109は、外乱通知に外乱方向を示す情報を含める。また、判定部110は、脆弱通知で通知される自己負荷の方向と、外乱通知で通知される外乱方向が同じであると、動作不良の可能性有と判定する。
【0048】
以上のように、モータ自身の回転運動により発生する自己負荷と、制御対象装置がモータに与える外乱の方向を考慮し、モータ動作不良可能性の有無を判定する。これにより、モータ動作不良の可能性がない状態、すなわち、制御ソフトウエアに不備がない状態を誤検出する可能性が減り、制御ソフトウエア検証時に適切にモータの動作不良の可能性を検出することができる。
【0049】
[その他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウエア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。