APIs, concepts, guides, and more

◆ AxisRemoveAll()

void AxisRemoveAll ( )
Description:
AxisRemoveAll will remove all axes from this MultiAxis class. This will also effectively Unmap the MultiAxis and its associations from the MotionController.
Sample Code:
Motion: Multi-Axis
/* This sample demonstrates both trapezoidal and S-curve point-to-point motion profiles for multi-axis motion.
The MultiAxis object coordinates the motion of multiple axes simultaneously.
*/
using RSI.RapidCode; // RSI.RapidCode.dotNET;
Console.WriteLine("📜 MultiAxis Motion: Point to Point");
int exitCode = 0;
// get rmp objects
Console.WriteLine($"Axis Count: {controller.AxisCountGet()}");
try
{
Helpers.CheckErrors(controller);
Helpers.VerifyHardwareUsage(controller);
Helpers.VerifyAxisCount(controller, minRequiredSampleAxisCount: 2, minRequiredSampleMultiAxisCount: 1);
// get axes
int axisCount = controller.AxisCountGet();
Axis axis0 = controller.AxisGet(Constants.AXIS_0_INDEX);
Helpers.CheckErrors(axis0);
Axis axis1 = controller.AxisGet(Constants.AXIS_1_INDEX);
Helpers.CheckErrors(axis1);
{
Helpers.PhantomAxisReset(axis0);
Helpers.PhantomAxisReset(axis1);
}
// get multiaxis (indexed by motion supervisor number, indexing starts at 0)
MultiAxis multi = controller.LoadExistingMultiAxis(axisCount);
Helpers.CheckErrors(multi);
// remove any existing axes
multi.AxisRemoveAll();
// add axes to multiaxis
multi.AxisAdd(axis0);
multi.AxisAdd(axis1);
// Use MotionAttributeMaskOnSet and MotionAttributeMaskOffSet to enable/disable synchronization features
// Both SYNC_START and SYNC_END are enabled by default
// See our Motion: Point-to-Point documentation for more details
// multi.MotionAttributeMaskOffSet(RSIMotionAttrMask.RSIMotionAttrMaskSYNC_START);
// multi.MotionAttributeMaskOffSet(RSIMotionAttrMask.RSIMotionAttrMaskSYNC_END);
// prepare for motion
multi.Abort(); // stop any existing motion
multi.ClearFaults();
// Reset axes and position
axis0.PositionSet(0);
axis1.PositionSet(0);
// define motion parameters
double[] positions1 = [ 5, 10 ]; // first set of positions
double[] positions2 = [ 15, 15 ]; // second set of positions
double[] velocities1 = [ 10, 10 ]; // velocities for first move
double[] velocities2 = [ 10, 10 ]; // velocities for second move
double[] accelerations = [ 20, 20 ]; // accelerations for both axes
double[] decelerations = [ 20, 20 ]; // decelerations for both axes
double[] jerkPercent = [ 50, 50 ]; // jerk percent for s-curve motion
// move using s-curve motion profile
Console.WriteLine($"\nMove 1 (S-Curve): Positions = [{positions1[0]}, {positions1[1]}]");
multi.MoveSCurve(positions1, velocities1, accelerations, decelerations, jerkPercent);
multi.MotionDoneWait(); // wait for motion to complete
Console.WriteLine($"Axis 0 CommandPosition: {axis0.CommandPositionGet()} (expected: {positions1[0]})");
Console.WriteLine($"Axis 1 CommandPosition: {axis1.CommandPositionGet()} (expected: {positions1[1]})");
// move using trapezoidal motion profile
Console.WriteLine($"\nMove 2 (Trapezoidal): Positions = [{positions2[0]}, {positions2[1]}]");
multi.MoveTrapezoidal(positions2, velocities2, accelerations, decelerations);
multi.MotionDoneWait(); // wait for motion to complete
Console.WriteLine($"Axis 0 CommandPosition: {axis0.CommandPositionGet()} (expected: {positions2[0]})");
Console.WriteLine($"Axis 1 CommandPosition: {axis1.CommandPositionGet()} (expected: {positions2[1]})");
// cleanup
Helpers.AbortMotionObject(multi);
multi.ClearFaults();
multi.AxisRemoveAll();
Console.WriteLine("\nMulti-axis point-to-point motion complete.");
exitCode = Constants.EXIT_SUCCESS;
}
// handle errors as needed
catch (Exception e)
{
Console.WriteLine($"❌ Error: {e.Message}");
exitCode = Constants.EXIT_FAILURE;
}
finally
{
controller.Delete(); // dispose
}
return exitCode;
Constants used in the C# sample apps.
Definition _constants.cs:3
const bool USE_HARDWARE
Default: false.
Definition _constants.cs:10
const int EXIT_FAILURE
Exit code for failed execution.
Definition _constants.cs:69
const int AXIS_0_INDEX
Default: 0.
Definition _constants.cs:20
const int AMP_ENABLE_MS
Default: 750.
Definition _constants.cs:35
const int EXIT_SUCCESS
Exit code for successful execution.
Definition _constants.cs:68
const int AXIS_1_INDEX
Default: 1.
Definition _constants.cs:21
void PositionSet(double position)
Set the Command and Actual positions.
Represents a single axis of motion control. This class provides an interface for commanding motion,...
Definition rsi.h:5921
static MotionController * Get()
Get an already running RMP EtherCAT controller.
Represents the RMP soft motion controller. This class provides an interface to general controller con...
Definition rsi.h:800
void MoveTrapezoidal(const double *const position, const double *const vel, const double *const accel, const double *const decel)
Point-to-point trapezoidal move.
void AxisRemoveAll()
Remove all axes from a MultiAxis group.s.
void MoveSCurve(const double *const position, const double *const vel, const double *const accel, const double *const decel, const double *const jerkPct)
Point-to-point S-Curve Move.
void AxisAdd(Axis *axis)
Add an Axis to a MultiAxis group.
Represents multiple axes of motion control, allows you to map two or more Axis objects together for e...
Definition rsi.h:10842
void ClearFaults()
Clear all faults for an Axis or MultiAxis.
void Abort()
Abort an axis.
int32_t MotionDoneWait(int32_t waitTimeoutMilliseconds=WaitForever)
Waits for a move to complete.
int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds=AmpEnableTimeoutMillisecondsDefault, bool overrideRestrictedState=false)
Enable all amplifiers.
Helpers namespace provides utility functions for common tasks in RMP applications.
Definition helpers.h:21
See also
AxisAdd
Examples
difference-of-position-user-limit.cpp, multiaxis-motion-point-to-point.cs, and multiaxis-motion-velocity.cs.