Curve Statement
Defines the data and points required to move the arm along a curved path. Many data points can be defined in the path to improve precision of the path.
Syntax
Curve fileName, closure, mode, numAxes, pointList
Parameters
- fileName
- Specify the name of the file in which point data will be saved as a string. The specified fileName will have the extension .CVT appended to the end so no extension is to be specified by the user. When the Curve instruction is executed, file will be created. You cannot specify a file path and fileName doesn’t have any effect from ChDisk. See ChDisk for the details.
- closure
- Specify whether or not the defined Curve is Closed or left Open at the end of the curved motion. This parameter must be set to one of two possible values, as shown below.
- C - Closed Curve
- O - Open Curve
- When specifying the open curve, the Curve instruction creates the data to stop the arm at the last point of the specified point series. When specifying the closed curve, the Curve instruction creates the data required to continue motion through the final specified point and then stopping motion after returning the arm to the starting point of the specified point series for the Curve instruction.
- Mode Setting
- Specify whether or not the arm is automatically interpolated in the tangential direction of the U-Axis. It can also specify the ECP number in the upper four bits.
Mode Setting Tangential Correction ECP Number Hexadecimal Decimal &H00 0 No 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 Yes 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 - When specifying tangential correction, Curve uses only the U-Axis coordinate of the starting point of the point series. Tangential correction continuously maintains tool alignment tangent to the curve in the XY plane. It is specified when installing tools such as cutters that require continuous tangential alignment. When specifying a closed curve (using the closure parameter) with Automatic Interpolation in the tangential direction of the U-Axis, the U-Axis rotates 360 degrees from the start point. Therefore, before executing the CVMove instruction, set the U-Axis movement range using the Range instruction so the 360 degree rotation of the U-Axis does not cause an error.
When using ECP, specify the ECP number in the upper four bits.
When generating a curve considering the additional axis position included in the point data, specify the ninth bit as 1. For example, when using no orientation offset or ECP and generating a curve considering the additional axis position, specify &H100.
When generating a curve for the additional axis, join the continuous point data of S axis and T axis separately from the robot coordinate system.
However if the additional axis is consisted of the PG axis, it doesn’t generate a curve with the continuous point but creates the data to move to the final point. - numAxes
- Specify the number of coordinate axes to be controlled during curve operation as an integer of 2, 3, 4, or 6.
- 2 - Generate a curve in the XY plane with no Z Axis movement or U Axis rotation. (except for 6-Axis robots (including N series))
- 3 - Generate a curve in the XYZ space with no U axis rotation. (except for 6-Axis robots (including N series))
- 4 - Generate a curve in the XYZ space with U-Axis rotation. (except for 6-Axis robots (including N series))
- 6 - Generate a curve in the XYZ space with U, V, and W axes rotation (6-Axis robots (including N series) only).
- The axes not selected to be controlled during the Curve motion maintain their previous encoder pulse positions and do not move during Curve motion.
- pointList { point expression| P(start:finish) } [, output command ] ...
- This parameter is actually a series of Point Numbers and optional output statements either separated by commas or an ascended range of points separated by a colon.
Normally the series of points are separated by commas as shown below:Curve "MyFile", O, 0, 4, P1, P2, P3, P4
Sometimes the user defines a series of points as shown below:
Curve "MyFile", O, 0, 4, P(1:4)
In the case shown above the user defined a curve using points P1, P2, P3, and P4. Output command is optional and is used to control output operation during curve motion. The command can be On or Off for digital outputs or memory outputs. Entering an output command following any point number in the point series causes execution of the output command when the arm reaches the point just before the output command. A maximum of 16 output commands may be included in one Curve statement. In the example below, the "On 2" command is executed just as the arm reaches the point P2, then the arm continues to all points between and including P3 and P10.
Curve "MyFile", C, 0, 4, P1, P2, ON 2, P(3:10)
Description
Curve creates data that moves the manipulator arm along the curve defined by the point series pointList and stores the data in a file on the controller. The CVMove instruction uses the data in the file created by Curve to move the manipulator in a continuous path type fashion.
The curve file is stored in the Compact Flash inside of the controller. Therefore, Curve starts writing into the Compact Flash. Frequent writing into the Compact Flash will shorten the Compact Flash lifetime. We recommend using Curve only for saving the point data.
Curve calculates independent X, Y, Z, U, V, W coordinate values for each point using a cubic spline function to create the trajectory. Therefore, if points are far apart from each other or the orientation of the robot is changed suddenly from point to point, the desired trajectory may not to be realized.
It is not necessary to specify speeds or accelerations prior to executing the Curve instruction. Arm speed and acceleration parameters can be changed any time prior to executing CVMove by using the SpeedS or AccelS instructions.
Points defined in a local coordinate system may be used in the series to locate the curve at the desired position. By defining all of the specified points in the point series for the Curve instruction as points with local attributes, the points may be changed as points on the local coordinate system by the Local instruction following the Curve instruction.
Notes
Use tangential correction when possible
It is recommended that you use tangential correction whenever possible, especially when using CVMove in a continuous loop through the same points. If you do not use tangential correction, the robot may not follow the correct path at higher speeds.
Open Curve Min and Max Number of Points Allowed
Open Curves may be specified by using from 3 to 1000 points.
Closed Curve Min and Max Number of Points Allowed
For the controller of RC700 series and RC90 series, Closed Curves may be specified by using from 3 to 1000 points.
For the T/VT series controller, Closed Curves may be specified by using from 3 to 300 points. (If using T/VT controller in the simulator, it can be specified from 3 to 1000 points, but with the actual controller, it is up to 300.)
The Processing Time Gets Longer If the Number of Point Is Large
If the Curve command executed with max points, it takes several seconds for Closed Curves, several tens of seconds for Open Curve.
Especially, Closed Curves takes lots of time to process so using Open Curve is recommended when the number of points is large.
Example of creating trajectory similar to Closed Curve with using Open Curve is described in the Curve Statement Example 2.
However, if you generate a curved path file once with the Curve command and perform CVMove motion multiple times on the same file, the above time will be taken only once when the Curve command is executed.
Compatibility of file
Files created after firmware Ver.7.5.1 are not available for earlier versions of firmware. Also, files created firmware Ver.7.5.1 or earlier can be used with firmware Ver.7.5.1 or later.
Potential Error
Attempt to Move Arm Outside Work Envelope
The Curve instruction cannot check the movement range for the defined curve path. This means that a user defined path may cause the robot arm to move outside the normal work envelope. In this case an "out of range" error will occur.
When point interval is not even
When point interval is not even, the acceleration of the generated curve may become abnormally high. In such cases, an abnormal acceleration error may occur.
It may work without error if the following setting is set to On.
Vertical 6-axis robots (including N series), RS series: AvoidSingularity SING_VSD
SCARA Robots (excluding RS Series): VSD
See Also
AccelS Function, Arc, CVMove, ECP, Move, SpeedS
Curve Statement Example 1
The following example designates the free curve data file name as MYCURVE.CVT, creates a curve tracing P1-P7, switches ON output port 2 at P2, and decelerates the arm at P7.
Set up curve
> curve "mycurve", O, 0, 4, P1, P2, On 2, P(3:7)
Move the arm to P1 in a straight line
> jump P1
Move the arm according to the curve definition called mycurve
> cvmove "mycurve"
Curve Statement Example 2
Shown below is an example for motion that similar to Closed Curve by using (1) Open Curve, (2) Closed Curve, and (3) Open Curve.
Reference points are as shown below.
P0 = XY(0, 300, -50, 0) 'Start/End
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) 'Right after start
P11 = XY(-10, 299.7, -50, 0) 'Right before end
(1) Open Curve
Specifying a curve of Open Curve
> Curve "mycurve_O", O, 0, 2, P(0:4), P0
Moving the arm in a straight line to P0
> jump P0
Move the arm with the specified Open Curve "mycurve_O"
> CVMove "mycurve_O"
Because it is an Open Curve, the start point and end point are the same but they do not connect smoothly.
(2) Closed Curve
Specifying a curve of Closed Curve
> Curve "mycurve_C", O, 0, 2, P(0:4)
Moving the arm in a straight line to P0
> jump P0
Move the arm with the specified Closed Curve "mycurve_C"
> CVMove "mycurve_C"
Because it is Closed Curve, the start point and end point connect smoothly.
(3) OpenCurve similar to the Closed Curve
Specifying a curve of Open Curve. Set the points right after the start point and right before the end point.
> Curve "mycurve_O_mod", O, 0, 2, P0, P10, P(1:4), P11, P0
Moving the arm in a straight line to P0
> jump P0
Move the arm with the specified Open Curve "mycurve_O_mod"
> CVMove "mycurve_O_mod"
It is Open Curve but the start point and end point connect smoothly by going through P10 and P11.