Curve

自由曲線によるCP制御のためのデータとポイントを作成します。多くのポイントデータを定義し、パスを正確にします。

書式
Curve ファイル名, 動作曲線の開閉, モード指定, 座標軸数, 連続ポイントデータ指定

パラメーター

ファイル名
ポイントデータが保存されるファイル名を文字列で指定します。拡張子は".CVT"固定です。拡張子を省略した場合、.CVTの拡張子が自動的に追加されます。Curve命令が実行されると、ファイルが作成されます。パスを指定することはできません。また、ChDiskなどの影響を受けません。詳細は、ChDiskを参照してください。
動作曲線の開閉
曲線動作の終了時における動作曲線の開閉を指定します。このパラメーターは、下記のいずれかの値を指定します。

  • C -生成する曲線が閉曲線
  • O -生成する曲線が開曲線
開曲線を指定すると、Curve命令は、連続ポイントデータの最後のポイントでアームが停止します。閉曲線を指定すると、Curve命令は、最終ポイントを通過した後も動作を継続し、アームを連続ポイントデータの始点に戻して動作を停止します。
モード指定
姿勢補正するかどうか (アームがU軸の接線方向に自動的に補間するかどうか)を指定します。上位4ビットでECP番号が指定できます。
モード指定 姿勢補正 ECP番号
16進数 10進数
&H00 0 しない 0
&H10 16 1
&H20 32 2
&HA0 160 10
&HB0 176 11
&HC0 192 12
&HD0 208 13
&HE0 224 14
&HF0 240 15
&H02 2 する 0
&H12 18 1
&H22 34 2
&HA2 162 10
&HB2 178 11
&HC2 194 12
&HD2 210 13
&HE2 226 14
&HF2 242 15
姿勢補正を指定する場合は、アームは、連続ポイントデータの始点のU軸座標のみを使います。姿勢補正は、姿勢軸がXY平面で常に曲線に接しているように姿勢を維持します。これは、カッターのように、継続して接線方向への制御が必要なツールのときに指定します。U軸の接線方向に自動円弧補間する閉曲線を指定するときは、U軸は、始点から360度回転します。したがって、CVMove命令を実行する前に、U軸の回転によるエラーを防ぐために、Range命令でU軸の動作範囲指定を行ってください。
ECPを使用する場合は、上位4ビットにECP番号を指定してください。
ポイントデータに含まれる付加軸の位置を考慮した自由曲線を生成する場合、9ビット目を"1"に指定してください。例えば、姿勢補正およびECPを使用せず、付加軸位置を考慮した自由曲線を生成する場合には、"&H100"を指定します。
付加軸で自由曲線を生成する場合は、ロボット座標系とは関係なくS関節、T関節それぞれ独立に連続ポイントデータをつなぎます。
ただし、付加軸がPG軸で構成されている場合は、連続ポイントによる自由曲線は生成されず、最終ポイントに動作するデータが作成されます。
座標軸数
曲線動作中に制御される座標軸数を2, 3, 4, 6の整数で指定します。
  • 2 - 姿勢を含まないXY平面で自由曲線を生成します。 (垂直6軸型 (Nシリーズを含む)以外)
  • 3 - 姿勢を含まないXYZ空間で自由曲線を生成します。 (垂直6軸型 (Nシリーズを含む)以外)
  • 4 - 姿勢を含むXYZ空間で自由曲線を生成します。 (垂直6軸型 (Nシリーズを含む)以外)
  • 6 - 姿勢を含むXYZ空間で自由曲線を生成します。 (垂直6軸型 (Nシリーズを含む)のみ)
制御対象に選択されていない軸は、前回のエンコーダーパルス位置を保持し、Curve動作中は動作しません。
連続ポイントデータ指定 { ポイントデータ| ポイント番号(初め:終わり) }​ [,出力コマンド] ...
このパラメーターそれぞれのポイントデータをカンマ (,)で区切って指定します。ポイントデータに抜けがなく、昇順、または降順に並んでいる場合は、2つのポイント番号をコロンで結合してP(1:5)のように指定できます。
動作に同期して、途中でI/Oの出力ポートをオン、またはオフする場合は、カンマ (,)で区切って出力命令を記述することができます。
通常は、連続ポイントデータは、下記のようにカンマで区切って指定します。
Curve "MyFile", O, 0, 4, P1, P2, P3, P4

または、コロンを使って下記のように指定します

Curve "MyFile", O, 0, 4, P(1:4)

上記の例では、P1、P2、P3、P4を使って曲線を指定しています。出力コマンドは、省略可能で、曲線動作中に出力操作を制御するときに使います。このコマンドは、I/OまたはメモリーI/Oのオンオフを指定します。出力命令は、直前の、連続ポイントデータの特定のポイントを、アームが通過した後に実行されます。1つのCurveステートメントに含むことのできる出力コマンドの数は、最大16個です。下記の例では、アームがP2を通過した後に"On 2"コマンドが実行され、その後アームは、P3からP10までのすべてのポイントを通過します。

Curve "MyFile", C, 0, 4, P1, P2, ON 2, P(3:10)

解説
この命令は、指定されたポイントデータによって、ロボットアームが自由曲線CP動作を行うためのファイルを作成し、そのデータをコントローラーのファイルに保存します。この命令によって作成されたデータは、CVMove命令によるCP動作実行時に使用されます。

カーブファイルは、コントローラー内のコンパクトフラッシュに格納されています。このため、Curveを実行するとコンパクトフラッシュへの書き込みが発生します。あまりにも頻繁なコンパクトフラッシュへの書き込みは、コンパクトフラッシュの寿命に影響します。必要な場合にのみCurveを実行することを推奨します。

Curve命令は指定された各ポイントのX, Y, Z, U, V, W座標値を独立に、3次式スプライン関数を用いて計算し、それにより軌跡を生成します。よって、ポイント間の間隔が大きかったり、姿勢の変化が大きい場合には、生成される軌跡は想定しづらくなります。

動作時の速度・加減速度は、Curve命令前に指定しておく必要はありません。CVMove実行前ならSpeedSやAccelSなどの命令を使って変更できます。

ローカル座標系で設定するポイントは、Curve命令のパラメーターのポイント群の中で使えば、その位置を通過するように曲線を設定できます。指定するポイントデータでローカル属性を持つようにしておくと、Curve命令の後に続くLocalステートメントのローカル座標系上のポイントに変更することができます。

注意


  • できる限り姿勢補正を行ってください

    できるだけ姿勢補正を行うことをお勧めします。とくに、CVMoveを使って同じポイント群を連続ループするような場合は、姿勢補正をしてください。姿勢補正をしないと、特に高速で動作させるような場合、ロボットは正確な位置を保持できないことがあります。

  • 開曲線におけるポイント群のポイント数の範囲

    開曲線では、3~1000ポイントを指定してください。

  • 閉曲線におけるポイント群のポイント数の範囲

    RC700系、RC90系コントローラーの場合、閉曲線では、3~1000ポイントを指定してください。

    T/VTの場合、閉曲線では、3~300ポイントを指定してください。(シミュレーターでT/VTを指定した場合、1000ポイントまで動作しますが、T/VTの実機環境では300ポイントまでです。)

  • ポイント数が多い場合、処理時間が長くなります

    最大ポイント数でCurveコマンドを実行すると、開曲線では数秒程度、閉曲線では数十秒程度の時間がかかります。

    特に、閉曲線は処理時間が長いため、ポイント数が多い場合は開曲線を使うことを奨励します。

    開曲線を使って、閉曲線と近い軌跡を作るための使用例をCurve使用例2に記載します。

    ただし、Curveコマンドで自由曲線ファイルを一度生成し、同じファイルで複数回CVMove動作を行う場合、Curveコマンド実行時の1度のみ上記の時間がかかります。

  • ファイルの互換性

    Ver.7.5.1以降のファームウェアで作成されたファイルは、それ以前バージョンのファームウェアで使用できません。また、Ver.7.5.1以前のファームウェアで作成されたファイルは、Ver.7.5.1以降のファームウェアで使用できます。


起こりやすいエラー

  • 可動範囲外で、アームを動作させようとしたとき

    Curve命令は、設定された曲線の動作範囲のチェックを行うことができません。これは、ロボットアームの動作中にユーザーが設定した曲線の軌跡が、可動範囲外に出るかもしれないことを意味します。このような場合、「動作範囲外」のエラーになります。

  • ポイントの間隔が不均一な場合

    ポイント間隔が不均一な場合、生成される曲線の加速度が異常に高くなることがあります。このような場合、異常加速度エラーが発生することがあります。
    次の設定をOnにするとエラーなく動作することがあります。
    垂直6軸型ロボット (Nシリーズを含む), RSシリーズ:AvoidSingularity SING_VSD
    水平多関節型ロボット (RSシリーズを含まない):VSD

参照
AccelS関数, Arc, CVMove, ECP, Move, SpeedS

Curve使用例1
下記の例では、MYCURVE.CVTという名前の自由曲線ファイルを使って、P1~P7を通過する曲線をトレースし、その間、P2で出力ポートをオンし、P7でアームを減速します。

自由曲線を設定

> curve "mycurve", O, 0, 4, P1, P2, On 2, P(3:7)

アームをP1へ直線で移動

> jump P1

定義した自由曲線"mycurve"でアームを移動

> cvmove "mycurve"

Curve使用例2
以下の例では、(1)開曲線、(2)閉曲線、(3)開曲線で閉曲線に近い動作の例を示します。

教示点は以下のとおりです。

P0 = XY(0, 300, -50, 0) '始点・終点
P1 = XY(300, 200, -50, 0)
P2 = XY(300, 400, -50, 0)
P3 = XY(-300, 400, -50, 0)
P4 = XY(-300, 200, -50, 0)
P10 = XY(10, 299.7, -50, 0)   '始点の直後
P11 = XY(-10, 299.7, -50, 0)  '終点の直前

(1) 開曲線

開曲線の自由曲線を設定

> Curve "mycurve_O", O, 0, 2, P(0:4), P0

アームをP0へ直線で移動

> jump P0

定義した開曲線の自由曲線"mycurve_O"でアームを移動

> CVMove "mycurve_O"

開曲線の為、始点と終点が同じだが滑らかにつながらない。

(2) 閉曲線

閉曲線の自由曲線を設定

> Curve "mycurve_C", O, 0, 2, P(0:4)

アームをP0へ直線で移動

> jump P0

定義した閉曲線の自由曲線"mycurve_C"でアームを移動

> CVMove "mycurve_C"

閉曲線の為、始点と終点は滑らかにつながる。

(3) 開曲線で閉曲線に近い動作

開曲線の自由曲線を設定。始点の直後・終点の直前にポイントを設定。

> Curve "mycurve_O_mod", O, 0, 2, P0, P10, P(1:4), P11, P0

アームをP0へ直線で移動

> jump P0

定義した開曲線の自由曲線"mycurve_O_mod"でアームを移動

> CVMove "mycurve_O_mod"

開曲線だが、P10, P11を通ることで、始点と終点は滑らかにつながる。