MPIControlSubSampleMapObject
Declaration
typedef struct MPIControlSubSampleMapObject { int32_t subRate; /* valid values are: 1 (every sample), 2 (every other sample), 4 (every 4th sample) */ int32_t sampleStartIndex; } MPIControlSubSampleMapObject;
Required Header: mpithread.h
Change History: Added in 04.00.
Description
MPIControlSubSampleMapObject specifies the sub-sampling configuration for a single object on a motion controller.
SubRate |
sampleStartIndex |
Sample 0 |
Sample 1 |
Sample 2 |
Sample 3 |
1 |
0 |
||||
2 |
0 |
- |
- |
||
2 |
1 |
- |
- |
||
4 |
0 |
- |
- |
- |
|
4 |
1 |
- |
- |
- |
|
4 |
2 |
- |
- |
- |
|
4 |
3 |
- |
- |
- |
subRate | The sub-rate an object is evaluated at: 1 indicates an object is evaluated every sample. 2 indicates an object is evaluated every other sample. 4 indicates an object is evaluated every 4th sample. |
---|---|
sampleStartIndex | The initial sample an object is evaluated on.
When Value of subrate is 1, valid values of sampleStartIndex is 0. When Value of subrate is 2, valid values of sampleStartIndex is 0 and 1. When Value of subrate is 4, valid values of sampleStartIndex is 0, 1, 2, and 3.. |
Sample Code
/* Configure Sub-Sampling Example 2 Assume MS[2] is set up as a gantry to control axis[2] and axis[3]. MS Evaluation Matrix: --------------------- Sample: 0 1 2 3 MS 0: X X MS 1: X X MS 2: X X X X ............................. Total objects Evaluated: 2 2 2 2 (even-weighted) Axis, Motor Evaluation Matrix: ------------------------------ Sample: 0 1 2 3 Object 0: X X Object 1: X X Object 2: X X X X Object 3: X X X X ............................. Total objects Evaluated: 3 3 3 3 (even-weighted) */ void configureSubSampling2(MPIControl control) { MPIControlSubSampleMap motionMap = {{ /* subRate, sampleStartIndex */ { 2, 0 }, /* MS 0: every other sample, start on sample 0 */ { 2, 1 }, /* MS 1: every other sample, start on sample 1 */ { 1, 0 }, /* MS 2: every sample, must start on sample 0 */ }}; MPIControlSubSampleMap axisMap = {{ /* subRate, sampleStartIndex */ { 2, 0 }, /* Axis 0: every other sample, start on sample 0 */ { 2, 1 }, /* Axis 1: every other sample, start on sample 1 */ { 1, 0 }, /* Axis 2: every sample, must start on sample 0 */ { 1, 0 }, /* Axis 3: every sample, must start on sample 0 */ }}; MPIControlProcessMap processMap = { &motionMap, &axisMap /* motorMap, mechaWareMap are default initialized to NULL. This means these maps will be indentical to axisMap. */ /* motionOrder, axisOrder, motorOrder, mechaWareOrder are default initialized to NULL. This means deafult ordering applies to all objects */ }; MPIControlConfig config; MPI_RESULT returnValue; returnValue = mpiControlConfigGet(control, &config); msgCHECK(returnValue); config.processMap = processMap; returnValue = mpiControlConfigSet(control, &config); msgCHECK(returnValue); }
See Also