Command: Curve Start (86)

Supported Axes:

Position Control Axes

Supported Control Modes:

Position PID, Position I-PD

 

See the Commands Overview topic for basic command information and how to issue commands from PLCs, HMIs, etc.

Command Parameters

#

Parameter Description

Data Type

Range

1

Curve ID

Internal: DINT

External: REAL

0-50000

2

Master Register

Note: See Specifying aRegister Address below.

REAL

_Time or any other valid register of type REAL.

3

Cycles

0 = continuous,

1 = 1 cycle

n=n cycles (up to 16 million)

REAL

0 to 16 million
(0 = continuous)

Description

This command starts following the position curve with the specified Curve ID. Curves can be used for splines and profiles based on time, or for camming based on a master. For pressure or force axes, use the Curve Start (Prs/Frc) (87) command.

For more advanced options, such as scaling or offsetting the curve, or absolute and relative options for the master or curve alignment, see the Curve Start Advanced (88) command.

Curve ID

Specifies which curve you wish to follow.

Master Register

This specifies whether you wish to follow the curve based on time, or based on some master register, such as the position of another axis.

If you wish to follow a curve based on time, but sometimes need to slow down or speed up the interpolation rate, consider using a virtual axis as a master. See the Using a Virtual Axis as a Curve Master section below.

The curve will run based on the master position, even if the master changes directions.

Cycles

Specifies the number of times to repeat the curve. The value of 1 is most common and will run the curve once. The value 0 means the curve will repeat endlessly. Any other value (n) means to run the curve n times. For curves with cubic interpolation that will be repeated multiple times (Cycles is not 1), the Natural-Velocity Endpoints (+1) Interpolation Option is not allowed.

If the y-values of the first and last points are not equal, and the curve is run for more than 1 consecutive cycle, the curve will be automatically offset so that the first point of the next cycle matches the last point of the previous cycle.

When running a curve for multiple cycles, if you wish the curve to repeat at a certain interval, then it is important that the curve x-values be defined for that entire interval, including the last x-value. For example, in order to repeat the curve at an x-axis interval starting at 0 and going to 360, the first x-value of the curve must be zero, and the last x-value of the curve must be 360. When running multiple cycles, the first and last points of the curve will end up being the same point in time. This means that if the first and last y-values are not equal to each other, each cycle of the curve will be offset from the previous one.

Starting a Curve

For the axis that you issue the Curve Start command to, the Target (Position, Pressure, or Force) must be at the first point in the curve data (Y0) before issuing the command, or, a Transition command must previously have been issued to specify how the axis should move to get to the curve. A transition command will allow you to start a curve even though the axis is not at the curve yet. If you want the axis to follow the curve exactly starting from the beginning, do not use a transition; instead, make sure the axis is at the starting point before issuing the Curve Start command.

If you are following the curve based on a master (not time), you may want to first move the master to it's starting location. This is because the curve master positions (the curve's x-data) will be relative to the position of the master at the time this command is issued. The curve does not use the actual X0 value in the curve data. Therefore, if you want the curve to follow the master axis at the actual x-axis values in the data, you should move the master to the starting location before issuing the Curve Start command.

Using a Virtual Axis as a Curve Master

A virtual axis can be used as a curve master. It is sometimes desirable to gear to a virtual axis rather than executing the curve as a function of time. All the curves using the virtual axis as a master can be sped up or slowed down by speeding up or slowing down the virtual axis. The virtual axis can even be moved backwards causing the curve axes to back up. This cannot be done using the _Time master register.

Moving the master virtual axis at 1 unit/sec as the standard velocity makes gearing ratio calculations very easy. The acceleration and deceleration of the master virtual axis provide a smooth start and stop for the curve axis.

When using a virtual axis as a master, it is often useful to set up the virtual axis as rotary because it will never need to be manually reset. The wrapping automatically resets the master. If using a rotary master, the curve must be defined as describe in the Using a Rotary Master section below.

Using a Rotary Master

When using a rotary axis (whether virtual or real), if you wish the curve to repeat for each rotation, then it is important that the curve x-values be defined for the entire rotary range, including the last x-value. For example, if the Position Unwind is 360, and the curve is for an entire rotation starting at zero, then the first x-value of the curve must be zero, and the last x-value of the curve must be 360.

Cycles Status

The Cycles and Cycles (Pressure/Force) status registers hold the number of whole cycles that have been completed. These registers are valid for the Curve Start (86), Curve Start (Prs/Frc) (87), Sine Start (72) and Sine Start (Prs/Frc) (76) commands.

Completing a Curve

Time-Based Curves

Time-based curves will end after the specified number of cycles, and the Target Generator Done bit will be set when the axis reaches the final point. Infinite curves (Cycles = 0) will continue until another motion command is issued to the axis. Infinite curves will not cause the Target Generator Done bit to turn on.

If the curve ends with a non-zero velocity or acceleration, a new motion command must be issued within two loop times after the Target Generator Done bit has been set. If a new command is not issued during this time, then a Closed Loop Halt will occur and the Runtime Error bit will be set. Notice that if the Runtime Error AutoStop is set to a halt, that halt will also occur. Use a Link Condition in a user program to check whether the Target Generator Done bit has been set. See the Target Generator State Bits section below.

Master-Based Curves

Master-based curves with zero-velocity endpoints will follow the curve until another motion command is issued. When the master register is outside the range of the curve, the curve axis will remain stopped at the appropriate endpoint. The Target Generator Done and State Bits can be used to determine when the master has moved beyond either endpoint. See the Target Generator State Bits section below.

Master-based curves that end with non-zero velocity endpoints will continue for two loop times after the master moves beyond the starting or ending point. If another motion command is not issued within two loop times of the master moving beyond the starting or ending point, then a Closed Loop Halt will occur and the Runtime Error bit will be set. Notice that if the Runtime Error AutoStop is set to a halt, that halt will also occur. Use a Link Condition in a user program to check the Target Generator bits to determine whether the master has moved beyond the endpoints. See the Target Generator State Bits section below.

If you do not want the axis to halt after exceeding an endpoint, use the Curve Start Advanced (88) command.

For master-based cyclic curves, the endpoints are the beginning of cycle 0, and the end of the last cycle. Infinite cyclic curves will continue until another motion command is issued to the axis.

Specifying a Register Address

When issuing this command from anywhere other than RMCTools, the addresses in the Master Register command parameter must be entered as an integer value.

RMC addresses are represented in IEC format as:

%MDfile.element, where file = file number, and element = element number.

Use the following equation to convert a register address to integer format, N:

N =  file * 4096 + element

 

Example:

Register address %MD8.33 is 8*4096 + 33 = 32801.

 

_Time:

The register address for the _Time tag in the RMC75 is %MD20.10. Therefore, the value is 20*4096 + 10 = 81930.

The register address for the _Time tag in the RMC150 is %MD44.10. Therefore, the value is 44*4096 + 10 = 180234.

The register address for the _Time tag in the RMC200 is %MD18.10. Therefore, the value is 18*4096 + 10 = 73738.

Status Registers

The Cycles axis status register gives the whole number of cycles that the current curve has completed. After a curve has completed or been interrupted, this will remain at its current value. This value is reset each time the Curve Start command is sent.

Status Bits

In Position Bit

For curves based on _Time, the In Position bit will be set when the curve has completed. The In Position bit will not be set for curves that follow a master other than _Time.

Target Generator State Bits

The Target Generator bits in the Status Bits register indicate which portion of the move the axis is currently in. These bits are useful for determining whether the curve has reached the starting or ending points.

Target Generator Done bit

Set when the master position is at or beyond the ending point. Notice that for master-based curves with a zero-velocity ending point, the curve is still being followed. That is, if the master backs up into the curve, then the curve axis will resume following the curve backwards, and the Target Generator Done bit will be cleared.

Target Generator State A and B bits

B

A

Description

0

0

The curve is being followed and the master is beyond (not at) the ending point.

0

1

The curve is being followed and the master is prior to (not at) the starting point.

1

0

The curve is being followed and the master is between the starting and ending points or at the starting or ending point.

1

1

Reserved.

Pri. TG SI Busy (Primary Target Generator Superimposed Busy) Bit

This bit will be set during the transition. The transition begins when the motion command is issued, not necessarily when the Transition command is issued. When the transition completes, this bit will clear.

 

See Also

Curves Overview | Curve Add (82) | Curve Data Formats | Curve Start (Prs/Frc) (87) | Curve Start Advanced (88) | Change Master (79)


Send comments on this topic.

Copyright © 2025 Delta Computer Systems, Inc. dba Delta Motion