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を通ることで、始点と終点は滑らかにつながる。