(57)【要約】【課題】安価なＣＰＵを利用して高速にモータ制御演算処理を行えるモータ制御回路を提供する。【解決手段】指令値と状態量検出値に基づいてサーボモータを制御する回路において、ＣＰＵ（１）と、ＲＯＭ（２）と、ＲＡＭ（３）と、クロック回路（４）と、リセット回路（５）と、指令入力回路（６）と、状態量検出回路（７）と、トルク出力回路（８）と、指令行列作成回路（１６）と、状態量行列作成回路（１７）と、行列演算回路（１８）とを内蔵した制御演算回路（１５）と、シーケンサ（１４）と、制御指令値レジスタ（１０）と、状態量検出値レジスタ（１１）と、演算結果レジスタ（１２）と、モードレジスタ（１３）とを備えたものである。【選択図】    図１
2004194402.tif 000002
【特許請求の範囲】
【請求項１】
指令値と状態量検出値に基づいてサーボモータを制御する回路において、
モータ制御回路全体を統括するＣＰＵ（１）と、前記ＣＰＵのプログラムを格納するＲＯＭ（２）と、前記ＣＰＵのワークエリアとなるＲＡＭ（３）と、回路全体を動作させるためのクロック回路（４）と、各回路を初期化するためのリセット回路（５）と、制御指令値を与えるための指令入力回路（６）と、モータ搭載検出器からの信号をもとに状態量を検出する状態量検出回路（７）と、モータパワー回路を駆動するためのＰＷＭ信号を出力するトルク出力回路（８）と、モータへの指令値を行列化するための指令行列作成回路（１６）と、モータに設置された検出器からの状態量を行列化するための状態量行列作成回路（１７）と、これら指令行列と状態量行列の行列演算を行うための行列演算回路（１８）とを内蔵した制御演算回路（１５）と、その制御演算回路をコントロールするシーケンサ（１４）と、前記制御演算回路の構成を決定するための制御パラメータを格納するパラメータ格納用メモリ（９）と、モータ制御用指令値を格納する制御指令値レジスタ（１０）と、モータの状態量検出値を格納する状態量検出値レジスタ（１１）と、前記制御演算回路による演算結果を格納するための演算結果レジスタ（１２）と、前記シーケンサの動作をＣＰＵが制御するためのモードレジスタ（１３）とを備えたことを特徴とするモータ制御回路。
【請求項２】
前記指令行列作成回路（１６）は、モデルフィードバック選択部（２２）と、モデルトルク演算部（２３）と、モデル状態変数演算部（２４）と、指令行列作成部（２５）から構成され、同様に前記状態量行列作成回路（１７）は、検出値フィルタ部（２６）と、差分処理部（２７）と、オブザーバ処理部（２８）と、状態量行列作成部（２９）から構成され、さらに前記行列演算回路（１８）は、行列演算部（３０）と、トルクフィルタ部（３１）から構成されることを特徴とする請求項１記載のモータ制御回路。
【請求項３】
前記パラメータ格納用メモリ（９）から制御演算回路（１５）に制御パラメータをロードする際、制御演算回路内の各回路にて制御パラメータを使用する時点までにデータのロードを完了させる機能をシーケンサ（１４）に備えたことを特徴とする請求項１記載のモータ制御回路。
【請求項４】
パラメータ格納用メモリ（９）を削除し、制御パラメータをワイヤード固定したことを特徴とする請求項１記載のモータ制御回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、民生機器や産業機器にて利用されるモータ制御回路に関するものである。
【０００２】
【従来の技術】
現在、一般的に行われる制御には以下のようなものがある。
（ａ）状態量フィードバック制御（以下ＦＢと呼ぶ）には例えば、位置ＦＢ（モータ、負荷）、速度ＦＢ（モータ、負荷）、加速度ＦＢ（モータ、負荷）、ねじれ角、ねじれ角速度ＦＢ等がある。
（ｂ）フィードフォワード制御（以下ＦＦと呼ぶ）には、例えば、速度ＦＦ、トルク（電流）指令ＦＦ、等がある。
ここに示した制御は、ほとんどが独立の制御であるため、その組み合わせの数だけ制御則が存在しており、これら制御則を制御対象に応じて使い分け使用している。また最近では、これら制御則を１つの行列式としてまとめ制御パラメータにより行列式を組み替え、複数の制御則を実現する手法が開発されている。この手法を従来技術として図５にモータ制御回路，図６にソフトウェア処理フロー示している。
図５において、１はモータの制御演算を行うＣＰＵ、２はＣＰＵのプログラムおよびモータ制御の行列演算用制御パラメータを格納するＲＯＭ、３はＣＰＵのワークエリアとなるＲＡＭ、４はシステム全体を動作させるためのクロック回路、５はハードウェアを初期化するためのリセット回路、６はモータ制御回路外部からの指令入力回路、７はモータの状態量を検出するための状態量検出回路、８はモータパワー回路を駆動するためのＰＷＭ信号を出力するトルク出力回路である。また、図６において、１９は入力される指令値から行列を作成する指令行列作成処理部、２０は検出器からの値をもとに行列を作成する状態量行列作成処理部、２１は指令行列と状態量行列の演算を行う行列演算処理部である。
【０００３】
上記構成において、システムの電源投入後、リセット回路（５）によってリセット信号が、またクロック回路（４）からクロックが回路全体に供給される。その後、ＣＰＵはＲＯＭ（２）からプログラムを読み出し、ワークエリアＲＡＭ（３）にてモータ制御演算処理を実行する。その際、モータへの指令入力回路（６）からの指令値とＲＯＭ（２）に内蔵された制御パラメータをもとに指令行列作成処理部（１９）にて指令行列を作成し、また状態量検出回路（７）からのモータ状態量検出値と前記制御パラメータをもとに状態量行列作成処理部（２０）にて状態量行列を作成して行列演算処理部（２１）にて演算を行うことによりモータへの操作量を求めていた。上記の様なモータ制御回路では、制御演算プログラムを変更することなく、制御パラメータによって、指令行列や状態量行列を変更して行列演算を行い、最終的にモータへの操作量を演算していた（例えば、特許文献１参照）。
【０００４】
【特許文献１】
特開２００２−３１２００３号  「サーボ制御方法」
【０００５】
【発明が解決しようとする課題】
ところが、従来技術では、全ての演算をソフトウェアにて実現していたため、複数の行列演算を行うには高速なＣＰＵを必要とし、また高速ＣＰＵを利用したとしても、演算処理に多くの時間を要していた。また、高速ＣＰＵを利用しているため、高価なシステムになっていた。
本発明は上記問題点を解決するためになされたものであり、その目的とするところは、安価なＣＰＵを利用して高速にモータ制御演算処理を行えるモータ制御回路を提供することにある。
【０００６】
【課題を解決するための手段】
上記問題を解決するため、請求項１記載のモータ制御回路は、従来回路にモータへの指令値を行列化するための指令行列作成回路（１６）と、モータに設置された検出器からの状態量を行列化するための状態量行列作成回路（１７）と、これら指令行列と状態量行列の行列演算を行うための行列演算回路（１８）を内蔵した制御演算回路（１５）と、その制御演算回路をコントロールするシーケンサ（１４）と、制御演算回路の構成を決定するための制御パラメータを格納するパラメータ格納用メモリ（９）と、モータ制御用指令値を格納する制御指令値レジスタ（１０）と、モータの状態量検出値を格納する状態量検出値レジスタ（１１）と、前記制御演算回路による演算結果を格納するための演算結果レジスタ（１２）と、前記シーケンサの動作をＣＰＵが制御するためのモードレジスタ（１３）とを追加して備えてモータ操作量を作成することを特徴とするものである。
【０００７】
請求項１記載のモータ制御回路によれば、従来ソフトウェアにて実現していた処理をハードウェア化し、シーケンサ（１４）により指令行列作成回路（１６）と状態量行列作成回路（１７）を並列実行させることで、高速な演算処理を実現することができる。これは、ＣＰＵの負荷を低減することになり、安価なＣＰＵを利用してシステムを構築できることになる。さらに、高速演算が可能なため、動作クロック周波数の低減が可能となり、ノイズや消費電力の低減につながる。
【０００８】
請求項２記載のモータ制御回路は、指令行列作成回路（１６）が、モデルフィードバック選択部（２２）と、モデルトルク演算部（２３）と、モデル状態変数演算部（２４）と、指令行列作成部（２５）から構成され、同様に状態量行列作成回路（１７）は、検出値フィルタ部（２６）と、差分処理部（２７）と、オブザーバ処理部（２８）と、状態量行列作成部（２９）から構成され、さらに行列演算回路（１８）は、行列演算部（３０）と、トルクフィルタ部（３１）から構成されることを特徴とするものである。
【０００９】
請求項２記載のモータ制御回路によれば、各機能ブロック毎に回路を分割することで、指令行列作成回路内部のモデルトルク演算部（２３）と、行列演算回路内部の行列演算部（３０）を共通化でき、指令行列作成回路内部の指令行列作成部（２５）と、状態量行列作成回路内部の状態量行列作成部（２９）を共通化でき、さらに状態量行列作成回路内部の検出値フィルタ部（２６）と行列演算回路内部のトルクフィルタ部（３１）を共通化できる。これにより、回路規模を大幅に削減でき、安価な制御回路を実現できる。また、回路規模が小さくなるため、ＦＰＧＡやＰＬＤ等を利用して多品種変量の製品開発に利用できる。
【００１０】
請求項３記載のモータ制御回路は、パラメータ格納用メモリ（９）から制御演算回路（１５）に制御パラメータをロードする際、制御演算回路内の各回路にて制御パラメータを使用する時点までにデータのロードを完了させる機能をシーケンサ（１４）に備えたことを特徴とするものである。
請求項３記載のモータ制御回路によれば、制御演算回路内部に制御パラメータを格納するレジスタを設置する必要が無くなり、回路規模を小さくすることができ、安価な制御回路を実現できる。
【００１１】
請求項４記載のモータ制御回路は、パラメータ格納用メモリ（９）を削除し、制御パラメータをワイヤード固定したことを特徴とするのもである。
請求項４記載のモータ制御回路によれば、制御パラメータを格納するためのメモリ等の記憶装置が必要ないため、回路規模を小さくすることができ、安価な制御回路を実現できる。また、回路規模が小さくなるため、ＦＰＧＡやＰＬＤ等を利用して多品種変量の製品開発に利用できる。
【００１２】
【発明の実施の形態】
以下、本発明の実施例を図に基づいて説明する。図１は本発明の回路構成を示す。図２は制御演算回路内部処理フローを示す図である。図３はシーケンサの状態遷移を示す図である。図４は本発明の制御演算回路の一部を示す図である。
図１に示すように本発明の実施例は、図５に示す従来回路にモータへの指令値を行列化するための指令行列作成回路（１６）と、モータに設置された検出器からの状態量を行列化するための状態量行列作成回路（１７）と、これら指令行列と状態量行列の行列演算を行うための行列演算回路（１８）とを内蔵した制御演算回路（１５）と、その制御演算回路をコントロールするシーケンサ（１４）と、制御演算回路の構成を変更するための制御パラメータを格納するパラメータ格納用メモリ（９）と、モータ制御用指令値を格納する制御指令値レジスタ（１０）と、モータの状態量検出値を格納する状態量検出レジスタ（１１）と、前記制御演算回路による演算結果を格納するための演算結果レジスタ（１２）と、前記シーケンサの動作をＣＰＵが制御するためのモードレジスタ（１３）とを追加した構成となっている。
【００１３】
モードレジスタ（１３）では演算開始を設定でき、その開始信号はシーケンサ（１４）へと入力され、シーケンサ（１４）が動作することで制御演算回路（１５）を動作させる。また、パラメータ格納用メモリ（９）と、制御指令値レジスタ（１０）と、状態量検出値レジスタ（１１）と、演算結果レジスタ（１２）と、モードレジスタ（１３）はＣＰＵとバスで接続されており、ＣＰＵはこのメモリやレジスタへのデータ書き込み／読み出しが可能となっている。これら制御パラメータやレジスタデータは、シーケンサからのタイミング信号にて、パラメータ格納用メモリ（９）は制御演算回路（１５）全体へ、制御指令値レジスタ（１０）の設定データは指令行列作成回路（１６）へ、状態量検出値レジスタ（１１）の設定データは状態量行列作成回路（１７）へ、制御演算回路（１５）内部でデータが必要となる以前にロードされる。
【００１４】
制御演算回路（１５）内部の詳細処理フローを図２に示す。指令行列作成回路（１６）ではモデルフィードバック選択部（２２）とモデルトルク演算部（２３）とモデル状態変数演算部（２４）と指令行列作成部（２５）から構成され、状態量行列作成回路（１７）では検出値フィルタ部（２６）と差分処理部（２７）とオブザーバ処理部（２８）と状態量行列作成部（２９）から構成され、また行列演算回路（１８）では行列演算部（３０）とトルクフィルタ部（３１）から構成されている。ここで、モデルトルク演算部（２３）と行列演算部（３０）、指令行列作成部（２５）と状態量行列作成部（２９）、検出値フィルタ部（２６）とトルクフィルタ部（３１）は、それぞれ同じ回路から構成されている。全体の処理としては、指令値が指令行列作成回路（１６）に入力され、また検出値が状態量行列作成回路（１７）に入力され、各入力データと制御パラメータにより演算を行い操作量を出力し、その操作量は次の演算にて利用するためフィードバックされるフローとなっている。この一連の処理は、大きなグループとして指令行列作成回路（１６）と状態量行列作成回路（１７）が並列に処理されており、各グループ内では指令行列作成回路内のモデル状態変数演算部（２４）と指令行列作成部（２５）が並列処理され、また状態量行列作成回路内では差分処理部（２７）とオブザーバ処理部（２８）が並列処理されている。
【００１５】
図３に示すシーケンサの処理を説明しながら、モータ制御演算処理について説明する。まず、回路全体に電源が投入されると、リセット回路（５）からリセット信号が出力され回路全体を初期化する。また、クロック回路（４）からクロック信号が出力され回路は動作を開始する。ＣＰＵ（１）は、ＲＯＭ（２）からプログラムを読み出しながら、ＲＡＭ（３）のワークエリアを使用して動作を開始する。ＣＰＵによるモータ制御処理が開始すると、ＣＰＵは制御パラメータ設定値をパラメータ格納用メモリ（９）に、指令入力回路（６）から読み出した制御指令値を制御指令値レジスタ（１０）に、また状態量検出回路（７）から読み出した状態量検出値を状態量検出レジスタ（１１）に書き込み、モードレジスタ（１３）にて演算開始ビットを設定することで、シーケンサ（１４）は処理を開始する。
【００１６】
シーケンサ（１４）は、制御演算回路（１５）内部の各回路がどの順序で動作するかを決定する回路ある。回路が初期化された時点では、ＩＤＬＥ（３９）であるが、モードレジスタ（１３）からの処理開始信号（Ｓｔａｒｔ）により指令行列作成回路（１６）側の処理としてＭＯＤＥＬ＿ＦＢ（３２）に遷移し、また、状態量行列作成回路（１７）側のＦＩＬ（３６）に遷移しＦＩＬｎｏｔＦＢ信号の初期状態がＨｉｇｈの時、検出値フィルタ部（２６）の処理が開始され、前記ＭＯＤＥＬ＿ＦＢ（３２）と並列に実行される。ここで、ＦＩＬｎｏｔＦＢ信号は、Ｈｉｇｈの時はＦＩＬ（３６）の動作可能状態であり、それ以外ではＬｏｗとなる信号である。モデルフィードバック選択部（２２）の演算が完了すると、ＭＯＤＥＬ＿ＦＢ＿Ａｃｋ信号が出力されることでＣＯＲＥ（３３）に遷移する。ここでは、ＭｎｏｔＣＯＲＥ信号の初期状態がＨｉｇｈであるためモデルトルク演算部（２３）の処理を行い、その処理が完了した際、ＣＯＲＥ＿Ａｃｋ信号が出力されることでＭＯＤＥＬ＿ＳＴ（３４）に遷移する。ここで、ＭｎｏｔＣＯＲＥ信号は、Ｈｉｇｈの時はモデルフィードバック選択部（２２）とモデルトルク演算部（２３）とモデル状態変数演算部（２４）および指令行列作成部（２５）の処理期間であり、それ以外ではＬｏｗとなる信号である。前記検出値フィルタ部（２６）の処理が完了すると、ＦＩＬ＿Ａｃｋ信号とＦＩＬｎｏｔＦＢ信号がＬｏｗであることを確認してＦＢ＿ＤＩＦＦ（３７）およびＦＢ＿ＯＢＳ（３８）に遷移し、各処理は並列に実行される。
【００１７】
一方、前記モデルトルク演算部（２３）の処理が完了した際、ＣＯＲＥ＿Ａｃｋ信号が出力され、ＭｎｏｔＣＯＲＥ信号がＨｉｇｈであることを確認してＭＡＴＲＩＸ（３５）に遷移する。ここでは、まずモデルトルク演算部（２３）の結果により指令行列作成部（２５）の処理を行う。その処理が終了すると、前記ＦＢ＿ＤＩＦＦ（３７）およびＦＢ＿ＯＢＳ（３８）からＦＢ＿ＯＢＳ＿Ａｃｋ信号が出力され、引き続き状態量行列作成部（２９）を実行する。次に、ＭＯＤＥＬ＿ＳＴ（３４）が完了した際、ＭＯＤＥＬ＿ＳＴ＿Ａｃｋ信号が出力され、ＣＯＲＥ（３３）に遷移し、行列演算部（３０）が実行される。この行列演算処理が完了すると、ＣＯＲＥ＿Ａｃｋ信号を出力しＭｎｏｔＣＯＲＥ信号がＬｏｗであることを確認して、ＦＩＬ（３６）に遷移する。ここでは、トルクフィルタ部（３１）の処理が行われ、この処理が完了すると、ＦＩＬ＿Ａｃｋ信号を出力しＦＩＬｎｏｔＦＢ信号がＨｉｇｈであることを確認してＩＤＬＥ（３９）に戻る。この際、一連の制御演算処理が終了したことを示す完了信号を出力し、この信号を元に演算結果を演算結果レジスタ（１２）に書き込み、ＣＰＵ（１）への割り込み信号ＩＮＴを生成する。
【００１８】
また、このシーケンサ（１４）では、各処理状態に遷移するまでに必要となる制御パラメータをパラメータ格納用メモリ（９）から制御演算回路（１５）にロードする作業も行う。
ＣＰＵ（１）は、シーケンサ（１４）から出力された割り込み信号ＩＮＴを受け付けると、演算結果レジスタ（１２）の値を読み出し、その演算結果をもとに操作量としてトルク出力回路（８）にデータを書き込むことでモータ制御を行う。
図４では、制御演算回路の一部実施例を示し、具体的な処理内容を以下に説明する。この実施例の計算式を（式１）に示す。
【００１９】
ＯＵＴ＝（（（ａ−ｂ）×Ｐ１）＞＞Ｐ２）＋Ｐ３＋（（（ｃ−ｄ）×Ｐ４）＞＞Ｐ５）              （式１）
まず、入力データａ（４０）と入力データｂ（４１）の減算を行うため、前記入力データｂ（４１）を２の補数器（５１）で負数にし、レジスタ（４９）に格納する。次に加算器（５３）で前記入力データａ（４０）とレジスタ（４９）の値を加算する。さらに、制御パラメータＰ１（４４）と前記加算器（５３）の出力を乗算器（５７）で乗算する。同様に入力データｃ（４２）と入力データｄ（４３）の減算を行うため、前記入力データｄ（４３）を２の補数器（５２）で負数にし、レジスタ（５０）に格納する。
【００２０】
次に加算器（５４）で前記入力データｃ（４２）と前記レジスタ（５０）の値を加算する。さらに、制御パラメータＰ４（４７）と前記加算器（５４）の出力を乗算器（５８）で乗算する。次に、前記乗算器（５７）の出力をバレルシフタ（５９）で右または左シフト処理する。この時のシフト量は制御パラメータＰ２（４５）である。同様に前記乗算器（５８）の出力をバレルシフタ（６０）で右または左シフト処理する。この時のシフト量は制御パラメータＰ５（４８）である。次に前記バレルシフタ（５９）の出力と制御パラメータＰ３（４６）を加算器（５５）で加算する。前記加算器（５５）の出力と前記バレルシフタ（６０）の出力を加算器（５６）で加算し、これを出力データＯＵＴ（６１）としている。
【００２１】
【発明の効果】
以上述べたように、本発明の請求項１記載の発明によれば、従来ソフトウェアにて実現していた処理をハードウェア化し、シーケンサ（１４）により指令行列作成回路（１６）と状態量行列作成回路（１７）を並列実行させることで、高速な演算処理を実現することができる。これは、ＣＰＵの負荷を低減することになり、安価なＣＰＵを利用してシステムを構築できることになる。さらに、高速演算が可能なため、動作クロック周波数の低減が可能となり、ノイズや消費電力の低減につながる。
【００２２】
請求項２記載の発明によれば、各種機能ブロック毎に回路を分割することで、指令行列作成回路（１６）内部のモデルトルク演算部（２３）と、行列演算回路（１８）内部の行列演算回路部（２１）を共通化でき、指令行列作成回路（１６）内部の指令行列作成部（２５）と、状態量行列作成回路（１７）内部の状態量行列作成処理部（２０）を共通化でき、さらに状態量行列作成回路（１７）内部の検出値フィルタ部（２６）と行列演算回路（１８）内部のトルクフィルタ部（３１）を共通化できる。これにより、回路規模を大幅に削減でき、安価な制御回路を実現できる。また、回路規模が小さくなるため、ＦＰＧＡやＰＬＤ等を利用して多品種変量の製品開発に利用できる。
【００２３】
請求項３記載の発明によれば、制御演算回路内部に制御パラメータを格納するレジスタを設置する必要が無くなり、回路規模を小さくすることができ、安価な制御回路を実現できる。また請求項４記載の発明によれば、制御パラメータを格納するためのメモリ等の記憶装置が必要ないため、回路規模を小さくすることができ、安価な制御回路を実現できる。また、回路規模が小さくなるため、ＦＰＧＡやＰＬＤ等を利用して多品種変量の製品開発に利用できる。
【図面の簡単な説明】
【図１】本発明の実施例を示す図
【図２】本発明の制御演算回路内部処理フローを示す図
【図３】本発明のシーケンサの状態遷移を示す図
【図４】本発明の制御演算回路の一部を示す図
【図５】従来の実施例を示す図
【図６】従来のソフトウェア処理フローを示す図
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  クロック回路
５  リセット回路
６  指令入力回路
７  状態量検出回路
８  トルク出力回路
９  パラメータ格納用メモリ
１０  制御指令値レジスタ
１１  状態量検出値レジスタ
１２  演算結果レジスタ
１３  モードレジスタ
１４  シーケンサ
１５  制御演算回路
１６  指令行列作成回路
１７  状態量行列作成回路
１８  行列演算回路
１９  指令行列作成処理部
２０  状態量行列作成処理部
２１  行列演算処理部
２２  モデルフィードバック選択部
２３  モデルトルク演算部
２４  モデル状態変数演算部
２５  指令行列作成部
２６  検出値フィルタ部
２７  差分処理部
２８  オブザーバ処理部
２９  状態量行列作成部
３０  行列演算部
３１  トルクフィルタ部
３２  モデルフィードバック選択処理状態
３３  モデルトルク演算および行列演算処理状態
３４  モデル状態変数演算処理状態
３５  指令行列作成および状態量行列作成処理状態
３６  検出値フィルタおよびトルクフィルタ処理状態
３７  差分処理状態
３８  オブザーバ処理状態
３９  アイドル状態
４０  入力データａ
４１  入力データｂ
４２  入力データｃ
４３  入力データｄ
４４  制御パラメータＰ１
４５  制御パラメータＰ２
４６  制御パラメータＰ３
４７  制御パラメータＰ４
４８  制御パラメータＰ５
４９  レジスタ
５０  レジスタ
５１  ２の補数器
５２  ２の補数器
５３  加算器
５４  加算器
５５  加算器
５６  加算器
５７  乗算器
５８  乗算器
５９  バレルシフタ
６０  バレルシフタ
６１  出力データ
【図１】
2004194402.tif 000003
【図２】
2004194402.tif 000004
【図３】
2004194402.tif 000005
【図４】
2004194402.tif 000006
【図５】
2004194402.tif 000007
【図６】
2004194402.tif 000008