(57)【要約】      （修正有）【課題】制御対象の姿勢が変化しても、駆動方向の違いで速度差が発生する可能性を低減することが可能な位置制御装置及び位置制御方法を提供する。【解決手段】フィードバック補償器６０４は目標発生部６０１が出力する目標値信号と位置エンコード処理部６０２が出力する位置検出信号との差信号に基づき、制御対象を目標位置に追従させるための制御量を算出する。フィードフォワード補償器６０５は目標値信号変化に基づき、目標速度に追従させるための制御量を算出する。加算部６０６はフィードバック補償器６０４とフィードフォワード補償器６０５がそれぞれ算出した出力を加算して総制御量を算出する。記憶部６０７は固定位置への位置制御中の制御量または総制御量にローパスフィルタ処理を施した通過量を姿勢差補正量として記憶する。フィードフォワード補償器６０５は記憶部６０７に保存された姿勢差補正量を用いてフィードフォワード制御量を補正する。【選択図】図６
2019215912.tif 000002
【特許請求の範囲】
【請求項１】
位置検出手段により検出された制御対象の位置に応じて、前記制御対象を目標位置に追従させる制御量を算出する第１算出手段と、
同定用入力と前記入力に対する同定モデルの応答と同定対象の応答に基づいて、前記同定モデルの応答が前記同定対象の応答に一致するように前記同定モデルのパラメータを適応同定する適応同定手段と、
前記制御対象が停止状態の場合の当該停止状態を維持するための制御量である姿勢差補正量を記憶する記憶手段と、を備え、
前記適応同定手段の同定用入力は、前記第１算出手段により算出された制御量から前記記憶手段の記憶している姿勢差補正量を演算した制御量に応じた制御量であり、同定対象の応答は前記制御対象の移動量であることを特徴とする位置制御装置。
【請求項２】
位置検出手段により検出された制御対象の位置に応じて、前記制御対象を目標位置に追従させる制御量を算出する第１算出手段と、
前記制御対象の速度を目標速度に制御する制御量を算出する第２算出手段と、
同定用入力と前記入力に対する同定モデルの応答と同定対象の応答に基づいて、前記同定モデルの応答が前記同定対象の応答に一致するように前記同定モデルのパラメータを適応同定する適応同定手段と、
前記制御対象が停止状態の場合の当該停止状態を維持するための制御量である姿勢差補正量を記憶する記憶手段と、を備え、
前記適応同定手段の同定用入力は、前記第１算出手段により算出された制御量と前記第２算出手段により算出された制御量とを加算した制御量から前記記憶手段の記憶している姿勢差補正量を演算した制御量に応じた制御量であり、同定対象の応答は前記制御対象の移動量であることを特徴とする位置制御装置。
【請求項３】
前記第１算出手段はフィードバック補償手段であって、前記第２算出手段は適応制御手段であり、フィードバック制御量と適応制御量とを加算することにより加算した制御量から前記記憶手段の記憶している姿勢差補正量を演算した制御量を前記適応同定手段の同定用入力として算出することを特徴とする請求項２に記載の位置制御装置。
【請求項４】
前記第２算出手段は、規範モデルの目標速度に対する規範応答を取得して、規範制御量に変換し、前記規範制御量と前記適応同定手段の出力を演算して、適応制御量を算出することを特徴とする請求項３に記載の位置制御装置。
【請求項５】
前記記憶手段へ前記制御対象が停止状態の場合の当該停止状態を維持するための制御量である姿勢差補正量が記憶されていないときは、前記適応同定手段は適応同定を行わないことを特徴とする請求項１乃至４のいずれか１項に記載の位置制御装置。
【請求項６】
前記記憶手段への、前記制御対象が停止状態の場合の当該停止状態を維持するための制御量である姿勢差補正量の記憶更新が所定期間以上されていないときは、前記適応同定手段は適応同定を行わないことを特徴とする請求項１乃至５のいずれか１項に記載の位置制御装置。
【請求項７】
前記第１算出手段はフィードバック補償手段であって、フィードバック制御量から前記記憶手段の記憶している姿勢差補正量を演算した制御量を前記適応同定手段の同定用入力として算出することを特徴とする請求項１に記載の位置制御装置。
【請求項８】
前記記憶手段は、前記第１算出手段により算出される制御量にローパスフィルタ処理を施した通過量を前記姿勢差補正量として記憶することを特徴とする請求項１乃至７のいずれか１項に記載の位置制御装置。
【請求項９】
前記制御対象を駆動するアクチュエータを備えることを特徴とする請求項１乃至８のいずれか１項に記載の位置制御装置。
【請求項１０】
請求項９に記載の位置制御装置と前記アクチュエータにより駆動される光学素子を備えることを特徴とする光学機器。
【請求項１１】
請求項９に記載の位置制御装置と前記アクチュエータにより駆動される光学素子を備えることを特徴とする撮像装置。
【請求項１２】
位置検出手段により検出された制御対象の位置に応じて、前記制御対象を目標位置に追従させる制御量を算出する第１算出ステップと、
同定用入力と前記入力に対する同定モデルの応答と同定対象の応答に基づいて、前記同定モデルの応答が前記同定対象の応答に一致するように前記同定モデルのパラメータを適応同定する適応同定ステップと、
前記制御対象が停止状態の場合の当該停止状態を維持するための制御量である姿勢差補正量を記憶する記憶ステップと、を有し、
前記適応同定ステップにおける同定用入力は、前記第１算出ステップで算出された制御量から前記記憶ステップで記憶している姿勢差補正量を演算した制御量に応じた制御量であり、同定対象の応答は前記制御対象の移動量であることを特徴とする位置制御方法。
【請求項１３】
位置検出手段により検出された制御対象の位置に応じて、前記制御対象を目標位置に追従させる制御量を算出する第１算出ステップと、
前記制御対象の速度を目標速度に制御する制御量を算出する第２算出ステップと、
同定用入力と前記入力に対する同定モデルの応答と同定対象の応答に基づいて、前記同定モデルの応答が前記同定対象の応答に一致するように前記同定モデルのパラメータを適応同定する適応同定ステップと、
前記制御対象が停止状態の場合の当該停止状態を維持するための制御量である姿勢差補正量を記憶する記憶ステップと、を有し、
前記適応同定ステップにおける同定用入力は、前記第１算出ステップで算出された制御量と前記第２算出ステップで算出された制御量とを加算した制御量から前記記憶手段の記憶している姿勢差補正量を演算した制御量に応じた制御量であり、同定対象の応答は前記制御対象の移動量であることを特徴とする位置制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィードバック制御及びフィードフォワード制御による制御対象の位置制御装置及び位置制御方法、光学機器、撮像装置に関する。
【背景技術】
【０００２】
制御対象の絶対位置の検出情報に基づくフィードバック制御と、制御対象の目標値に応じたフィードフォワード制御を行うサーボ制御システムがある。特許文献１には、フィードバックゲインをフィードフォワードゲインから計算して自動的に調整することが可能なサーボ制御システムが開示されている。また、特許文献２には、適応同定を行い、フィードバック制御やフィードフォワード制御のパラメータを補正する位置制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平３−２８９３８５号公報
【特許文献２】特許第４６７３３２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、固定座標系に設置される制御装置を想定している。装置全体の設置姿勢が変化した場合、制御装置は目標値の変化に基づいてフィードフォワード出力を算出するが、姿勢変化に伴う力と釣り合う力が、損失または過剰となってしまう。そのため、想定された加速力が発生せず、姿勢変化量によっては駆動方向の違いで速度差が発生する可能性がある。
【０００５】
特許文献２では、固定座標系に設置される制御装置を想定している。装置全体の設置姿勢が変化した場合、駆動手段に印可される駆動指令に基づいて適応同定を行うが、姿勢変化へ抗するための駆動指令成分がバイアスになってしまう。そのため、水平姿勢以外は姿勢変化量によって同定誤差が発生する可能性がある。
【０００６】
本発明の目的は、制御対象の姿勢が変化しても、駆動方向の違いで速度差が発生する可能性を低減することができる位置制御装置及び位置制御方法の提供にある。また、制御対象の姿勢が変化しても、適応同定の同定誤差を低減することができる適応同定手段の提供にある。
【課題を解決するための手段】
【０００７】
本発明の第１の発明に係る位置制御装置は、制御対象の検出位置に応じて、前記制御対象を目標位置に追従させる制御量を算出する第１算出手段と、同定用入力と前記入力に対する同定モデルの応答と同定対象の応答に基づいて、前記同定モデルの応答が前記同定対象の応答に一致するように前記同定モデルのパラメータを適応同定する適応同定手段と、前記制御対象が停止状態の場合の当該停止状態を維持するための制御量である姿勢差補正量を記憶する記憶手段と、を備え、前記適応同定手段の同定用入力は、前記第１算出手段により算出された制御量から前記記憶手段の記憶している姿勢差補正量を演算（減算）した制御量に応じた制御量であり、同定対象の応答は前記制御対象の移動量（位置検出結果、移動速度）とする。
【０００８】
本発明の第２の発明に係る位置制御装置は、制御対象の検出位置に応じて、前記制御対象を目標位置に追従させる制御量を算出する第１算出手段と、前記制御対象の速度を目標速度に制御する制御量を算出する第２算出手段と、同定用入力と前記入力に対する同定モデルの応答と同定対象の応答に基づいて、前記同定モデルの応答が前記同定対象の応答に一致するように前記同定モデルのパラメータを適応同定する適応同定手段と、前記第１算出手段が算出する前記制御対象が停止状態の場合の当該停止状態を維持するための制御量である姿勢差補正量を記憶する記憶手段と、を備え、前記適応同定手段の同定用入力は、前記第１算出手段により算出された制御量と前記第２算出手段により算出された制御量とを加算した制御量から前記記憶手段の記憶している姿勢差補正量を演算（減算）した制御量に応じた制御量であり、同定対象の応答は前記制御対象の移動量（位置検出結果、移動速度）とする。
【発明の効果】
【０００９】
本発明によれば、制御対象の姿勢が変化しても、駆動方向の違いで速度差が発生する可能性を低減することができる。また、制御対象の姿勢が変化しても、同定誤差が発生する可能性を低減することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る位置制御装置のブロック図である。
【図２】インクリメンタル信号の処理の概念図である。
【図３】インクリメンタル位置エンコード処理を説明するフローチャートである。
【図４】インクリメンタル信号と合成信号の概念図である。
【図５】アブソリュート位置エンコード処理を説明するフローチャートである。
【図６】本発明の第１実施形態に係るブロック線図である。
【図７】第１実施形態に係るフィードフォワード補償器のブロック線図である。
【図８】第１実施形態の処理を説明するフローチャートである。
【図９】第１実施形態における動作目標例を説明する図である。
【図１０】第１実施形態における数値変化例を説明する図である。
【図１１】本発明の第２実施形態に係るブロック線図である。
【図１２】第２実施形態に係る外乱推定オブザーバのブロック線図である。
【図１３】第２実施形態の処理を説明するフローチャートである。
【図１４】第２実施形態の外乱推定オブザーバ処理を説明するフローチャートである。
【図１５】第２実施形態における数値変化例を説明する図である。
【図１６】本発明の第３実施形態に係るブロック線図である。
【図１７】第３実施形態に係る適応同定器のブロック線図である。
【図１８】第３実施形態の処理を説明するフローチャートである。
【図１９】第３実施形態の適応同定処理を説明するフローチャートである。
【図２０】第３実施形態のＰＩＤ係数補正処理を説明するフローチャートである。
【図２１】本発明の第４実施形態に係るブロック線図である。
【図２２】第４実施形態に係る適応同定器のブロック線図である。
【図２３】第４実施形態の処理を説明するフローチャートである。
【図２４】第４実施形態の適応同定処理を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら本発明の各実施形態を説明する。本発明は、例えばデジタル一眼レフカメラやデジタルコンパクトカメラ、デジタルビデオカメラ、監視カメラ、Ｗｅｂカメラ、携帯電話等の撮像装置における光学部材の駆動制御に適用可能である。また、デジタル一眼レフカメラ用の交換レンズのような光学機器にも適用可能である。したがって、光学機器や撮像装置も本発明の一側面を構成する。各実施形態では、推力の未発生時に保持力が無いアクチュエータとしてボイスコイル型リニアモータを例示する。
【００１２】
［第１実施形態］
本発明の第１実施形態では、目標速度が０で固定位置への位置制御中のフィードバック補償器の出力を姿勢差補正量として保存する。目標速度が変化した場合に制御対象を目標速度へ追従させるフィードフォワード制御では前記姿勢差補正量に基づいてフィードフォワード出力補正が行われる。
【００１３】
図１は、本発明の実施形態に共通する、位置制御装置１００の構成例を示す。内部バス１０９に対してＣＰＵ（中央演算処理装置）１０１、ＲＯＭ（リード・オンリ・メモリ）１０２、ＲＡＭ（ランダム・アクセス・メモリ）１０３、制御信号出力部１０４、ＡＤ入力部１０８が接続される。各部は内部バス１０９を介して互いにデータの送受信が可能である。ＲＯＭ１０２は、ＣＰＵ１０１が動作するための各種プログラムなどを格納する読出し専用メモリである。制御手段及び計測手段としてのＣＰＵ１０１は、例えばＲＯＭ１０２に格納されるプログラムに従い、ＲＡＭ１０３をワークメモリとして用いて、位置制御装置１００の各部を制御する。
【００１４】
制御信号出力部１０４は、ＣＰＵ１０１から命令された制御信号をモータドライバ１０５に出力してリニアモータ１０６を駆動させる。また制御信号出力部１０４は、ＣＰＵ１０１から命令された制御信号をリニアエンコーダ１０７に出力して、異なる位相のインクリメンタル信号を出力させる。リニアモータ１０６はレンズ等の制御対象（不図示）を移動させる。位置検出用のリニアエンコーダ１０７は制御対象の移動に応じてインクリメンタル信号を出力する。ＡＤ入力部１０８は、リニアエンコーダ１０７が出力するインクリメンタル信号をＡ（アナログ）−Ｄ（デジタル）変換して、Ａ−Ｄ変換後の信号をＣＰＵ１０１に出力する。ＣＰＵ１０１は、ＡＤ入力部１０８により変換されたインクリメンタル信号からインクリメンタル位置エンコード処理（以下、第１エンコード処理という）、及びアブソリュート位置エンコード処理（以下、第２エンコード処理という）により現在位置を算出する。
【００１５】
図２及び図３を参照して、第１エンコード処理を説明する。図２は、インクリメンタル信号の処理を説明する概念図である。図３はＣＰＵ１０１が実行する第１エンコード処理を説明するフローチャートである。
【００１６】
図２（Ａ）はインクリメンタル信号の波形例を示す。縦軸は10bitのＡＤ変換値を示し、横軸は位置を示す。サイン波２０１とコサイン波２０２が、制御対象の移動に応じて出力される。図２（Ｂ）は、サイン波２０１とコサイン波２０２による正接関数の逆関数（逆正接関数）を示す。縦軸は角度をラジアンで示し、横軸は位置を示す。逆正接関数値２０３は、０から２πまでの範囲に正規化されて演算される。図２（Ｃ）はインクリメンタル位置エンコード値を示す。縦軸は単調増加するインクリメンタル位置エンコード値２０４を示し、横軸は位置を示す。逆正接関数値２０３がゼロを跨いだ時にMSB（Most Significant Bit）での２πに相当する上位桁が増減する。例えば、逆正接関数値２０３がゼロから増加して再びゼロになってさらに増加した場合、インクリメンタル位置エンコード値２０４に２πが加算される。他方、逆正接関数値２０３が減少してゼロになった場合にインクリメンタル位置エンコード値２０４から２πが減算される。
【００１７】
図３を参照して第１エンコード処理を説明する。Ｓ３０１にてＣＰＵ１０１は、第１エンコード処理の許可フラグがセット状態であるかどうかを判断する。許可フラグがセット状態でない場合には処理を終了し、許可フラグがセット状態である場合、Ｓ３０２へ処理を進める。Ｓ３０２において、ＣＰＵ１０１は２相信号のＡＤ変換値を取得し、オフセット除去演算、ゲイン調整演算を行う。２相信号とは、図２（Ａ）のサイン波２０１及びコサイン波２０２のように、位相の異なる対をなす信号である。そして、ＣＰＵ１０１は、図２（Ｂ）に示す逆正接関数の演算結果（逆正接関数値２０３）のデータをＲＡＭ１０３へ保存する。
【００１８】
Ｓ３０３でＣＰＵ１０１は、前回の逆正接関数演算結果と今回の逆正接関数演算結果との差の絶対値を３π／８と比較する。差の絶対値が３π／８未満であるかどうかが判断される。差の絶対値が３π／８未満であればＳ３０４へ処理を進め、差の絶対値が３π／８未満でなければＳ３１０へ移行する。Ｓ３０４にてＣＰＵ１０１は、前回の逆正接関数演算結果と今回の逆正接関数演算結果による移動で制御対象の位置がゼロを跨いだかどうかを判断する。ゼロを跨いでいる場合、Ｓ３０５へ処理を移し、ゼロを跨いでいない場合にはＳ３０８へ移行する。Ｓ３０５でＣＰＵ１０１は、今回の逆正接関数演算結果が前回の逆正接関数演算結果未満であるかあるかどうかを判断する。今回の逆正接関数演算結果が前回の逆正接関数演算結果未満であればＳ３０６へ移行し、今回の逆正接関数演算結果が前回の逆正接関数演算結果以上であればＳ３０７へ移行する。Ｓ３０６でＣＰＵ１０１は、２π単位である上位桁へ１を加算する。上位桁とはインクリメンタル位置エンコード値の２π以上の桁である。一方、Ｓ３０７でＣＰＵ１０１は上位桁から１を減算する。
【００１９】
Ｓ３０６またはＳ３０７の後でＳ３０８へ処理を進め、ＣＰＵ１０１は２π単位である上位桁と今回の逆正接関数演算結果を加算する。これにより、図２（Ｃ）のインクリメンタル位置エンコード値２０４が更新され、Ｓ３０９へ移行する。Ｓ３０９にてＣＰＵ１０１は、移動方向判別に係るエラー警告無しとして処理を終了する。Ｓ３０３からＳ３１０に移行した場合、ＣＰＵ１０１は移動方向判別に係るエラー警告有りとして処理を終了する。その理由は、今回と前回の逆正接関数演算結果の差の絶対値が３π／８以上であり、制御対象の移動方向に関して増加により差の絶対値が３π／８以上となったのか、減少により３π／８以上となったのかを判別しにくいためである。
以上のようにインクリメンタル信号からエンコード値が生成されるので、位置制御に用いることができる。
【００２０】
次に、図４と図５を用いて第２エンコード処理を説明する。図４は、ピッチの異なる３種類のインクリメンタル信号と合成信号を例示した概念図である。図４（Ａ）から（Ｆ）にて縦軸は角度をラジアンで示し、横軸は位置を示す。縦軸に示す逆正接関数値は、制御対象の移動に応じて逆正接関数として０から２πまでの範囲に正規化されて演算される。また図５はＣＰＵ１０１による第２エンコード処理を説明するフローチャートである。
【００２１】
図４（Ａ）は最小ピッチの逆正接関数演算結果４０１を例示し、全ストロークで２１周期出現する。図４（Ｂ）は中間ピッチの逆正接関数演算結果４０２を例示し、全ストロークで１０周期出現する。図４（Ｃ）は最大ピッチの逆正接関数演算結果４０３を例示し、全ストロークで４周期出現する。図４（Ｄ）から（Ｆ）については後述する。
【００２２】
図５のＳ５０１でＣＰＵ１０１は、ＲＡＭ１０３に保存されている最小ピッチの２相信号のＡＤ変換値を取得し、オフセット除去演算、ゲイン調整演算を行う。そしてＣＰＵ１０１は、図４（Ａ）の逆正接関数演算結果４０１を「p1」としてＲＡＭ１０３へ保存する。次のＳ５０２でＣＰＵ１０１は、ＲＡＭ１０３に保存されている中間ピッチの２相信号のＡＤ変換値を取得し、オフセット除去演算、ゲイン調整演算を行う。ＣＰＵ１０１は、図４（Ｂ）の逆正接関数演算結果４０２を「p2」としてＲＡＭ１０３へ保存する。次のＳ５０３でＣＰＵ１０１は、ＲＡＭ１０３に保存されている最大ピッチの２相信号のＡＤ変換値を取得し、オフセット除去演算、ゲイン調整演算を行う。ＣＰＵ１０１は、図４（Ｃ）の逆正接関数演算結果４０３を「p3」としてＲＡＭ１０３へ保存し、Ｓ５０４に移行する。
【００２３】
Ｓ５０４にてＣＰＵ１０１は下式を用い、Ｎを整数変数として全ストロークをＮ周期とした逆正接関数に正規化する処理を行う。Ｎ＝１，６，１３，２１として具体的に説明する。
【数１】
2019215912.tif 000003
なお、式(1)はＮ＝１の場合、式(2)はＮ＝６の場合、式(3)はＮ＝１３の場合に使用する。
【００２４】
Ｎ＝１の場合、ＲＡＭ１０３に保存されているp1とp2の各データを用いて式(1)でph1が算出され、算出結果のデータがＲＡＭ１０３へ保存される。図４（Ｄ）に示す演算結果４０４は制御対象の移動に応じて式(1)の結果として、０から２πまでの範囲に正規化されて演算されるph1を例示し、全ストロークで１周期出現する。Ｎ＝６の場合、ＣＰＵ１０１はＲＡＭ１０３に保存されているp2とp3の各データを用いて式(2)でph6を算出し、算出結果のデータをＲＡＭ１０３へ保存する。図４（Ｅ）に示す演算結果４０５は制御対象の移動に応じて式(2)の結果として、０から２πまでの範囲に正規化されて演算されるph6を例示し、全ストロークで６周期出現する。Ｎ＝１３の場合、ＣＰＵ１０１はＲＡＭ１０３に保存されているp1とp3の各データを用いて式(3)でph13を算出し、算出結果のデータをＲＡＭ１０３へ保存する。図４（Ｆ）に示す演算結果４０６は制御対象の移動に応じて式(3)の結果として、０から２πまでの範囲に正規化されて演算されるph13を例示し、全ストロークで１３周期出現する。Ｎ＝２１の場合、ＣＰＵ１０１はＲＡＭ１０３へ保存されているp1をph21として（ph21=p1）、データをＲＡＭ１０３へ保存する。図４（Ａ）に示すようにph21では全ストロークで２１周期出現する。
【００２５】
次のＳ５０５でＣＰＵ１０１は、以下の式を用いて、演算結果がＮ周期中でどの周期に該当するかを算出する。
【数２】
2019215912.tif 000004
【００２６】
ＣＰＵ１０１はＲＡＭ１０３へ保存されているph1を用いて式(4)で演算し、全ストロークで６周期出現する中のどの周期になるか演算し、abs6のデータをＲＡＭ１０３へ保存する。そしてＣＰＵ１０１は式(5)により、abs6とph6の各データを用いて、全ストロークで１３周期出現する中のどの周期になるか演算し、abs13のデータをＲＡＭ１０３へ保存する。ＣＰＵ１０１は式(6)により、abs13とph13の各データを用いて、全ストロークで２１周期出現する中のどの周期になるか演算し、abs21のデータをＲＡＭ１０３へ保存する。ＣＰＵ１０１は式(7)により、abs21とph21の各データを用いて、最小ピッチの分解能で全ストローク中のどの位置になるか演算し、FullABSのデータをＲＡＭ１０３へ保存して処理を終える。
【００２７】
以上のように、ピッチの異なる３種類のインクリメンタル信号を合成して更にピッチの異なるインクリメンタル信号を生成する事ができる。制御対象が静止した状態で取得されるピッチの異なる複数のインクリメンタル信号を合成し、第２エンコード処理を行うことで、最小ピッチの分解能でアブソリュート位置を算出できる。以降は、最小ピッチの分解能が固定で第１エンコード処理を実行し続けても生成されたインクリメンタル位置エンコード値をアブソリュート位置エンコード値として扱うことができる。
【００２８】
次に図６を参照して制御系の構成を説明する。図６は本実施形態に係る制御系のブロック線図を例示する。なお、図１と同じ構成部については同一の符号を使用することでそれらの説明を省略する。また、加算部については加算処理及び減算処理（負値の加算）を含むものとして説明する。
制御信号出力部１０４は、ＣＰＵ１０１から指定された制御量を入力としてデューティー比に変換したＰＷＭ（パルス幅変調）信号を、制御信号としてモータドライバ１０５へ出力する。モータドライバ１０５は、例えばＨブリッジドライバであり、制御信号として入力されるＰＷＭ信号のデューティー比に応じて正逆方向にリニアモータ１０６を駆動する。リニアモータ１０６は、例えばボイスコイルモータであり、水平姿勢でデューティー比が50%の場合、推力無しで停止する。また、デューティー比が100%の場合、リニアモータ１０６は正方向へ最大推力を発生し、デューティー比が0%の場合、逆方向へ最大推力を発生する。ボイスコイルモータは、推力の無い状態では保持力が無いので姿勢を傾けられると重力の方向に動いてしまう。そのため、水平姿勢以外への姿勢変化が発生した場合、停止中にもかかわらず、重力による位置ずれを防ぐ目的で推力を発生させ続けるための制御量を出力する位置制御が行われる。
【００２９】
位置検出用のリニアエンコーダ１０７は、リニアモータ１０６の移動量を入力とし、サイン波信号及びコサイン波信号（図２（Ａ）参照）に変換して出力する。ＡＤ入力部１０８は、リニアエンコーダ１０７が出力するサイン波信号及びコサイン波信号をＡＤ変換する。ＡＤ変換値は位置エンコード処理部６０２へ出力される。位置エンコード処理部６０２はＡＤ変換値がサイン波状に変化するのに応じた距離への変換を行う。変換後の信号は加算部６０３に出力される。
【００３０】
目標発生部６０１は、リニアモータ１０６の目標値信号を発生して加算部６０３及びフィードフォワード（FF）補償器６０５に出力する。目標値信号は、リニアモータ１０６が追従すべき目標速度及び目標位置の情報を含む。加算部６０３は、目標発生部６０１が出力する目標値信号を正入力とし、位置エンコード処理部６０２が出力する現在の位置信号を負入力として両者の差を算出して出力する。これはサーボ制御の位置エラーである。第１算出手段を構成するフィードバック（FB）補償器６０４は、加算部６０３の出力である位置エラーを入力とし、ＰＩＤ制御量を生成して加算部６０６に出力する。Ｐ（比例）Ｉ（積分）Ｄ（微分）制御については公知であるため、詳細な説明は省略する。
【００３１】
第２算出手段を構成するFF補償器６０５は、目標発生部６０１の目標速度信号を入力とし、目標速度の変化、即ち必要な加速力からフィードフォワード制御量を生成し、姿勢差補正量に基づき姿勢差補正を行い加算部６０６に出力する。FF補償器６０５の詳細については図７を用いて後述する。
【００３２】
加算部６０６はFB補償器６０４の出力とFF補償器６０５の出力を加算する。加算結果は総制御量として制御信号出力部１０４へ出力される。姿勢差補正量の記憶部６０７は、FF補償器６０５がフィードフォワード出力値を生成する際に、姿勢変化があっても進行方向の違いによる発生速度差を小さくするための補正量（姿勢差補正量）を記憶している。記憶部６０７に記憶される姿勢差補正量の決定方法については後述する。
以上のように、目標値に対してリニアモータ１０６の位置を追従させるサーボ制御系が構成される。
【００３３】
次に図７のブロック線図を参照して、FF補償器６０５を詳細に説明する。ブロック７０１は、目標発生部６０１の目標速度を入力とし、ハイパスフィルタ（ＨＰＦ）処理を行って速度変化情報、即ち加速度情報へ変換する。所定のＨＰＦ特性に基づき、固定位置への位置制御、等速度制御の状態が続くと、ブロック７０１の出力は０へ収束していく。ブロック７０２は、加速度情報をリニアモータ１０６のモデルから設計的に導出される必要制御量情報へ変換する。リニアモータ１０６のモデルはＰＷＭのbit分解能数、抵抗値Ｒ、質量情報Ｍ、推力変換定数Ｋｆを有する。ブロック７０３は、ブロック７０１の出力が所定範囲内へ収束したか否かの収束判定処理を行う。ブロック７０３は、ブロック７０１の出力が所定範囲内へ収束していなければ「１」を出力し、収束していれば「０」を出力する。本実施形態のように０または１を出力する形態に限らず、収束の加減に応じて１．５、０．５などの値を設定することも可能である。
【００３４】
乗算部７０４は、姿勢差補正量とブロック７０３の出力を乗算する。例えば、ブロック７０１の出力が所定範囲内へ収束していれば、乗算結果として０が出力される。これは、フィードフォワード力の必要が無くなっているのに姿勢差補正による力だけが制御対象に掛かり続けるのを防ぐためである。加算部７０５は、ブロック７０２の出力である必要制御量と、乗算部７０４による乗算後の姿勢差補正量とを加算する。
【００３５】
ブロック７０６は、目標速度とブロック７０１の出力から、制御状態が加速力の状態（加速状態）であるか、またはブレーキ力の状態（制動状態）であるかを判定する状態判定処理を実行する。ブロック７０６は、ブレーキ力の状態でなければ「１」を出力し、ブレーキ力の状態であれば「０」を出力する。本実施形態のように０または１を出力する形態に限らず、ブレーキ力の状態で０．５などの値を設定することも可能である。乗算部７０７は、姿勢差補正量により補正されたフィードフォワード制御量と、ブロック７０６の出力を乗算する。例えば、ブロック７０１の出力がブレーキ力であれば、ブロック７０６の出力が０であり、乗算結果として０が出力される。乗算部７０７は、起動時のみフィードフォワード力を効かせるための部分であるが、オーバーシュートを抑制したい場合にブレーキ力を効かせてもよい。
【００３６】
以上のように、フィードフォワード補償を行う第１の系（本線系）の線図と、姿勢差補正を実行する第２の系（補正系）の線図からなるブロック線図が構成される。本線系は、リニアモータ１０６に相当の加速度を発生させるために必要な制御量を算出するフィードフォワード補償系である。補正系は、リニアモータ１０６に相当の加速度を発生させるために必要な制御量が所定範囲内へ収束するまで姿勢差補正を実行する系である。制御対象の姿勢が変化しても姿勢差補正を実行することで、姿勢変化を考慮しない場合に比べて進行方向（駆動方向）の違いによる発生速度差が小さい。図６の加算部６０６はＰＩＤ制御量とフィードフォワード制御量を加算して制御信号出力部１０４に出力する。したがって、FB補償器６０４による制御だけでは補償しきれない、停止状態からの起動時の速度追従性を改善することができる。
【００３７】
本実施形態ではFB補償器６０４としてＰＩＤ制御器を使用する。よって、目標速度がゼロであって固定位置への位置制御中でも、重力に抗する制御量がＩ制御成分として蓄積して出力される。なお、FF補償器６０５との組み合わせが可能な制御器であれば、特にFB補償器６０４はＰＩＤ制御器に限定されない。
【００３８】
次に図６から図１０を参照して、制御対象の姿勢が変化しても進行方向の違いで発生速度差が生じる可能性を低減することができる、フィードフォワード制御量に対する姿勢差補正量の決定処理を説明する。
【００３９】
図８は、図６のブロック線図中でＣＰＵ１０１が実行する位置制御処理を説明するフローチャートである。図８のＳ８０１でＣＰＵ１０１は、目標発生部６０１が目標値をカウント増減中か、またはカウント停止中かを示すカウント状態を取得する。カウント増減中とは、目標速度が０以外で制御対象を移動目標へ追従させる位置制御が指示されていることである。また、カウント停止中とは、目標速度が０であって制御対象を固定位置で停止させ続ける位置制御が指示されていることである。Ｓ８０２でＣＰＵ１０１は目標発生部６０１の目標値、位置エンコード処理部６０２で処理された現在の位置を取得し、加算部６０３により目標値と現在位置との差から位置エラーを算出する。FB補償器６０４は位置エラーを入力とするＰＩＤ制御量を算出する。Ｓ８０３でＣＰＵ１０１は目標発生部６０１の速度目標から加速度目標を算出する。図７のブロック７０１に相当する処理である。次にＣＰＵ１０１は加速度目標からフィードフォワード制御量を算出する。ブロック７０２に相当する処理である。続いてＣＰＵ１０１は加速度目標から収束判定処理を行う。ブロック７０３に相当する処理である。さらにＣＰＵ１０１は加速度目標と速度目標からブレーキ判定処理を行う。ブロック７０６に相当する処理である。その後、収束判定処理結果から乗算部７０４により姿勢差補正量に所定の係数が掛けられ、加算部７０５により姿勢差補正済みのフィードフォワード制御量が算出される。最後にブレーキ判定処理の結果に応じて、乗算部７０７によりフィードフォワード出力のオン・オフ制御が行われる。Ｓ８０４でＣＰＵ１０１は目標発生部６０１がカウント停止中であるかどうかを判断する。カウント停止中の場合、Ｓ８０５へ処理を進め、またカウント増減中の場合、Ｓ８０６へ移行する。
【００４０】
Ｓ８０５でＣＰＵ１０１は、Ｓ８０２で求めた現在のＰＩＤ制御量から所定の周波数以下で変化する姿勢差補正量を抽出するローパスフィルタ処理を行う。例えば、位置制御装置の適用例としてカメラのレンズ位置制御装置について説明する。チルティングという撮影手法中には、ユーザがカメラをゆっくりと上下方向に振る操作を行うので、カメラの姿勢変化が発生する。また、地面の花などの被写体になるべく接近して撮影する接写撮影中においても、カメラが長時間の下向きや上向きの姿勢をとる場合があるので姿勢変化が発生する。撮影動作中には、数秒単位のゆっくりとした周期でカメラ姿勢が変化するのに対し、位置制御では数ミリ秒単位の高速な周期で駆動と停止が繰り返される。即ち数ミリ秒単位の高速な周期で変動する制御量は位置制御のための制御量であり、また数秒単位のゆっくりとした周期で変動する制御量は姿勢差に対抗するための制御量と言える。カメラのレンズ位置制御装置の場合、ローパスフィルタ（ＬＰＦ）処理の遮断周波数の選択については前者と後者の間、例えば数百ミリ秒程度に設定されているのが望ましい。続いてＣＰＵ１０１は、次回のフィードフォワード制御用に姿勢差補正量として、ローパスフィルタ（ＬＰＦ）通過量を設定する。
【００４１】
例えば、制御対象の姿勢が水平状態で駆動と停止を繰り返している場合を想定する。カウント停止中のＰＩＤ制御量に対し、駆動停止周期より充分に低い遮断周波数でのＬＰＦ処理を行えば、元々姿勢差に対抗のための制御量は含まれないので、駆動停止周期以内の位置偏差追従制御量はフィルタで遮断される。すなわち出力はゼロとなり、デューティー比が50%となる。また、例えば、制御対象の姿勢が水平以外の傾斜状態で駆動と停止を繰り返している場合を想定する。カウント停止中のＰＩＤ制御量に対して同様にＬＰＦ処理を行えば、駆動停止周期以内の位置偏差追従制御量はフィルタで遮断される。よって姿勢差に対抗するための制御量を50%以外のデューティー比として抽出できる。このように制御対象が停止した状態で重力に抗するためだけに必要な制御量が、姿勢差補正量として記憶部６０７に記憶される。
【００４２】
Ｓ８０４でカウント停止中でない場合、またはＳ８０５の後、Ｓ８０６に処理を進め、加算部６０６はＰＩＤ制御量と、姿勢差補正済みのフィードフォワード制御量を加算して、総制御量が算出される。総制御量は加算部６０６から制御信号出力部１０４へ出力されて処理を終える。Ｓ８０５では現在のＰＩＤ制御量から所定の周波数以下で変化する姿勢差補正量を抽出するＬＰＦ処理を行っている。これに限らず、Ｓ８０６の総制御量に対して同様のＬＰＦ処理を実行しても、カウント停止中にはＰＩＤ制御量以外「0」であるため、同じ値が抽出される。
【００４３】
以上のように制御対象の姿勢変化があった場合でもカウント停止中、即ち固定位置への位置制御中におけるFB補償器６０４のＰＩＤ制御量または当該制御量を含む総制御量に対してＬＰＦ処理が行われる。ＬＰＦ処理を施した後の量を示すデータが姿勢差補正量として記憶部６０７に保存される。
【００４４】
図９は位置制御の動作目標例を具体的に説明するタイミングチャートである。図９（Ａ）の横軸は時間軸であり、縦軸は制御対象の姿勢を示し、中央に水平状態を示す。図９（Ｂ）の横軸は時間軸であり、縦軸は目標位置（P0からP4参照）を示す。図９（Ｃ）の横軸は時間軸（時刻T0からT16参照）であり、縦軸は目標速度（-V2からV2参照：｜V2｜＞｜V1｜とする）を示す。図１０は動作中の数値変化例を説明する図である。（１）から（２０）の各行について、以下の項目を進行方向の異なるパターンとして例示する。
【００４５】
（A）時刻または期間：T0を起点とし、T16までの時刻または期間を示す。
（B）姿勢          ：水平、傾斜１、または傾斜２の三姿勢のいずれかを示す。
（C）進行方向      ：停止中、左または右へ起動、左または右へ等速のいずれかを示す。
（D）ＰＩＤ制御量  ：ゼロ、正値、または負値を示す。
（E）FF（フィードフォワード）制御量：ゼロ、正値、または負値を示す。
（F）姿勢差補正量  ：ゼロ、正値、または負値を示す。
（G）姿勢差補正後のFF制御量：ゼロ、正値、または負値を示す。
（H）総制御量      ：ゼロ、正値、または負値を示す。
なお、制御対象の（C）進行方向については、説明の便宜上、第１方向を左方向とし、第２方向を右方向と定義する。
【００４６】
図９（Ａ）にて、時刻T0からT5過ぎまでの期間では制御対象が水平姿勢である。これは図１０にて（１）から（７）の各行に示す期間に相当する。時刻T0からT1までの期間に制御対象は、図９（Ｂ）に位置P1で示す停止目標値に追従している状態にある。図１０の（１）に示すように、（D）ＰＩＤ制御量（FB補償器６０４の出力）をＬＰＦ処理して通過させた制御量は「0」であり、この値が（F）姿勢差補正量となる。姿勢差補正量として「0」が記憶部６０７に記憶される。（E）FF制御量（ブロック７０２の出力）については、停止区間にて加速度を発生しない。つまり、FF制御量として「0」が出力されるので、（F）姿勢差補正量の如何にかかわらず、（G）姿勢差補正後のFF制御量（加算部７０５の出力）は「0」である。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量（加算部６０６の出力）は「0」となる。つまり制御信号出力部１０４への出力は「0」である。
【００４７】
次に、制御対象が図９（Ｂ）に示す停止目標値P1からP2へ、図９（Ｃ）の速度V1で移動を開始したとする。その時刻T1での各項目を図１０の（２）に示す。（E）FF制御量については、加速度を発生させるために必要な制御量として「15」が算出される。時刻T1の時点では（F）姿勢差補正量が「0」であるで、（G）姿勢差補正後のFF制御量として、速度0から速度V1への加速に必要な制御量「15+0=15」が出力される。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「15」から、（H）総制御量として「15」が制御信号出力部１０４へ出力される。
【００４８】
制御対象が図９（Ｂ）に示す停止目標値P1からP2へ、図9（Ｃ）の速度V1で移動中である期間、つまり時刻T1からT2までの期間での各項目を図１０の（３）に示す。（D）PID制御量は、目標位置への追従のための制御量「10」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であり、（F）姿勢差補正量の如何にかかわらず、（G）姿勢差補正後のFF制御量は「0」である。（D）ＰＩＤ制御量「10」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量として「10」が制御信号出力部１０４へ出力される。
【００４９】
制御対象が図９（Ｂ）に示す位置P2の停止目標値に追従している状態にある期間、つまり時刻T2からT3までの期間での各項目を図１０の（４）に示す。（D）ＰＩＤ制御量をＬＰＦ処理して通過させた制御量は「0」であり、（F）姿勢差補正量は「0」となる。姿勢差補正量として「0」が記憶部６０７に記憶される。（E）FF制御量は停止区間にて加速度を発生しない制御量「0」であり、（F）姿勢差補正量の如何にかかわらず、（G）姿勢差補正後のFF制御量は「0」である。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量は「0」となる。
【００５０】
制御対象が図９（Ｂ）に示す停止目標値P2からP1へ、図９（Ｃ）の速度「-V1」で逆方向に移動を開始したとする。その時刻T3での各項目を図１０の（５）に示す。（E）FF制御量として、加速度を発生させるために必要な制御量「-15」が算出されたものとする。時刻T3で（F）姿勢差補正量が「0」であるで、（G）姿勢差補正後のFF制御量は速度0から-V1への速度変化に必要な制御量「-15+0=-15」となる。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「-15」から、（H）総制御量として「-15」が制御信号出力部１０４へ出力される。
【００５１】
制御対象が図９（Ｂ）に示す停止目標値P2からP1へ、図９（Ｃ）の速度「-V1」で移動中である期間、つまり時刻T3からT4までの期間での各項目を図１０の（６）に示す。（D）PID制御量は目標位置への追従のための制御量「-10」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量の如何にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「-10」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量として「-10」が制御信号出力部１０４へ出力される。
【００５２】
制御対象が図９（Ｂ）に示す位置P1の停止目標値に追従している状態にある、時刻T4からT5までの期間での各項目を図１０の（７）に示す。（１）の場合と同様、（D）ＰＩＤ制御量は「0」であり、（F）姿勢差補正量として「0」が記憶部６０７に記憶される。（E）FF制御量は停止区間にて加速度を発生しない制御量「0」である。（F）姿勢差補正量の如何にかかわらず、（G）姿勢差補正後のFF制御量は「0」となり、（H）総制御量は「0」となる。
【００５３】
図９（Ａ）に示す時刻T6前からT11過ぎまでの期間にて、制御対象の姿勢は傾斜１である。図１０では（８）から（１４）の各行に示す期間に相当する。この期間において、制御対象が図９（Ｂ）に示す位置P1の停止目標値に追従している状態にある時刻T6からT7までの期間での各項目を図１０の（８）に示す。（D）ＰＩＤ制御量をＬＰＦ処理して通過させた制御量は「-10」であり、（F）姿勢差補正量「-10」が記憶部６０７に記憶される。（E）FF制御量は停止区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量の如何にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「-10」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量として「-10」が制御信号出力部１０４へ出力される。
【００５４】
制御対象が図９（Ｂ）に示す停止目標値P1からP2へ、図９（Ｃ）の速度V1で移動を開始したとする。その時刻T7での各項目を図１０の（９）に示す。（E）FF制御量として、加速度を発生させるために必要な制御量「15」が算出されたものとする。時刻T7では（F）姿勢差補正量が「-10」であるので、（G）姿勢差補正後のFF制御量は速度0からV1への加速に必要な制御量「15-10=5」となる。（D）ＰＩＤ制御量「-10」と、（G）姿勢差補正後のFF制御量「5」から、（H）総制御量「-5」が制御信号出力部１０４へ出力される。
【００５５】
制御対象が図９（Ｂ）に示す停止目標値P1からP2へ、図９（Ｃ）の速度V1で移動中である期間、つまり時刻T7からT8の期間での各項目を図１０の（１０）に示す。（D）PID制御量は、目標位置への追従のための制御量「0」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量「-10」にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量は「0」となる。
【００５６】
制御対象が図９（Ｂ）に示す位置P2の停止目標値に追従している状態にある、時刻T8からT9までの期間での各項目を、図１０の（１１）に示す。（D）ＰＩＤ制御量をＬＰＦ処理して通過させた制御量「-10」が（F）姿勢差補正量として記憶部６０７に記憶される。（E）FF制御量は停止区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量「-10」にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「-10」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量「-10」が制御信号出力部１０４へ出力される。
【００５７】
制御対象が図９（Ｂ）に示す停止目標値P2からP0へ、図９（Ｃ）の速度「-V2」で移動を開始したとする。その時刻T9での各項目を図１０の（１２）に示す。時刻T9で（E）FF制御量は加速度を発生させるために必要な制御量「-30」が算出されたものとする。（F）姿勢差補正量が「-10」であるので、（G）姿勢差補正後のFF制御量は速度0から-V2への速度変化に必要な制御量「-30-10=-40」となる。（D）ＰＩＤ制御量「-10」と、（G）姿勢差補正後のFF制御量「-40」から、（H）総制御量「-50」が制御信号出力部１０４へ出力される。
【００５８】
制御対象が図９（Ｂ）に示す停止目標値P2からP0へ、図９（Ｃ）の速度「-V2」で移動中である期間、つまり時刻T9からT10までの期間での各項目を図１０の（１３）に示す。（D）PID制御量は目標位置への追従のための制御量「-30」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるで、（F）姿勢差補正量「-10」にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「-30」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量「-30」が制御信号出力部１０４へ出力される。
【００５９】
制御対象が図９（Ｂ）に示す位置P2の停止目標値に追従している状態にある、図９（Ｃ）の時刻T11の手前での各項目を図１０の（１４）に示す。（８）と同様、（D）ＰＩＤ制御量が「-10」であり、（F）姿勢差補正量「-10」が記憶部６０７に記憶される。（E）FF制御量は「0」であるので、（F）姿勢差補正量「-10」にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「-10」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量「-10」が制御信号出力部１０４へ出力される。
【００６０】
図９（Ａ）に示す時刻T12前からT16過ぎまでの期間では、制御対象の姿勢が傾斜２の状態である。傾斜２は、傾斜１に対して逆方向に傾斜した状態である。図１０では（１５）から（２０）の各行に示す期間に相当する。制御対象が図９（Ｂ）に示す位置P3の停止目標値に追従している状態にある、図９（Ｃ）のT12手前では、ＰＩＤ制御量をＬＰＦ処理して通過させた制御量「5」が姿勢差補正量であり、この値が記憶部６０７に記憶されているものとする。
【００６１】
制御対象が図９（Ｂ）に示す停止目標値P3からP4へ、図９（Ｃ）の速度V1で移動を開始したとする。その時刻T12での各項目を、図１０の（１５）に示す。（E）FF制御量は加速度を発生させるために必要な制御量「15」が算出されたものとする。（F）姿勢差補正量が「5」であるので、（G）姿勢差補正後のFF制御量は速度0からV1への加速に必要な制御量「15+5=20」となる。（D）ＰＩＤ制御量「5」と、（G）姿勢差補正後のFF制御量は「20」から、（H）総制御量「25」が制御信号出力部１０４へ出力される。
【００６２】
制御対象が図９（Ｂ）に示す停止目標値P3からP4へ、図９（Ｃ）の速度V1で移動中である期間、つまり時刻T12からT13までの期間での各項目を、図１０の（１６）に示す。（D）PID制御量は目標位置への追従のための制御量「15」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量「5」にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「15」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量「15」が制御信号出力部１０４へ出力される。
【００６３】
制御対象が図９（Ｂ）に示す位置P4の停止目標値に追従している状態にある、図９（Ｃ）の時刻T13からT14までの期間での各項目を、図１０の（１７）に示す。（D）ＰＩＤ制御量をＬＰＦ処理して通過させた制御量「5」が（F）姿勢差補正量として記憶部６０７に記憶される。（E）FF制御量は停止区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量「5」にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「5」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量「5」が制御信号出力部１０４へ出力される。
【００６４】
制御対象が図９（Ｂ）の停止目標値P4からP3へ、図９（Ｃ）の速度「-V1」で移動を開始したとする。その時刻T14での各項目を、図１０の（１８）に示す。（E）FF制御量は加速度を発生させるために必要な制御量「-15」が算出されたものとする。（F）姿勢差補正量が「5」であるので、（G）姿勢差補正後のFF制御量は速度0から-V1への速度変化に必要な制御量「-15+5=-10」となる。（D）ＰＩＤ制御量「5」と、（G）姿勢差補正後のFF制御量「-10」から、（H）総制御量「-5」が制御信号出力部１０４へ出力される。
【００６５】
制御対象が図９（Ｂ）に示す停止目標値P4からP3へ、図９（Ｃ）の速度「-V1」で移動中である期間、つまり時刻T14からT15までの期間での各項目を、図１０の（１９）に示す。（D）PID制御量は目標位置への追従のための制御量「-5」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量「5」にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「-5」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量「-5」が制御信号出力部１０４へ出力される。
【００６６】
制御対象が図９（Ｂ）に示す位置P3の停止目標値に追従している状態にある、図９（Ｃ）の時刻T15からT16までの期間での各項目を、図１０の（２０）に示す。（１７）の場合と同様に、（D）ＰＩＤ制御量「5」であり、（F）姿勢差補正量「5」が記憶部６０７に記憶される。（E）FF制御量「0」であるので、（F）姿勢差補正量「5」にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。（D）ＰＩＤ制御量「5」と、（G）姿勢差補正後のFF制御量「0」から、（H）総制御量「5」が制御信号出力部１０４へ出力される。
【００６７】
フィードフォワード制御時における制御対象の姿勢変化は、前進速度と後進速度との速度差の原因となるが、本実施形態では発生速度差を低減することができる。その理由は、前述したように、停止期間での姿勢差補正量の低周波数成分をフィードフォワード制御量へ加算する処理の効果に依るものである。すなわち、本実施形態では姿勢変化を考慮しない場合に比べて、進行方向（駆動方向）の違いに起因する発生速度差が小さい。
【００６８】
本実施形態では、固定位置への位置制御中に制御対象の姿勢変化へ抗するために出力しているフィードバック制御量を記憶部に保存する。そして、制御対象の速度を目標速度へ追従させるフィードフォワード制御において、記憶部に保存された姿勢差補正量に基づいてフィードフォワード出力補正が行われる。制御対象の姿勢変化に対して釣り合うための制御量に基づく出力補正が行われる結果、制御対象の姿勢が変化してもフィードフォワード出力によって進行方向の違いに起因する発生速度差が生じる可能性を低減できる。したがって、位置サーボ制御を安定化させることができる。
【００６９】
［第２実施形態］
次に本発明の第２実施形態を説明する。本実施形態では、目標速度が０で固定位置への位置制御中のフィードバック補償器の出力を姿勢差補正量として保存する。フィードフォワード制御では、保存された姿勢差補正量に基づいてフィードフォワード出力補正が行われ、外乱推定オブザーバは総制御量から、保存された姿勢差補正量を減算して外乱推定を行う。なお、第１実施形態の場合と同様の構成部については既に使用した符号を用いることで、それらの詳細な説明を省略し、主として相違点を説明する。
【００７０】
図１１は本実施形態に係る制御系の構成を例示するブロック線図である。加算部については加算処理及び減算処理（負値の加算）を含むものとして説明する。
位置エンコード処理部６０２は、ＡＤ変換値がサイン波状に変化するのに応じた距離への変換を行う。変換後の信号は加算部６０３及び外乱推定オブザーバ１１０１に出力される。
【００７１】
記憶部６０７は姿勢差補正量を記憶している。姿勢差補正量は、外乱推定オブザーバ１１０１での外乱推定の際に、総制御量から、姿勢変化へ抗するための制御量を差し引くために用いられる。また姿勢差補正量は、FF補償器６０５でのフィードフォワード出力値の生成の際に、姿勢変化があっても進行方向に対する発生速度差を小さくするための補正量として用いられる。記憶部６０７に記憶される姿勢差補正量の決定方法については後述する。加算部１１０２は加算部６０６の出力である総制御量を正入力とし、記憶部６０７が記憶している姿勢差補正量を負入力として、総制御量から姿勢差補正量を減算する。減算結果は外乱推定オブザーバ１１０１に出力される。
【００７２】
外乱推定オブザーバ１１０１には、加算部１１０２の出力及び位置エンコード処理部６０２の出力が入力される。外乱推定オブザーバ１１０１はリニアモータ１０６に印加した制御量と、制御対象の実際の速度との差に基づき外乱推定を行う。外乱推定オブザーバ１１０１は推定した外乱に応じた外乱相殺制御量を生成して加算部６０６に出力する。外乱推定オブザーバ１１０１の詳細については図１２及び図１３を用いて後述する。
【００７３】
加算部６０６は、FB補償器６０４が出力するＰＩＤ制御量と、外乱推定オブザーバ１１０１が出力する外乱相殺制御量と、FF補償器６０５のフィードフォワード出力を加算する。三出力の和は総制御量として制御信号出力部１０４及び加算部１１０２へ出力される。
以上のように、目標値に対してリニアモータ１０６の位置を追従させるサーボ制御系が構成される。
【００７４】
次に図１２のブロック線図を参照して、外乱推定オブザーバ１１０１の構成を詳細に説明する。図中の「ｓ」はラプラス変数を表す。
ブロック１２０１は、位置エンコード処理部６０２の出力である位置情報を微分して速度情報へ変換する。
【００７５】
ブロック１２０２は、ブロック１２０１の出力である速度情報を微分した加速度情報と質量情報Ｍの運動方程式から、リニアモータ１０６の実際の出力を示す実発生推力情報へ変換する。制御サンプル間の移動量、即ち速度から実発生推力情報を求めているため、原理的に目標速度がゼロであって固定位置への位置制御中には、実発生推力情報がゼロとなる。
【００７６】
ブロック１２０３は、加算部１１０２の出力である制御量を、リニアモータ１０６のモデルから設計的に導出される発生推力情報へ変換する。リニアモータ１０６のモデルはＰＷＭのbit分解能数、モータ電源電圧Ｖ、抵抗値Ｒ、リアクタンス値Ｌ、推力変換定数Ｋｆを有し、抵抗値Ｒ、リアクタンス値Ｌについては「１／（ｓＬ＋Ｒ）」の因子として含む。リニアモータ１０６に印加している制御量から導出される発生推力情報を求めているため、原理的に目標速度がゼロであって固定位置へ位置制御中でも重力に抗する制御量を印加している場合には相当する推力が発生しているものとして変換される。
【００７７】
加算部１２０４は、実発生推力情報と、リニアモータ１０６のモデルから設計的に導出される発生推力情報との差分を、損失した外乱推力であるとして外乱推定結果へ変換する。この差分が外乱推力となるので、傾けられた状態の制御対象を移動目標へ追従させる位置制御中の外乱推定において、姿勢差を考慮せずに総制御量を用いると、速度発生に寄与せず重力に抗するための制御量が全て外乱推力扱いとされてしまう。そこで本実施形態では、姿勢変化で重力に抗するためにリニアモータ１０６に印加している制御量を外乱推定に使用しないように姿勢差補正量として総制御量から差し引く処理を加算部１１０２が行う。
【００７８】
ブロック１２０５は、加算部１２０４の出力である外乱推定結果と、リニアモータ１０６の逆モデルから、外乱推定結果に相当する推力を発生させるための外乱相殺制御量へ変換する。リニアモータ１０６の逆モデルは、ブロック１２０３に示すリニアモータ１０６のモデルに対して、ＰＷＭのbit分解能数、モータ電源電圧Ｖ、推力変換定数Ｋｆを逆数として有し、抵抗値Ｒ、リアクタンス値Ｌについては「ｓＬ＋Ｒ」の因子で含む。
以上のように、リニアモータ１０６に印加した制御量と制御対象の移動量から外乱を推定し、損失した推力として外乱を相殺する外乱相殺制御量を出力する外乱推定オブザーバ１１０１が構成される。
【００７９】
加算部６０６が三つの制御量を加算して制御信号出力部１０４に出力することで、FF補償器６０５やFB補償器６０４による制御だけでは補償しきれないリニアモータ制御系の個別特性差、経時変化などの外乱を相殺することができる。なお、本実施形態ではFB補償器６０４としてＰＩＤ制御器を使用しており、目標速度がゼロであって固定位置への位置制御中でも重力に抗する制御量がＩ制御成分として蓄積して出力される。なお、FF補償器６０５と外乱推定オブザーバ１１０１との組み合わせが可能な制御器であれば、特にFB補償器６０４はＰＩＤ制御器に限定されない。
【００８０】
次に図７、図１２から図１５を参照してフィードフォワード制御量及び姿勢差補正量の決定処理を説明する。本処理によれば、制御対象の姿勢が変化しても、進行方向の違いで発生速度差が生じる可能性を低減でき、推定状態量の結果が誤推定になる可能性を低減できる。
【００８１】
図１３は、図１１のブロック線図にてＣＰＵ１０１が実行する位置制御処理を説明するフローチャートである。図１４は、図１３のＳ１３０４に示す外乱推定オブザーバ処理を詳細に示すフローチャートである。
図１３にてＳ１３０１、Ｓ１３０５、Ｓ１３０６、Ｓ１３０７、Ｓ１３０８の処理はそれぞれ、図８のＳ８０１、Ｓ８０２、Ｓ８０３、Ｓ８０４、Ｓ８０５の処理と同様である。よって、以下では相違点を説明する。
【００８２】
図１３のＳ１３０１でＣＰＵ１０１はカウント状態を取得してから、Ｓ１３０２で目標発生部６０１がカウント停止中であるかどうかを判断する。カウント停止中の場合、Ｓ１３０３へ処理を進め、カウント増減中の場合、Ｓ１３０４へ移行する。
【００８３】
Ｓ１３０３でＣＰＵ１０１は外乱相殺制御量を０とし、外乱推定オブザーバ処理回数（以下、単に処理回数という）を０に設定する。原理的には目標速度が０で固定位置への位置制御中に実発生推力情報は０となり、外乱推定ができないので、外乱相殺制御量が０に設定される。つまり実質的に外乱推定オブザーバ１１０１がOFF状態となる。Ｓ１３０４でＣＰＵ１０１は、外乱推定オブザーバ１１０１による外乱推定オブザーバ処理を実行する。外乱推定オブザーバ処理の詳細については図１４を用いて後述する。
【００８４】
Ｓ１３０３またはＳ１４０４の後、Ｓ１３０５に進み、ＣＰＵ１０１はさらにＳ１３０６を実行して、Ｓ１３０７の判断処理でＳ１３０８、またはＳ１３０９に分岐する。Ｓ１３０７でカウント停止中と判断された場合、Ｓ１３０８でＣＰＵ１０１は姿勢差補正量を抽出するＬＰＦ処理を行い、次回のフィードフォワード制御用及び外乱推定オブザーバ処理用に姿勢差補正量としてＬＰＦ通過量を設定する。
【００８５】
Ｓ１３０７でカウント停止中でない場合、またはＳ１３０８の後、Ｓ１３０９に処理を進め、加算部６０６はＰＩＤ制御量と、姿勢差補正済みフィードフォワード制御量と、外乱相殺制御量を加算し、総制御量が算出される。総制御量は加算部６０６から制御信号出力部１０４へ出力される。次のＳ１３１０でＣＰＵ１０１は、次回の外乱推定オブザーバ処理用に総制御量をＲＡＭ１０３に保存して処理を終える。
以上のように制御対象の姿勢変化があった場合でもカウント停止中、即ち固定位置へ位置制御中におけるFB補償器６０４のＰＩＤ制御量にＬＰＦ処理を施した量が姿勢差補正量として記憶部６０７に保存される。
【００８６】
次に、図１４のフローチャートを参照して、図１３のＳ１３０４に示す外乱推定オブザーバ処理を説明する。
Ｓ１４０１でＣＰＵ１０１は、位置エンコード処理部６０２で処理された現在の位置を取得し、Ｓ１４０２で処理回数に１を加算してＳ１４０３へ処理を進める。Ｓ１４０３は処理回数が２回以上であるかどうかの判定処理である。ＣＰＵ１０１は処理回数が２回以上であると判定した場合、Ｓ１４０４へ処理を進め、２回未満であれば制御対象の移動量を計測できないのでＳ１４０９に移行する。
【００８７】
Ｓ１４０４にてＣＰＵ１０１は、ＲＡＭ１０３に保存されている前回出力の総制御量、現在の姿勢差補正量、前回保存の位置（前回位置）を取得する。前回出力の総制御量とは図１３のＳ１３１０でＲＡＭ１０３に保存されたデータの示す総制御量である。前回位置とは後述のＳ１４０９でＲＡＭ１０３に保存されたデータの示す位置である。Ｓ１４０５でＣＰＵ１０１は、現在の位置と前回位置との差分、即ち移動量から速度を推定する。これは図１２のブロック１２０１での変換に相当する。推定速度とリニアモータ１０６の逆モデルに基づいて、実際に発生していると推定される実発生推力が算出される。これは図１２のブロック１２０２での変換に相当する。次のＳ１４０６において加算部１１０２は加算部６０６の出力する総制御量から姿勢差補正量（記憶部６０７の記憶値）を減算する。減算結果である制御量とリニアモータ１０６のモデルから、当該制御量を与えた場合に発生すると期待される発生推力（以下、期待発生推力という）が推定される。これは図１２のブロック１２０３での変換に相当する。
【００８８】
Ｓ１４０７にてＣＰＵ１０１は、Ｓ１４０６で算出した期待発生推力の推定値と、Ｓ１４０５で算出した実発生推力の推定値との差分から、リニアモータ１０６の内部で失われた外乱を推定する。これは図１２の加算部１２０４による減算処理に相当する。次のＳ１４０８でＣＰＵ１０１は、Ｓ１４０７で算出した外乱推定値から、それを相殺する推力を発生させるための外乱相殺制御量を算出する。これは図１２のブロック１２０５での変換に相当する。Ｓ１４０９でＣＰＵ１０１は位置エンコード処理部６０２から取得した現在の位置を、次回の外乱推定オブザーバ処理用としてＲＡＭ１０３に保存して処理を終了する。保存されたデータの示す位置が前回位置として次回の処理（Ｓ１４０４）で使用される。
【００８９】
次に、図９及び図１５を参照して、制御例を具体的に説明する。図１５は動作中の数値変化例を説明する図である。図１５にて（A)から（G）の各項目は図１０と同じであり、相違点は以下のとおりである。
（I）前回の総制御量：図１３のＳ１３１０でＲＡＭ１０３に保存されるデータから取得される。
（J）外乱推定用制御量：（I）前回の総制御量と（F）姿勢差補正量との差分である。（I）前回の総制御量が取得できない場合、「計算OFF」（外乱推定オブザーバ１１０１がOFF状態）となる。
（K）外乱相殺制御量：図１４のＳ１４０８で外乱推定オブザーバ１１０１が算出する。
（L）今回の総制御量：図１３のＳ１３０９で算出され、（D）ＰＩＤ制御量と、（G）姿勢差補正後のFF制御量と、（K）外乱相殺制御量との和である。
【００９０】
図９（Ａ）の時刻T0からT5過ぎまでの期間では制御対象が水平姿勢であり、図１５では（１）から（７）までの期間に相当する。制御対象が図９（Ｂ）に示す位置P1の停止目標値に追従している状態にある、図９（Ｃ）の時刻T0からT1までの期間にて図1５の（１）に示すように、各制御量はいずれも「0」である。（F）姿勢差補正量として「0」が記憶部６０７に記憶される。停止中、（J）外乱推定用制御量を用いる外乱推定オブザーバ１１０１は計算OFFの状態であるので、（K）外乱相殺制御量は「0」となる。つまり、制御対象の固定位置への位置制御中には、外乱相殺制御量を加算しない（あるいは「0」が加算される）。
（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「0」と、（K）外乱相殺制御量「0」から、（L）今回の総制御量は「0+0+0」、即ち「0」となる。
【００９１】
制御対象が図９（Ｂ）に示す停止目標値P1からP2へ、図９（Ｃ）の速度V1で移動を開始する時刻T1での各項目を、図１５の（２）に示す。（E）FF制御量は、加速度を発生させるために必要な制御量「15」が算出されたものとする。この時点で（F）姿勢差補正量が「0」であるので、（G）姿勢差補正後のFF制御量は速度0からV1への加速に必要な制御量「15+0=15」となる。停止中は（J）外乱推定用制御量を用いる外乱推定オブザーバ１１０１は計算OFFの状態であるので、（K）外乱相殺制御量は「0」となる。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「15」と、（K）外乱相殺制御量「0」から、（L）今回の総制御量は「0+15+0」、即ち「15」が制御信号出力部１０４へ出力される。
【００９２】
制御対象が図９（Ｂ）に示す停止目標値P1からP2へ、図９（Ｃ）の速度V1で移動中の期間、つまり、時刻T1からT2までの期間での各項目を図１５の（３）に示す。（D）PID制御量「10」、（E）FF制御量「0」であり、（F）姿勢差補正量にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。一制御周期前のＳ１３１０の処理で保存された、（I）前回の総制御量が「10」であったとすると、（F）姿勢差補正量は「0」であるので、（J）外乱推定用制御量は「10-0=10」となる。例えば、（K）外乱相殺制御量「1」が出力される。（D）ＰＩＤ制御量「10」と、（G）姿勢差補正後のFF制御量「0」と、（K）外乱相殺制御量「1」から、（L）今回の総制御量は「10+0+1」、即ち「11」が制御信号出力部１０４へ出力される。
【００９３】
制御対象が図９（Ｂ）に示す位置P2の停止目標値に追従している状態にある、図９（Ｃ）の時刻T2からT3までの期間での各項目を、図１５の（４）に示す。（１）と同様、各制御量は「0」であり、（F）姿勢差補正量「0」が記憶部６０７に記憶される。停止中、（J）外乱推定用制御量を用いる外乱推定オブザーバ１１０１は計算OFFの状態であるので、（K）外乱相殺制御量は「0」となる。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「0」と、（K）外乱相殺制御量「0」から、（L）今回の総制御量は「0+0+0」、即ち「0」となる。
【００９４】
制御対象が図９（Ｂ）に示す停止目標値P2からP1へ、図９（Ｃ）の速度「-V1」で移動を開始する時刻T3での各項目を、図１５の（５）に示す。（E）FF制御量「-15」が算出されたとして、この時点で（F）姿勢差補正量が「0」であるので、（G）姿勢差補正後のFF制御量は「-15+0=-15」となる。停止中、（J）外乱推定用制御量を用いる外乱推定オブザーバ１１０１は計算OFFの状態であるので、（K）外乱相殺制御量は「0」である。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「-15」と、（K）外乱相殺制御量「0」から、（L）今回の総制御量は「0-15+0」、即ち「-15」が制御信号出力部１０４へ出力される。
【００９５】
制御対象が図９（Ｂ）に示す停止目標値P2からP1へ、図９（Ｃ）の速度「-V1」で移動中の時刻T3からT4までの期間での各項目を、図１５の（６）に示す。（D）PID制御量は目標位置への追従のための制御量「-10」であったとする。（E）FF制御量「0」であるので、（F）姿勢差補正量にかかわらず、（G）姿勢差補正後のFF制御量は「0」である。一制御周期前のＳ１３１０の処理で保存された（I）前回の総制御量が「-10」であったとすると、（F）姿勢差補正量「0」から、（J）外乱推定用制御量は「-10-0=-10」となる。例えば、（K）外乱相殺制御量「-1」が出力される。（D）ＰＩＤ制御量「-10」と、（G）姿勢差補正後のFF制御量「0」と、（K）外乱相殺制御量「-1」から、（L）今回の総制御量は「-10+0-1」、即ち「-11」が制御信号出力部１０４へ出力される。
【００９６】
制御対象が図９（Ｂ）に示す位置P1の停止目標値に追従している状態にある、図９（Ｃ）の時刻T4からT5までの期間での各項目を、図１５の（７）に示す。各項目の値は（１）と同じである。
【００９７】
以下、同様にして制御量の演算処理が実行される。図９（Ａ）の時刻T6前からT11過ぎまでの期間では、制御対象の姿勢が傾斜１であり、図１５では（８）から（１４）までの期間に相当する。（J）外乱推定用制御量を用いる外乱推定オブザーバ１１０１が計算OFFの状態である行については、図１０の場合と同様である。つまり、（L）今回の総制御量は、図１０の（H）総制御量に相当する。よって、以下では外乱推定オブザーバ１１０１が計算OFFでない状態の（１０）及び（１３）を説明する。
【００９８】
図１５の（１０）は、制御対象が図９（Ｂ）にて停止目標値P1からP2へ、図９（Ｃ）の速度V1で移動中の時刻T7からT8までの期間での各項目を示す。（D）PID制御量は、目標位置への追従のための制御量「0」である。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。一制御周期前のＳ１３１０の処理で保存された、（I）前回の総制御量が「0」であったとすると、（F）姿勢差補正量「-10」から、（J）外乱推定用制御量は「0-(-10)=10」となる。例えば、水平姿勢の場合の図１５の（３）と同様、（K）外乱相殺制御量が「1」となる。（D）ＰＩＤ制御量「0」と、（G）姿勢差補正後のFF制御量「0」と、（K）外乱相殺制御量「1」から、（L）今回の総制御量は「0+0+1」、即ち「1」が制御信号出力部１０４へ出力される。
【００９９】
図１５の（１３）は、制御対象が図９（Ｂ）に示す停止目標値P2からP0へ、図９（Ｃ）の速度「-V2」で移動中の時刻T9からT10までの期間での各項目を示す。（D）PID制御量は、目標位置への追従のための制御量「-30」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量にかかわらず、（G）姿勢差補正後のFF制御量は「0」である。一制御周期前のＳ１３１０の処理で保存された、（I）前回の総制御量が「-30」であったとすると、（F）姿勢差補正量「-10」から、（J）外乱推定用制御量は「-30-(-10)=-20」となる。例えば、（K）外乱相殺制御量「-1」が出力される。（D）ＰＩＤ制御量「-30」と、（G）姿勢差補正後のFF制御量「0」と、（K）外乱相殺制御量「-1」から、（L）今回の総制御量は「-30+0-1」、即ち「-31」が制御信号出力部１０４へ出力される。
【０１００】
図９（Ａ）の時刻T12前からT16過ぎまでの期間では、制御対象の姿勢が傾斜２であり、図１５では（１５）から（２０）までの期間に相当する。（J）外乱推定用制御量を用いる外乱推定オブザーバ１１０１が計算OFFの状態である行については、図１０の場合と同様である。つまり、（L）今回の総制御量は、図１０の（H）総制御量に相当する。よって、以下では外乱推定オブザーバ１１０１が計算OFFでない状態の（１６）及び（１９）を説明する。
【０１０１】
図１５の（１６）は、制御対象が図９（Ｂ）に示す停止目標値P3からP4へ、図９（Ｃ）の速度V1で移動中の時刻T12からT13までの期間での各項目を示す。（D）PID制御量は、目標位置への追従のための制御量「15」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。一制御周期前のＳ１３１０の処理で保存された、（I）前回の総制御量が「15」であったとすると、（F）姿勢差補正量「5」から、（J）外乱推定用制御量は「15-5=10」となる。例えば水平姿勢の場合の図１５の（３）と同様、（K）外乱相殺制御量「1」が出力される。（D）ＰＩＤ制御量「15」と、（G）姿勢差補正後のFF制御量「0」と、（K）外乱相殺制御量「1」から、（L）今回の総制御量は「15+0+1」、即ち「16」が制御信号出力部１０４へ出力される。
【０１０２】
図１５の（１９）は、制御対象が図９（Ｂ）に示す停止目標値P4からP3へ、図９（Ｃ）の速度「-V1」で移動中の時刻T14からT15までの期間での各項目を示す。（D）PID制御量は、目標位置への追従のための制御量「-5」であったとする。（E）FF制御量は等速区間にて加速度を発生しない制御量「0」であるので、（F）姿勢差補正量にかかわらず、（G）姿勢差補正後のFF制御量は「0」となる。一制御周期前のＳ１３１０の処理で保存された、（I）前回の総制御量が「-5」であったとすると、（F）姿勢差補正量「5」から、（J）外乱推定用制御量は「-5-5=-10」となる。例えば水平姿勢の場合の図１５の（６）と同様、（K）外乱相殺制御量「-1」が出力される。（D）ＰＩＤ制御量「-5」と、（G）姿勢差補正後のFF制御量「0」と、（K）外乱相殺制御量「-1」から、（L）今回の総制御量は「-5+0-1」、即ち「-6」が制御信号出力部１０４へ出力される。
【０１０３】
次に、位置制御装置の適用例としてカメラのレンズ位置制御装置について説明する。例えば、チルティング中や接写撮影中にはカメラの姿勢変化が発生する。撮影動作中には、数秒単位のゆっくりとした周期でカメラ姿勢が変化するのに対し、位置制御では数ミリ秒単位の高速な周期で駆動と停止が繰り返される。可動光学部材であるレンズが移動目標値へ追従して移動している最中、即ち外乱推定中での姿勢変化は、推定ずれの原因となる。本実施形態では、このような推定誤差を低減できる。これは前述したように、停止期間での姿勢差補正量の低周波数成分を総制御量から減算する処理の効果に依る。よって本実施形態では、カメラ姿勢の変化を考慮しない場合に比べて推定誤差が小さい。また、フィードフォワード制御時の姿勢変化は前進と後進での発生速度差の原因となるが、本実施形態では発生速度差を低減できる。これは前述したように、停止期間での姿勢差補正量の低周波数成分をフィードフォワード制御量へ加算する処理の効果に依る。よって本実施形態では、カメラ姿勢の変化を考慮しない場合に比べて発生速度差が小さい。
【０１０４】
本実施形態では、固定位置への位置制御中に制御対象の姿勢変化へ抗するために出力される制御量を記憶部に保存し、目標位置への位置制御中には記憶部に保存された制御量を総制御量から減算して外乱推定を行う。よって、制御対象の姿勢変化へ抗するための速度発生に寄与しない制御量が除去されるので、姿勢変化による誤推定を低減させる効果が得られる。同時に、制御対象を目標速度へ追従させるフィードフォワード制御では前記姿勢差補正量に基づいてフィードフォワード出力補正が行われる。よって、制御対象の姿勢変化に対して釣り合うための制御量に基づく出力補正が行われる結果、制御対象の姿勢が変化してもフィードフォワード出力によって進行方向の違いに起因する発生速度差を生じる可能性が低減される。したがって、位置サーボ制御を安定化させる効果が得られる。
【０１０５】
［第３実施形態］
次に本発明の第３実施形態を説明する。本実施形態では、目標速度が０で固定位置への位置制御中のＰＩＤ補償器の出力を姿勢差補正量として保存する。適応同定では、制御入力から保存された姿勢差補正量を減算して同定を行う。なお、第１、第２実施形態の場合と同様の構成部については既に使用した符号を用いることで、それらの詳細な説明を省略し、主として相違点を説明する。
【０１０６】
図１６は本実施形態に係る制御系の構成を例示するブロック線図である。加算部については加算処理及び減算処理（負値の加算）を含むものとして説明する。位置エンコード処理部６０２が距離への変換を行った後の信号は、加算部６０３及び適応同定器（適応同定手段）１６０１に出力される。記憶部６０７は、姿勢差補正量を記憶している。姿勢差補正量は、適応同定器１６０１での適応同定の際に、ＰＩＤ制御量から、姿勢変化へ抗するための制御量を差し引くために用いられる制御対象が停止状態の場合の当該停止状態を維持するための制御量である。記憶部６０７に記憶される姿勢差補正量の決定方法については後述する。
【０１０７】
加算部１１０２は、可変ＰＩＤ補償器（フィードバック補償手段）１６０３の出力であるＰＩＤ制御量（フィードバック制御量）を正入力とし、記憶部６０７が記憶している姿勢差補正量を負入力として、制御量から姿勢差補正量を減算する。減算結果（同定用入力）は適応同定器１６０１に出力される。減算結果は速度発生させる成分のみになった制御量である。
【０１０８】
適応同定器１６０１には、加算部１１０２の出力及び位置エンコード処理部６０２の出力が入力される。適応同定器１６０１は、リニアモータ１０６に印加した制御量及び制御対象の実際の応答から適応同定した同定モデルの出力と、実際の応答の差分である同定誤差に基づき適応同定を行う。すなわち、同定モデルの出力と、実際の応答が一致するように適応同定を行う。適応同定器１６０１が同定した推定パラメータは信号１６０２を介し、可変ＰＩＤ補償器１６０３へ出力される。適応同定器１６０１の詳細については図１７を用いて後述する。
【０１０９】
可変ＰＩＤ補償器１６０３は、適応同定器１６０１が出力する推定パラメータに基づきＰＩＤ制御係数を補正し、以降のＰＩＤ制御量の生成に用いる。ＰＩＤ制御量は制御信号出力部１０４及び加算部１１０２へ出力される。以上のように、目標値に対してリニアモータ１０６の位置を追従させるサーボ制御系が構成される。
【０１１０】
次に、図１７のブロック線図を参照して、適応同定器１６０１の構成を詳細に説明する。図中の「ｓ」はラプラス変数を表す。乗算部については乗算算処理及び除算処理を含むものとして説明する。状態フィルタ１（１７０１）は、加算部１１０２の出力である可変ＰＩＤ補償器１６０３の制御量から姿勢差補正量を差し引いた制御量をフィルタ処理して状態フィルタ出力値１を出力する。例えば、伝達関数は、１／（ｓ＋λ）、ｓはラプラス変数、λ＞１とする。
【０１１１】
適応同定則１に則り、乗算部１７０２で状態フィルタ１（１７０１）の出力値１と加算部１７１３の出力である同定誤差が乗算された後、適応ゲイン１（１７０３）で変換され、変換結果がブロック１７０４で積分され推定パラメータ値１となる。例えば、適応同定則１は、前記状態フィルタ出力値１と前記同定誤差と負の適応ゲイン１との積を積分するものである。適応同定則は、様々なものが提案されているが、時間経過とともに同定誤差が零へ向かう適応同定則であれば、本実施形態の適応同定則に限定されない。乗算部１７０５で、状態フィルタ出力値１とブロック１７０４の出力である推定パラメータ値１が乗算され出力される。
【０１１２】
ブロック１７０６は、位置エンコード処理部６０２の出力である位置情報を微分して速度情報へ変換する。ｓはラプラス変数である。状態フィルタ２（１７０７）は、ブロック１７０６の出力である速度情報、または加算部１７１２の出力である同定モデルの出力をフィルタ処理して状態フィルタ出力値２を出力する。例えば、伝達関数は状態フィルタ１（１７０１）と同じである。推定パラメータ値が未知の場合はブロック１７０６の出力を処理し、概略値が既知の場合は加算部１７１２の出力を処理する。
【０１１３】
適応同定則２に則り、乗算部１７０８で状態フィルタ出力値２と加算部１７１３の出力である同定誤差が乗算された後、適応ゲイン２（１７０９）で変換され、変換結果がブロック１７１０で積分され推定パラメータ値２となる。適応同定則２は、入力されるフィルタ出力値以外は適応同定則１と同じである。乗算部１７１１で、状態フィルタ出力値２とブロック１７１０の出力である推定パラメータ値２が乗算され出力される。加算部１７１２で乗算部１７０５の出力と乗算部１７１１の出力を加算した同定モデルとしての応答を出力する。加算部１７１３は、加算部１７１２から出力される同定モデルとしての応答出力（同定モデルの応答）とブロック１７０６が出力する実際の応答（同定対象の応答）との差分を同定誤差として乗算部１７０２、１７０８へ出力する。
【０１１４】
実際の応答と同定モデルとしての応答出力の差分である同定誤差が減るということは、同定モデルが実機の応答に近づいているということである。本実施形態では、例えば、前述の状態フィルタ出力値と前記同定誤差と負の適応ゲインとの積を積分したものを推定パラメータ値とする適応同定則であるので同定誤差が零に近づくほど、推定パラメータ値へ積分される値が小さくなり、収束へ向かう。
【０１１５】
同定結果である推定パラメータ値１及び値２は、可変ＰＩＤ補償器１６０３から参照されてゲイン係数などの制御パラメータの補正に用いられる。例えば、現在のＰＩＤ制御量を生成するゲインを決定した時の推定パラメータ値と新たに同定された推定パラメータ値の比率から変化をキャンセルするように新しいゲインを決定すれば、一巡制御ループ特性の変動を抑圧できる。
【０１１６】
次に、図１６から図２０を参照して、制御対象の姿勢が変化しても適応誤差が生じる可能性を低減できる適応同定器に対する姿勢差補正量の決定処理を説明する。図１８は、図１６のブロック線図にてＣＰＵ１０１が実行する位置制御処理を説明するフローチャートである。図１９は、図１８のＳ１８０９に示す適応同定処理を詳細に示すフローチャートである。
【０１１７】
図１８のＳ１８０１でＣＰＵ１０１は、初回の適応同定処理であるかどうかを判定し、初回ならＳ１８０２へ処理を移行し、処理が二回目以上ならＳ１８０３へ処理を移行する。Ｓ１８０２でＣＰＵ１０１は、適応同定処理回数を０、姿勢差補正処理経過カウントを９９と設定し、Ｓ１８０３へ処理を移行する。Ｓ１８０３でＣＰＵ１０１は、目標発生部６０１が目標値をカウント増減中か、またはカウント停止中かを示すカウント状態を取得する。カウント増減中とは、目標速度が０以外で制御対象を移動目標へ追従させる位置制御が指示されていることである。また、カウント停止中とは、目標速度が０であって制御対象を固定位置で停止させ続ける位置制御が指示されていることである。Ｓ１８０４でＣＰＵ１０１は、目標発生部６０１の目標値、位置エンコード処理部６０２で処理された現在の位置を取得し、加算部６０３により目標値と現在位置との差から位置エラーを算出する。可変ＰＩＤ補償器１６０３は、位置エラーを入力とするＰＩＤ制御量を算出する。
【０１１８】
Ｓ１８０５でＣＰＵ１０１は、目標発生部６０１がカウント停止中であるかどうかを判断する。カウント停止中の場合、Ｓ１８０６へ処理を進め、カウント増減中の場合、Ｓ１８０７へ移行する。Ｓ１８０６でＣＰＵ１０１は、Ｓ１８０４で求めた現在のＰＩＤ制御量から所定の周波数以下で変化する姿勢差補正量を抽出するローパスフィルタ処理を行う。遮断周波数については、第１、第２実施形態の場合と同様である。そして、フィルタ処理後の値が姿勢差補正量として記憶部６０７に記憶される。姿勢差補正処理経過カウントをゼロクリアして、Ｓ１８０９へ処理を移す。
【０１１９】
Ｓ１８０７でＣＰＵ１０１は、姿勢差補正処理経過カウントを１加算して、Ｓ１８０８へ処理を移行する。Ｓ１８０８でＣＰＵ１０１は、姿勢差補正処理経過カウンタが９９以上であるかどうかを判断する。９９以上の場合、Ｓ１８１２へ処理を移行し、９９未満の場合、Ｓ１８０９へ処理を移行する。これにより、姿勢差補正処理経過カウンタの初期値が９９に設定されているので、少なくとも一回は、固定位置で停止させ続ける位置制御をしている状態が発生するまでは適応同定処理へ処理を移さない。また、固定位置で停止させ続ける位置制御をしていない状態が１００回以上継続したら、姿勢差補正量の時間経過ズレを考慮して適応同定処理へ処理を移さない。すなわち、姿勢差補正量が記憶部６０７に記憶されていないときや、姿勢差補正量の記憶更新が所定期間以上されていないときは、適応同定処理を行わない。
【０１２０】
Ｓ１８０９でＣＰＵ１０１は、適応同定器１６０１による適応同定処理を実行する。適応同定処理の詳細については図１９を用いて後述する。Ｓ１８１０でＣＰＵ１０１は、同定結果利用可能フラグがセットされているかどうかを判断する。セットされている場合は、Ｓ１８１１へ処理を進め、セットされていない場合、処理を終える。Ｓ１８１１でＣＰＵ１０１は、適応同定器１６０１による適応同定結果を用いて可変ＰＩＤ補償器１６０３のＰＩＤ係数の補正処理を実行する。係数補正処理の詳細については図２０を用いて後述する。Ｓ１８１２でＣＰＵ１０１は、適応同定処理回数を０と設定し、処理を終える。
【０１２１】
次に、図１９のフローチャートを参照して、図１８のＳ１８０９に示す適応同定処理を説明する。Ｓ１９０１でＣＰＵ１０１は、位置エンコード処理部６０２で処理された現在の位置を取得し、Ｓ１９０２で適応同定処理回数に１を加算してＳ１９０３へ処理を進める。Ｓ１９０３は処理回数が２回未満であるかどうかの判定処理である。ＣＰＵ１０１は処理回数が２回以上であると判定した場合、Ｓ１９０５へ処理を進め、２回未満であれば制御対象の移動量を計測できないのでＳ１９０４に移行する。Ｓ１９０４でＣＰＵ１０１は、ＲＯＭ１０２に記録されている推定パラメータ値１及び値２の初期値をブロック１７０４、１７１０の初期値としてＲＡＭ１０３に保存する。また、状態フィルタ出力値１及び値２の初期値をブロック１７０１、１７０７の初期値としてＲＡＭ１０３に保存して、Ｓ１９１０へ処理を移行する。
【０１２２】
Ｓ１９０５でＣＰＵ１０１は、ＲＡＭ１０３に保存されている前回保存の位置（前回位置）を取得する。前回位置とは、後述のＳ１９１０でＲＡＭ１０３に保存されたデータの示す位置である。現在の位置と前回位置との差分、即ち移動量から速度を推定する。これは、図１７のブロック１７０６での変換に相当する。
【０１２３】
Ｓ１９０６でＣＰＵ１０１は、ＲＡＭ１０３に保存されている前回保存の推定パラメータ値１及び値２と状態フィルタ出力値１及び値２を取得する。推定パラメータ値１と状態フィルタ出力値１の積と、推定パラメータ値２と状態フィルタ出力値２の積を加算し、同定器出力を算出する。これは図１７の乗算部１７０５、１７１１での乗算処理、加算部１７１２での加算処理に相当する。さらに、Ｓ１９０５で算出された速度と同定器出力の差分を同定誤差として算出してＳ１９０７へ処理を移行する。これは図１７の加算部１７１３での減算処理に相当する。
【０１２４】
Ｓ１９０７でＣＰＵ１０１は、同定誤差と状態フィルタ出力値１と適応ゲインの積を積分した推定パラメータ値１を更新して保存する。これは図１７の乗算部１７０２での乗算処理、ブロック１７０３、１７０４での変換に相当する。また同定誤差と状態フィルタ出力値２と適応ゲインの積を積分した推定パラメータ値２を更新して保存し、Ｓ１９０８へ処理を移す。これは図１７の乗算部１７０８での乗算処理、ブロック１７０９、１７１０での変換に相当する。
【０１２５】
Ｓ１９０８でＣＰＵ１０１は、Ｓ１８０４で算出のＰＩＤ制御量からＳ１８０６で保存の姿勢差補正量を減算した制御量をフィルタ処理して状態フィルタ出力値１を更新して保存し、Ｓ１９０９へ処理を移行する。これは図１７の加算部１１０２の減算処理とブロック１７０１での変換に相当する。現在の制御量から姿勢差補正量を減算するので、姿勢差があっても、あたかも水平姿勢状態に正規化された制御量となる。Ｓ１９０９でＣＰＵ１０１は、Ｓ１９０５で算出された速度算出値をフィルタ処理して状態フィルタ出力値２を更新して保存し、Ｓ１９１０へ処理を移行する。これは図１７のブロック１７０７での変換に相当する。
【０１２６】
Ｓ１９１０でＣＰＵ１０１は、位置エンコード処理部６０２から取得した現在の位置を、次回の適応同定処理用としてＲＡＭ１０３に保存して処理を終了する。保存されたデータの示す位置が前回位置として次回の処理（Ｓ１９０５）で使用される。Ｓ１９１１は同定誤差が所定の範囲内にあるかどうかの判定処理である。ＣＰＵ１０１は、所定の範囲内にあると判定した場合、Ｓ１９１２へ処理を進め、所定の範囲外にあれば同定結果が未収束であるとしてＳ１９１３に移行する。Ｓ１９１２でＣＰＵ１０１は、同定結果が収束しているので同定結果利用可能フラグをセットして処理を終了する。Ｓ１９１３でＣＰＵ１０１は同定結果が収束していないので同定結果利用可能フラグをクリアして処理を終了する。
【０１２７】
次に、図２０のフローチャートを参照して、図１８のＳ１８１１に示す可変ＰＩＤ補償器のＰＩＤ係数補正処理を説明する。Ｓ２００１でＣＰＵ１０１は、現在の比例ゲイン係数へ、現在の比例ゲイン係数の基となっている現在のパラメータ値１と新しい推定パラメータ値１の比を乗算し、新しい比例ゲイン係数を算出し、Ｓ２００２へ処理を移行する。Ｓ２００２でＣＰＵ１０１は、現在の比例ゲイン係数としてＳ２００１で算出された新しい比例ゲイン係数を保存し、現在の比例ゲイン係数の基となっている現在のパラメータ値１としてＳ２００１で使った新しい推定パラメータ値１を保存し、処理を終了する。
【０１２８】
適応同定時における制御対象の姿勢変化は、同定誤差発生の原因となるが、本実施形態では、同定誤差を低減することができる。その理由は、前述したように、停止期間での姿勢差補正量の低周波数成分を適応同定処理へ入力する制御量から減算する処理の効果に依るものである。すなわち、本実施形態では、姿勢変化を考慮しない場合に比べて、常に水平姿勢状態に正規化された制御量から同定するのと等価になるので同定誤差が小さい。
【０１２９】
また、本実施形態では、固定位置への位置制御中に制御対象の姿勢変化へ抗するために出力される制御量を記憶部に保存し、適応同定中には記憶部に保存された制御量を現在制御量から減算して同定に用いる。よって、制御対象の姿勢変化へ抗するための速度発生に寄与しない制御量が除去されるので、姿勢変化による同定誤差を低減させる効果が得られる。したがって、位置サーボ制御の制御パラメータ決定条件として適応同定結果を用いる場合においても位置サーボ制御を安定化させる効果が得られる。
【０１３０】
［第４実施形態］
次に本発明の第４実施形態を説明する。本実施形態では、規範モデルのモデル速度が０で固定位置への位置制御中のフィードバック補償器の出力を姿勢差補正量として保存する。適応同定では、制御入力から保存された姿勢差補正量を減算して同定を行う。なお、第１、第２、第３実施形態の場合と同様の構成部については既に使用した符号を用いることで、それらの詳細な説明を省略し、主として相違点を説明する。
【０１３１】
図２１は本実施形態に係る制御系の構成を例示するブロック線図である。加算部については加算処理及び減算処理（負値の加算）を含むものとして説明する。乗算部については乗算算処理及び除算処理を含むものとして説明する。
【０１３２】
位置エンコード処理部６０２が距離への変換を行った後の信号は、加算部２１０７及び適応同定器１６０１に出力される。記憶部６０７は姿勢差補正量を記憶している。姿勢差補正量は、適応同定器１６０１での適応同定の際に、同定に用いる制御量から、姿勢変化へ抗するための制御量を差し引くために用いられる。記憶部６０７に記憶される姿勢差補正量の決定方法については後述する。
【０１３３】
加算部２１０１は、目標発生部６０１が出力する目標値信号を正入力とし、リニアエンコーダモデル２１０３が出力するモデル位置信号を負入力として両者の差を算出して出力する。これはモデル位置エラーである。リニアモータ規範速度モデル２１０２は、加算部２１０１の出力であるモデル位置エラーを入力とし、モデル速度を生成してリニアエンコーダモデル２１０３と逆モデルフィルタ２１０４に出力する。
【０１３４】
リニアエンコーダモデル２１０３は、モデル速度を入力とし、位置エンコード処理部６０２と同一単位のモデル位置へ変換して、加算部２１０７及び２１０１に出力される。逆モデルフィルタ２１０４は、例えば、リニアモータ規範速度モデル２１０２の伝達関数が１／（ｓ＋１）（ｓはラプラス変数）であったとすると、伝達関数を（ｓ＋１）とする。すなわち、規範モデルの目標速度に対する規範応答を取得して、規範制御量に変換する。加算部２１０５は、逆モデルフィルタ２１０４が出力する信号を正入力とし、図２２の適応同定器１６０１の乗算部２２０１が出力する推定パラメータ値２と実速度の乗算を負入力として両者の差を算出して出力する。
【０１３５】
乗算部２１０６は、加算部２１０５が出力する信号を乗数入力とし、適応同定器１６０１が出力する推定パラメータ１を除数入力として両者の乗算を算出して出力する。これにより、適応同定された制御対象が規範応答速度を速度目標に速度制御されるような適応制御量へ変換され、第２算出手段（適応制御手段）に相当するフィードフォワード要素として動作をする。
【０１３６】
加算部２１０７は、リニアエンコーダモデル２１０３が出力するモデル位置を正入力とし、位置エンコード処理部６０２が出力する現在の実位置信号を負入力として両者の差を算出して出力する。これはフィードバック補償器６０４への位置エラーである。フィードバック補償器６０４は、加算部２１０７の出力である位置エラーを入力とし、フィードバック制御量を生成して加算部２１０８に出力する。
【０１３７】
加算部２１０８は、フィードバック補償器６０４の出力と乗算部２１０６の出力を加算する。加算結果は、制御信号出力部１０４及び加算部１１０２へ出力される。以上のように、目標値に対するリニアモータ規範モデル２１０２の規範応答へ追従させるモデル規範形適応サーボ制御系が構成される。
【０１３８】
次に図２２のブロック線図を参照して、適応同定器１６０１の構成を説明する。図中の「ｓ」は、ラプラス変数を表す。乗算部については乗算算処理及び除算処理を含むものとして説明する。図１７と同じ符号のブロックについては説明を省略する。
【０１３９】
加算部１１０２の出力であるフィードバック制御量と、適応制御量の加算部２１０８の出力から姿勢差補正量を差し引いた制御量が状態フィルタ１（１７０１）へ入力される。ブロック１７１０で積分された推定パラメータ値２が、同定結果として乗算部２２０１でブロック１７０６の出力である実速度と乗算されて加算部２１０５へ出力される。ブロック１７０４で積分された推定パラメータ値１が同定結果として乗算部２１０６へ出力される。なお、適応同定則は、第３実施形態の場合と同様である。
【０１４０】
次に図２１から図２４を参照して、制御対象の姿勢が変化しても適応誤差が生じる可能性を低減できる適応同定器に対する姿勢差補正量の決定処理を説明する。図２３は、図２１のブロック線図にてＣＰＵ１０１が実行する位置制御処理を説明するフローチャートである。図２４は、図２３のＳ２３１０に示す適応同定処理を詳細に示すフローチャートである。
【０１４１】
図２３のＳ２３０１は、図１８のＳ１８０１と同じ処理である。Ｓ２３０２でＣＰＵ１０１は、適応同定処理回数を０、姿勢差補正処理経過カウントを９９と設定する。そして、ＲＯＭ１０２に記録されている推定パラメータ値１及び値２の初期値をブロック１７０４、１７１０の初期値としてＲＡＭ１０３に保存し、Ｓ２３０３へ処理を移行する。
【０１４２】
Ｓ２３０３でＣＰＵ１０１は、目標発生部６０１の目標値を取得し、リニアエンコーダモデル２１０３が出力するモデル位置を取得し、その差からモデル位置エラーを算出する。算出されたモデル位置エラーをリニアモータ規範速度モデル２１０２へ出力し、Ｓ２３０４へ処理を移行する。これは図２１の加算部２１０１の演算処理に相当する。
【０１４３】
Ｓ２３０４でＣＰＵ１０１は、リニアモータ規範速度モデル２１０２のモデル速度を取得し、モデル速度をリニアエンコーダモデル２１０３と逆モデルフィルタ２１０４へ出力し、Ｓ２３０５へ処理を移行する。これは図２１のブロック２１０２の変換に相当する。なお、リニアモータ規範速度モデル２１０２は、フィルタ処理で代用する。
【０１４４】
Ｓ２３０５でＣＰＵ１０１は、リニアエンコーダモデル２１０３のモデル位置、位置エンコード処理部６０２で処理された現在の実位置を取得し、加算部２１０７によりモデル位置と現在の実位置との差から実位置エラーを算出する。リニアエンコーダモデル２１０３は、積分処理で代用する。フィードバック補償器６０４は、実位置エラーを入力とするフィードバック制御量を算出する。
【０１４５】
Ｓ２３０６でＣＰＵ１０１は、モデル速度が停止中、即ちゼロであるかどうかを判断する。停止中の場合、Ｓ２３０７へ処理を進め、また速度発生中の場合、Ｓ２３０８へ移行する。Ｓ２３０７でＣＰＵ１０１は、Ｓ２３０５で求めた現在のフィードバック制御量から所定の周波数以下で変化する姿勢差補正量を抽出するローパスフィルタ処理を行う。遮断周波数については、第３実施形態の場合と同様である。フィルタ処理後の値が姿勢差補正量として記憶部６０７に記憶される。姿勢差補正処理経過カウントをゼロクリアして、Ｓ２３１０へ処理を移す。
【０１４６】
リニアモータ規範速度モデル２１０２は、制御対象の姿勢差の影響までモデル化していないのでモデル位置が目標位置へ到達すると、モデル速度がゼロになる。モデル速度がゼロでは、乗算部２１０６から加算部２１０８への入力となる適応制御量はゼロになるので、姿勢差でのずり落ちへ抗するための制御量は、フィードバック制御量として発生することとなる。Ｓ２３０８、Ｓ２３０９は、図１８のＳ１８０７、Ｓ１８０８と同じ処理である。Ｓ２３１０でＣＰＵ１０１は、適応同定器１６０１による適応同定処理を実行する。
【０１４７】
適応同定処理の詳細については図２４を用いて後述する。Ｓ２３１１は、図１８のＳ１８１２と同じ処理である。Ｓ２３１２でＣＰＵ１０１は、適応制御器の適応制御量を算出して、Ｓ２３１０へ処理を移行する。これは図２１のブロック２１０４の変換と加算部２１０５、乗算部２１０６の演算処理に相当する。適応同定処理が一度も実行される前は、推定パラメータ値１、値２の初期値を用いて適応制御量が算出される。Ｓ２３１２でＣＰＵ１０１は、適応制御量とフィードバック制御量を加算して、算出して、制御信号出力部１０４及び加算部１１０２へ出力して処理を終える。これは図２１の加算部２１０８の演算処理に相当する。
【０１４８】
次に、図２４のフローチャートを参照して、図２３のＳ２３１０に示す適応同定処理を説明する。Ｓ２４０１でＣＰＵ１０１は、位置エンコード処理部６０２で処理された現在の実位置を取得し、Ｓ２４０２で適応同定処理回数に１を加算してＳ２４０３へ処理を進める。Ｓ２４０３は、図１９のＳ１９０３と同じ処理である。
【０１４９】
Ｓ２４０４でＣＰＵ１０１は、ＲＯＭ１０２に記録されている状態フィルタ出力値１及び値２の初期値をブロック１７０１、１７０７の初期値としてＲＡＭ１０３に保存して、Ｓ２４１０へ処理を移行する。Ｓ２４０５でＣＰＵ１０１は、ＲＡＭ１０３に保存されている前回保存の実位置（前回位置）を取得する。前回位置とは、後述のＳ２４１０でＲＡＭ１０３に保存されたデータの示す位置である。現在の実位置と前回の実位置との差分、即ち実移動量から実速度を推定する。これは図２２のブロック１７０６での変換に相当する。
【０１５０】
Ｓ２４０６でＣＰＵ１０１は、Ｓ１９０６と同様に推定パラメータ値１と状態フィルタ出力値１の積と、推定パラメータ値２と状態フィルタ出力値２の積を加算し、同定器出力を算出する。さらにＳ２４０５で算出された実速度と同定器出力の差分を同定誤差として算出してＳ２４０７へ処理を移行する。Ｓ２４０７は、図１９のＳ１９０７と同じ処理である。
【０１５１】
Ｓ２４０８でＣＰＵ１０１は、Ｓ２３０５で算出したフィードバック制御量と、Ｓ２３１２で算出の適応制御量を加算するＳ２３１３の出力からＳ２３０７で保存の姿勢差補正量を減算した制御量をフィルタ処理して状態フィルタ出力値１を更新して保存する。そして、Ｓ２４０９へ処理を移行する。これは図２２の加算部１１０２の減算処理とブロック１７０１での変換に相当する。制御信号出力部１０４へ出力されている制御量から姿勢差補正量を減算するので、あたかも水平姿勢状態に正規化された制御量となる。
【０１５２】
Ｓ２４０９でＣＰＵ１０１は、Ｓ２４０５で算出された実速度算出値をフィルタ処理して状態フィルタ出力値２を更新して保存し、Ｓ２４１０へ処理を移行する。Ｓ２４１０でＣＰＵ１０１は、位置エンコード処理部６０２から取得した現在の実位置を、次回の適応同定処理用としてＲＡＭ１０３に保存して処理を終了する。
【０１５３】
適応同定時における制御対象の姿勢変化は、同定誤差発生の原因となるが、本実施形態では、同定誤差を低減することができる。その理由は、前述したように、停止期間での姿勢差補正量の低周波数成分を適応同定処理へ入力する制御量から減算する処理の効果に依るものである。すなわち、本実施形態では、姿勢変化を考慮しない場合に比べて、常に水平姿勢状態に正規化された制御量から同定するのと等価になるので同定誤差が小さい。
【０１５４】
また、本実施形態では、固定位置への位置制御中に制御対象の姿勢変化へ抗するために出力されるフィードバック制御量を記憶部に保存し、適応同定中には記憶部に保存された制御量を制御信号出力部へ出力されている制御量から減算して同定に用いる。よって、制御対象の姿勢変化へ抗するための速度発生に寄与しない制御量が除去されるので、姿勢変化による同定誤差を低減させる効果が得られる。したがって、適応制御量算出パラメータとして適応同定結果を用いる場合においても位置サーボ制御を安定化させる効果が得られる。
【符号の説明】
【０１５５】
１００  位置制御装置
１０１  ＣＰＵ
１０６  リニアモータ
１０７  リニアエンコーダ
６０１  目標発生部
６０２  位置エンコード処理部
６０４  フィードバック補償器
６０５  フィードフォワード補償器
６０７  姿勢差補正量の記憶部
１１０１  外乱推定オブザーバ
１６０１  適応同定器
【図１】
2019215912.tif 000005
【図２】
2019215912.tif 000006
【図３】
2019215912.tif 000007
【図４】
2019215912.tif 000008
【図５】
2019215912.tif 000009
【図６】
2019215912.tif 000010
【図７】
2019215912.tif 000011
【図８】
2019215912.tif 000012
【図９】
2019215912.tif 000013
【図１０】
2019215912.tif 000014
【図１１】
2019215912.tif 000015
【図１２】
2019215912.tif 000016
【図１３】
2019215912.tif 000017
【図１４】
2019215912.tif 000018
【図１５】
2019215912.tif 000019
【図１６】
2019215912.tif 000020
【図１７】
2019215912.tif 000021
【図１８】
2019215912.tif 000022
【図１９】
2019215912.tif 000023
【図２０】
2019215912.tif 000024
【図２１】
2019215912.tif 000025
【図２２】
2019215912.tif 000026
【図２３】
2019215912.tif 000027
【図２４】
2019215912.tif 000028