Class AdvVelocity

Class Documentation

class AdvVelocity

This class contains advanced velocity command functions.

Public Functions

inline AdvVelocity(AdvancedMotion *f)
bool IsDeviceValid()
WMX3APIFUNC SetConstantLinearVel(int masterAxis, int slaveAxis, double centerPos, double minR, double positiveMaxR, double negativeMaxR, double constLinVel, double initVelVariance)

Start constant linear velocity control for an axis.

Start constant linear velocity control for an axis.

Constant linear velocity synchronizes the motion of a velocity mode axis with the motion of a position mode axis in such a way that if the velocity mode axis controls the rotation of a wafer or disc and the position mode axis controls the motion of an arm in a radial direction from the center of the wafer or disc, the velocity of the disc surface immediately below the arm is constant.

Remark

Because the slave axis is a rotary axis, it should be set to single turn mode using the SetSingleTurn function. Not doing so will cause the axis feedback position to continue to increase as the axis rotates.

The motion of the position mode axis is unrestricted. The velocity mode axis follows the motion of the position mode axis according to the following formula:

r = distance from the center of the disc of the position mode axis [user units] ‘ = angular velocity of disc [radians per second]

v

c = constant surface linear velocity [user units per second]

‘ = vc / r

velocity of velocity mode axis in units of user units per second = [Single Turn Encoder Count] * ‘ / (2)

The following diagram illustrates the parameters described:

../_images/WMXLibrary_SetConstantLinearVel_image0.png

In addition, there are several special areas where the velocity of the velocity axis is different. These areas represent the boundaries of the disc and the center of the disc.

Rmax_positive

= the radius of the disc in the positive direction

R

max_negative = the radius of the disc in the negative direction; typically, this is equal to R max_positive but can be set to rmin

if no constant linear velocity control should be performed while the axis moves in the negative direction from the center of the disc.

r

min = the radius from the center of the disc below which the velocity of the velocity axis is constant and the disc has an angular velocity of = vc / r min

if r > Rmax_positive then ‘ = vc / Rmax_positive if r < Rmax_negative then ‘ = vc / Rmax_negative if r <= Rmax_negative and |r| < rmin then ‘ = vc / rmin

The following diagram illustrates the parameters described:

../_images/WMXLibrary_SetConstantLinearVel_image1.png

The following plot shows the angular velocity of the disc, ‘, as a function of r:

../_images/WMXLibrary_SetConstantLinearVel_image2.png

When calling this function, the master axis must bein the Position command mode, the slave axis must be in the Velocity command mode. To set the command mode of an axis, use the API function SetAxisCommandMode. In addition, rmin must be greater than or equal to 1, Rmax_positive must be greater or equal to rmin, and Rmax_negative must be greater or equal to rmin.

To prevent a sudden acceleration of the slave axis, set the initVelVariance parameter to a small value. Then, calculate the initial the initial slave axis velocity required using the following formula. Finally, use functions such as StartVel to accelerate the slave axis to the initial velocity before calling this API.

The slave velocity calculations are as follows:

If the master axis position is greater than centerPos + Rmax_positive:

slave velocity = (constLinVel / Rmax_positive) * (SingleTurnEncoderCount) / (2)

If the master axis position is less than centerPos - Rmax_negative:

slave velocity = (constLinVel / Rmax_negative) * (SingleTurnEncoderCount) / (2)

If the master axis position is between centerPos - rmin and centerPos + rmin

slave velocity = (constLinVel / rmin) * (SingleTurnEncoderCount) / (2)

If none of the above:

slave velocity = (constLinVel / | master axis position - centerPos |) * (SingleTurnEncoderCount) / (2)

Parameters:
  • masterAxis[in] The axis controlling the arm.

  • slaveAxis[in] The axis controlling the disc rotation.

  • centerPos[in] The position of the master axis at the center of the disc.

  • minR[in] The minimum radius below which the slave axis angular velocity will be constant and equal to constLinVel / minR. This value must be greater than or equal to 1.

  • positiveMaxR[in] The maximum radius in the positive direction of the master axis at which the slave axis angular velocity should be kept constant. If the radius exceeds this value, the slave axis angular velocity will be constant and equal to constLinVel / positiveMaxR. This value must be greater than or equal to minR.

  • negativeMaxR[in] The maximum radius in the negative direction of the master axis at which the slave axis angular velocity should be kept constant. If the radius exceeds this value, the slave axis angular velocity will be constant and equal to constLinVel / negativeMaxR. This value must be greater than or equal to minR.

  • constLinVel[in] The constant surface linear velocity under the arm.

  • initVelVariance[in] If the difference between the slave axis velocity when this API is called and the slave axis velocity immediately after this API is called exceeds this value, the API will return an error.

WMX3APIFUNC ResolveConstantLinearVel(int axis)

Resolve constant linear velocity control for an axis.

Resolve constant linear velocity control for an axis.

Resolves constant linear velocity control for an axis that was started with SetConstantLinearVel.

Remark

Upon resolving constant linear velocity control, the axis will continue to move at the velocity that the axis was moving at when this API function was called. To stop the axis, call the StartVel API function with a velocity of 0. Calling the Stop API function instead will immediately change the command velocity of the axis to 0, as no deceleration is specified by SetConstantLinearVel.

Parameters:

axis[in] The axis controlling the disc rotation (the slave axis specified for SetConstantLinearVel).

Public Members

AdvancedMotion *amApi