42using RSI.RapidCode.dotNET;
73 bool hasErrors =
false;
74 System.Text.StringBuilder errorStringBuilder =
new System.Text.StringBuilder();
81 errorStringBuilder.AppendLine(
"WARNING: " + error.Message);
86 errorStringBuilder.AppendLine(
"ERROR: " + error.Message);
90 if (errorStringBuilder.Length > 0)
92 Console.WriteLine(errorStringBuilder.ToString());
97 throw new Exception(errorStringBuilder.ToString());
121 Console.WriteLine(
"Starting Network..");
129 for (
int i = 0; i < messagesToRead; i++)
133 Console.WriteLine(
"Expected OPERATIONAL state but the network did not get there.");
138 Console.WriteLine(
"Network Started");
146public static class Constants
148 public const int SAMPLES = 2;
149 public const int AXIS_NUMBER = 0;
150 public const int X_AXIS_NUMBER = 0;
151 public const int Y_AXIS_NUMBER = 1;
152 public const int Z_AXIS_NUMBER = 2;
153 public const int A_AXIS_NUMBER = 3;
154 public const int B_AXIS_NUMBER = 4;
155 public const int C_AXIS_NUMBER = 5;
156 public const int MAIN_AXIS_NUMBER = 0;
157 public const int DRIVEN_AXIS_NUMBER = 1;
158 public const int HOLDING_AXIS_INDEX = 0;
159 public const int MOVING_AXIS_INDEX = 1;
160 public const int AXIS_COUNT = 6;
161 public const int FIRST_AXIS_NUMBER = 0;
162 public const int SECOND_AXIS_NUMBER = 1;
163 public const int THIRD_AXIS_NUMBER = 2;
164 public const double USER_UNITS = 1;
165 public const double AKD_USER_UNITS = 1048576;
168 public const double POSITION = 2;
169 public const double VELOCITY = 200;
170 public const double ACCELERATION = 100;
171 public const double DECELERATION = 100;
172 public const double JERK_PERCENT = 50;
175 public const double POSITION_A = 5;
176 public const double POSITION_B = 10;
177 public const int MAX_TEST_TIME = 3000;
178 public const int COMP_NUM_ZERO = 0;
179 public const int COMP_NUM_ONE = 1;
180 public const int COMP_NUM_TWO = 2;
194 public Axis prime_axis;
195 public Axis main_axis;
196 public Axis driven_axis;
201 public Axis CreateAndReadyAxis(
int AxisNumber)
210 public void InitializeAllAxes()
212 axis = controller.
AxisGet(Constants.AXIS_NUMBER);
214 x_axis = controller.
AxisGet(Constants.X_AXIS_NUMBER);
216 y_axis = controller.
AxisGet(Constants.Y_AXIS_NUMBER);
218 z_axis = controller.
AxisGet(Constants.Z_AXIS_NUMBER);
220 a_axis = controller.
AxisGet(Constants.A_AXIS_NUMBER);
222 b_axis = controller.
AxisGet(Constants.B_AXIS_NUMBER);
224 c_axis = controller.
AxisGet(Constants.C_AXIS_NUMBER);
226 main_axis = controller.
AxisGet(Constants.MAIN_AXIS_NUMBER);
228 driven_axis = controller.
AxisGet(Constants.DRIVEN_AXIS_NUMBER);
230 jointsMultiAxis = controller.
MultiAxisGet(Constants.AXIS_COUNT);
234 public void DisableAllAxes()
246 public void ResetAxis(
Axis myAxis)
261 public void EnableAmp(
Axis myAxis)
268 public void TearDownFixture()
277public class SampleAppTestBase : TestBase
293 public void OneTimeSetUp()
304 public void TearDown()
310 public void OneTimeTearDown()
319[Category(
"Software")]
320public class StaticMemoryTestBase : TestBase
323 public void OneTimeSetUp()
339 public void TearDown()
347[Category(
"Software")]
348public class HelperFunctionsTests : SampleAppTestBase
351 public void CheckErrorsTest()
353 string expectedErrorSubstring =
"Motion: MPIStateERROR";
361 public void CheckErrorsWarningTest()
363 const int BAD_AXIS_NUMBER = 777;
364 Axis badAxis = controller.
AxisGet(BAD_AXIS_NUMBER);
365 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.