44 using NUnit.Framework;
62 public static void CheckErrors(RapidCodeObject rsiObject)
66 bool hasErrors =
false;
67 System.Text.StringBuilder errorStringBuilder =
new System.Text.StringBuilder();
68 while (rsiObject.ErrorLogCountGet() > 0)
70 RsiError error = rsiObject.ErrorLogGet();
74 errorStringBuilder.AppendLine(
"WARNING: " + error.Message);
79 errorStringBuilder.AppendLine(
"ERROR: " + error.Message);
83 if (errorStringBuilder.Length > 0)
85 Console.WriteLine(errorStringBuilder.ToString());
90 throw new Exception(errorStringBuilder.ToString());
112 if (controller.NetworkStateGet() !=
RSINetworkState.RSINetworkStateOPERATIONAL)
114 Console.WriteLine(
"Starting Network..");
115 controller.NetworkStart();
118 if (controller.NetworkStateGet() !=
RSINetworkState.RSINetworkStateOPERATIONAL)
120 int messagesToRead = controller.NetworkLogMessageCountGet();
122 for (
int i = 0; i < messagesToRead; i++)
124 Console.WriteLine(controller.NetworkLogMessageGet(i));
126 Console.WriteLine(
"Expected OPERATIONAL state but the network did not get there.");
131 Console.WriteLine(
"Network Started");
139 public static class Constants
141 public const int SAMPLES = 2;
142 public const int AXIS_NUMBER = 0;
143 public const int X_AXIS_NUMBER = 0;
144 public const int Y_AXIS_NUMBER = 1;
145 public const int Z_AXIS_NUMBER = 2;
146 public const int A_AXIS_NUMBER = 3;
147 public const int B_AXIS_NUMBER = 4;
148 public const int C_AXIS_NUMBER = 5;
149 public const int MAIN_AXIS_NUMBER = 0;
150 public const int DRIVEN_AXIS_NUMBER = 1;
151 public const int HOLDING_AXIS_INDEX = 0;
152 public const int MOVING_AXIS_INDEX = 1;
153 public const int AXIS_COUNT = 6;
154 public const int FIRST_AXIS_NUMBER = 0;
155 public const int SECOND_AXIS_NUMBER = 1;
156 public const int THIRD_AXIS_NUMBER = 2;
157 public const double USER_UNITS = 1;
158 public const double AKD_USER_UNITS = 1048576;
161 public const double POSITION = 2;
162 public const double VELOCITY = 200;
163 public const double ACCELERATION = 100;
164 public const double DECELERATION = 100;
165 public const double JERK_PERCENT = 50;
168 public const double POSITION_A = 5;
169 public const double POSITION_B = 10;
170 public const int MAX_TEST_TIME = 3000;
171 public const int COMP_NUM_ZERO = 0;
172 public const int COMP_NUM_ONE = 1;
173 public const int COMP_NUM_TWO = 2;
177 public class TestBase
179 public MotionController controller;
187 public Axis prime_axis;
188 public Axis main_axis;
189 public Axis driven_axis;
190 public MultiAxis jointsMultiAxis;
194 public Axis CreateAndReadyAxis(
int AxisNumber)
196 Axis axis = controller.AxisGet(AxisNumber);
203 public void InitializeAllAxes()
205 axis = controller.AxisGet(Constants.AXIS_NUMBER);
207 x_axis = controller.AxisGet(Constants.X_AXIS_NUMBER);
209 y_axis = controller.AxisGet(Constants.Y_AXIS_NUMBER);
211 z_axis = controller.AxisGet(Constants.Z_AXIS_NUMBER);
213 a_axis = controller.AxisGet(Constants.A_AXIS_NUMBER);
215 b_axis = controller.AxisGet(Constants.B_AXIS_NUMBER);
217 c_axis = controller.AxisGet(Constants.C_AXIS_NUMBER);
219 main_axis = controller.AxisGet(Constants.MAIN_AXIS_NUMBER);
221 driven_axis = controller.AxisGet(Constants.DRIVEN_AXIS_NUMBER);
223 jointsMultiAxis = controller.MultiAxisGet(Constants.AXIS_COUNT);
227 public void DisableAllAxes()
229 for (
int i = 0; i < controller.AxisCountGet(); i++)
231 Axis axis = controller.AxisGet(i);
234 axis.AmpEnableSet(
false);
239 public void ResetAxis(Axis myAxis)
241 myAxis.ErrorLimitTriggerValueSet(1000);
242 myAxis.UserUnitsSet(Constants.USER_UNITS);
243 myAxis.PositionSet(0);
245 myAxis.DefaultAccelerationSet(Constants.ACCELERATION);
246 myAxis.DefaultDecelerationSet(Constants.ACCELERATION);
247 myAxis.DefaultVelocitySet(Constants.VELOCITY);
254 public void EnableAmp(Axis myAxis)
256 myAxis.ClearFaults();
257 myAxis.AmpEnableSet(
true);
261 public void TearDownFixture()
264 controller.Shutdown();
270 public class SampleAppTestBase : TestBase
275 for (
int i = 0; i < controller.AxisCountGet(); i++)
278 Axis axis = controller.AxisGet(i);
286 public void OneTimeSetUp()
288 controller = MotionController.CreateFromSoftware(TestContext.CurrentContext.TestDirectory);
290 controller.AxisCountSet(Constants.AXIS_COUNT);
291 controller.MotionCountSet(Constants.AXIS_COUNT + 1);
297 public void TearDown()
303 public void OneTimeTearDown()
305 controller.Shutdown();
312 [Category(
"Software")]
313 public class StaticMemoryTestBase : TestBase
316 public void OneTimeSetUp()
319 controller = MotionController.CreateFromSoftware(TestContext.CurrentContext.TestDirectory);
327 controller = MotionController.CreateFromSoftware(TestContext.CurrentContext.TestDirectory);
332 public void TearDown()
340 [Category(
"Software")]
341 public class HelperFunctionsTests : SampleAppTestBase
344 public void CheckErrorsTest()
346 string expectedErrorSubstring =
"Motion: MPIStateERROR";
347 axis.ThrowExceptions(
false);
354 public void CheckErrorsWarningTest()
356 const int BAD_AXIS_NUMBER = 777;
357 Axis badAxis = controller.AxisGet(BAD_AXIS_NUMBER);
358 Assert.Throws(Is.TypeOf<Exception>().And.Message.Contains(BAD_AXIS_NUMBER.ToString()), () =>
HelperFunctions.
CheckErrors(badAxis));