40using RSI.RapidCode.dotNET;
47class Compensator : StaticMemoryTestBase
51 public void Compensator1D()
62 const int POINTS = ((MAX - MIN) / DELTA) + 1;
65 double[] TABLE0 =
new double[POINTS] { 0, 1000, -5000, -10000, 10000, 5000, -5000, 2500, 0, 2500, 5000, 7500, 1000, 1250, 1000, 7500, 5000, 2500, 0, -2500, -1000 };
66 double[] TABLE1 =
new double[POINTS] { 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, 1000, -5000, -1000, 1000, 5000, -5000, 2500, 0, -1000, 0, 0 };
74 Axis moving_axis = CreateAndReadyAxis(Constants.MAIN_AXIS_NUMBER);
75 Axis follower_axis = CreateAndReadyAxis(Constants.DRIVEN_AXIS_NUMBER);
91 Assert.That(POINTS, Is.EqualTo(TABLE0.Length));
94 moving_axis.PositionSet(DELTA);
95 Assert.That(follower_axis.CompensationPositionGet(), Is.EqualTo(TABLE0[1] + TABLE1[1]));
99 public void Compensator2D()
104 const int X_MAX = 500;
105 const int X_DELTA = 100;
107 const int Y_MAX = 500;
108 const int Y_DELTA = 100;
109 const int COMPENSATOR_X_POINTS = ((X_MAX - X_MIN) / X_DELTA) + 1;
110 const int COMPENSATOR_Y_POINTS = ((Y_MAX - Y_MIN) / Y_DELTA) + 1;
111 const int POINTS = (COMPENSATOR_X_POINTS) * (COMPENSATOR_Y_POINTS);
114 double[] TABLE =
new double[POINTS] {
116 100, 200, -200, 10, 300, 0,
117 100, 200, -500, 400, 500, 0,
119 -300, 300, -300, -300, -300, 0,
129 Axis x = CreateAndReadyAxis(Constants.X_AXIS_NUMBER);
130 Axis y = CreateAndReadyAxis(Constants.Y_AXIS_NUMBER);
131 Axis z = CreateAndReadyAxis(Constants.Z_AXIS_NUMBER);
133 z.ErrorLimitTriggerValueSet(1);
136 controller.
CompensatorConfigSet(Constants.COMP_NUM_ZERO, x,
RSIAxisMasterType.RSIAxisMasterTypeAXIS_ACTUAL_POSITION, X_MIN, X_MAX, X_DELTA, y,
RSIAxisMasterType.RSIAxisMasterTypeAXIS_ACTUAL_POSITION, Y_MIN, Y_MAX, Y_DELTA, z,
RSICompensatorOutputType.RSICompensatorOutputTypeSINGLE, TABLE);
143 Assert.That(z.CompensationPositionGet(), Is.EqualTo(TABLE[0]));
145 x.PositionSet(X_DELTA);
146 y.PositionSet(Y_DELTA);
147 Assert.That(z.CompensationPositionGet(), Is.EqualTo(TABLE[7]));
149 x.PositionSet(X_DELTA * 2);
150 y.PositionSet(Y_DELTA * 2);
151 Assert.That(z.CompensationPositionGet(), Is.EqualTo(TABLE[14]));
155 public void CompensatorSingleAxis()
157 Console.WriteLine(
"Start SompensatorSingleAxis");
163 const int DELTA = 10;
164 const int POINTS = ((MAX - MIN) / DELTA) + 1;
167 double[] TABLE =
new double[POINTS] { 0, 2, -3, -5, -3, 2, -3, 0, 2, -3, -5, -3, 2, -3, 0, 2, -3, -5, -3, 2, -3 };
175 Axis axis = CreateAndReadyAxis(Constants.AXIS_NUMBER);
182 axis.MoveSCurve(DELTA * 2);
183 axis.MotionDoneWait();
191 Assert.That(POINTS, Is.EqualTo(TABLE.Length));
192 Assert.That(axis.CompensationPositionGet(), Is.EqualTo(TABLE[1]));
194 Console.WriteLine(
"End SompensatorSingleAxis");
int32_t CompensatorPointCountGet(int32_t compensatorNumber)
Get the number of points for use with a Compensator.
void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount)
Set the number of points for use with a Compensator.
void SampleWait(uint32_t samples)
Wait for controller firmware to execute samples.
void CompensatorCountSet(int32_t compensatorCount)
Set the number of Compensators available in the firmware.
void CompensatorConfigSet(int32_t compensatorNumber, int32_t firstInputAxisNumber, RSIAxisMasterType firstInputAxisType, double firstInputAxisMinimum, double firstInputAxisMaximum, double firstInputAxisDelta, int32_t secondInputAxisNumber, RSIAxisMasterType secondInputAxisType, double secondInputAxisMinimum, double secondInputAxisMaximum, double secondInputAxisDelta, int32_t outputAxisNumber, RSICompensatorOutputType outputType, const double *const table)
Configure a 2D compensator.
void AxisCountSet(int32_t axisCount)
Set the number of allocated and processed axes in the controller.
RSICompensatorOutputType
Compensator output types.
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.