(57)【特許請求の範囲】
【請求項１】
コンピュータからなる制御装置の内部タイマを使用して周期的に発生させる割込信号をきっかけとして実行される割込処理により制御対象を制御するリアルタイム制御方法であって、該割込処理で、制御対象の現在の状態値を検出すると共に、検出した状態値と目標状態値との偏差に基づいて制御対象を制御するための制御信号を演算し出力するものにおいて、
前記内部タイマとは別個のタイマを設けて前回の実際の割込処理開始時点から今回の実際の割込処理開始時点までの経過時間を計測し、該経過時間と割込信号発生周期とに基づいて割込処理の基準開始時点に対する実際の割込処理開始時点の誤差時間を演算し、該誤差時間を前回の割込処理で出力された制御信号に乗じて誤差時間分の状態値の変化量を演算し、前記偏差と該変化量の差をとることにより該偏差を補正し、補正された偏差に基づいて前記制御信号を演算することを特徴とするリアルタイム制御方法。
【請求項２】
前記割込信号発生周期は、各回の実際の割込処理開始時点から求められる前記経過時間の平均値であることを特徴とする請求項１に記載のリアルタイム制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータの内部タイマを使用して周期的に発生させる割込信号をきっかけとして実行する割込処理により制御対象を制御するリアルタイム制御方法に関する。
【０００２】
【従来の技術】
この種のリアルタイム制御では、例えば制御対象の位置制御を行う場合、図９に示すように、一定周期Ｔで発生される割込信号をきっかけとして行う各回の割込処理Ａｎ  において、制御対象の現在の状態値たる現在位置Ｐｎ  を検出してフィードバックし、この現在位置Ｐｎ  と目標位置ＣＰｎ  との偏差ΔＰｎ  （＝Ｐｎ  −ＣＰｎ  ）を求め、次回の割込処理Ａｎ＋１  で検出される位置Ｐｎ＋１  がその時点での目標位置ＣＰｎ＋１  に合致するように、制御対象への指令速度ＣＶｎ  を、基準速度をＶとして、次式
ＣＶｎ  ＝Ｖ−ΔＰｎ  ／Ｔ
で演算し、制御信号としてＣＶｎ  の速度指令信号を出力している。
【０００３】
【発明が解決しようとする課題】
ところで、近年のＣＰＵの演算速度の向上により、この種のリアルタイム制御を、いわゆるパーソナルコンピュータを用いて行うことがある。
【０００４】
ところが、パーソナルコンピュータを用いて上述のリアルタイム制御を行うと、図９のＡ２  の割込処理のように、割込信号発生時点と割込処理の実際の開始時点との間に遅れつまり誤差時間ｔ２  が生ずることがある。遅れの原因には、例えばＣＰＵに加わる負荷の変動など、法則性なく変動するものもあるため、遅れはランダムに発生し、その時間も一定ではない。しかも、コンピュータの内部タイマを使用して発生される割込信号は検出が困難な場合が多く、このような場合は誤差時間ｔ２  を直接測定することは困難である。ここで、各回の割込処理Ａｎ  における目標位置ＣＰｎ  は、割込処理の基準開始時点において制御対象が到達すべき位置として設定されており、上記の如くＡ２  の割込処理で誤差時間ｔ２  が発生すると、Ａ２  の基準開始時点における位置が、Ａ２  における目標位置ＣＰ２  に合致していても、Ａ２  の実際の開始時点で検出される現在位置Ｐ２  は誤差時間ｔ２  の分の移動距離だけＣＰ２  からずれてしまう。その結果、ΔＰ２  ＞０となり、Ａ２  割込処理で出力される速度指令信号ＣＶ２  は基準速度Ｖより低速になる。そのため、Ａ３  の割込処理の開始時点で検出される現在位置Ｐ３  がＡ３  における目標位置ＣＰ３  の手前となり、ΔＰ３  ＜０となって、Ａ３  の割込処理で出力される速度指令信号ＣＶ３  は基準速度Ｖより高速になる。
【０００５】
このように誤差時間によって制御対象の速度が不必要に変動することになり、制御の安定性が損なわれる。
【０００６】
このような問題点に鑑み本発明は、割込信号発生から割込処理開始までの時間がばらつくことがある制御装置によるリアルタイム制御方法において、制御の安定性を向上させることを課題とする。
【０００７】
【課題を解決するための手段】
上記課題を達成するため本発明は、コンピュータからなる制御装置の内部タイマを使用して周期的に発生させる割込信号をきっかけとして実行される割込処理により制御対象を制御するリアルタイム制御方法であって、該割込処理で、制御対象の現在の状態値を検出すると共に、検出した状態値と目標状態値との偏差に基づいて制御対象を制御するための制御信号を演算し出力するものにおいて、前記内部タイマとは別個のタイマを設けて前回の実際の割込処理開始時点から今回の実際の割込処理開始時点までの経過時間を計測し、該経過時間と割込信号発生周期とに基づいて割込処理の基準開始時点に対する実際の割込処理開始時点の誤差時間を演算し、該誤差時間を前回の割込処理で出力された制御信号に乗じて誤差時間分の状態値の変化量を演算し、前記偏差と該変化量の差をとることにより該偏差を補正し、補正された偏差に基づいて前記制御信号を演算する。
【０００８】
割込処理の基準開始時点に対する実際の割込処理開始時点に遅れなどの誤差時間が発生すると、割込処理で検出される現在の状態値の値が誤差時間分の変位量だけずれるため、変位量を検出できなければ、ずれを含む現在の状態値に基づいて制御信号を演算することになり、例えば制御信号が不必要に変動するなど制御が不安定になる。これに対し、本発明によれば、内部タイマとは別個のタイマで前回の割込処理開始時点から今回の割込処理開始時点までの経過時間を計測するので、該経過時間と割込信号発生周期とに基づいて誤差時間を演算できる。そして、該誤差時間を前回の割込処理で出力された制御信号に乗じて誤差時間分の状態値の変化量を演算し、前記偏差と該変化量の差をとることにより該偏差を補正し、補正された偏差に基づいて制御信号の演算に用いる偏差を補正するので、誤差時間が発生して検出した現在の状態値にずれが発生しても、該ずれの影響が制御信号に及ぶことなく、制御の安定性が向上する。
【０００９】
ところで、誤差時間を演算するときに用いる割込信号発生周期として、その設定値を用いれば、実際の割込信号発生周期を計測する手間が不要であり簡便であるが、発生周期の設定値と実際の割込信号発生周期とにずれがあると、ずれが誤差時間に累積されて誤差時間が大きな値になり、変化量も大きな値になって偏差の補正精度が低下し、制御の安定性や信頼性が低下する。そこで、このような場合に、各回の実際の割込処理開始時点から求められる前記経過時間の平均値を、割込信号発生周期として用いれば、実際の割込信号発生周期を計測する手間がいらず簡便であり、しかもずれが誤差時間に累積されることがないので、変化量の演算精度の低下が防止されて、結果的に制御信号の演算精度の低下が防止され、制御の安定性が確保されると共に信頼性が向上する。また、各割込処理毎に実際の割込信号発生周期を用いる場合に比べて、演算処理の負担が少なく有利である。
【００１０】
【発明の実施の形態】
図１及び図２を参照して、１は図示しないロボットの旋回アームを旋回させる制御対象たるサーボモータ（以下、単にモータと記す）であり、制御装置たるパーソナルコンピュータ２から出力されて、サーボアンプ３を介して増幅される速度指令信号ＣＶｎ  などの制御信号により回転される。
【００１１】
パーソナルコンピュータ２は、内部タイマ２ａを使用して周期的に発生させる割込信号をきっかけとして、ハードディスク２ｂ等のメディアメモリからパーソナルコンピュータ２のメモリ２ｃに読み込んだ制御プログラムに従って割込処理を実行し、モータ１をリアルタイム制御する。本実施形態では、割込信号発生周期の設定値は１ｍｓｅｃ（ミリ秒）であり、割込処理で生成された速度指令信号ＣＶｎ  などの制御信号はサーボアンプインターフェース２ｄを介してサーボアンプ３に出力される。割込処理で演算された各種の値や、エンコーダＰＧで検出されるモータ１の状態値たる検出位置Ｐｎ  などのデータは、メモリ２ｃ保存される。尚、２ｅは表示手段たるＣＲＴ４や入力手段たるキーボード５やマウス６等の周辺機器を接続するためのインターフェースである。
【００１２】
割込処理は、図３（ａ）に示すように、モータ１のサーボ処理（ステップ２、以下「ステップ」を「Ｓ」と記すことがある）を行うものであり、サーボ処理が終了すると内部タイマ２ａにサーボ処理の終了が通知（Ｓ３）される。
【００１３】
サーボ処理（Ｓ２）では、図４に示すように、まず前回の速度指令信号ＣＶｎ−１  に基づいて割込信号発生時における目標位置ＣＰｎ  を演算し（Ｓ１１，図６の割込処理Ａ２  ではＣＰ２  ＝２００ｐ）、エンコーダＰＧで検出されたモータ１の検出位置Ｐｎ  を読み込み（Ｓ１２，Ａ２  ではＰ２  ＝２２０ｐ）、両位置ＣＰｎ  ，Ｐｎ  のデータをメモリ２ｃに保存する（Ｓ１３）。続いて、位置ループ処理（Ｓ１４）を実行してサーボアンプ３に出力する速度指令信号ＣＶｎ  を演算する。そして、トルク制御を行わない場合は（Ｓ１５）、速度指令信号ＣＶｎ  だけをサーボアンプインターフェース３ｂを介してサーボアンプ３に出力して（Ｓ１７）、サーボ処理を終了する。他方、トルク制御を行う場合は、速度ループ処理（Ｓ１６）を実行してサーボアンプ３に出力する制御信号たるトルク指令信号ＣＷｎ  を演算し、両指令信号ＣＶｎ  ，ＣＷｎ  をサーボアンプインターフェース３ｂを介してサーボアンプ３に出力して（Ｓ１７）、サーボ処理を終了する。
【００１４】
ところで、位置ループ処理（Ｓ１４）では、従来、図５（ａ）に示すように、前回の速度指令信号ＣＶｎ−１  を目標速度として読み込むと共に（Ｓ２１）、検出位置Ｐｎ  と目標位置ＣＰｎ  との位置偏差ΔＰｎ  を演算し（Ｓ２２）、該位置偏差ΔＰｎ  を割込信号発生時点と割込信号発生周期とから定まる時間区間について微分及び積分し（Ｓ２３）、位置偏差ΔＰｎ  、位置偏差ΔＰｎ  の積分値及び微分値、目標速度ＣＶｎ−１  に夫々所定のゲイン値を乗じて得た値を合算して速度指令信号ＣＶｎ  を演算している（Ｓ２４）。
【００１５】
ところが、パーソナルコンピュータ２を制御装置として用いる場合、図６のＡ２  の割込処理のように、基準開始時点たる割込信号発生時点と実際の割込処理開始時点との間に、遅れつまり誤差時間ｔ２  発生することがある。誤差時間ｔ２  が発生すると、割込信号発生時Ｔｓ  の実際の位置が目標位置ＣＰ２  に合致していても、演算上は、位置偏差ΔＰ２  （＝Ｐ２  −ＣＰ２  ）に誤差時間ｔ２  における位置の変化量Ｘ２  が含まれるため、これに基づき演算される速度指令信号ＣＶ２  にも誤差が生じ、モータ１の速度を不必要に変動させるなど、制御の安定性が損なわれる。
【００１６】
そこで、図１に示すように、内部タイマ２ａとは別個のタイマである外部タイマ７を設けて、位置ループ処理の前に、前回の割込処理開始時点から今回の割込処理開始時点までの経過時間Ｔ２  （図６参照）を計測し、経過時間Ｔ２  に基づき誤差時間ｔ２  を演算し、誤差時間ｔ２  における変化量Ｘ２  に基づき位置偏差ΔＰ２  を補正して、速度指令信号ＣＶ２  を演算するようにした。
【００１７】
誤差時間演算処理（Ｓ１）では、図３（ｂ）に示すように、まず前回の誤差時間演算処理で動作開始された外部タイマ７を停止して（Ｓ４）、経過時間Ｔｎ  （図６のＡ２  ではＴ２  ＝１．２ｍｓｅｃ  ）を読み込み（Ｓ５）、リセットした後、動作を開始させる（Ｓ６）。その後、制御開始から１０秒経過するまでは経過時間Ｔｎ  の平均値即ち平均経過時間Ｔａ  を演算してメモリ２ｃに更新保存し（Ｓ７、Ｓ８）、メモリ２ｃに保存された平均経過時間Ｔａ  を割込信号発生周期Ｔとみなして、前回の割込処理で演算された誤差時間ｔｎ−１  、経過時間Ｔｎ  及び平均経過時間Ｔａ  とに基づいて誤差時間ｔｎ  を演算する（Ｓ９、図３の式参照）。
【００１８】
尚、制御開始の時点では誤差時間ｔｎ−１  ＝０として演算する。また平均経過時間Ｔａ  を、１０秒間の経過時間Ｔｎ  を平均して求めているが、サンプリング時間は要求される精度等に応じてを増減させてよい。
【００１９】
そして、位置ループ処理（Ｓ１４）において、図５（ｂ）に示すように、目標速度ＣＶｎ−１  を読み込む（Ｓ２１）と共に位置偏差ΔＰｎ  を演算し（Ｓ２２−１）、誤差時間ｔｎ  と目標速度ＣＶｎ−１  とに基づいて誤差時間ｔｎ  における位置の変化量Ｘｎ  を演算し（Ｓ２２−２）、該変化量Ｘｎ  に基づいて位置偏差ΔＰｎ  を補正するようにした（Ｓ２２−３）。その後、補正された位置偏差すなわち補正位置偏差ΔＰｘｎを割込信号発生時点と割込信号発生周期とから定まる時間区間について微分及び積分し（Ｓ２３）、補正位置偏差ΔＰｘｎと、補正位置偏差ΔＰｘｎの積分値Ｐｉ  及び微分値Ｐｄ  と、目標速度ＣＶｎ−１  とにそれぞれ所定のゲイン値Ｋｐ１，Ｋｉ１，Ｋｄ１，Ｋｆ１を乗じて得た値を合算して速度指令信号ＣＶｎ  を演算することとした（Ｓ２４，図５の式参照）。
【００２０】
このようにして位置偏差ΔＰｎ  を補正すれば、検出位置Ｐｎ  の検出時期が遅れても、誤差時間ｔｎ  がなかった場合の位置偏差と等価な、補正された位置偏差ΔＰｘｎを求めることができ、補正位置偏差ΔＰｘｎに基づいて速度指令信号ＣＶｎ  を演算することができる。また、エンコーダＰＧでの検出位置Ｐｎ  を読み込む、いわゆるフィードバック処理そのものについては変更の必要がないので、変更が必要な場合と比べて対応が容易である。これにより、誤差時間ｔｎ  が生じても速度指令信号ＣＶｎ  が不必要に変動されることがなくなり、モータ１における振動や異常音の発生が防止され、静粛性が確保されて、制御の安定性が向上する。
【００２１】
尚、本実施形態では変化量Ｘｎ  に基づいて位置偏差ΔＰｎ  を補正して補正位置偏差ΔＰｘｎを求めたが、目標位置ＣＰｎ  を変化量Ｘｎ  に基づき実際の位置検出時点Ｔｓ´（図６参照）での目標位置（ＣＰｎ  ＋Ｘｎ  ）に補正して、補正後の目標位置と検出位置Ｐｎ  との偏差を求めてもよく、また検出位置Ｐｎ  を変化量Ｘｎ  に基づき割込信号発生時点Ｔｓ  （図６参照）での検出位置に等価な位置（Ｐｎ  −Ｘｎ  ）に補正して、目標位置ＣＰｎ  と補正後の検出位置との偏差を求めてもよい。
【００２２】
また、速度ループ処理（Ｓ１６）では、図７に示すように、まず前回の速度ループ処理でのトルク指令信号ＣＷｎ−１  を目標加速度として読み込み（Ｓ３１）、検出速度Ｖｎ  と目標速度ＣＶｎ−１  との速度偏差ΔＶｎ  （＝Ｖｎ  −ＣＶｎ−１  ）を演算する（Ｓ３２）。ところで、サーボ処理（Ｓ２）は、いわゆるソフトウェアサーボであり、状態値たる検出速度Ｖｎ  を位置偏差ΔＰｎ  に基づいて演算している。従って、位置偏差ΔＰｎ  に誤差が含まれていれば、速度偏差ΔＶｎ  にも誤差が含まれ、結果としてトルク制御の安定性が損なわれる。そこで、速度偏差ΔＶｎ  を補正し、補正後の値を用いてトルク指令信号ＣＷｎ  を演算するようにした。
【００２３】
まず目標速度ＣＶｎ−１  、誤差時間ｔｎ  及び割込信号発生周期に基づいて、誤差時間ｔｎ  における速度の変化量Ｙｎ  を演算し（Ｓ３３）、次に変化量Ｙｎ  に基づいて速度偏差ΔＶｎ  を補正して、補正速度偏差ΔＶｙｎを演算する（Ｓ３４）。そして、補正速度偏差ΔＶｙｎを割込信号発生時点と割込信号発生周期とから定まる時間区間について微分及び積分し（Ｓ３５）、補正速度偏差ΔＶｙｎと、該補正速度偏差ΔＶｙｎの積分値Ｖｉ  及び微分値Ｖｄ  と、目標加速度ＣＷｎ−１  とに、それぞれ所定のゲイン値Ｋｐ２，Ｋｉ２，Ｋｄ２，Ｋｆ２を乗じて得た値からトルク指令信号ＣＷｎ  を演算するようにした（Ｓ３６，図７の式参照）。
【００２４】
このようにすれば、補正された位置偏差ΔＰｘｎを求めた場合と同様、検出速度の検出時点と目標速度の演算基準時点とが一致する場合の速度偏差と等価な、補正された速度偏差ΔＶｙｎが求まる。従って、補正速度偏差ΔＶｙｎに基づいてトルク指令信号ＣＷｎ  を演算すれば、モータ１における振動や異常音の発生が防止され、静粛性が確保されて、制御の安定性が向上する。
【００２５】
ところで、誤差時間演算処理（Ｓ１）で求める誤差時間ｔｎ  （図６参照）は、割込信号発生時点及び実際の割込処理開始時点が判れば求まるが、内部タイマ２ａを用いる等の場合は、割込信号発生時点を検出できない場合が多く、実際の割込信号発生周期を計測できないことが多い。このような場合でも、設定割込信号発生周期（＝１ｍｓｅｃ）を用いれば誤差時間ｔｎ  を簡便に演算できるが、図８のＡ２  の割込処理に示すように、設定割込信号発生周期と、実際の割込信号発生周期Ｔとの間にずれｒがあると、ずれｒが誤差時間ｔ２  に含まれてしまう。このずれｒは累積されていくため、ある時間が経過した後のＡ４  の割込処理のように処理の開始が実際の割込信号から遅れていない場合でも、演算上、誤差時間ｔ４  が大きな値になる。従って、誤差時間ｔｎ  に基づいて演算される変化量Ｘｎ  ，Ｙｎ  が大きな値になり、変化量Ｘｎ  ，Ｙｎ  に基づいて求められる補正偏差ΔＰｘｎ，ΔＶｙｎの演算精度が低下して、制御の安定性や信頼性が低下する虞れがある。
【００２６】
そこで、本実施形態では、図３の式に示されるように、実際の割込信号発生周期Ｔに相当する値として、各回の割込処理開始時点から求まる経過時間Ｔｎ  の平均値（平均経過時間）Ｔａ  を用いて、誤差時間ｔｎ  を演算する（Ｓ９）。
【００２７】
このようにすれば、演算に用いる割込信号発生周期Ｔ（＝Ｔａ  ）と実際の割込信号発生周期とがかけ離れた値にならず、また平均値Ｔａ  を用いるため、各回の割込処理で生ずる平均値Ｔａ  と実際の割込信号発生周期との差は累積により相殺される傾向にあり、誤差時間ｔｎ  が大きくなることがない。従って、変化量Ｘｎ  ，Ｙｎ  の算出精度が低下せず、結果的に制御の安定性が確保され、信頼性が向上する。また経過時間Ｔｎ  の平均値Ｔａ  を演算するだけでよく、割込信号発生時点を検出する必要がないので、簡便に処理できる。更に平均値Ｔａ  を用いれば、割込処理の度に実際の割込信号発生周期を演算して用いる場合に比べて、演算処理の負担が少なく有利である。
【００２８】
【発明の効果】
以上のように、本発明によれば、誤差時間を前回の割込処理で出力された制御信号に乗じて誤差時間分の状態値の変化量を演算し、検出した状態値と目標状態値との偏差と前記変化量の差分をとって前記偏差を補正して、検出した状態値の検出時点と目標状態値の演算基準時点とが一致する場合の偏差と等価な、補正された偏差を求めることができ、該補正された偏差に基づいて制御信号を演算するため、制御の安定性が向上し、信頼性が向上する。
【図面の簡単な説明】
【図１】実施形態の制御システムを示すブロック図
【図２】実施形態での割込処理を示すブロック図
【図３】（ａ）は実施形態の割込処理を示すフローチャート図
（ｂ）は実施形態の誤差時間演算処理を示すフローチャート図
【図４】実施形態のサーボ処理を示すフローチャート図
【図５】（ａ）は従来の位置ループ処理を示すフローチャート図
（ｂ）は実施形態の位置ループ処理を示すフローチャート図
【図６】割込信号と割込処理との関係を示すタイムチャート図
【図７】実施形態の速度ループ処理を示すフローチャート図
【図８】誤差時間の経時的変化を説明するタイムチャート図
【図９】割込処理の開始が遅れた場合の速度の変化を示すグラフ図
【符号の説明】
１      サーボモータ（制御対象）
２      コンピュータ
３      サーボアンプ
７      外部タイマ（別個のタイマ）
Ｐｎ      検出位置（状態値）
Ｖｎ      検出速度（状態値）
ΔＰｎ      位置偏差（偏差）
ΔＶｎ      速度偏差（偏差）
ΔＰｘｎ    補正位置偏差（補正された偏差）
ΔＶｙｎ    補正速度偏差（補正された偏差）
ＣＰｎ      目標位置（目標状態値）
ＣＶｎ−１    目標速度（目標状態値）
ＣＶｎ      速度指令信号（制御信号）
ＣＷｎ      トルク指令信号（制御信号）
Ｘｎ  ，Ｙｎ    変化量
Ｔａ      平均経過時間（経過時間の平均値）
Ｔｎ      経過時間
ｔｎ      誤差時間
【図１】
0003623352.tif 000002
【図２】
0003623352.tif 000003
【図３】
0003623352.tif 000004
【図４】
0003623352.tif 000005
【図５】
0003623352.tif 000006
【図６】
0003623352.tif 000007
【図７】
0003623352.tif 000008
【図８】
0003623352.tif 000009
【図９】
0003623352.tif 000010