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)