特許第5715195号(P5715195)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ファナック株式会社の特許一覧

特許5715195プログラム実行ペースを指定できるモーションコントローラ
<>
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000018
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000019
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000020
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000021
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000022
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000023
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000024
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000025
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000026
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000027
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000028
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000029
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000030
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000031
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000032
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000033
  • 特許5715195-プログラム実行ペースを指定できるモーションコントローラ 図000034
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5715195
(24)【登録日】2015年3月20日
(45)【発行日】2015年5月7日
(54)【発明の名称】プログラム実行ペースを指定できるモーションコントローラ
(51)【国際特許分類】
   G05B 19/05 20060101AFI20150416BHJP
【FI】
   G05B19/05 Z
【請求項の数】9
【全頁数】20
(21)【出願番号】特願2013-140102(P2013-140102)
(22)【出願日】2013年7月3日
(65)【公開番号】特開2015-14849(P2015-14849A)
(43)【公開日】2015年1月22日
【審査請求日】2014年8月25日
【早期審査対象出願】
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】110001151
【氏名又は名称】あいわ特許業務法人
(72)【発明者】
【氏名】吉村 僚太
【審査官】 稲垣 浩司
(56)【参考文献】
【文献】 特許第4951165(JP,B2)
【文献】 特開平10−031509(JP,A)
【文献】 特開平09−282019(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
あらかじめ登録され、複数のブロックで構成されたプログラムを逐次実行するモーションコントローラにおいて、
前記プログラムの各ブロックの実行時間を実測する手段と、
前記プログラム全体の実行時間を指定する手段と、
前記ブロックのパルス出力が完了した直後からインポジション状態になるまでの時間を設定する手段と、
前記実測したプログラムの各ブロック実行時間と前記指定したプログラム実行時間、および前記設定したインポジション状態になるまでの時間から、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出する算出手段と、
前記算出した速度または加減速時定数でプログラムを実行する実行手段、
とを有することを特徴とするモーションコントローラ。
【請求項2】
前記ブロックのパルス出力が完了した後からインポジション状態になるまでの時間を設定する手段の代わりに、前記ブロックのパルス出力が完了した直後からインポジション状態になるまでの時間を実測する手段を備え、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1記載のモーションコントローラ。
【請求項3】
補助機能の実行に要する時間を設定する手段を備え、該設定した補助機能の実行時間も加味して、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1または2のいずれかに記載のモーションコントローラ。
【請求項4】
前記補助機能の実行に要する時間を設定する手段の代わりに、前記補助機能の実行時間を実測する手段を備え、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、該算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項3記載のモーションコントローラ。
【請求項5】
前記プログラムの各ブロック実行時間を実測する手段の代わりに、前記プログラムの各ブロック実行時間を解析する手段を備え、該解析したプログラムの各ブロック実行時間と指定したプログラム実行時間から、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1〜4のいずれか1つに記載のモーションコントローラ。
【請求項6】
前記プログラム全体の実行時間を指定する手段の代わりに、前記プログラム全体の実行ペースの割合を指定する手段を備え、前記プログラム全体の実行ペースが指定した割合になるような各ブロックの速度または加減速時定数を算出して、該算出した速度・加減速時定数でプログラムを実行することを特徴とする請求項1〜5のいずれか1つに記載のモーションコントローラ。
【請求項7】
複数のプログラムを同時に実行する手段と、前記プログラム全体の実行時間を指定する手段の代わりに、前記複数のプログラムのうちの指定されたプログラム全体の実行時間を実測し、前記複数のプログラムのうちの他の各プログラムの実行時間として指定する手段を備え、各プログラムの実行時間と指定されたプログラムの実行時間から、各プログラムが指定されたプログラムと同じ実行時間になるような各ブロックの速度または加減速時定数を算出して、該算出した速度または加減速時定数で各プログラムを実行することを特徴とする請求項1〜4のいずれか1つに記載のモーションコントローラ。
【請求項8】
前記プログラムの実行中に各ブロックの実行時間を実測する手段と、該実測したブロック実行時間から、次に実行する予定のブロックの速度または加減速時定数を算出する手段を備え、該算出した速度または加減速時定数で対象となるブロックを実行することで、プログラムが指定した実行時間、または指定した割合の実行ペースになるようにプログラム全体の実行ペースを変更することを特徴とする請求項1〜7のいずれか1つに記載のモーションコントローラ。
【請求項9】
前記プログラムに含まれる各ブロックの加速度を解析する手段と、各ブロックの加速度を比較して、加速度が大きいブロックに対して加速度が小さくなるように速度または加減速時定数を算出する手段を備え、実行するプログラム全体の中で、加速度の大きいところを集中的に下げることで、プログラムが指定した実行時間、または指定した割合の実行ペースになるようにプログラム全体の実行ペースを変更することを特徴とする請求項1〜8のいずれか1つに記載のモーションコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、モーションコントローラに関する。
【背景技術】
【0002】
あらかじめ登録され、複数のブロックで構成されたプログラムを逐次実行するモーションコントローラによって、周辺装置と連携して動作する機器を制御する場合、プログラムが一定の時間で終了しないと、機器の可動域に周辺装置が侵入し、機器と周辺装置が干渉してしまう場合がある。そのため、あらかじめプログラム全体の実行時間を求め、所望の時間との比率をオーバライド値に設定し、軸の移動速度を変えることで、プログラム実行時間を調整していた。
【0003】
ここで、加工機とローダとモーションコントローラから構成されるシステムの動作を説明する。このシステムは、図1に示されるように、ロード、加工、アンロードを順に行っている。システム全体の実行ペースは外部のコンダクタが決めており、各機器が割り当てられた時間内で動作することで対応している。例えば、コンダクタがシステム全体のペースを50%にするよう指令すると、各機器はそれぞれの動作を50%のペースで行う。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第4951165号
【発明の概要】
【発明が解決しようとする課題】
【0005】
加工機において、コンダクタに指令された実行時間になるようにプログラムを実行したい場合、従来は、あらかじめ計測しておいたプログラム実行時間と指令された時間との比率をオーバライド値に設定し、軸の移動速度を変えることで対応していた。ところが、インポジションチェックや時間一定型加減速等、実行時間がオーバライドに依存しない要素があると、オーバライド値を設定しても、プログラム実行時間と指令された時間との間にずれが生じていた。
なお、プログラムに含まれるブロックが1ブロックの場合、先行技術を使えば、指令された時間でプログラムを実行することができるが(特許文献1参照)、複数ブロックが含まれる場合は考慮されていない。
【0006】
加工の時間が延びた場合、アンロードのために入ってきたローダと加工機が干渉する場合がある。これを防ぐため、オーバライド値を大きめに設定して、プログラムの実行時間を指令された時間よりも若干短くしていた。これにより、干渉は避けられるが、指令された時間で実行する場合に比べて高速な移動や加速が必要となり、多くの電力を消費しなければならなかった。
【0007】
そこで、本発明の目的は、上記従来技術の問題点に鑑み、プログラムがインポジションチェックや時間一定型加減速等、実行時間がオーバライドに依存しない要素を含んでいる場合でも、指令された実行時間でプログラムを実行できるモーションコントローラを提供することである。
【課題を解決するための手段】
【0008】
あらかじめ、プログラムをそのまま実行した場合の実行時間の計測、所望の実行時間の設定、および当該ブロックのパルス出力が完了した後からインポジション状態になるまでの時間の設定を行っておき、計測したプログラム実行時間と所望の実行時間、および設定したインポジション状態になるまでの時間から、プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度・加減速時定数でプログラムを実行する。
そして、本願の請求項1に係る発明は、あらかじめ登録され、複数のブロックで構成されたプログラムを逐次実行するモーションコントローラにおいて、前記プログラムの各ブロックの実行時間を実測する手段と、前記プログラム全体の実行時間を指定する手段と、
前記ブロックのパルス出力が完了した直後からインポジション状態になるまでの時間を設定する手段と、前記実測したプログラムの各ブロック実行時間と前記指定したプログラム実行時間、および前記設定したインポジション状態になるまでの時間から、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出する算出手段と、前記算出した速度または加減速時定数でプログラムを実行する実行手段、とを有することを特徴とするモーションコントローラである。
【0009】
請求項2に係る発明は、前記ブロックのパルス出力が完了した後からインポジション状態になるまでの時間を設定する手段の代わりに、前記ブロックのパルス出力が完了した直後からインポジション状態になるまでの時間を実測する手段を備え、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1記載のモーションコントローラである。
請求項3に係る発明は、補助機能の実行に要する時間を設定する手段を備え、該設定した補助機能の実行時間も加味して、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1または2のいずれかに記載のモーションコントローラである。
【0010】
請求項4に係る発明は、前記補助機能の実行に要する時間を設定する手段の代わりに、前記補助機能の実行時間を実測する手段を備え、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、該算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項3記載のモーションコントローラである。
請求項5に係る発明は、前記プログラムの各ブロック実行時間を実測する手段の代わりに、前記プログラムの各ブロック実行時間を解析する手段を備え、該解析したプログラムの各ブロック実行時間と指定したプログラム実行時間から、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1〜4のいずれか1つに記載のモーションコントローラである。
【0011】
請求項6に係る発明は、前記プログラム全体の実行時間を指定する手段の代わりに、前記プログラム全体の実行ペースの割合を指定する手段を備え、前記プログラム全体の実行ペースが指定した割合になるような各ブロックの速度または加減速時定数を算出して、該算出した速度・加減速時定数でプログラムを実行することを特徴とする請求項1〜5のいずれか1つに記載のモーションコントローラである。
請求項7に係る発明は、複数のプログラムを同時に実行する手段と、前記プログラム全体の実行時間を指定する手段の代わりに、前記複数のプログラムの内の指定されたプログラム全体の実行時間を実測し、前記複数のプログラムの内の他の各プログラムの実行時間として指定する手段を備え、各プログラムの実行時間と指定されたプログラムの実行時間から、各プログラムが指定されたプログラムと同じ実行時間になるような各ブロックの速度または加減速時定数を算出して、該算出した速度または加減速時定数で各プログラムを実行することを特徴とする請求項1〜4のいずれか1つに記載のモーションコントローラである。
【0012】
請求項8に係る発明は、前記プログラムの実行中に各ブロックの実行時間を実測する手段と、該実測したブロック実行時間から、次に実行する予定のブロックの速度または加減速時定数を算出する手段を備え、該算出した速度または加減速時定数で対象となるブロックを実行することで、プログラムが指定した実行時間、または指定した割合の実行ペースになるようにプログラム全体の実行ペースを変更することを特徴とする請求項1〜7のいずれか1つに記載のモーションコントローラである。
請求項9に係る発明は、前記プログラムに含まれる各ブロックの加速度を解析する手段と、各ブロックの加速度を比較して、加速度が大きいブロックに対して加速度が小さくなるように速度または加減速時定数を算出する手段を備え、実行するプログラム全体の中で、加速度の大きいところを集中的に下げることで、プログラムが指定した実行時間、または指定した割合の実行ペースになるようにプログラム全体の実行ペースを変更することを特徴とする請求項1〜8のいずれか1つに記載のモーションコントローラである。
【発明の効果】
【0013】
本発明により、インポジションチェックや時間一定型加減速等、実行時間がオーバライドに依存しない要素があっても、所望の時間でプログラムを実行することができるため、必要最低限の電力消費で済むようになる。
【図面の簡単な説明】
【0014】
図1】加工機とローダとモーションコントローラから構成されるシステムの動作を説明する図である。
図2】実施形態1を説明するためのプログラム例である。
図3】各ブロックの実行時間Tbr_iとプログラム全体の実行時間Tprの関係を説明する図である。
図4】実測したプログラム実行時間Tpr、ブロック実行時間Tbr_iと所望するプログラム実行時間Tps、およびTpsでプログラムを実行する際のブロック実行時間Tbs_iの関係を説明する図である。
図5】所望の時間でプログラムを実行する際のブロック実行時間Tbs_i、移動距離L_i、加減速時定数Tcon_i、インポジション予想時間Tinpと移動速度Fs_iの関係を説明する図である。
図6】実施形態3を説明するためのプログラム例である。
図7】移動指令ブロック実行時間Tbr_iとプログラム実行時間Tprの関係を説明する図である。
図8】実測したプログラム実行時間Tpr、移動指令ブロック実行時間Tbr_iと所望するプログラム実行時間Tps、補助機能予想実行時間Taux_xx、およびTpsでプログラムを実行する際のブロック実行時間Tbs_iの関係を説明する図である。
図9】本発明の実施形態1に係る処理を説明するフローチャートである。
図10】本発明の実施形態2に係る処理を説明するフローチャートである。
図11】本発明の実施形態3に係る処理を説明するフローチャートである。
図12】本発明の実施形態4に係る処理を説明するフローチャートである。
図13】本発明の実施形態5に係る処理を説明するフローチャートである。
図14】本発明の実施形態6に係る処理を説明するフローチャートである。
図15】本発明の実施形態8に係る処理を説明するフローチャートである。
図16】本発明の実施形態9に係る処理を説明するフローチャートである。
図17】モーションコントローラを説明するブロック図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態を図面と共に説明する。
<実施形態1>(請求項1に対応)
モーションコントローラのメモリに図2に示されるプログラムを格納し、そのプログラムを逐次実行するモーションコントローラを例にして説明する。モーションコントローラの構成は図17を用いて後述する。図2のプログラムでは、G00でX100.0の位置に速度1000で位置決め早送りを行い(ブロック番号1)、G01でX軸方向に100.0だけ速度2000で直線補間を行う(ブロック番号2)。
【0016】
あらかじめ、時間測定のための計測信号をオンにしてプログラムをそのまま実行し、プログラムに含まれる各ブロックの実行時間Tbr_i(i:ブロック番号)と、プログラム全体の実行時間Tpr(以下、「実測プログラム実行時間」という。)を計測しておく。計測した結果を内部のデータ領域に保存しておけば、プログラムを変更しない限り、計測し直す必要はない。各ブロックの実行時間Tbr_iと実測プログラム実行時間Tprの関係は図3に示される。なお、図3では、ブロック番号が1と2の場合である。
【0017】
また、当該ブロックのパルス出力が完了後インポジション状態になるまでのインポジション予想時間Tinpを設定するパラメータを設け、あらかじめ設定しておく。なお、完了後インポジション状態になるまでの予想時間とは、パルス出力が完了した直後からインポジション状態になるまでの予想時間である。さらに、所望するプログラム全体の実行時間Tps(以下、「指定プログラム実行時間」という。)を設定するパラメータを設け、あらかじめ設定しておく。
次に、実測プログラム実行時間Tprと指定プログラム実行時間Tpsの比から、指定プログラム実行時間Tpsでプログラムを実行する際の各ブロックの実行時間Tbs_iを数1式により算出する(iはプログラムのブロック番号)。
【0018】
【数1】
【0019】
実測プログラム実行時間Tpr、実測ブロック実行時間Tbr_iとパラメータで指定した指定プログラム実行時間Tps、および数1式で算出した各ブロックの実行時間Tbs_iの関係が図4に示される。図4ではブロック番号iが1と2の場合を図示している。
【0020】
各ブロックの算出したブロックの実行時間Tbs_i、移動距離L_i、加減速時定数Tcon_i、および設定したインポジション予想時間Tinpから、指定プログラム実行時間Tpsでプログラムを実行する際の、各ブロックの移動速度Fs_iを数2式により算出する。なお、数2式は時間一定型加減速の場合である。また、移動距離L_iは加工プログラムに指定されるデータであり、加減速時定数Tcon_iはあらかじめパラメータで指定されるデータである。
【0021】
【数2】
【0022】
加工プログラムのブロック番号iにおいて、各ブロックの実行時間Tbs_i、移動距離L_i、加減速時定数Tcon_i、インポジション予想時間Tinpと、数2式で算出した移動速度Fs_iの関係が図5に示される。
【0023】
上記の処理を行った後に、プログラムの各ブロックの指令速度を算出移動速度Fs_iに入れ換えてプログラムを実行することで、プログラム全体の実行時間を指定プログラム実行時間Tpsにできる。
【0024】
なお、数2式のところで、移動速度Fs_iの代わりに加減速時定数Tcon_iを求め、各ブロックの加減速時定数を算出した値に入れ換えてプログラムを実行することでも、プログラム全体の実行時間を所望の指定プログラム実行時間Tpsにすることができる。
【0025】
図9は本発明の実施形態1に係る処理を説明するフローチャートである。以下、各ステップに従って説明する。なお、インポジション予想時間Tinp、指定プログラム実行時間Tpsは予め設定してメモリに格納されている。
●[ステップSA01]プログラム実行時間が保存されているか否か判断し、保存されている場合(YES)にはステップSA04へ移行し、保存されていない場合(NO)にはステップSA02へ移行する。
●[ステップSA02]プログラムを実行して、各ブロックの実行時間Tbr_iと実測プログラム実行時間Tprを計測する。
●[ステップSA03]計測結果をデータ領域に保存し、ステップSA04へ移行する。
●[ステップSA04]インポジション予想時間Tinpを読み込む。
●[ステップSA05]指定プログラム実行時間Tpsを読み込む。
●[ステップSA06]各ブロックの実行時間Tbs_iを数1式により算出する。
●[ステップSA07]各ブロックの移動速度Fs_iを数2式により算出する。
●[ステップSA08]各ブロックの移動速度をステップSA07で算出した移動速度Fs_iに入れ換え、処理を終了する。
【0026】
<実施形態2>(請求項2に対応)
プログラムによっては、インポジション状態になるまでの時間がブロックごとに異なる場合がある。この時、実施形態1の方法を用いようとすると、インポジション状態になるまでの時間を設定するパラメータがプログラムに含まれるブロックの数だけ必要になるため、ブロック数が増えるほど設定に手間がかかる。
【0027】
そこで、インポジション状態になるまでの時間をパラメータで予め設定するのではなく、実測する方法を追加する。
まず、実施形態1と同様に、あらかじめ、時間測定のための計測信号をオンにしてプログラムをそのまま実行し、プログラムに含まれる各ブロックの実測ブロック実行時間Tbr_i(i:ブロック番号)と、プログラム全体の実測プログラム実行時間Tprを計測しておく。その際、各ブロックにおけるパルス出力が完了直後からインポジション状態になるまでの時間であるインポジション時間Tinp_iも計測する。各ブロックの実測した実行時間Tbr_i、実測プログラム実行時間Tprと同様、実測したインポジション時間Tinp_iも内部のデータ領域に保存しておけば、プログラムを変更しない限り、計測し直す必要はない。
【0028】
そして、パラメータ設定値であるインポジション予想時間Tinpの代わりに各ブロックの実測値であるインポジション時間Tinp_iを用いることで、指定した実行時間である指定プログラム実行時間Tpsでプログラムを実行する際の各ブロックの移動速度Fs_iを数3式により求める。
【0029】
【数3】
【0030】
上記の処理を行った後に、各ブロックの指令速度を移動速度Fs_iに入れ換えてプログラムを実行することで、プログラム全体の実行時間を所望の時間である指定プログラム実行時間Tpsにできる。
【0031】
図10は本発明の実施形態2に係る処理を説明するフローチャートである。以下、各ステップに従って説明する。なお、指定プログラム実行時間Tpsは予め設定してメモリに格納されている。
●[ステップSB01]プログラム実行時間が保存されているか否か判断し、保存されている場合(YES)にはステップSB04へ移行し、保存されていない場合(NO)にはステップSB02へ移行する。
●[ステップSB02]プログラムを実行して、各ブロックの実測ブロック実行時間Tbr_i、各ブロックのインポジション状態になる時間Tinp_i、プログラム全体の実行時間である実測プログラム実行時間Tprを計測する。
●[ステップSB03]計測結果をデータ領域に保存し、ステップSB04へ移行する。
●[ステップSB04]指定プログラム実行時間Tpsを読み込む。
●[ステップSB05]各ブロックの実行時間Tbs_iを数1式により算出する。
●[ステップSB06]各ブロックの移動速度Fs_iを数3式により算出する。
●[ステップSB07]各ブロックの速度をステップSB06で算出した移動速度Fs_iに入れ換え、処理を終了する。
【0032】
<実施形態3>(請求項3に対応)
モーションコントローラのプログラムは、途中で外部機器を動作させるために、補助機能を含むことがある。補助機能のブロックでは、外部機器の動作完了を待って次のブロックを実行するが、この完了までの時間はオーバライドが変化しても一定となるのが一般的である。実施形態1および実施形態2の方法では、補助機能を含むプログラムを扱うことはできないため、以下の方法を追加する。
【0033】
図6に示されるプログラムを格納し、そのプログラムを逐次実行するモーションコントローラを例にして説明する。図6のプログラムでは、G00でX100.0の位置に速度1000で位置決め早送りを行い(ブロック番号1)、M20で周辺機器を動作させ(ブロック番号2)、G01でX軸方向に100.0だけ速度2000で直線補間を行う(ブロック番号3)。M30はプログラムエンドを示す(ブロック番号4)。
【0034】
まず、実施形態1と同様に、あらかじめ、時間測定のための計測信号をオンにしてプログラムをそのまま実行し、プログラムに含まれる各移動指令ブロックの実行時間Tbr_i(i:ブロック番号)と、プログラム全体の実行時間Tprを計測しておく。実測ブロック実行時間Tbr_iと実測プログラム実行時間Tprの関係が図7に示される。
【0035】
また、当該ブロックのパルス出力が完了後インポジション状態になるまでのインポジション予想時間Tinp、および各補助機能(Mxx)の予想実行時間Taux_xxを設定するパラメータを設け、あらかじめ設定しておく。
【0036】
さらに、指定プログラム実行時間Tpsを設定するパラメータを設け、あらかじめ設定しておく。そして、プログラムに含まれる補助機能ブロックの実行時間の合計Tauxを数4式により求める。
【0037】
【数4】
【0038】
移動指令を含むブロックのみを、実行ペース変更の対象とするため、移動指令を含むブロックの実行時間の合計を求める。
●プログラムをそのまま実行した場合 :Tpr − Taux
●指定した実行時間でプログラムを実行する場合 :Tps − Taux
これらの時間の比から、指定プログラム実行時間Tpsでプログラムを実行する際の各移動指令ブロックの実行時間Tbs_iを数5式により算出する。
【0039】
【数5】
【0040】
実測した実測プログラム実行時間Tpr、実測した各ブロックの実行時間Tbr_iとパラメータで指定した指定プログラム実行時間Tps、各補助機能の予想実行時間Taux_xx、および数5式で算出した各ブロックの実行時間Tbs_iの関係が図8に示される。
【0041】
以降は、実施形態1と同様に、各ブロックの移動速度Fs_iを求めてから、各ブロックの指令速度を算出した移動速度Fs_iに入れ換えてプログラムを実行することで、プログラム全体の実行時間を所望の指定プログラム実行時間Tpsにできる。
【0042】
図11は本発明の実施形態3に係る処理を説明するフローチャートである。以下、各ステップに従って説明する。
●[ステップSC01]プログラム実行時間が保存されているか否か判断し、保存されている場合(YES)にはステップSC04へ移行し、保存されていない場合(NO)にはステップSC02へ移行する。
●[ステップSC02]プログラムを実行して、各ブロックの実行時間Tbr_i、実測プログラム実行時間Tprを計測する。
●[ステップSC03]計測結果をデータ領域に保存し、ステップSC04へ移行する。
●[ステップSC04]インポジション状態になるまでのインポジション予想時間Tinpを読み込む。
●[ステップSC05]各補助機能(Mxx)の予想実行時間Taux_xxを読み込む。
●[ステップSC06]所望するプログラム全体の実行時間である指定プログラム実行時間Tpsを読み込む。
●[ステップSC07]プログラムに含まれる補助機能ブロックの実行時間の合計Tauxを算出する。
●[ステップSC08]移動指令のブロックの実行時間の合計を算出する。プログラムをそのまま実行した場合:Tpr−Taux、指定した実行時間でプログラムを実行する場合:Tps−Taux
●[ステップSC09]移動指令の各ブロックの実行時間Tbs_iを数5式により算出する。
●[ステップSC10]各ブロックの移動速度Fs_iを数2式により算出する。
●[ステップSC11]各ブロックの指令速度をステップSC10で算出した移動速度Fs_iに入れ換え、処理を終了する。
【0043】
<実施形態4>(請求項4に対応)
実施形態3の方法では、各補助機能(Mxx)に対してパラメータを設定する必要があるため、外部機器の数が増えるほど設定に手間がかかるようになる。
そこで、補助機能の実行時間をパラメータで設定するのではなく、実測する方法を追加する。まず、実施形態3と同様に、あらかじめ、時間測定のための計測信号をオンにしてプログラムをそのまま実行し、プログラムに含まれる各ブロックの実行時間Tbr_i(i:ブロック番号)と、実測プログラム実行時間Tprを計測しておく。その際、補助機能が指令されたブロックの実行時間Taux_iも計測する。
【0044】
そして、実測した各ブロックの補助機能の実行時間Taux_iを合計して、プログラムに含まれる補助機能ブロックの実行時間の合計Tauxを求める。実測ブロック実行時間Tbr_i、実測プログラム実行時間Tpr同様、補助機能ブロックの実行時間の合計Tauxも内部のデータ領域に保存しておけば、プログラムを変更しない限り、計測し直す必要はない。以降は、実施形態3と同様の操作を行うことで、プログラム全体の実行時間が所望の時間Tpsになる。
【0045】
図12は本発明の実施形態4に係る処理を説明するフローチャートである。以下、各ステップに従って説明する。なお、インポジション予想時間Tinp、指定プログラム実行時間Tpsは予め設定してメモリに格納されている。
●[ステップSD01]プログラム実行時間が保存されているか否か判断し、保存されている場合(YES)にはステップSD04へ移行し、保存されていない場合(NO)にはステップSD02へ移行する。
●[ステップSD02]プログラムを実行して、各ブロックの実行時間である実測ブロック実行時間Tbr_i、補助機能が指令されたブロックの実行時間である補助機能の実行時間Taux_i、プログラム全体の実行時間である実測プログラム実行時間Tprを計測する。
●[ステップSD03]計測結果をデータ領域に保存し、ステップSD04へ移行する。
●[ステップSD04]インポジション状態になるまでのインポジション予想時間Tinpを読み込む。
●[ステップSD05]所望するプログラム全体の実行時間である指定プログラム実行時間Tpsを読み込む。
●[ステップSD06]プログラムに含まれる補助機能ブロックの実行時間の合計Tauxを算出する。
●[ステップSD07]移動指令のブロックの実行時間の合計を算出する。プログラムをそのまま実行した場合:Tpr−Taux、指定した実行時間でプログラムを実行する場合:Tps−Taux
●[ステップSD08]各ブロックの実行時間Tbs_iを数5式により算出する。
●[ステップSD09]各ブロックの移動速度Fs_iを数2式により算出する。
●[ステップSD10]各ブロックの指令速度をステップSD09で算出した移動速度Fs_iに入れ換え、処理を終了する。
【0046】
<実施形態5>(請求項5に対応)
実施形態1の方法では、プログラムの実行時間を実測する必要があり、手間がかかる。そこで、プログラムの実行時間を実測するのではなく、シミュレーションによりプログラムを解析して求める方法を用いる。なお実施形態5では、実施形態1の各ブロックの実行時間Tbr_i、実測プログラム実行時間Tprを本実施形態の方法により求めた値に置き換えるものとする。
【0047】
まず、プログラムに含まれる各ブロックにおいて、移動距離L_i、指令速度F_i、加減速時定数Tcon_i、およびパラメータで設定したインポジション予想時間Tinpから、各ブロックの実行時間Tbr_i(i:ブロック番号)を数6式により算出する。なお、数6式は時間一定型加減速の場合である。
【0048】
【数6】
【0049】
そして、各ブロックの実行時間Tbr_iを合計して、実測プログラム実行時間Tprを求める。以降は、実施形態1と同様の操作を行うことで、プログラム全体の実行時間が所望の時間である指定プログラム実行時間Tpsになる。
【0050】
図13は本発明の実施形態5に係る処理を説明するフローチャートである。以下、各ステップに従って説明する。インポジション予想時間Tinp、指定プログラム実行時間Tpsは予め設定されている。
●[ステップSE01]インポジション予想時間Tinpを読み込む。
●[ステップSE02]プログラムを解析し、プログラムに含まれる各ブロックにおいて、移動距離L_i、指令速度F_i、加減速時定数Tcon_i、パラメータで設定したインポジション予想時間Tinpから、実測ブロック実行時間Tbr_iを算出し、ステップSE03へ移行する。
●[ステップSE03]指定プログラム実行時間Tpsを読み込む。
●[ステップSE04]各ブロックの実行時間Tbs_iを数1式により算出する。
●[ステップSE05]各ブロックの移動速度Fs_iを数2式により算出する。
●[ステップSE06]各ブロックの指令速度をステップSE05で算出した移動速度Fs_iに入れ換え、処理を終了する。
【0051】
<実施形態6>(請求項6に対応)
システム全体の実行ペースを同じ比率で変更する時、システム内の各機器に各々の実行時間を指定するのではなく、実行ペースの割合を指定したい場合がある。そのため、以下の技術を追加する。
【0052】
まず、実施形態1と同様に、あらかじめ、時間測定のための計測信号をオンにしてプログラムをそのまま実行し、プログラムに含まれる各ブロックの実測ブロック実行時間Tbr_i(i:ブロック番号)と、実測プログラム実行時間Tprを計測しておく。その後、プログラムの実行ペースの割合rを信号で指定して、数7式によりTps’を算出する。
【0053】
【数7】
【0054】
以降は、実施形態1のTpsをTps’に置き換えて実施形態1と同様の操作を行うことで、プログラム全体の実行ペースを所望の割合rにすることができる。つまり、数1式を数8式に、数2式を数9式に置き換える。
【0055】
【数8】
【0056】
【数9】
【0057】
図14は本発明の実施形態6に係る処理を説明するフローチャートである。以下、各ステップに従って説明する。プログラム実行ペース割合r、インポジション予想時間Tinpは予め設定されている。
●[ステップSF01]プログラム実行時間が保存されているか否か判断し、保存されている場合(YES)にはステップSF04へ移行し、保存されていない場合(NO)にはステップSF02へ移行する。
●[ステップSF02]プログラムを実行して、各ブロックの実行時間Tbr_iと実測プログラム実行時間Tprを計測する。
●[ステップSF03]計測結果をデータ領域に保存し、ステップSF04へ移行する。
●[ステップSF04]インポジション予想時間Tinpを読み込む。
●[ステップSF05]プログラム実行ペース割合rを読み込む。
●[ステップSF06]プログラム実行時間Tps’を数7式により算出する。
●[ステップSF07]各ブロックの実行時間Tbs_i’を数8式により算出する。 ●[ステップSF08]各ブロックの移動速度Fs_i’を数9式により算出する。
●[ステップSF09]各ブロックの移動速度をステップSF0で算出した移動速度Fs_i’に入れ換え、処理を終了する。
【0058】
<実施形態7>(請求項7に対応)
複数のプログラムを同時に実行し、同時に実行した全プログラムが同時に終了すればよい場合がある。この様な場合、あらかじめ、同時に実行する複数のプログラムの実行時間を実測しておく。実施形態1において、所望するプログラム全体の実行時間Tpsを、この同時実行する複数のプログラムの中で指定されたプログラムの実行時間とすれば、指定されたプログラムと同じ時間で同時実行するその他のプログラム実行できる。
これを使って、最も実行時間の長いプログラムに、その他の各プログラムの実行時間を合わせれば、サイクルタイムを延ばすことなく消費電力量を最小に抑えることができる。
【0059】
<実施形態8>(請求項8に対応)
上述した本発明の実施形態は、同じ条件でプログラムを実行すると常に同じ実行時間になることを前提としていた。しかし、実際には、ワークの個体差や機械の経年変化等によって位置決めに要する時間が変化する場合がある。この場合、プログラムの実行時間が長いほど、指定した実行時間(指定プログラム実行時間Tps)と実際にかかる時間(実測プログラム実行時間Tpr)とがずれていってしまう。
【0060】
この問題を解決するため、以下の方法を用いる。
まず、実施形態1を実行して、あらかじめ各ブロックの算出ブロック実行時間Tbs_iと算出移動速度Fs_i(i:ブロック番号)を導出しておく。そして、第1ブロックの指令速度を導出した算出移動速度Fs_1に入れ換えてプログラムを実行する。各ブロックでは、ブロックの開始から終了までに実際にかかった時間Tba_iを計測する。例えば、第iブロック終了時、ブロックの実行時間Tbs_iと実際にかかった時間Tba_iの差を求め、第i+1ブロックの実行時間Tbs_i+1から引く(数10式)。
【0061】
【数10】
【0062】
数10式により得られるTbs_i+1’をブロックの実行時間として、第2ブロックの移動速度Fs_i+1’を数11式により求める。
【0063】
【数11】
【0064】
上記の処理は、あらかじめ算出した第1ブロックの実行時間と実際にかかった時間との差分を、第2ブロックの速度を変えることで補正することを意味する。
以降も同様に、各ブロックの実行時間のずれを次ブロックの実行時間から引いていくことで、実行時間のずれが蓄積しないようになる。
【0065】
図15は本発明の実施形態8に係る処理を説明するフローチャートである。以下、各ステップに従って説明する。
●[ステップSG01]実行中のブロックの実行時間Tba_iを計測する。
●[ステップSG02]i番目のブロック終了時、ブロックの実行時間Tbs_iと実行時間Tba_iの差を求め、i+1番目の実行時間Tbs_i+1から引いて、Tbs_i+1’を数10式により算出する。
●[ステップSG03]ステップSG02で算出したTbs_i+1’をブロックの実行時間として、i+1番目の移動速度Fs_i+1’を数11式により算出する。
●[ステップSG04]i+1番目のブロックの速度をFs_i+1’に入れ換えて、処理を終了する。
【0066】
<実施形態9>(請求項9に対応)
加速度が大きいブロックと小さいブロックが混在しているプログラムの実行時間を延ばす場合、各ブロックの実行時間を一定の比率で延ばすより、加速度が大きいブロックの実行時間を集中的に延ばして加速度を下げる方が、効率的に消費電力量を減らすことができる。そこで、以下の技術を追加する。まず、以下の手順によって、各ブロックの加速度を求める。
<1>プログラム全体の実行時間Tprを実測または計算する。
<2>指定されたプログラム全体の実行時間TpsとTprとの差ΔTを数12式により求める。
【0067】
【数12】
【0068】
<3>プログラム内の各ブロックの加速度A_i(i:ブロック番号)のうち、最も大きな加速度A1と2番目に大きな加速度A2を求める。
<4>加速度がA1である全てのブロックにおいて、各ブロックの指令速度F_iを用いて合計の加減速時間Tcon_sumを数13式により計算する。ただし、数13式のjは、加速度がA1のブロックの番号を表す。
【0069】
【数13】
【0070】
<5><4>のブロックの合計加減速時間Tcon_sumに対して、ΔTだけ引き延ばした時の、加速度Aを数14式により求める。
【0071】
【数14】
【0072】
<6>A≧A2なら、<4>のブロックの加速度をAに更新して完了。A<A2なら、<4>のブロックの加速度をA2に更新して、合計の加減速時間Tcon_sum’を数15式により計算し直し、<7>に進む。
【0073】
【数15】
【0074】
<7><4>、<6>の結果を利用して数16式によりΔTを計算し直し(ΔT’)、ΔTの値をΔT’に更新する。そして、2番目に大きな加速度A2よりさらに加速度を下げるため、<3>に戻る。
【0075】
【数16】
【0076】
上記の処理を行った後に、各ブロックの加速度を求めた加速度に入れ換えてプログラムを実行することで、プログラム全体の実行時間が所望の時間Tpsになり、さらに、プログラム内で加速度の大きいところを集中的に下げることができる。
【0077】
図16は本発明の実施形態9に係る処理を説明するフローチャートである。以下、各ステップに従って説明する。
●[ステップSH01]プログラム実行時間が保存されているか否か判断し、保存されている場合(YES)ステップSH04へ移行し、保存されていない場合(NO)ステップSH02へ移行する。
●[ステップSH02]プログラムを実行して、実測プログラム実行時間Tprを計測する。
●[ステップSH03]計測結果をデータ領域に保存する。
●[ステップSH04]指定されたプログラム全体の実行時間Tpsを読み込む。
●[ステップSH05]指定されたプログラム全体の実行時間Tpsと実行時間Tprの差ΔTを数12式により算出する。
●[ステップSH06]各ブロックの指令速度F_jを用いて、加速度がA1であるブロックの合計加減速時間Tcon_sumを数13式により計算する(A1は最も大きな加速度)。
●[ステップSH07]ステップSH06の合計加減速時間Tcon_sumに対して、ステップSH05で算出したΔTだけ引き延ばした時の加速度Aを数14式により算出する。
●[ステップSH08]ステップSH07で算出した加速度Aが加速度A2以上か否か判断し、以上の場合(YES)ステップSH09へ移行し、未満の場合(NO)ステップSH10へ移行する。
●[ステップSH09]加速度A1のブロックの加速度をAに更新し、処理を終了する。●[ステップSH10]A1の加速度のブロックをA2の加速度のブロックとする。
●[ステップSH11]加速度をA2としたときの合計の加減速時間Tcon_sum’を数15式により計算する。
●[ステップSH12]数16式により、ΔT’を算出する。
●[ステップSH13]ΔTの値をΔT’に更新してステップSH06に戻る。
【0078】
図17はモーションコントローラの要部を示す機能ブロック図である。
【0079】
数値制御装置10のプロセッサ(CPU)11は、数値制御装置10を全体的に制御するプロセッサである。プロセッサ11は、ROM12に格納されたシステムプログラムをバス21を介して読み出し、このシステムプログラムに従って数値制御装置10を全体的に制御する。RAM13には一時的な計算データや表示データ及びLCD/MDIユニット70を介してオペレータが入力した各種データ等が格納される。
SRAM14は図示しないバッテリでバックアップされ、数値制御装置10の電源がオフされても記憶状態が保持される不揮発性メモリとして構成され、本発明に係る計時プログラムを含むプログラム、本発明を実行するために必要なデータ、インタフェース15を介して読み込まれた後述する加工プログラム、LCD/MDIユニット70を介して入力された加工プログラム等が記憶されるようになっている。また、ROM12には、加工プログラムの作成及び編集のために必要とされる編集モードの処理や自動運転のための処理を実施するための各種のシステムプログラムがあらかじめ書き込まれている。
【0080】
インタフェース15は数値制御装置10に接続可能な外部機器のためのインタフェースであり、外部記憶装置などの外部機器72が接続される。外部記憶装置からは加工プログラム、熱変位測定プログラムなどが読み込まれる。PMC(プログラマブル・マシン・コントローラ)16は、数値制御装置10に内蔵されたシーケンスプログラムで工作機械側の補助装置等を制御する。すなわち、加工プログラムで指令されたM機能、S機能及びT機能に従って、これらシーケンスプログラムで補助装置側で必要な信号を変換し、I/Oユニット17から補助装置側に出力する。この出力信号により各種アクチュエータ等の補助装置が作動する。また、工作機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な処理をしてプロセッサ11に渡す。
【0081】
工作機械の各軸の現在位置、アラーム、パラメータ、画像データ等の画像信号はLCD/MDIユニット70に送られ、そのディスプレイに表示される。LCD/MDIユニット70はディスプレイやキーボード等を備えた手動データ入力装置であり、インタフェース18はLCD/MDIユニット70のキーボードからデータを受けてプロセッサ11に渡す。
インタフェース19は手動パルス発生器71に接続され、手動パルス発生器71は工作機械の操作盤に実装され、手動操作に基づく分配パルスによる各軸制御で工作機械の可動部を精密に位置決めするために使用される。
【0082】
工作機械のテーブルTを移動させるX,Y軸の軸制御回路及びZ軸の軸制御回路30〜32はプロセッサ11からの各軸の移動指令を受けて、各軸の指令をサーボアンプ40〜42に出力する。サーボアンプ40〜42はこの指令を受けて工作機械の各軸のサーボモータ50〜52を駆動する。各軸のサーボモータ50〜52には位置検出用のパルスコーダが内蔵されており、このパルスコーダからの位置信号がパルス列としてフィードバックされる。
【符号の説明】
【0083】
Tpr 実測プログラム実行時間
Tbr_i 実測ブロック実行時間
Tps 指定プログラム実行時間
Tbs_i Tpsでプログラムを実行する際のブロック実行時間
Tinp インポジション予想時間
Tinp_i 各ブロックの実測インポジション時間
Fs_i 移動速度
Taux_xx 補助機能予想実行時間
Taux_i 各ブロックの実測補助機能実行時間
図1
図2
図3
図4
図6
図7
図9
図10
図11
図12
図13
図14
図15
図16
図17
図5
図8