Curve
创建在基于CVMove命令的自由曲线CP动作中要使用的动作轨迹文件。经过给定的所有点的曲线即为动作轨迹。
格式
Curve 文件名, 打开/关闭动作曲线, 模式指定, 坐标轴数 [,插补方式], 连续点数据指定
参数
文件名
以字符串指定保存点数据的文件名。扩展名固定为“CVT”。省略了扩展名时,将自动添加.CVT的扩展名。如果执行Curve命令,将创建文件。不能指定路径。另外,也不受ChDisk等的影响。详情请参阅ChDisk。
打开/关闭动作曲线
在曲线动作结束时,指定打开/关闭动作曲线。此参数指定以下任意字符。
- C -要生成的曲线是闭曲线
- O -要生成的曲线是开曲线
如果指定开曲线,Curve命令将在连续点数据的最后的点上停止机械臂。如果指定为闭曲线,Curve命令即使通过最后的点也继续动作,并使机械臂返回连续点数据的起点后停止动作。
指定闭曲线时,起点和终点的切线方向将变为一致。
下图比较了输入P1~P4时的闭曲线和开曲线。如果是闭区间,则将动作至P1。此外,动作的开始和结束将平滑连接。
模式指定
指定是否使用第0~3位进行姿势修正(是否向曲线的切线方向自动插补工具的姿势)。可以使用第4~7位指定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 | |
指定姿势修正时,机械臂仅使用连续点数据起点的姿势。中途的点的UVW坐标将被忽略。启用姿势修正时,从自由曲线的切线方向观察时,工具的姿势将始终保持不变。在像切刀那样需要继续向切线方向实施控制的工具时进行指定。
对于沿着工件外周的点数据,如果同时选择了闭曲线和姿势修正,则在最终点处工具姿势将与初始姿势相同,但J6Flag或滚珠丝杠的转速有所不同。
下图是水平多关节型机器人情况下的示例。闭曲线且无姿势修正的情况下指定了P1~P8时,将经过P1~P8。另一方面,如果同时选择了闭曲线和姿势修正,则工具姿势将根据曲线的切线方向进行修正。因此,工具将经过P1、P2'~P8'。在P2~P8处指定的姿势将被忽略。由于是闭曲线,工具将动作至自由曲线的起始位置,但在CVMove动作前后,滚珠丝杠相对于U轴为旋转一圈后的状态。
左:无姿势修正 / 右:有姿势修正
如果使用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并创建曲线文件,则在CVMove动作中,Z轴将不会根据指定点的Z坐标进行动作。
插补方式
指定曲线的插补方式。如果指定IM_CMPTBL,则将使用和Ver8.1.1更早版本的固件兼容的插补方式。如果指定IM_NORMAL,则将使用新的插补方式。可以省略,如果省略,则以IM_CMPTBL执行。
新的插补方式具有以下优点。
- 曲线文件创建时间缩短
- 通过动作速度调整功能,即使在姿势变化较大的动作中也不容易发生错误。
- 更容易创建直线区间
- 姿势插补变得平滑
通常请指定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的ON/OFF。输出命令将在机械臂通过之前的连续点数据的特定点后执行。在1个Curve语句中可以包含的输出命令数最多为16个。在下例中,在机械臂通过P2后将执行“On2”命令,此后机械臂将通过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命令后,如果通过Local命令更改了本地坐标系,则CVMove命令也将根据更改后的本地坐标系进行偏移。
如果在模式指定中指定ECP,则将以ECP坐标为基准创建曲线文件。在执行Curve命令后,如果通过ECPSet命令更改了ECP坐标,则CVMove命令也将根据更改后的ECP坐标进行偏移。
在Ver8.1.1及更高版本的固件中,增加了曲线的插补方式。通常请在插补方式中指定IM_NORMAL。
插补方式为IM_NORMAL时,如果相邻的4个点在同一条直线上,则正中间的区间必定是直线。此外,如果更改点数据中的某个点,则该点前后两个点之间的路径将发生变化。
下图是指定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的曲线文件。
机器人将沿着经过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) 拐角部分的区间较短的情况 使用P12、P14、P15、P17替代(1)中的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 有无姿势修正
姿势修正功能的示例。在曲线文件“Test3_1”中,由于未指定U坐标且无姿势修正,所以工具将以固定姿势进行动作。在曲线文件“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)