Load Spherical Arc

NI-Motion VI

Load Spherical Arc

Loads parameters for making a spherical arc move in a 3D vector space.

Details      Remarks

Device Compatibility

DeviceCompatibility
7330
Y
7340
Y
7344
Y
7350
Y
7390
Y
NI SoftMotion Controller for CANopen—Accelnet
Y
NI SoftMotion Controller for CANopen—Xenus
Y
Plane Yaw (0) is the double precision floating point value, in degrees, of the angle between the x' and x axes when the entire x'y'z' vector space is rotated around the z axis. The z' axis remains aligned with the z axis. When Plane Yaw equals 90°, the positive x' axis is aligned with the positive y axis.
Note  Loading zeros for Plane Pitch and Plane Yaw reduces the spherical arc to a circular arc.

Internally, the floating-point values for Plane Pitch, Plane Yaw, Start Angle, and Travel Angle are represented as scaled, fixed point numbers.
Plane Pitch (0) is the double precision floating point value, in degrees, of the angle between the x' and x axes when the entire x'y'z' vector space is rotated around the y axis. The y' axis remains aligned with the y axis. When Plane Pitch equals 90°, the positive x' axis is aligned with the negative z axis.
Board ID is a unique number assigned by Measurement & Automation Explorer (MAX) used to send and receive commands and data to or from a specific NI motion controller.
Vector Space is the vector space to control.
Inp Vect indicates the source of the data for this VI. Available input vectors include immediate (0xFF), variable (0x01 through 0x78), or indirect variable (0x81 through 0xF8). Refer to Input and Return Vectors for more detailed information.
Note  The conversion from floating-point to fixed-point is performed on the host computer, not on the motion controller. To load arc VIs from onboard variables, you must use the 16.16 fixed-point representation for all angles.
error in (no error) describes error conditions that occur before this VI runs. The default input of this cluster is no error. If an error already occurred, this VI returns the value of error in in error out. The VI runs normally only if no incoming error exists. Otherwise, the VI passes the error in value to error out. The error in cluster contains the following parameters:
status is TRUE if an error occurred before this VI was called, or FALSE if not. If status is TRUE, code is a nonzero error code. If status is FALSE, code is zero or a warning code.
code is a number identifying an error or warning. If status is TRUE, code is a nonzero error code. If status is FALSE, code is zero or a warning code. Use the error handler VIs to look up the meaning of this code and display the corresponding error message.
source is a string that indicates the origin of the error, if any. Typically, source is the name of the VI in which the error occurred.
Radius (2) is the arc radius in counts (servo axes) or steps (stepper axes).
Travel Angle (0) is the double precision floating point value, in degrees, of the angle to traverse. A positive Travel Angle defines counterclockwise rotation in the xy plane.
Note  Internally, the floating point values for Start Angle and Travel Angle are represented as scaled, fixed point numbers.
Start Angle (0) is the double precision floating point value, in degrees, of the starting angle of the arc. The range is 0 to 359.999313° where angle 0 is along the positive x axis and values increase counterclockwise from the positive x axis in the xy plane.
Bd ID Out is provided for flow control. You can string together NI-Motion VIs by wiring the Bd ID Out terminal of one VI to the Board ID terminal of the next VI.
Resource Output is the Axis, Vector Space, ADC, or Encoder you wired into the VI. Use Resource Output to pass the resource to another VI and/or to display information about the device.
error out contains error information. If error in indicates an error, error out contains the same error information. Otherwise, it describes the error status that this VI produces.
status is TRUE if an error occurred, or FALSE if not. If status is TRUE, code is a nonzero error code. If status is FALSE, code is zero or a warning code.
code is a number identifying an error or warning. If status is TRUE, code is a nonzero error code. If status is FALSE, code is zero or a warning code. Use the error handler VIs to look up the meaning of this code and display the corresponding error message.
source is a string that indicates the origin of the error, if any. Typically, source is the name of the VI in which the error occurred.

Using This VI

The Load Spherical Arc VI defines an arc in the x'y' plane of a coordinate system that has to be transformed by rotation in pitch and yaw from the normal 3D vector space (xyz). In the transformed x'y'z' space, the spherical arc is reduced to a simpler circular arc. It is specified by a radius, starting angle, and travel angle, and like all vector space moves, uses the loaded values of vector acceleration and vector velocity to define the motion along the path of the arc in the x'y' plane.

Note  Load the velocity and acceleration/deceleration before loading an arc.

The following figure shows a graphic representation of the transformation between the x'y'z' and xyz coordinate spaces. The formal definitions of Plane Pitch and Plane Yaw are listed in the previous section.

Pitch and yaw transformations are inherently confusing because they interact. To avoid ambiguities, you can think about spherical arcs and coordinate transformations as follows:

  • The spherical arc is defined as a circular arc in the x'y' plane of a transformed vector space x'y'z'. The original vector space xyz is defined by the Configure Vector Space VI.
  • The transformed vector space x'y'z' is defined in orientation only, with no absolute position offset. Its orientation is with respect to the xyz vector space and is defined in terms of pitch and yaw angles.
  • Yaw angle rotation comes before pitch angle rotation.
  • When rotating through the yaw angle, the y' axis never leaves the original xy plane as the newly defined x'y'z' vector space rotates around the original z axis.
  • When rotating through the pitch angle, the y and y' axes stay aligned with each other while the x'z' plane rotates around them.
  • At the beginning of the move, the axes are considered to be already on the arc in the x'y' plane. This avoids any impossible situations where the end point of the last move and the beginning of the arc move are not coincident.
  • Spherical arcs enable full 3D curvilinear motion for robotic, solid modeling, and other advanced applications.

Note  If you are doing onboard programming and are using Inp Vect to get the data this VI needs, remember that this VI reads the variables starting at the memory address pointed to by Inp Vect in the following order: Radius, Plane Pitch, Plane Yaw, Start Angle, Travel Angle.

Refer to NI 73xx Arc Angles in Degrees for more information about representing angles numerically.

Remarks

This section includes information about how the behavior of this VI differs among the controllers that support it.

NI 73xx Controller Considerations

The following list includes considerations you must make when you are using this VI with a 73xx motion controller:

  • The range for Radius (2) is 2 to 231–1 counts (steps).
  • The range for Plane Pitch (0) is 0 to 90°.
  • The range for Plane Yaw (0) is 0 to 359.999313°.
  • The range for Start Angle (0) is 0 to 359.999313° where angle 0 is along the positive x axis and values increase counterclockwise from the positive x axis in the xy plane.
  • The range for Travel Angle (0) is –1,474,560° to +1,474,200° (–4,096 to +4,095 revolutions).

NI SoftMotion Controller Considerations

The following list includes considerations you must make when you are using this VI with the NI SoftMotion Controller:

  • The range for Radius (2) is 0 to 231–1 counts (steps).
  • The range for Plane Pitch (0) is 0 to 360°.
  • The range for Plane Yaw (0) is 0 to 360°.
  • The range for Start Angle (0) is 0 to 360° where angle 0 is along the positive x axis and values increase counterclockwise from the positive x axis in the xy plane.
  • The range for Travel Angle (0) is the full 64-bit range.