ID : 5030
自由曲線補間
自由曲線補間とは経路点を滑らかにつなぐ軌跡を描く動作です。
自由曲線補間は"Move S"コマンドを使用して経路番号を指定し、動作します。
経路データには複数の位置データ(経路点)を登録でき、自由曲線補間では指定した経路データに登録された経路点上を順に滑らかに動作する軌跡を等速で動作します。
経路データはあらかじめ保存しておいたデータを使うこともできますが、PacScript内で経路点データを編集して使うこともできます。

経路点をつなぐ補間方法は3次スプラインです。

経路点に関する注意
コマンド"Move S"の実行時には、現在位置と、指定した経路の全ての経路点を元に動作軌道が計算されます。下記のように、連続する経路点の位置関係によっては、軌道が計算できずエラーとなる場合があります。
- 連続する3つの経路点を、経路点No.の小さい順に点A、B、Cとした場合、「点Aから点Bへのベクトルと、点Bから点Cへのベクトルの成す角が180度」の場合は、軌道が計算できずエラーとなる場合があります。
- 連続する2点の位置が非常に近く、姿勢の変化が大きい場合は軌道が計算できずエラーとなります。
- 連続する経路点の位置、姿勢が非常に近い場合には、後ろの経路点は計算から除外されます。除外された経路点はCurPathPointで通過点取得することはできません。
経路のずれ
動作時に、指定した経路をずれてしまう場合は「経路のずれ防止」を参照してください。
自由曲線補間のプログラムサンプル
プログラム解説
シール塗布のサンプルスクリプトです。
経路データはあらかじめ軌道番号1に保存されていますが、ワークが多少ずれてセットされることを想定しています。引数pGapはワークのずれ量です。経路データ2にずれ量だけシフトしたデータを登録し、自由曲線補間動作します。
自由曲線補間動作中にシール塗布タスク(Seal)を立ち上げます。指定した経路点を通過するとI/OをONし、OFFします。
<ProSpline.pcs>
#Define Home P(300,0,300,180,0,180) 'ホームポジション
#Define sSpeed I[0] '自由曲線補間動作時の速度[mm/s]
Sub Main(ByVal pGap as Position)
' pGapはワークのずれ量
Dim n As Integer
Dim posN As Position
TakeArm
ChangeWork 1
ChangeTool 1
' 経路データ2に経路点作成
' 経路データ1にもととなる経路点が登録されている
' 偏差 pGap を足す
ClrPathPoint 2
For n = 1 To GetPathPointCount(1)
posN = Dev(GetPathPoint(1,n), pGap)
AddPathPoint 2, posN
Next
' 自由曲線補間動作
Run Seal ' 塗布剤を出すプログラム
SpeedMode 0 '最適速度制御OFF
HighPathAccuracy On ' 高軌跡制御機能ON
Move S, 2, Speed = MPS(sSpeed)
HighPathAccuracy Off ' 高軌跡制御機能OFF
SpeedMode 3 '最適速度制御ON
Move L, Dev(CurPos, P(0,0,50)), Speed = 20
Move P, Home
End Sub
<Seal.pcs>
#Define ioSeal IO[128]
#Define StartPathNo 3
#Define StopPathNo 150
Sub Main
ioSeal = Off
Wait CurPathPoint >= StartPathNo
ioSeal = On
Wait CurPathPoint >= StopPathNo
ioSeal = Off
End Sub
ID : 5030