(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-06
(45)【発行日】2025-01-15
(54)【発明の名称】モータの制御装置、産業機械システム、及びモータの制御方法
(51)【国際特許分類】
H02P 29/40 20160101AFI20250107BHJP
【FI】
H02P29/40
(21)【出願番号】P 2023522025
(86)(22)【出願日】2021-05-17
(86)【国際出願番号】 JP2021018659
(87)【国際公開番号】W WO2022244078
(87)【国際公開日】2022-11-24
【審査請求日】2023-12-08
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100112357
【氏名又は名称】廣瀬 繁樹
(72)【発明者】
【氏名】寳澤 駿
(72)【発明者】
【氏名】猪飼 聡史
【審査官】島倉 理
(56)【参考文献】
【文献】特開2016-76119(JP,A)
【文献】特開2020-93595(JP,A)
【文献】特開2018-139044(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H02P 29/40
(57)【特許請求の範囲】
【請求項1】
複数の弾性要素を介して被駆動体に接続され、該被駆動体を駆動するモータを制御する制御装置であって、
前記モータを加速するように動作させるための指令を生成する指令生成部と、
前記弾性要素の弾性を表す弾性パラメータに基づいて前記指令の補正量を求める補正量演算処理を実行する補正量演算部と、
前記指令に応じて前記モータが発生した駆動力が第1の前記弾性要素に作用する第1の段階から、該駆動力が該第1の弾性要素を通して第2の前記弾性要素に作用する第2の段階へ移行したことを検出する段階検出部と、を備え、
前記補正量演算部は、前記第1の段階から前記第2の段階への移行が検出されたときに、実行する前記補正量演算処理を、前記第1の弾性要素の第1の前記弾性パラメータに基づく第1の前記補正量演算処理から、前記第2の弾性要素の第2の前記弾性パラメータと前記第1の弾性パラメータとに基づく第2の前記補正量演算処理へ切り換える、制御装置。
【請求項2】
前記駆動力を示す力パラメータの時間に対する変化の度合いを取得する変化取得部をさらに備え、
前記段階検出部は、前記変化取得部が取得した前記変化の度合いが予め定めた基準を超えたときに、前記第1の段階から前記第2の段階へ移行したことを検出する、請求項1に記載の制御装置。
【請求項3】
前記力パラメータは、前記指令、又は該指令に応じて前記モータを動作させているときに供給されるフィードバックを有し、
前記指令は、前記駆動力を規定するトルク指令、又は前記モータの加速度を規定する加速度指令を有し、
前記フィードバックは、前記駆動力に対応する力フィードバック、前記加速度に対応する加速度フィードバック、又は前記モータに供給される電流を示す電流フィードバックを有する、請求項2に記載の制御装置。
【請求項4】
前記変化取得部は、前記変化の度合いとして、前記力パラメータの傾きを取得する、請求項2又は3に記載の制御装置。
【請求項5】
前記モータが前記指令に従って動作を開始した時点からの該モータの動作量を取得する動作量取得部をさらに備え、
前記段階検出部は、前記動作量が予め定めた閾値に達したときに、前記第1の段階から前記第2の段階へ移行したことを検出する、請求項1に記載の制御装置。
【請求項6】
前記モータが前記指令に従って動作を開始した時点からの経過時間を取得する経過時間取得部をさらに備え、
前記段階検出部は、前記経過時間が予め定めた閾値に達したときに、前記第1の段階から前記第2の段階へ移行したことを検出する、請求項1に記載の制御装置。
【請求項7】
前記指令生成部は、前記モータの動作方向を反転させた後に該モータを加速するための前記指令を生成する、請求項1~6のいずれか1項に記載の制御装置。
【請求項8】
前記弾性パラメータは、前記弾性要素のバネ定数を有し、
前記補正量演算部は、前記第1の補正量演算処理において、前記第1の弾性要素の第1の前記バネ定数と、前記駆動力を示す力パラメータとを用いて、前記第1の弾性要素に関する第1の前記補正量を求める、請求項1~7のいずれか1項に記載の制御装置。
【請求項9】
前記補正量演算部は、前記第2の補正量演算処理において、
前記第1の補正量を求めるとともに、前記第2の弾性要素の第2の前記バネ定数と前記力パラメータとを用いて、前記第2の弾性要素に関する第2の前記補正量を求め、
前記第1の補正量と前記第2の補正量との和を、前記第1の弾性要素及び前記第2の弾性要素に関する第3の前記補正量として求める、請求項8に記載の制御装置。
【請求項10】
前記補正量演算部は、前記第2の補正量演算処理において、前記第1の弾性要素の第1の前記バネ定数と前記第2の弾性要素の第2の前記バネ定数との合成バネ定数と、前記力パラメータと、を用いて、前記第1の弾性要素及び前記第2の弾性要素に関する第2の前記補正量を求める、請求項8に記載の制御装置。
【請求項11】
前記指令は、前記被駆動体の位置を規定する位置指令を有し、
前記補正量演算部は、前記位置指令を補正するための前記補正量を求める、請求項1~10のいずれか1項に記載の制御装置。
【請求項12】
被駆動体と、
複数の弾性要素を介して前記被駆動体に接続され、該被駆動体を駆動するモータと、
請求項1~11のいずれか1項に記載の制御装置と、を備える、産業機械システム。
【請求項13】
複数の弾性要素を介して被駆動体に接続され、該被駆動体を駆動するモータを制御する方法であって、
プロセッサが、
前記モータを加速するように動作させるための指令を生成し、
前記弾性要素の弾性を表す弾性パラメータに基づいて前記指令の補正量を求める補正量演算処理を実行し、
前記指令に応じて前記モータが発生した駆動力が第1の前記弾性要素に作用する第1の段階から、該駆動力が該第1の弾性要素を通して第2の前記弾性要素に作用する第2の段階へ移行したことを検出し、
前記第1の段階から前記第2の段階への移行を検出したときに、実行する前記補正量演算処理を、前記第1の弾性要素の第1の前記弾性パラメータに基づく第1の前記補正量演算処理から、前記第2の弾性要素の第2の前記弾性パラメータと前記第1の弾性パラメータとに基づく第2の前記補正量演算処理へ切り換える、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、モータの制御装置、産業機械システム、及びモータの制御方法に関する。
【背景技術】
【0002】
弾性要素(例えば、ボールねじ)を介して被駆動体に接続されたモータを制御する制御装置において、該弾性要素の弾性変形に応じてモータへの指令を補正する技術が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
モータと被駆動体との間に複数の弾性要素が介挿され、該複数の弾性要素が段階的に弾性変形することにより、モータによる被駆動体の位置決め精度に影響が生じる場合があった。従来、このような場合の位置決め精度を向上させる技術が求められている。
【課題を解決するための手段】
【0005】
本開示の一態様において、複数の弾性要素を介して被駆動体に接続され、該被駆動体を駆動するモータを制御する制御装置は、モータを加速するように動作させるための指令を生成する指令生成部と、弾性要素の弾性を表す弾性パラメータに基づいて指令の補正量を求める補正量演算処理を実行する補正量演算部と、指令に応じてモータが発生した駆動力が第1の弾性要素に作用する第1の段階から、該駆動力が該第1の弾性要素を通して第2の弾性要素に作用する第2の段階へ移行したことを検出する段階検出部とを備える。
【0006】
補正量演算部は、第1の段階から第2の段階への移行が検出されたときに、実行する補正量演算処理を、第1の弾性要素の第1の弾性パラメータに基づく第1の補正量演算処理から、第2の弾性要素の第2の弾性パラメータと第1の弾性パラメータとに基づく第2の補正量演算処理へ切り換える。
【0007】
本開示の他の態様において、複数の弾性要素を介して被駆動体に接続され、該被駆動体を駆動するモータを制御する方法は、プロセッサが、モータを加速するように動作させるための指令を生成し、弾性要素の弾性を表す弾性パラメータに基づいて指令の補正量を求める補正量演算処理を実行し、指令に応じてモータが発生した駆動力が第1の弾性要素に作用する第1の段階から、該駆動力が該第1の弾性要素を通して第2の弾性要素に作用する第2の段階へ移行したことを検出し、第1の段階から第2の段階への移行を検出したときに、実行する補正量演算処理を、第1の弾性要素の第1の弾性パラメータに基づく第1の補正量演算処理から、該第1の弾性パラメータと第2の弾性要素の第2の弾性パラメータとに基づく第2の補正量演算処理へ切り換える。
【発明の効果】
【0008】
本開示によれば、モータの駆動力が複数の弾性要素に作用する段階に適した補正量を求めることができる。したがって、モータと被駆動体とが複数の弾性要素を介して接続されている場合において、複数の弾性要素の段階的な弾性変形に起因する誤差を高精度に打ち消すことができるので、モータによる被駆動体の位置決め精度を向上させることができる。
【図面の簡単な説明】
【0009】
【
図1】一実施形態に係る産業機械システムのブロック図である。
【
図4】
図3に示す機械モデルにおいて、モータの駆動力が第1の弾性要素に作用した第1の段階を示す。
【
図5】
図3に示す機械モデルにおいて、モータの駆動力が、第1の弾性要素を通して第2の弾性要素に作用した第2の段階を示す。
【
図6】モータを動作させる指令の時間変化特性の一例を示す。
【
図7】
図1に示す制御装置の動作フローの一例を示すフローチャートである。
【
図8】
図1に示す制御装置の他の機能を示すブロック図である。
【
図9】
図8に示す制御装置の動作フローの一例を示すフローチャートである。
【
図10】他の実施形態に係る制御装置を具備する産業機械システムのブロック図である。
【
図11】
図10に示す制御装置の動作フローの一例を示すフローチャートである。
【
図12】
図10に示す制御装置の他の機能を示すブロック図である。
【
図13】
図10に示す制御装置の動作フローの他の例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、
図1及び
図2を参照して、一実施形態に係る産業機械システム10について説明する。産業機械システム10は、産業機械12、及び制御装置14を備える。
【0011】
産業機械12は、ワークに対して所定の作業(切削加工、溶接等)を行うためのものであって、モータ16、複数の弾性要素18及び20、並びに被駆動体22を有する。モータ16は、例えば、電動機としてのサーボモータであって、制御装置14からの指令に応じて、その出力シャフト16a(
図2)を回転駆動する。
【0012】
モータ16の出力シャフト16aと被駆動体22とは、複数の弾性要素18及び20を介して、互いに機械的に連結されている。例えば、弾性要素18は、軸線Aに沿って真直ぐに延在するボールねじであって、弾性パラメータPR1を有する部材(例えば、鉄製部材)である。
【0013】
弾性パラメータPR1は、弾性要素18の弾性を表すパラメータであって、例えば、バネ定数k1、コンプライアンスC1(=1/k1)、又は弾性率G1(ヤング率、剛性率、又はポアソン比等を含む)を有する。なお、以下の説明においては、
図2中の矢印Bで示す軸線Aに沿う方向を、右方として言及することがある。弾性要素18は、その左端がモータ16の出力シャフト16aに固定される。
【0014】
一方、弾性要素20は、例えば、弾性要素18と被駆動体22との間に介挿され、弾性要素18を収容する筐体(図示せず)の内側に異物が混入するのを防止するシール機構であって、弾性パラメータPR2を有する部材(例えば、ゴム製部材)である。弾性パラメータPR2は、弾性要素20の弾性を表すパラメータであって、バネ定数k2、コンプライアンスC2(=1/k2)、又は弾性率G2を有し得る。
【0015】
被駆動体22は、例えば、ワークが設置されるワークテーブルであって、ボールねじとしての弾性要素18と係合する係合部22aを有する。モータ16が出力シャフト16aを回転駆動するとともに、弾性要素18が軸線A周りに回転され、該弾性要素18の回転に応じて、被駆動体22が軸線Aの方向へ往復動される。
【0016】
一方、シール機構としての弾性要素20は、被駆動体22に接触しており、該被駆動体22が往復動するのに応じて弾性変形し、該被駆動体22に対し、弾性変形の応力及び摩擦力等の力を加える。こうして、モータ16は、弾性要素18及び20を介して、被駆動体22を駆動する。
【0017】
モータ16には、少なくとも1つのセンサ24(
図1)が設けられている。例えば、センサ24は、出力シャフト16aの回転位置Pを検出する回転検出センサ(エンコーダ、ホール素子等)、モータ16に供給された電流Iを検出する電流センサ、及び、モータ16が出力シャフト16aに与える駆動力F(トルク)を検出する力センサ(トルクセンサ)を有する。
【0018】
センサ24は、回転位置P、電流I、及び駆動力Fを検出し、それぞれ、位置フィードバックP、電流フィードバックI、及び力フィードバックFとして、制御装置14に供給する。なお、センサ24は、出力シャフト16a(又は被駆動体22)の加速度αを検出し、検出値を加速度フィードバックαとして制御装置14に供給してもよいし、又は、位置フィードバックPを時間二階微分することで得られる加速度フィードバックαを制御装置14に供給してもよい。
【0019】
制御装置14は、産業機械12(具体的には、モータ16)を制御する。
図1に示すように、制御装置14は、プロセッサ30、メモリ32、及びI/Oインターフェース34を有するコンピュータである。プロセッサ30は、CPU又はGPU等を有し、バス36を介してメモリ32及びI/Oインターフェース34に通信可能に接続されている。プロセッサ30は、メモリ32及びI/Oインターフェース34と通信しつつ、後述する指令補正機能を実現するための演算処理を行う。
【0020】
メモリ32は、RAM又はROM等を有し、プロセッサ30が実行する指令補正機能のための演算処理で利用される各種データ、及び該演算処理の途中で生成される各種データを、一時的又は恒久的に記憶する。I/Oインターフェース34は、例えば、イーサネット(登録商標)ポート、USBポート、光ファイバコネクタ、又はHDMI(登録商標)端子を有し、プロセッサ30からの指令の下、外部機器との間でデータを有線又は無線で通信する。
【0021】
プロセッサ30は、モータ16を加速するように駆動するための指令CMを生成する。この指令CMは、例えば、位置指令CMp、速度指令CMv、及びトルク指令CMτを有する。位置指令CMpは、被駆動体22(つまり、モータ16の出力シャフト16a)の目標位置を規定し、速度指令CMvは、モータ16(又は被駆動体22)の速度Vを規定し、トルク指令CMτは、モータ16の駆動力F(トルク)を規定する。
【0022】
なお、指令CMは、トルク指令CMτの代わりに、モータ16の出力シャフト16a(又は、被駆動体22)の加速度αを規定する加速度指令CMαを有してもよい。このように、本実施形態においては、プロセッサ30は、指令CMを生成する指令生成部40(
図1)として機能する。
【0023】
モータ16は、指令CMに応じて出力シャフト16aを回転駆動する駆動力F(トルク)を発生させる。モータ16が生じた駆動力Fは、弾性要素18に作用した後に弾性要素20に作用して、被駆動体22を駆動することになる。弾性要素18及び20は、駆動力Fの作用によって僅かに弾性変形するバネとして見做すことができる。
【0024】
図3に、産業機械12の概略的な機械系モデルを示す。
図3に示すように、産業機械12は、モータ16と被駆動体22との間に、バネとしての弾性要素18及び20が介挿された機械系モデルとして、概略的に表すことができる。
図3に示すように、産業機械12の機械系モデルにおいては、弾性要素18と弾性要素20との間に、バックラッシ要素BL1が存在する。
【0025】
機械系モデル上のバックラッシ要素BL1は、出力シャフト16aと弾性要素18との間のバックラッシと、弾性要素18と被駆動体22(係合部22a)とのバックラッシとを表している。一方、弾性要素18と弾性要素20との間には、バックラッシ要素BL2が存在する。機械系モデル上のバックラッシ要素BL2は、弾性要素20と被駆動体22とのバックラッシを表している。
【0026】
ここで、プロセッサ30が、モータ16の動作方向(つまり、出力シャフト16aの回転方向)を一方から他方へ反転させた後に該モータ16を加速するための指令CMを生成し、該指令CMにより、被駆動体22の移動方向が右方から左方へ反転して、該被駆動体22が左方へ加速されるとする。この場合、モータ16は、該指令CMに応じた駆動力F(トルク)を発生させる。
【0027】
この駆動力Fは、まず、弾性要素18に作用するが、上述のバックラッシ要素BL1によって、該駆動力Fが弾性要素18に作用して該弾性要素18を弾性変形させる(機械モデル上は、弾性要素18のバネを伸張させる)までに微小なタイムラグTL1が発生することになる。駆動力Fが弾性要素18に作用してからタイムラグTL1が経過すると(つまり、バックラッシ要素BL1が解消されると)、
図4に示すように、弾性要素18に作用した駆動力Fによって、弾性要素18が弾性変形(つまり、バネが伸張)し始める。
【0028】
一方、上述のバックラッシ要素BL2によって、弾性要素18が弾性変形してから、駆動力Fが弾性要素20を弾性変形(つまり、弾性要素20のバネを伸張)させるまでに微小なタイムラグTL2が発生することになる。弾性要素18が弾性変形してからタイムラグTL2が経過すると(つまり、バックラッシ要素BL2が解消されると)、
図5に示すように、弾性要素20に作用した駆動力Fによって、該弾性要素20が弾性変形し始める。そして、被駆動体22が、弾性要素20からの力(応力、摩擦力)を受けつつ、左方へ移動し始めることになる。
【0029】
このように、産業機械12においては、モータ16が発生した駆動力Fが弾性要素18に作用して該弾性要素18を弾性変形させる段階ST1(
図4)があり、この段階ST1においては、バックラッシ要素BL2の影響により、弾性要素20に駆動力Fが実質作用しない。すなわち、この段階ST1では、産業機械12の機械モデルにおいて、弾性要素18のバネのみが存在していると見做すことができ、故に、弾性パラメータPR1のみ考慮する必要がある。
【0030】
そして、段階ST1から、駆動力Fが弾性要素18を通して弾性要素20に作用して該弾性要素20を弾性変形させる段階ST2(
図5)へ移行する。この段階ST2では、駆動力Fが弾性要素18及び20に作用するので、産業機械12の機械モデルにおいて、弾性要素18及び20の合成バネが存在しているものと見做すことができ、故に、弾性パラメータPR1及びPR2を考慮する必要がある。
【0031】
このように駆動力Fが複数の弾性要素18及び20に段階的に作用する複数の段階ST1及びST2を経て、被駆動体22が駆動力Fによって駆動される。指令CMに従ってモータ16が駆動力Fを発生させたときに弾性要素18及び20が段階的に弾性変形することで、左方への被駆動体22の動き出しに遅れが生じ、その結果、指令CMを構成する位置指令CMpと実際の被駆動体22の位置(具体的には、モータ16の回転位置)との間に誤差εが生じてしまう。
【0032】
このような誤差εを打ち消すべく、プロセッサ30は、弾性要素18、20の弾性パラメータPRに基づいて、指令CMを補正する補正量βを求める補正量演算処理CPを実行する。したがって、本実施形態においては、プロセッサ30は、補正量演算処理CPを実行する補正量演算部42(
図1)として機能する。なお、補正量演算処理CPの詳細については、後述する。
【0033】
上述のような指令CMに従ってモータ16を加速させ、
図3~
図5を参照して説明したように被駆動体22を移動させたときの、該指令CMに含まれる位置指令CMp及びトルク指令CMτの時間変化特性の一例を、
図6に示す。
図6に示す位置指令CMpは、時間t0においてモータ16(又は被駆動体22)の動作方向を反転させていることを表している。
【0034】
一方、トルク指令CMτの、時間tに対する変化の度合いDは、時間t0~t1の期間で比較的急である一方、時間t1以降の期間で比較的緩やかになっている。時間t0~t1の期間は、上述の段階ST1に対応する一方、時間t1以降の期間は、上述の段階ST2に対応している。
【0035】
なお、指令CMに応じてモータ16が発生する駆動力Fは、トルク指令CMτ、力フィードバックF、加速度フィードバックα(又は加速度指令CMα)、及び電流フィードバックIと高度に相関する。よって、トルク指令CMτ、力フィードバックF、加速度フィードバックα、加速度指令CMα、及び電流フィードバックIは、駆動力Fを示す力パラメータFPとして見做すことができる。よって、力フィードバックF、加速度α、加速度指令CMα、及び電流フィードバックIの時間変化特性は、
図6に示すトルク指令CMτ(換言すれば、駆動力F)の時間変化特性と類似する。
【0036】
本実施形態においては、プロセッサ30は、モータ16の稼働中に、段階ST1と段階ST2とで異なる補正量演算処理CP1、CP2を実行するために、段階ST1から段階ST2への移行を検出する。具体的には、プロセッサ30は、力パラメータFP(トルク指令CMτ、加速度指令CMα、力フィードバックF、加速度α、加速度フィードバックα、又は電流フィードバックI)の変化の度合いDを取得し、該変化の度合いDに基づいて、段階ST1から段階ST2への移行を検出する。
【0037】
一例として、プロセッサ30は、変化の度合いDとして、トルク指令CMτ(
図6)の傾きD1(=δCMτ/δt)を取得する。例えば、プロセッサ30は、制御周期Tc(例えば、50[msec])で指令CMを生成する場合、直近に生成したトルク指令CMτ
nと、該トルク指令CMτ
nの直前に生成したトルク指令CMτ
n-1との差D2(=CMτ
n-CMτ
n-1)を求め、該差D2を制御周期Tcで除算することで傾きD1(=D2/Tc=(CMτ
n-CMτ
n-1)/Tc)を求めてもよい。
【0038】
代替的には、プロセッサ30は、上述の差D2(=CMτn-CMτn-1)を、変化の度合いDとして取得してもよい。なお、プロセッサ30は、加速度指令CMαについても、トルク指令CMτと同様に、加速度指令CMαの傾きD3(=δCMα/δt=(CMαn-CMαn-1)/Tc)、又は差D4(=CMαn-CMαn-1)を、変化の度合いDとして取得できることを理解されたい。
【0039】
他の例として、プロセッサ30は、変化の度合いDとして、力フィードバックFの傾きD5(=δF/δt)を取得する。例えば、プロセッサ30は、センサ24から力フィードバックFを制御周期tcで取得する。そして、プロセッサ30は、直近に取得した力フィードバックFnと、該力フィードバックFnの直前に取得した力フィードバックFn-1との差D6(=Fn-Fn-1)を求め、該差D6を制御周期Tcで除算することで傾きD5(=D6/Tc=(Fn-Fn-1)/Tc)を求めてもよい。
【0040】
代替的には、プロセッサ30は、上述の差D6(=Fn-Fn-1)を、変化の度合いDとして取得してもよい。なお、プロセッサ30は、電流フィードバックIについても、力フィードバックFnと同様に、センサ24から制御周期Tcで取得し、電流フィードバックIの傾きD7(=δI/δt=(In-In-1)/Tc)、又は差D8(=In-In-1)を、変化の度合いDとして取得できることを理解されたい。
【0041】
さらに他の例として、プロセッサ30は、変化の度合いDとして、加速度フィードバックαの傾きD9(つまり、躍度)を取得してもよい。具体的には、プロセッサ30は、センサ24から位置フィードバックPを制御周期Tcで取得し、直近に取得した位置フィードバックPnと、該位置フィードバックPnの直前に生成した位置フィードバックPn-1との差(=Pn-Pn-1)を求め、該差を制御周期Tcで除算することで、速度フィードバックVn(=(Pn-Pn-1)/Tc)を求める。
【0042】
次いで、プロセッサ30は、直近に取得した速度フィードバックVnと、該速度フィードバックVnの直前に生成した速度フィードバックVn-1との差(=Vn-Vn-1)を求め、該差を制御周期Tcで除算することで、加速度フィードバックαn(=(Vn-Vn-1)/Tc)を求める。
【0043】
次いで、プロセッサ30は、直近に取得した加速度フィードバックαnと、該加速度フィードバックαnの直前に生成した加速度フィードバックαn-1との差D10(=αn-αn-1)を求め、該差D10を制御周期Tcで除算することで、加速度フィードバックαの傾きD9(=D10/Tc=(αn-αn-1)/Tc)を取得する。代替的には、プロセッサ30は、上述の差D10を、加速度フィードバックαの変化の度合いDとして取得してもよい。
【0044】
以上のように、プロセッサ30は、力パラメータFP(具体的には、トルク指令CMτ、加速度指令CMτ、力フィードバックF、電流フィードバックI、又は加速度フィードバックα)の変化の度合いD(D1~D10)を取得する変化取得部44(
図1)として機能する。
【0045】
次いで、プロセッサ30は、取得した変化の度合いDが、予め定めた基準Dthを超えたか否かを判定する。例えば、変化の度合いDとしてトルク指令CMτの傾きD1を取得した場合、プロセッサ30は、傾きD1が予め定めた基準値Dth1を超えて減少した場合(D1<Dth1)、変化の度合いDが基準Dthを超えたと判定する。
【0046】
この基準値D
th1は、例えば、
図6に示す段階ST1でのトルク指令CMτの傾きD1
_1と、段階ST2でのトルク指令CMτの傾きD1
_2との間の値(D1
_2<D
th1<D1
_1)として、予め定められ得る。なお、プロセッサ30は、他の変化の度合いD2~D10についても、同様の手法で基準D
thを超えたか否かを判定できることを理解されたい。
【0047】
プロセッサ30は、変化の度合いDが基準D
thを超えたと判定したときに、段階ST1から段階ST2へ移行したこと(換言すれば、時間t1のタイミング)を検出する。このように、本実施形態においては、段階ST1から段階ST2へ移行したことを検出する段階検出部46(
図1)として機能する。
【0048】
上述のように段階ST1から段階ST2への移行を検出したとき、プロセッサ30は、実行する補正量演算処理CPを、弾性要素18の弾性パラメータPR1に基づく補正量演算処理CP1から、該弾性パラメータPR1と、弾性要素20の弾性パラメータPR2とに基づく補正量演算処理CP2へ切り換える。
【0049】
具体的には、プロセッサ30は、補正量演算部42として機能し、段階ST1(
図6中の時間t0~t1の期間)においては、補正量演算処理CP1を実行し、該補正量演算処理CP1において、弾性要素18の弾性パラメータPR1としてのバネ定数k1と、上述の力パラメータFPとを用いて、弾性要素18に関する補正量β1を求める。一例として、プロセッサ30は、補正量演算処理CP1において、バネ定数k1と、直近に取得したトルク指令CMτとを、以下の式(1)に代入することで、補正量β1を求める。
β1=CMτ/k1 ・・・(1)
【0050】
この式(1)は、いわゆるフックの法則であって、本実施形態に係る補正量演算処理CP1は、
図3~
図5に示すように弾性要素18を1つのバネとして擬制した機械モデルに基づいている。バネ定数k1は、産業機械12においてモータ16が弾性要素18に加えた力(トルク)と、該力による弾性要素18の軸線Aの方向の弾性変形量との比例係数として予め定められ、メモリ32に格納される。
【0051】
上述の式(1)から求められる補正量β1は、段階ST1(
図4)で弾性要素18が弾性変形することで生じる誤差ε1を打ち消すためのものである。こうして、プロセッサ30は、段階ST1において補正量演算処理CP1を実行することで、弾性要素18に関する補正量β1を求める。
【0052】
そして、プロセッサ30は、段階ST1において、求めた補正量β1で指令CMを補正する。具体的には、補正量β1は、モータ16の回転位置P(又は被駆動体22の位置)と同次元のパラメータであるので、プロセッサ30は、補正量β1を位置指令CMpに適用することで、該位置指令CMpを補正する。例えば、プロセッサ30は、補正量β1を位置指令CMpに加算(CMp+β1)することで、該位置指令CMpを補正してもよい。又は、補正量β1を、モータ16の出力シャフト16aの回転位置に変換し、変換後の補正量β1を位置指令CMpに加算してもよい。
【0053】
一方、段階ST2(
図6中の時間t1以降の期間)においては、プロセッサ30は、補正量演算部42として機能して、補正量演算処理CP2を実行する。補正量演算処理CP2の一例として、プロセッサ30は、まず、段階ST1から段階ST2への移行を検出した時点(
図6中の時間t1)でのトルク指令CMτ
1(
図6)を取得する。
【0054】
その後、プロセッサ30は、直近に取得したトルク指令CMτと、上述のトルク指令CMτ1との差Δτ(=CMτ-CMτ1)を取得し、弾性要素18のバネ定数k1と、直近に取得したΔτを以下の式(2)に代入することで、補正量β1’を求める。
β1’=Δτ/k1 ・・・(2)
【0055】
この式(2)も、上述の式(1)と同様にフックの法則を示しており、この補正量β1’は、段階ST2(
図5)で弾性要素18が弾性変形することで生じる誤差ε1を打ち消すためのものである。以下、補正量β1’を求めるために、トルク指令CMτの代わりに差Δτを用いる意義について、説明する。
【0056】
段階ST1(
図4)から段階ST2(
図5)へ移行すると、モータ16が発生する駆動力Fは、バックラッシ要素BL1及びBL2での摩擦力(等価回路上の抵抗)等の影響を受ける。その結果、段階ST2において弾性要素18及び20を弾性変形させる(つまり、バネを伸ばす)力は、駆動力Fよりも減ぜられることになる。よって、段階ST2で弾性要素18及び20を弾性変形させる力を、上述の差Δτで近似することで、段階ST2での弾性要素18及び20の弾性変形量(換言すれば、補正量)を、より正確に評価することができる。
【0057】
上述の補正量β1’を求めるとともに、プロセッサ30は、弾性要素20の弾性パラメータPR2としてのバネ定数k2と、直近に取得した差Δτとを以下の式(3)に代入することで、補正量β2を求める。
β2=Δτ/k2 ・・・(3)
【0058】
この式(3)も、上述の式(2)と同様にフックの法則を示しており、本実施形態に係る補正量演算処理CP2は、弾性要素20を1つのバネとして擬制した機械モデルに基づいている。バネ定数k2は、産業機械12においてモータ16が弾性要素20に加えた力(トルク)と、該力による弾性要素20の軸線Aの方向の弾性変形量との比例係数として予め定められ、メモリ32に格納される。補正量β2は、段階ST2(
図5)で弾性要素20が弾性変形することで生じる誤差ε2を打ち消すためのものである。
【0059】
そして、プロセッサ30は、求めた補正量β1’及びβ2の和Σβn(=β1’+β2)を求め、該和Σβnを、弾性要素18及び20に関する補正量β3(=Σβn=Δτ(1/k1+1/k2))として取得する。この補正量β3は、段階ST2で弾性要素18及び20の合成バネが弾性変形することで生じる誤差ε3を打ち消すためのものである。
【0060】
補正量演算処理CP2の他の例として、プロセッサ30は、弾性要素18及び20の合成バネ定数ksと、力パラメータFPとしてのトルク指令CMτ
1及びCMτとを用いて、弾性要素18及び20に関する補正量β3を求める。ここで、
図3~
図5に示すような、弾性要素18及び20が直列接続された機械モデルの場合、合成バネ定数ksと、バネ定数k1及びk2とは、以下の式(4)を満たす。
1/ks=1/k1+1/k2 ・・・(4)
【0061】
この式(4)より、合成バネ定数ksは、ks=k1・k2/(k1+k2)として、予め定められ、メモリ32に格納される。プロセッサ30は、直近に取得したトルク指令CMτとトルク指令CMτ1との差Δτを取得し、該差Δτと合成バネ定数ksとを、以下の式(5)に代入することで、弾性要素18及び20に関する補正量β3を求める。
β3=Δτ/ks=Δτ(1/k1+1/k2) ・・・(5)
【0062】
この式(5)も、フックの法則を示しており、弾性要素18及び20を1つの合成バネとして擬制した機械モデルに基づいている。以上のようにして、プロセッサ30は、段階ST2において補正量演算処理CP2を実行することで、弾性要素18及び20に関する補正量β3を求める。そして、プロセッサ30は、段階ST2において、段階ST1と同様に、求めた補正量β3を位置指令CMpに適用する(例えば、加算する)ことで、該位置指令CMpを補正する。
【0063】
上述のように、プロセッサ30は、補正量演算部42として機能して、段階ST1においては、弾性パラメータPR1(バネ定数k1)に基づく補正量演算処理CP1を実行し、段階ST1から段階ST2への移行を検出すると、該補正量演算処理CP1から、弾性パラメータPR1(バネ定数k1)及びPR2(バネ定数k2)に基づく補正量演算処理CP2へ切り換える。こうして、プロセッサ30は、段階ST1及びST2において、求めた補正量β1及びβ3で位置指令CMpをそれぞれ補正する。
【0064】
以下、
図7を参照して、プロセッサ30が実行する指令補正処理の詳細なフローについて説明する。
図7に示すフローは、プロセッサ30が、オペレータ、上位コントローラ、又は動作プログラムから動作開始指令を受け付けたときに、開始する。ステップS1において、プロセッサ30は、動作プログラムに従って、モータ16への指令CMを生成する動作を開始する。モータ16は、指令CMに従って被駆動体22を駆動し、これにより、産業機械12は、ワークに対する所定の作業を実行する。
【0065】
ステップS2において、プロセッサ30は、モータ16を加速するように駆動するための指令CMがあるか否かを判定する。例えば、この指令CMは、モータ16の動作方向を反転させた後に該モータ16を加速するための指令である。代替的には、この指令CMは、停止状態(又は、低速動作状態)のモータ16を急加速するための指令であってもよい。このような加速をするための指令CMに従ってモータ16を動作させたとき、
図3~
図5に示すように駆動力Fが複数の弾性要素18及び20に段階的に作用することで、上述した複数の段階ST1及びST2が順に生じることになる。
【0066】
例えば、プロセッサ30は、動作プログラムを解析することで、モータ16を加速(例えば、反転して加速)するための指令CMがあるか否かを認識できる。プロセッサ30は、YESと判定するとステップS3へ進む一方、NOと判定した場合は、ステップS7へ進む。このステップS2でYESと判定した時点(
図6中の時間t0に相当)から、モータ16は加速を開始し、これにより産業機械12の状態は、段階ST1へ移行する。
【0067】
ステップS3において、プロセッサ30は、補正量演算処理CP1を開始する。具体的には、プロセッサ30は、上述した方法により、弾性要素18の弾性パラメータPR1(バネ定数k1)と力パラメータFP(トルク指令CMτ)とを用いて、弾性要素18に関する補正量β1を求める。そして、プロセッサ30は、求めた補正量β1で指令CMを補正する。この補正量β1の算出と、指令CMの補正との一連の動作を、段階ST1の間に、例えば制御周期tc(又は制御周期tcの整数倍の周期)で、繰り返し実行する。
【0068】
ステップS4において、プロセッサ30は、時間tに対する力パラメータFPの変化の度合いDを取得する動作を開始する。具体的には、プロセッサ30は、上述した方法により、例えばトルク指令CMτの傾きD1を、変化の度合いDとして、制御周期tc(又は制御周期tcの整数倍の周期)で、繰り返し取得する。
【0069】
ステップS5において、プロセッサ30は、直近に取得した変化の度合いDが、予め定めた基準D
thを超えたか否かを判定する。例えば、ステップS4で傾きD1を取得した場合、プロセッサ30は、傾きD1が基準値D
th1を超えて減少したか否かを判定する。プロセッサ30は、YESと判定するとステップS6へ進む一方、NOと判定するとステップS5をループする。このステップS5でYESと判定した時点(
図6中の時間t1に相当)で、産業機械12の状態は、段階ST1から段階ST2へ移行したと見做すことができる。
【0070】
ステップS6において、プロセッサ30は、補正量演算処理CP1から補正量演算処理CP2へ切り換える。具体的には、プロセッサ30は、上述した方法により、弾性要素18の及び20の弾性パラメータPR1及びPR2(バネ定数k1、k2、又は合成バネ定数ks)と、力パラメータFP(トルク指令CMτ、トルク指令CMτ1)とを用いて、補正量β3を求める。そして、プロセッサ30は、求めた補正量β3で指令CMを補正する。この補正量β3の算出と、指令CMの補正との一連の動作を、段階ST2の間に、例えば制御周期tc(又は制御周期tcの整数倍の周期)で、繰り返し実行する。
【0071】
ステップS7において、プロセッサ30は、オペレータ、上位コントローラ、又は動作プログラムから動作終了指令を受け付けたか否かを判定する。プロセッサ30は、YESと判定した場合は、
図7に示すフローを終了する一方、NOと判定した場合はステップS2へ戻る。
【0072】
以上のように、本実施形態においては、段階検出部46は、段階ST1から段階ST2へ移行したことを検出し、補正量演算部42は、段階ST1から段階ST2への移行が検出されたときに、実行する補正量演算処理CPを、弾性パラメータPR1に基づく補正量演算処理CP1から、弾性パラメータPR1及びPR2に基づく補正量演算処理CP2へ切り換えている。
【0073】
換言すれば、プロセッサ30は、モータ16が発生した駆動力Fが複数の弾性要素18及び20に順に作用する段階ST1、ST2に応じて、補正量βを取得するために用いる弾性パラメータPR1、PR2を切り換えている。この構成によれば、各段階ST1、ST2に適した補正量β1、β3を求めることができる。
【0074】
したがって、モータ16と被駆動体22とが複数の弾性要素18及び20を介して連結されている産業機械12において、弾性要素18及び20の段階的な弾性変形に起因する誤差εをより高精度に打ち消すことができるので、モータ16による被駆動体22の位置決め精度を、大幅に向上させることができる。
【0075】
また、本実施形態においては、変化取得部44は、時間tに対する力パラメータFPの変化の度合いD(D1~D10)を取得し、段階検出部46は、取得した変化の度合いDが基準D
thを超えたときに、段階ST1から段階ST2へ移行したことを検出する。ここで、段階ST1から段階ST2への移行は、力パラメータFPの変化として顕著に表れる(例えば
図6)ので、変化の度合いDを監視することで、段階ST1から段階ST2へ移行を、高精度且つリアルタイムで検出できる。
【0076】
また、本実施形態においては、変化取得部44は、変化の度合いDとして、力パラメータD(例えば、トルク指令CMτ、加速度指令CMα、力フィードバックF、電流フィードバックI、又は加速度フィードバックα)の傾きD1、D3、D5,D7又はD9を取得する。この構成によれば、段階ST1から段階ST2へ移行を、さらに高精度に検出できる。
【0077】
また、本実施形態においては、指令生成部40は、モータ16(つまり、被駆動体22)の動作方向を反転(
図6中の時間t0)させた後に該モータ16を加速するための指令CMを生成し、これにより、産業機械12の状態が段階ST1を経て段階ST2へ移行している。
【0078】
ここで、
図3~
図5を参照して説明した段階ST1から段階ST2への移行は、モータ16(被駆動体22)の動作方向を反転させた後に該モータ16を加速したときに、顕著に表れる。すなわち、モータ16の反転時に、誤差ε(ε1、ε2、ε3)が顕著に生じることになる。本実施形態によれば、モータ16の反転時に生じる誤差εを効果的に打ち消すことができ、その結果、モータ16の反転時での位置決め精度を、効果的に向上させることができる。
【0079】
なお、本実施形態においては、上述の式(2)、(3)及び(5)において、バックラッシ要素BL1及びBL2での摩擦力等の影響を考慮して差Δτを用いた場合について述べた。しかしながら、プロセッサ30は、上述の式(2)、(3)及び(5)中の差Δτの代わりに、直近に取得したトルク指令CMτを代入してもよい。
【0080】
また、上述の式(1)に関し、プロセッサ30は、トルク指令CMτを、弾性要素18のイナーシャ等の影響を除去するように補正した上で、該式(1)に代入し、補正量β1を求めてもよい。また、上述の式(2)、(3)及び(5)に関しても、プロセッサ30は、トルク指令CMτを、弾性要素18及び20のイナーシャ等の影響を除去するように補正した上で該式(2)及び(3)、又は式(5)に代入し、補正量β3を求めてもよい。
【0081】
また、プロセッサ30は、上述の式(1)において、トルク指令CMτの代わりに、加速度フィードバックαに、弾性要素18の質量m1を乗算した値:α×m1を代入してもよい。同様に、上述の式(2)及び(3)、又は式(5)において、プロセッサ30は、トルク指令CMτ(及びCMτ1)の代わりに、加速度フィードバックαに、弾性要素18の質量m1及び弾性要素20の質量m2の和を乗算した値:(m1+m2)αを代入してもよい。
【0082】
また、本実施形態においては、産業機械12を、
図3~
図5に示すように2つのバネ(弾性要素18及び20)が直列接続された機械モデルとして近似した上で、フックの法則に基づく式(1)~(5)から補正量βを求める場合について述べた。しかしながら、上述の式(1)~(5)は一例であって、例えば弾性パラメータPR1及びPR2として弾性率G1及びG2を用いて、産業機械12をより複雑な機械モデルとして近似し、該複雑な機械モデルを表す理論式に基づいて、補正量βを求めることも可能である。
【0083】
次に、
図8及び
図9を参照して、制御装置14の他の機能について説明する。本実施形態においては、プロセッサ30は、上述の変化取得部44の代わりに、動作量取得部48として機能する。以下、
図9を参照して、本実施形態に係る制御装置14の機能について、説明する。なお、
図9に示すフローにおいて、
図7のフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
【0084】
プロセッサ30は、
図9に示すフローを開始後、上述のステップS1~S3を実行する。ステップS4’において、プロセッサ30は、ステップS2でYESと判定した時点(
図6中の時間t0)からのモータ16の動作量MAを取得するプロセスを開始する。ここで、ステップS2でYESと判定した時点(時間t0)は、モータ16を反転後に加速するための指令CMに従って該モータ16が動作を開始した時点である。
【0085】
一例として、プロセッサ30は、ステップS4’の開始時点(つまり、ステップS2でYESと判定した時点t0)で、センサ24から位置フィードバックP0を取得する。その後、プロセッサ30は、段階ST1の間、例えば制御周期tsで、センサ24から位置フィードバックPnを繰り返し取得する。
【0086】
そして、プロセッサ30は、位置フィードバックPnを取得する毎に、取得した位置フィードバックPnと、ステップS4’の開始時点t0で取得した位置フィードバックP0との差に基づいて、時点t0からのモータ16の動作量MAnを取得する。この動作量MAnは、例えば、モータ16の出力シャフト16aの回転角度であってもよいし、又は、該回転角度を軸線Aの方向への移動距離へ変換したものであってもよい。このように、本実施形態においては、プロセッサ30は、時点t0からのモータ16の動作量MAnを取得する動作量取得部48として機能する。
【0087】
ステップS5’において、プロセッサ30は、直近に取得した動作量MAnが、予め定めた閾値MAthに到達した(MAn≧MAth)か否かを判定する。ここで、時点t0から、段階ST1から段階ST2へ移行する時点t1までにモータ16が動作する動作量MAth(回転角度、又は移動距離)は、実験的手法により、予め取得することができる。
【0088】
換言すれば、
図3に示す機械モデルにおいて、モータ16が被駆動体22を左方へ駆動する動作を開始した時点t0から、駆動力Fが弾性要素18を通して弾性要素20に作用して、該弾性要素20のバネが伸び始める時点t1までの、該モータ16の動作量MA
th(回転角度)は、実験等により予め取得できる。このように予め取得した動作量MA
thを閾値MA
thとして用いて、ステップS4’で取得した動作量MA
nと比較することで、段階ST1から段階ST2へ移行するタイミング(時間t1)を検出できる。
【0089】
プロセッサ30は、段階検出部46として機能し、直近に取得した動作量MAnが閾値MAthに到達した(MAn≧MAth)か否かを判定し、YESと判定した場合はステップS6へ進む一方、NOと判定した場合はステップS5’をループする。このステップS5’でYESと判定したとき、産業機械12の状態は、段階ST1から段階ST2へ移行したものと見做すことができる。ステップS5’でYESと判定した後、プロセッサ30は、上述のステップS6及びS7を実行する。
【0090】
このように、本実施形態においては、段階検出部46は、動作量取得部48が取得した動作量MA
nが予め定めた閾値MA
thに達したときに、段階ST1から段階ST2へ移行したことを検出する。ここで、
図6に示す例では、時間t1で変化の度合いDが大きく変わっているが、仮に、モータ16の速度V(若しくは速度指令CMv)、又はトルク指令CMτ(若しくは加速度指令CMα)が小さい場合は、変化の度合いD(傾き)の変動量が小さくなる。この場合、変化の度合いDから、段階ST1から段階ST2への移行を検出し難くなる。
【0091】
本実施形態においては、変化の度合いDの代わりに、モータ16の動作量MAnから、段階ST1から段階ST2への移行を検出できる。したがって、速度V(速度指令CMv)、トルク指令CMτ又は加速度指令CMαが小さい場合でも、段階ST1から段階ST2への移行を確実に検出できる。なお、プロセッサ30は、ステップS4’を実行した後に、ステップS3を実行してもよい。
【0092】
次に、
図10及び
図11を参照して、他の実施形態に係る制御装置14’について説明する。制御装置14’は、上述の制御装置14の代わりに、産業機械システム10に適用可能であり、産業機械12を制御する。制御装置14’は、上述の制御装置14と、計時部38をさらに有する点で、相違する。計時部38は、バス36を介してプロセッサ30に接続され、該プロセッサ30からの指令に応じて、任意の時点からの経過時間を計時する。
【0093】
本実施形態においては、プロセッサ30は、上述の変化取得部44又は動作量取得部48の代わりに、経過時間取得部50として機能する。以下、
図11を参照して、本実施形態に係る制御装置14’の機能について、説明する。なお、
図11に示すフローにおいて、
図7のフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
【0094】
プロセッサ30は、
図11に示すフローを開始後、上述のステップS1~S3を実行する。ステップS4”において、プロセッサ30は、ステップS2でYESと判定した時点(時間t0)からの経過時間teの計時を開始する。具体的には、プロセッサ30は、ステップS2でYESと判定した時点t0で計時部38に指令を送り、計時部38は、該指令に応じて、該時点t0からの経過時間teの計時を開始する。
【0095】
ステップS5”において、プロセッサ30は、計時部38が計時している経過時間teが予め定めた閾値tthに到達した(te≧tth)か否かを判定する。ここで、時間t0から、段階ST1から段階ST2へ移行する時間t1までの時間tth(つまり段階ST1の期間)は、段階ST1の間にモータ16に供給される指令CM(位置指令CMp、速度指令CMv又はトルク指令CMτ等)に応じて変化する。換言すれば、この時間tth(段階ST1の期間)は、該指令CMが既知であれば、例えば実験的手法を用いることにより、予め取得できる。
【0096】
一例として、メモリ32は、指令CMと時間tthとを互いに関連付けて格納したデータテーブルTAを予め記憶し、プロセッサ30は、動作プログラムOPに規定される命令文から段階ST1の間にモータ16に供給される指令CMを取得し、該指令CMに対応する時間tthをデータテーブルTAから検索することで、該時間tthを取得できる。このように取得した時間tthを閾値tthとして用いて経過時間teと比較することで、段階ST1から段階ST2へ移行するタイミング(時間t1)を検出できる。
【0097】
プロセッサ30は、段階検出部46として機能し、経過時間teが閾値tthに到達した(te≧tth)か否かを判定し、YESと判定した場合はステップS6へ進む一方、NOと判定した場合はステップS5”をループする。このステップS5”でYESと判定したとき、産業機械12の状態は、段階ST1から段階ST2へ移行したものと見做すことができる。ステップS5”でYESと判定した後、プロセッサ30は、上述のステップS6及びS7を実行する。
【0098】
このように、本実施形態においては、段階検出部46は、経過時間teが予め定めた閾値tthに達したときに、段階ST1から段階ST2へ移行したことを検出する。この構成によれば、段階ST1におけるモータ16の速度V(速度指令CMv)、トルク指令CMτ、又は加速度指令CMαが小さい場合でも、段階ST1から段階ST2への移行を確実に検出できる。なお、プロセッサ30は、ステップS4”を実行した後に、ステップS3を実行してもよい。
【0099】
なお、上述したように、速度V(速度指令CMv)、トルク指令CMτ、又は加速度指令CMαが比較的大きい場合は、段階ST1から段階ST2への移行を検出するために、変化の度合いDが有効となる一方で、速度V(速度指令CMv)、トルク指令CMτ、又は加速度指令CMαが比較的小さい場合は、段階ST1から段階ST2への移行を検出するために、動作量MA又は経過時間teが有効となる。
【0100】
プロセッサ30は、変化の度合いDが有効であるか否かに応じて、段階検出部46として段階ST1から段階ST2への移行を検出するために用いるパラメータを、変化の度合いDと動作量MA(又は経過時間te)との間で切り換えてもよい。以下、
図12及び
図13を参照して、このような形態について説明する。
【0101】
図12に示すように、本実施形態においては、制御装置14’のプロセッサ30は、指令生成部40、補正量演算部42、変化取得部44、段階検出部46、動作量取得部48、及び経過時間取得部50として機能し、
図13に示すフローを実行する。なお、
図13に示すフローにおいて、
図7及び
図9のフローと同様のプロセスには同じステップ番号を付し、重複する説明を書略する。
【0102】
図13に示すフローの開始後、プロセッサ30は、上述のステップS1~S3を実行する。ステップS11において、プロセッサ30は、段階ST1から段階ST2への移行を検出するためのパラメータとして変化の度合いDが有効であるか否かを判定する。一例として、プロセッサ30は、直近に取得した速度フィードバックV、速度指令CMv、トルク指令CMτ、又は加速度指令CMαが予め定めた閾値γ以上であるか否かを判定する。
【0103】
プロセッサ30は、速度フィードバックV、速度指令CMv、トルク指令CMτ、又は加速度指令CMαが閾値以上である場合は、変化の度合いDが有効である(すなわち、YES)と判定し、ステップS4へ進む一方、NOと判定した場合は、ステップS4’へ進む。
【0104】
ステップS11でYESと判定した場合、プロセッサ30は、変化取得部44として機能して上述のステップS4及びS5を実行することで、変化の度合いDに基づいて段階ST1から段階ST2への移行を検出する。一方、ステップS11でNOと判定した場合、プロセッサ30は、動作量取得部48として機能して上述のステップS4’及びS5’を実行することで、動作量MAに基づいて段階ST1から段階ST2への移行を検出する。
【0105】
このように、本実施形態においては、プロセッサ30は、変化の度合いDが有効であるか否かを判定し、この判定結果に応じて、段階ST1から段階ST2への移行を検出するために用いるパラメータを、変化の度合いDと動作量MAとの間で切り換えている。この構成によれば、プロセッサ30は、変化の度合いDが有効である場合は、該変化の度合いDを監視することで段階ST1から段階ST2への移行を高精度に検出できる一方、変化の度合いDが有効でない場合は、動作量MAを監視することで段階ST1から段階ST2への移行を確実に検出できる。
【0106】
なお、
図12に示すフローにおいて、ステップS11でNOと判定した場合、プロセッサ30は、ステップS4’及びS5’の代わりに、経過時間取得部50として機能して上述のステップS4”及びS5”を実行し、経過時間teに基づいて段階ST1から段階ST2への移行を検出してもよい。
【0107】
なお、
図7、
図9、
図11又は
図12に示すフローを実行する前に、プロセッサ30は、弾性要素20の弾性パラメータPR1(例えばバネ定数k1)と、弾性要素20の弾性パラメータPR2(例えばバネ定数k2)とを取得するための弾性パラメータ取得プロセスを実行してもよい。
【0108】
例えば、プロセッサ30は、弾性パラメータ取得プロセスにおいて、モータ16の動作方向を反転させた後に該モータ16を加速するための指令CM0に従って該モータ16を動作させ、これにより、被駆動体22の移動方向を反転させた後に該被駆動体22を加速させる。このときのトルク指令CMτ又は力フィードバックF1と、位置フィードバックPとに基づいて、バネ定数k1及びk2をそれぞれ取得することができる。
【0109】
なお、上述のステップS2において、プロセッサ30は、加速のための指令CMがあるか否か判定する代わりに、例えば位置フィードバックPに基づいて、モータ16の動作方向が反転したか否かを判定してもよい。また、産業機械12は、被駆動体22の位置Pを取得するセンサ24’をさらに有し、プロセッサ30は、位置フィードバックPとして、被駆動体22の位置Pをセンサ24’から取得してもよい。また、プロセッサ30は、電流フィードバックIの代わりに、モータ16に掛かる負荷トルクを取得してもよい。この負荷トルクも、上述の力パラメータFPを構成する。
【0110】
また、上述の実施形態においては、プロセッサ30は、補正量β3で位置指令CMpを補正する場合について述べた。しかしながら、これに限らず、プロセッサ30は、求めた補正量βで速度指令CMvを補正してもよい。この場合において、プロセッサ30は、例えば、上述のように求めた補正量β3を、時間一階微分することで新たな補正量β3’(=δβ3/δt)を求め、該新たな補正量β3’を速度指令CMvに適用(例えば、加算)してもよい。
【0111】
また、上述の実施形態においては、理解の容易のために、産業機械12が、被駆動体22を1軸(軸線A)方向へ駆動するモータ16及び弾性要素18(ボールねじ)を有する場合について述べた。しかしながら、これに限らず、産業機械12は、被駆動体22を、互いに直交する2軸の方向へ駆動するように構成されてもよい。
【0112】
例えば、産業機械12は、被駆動体22を第1軸(例えば軸線A)の方向へ駆動するモータ16A及び弾性要素18Aと、被駆動体22と弾性要素18Aとの間に介挿された弾性要素20Aと、被駆動体22を、第1軸と直交する第2軸の方向へ駆動するモータ16B及び弾性要素18Bと、被駆動体22と弾性要素18Bとの間に介挿された弾性要素20Bとを有してもよい。この場合、プロセッサ30は、モータ16A及び16Bの各々について、上述した方法により、段階ST1から段階ST2への移行を検出するプロセスと、補正量演算処理CPを切り換えるプロセスとを実行する。
【0113】
また、上述の実施形態においては、理解の容易のために、モータ16と被駆動体22との間に、2つ弾性要素18及び20が介挿されている場合について述べた。しかしながら、これに限らず、モータ16と被駆動体22との間に、3以上の弾性要素が介挿されてもよい。
【0114】
この場合において、プロセッサ30が、モータ16を加速するように動作させるための指令CMに従って該モータ16を動作させると、該モータ16が発生する駆動力Fは、モータ16に近い順に、第1の弾性要素、第2の弾性要素、・・・第nの弾性要素、第n+1の弾性要素、・・・に段階的に作用する。
【0115】
これに応じて、産業機械12の状態は、第1の段階ST1、第2の段階ST2、・・・第nの段階STn、第n+1の段階STn+1、・・・へ順に移行する。プロセッサ30は、段階検出部46として機能し、上述の方法により、指令CMに応じてモータ16が発生した駆動力Fが第nの弾性要素(具体的には、第1の弾性要素、第2の弾性要素、・・・第nの弾性要素)に作用する第nの段階STnから、該駆動力Fが該第nの弾性要素を通して第n+1の弾性要素に作用する第n+1の段階STn+1への移行を検出する。
【0116】
第nの段階STnから第n+1の段階STn+1への移行を検出したとき、プロセッサ30は、補正量演算部42として機能し、上述した方法により、実行する補正量演算処理CPを、第nの弾性要素の弾性パラメータPRn(具体的には、弾性パラメータPR1、PR2、・・・PRn)に基づく第nの補正量演算処理CPnから、第n+1の弾性要素の弾性パラメータPRn+1と弾性パラメータPRn(具体的には、弾性パラメータPR1、PR2、・・・PRn、PRn+1)に基づく第n+1の補正量演算処理CPn+1へ切り換える。
【0117】
一例として、第nの補正量演算処理CPnにおいて、プロセッサ30は、第1の弾性要素、第2の弾性要素、・・・第n-1の弾性要素、及び第nの弾性要素の合成バネ定数Ksを以下の式(6)から取得する。ここで、knは、第nの弾性要素のバネ定数を示している。
1/ks=Σ(1/kn)=1/k1+1/k2・・・+1/kn ・・・(6)
【0118】
プロセッサ30は、直近に取得した差Δτと、式(6)から取得した合成バネ定数ksとを、上述の式(5)に代入することで、第1の弾性要素、第2の弾性要素、・・・第n-1の弾性要素、及び第nの弾性要素に関する補正量β3を求めることができる。なお、プロセッサ30は、第n+1の補正量演算処理CPn+1においても、同様の手法で補正量β3を求めることができることを理解されたい。
【0119】
なお、上述の実施形態において、モータ16は、リニアモータでもよい。この場合、弾性要素18は、モータ16の界磁子によって推進される電機子であってもよい。上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。
【符号の説明】
【0120】
10 産業機械システム
12 産業機械
14,14’ 制御装置
16 モータ
18,20 弾性要素
22 被駆動体
30 プロセッサ
40 指令生成部
42 補正量演算部
44 変化取得部
46 段階検出部
48 動作量取得部
50 経過時間取得部