Curve
用於建立應用於CVMove命令之自由曲線CP動作的動作軌跡檔案。動作軌跡會是一條能通過所有被賦予之點的曲線。
格式
Curve 檔名, 動作曲線的開閉, 模式指定, 坐標軸數[, 內插方式], 連續點資料指定
參數
檔案名稱
以字串指定儲存點數據的檔案名稱。副檔名固定為「.CVT」。若省略副檔名,則自動新增.CVT的副檔名。執行Curve命令,會自動建立檔案。不可指定路徑。此外,不受ChDisk等的影響。詳細內容請參閱ChDisk。
動作曲線的開閉
結束曲線動作時,指定動作曲線的開閉。此參數用於指定以下任一字元。
- C -生成的曲線為封閉曲線
- O -生成的曲線為開放曲線
若指定開放曲線,則依Curve命令讓手臂停在連續點數據的最後點位置。若指定封閉曲線,則依Curve命令,通過最終點後仍繼續運作,讓手臂回到連續點資料的起點並停止動作。
若指定封閉曲線,則起始點與最終點的正切方向將會一致。
下圖為輸入P1~P4時的封閉曲線與開放曲線之比較。若為封閉區間時,則動作至P1為止。此外,將會順暢連上動作的開始與完成。
模式指定
指定是否要使用第0~3個位元補償姿勢 (是否要將工具的姿勢朝曲線的正切方向自動進行內插)。可用第4~7個位元指定ECP編號。
| 模式指定 | 姿態補償 | ECP編號 | |
|---|---|---|---|
| 十六進位 | 十進位 | ||
| &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 | |
若指定姿態補償,機械臂僅會使用連續點資料起點的姿勢。忽略中途點的UVW座標。若啟用姿勢補償,從自由曲線的正切方向來看時,會維持姿勢,使工具姿勢保持恆定。諸如刀具那樣,屬於要持續進行正切方向控制的工具時進行指定。
沿著工件外圍移動的點資料,若同時選擇封閉曲線和姿勢補償時,最終點的姿勢會與初始姿勢相同,但J6Flag或滾珠螺桿的旋轉數會不同。
下圖為水平多關節型機器人的範例。封閉曲線且無姿勢補償的情況下,指定P1~P8時,將通過P1~P8為止。另一方面,同時選擇封閉曲線和姿勢補償時,將會依曲線的正切方向補償工具姿勢。如此一來,工具將通過P1,P2’~P8’。忽略P2~P8指定的姿勢。由於為封閉曲線,工具會動作至自由曲線的開始位置,CVMove動作前後,滾珠螺桿的狀態會是朝U軸旋轉1次。
左:無姿勢補償/右:有姿勢補償
使用ECP時,請在第4~7個位元指定ECP編號。
欲以機器人握持工件,並使用固定於機器人周邊的工具,沿著工件的稜線進行軌跡控制時,可啟用ECP。外部控制點(ECP)座標系(選項)的相關基本說明請參閱以下內容。
「Epson RC+ 使用者指南 - SPEL+語言 - 座標系 - 外部控制點(ECP)座標系(選項)」
若要生成顧及到包含在點資料中的附加軸位置的自由曲線,請將第8位元指定為「1」。例如,若不使用姿態補償及ECP,生成顧及到附加軸位置的自由曲線,請指定「&H100」。
以附加軸生成自由曲線時,無論機器人坐標系如何,S關節、T關節都將分別獨立地連接連續點資料。
附加軸由PG軸構成時,不會以連續點生成自由曲線,而建立在最終點動作的資料。
模式指定的位元和功能支援如下所示。
| 位元 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|
| 資料 | 附加軸 | ECP編號 | 姿態補償 | ||||||
座標軸數
以2、3、4、6的整數指定在曲線動作中控制的坐標軸數。
- 在未包含2 - 姿態的XY平面上生成自由曲線。(垂直6軸型(包含N系列)以外)
- 在未包含3 - 姿態的XYZ空間生成自由曲線。(垂直6軸型(包含N系列)以外)
- 在包含4 - 姿態的XYZ空間生成自由曲線。(垂直6軸型(包含N系列)以外)
- 在包含6 - 姿態的XYZ空間生成自由曲線。(僅限於垂直6軸型(包含N系列))
未被選擇為控制對象的軸將維持上一次的編碼器脈衝位置,在Curve動作時不進行動作。舉例來說,採用水平多關節型機器人,且指定座標軸數為2建立Curve檔案時,無論指定之點的Z座標為何,CVMove動作期間,Z軸皆不會動作。
內插方式
用於指定曲線的內插方式。若指定IM_CMPTBL時,會是與 Ver8.1.1 以前版本的韌體具有相容性之內插方式。若指定IM_NORMAL時,會是新的內插方式。可省略,省略時,將以IM_CMPTBL執行。
新的內插方式具有以下優點。
- 縮短Curve檔案建立時間
- 藉由動作速度的調整功能,即使是姿勢變化較大的動作,也不易發生錯誤。
- 更容易建立直線區間
- 姿勢內插更順暢
一般情況下,請指定為IM_NORMAL。關於內插方式的差異,請參閱解說。
連續點數據指定 { 點數據|點編號(開始:結束) } [,輸出命令] ...
用逗號(,)分隔指定此參數的每個點數據。毫無遺漏地按升序或降序排列點資料時,可用冒號連接2個點編號進行指定(例:P (1:5))。
必須以相同座標系定義所有點資料。若包含以不同本地坐標系定義的點時,則會出現錯誤。此外,若為垂直6軸型機器人時,點資料的手臂姿勢、臂肘姿勢、腕部姿勢必須全部一致。若為水平多關節型機器人時,手臂姿勢必須全部一致。
若要與動作同步,在中途開啟或關閉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命令用於使用三次樣條函數,獨立計算各指定點的X、Y、Z、U、V、W坐標值,並據此生成軌跡。因此,點之間的間隔或姿態變化較大時,難以預測被生成的軌跡。
欲重視軌跡的區間或姿勢突然變化的區間,請細密地指定點。
不需在Curve命令前指定動作時的速度和加減速度。若是在執行CVMove之前,則可用SpeedS或AccelS等命令進行變更。
以本地坐標系指定點資料時 ,將以本地坐標系為基準,建立Curve檔案。執行Curve命令後,若已藉由Local命令變更本地坐標系時,CVMove命令也會配合變更後的本地坐標系位移。
模式指定若指定為ECP時,將以ECP座標為基準,建立Curve檔案。執行Curve命令後,若已藉由ECPSet命令變更ECP坐標時,CVMove命令也會配合變更後的ECP坐標位移。
Ver8.1.1 以後版本的韌體新增曲線的內插方式。一般情況下,內插方式請指定為IM_NORMAL。
內插方式若為IM_NORMAL,相鄰的4點排列於直線上時,正中央的區間一定會是直線。此外,變更點資料當中的某個點時,該變更之點的前後2點之間的路徑將會改變。
下圖是Curve檔案指定為P1~P8時的自由曲線。由於P3、P4、P5、P6為直線上配置,因此P4-P5之間必定是直線。
若變更P5時,P3-P4、P4-P5、P5-P6、P6-P7區間的路徑將會改變。
此外,Ver8.1.1 以後版本的韌體,會啟用動作速度的調整功能。因此,在姿勢突然變化的區間,會降低TCP速度進行調整,盡可能避免發生加速度錯誤。僅內插方式指定為IM_NORMAL時,方可啟用此調整功能。
注意
開放曲線點組的點數範圍
為開放曲線時,請指定3~1000點。
封閉曲線的點組點數範圍
使用RC800系列的控制器時,封閉曲線請指定為3~1000點。
點數多時,處理時間會延長
Ver8.1.1 以前版本的韌體,抑或 Ver8.1.1 以後版本的韌體,內插方式指定為IM_CMPTBL時,若以最大點數執行Curve命令時,開放曲線會需要數秒,封閉曲線則會需要數十秒左右的時間。
若問題在於處理時間時,請將內插方式指定為IM_NORMAL。
檔案相容性
使用 Ver.7.5.1 以後版本的韌體建立之檔案,不可用於更早版本的韌體。此外,使用Ver.7.5.1 以前版本的韌體建立之檔案,可用於Ver.7.5.1以後版本的韌體。
使用 Ver.8.1.1 以後版本的韌體建立之檔案,不可用於更早版本的韌體。此外,使用Ver.8.1.1 以前版本的韌體建立之檔案,可用於Ver.8.1.1以後版本的韌體。
常見錯誤
欲將手臂移出活動範圍時
Curve命令無法用於檢查已設定曲線的動作範圍。這意味著,在機器人手臂動作時,使用者設定的曲線軌跡可能超出活動範圍。此時,動作命令執行期間會發生「超出動作範圍」的錯誤。
點的間隔不平均時
點間隔不平均時,生成曲線的加速度可能會異常升高。屆時,可能會發生異常加速度錯誤。
CVMove執行期間發生異常加速度錯誤時,請將內插方式變更為IM_NORMAL。
參照
AccelS函數, Arc, Arc3, CVMove, ECP, Move, SpeedS
Curve範例1
以下程式為使用水平多關節型機器人時的範例。建立一個檔名為mycurve.CVT的Curve檔案。
追蹤機器人通過P1~P7的曲線。動作執行期間,於通過P2時啟用輸出埠。
設定自由曲線
> curve "mycurve", O, 0, 4, IM_NORMAL, P1, P2, On 2, P(3:7)
以Jump命令使機械臂朝P1動作
> jump P1
用已定義的自由曲線「mycurve」移動手臂
> cvmove "mycurve"
Curve使用範例2 建立直線區間
使用自由曲線動作時,有時會希望直線區間和曲線區間無縫連接。將4點配置於直線上,可使中間2點之間完全呈現直線,但邊端區間會從直線偏移。此時,只要縮短邊端區間,即可減少偏移。
以下程式可使用虛擬控制器「GX8-C Sample」測試。
(1) 邊角部分的區間較長時 由於P3、P4、P5、P6排列於直線上,故P4-P5的區間會呈現直線。
Function Test2_1
P1 = XY(100, 300, -50, 0)
P2 = XY(100, 360, -50, 0)
P3 = XY(100, 400, -50, 0)
P4 = XY(60, 400, -50, 0)
P5 = XY(-60, 400, -50, 0)
P6 = XY(-100, 400, -50, 0)
P7 = XY(-100, 360, -50, 0)
P8 = XY(-100, 300, -50, 0)
Motor On
Power High
Curve "Test2_1", O, 0, 4, IM_NORMAL, P(1:8)
Go P1
CVMove "Test2_1"
Fend
(2) 邊角部分的區間較短時 (1)若使用P12、P14、P15、P17取代P2、P4、P5、P7,可取得較長的直線區間P14-P15。
Function Test2_2
P1 = XY(100, 300, -50, 0)
P12 = XY(100, 395, -50, 0)
P3 = XY(100, 400, -50, 0)
P14 = XY(95, 400, -50, 0)
P15 = XY(-95, 400, -50, 0)
P6 = XY(-100, 400, -50, 0)
P17 = XY(-100, 395, -50, 0)
P8 = XY(-100, 300, -50, 0)
Motor On
Power High
Curve "Test2_2", O, 0, 4, IM_NORMAL, P1, P12, P3, P14, P15, P6, P17, P8
Go P1
CVMove "Test2_2"
Fend
Curve使用範例3 有無姿勢補償
姿勢補償功能的範例。Curve檔案「Test3_1」為無姿勢補償,且未指定U座標,故工具會以固定姿勢動作。Curve檔案「Test3_2」有啟用姿勢補償,故工具會保持固定角度,朝曲線的正切方向動作。忽略中途點的姿勢。
以下程式可使用虛擬控制器「GX8-C Sample」測試。
(1) 邊角部分的區間較長時 由於P3、P4、P5、P6排列於直線上,故P4-P5的區間會呈現直線。
Function Test3
Integer i
' 在圓周上註冊點
Local 1, XY(0, 350, -50, 0)
For i = 0 To 8
P(i) = XY(100 * Cos(2 * PI() * i / 8), 100 * Sin(2 * PI() * i / 8), 0, 0) /1
Next
Motor On
Power High
Curve "Test3_1", C, 0, 4, IM_NORMAL, P(0:8) '無姿勢補償
Curve "Test3_2", C, 2, 4, IM_NORMAL, P(0:8) '有姿勢補償
Go P0
CVMove "Test3_1"
Go P0
CVMove "Test3_2"
Fend
左:無姿勢補償(Test3_1)/右:有姿勢補償(Test3_2)