46using RSI.RapidCode.dotNET;
77 bool hasErrors =
false;
78 System.Text.StringBuilder errorStringBuilder =
new System.Text.StringBuilder();
85 errorStringBuilder.AppendLine(
"WARNING: " + error.Message);
90 errorStringBuilder.AppendLine(
"ERROR: " + error.Message);
94 if (errorStringBuilder.Length > 0)
96 Console.WriteLine(errorStringBuilder.ToString());
101 throw new Exception(errorStringBuilder.ToString());
125 Console.WriteLine(
"Starting Network..");
133 for (
int i = 0; i < messagesToRead; i++)
137 Console.WriteLine(
"Expected OPERATIONAL state but the network did not get there.");
142 Console.WriteLine(
"Network Started");
150public static class Constants
152 public const int SAMPLES = 2;
153 public const int AXIS_NUMBER = 0;
154 public const int X_AXIS_NUMBER = 0;
155 public const int Y_AXIS_NUMBER = 1;
156 public const int Z_AXIS_NUMBER = 2;
157 public const int A_AXIS_NUMBER = 3;
158 public const int B_AXIS_NUMBER = 4;
159 public const int C_AXIS_NUMBER = 5;
160 public const int MAIN_AXIS_NUMBER = 0;
161 public const int DRIVEN_AXIS_NUMBER = 1;
162 public const int HOLDING_AXIS_INDEX = 0;
163 public const int MOVING_AXIS_INDEX = 1;
164 public const int AXIS_COUNT = 6;
165 public const int FIRST_AXIS_NUMBER = 0;
166 public const int SECOND_AXIS_NUMBER = 1;
167 public const int THIRD_AXIS_NUMBER = 2;
168 public const double USER_UNITS = 1;
169 public const double AKD_USER_UNITS = 1048576;
172 public const double POSITION = 2;
173 public const double VELOCITY = 200;
174 public const double ACCELERATION = 100;
175 public const double DECELERATION = 100;
176 public const double JERK_PERCENT = 50;
179 public const double POSITION_A = 5;
180 public const double POSITION_B = 10;
181 public const int MAX_TEST_TIME = 3000;
182 public const int COMP_NUM_ZERO = 0;
183 public const int COMP_NUM_ONE = 1;
184 public const int COMP_NUM_TWO = 2;
198 public Axis prime_axis;
199 public Axis main_axis;
200 public Axis driven_axis;
205 public Axis CreateAndReadyAxis(
int AxisNumber)
214 public void InitializeAllAxes()
216 axis = controller.
AxisGet(Constants.AXIS_NUMBER);
218 x_axis = controller.
AxisGet(Constants.X_AXIS_NUMBER);
220 y_axis = controller.
AxisGet(Constants.Y_AXIS_NUMBER);
222 z_axis = controller.
AxisGet(Constants.Z_AXIS_NUMBER);
224 a_axis = controller.
AxisGet(Constants.A_AXIS_NUMBER);
226 b_axis = controller.
AxisGet(Constants.B_AXIS_NUMBER);
228 c_axis = controller.
AxisGet(Constants.C_AXIS_NUMBER);
230 main_axis = controller.
AxisGet(Constants.MAIN_AXIS_NUMBER);
232 driven_axis = controller.
AxisGet(Constants.DRIVEN_AXIS_NUMBER);
234 jointsMultiAxis = controller.
MultiAxisGet(Constants.AXIS_COUNT);
238 public void DisableAllAxes()
250 public void ResetAxis(
Axis myAxis)
265 public void EnableAmp(
Axis myAxis)
272 public void TearDownFixture()
281public class SampleAppTestBase : TestBase
297 public void OneTimeSetUp()
308 public void TearDown()
314 public void OneTimeTearDown()
323[Category(
"Software")]
324public class StaticMemoryTestBase : TestBase
327 public void OneTimeSetUp()
343 public void TearDown()
351[Category(
"Software")]
352public class HelperFunctionsTests : SampleAppTestBase
355 public void CheckErrorsTest()
357 string expectedErrorSubstring =
"Motion: RSIStateERROR";
365 public void CheckErrorsWarningTest()
367 const int BAD_AXIS_NUMBER = 777;
368 Axis badAxis = controller.
AxisGet(BAD_AXIS_NUMBER);
369 Assert.Throws(Is.TypeOf<Exception>().And.Message.Contains(BAD_AXIS_NUMBER.ToString()), () =>
HelperFunctions.
CheckErrors(badAxis));
static void CheckErrors(RapidCodeObject rsiObject)
Check if the RapidCodeObject has any errors.
static void StartTheNetwork(MotionController controller)
Start the controller communication/network.
Helper Functions for checking logged creation errors, starting the network, etc.
void UserUnitsSet(double countsPerUserUnit)
Sets the number of counts per User Unit.
void ErrorLimitTriggerValueSet(double triggerValue)
Set the Position Error Limit trigger value.
void PositionSet(double position)
Set the Command and Actual positions.
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct)
Command a point-to-point S-Curve motion.
Represents a single axis of motion control. This class provides an interface for commanding motion,...
void DefaultVelocitySet(double velocity)
Set the default velocity in UserUnits.
void DefaultAccelerationSet(double acceleration)
Set the default acceleration in UserUnits.
void DefaultDecelerationSet(double deceleration)
Set the default deceleration in UserUnits.
Represents a collection of joints in Cartesian space with forward and inverse kinematics....
Axis * AxisGet(int32_t axisNumber)
AxisGet returns a pointer to an Axis object and initializes its internals.
RSINetworkState NetworkStateGet()
void Reset()
Reset the controller which stops and restarts the RMP firmware.
void MotionCountSet(int32_t motionCount)
Set the number of processed Motion Supervisors in the controller.
const char *const NetworkLogMessageGet(int32_t messageIndex)
static MotionController * CreateFromSoftware()
Initialize and start the RMP EtherCAT controller.
void Delete(void)
Delete the MotionController and all its objects.
void Shutdown()
Shutdown the controller.
MultiAxis * MultiAxisGet(int32_t motionSupervisorNumber)
MultiAxisGet returns a pointer to a MultiAxis object and initializes its internals.
int32_t AxisCountGet()
Get the number of axes processing.
int32_t NetworkLogMessageCountGet()
void AxisCountSet(int32_t axisCount)
Set the number of allocated and processed axes in the controller.
Represents the RMP soft motion controller. This class provides an interface to general controller con...
void NetworkStart()
Start the network with RSINetworkStartupMethodNORMAL.
Represents multiple axes of motion control, allows you to map two or more Axis objects together for e...
void ClearFaults()
Clear all faults for an Axis or MultiAxis.
void AmpEnableSet(bool enable)
Enable all amplifiers.
void Abort()
Abort an axis.
void ThrowExceptions(bool state)
Configure a class to throw exceptions.
const RsiError *const ErrorLogGet()
Get the next RsiError in the log.
int32_t ErrorLogCountGet()
Get the number of software errors in the error log.
The RapidCode base class. All non-error objects are derived from this class.
Represents the error details thrown as an exception by all RapidCode classes. This class contains an ...
bool isWarning
Whether the error is or is not a warning.
RSINetworkState
State of network.