flex_load_helical_arc |
Load Helical Arc
Usage
status = flex_load_helical_arc(u8 boardID, u8 vectorSpace, u32 radius, f64 startAngle, f64 travelAngle, i32 linearTravel, u8 inputVector);
Purpose
Loads parameters for making a helical arc move in a 3D vector space.
Tip Refer to the Remarks section for information about how the behavior of this function differs between controllers. |
Parameters
Name | Type | Description |
---|---|---|
boardID | u8 | assigned by Measurement & Automation Explorer (MAX) |
vectorSpace | u8 | vector space to control |
radius | u32 | arc radius in counts or steps |
startAngle | f64 | starting angle for the arc move in the xy plane in degrees |
travelAngle | f64 | travel angle for the arc move in the xy plane in degrees |
linearTravel | i32 | linear travel of the z axis in counts or steps |
inputVector | u8 | source of the data for this function |
Parameter Discussion
vectorSpace is the vector space to control. Valid values are NIMC_VECTOR_SPACE1 through NIMC_VECTOR_SPACE15. On motion controllers that support fewer than thirty axes, configuring non-existent vector spaces returns error 70006 (NIMC_badResourceIDOrAxisError). Refer to Vector Spaces for vector space resource IDs.
radius is the arc radius in counts (servo axes) or steps (stepper axes).
startAngle is the double precision floating point value, in degrees, of the starting angle of the arc.
travelAngle is the double precision floating point value, in degrees, of the angle to traverse. A positive travelAngle defines counterclockwise rotation in the xy plane.
Note Internally, the floating point values for startAngle and travelAngle are represented as scaled, fixed point numbers. |
linearTravel is the linear travel of the z axis in counts (servo axes) or steps (stepper axes).
Note Loading a zero (0) for linearTravel reduces the helical arc to a circular arc. |
inputVector indicates the source of the data for this function. 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 functions from onboard variables, you must use the 16.16 fixed-point representation for all angles. |
Using This Function
This function defines an arc in 3D vector space that consists of a circle in the xy plane and synchronized linear travel in the z axis.
Note Load the velocity and acceleration/deceleration before loading an arc. |
The arc is specified by a radius, starting angle, travel angle, and z axis linear travel, and like all vector space moves, uses the loaded values of vector acceleration and vector velocity to define the motion along the helical path of the arc. The following figure defines a helical arc:
1 Helical Arc | 4 Starting Position | 6 Linear Travel |
2 Travel Angle | 5 Radius | 7 Ending Position |
3 Start Angle |
Like circular arcs, helical arcs are not limited to ±360°. Moves of up to 4,096 helical twists in either direction can be started with one call to this function.
Note If you are doing onboard programming and are using inputVector to get the data this function needs, remember that this function reads the variables starting at the memory address pointed to by inputVector in the following order: radius, startAngle, travelAngle, linearTravel. |
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 function differs among the controllers that support it.
NI 73xx Controller Considerations
The following list includes considerations you must make when you are using this function with a 73xx motion controller:
- The range for radius is 2 to 231–1 counts (steps).
- The range for startAngle 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 travelAngle is –1,474,560° to +1,474,200° (–4,096 to +4,095 revolutions).
- The range for linearTravel is –(231) to +(231–1) counts (steps).
NI SoftMotion Controller Considerations
The following list includes considerations you must make when you are using this function with the NI SoftMotion Controller:
- The range for radius is 0 to 231–1 counts (steps).
- The range for startAngle 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 travelAngle is the full 64-bit range.
- The range for linearTravel is –231 to +(231–1).