(58)【調査した分野】(Int.Cl.,DB名)
前記ブロックのパルス出力が完了した後からインポジション状態になるまでの時間を設定する手段の代わりに、前記ブロックのパルス出力が完了した直後からインポジション状態になるまでの時間を実測する手段を備え、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1記載のモーションコントローラ。
補助機能の実行に要する時間を設定する手段を備え、該設定した補助機能の実行時間も加味して、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1または2のいずれかに記載のモーションコントローラ。
前記補助機能の実行に要する時間を設定する手段の代わりに、前記補助機能の実行時間を実測する手段を備え、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、該算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項3記載のモーションコントローラ。
前記プログラムの各ブロック実行時間を実測する手段の代わりに、前記プログラムの各ブロック実行時間を解析する手段を備え、該解析したプログラムの各ブロック実行時間と指定したプログラム実行時間から、前記プログラムが指定した実行時間になるような各ブロックの速度または加減速時定数を算出して、算出した速度または加減速時定数でプログラムを実行することを特徴とする請求項1〜4のいずれか1つに記載のモーションコントローラ。
前記プログラム全体の実行時間を指定する手段の代わりに、前記プログラム全体の実行ペースの割合を指定する手段を備え、前記プログラム全体の実行ペースが指定した割合になるような各ブロックの速度または加減速時定数を算出して、該算出した速度・加減速時定数でプログラムを実行することを特徴とする請求項1〜5のいずれか1つに記載のモーションコントローラ。
前記プログラムの実行中に各ブロックの実行時間を実測する手段と、該実測したブロック実行時間から、次に実行する予定のブロックの速度または加減速時定数を算出する手段を備え、該算出した速度または加減速時定数で対象となるブロックを実行することで、プログラムが指定した実行時間、または指定した割合の実行ペースになるようにプログラム全体の実行ペースを変更することを特徴とする請求項1〜7のいずれか1つに記載のモーションコントローラ。
前記プログラムに含まれる各ブロックの加速度を解析する手段と、各ブロックの加速度を比較して、加速度が大きいブロックに対して加速度が小さくなるように速度または加減速時定数を算出する手段を備え、実行するプログラム全体の中で、加速度の大きいところを集中的に下げることで、プログラムが指定した実行時間、または指定した割合の実行ペースになるようにプログラム全体の実行ペースを変更することを特徴とする請求項1〜8のいずれか1つに記載のモーションコントローラ。
【発明を実施するための形態】
【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はプログラムのブロック番号)。
【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はあらかじめパラメータで指定されるデータである。
【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式により求める。
【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式により求める。
【0038】
移動指令を含むブロックのみを、実行ペース変更の対象とするため、移動指令を含むブロックの実行時間の合計を求める。
●プログラムをそのまま実行した場合 :Tpr − Taux
●指定した実行時間でプログラムを実行する場合 :Tps − Taux
これらの時間の比から、指定プログラム実行時間Tpsでプログラムを実行する際の各移動指令ブロックの実行時間Tbs_iを数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式は時間一定型加減速の場合である。
【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’を算出する。
【0054】
以降は、実施形態1のTpsをTps’に置き換えて実施形態1と同様の操作を行うことで、プログラム全体の実行ペースを所望の割合rにすることができる。つまり、数1式を数8式に、数2式を数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
8で算出した移動速度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式)。
【0062】
数10式により得られるTbs_i+1’をブロックの実行時間として、第2ブロックの移動速度Fs_i+1’を数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式により求める。
【0068】
<3>プログラム内の各ブロックの加速度A_i(i:ブロック番号)のうち、最も大きな加速度A1と2番目に大きな加速度A2を求める。
<4>加速度がA1である全てのブロックにおいて、各ブロックの指令速度F_iを用いて合計の加減速時間Tcon_sumを数13式により計算する。ただし、数13式のjは、加速度がA1のブロックの番号を表す。
【0070】
<5><4>のブロックの合計加減速時間Tcon_sumに対して、ΔTだけ引き延ばした時の、加速度Aを数14式により求める。
【0072】
<6>A≧A2なら、<4>のブロックの加速度をAに更新して完了。A<A2なら、<4>のブロックの加速度をA2に更新して、合計の加減速時間Tcon_sum’を数15式により計算し直し、<7>に進む。
【0074】
<7><4>、<6>の結果を利用して数16式によりΔTを計算し直し(ΔT’)、ΔTの値をΔT’に更新する。そして、2番目に大きな加速度A2よりさらに加速度を下げるため、<3>に戻る。
【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には位置検出用のパルスコーダが内蔵されており、このパルスコーダからの位置信号がパルス列としてフィードバックされる。