16# if !defined(__INTIME__)
17# define HAS_CARTESIAN_ROBOT 1
21# define RSI_API __declspec(dllexport)
23# define RSI_API __declspec(dllimport)
26#elif defined(__linux__)
27# define HAS_CARTESIAN_ROBOT 1
29# define RSI_API __attribute__ ((visibility ("default")))
34#define PURE_VIRTUAL = 0
45 template<
typename Type>
48#if defined(__cplusplus)
58class RapidCodeNetworkNode;
63class StaticInstanceMediator
69 bool IsValid() {
return isValid; }
71 void OnDelete() { isValid =
false; }
73 void OnCreate() { isValid =
true; }
110class RsiError :
public std::exception
157#elif defined(__linux__)
173 virtual const char*
what() const noexcept {
return text; }
341 virtual
void Trace(
bool state) PURE_VIRTUAL;
517 virtual void Sleep(int32_t milliseconds) PURE_VIRTUAL;
537 virtual int32_t
KeyGet(int32_t milliseconds) PURE_VIRTUAL;
803 StaticInstanceMediator* _mediator;
940#elif defined(__linux__)
978#if defined(_WIN32) && defined(__linux__)
979 static_assert(
false,
"_WIN32 and __linux__ defined. Double check preprocessor definitions");
980#elif !defined(_WIN32) && !defined(__linux__) && !defined(DOXYGEN)
981 static_assert(
false,
"Neither _WIN32 nor __linux__ are defined AND this is not a documentation build. Double check preprocessor definitions");
983#if defined(_WIN32) || defined(DOXYGEN)
998#if defined(__linux__) || defined(DOXYGEN)
1048 static MotionController*
Get();
1055 static MotionController*
Get(int32_t controllerIndex);
1221 virtual IO*
IOGet(int32_t nodeNumber) PURE_VIRTUAL;
1521 virtual
void AxisCountSet(int32_t axisCount,
bool setMotorFilterSupervisor) PURE_VIRTUAL;
1790 virtual
void MemoryBlockGet(uint64_t address,
void* dataStart, int32_t size) PURE_VIRTUAL;
1806 virtual
void MemorySet(uint64_t address, int32_t data) PURE_VIRTUAL;
1853 virtual
void MemoryBlockSet(uint64_t address, const
void* const dataStart, int32_t size) PURE_VIRTUAL;
3254 virtual
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) PURE_VIRTUAL;
3285 virtual
void CompensatorConfigSet(int32_t compensatorNumber,
Axis* firstInputAxis,
RSIAxisMasterType firstInputAxisType,
double firstInputAxisMinimum,
double firstInputAxisMaximum,
double firstInputAxisDelta,
Axis* secondInputAxis,
RSIAxisMasterType secondInputAxisType,
double secondInputAxisMinimum,
double secondInputAxisMaximum,
double secondInputAxisDelta,
Axis* outputAxis,
RSICompensatorOutputType outputType, const
double* const table) PURE_VIRTUAL;
3603 virtual
void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr,
bool enabled) PURE_VIRTUAL;
3607 virtual
void UserLimitOutputSet(int32_t number, int32_t valueSet, uint64_t outputPtr,
bool enabled) PURE_VIRTUAL;
3611 virtual
void UserLimitOutputSet(int32_t number, uint64_t andMask, uint64_t orMask, uint64_t outputPtr,
bool enabled) PURE_VIRTUAL;
3615 virtual
void UserLimitOutputSet(int32_t number,
double limitValueDouble, uint64_t outputPtr,
bool enabled) PURE_VIRTUAL;
3958 virtual
void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
4147 virtual int32_t
ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4166 virtual const
char* const
ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4193 virtual
void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue) PURE_VIRTUAL;
4200 virtual
void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4213 virtual
void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const
char* const stringValue) PURE_VIRTUAL;
4222 virtual
void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, const
char* const stringValue, uint32_t timeoutMilliseconds) PURE_VIRTUAL;
4648 virtual
void Map() PURE_VIRTUAL;
5612 virtual
void MovePT(
RSIMotionType type, const
double* const position, const
double* const time, int32_t pointCount, int32_t emptyCount,
bool retain,
bool final) PURE_VIRTUAL;
5651 virtual
void MovePVT(const
double* const position, const
double* const velocity, const
double* const time, int32_t pointCount, int32_t emptyCount,
bool retain,
bool final) PURE_VIRTUAL;
5682 virtual
void MovePVAJT(const
double* const position, const
double* const velocity, const
double* const acceleration, const
double* const jerk, const
double* const time, int32_t pointCount, int32_t emptyCount,
bool retain,
bool final) PURE_VIRTUAL;
5720 virtual
void MovePTF(const
double* const position, const
double* const time, const
double* const feedforward, int32_t pointCount, int32_t emptyCount,
bool retain,
bool final) PURE_VIRTUAL;
5762 virtual
void MovePVTF(const
double* const position, const
double* const velocity, const
double* const time, const
double* const feedforward, int32_t pointCount, int32_t emptyCount,
bool retain,
bool final) PURE_VIRTUAL;
5791 virtual
void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address, int32_t ptPointIndex) PURE_VIRTUAL;
5866 friend class MotionController;
5867 friend class MultiAxis;
5940 virtual void MoveTrapezoidal(
double position,
double vel,
double accel,
double decel) PURE_VIRTUAL;
5963 virtual void MoveTrapezoidal(
double position,
double vel,
double accel,
double decel,
double finalVel) PURE_VIRTUAL;
5997 virtual void MoveSCurve(
double position,
double vel,
double accel,
double decel,
double jerkPct) PURE_VIRTUAL;
6013 virtual void MoveSCurve(
double position,
double vel,
double accel,
double decel,
double jerkPct,
double finalVel) PURE_VIRTUAL;
6136 virtual void MoveRelative(
double relativePosition,
double vel,
double accel,
double decel,
double jerkPct) PURE_VIRTUAL;
6151 virtual void MoveRelative(
double relativePosition,
double vel,
double accel,
double decel,
double jerkPct,
double finalVel) PURE_VIRTUAL;
6616 virtual
void Home(
bool moveToZero) PURE_VIRTUAL;
9652 virtual
void GearingEnable(int32_t masterAxisNumber,
RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9677 virtual
void GearingRatioChange(int32_t numerator, int32_t denominator) PURE_VIRTUAL;
9856 virtual
void MoveCamLinear(int32_t masterAxisNumber,
RSIAxisMasterType masterFeedbackSource, const
double* const masterDistances, const
double* const slavePositions, int32_t pointCount) PURE_VIRTUAL;
9887 virtual
void MoveCamCubic(int32_t masterAxisNumber,
RSIAxisMasterType masterFeedbackSource, const
double* const masterDistances, const
double* const slavePositions, const
double* const gearRatios, int32_t pointCount) PURE_VIRTUAL;
10306 virtual
void PostFilterSingleOrderSet(int32_t sectionNumber,
double aOne,
double bZero,
double bOne) PURE_VIRTUAL;
10342 virtual
void PostFilterNotchSet(int32_t sectionNumber,
double centerFreq,
double bandwidth) PURE_VIRTUAL;
10362 virtual
void PostFilterResonatorSet(int32_t sectionNumber,
double centerFreq,
double bandwidth,
double gain) PURE_VIRTUAL;
10382 virtual
void PostFilterLeadLagSet(int32_t sectionNumber,
double lowGain,
double highGain,
double centerFreq) PURE_VIRTUAL;
10421 virtual
void PostFilterBiquadSet(int32_t sectionNumber,
double aOne,
double aTwo,
double bZero,
double bOne,
double bTwo) PURE_VIRTUAL;
10452 virtual const
char* const
UserLabelGet() PURE_VIRTUAL;
10474 virtual
void UserLabelSet(const
char* const userLabel) PURE_VIRTUAL;
11265 virtual
void PathArcAdd(const
double* const center,
double angle) PURE_VIRTUAL;
11326 virtual
void MoveTrapezoidal(const
double* const position, const
double* const vel, const
double* const accel, const
double* const decel) PURE_VIRTUAL;
11361 virtual
void MoveSCurve(const
double* const position, const
double* const vel, const
double* const accel, const
double* const decel, const
double* const jerkPct) PURE_VIRTUAL;
11379 virtual
void MoveSCurve(const
double* const position, const
double* const vel, const
double* const accel, const
double* const decel, const
double* const jerkPct, const
double* const finalVel) PURE_VIRTUAL;
11395 virtual
void MoveVelocity(const
double* const velocity, const
double* const accel) PURE_VIRTUAL;
11423 virtual
void MoveRelative(const
double* const relativePosition, const
double* const vel, const
double* const accel, const
double* const decel, const
double* const jerkPct) PURE_VIRTUAL;
11441 virtual
void MoveRelative(const
double* const relativePosition, const
double* const vel, const
double* const accel, const
double* const decel, const
double* const jerkPct, const
double* const finalVel) PURE_VIRTUAL;
11459 virtual
void MoveVelocitySCurve(const
double* const velocity, const
double* const accel, const
double* const jerkPct) PURE_VIRTUAL;
11799 virtual
void Set(
bool state) PURE_VIRTUAL;
12045 friend class MotionController;
12310 virtual
void AnalogOutSet(int32_t analogChannel, int32_t analogValue) PURE_VIRTUAL;
12333#if defined(__cplusplus)
12337template<
typename ContainerClass>
12338class RSI_API RapidVectorIterator
12342 typedef typename ContainerClass::ValueType ValueType;
12345 typedef typename ContainerClass::PointerType PointerType;
12349 ValueType& operator*();
12353 const ValueType& operator*()
const;
12357 RapidVectorIterator& operator++();
12361 RapidVectorIterator operator++(
int);
12365 bool operator==(
const RapidVectorIterator&)
const;
12369 bool operator!=(
const RapidVectorIterator&)
const;
12372 RapidVectorIterator(PointerType pointerArgument, PointerType startArgument,
const size_t containerSize);
12375 RapidVectorIterator(
const RapidVectorIterator&) =
default;
12378 RapidVectorIterator& operator=(
const RapidVectorIterator&) =
default;
12381 RapidVectorIterator(RapidVectorIterator&&)
noexcept =
default;
12384 RapidVectorIterator& operator=(RapidVectorIterator&&)
noexcept =
default;
12386 PointerType pointer;
12387 PointerType start, end;
12388 void VerifyPointer()
const;
12392template<
typename Type>
12393class RapidVectorImplementation;
12410template<
typename Type>
12415 RapidVectorImplementation<Type>* pImpl;
12430 Type&
At(
const size_t index);
12435 const Type&
At(
const size_t index)
const;
12479#if defined(SWIG) && defined(__linux__)
12483#elif defined(_WIN32)
12484 template<
typename =
typename std::enable_if_t<std::is_default_constructible_v<Type>>>
12487 template<typename UType = Type, typename Enable = typename std::enable_if<std::is_default_constructible<UType>::value>::type>
12509 typedef Type* PointerType;
12510 typedef Type ValueType;
uint32_t NetworkIndexGet(RSINetworkIndexType indexType)
Get the PDO array index for an axis signal mapping.
void FilterCoeffSet(RSIFilterGainPIDCoeff coeff, int32_t gainTable, double coeffValue)
Set a filter coefficient (ex: Kp, Ki, Kd).
void HardwareNegLimitActionSet(RSIAction action)
Set the action that will occur when the Hardware Negative Limit Event triggers.
void ErrorLimitDurationSet(double seconds)
Sets the duration required before the Position Error Limit event triggers.
double PositionErrorGet()
Get the current position error.
void HomeTravelDistanceSet(RSIHomeStage stage, double distanceToTravel)
Set the max travel used in a specific Homing Stage.
bool HomeLimitGet()
Get the current state of the Home limit.
uint64_t AddressGet(RSIAxisAddressType addressType)
Get the an address for some location on the Axis.
RSIMotorFeedbackFault EncoderFaultTriggerGet()
Get the encoders which are used to generate encoder faults.
RSIAction AmpFaultActionGet()
Get the Amp Fault action.
int32_t FrameBufferSizeGet()
double SettlingTimeGet()
Get the Settling time.
void TriggeredModifyDecelerationSet(double decel)
Set the deceleration rate for an Triggered Modify Event.
void HomeSlowVelocitySet(double velocity)
Set the slow home velocity.
double CommandPositionGet()
Get the current command position.
double BrakeApplyDelayGet()
Get the delay time for the brake to be applied.
uint32_t DigitalOutputsGet()
Get all 32 digital output bits at once for this axis.
void HardwareNegLimitDurationSet(double seconds)
Set the duration required before the Hardware Negative Limit event triggers.
RSIMotorStepperPulseType StepperMotorPulseTypeGet(RSIMotorStepperPulse pulse)
Determine how the stepper pulse outputs are configured.
void MoveSCurve(double position)
MoveSCurve with the Axis defaults trajectory values from DefaultVelocitySet, DefaultAccelerationSet,...
bool DigitalIoExists(RSIMotorGeneralIo motorGeneralIoNumber)
Determine if a particular General I/O bit exists for a motor.
void SoftwarePosLimitTriggerValueSet(double triggerValue)
Set the Software Positive Position limit.
double AnalogInGet(int32_t channel)
Get the value of an analog input.
RSIAxisMasterType GearingSourceGet()
Get the Source used to slave to the Master Axis.
void CommandPositionSet(double position)
Sets the value of the command and actual positions of an axis.
void HardwarePosLimitActionSet(RSIAction action)
Set the action that will occur when the Hardware Positive Limit Event triggers.
const char *const DigitalIoNameGet(RSIMotorGeneralIo motorGeneralIoNumber)
Get the name of a Motor I/O bit.
RSIAction HomeBehaviorGet()
Get the Action used during Master based Homing.
void FeedbackPointerSet(RSIAxisPositionInput input, uint64_t address)
Configure an axis for dual loop feedback.
RSIMotorType MotorTypeGet()
Get the motor type.
void AmpDisableActionSet(RSIMotorDisableAction action)
Set the Amp Disable action.
double SoftwareNegLimitTriggerValueGet()
Get the Software Negative Position limit.
void PositionToleranceCoarseSet(double tolerance)
Set the Coarse Position Tolerance for Axis settling.
void OriginPositionSet(double position)
Set the origin position.
double UserUnitsGet()
Get the number of counts per User Unit.
void BacklashRateSet(double rate)
Sets the rate at which Backlash is applied.
bool AmpEnableGet()
Get the state of the Amp Enable Output.
void SettleOnStopSet(bool state)
Set the Stop Event settling configuration.
int32_t DriveIndexGet()
Get the drive index, relative to the Network Node (multi-axis drives).
void HomeBehaviorSet(RSIAction behavior)
Set the Action used for Master based homing.
bool HomeSwitchGet()
Get the current state of the Home switch input.
void MoveRelative(double relativePosition)
double PositionToleranceFineGet()
Get the Fine Position Tolerance for axis settling.
double EncoderFaultDurationGet()
Get the duration required before the Encoder Fault Limit event triggers.
bool SettleOnEStopCmdEqActGet()
Get the E-Stop Event settling configuration when E-Stop is configured for (Command = Actual).
double HomeAccelerationGet()
Get the deceleration used for homing.
RSIMotorIoTypeMask DigitalIoValidTypesMaskGet(RSIMotorGeneralIo motorGeneralIoNumber)
Get the type mask for a Motor I/O bit.
RSIAction HardwarePosLimitActionGet()
Get the action that will occur when the Hardware Positive Limit Event triggers.
int32_t FilterGainTableSizeGet()
Gets the size of gain tables.
void OperationModeSet(RSIOperationMode mode)
Set the axis operation mode.
void CommandPositionDirectSet(double position)
directly sets the value of the command position of an axis
RSIHomeMethod HomeMethodGet()
Get the method to be used for homing.
int32_t MotorFaultMaskGet()
Get the Motor Fault Mask.
void MoveCamLinear(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double *const masterDistances, const double *const slavePositions, int32_t pointCount)
Enable this Axis to be linear follower (slave) using an electronic cam.
void BrakeModeSet(RSIMotorBrakeMode mode)
Set the brake mode.
void HomeVelocitySet(double velocity)
Set the home velocity.
bool DigitalInGet(RSIMotorGeneralIo motorGeneralIoNumber)
Read a digital input.
double CompensationPositionGet()
Get the compensator position.
double TriggeredModifyDecelerationGet()
Get the deceleration rate for an Triggered Modify Event.
void BacklashHysteresisLimitSet(double hysteresisLimit)
Brief.
void MoveVelocitySCurve(double velocity, double accel, double jerkPct)
Command a constant velocity move (jog) with non-constant acceleration.
void FilterAlgorithmSet(RSIFilterAlgorithm algorithm)
Set the algorithm type for an axis.
int32_t HomeLimitCustomConfigBitIndexGet()
double HomeVelocityGet()
Get the home velocity.
void HardwarePosLimitTriggerStateSet(bool state)
sets the trigger state.
const char *const UserLabelGet()
Get the axis User defined Label.
void PostTrajectoryGearingMasterAxisSet(int32_t masterAxisNumber)
Set the master axis for post-trajectory gearing.
NetworkNode * NetworkNode
Gets the associated NetworkNode object.
int32_t FilterGainTableGet()
Gets which gain table is currently in use by the axis.
void SoftwareNegLimitActionSet(RSIAction action)
Set the action that will occur when the Software Negative Limit Event triggers.
double BacklashHysteresisLimitGet()
Get the backlash hysteresis limit.
double ActualVelocityGet()
Get the current actual velocity.
bool PositiveLimitGet()
Get the state of the Hardware Positive Limit input.
void PostFilterHighPassSet(int32_t sectionNumber, double cornerFreq)
Use a High Pass Post Filter.
void UserUnitsSet(double countsPerUserUnit)
Sets the number of counts per User Unit.
double OriginPositionGet()
Get the origin position.
void EStopJerkPercentSet(double jerkPct)
Set the jerk percent for an E-Stop, Modify Event.
void AmpFaultActionSet(RSIAction action)
Set the Amp Fault action.
void EncoderFaultActionSet(RSIAction action)
Set the action that will occur when the Encoder Fault Limit Event triggers.
void UserLabelSet(const char *const userLabel)
Set the axis User defined Label.
void AmpFaultTriggerStateSet(bool state)
Set the trigger state of the Amp Fault input.
void FilterGainTableSet(int32_t gainTable)
Set the gain table to be used by an axis.
void DigitalOutSet(RSIMotorGeneralIo motorGeneralIoNumber, bool outValue)
Set a digital output bit.
void MoveTrapezoidal(double position)
Point-to-point trapezoidal move.
void HomeActionSet(RSIAction action)
Set the action that will occur when the Home Event triggers.
bool DedicatedOutExists(RSIMotorDedicatedOut motorDedicatedOutNumber)
Determine if a particular Dedicated output bit exists for a motor.
void ErrorLimitTriggerValueSet(double triggerValue)
Set the Position Error Limit trigger value.
bool StepperMotorLoopbackGet()
Determine if the stepper is open or closed loop.
void BrakeApplyDelaySet(double seconds)
Set the brake apply delay.
void MotionCamRepeatFromSet(int32_t repeatFrom)
Set the segment at which camming repeats.
RSIAction HomeActionGet()
Get the action that will occur when the Home LIMIT triggers.
void PostFilterBiquadSet(int32_t sectionNumber, double aOne, double aTwo, double bZero, double bOne, double bTwo)
Use a Digital Biquad Post Filter.
void PositionToleranceFineSet(double tolerance)
Set the Fine Position Tolerance for Axis settling.
void DigitalIoTypeSet(RSIMotorGeneralIo motorGeneralIoNumber, RSIMotorIoType type)
Set the type for a Motor I/O bit.
void HomeTriggerStateSet(bool state)
Set the trigger state for the Home input.
uint32_t DedicatedOutputsGet()
Get all 32 dedicated output bits at once for this axis.
void EncoderRatioSet(RSIMotorFeedback encoder, int32_t numerator, int32_t denominator)
Sets the ratio to scale Encoder counts.
void ErrorLimitActionSet(RSIAction action)
Set the action that will occur when the Error Limit Event triggers.
void GearingRatioChange(int32_t numerator, int32_t denominator)
Change the electronic gearing ratio.
bool DigitalOutGet(RSIMotorGeneralIo motorGeneralIoNumber)
Get the state of digital output bit.
RSIHomeStage HomeStageGet()
Get the current Homing Stage.
static constexpr double AmpEnableAmpFaultTimeoutSecondsDefault
Default time an Axis waits before generating an AmpFault if the Axis does not enable after calling Am...
RSIMotorDisableAction AmpDisableActionGet()
Get the Amp Disable action.
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct, double finalVel)
void MoveVelocity(double velocity)
double TargetPositionGet()
Get the target position.
void Home()
Execute the homing routine.
double BacklashRateGet()
Gets the Backlash Rate which was set by the user.
double AmpFaultDurationGet()
Get the duration required before the Amp Fault event triggers.
double FilterCoeffGet(RSIFilterGainPIDCoeff coeff, int32_t gainTable)
Get value for a filter coefficient (ex: Kp, Ki, Kd, etc).
double HardwareNegLimitDurationGet()
Get the duration required before the Hardware Negative Limit event triggers.
bool HardwarePosLimitTriggerStateGet()
trigger state return.
bool SettleOnStopGet()
Get the Stop Event settling configuration.
double SoftwarePosLimitTriggerValueGet()
Get the Software Positive Position limit.
void EncoderFaultDurationSet(double seconds)
Set the duration required before the Encoder Fault Limit event triggers.
double ErrorLimitTriggerValueGet()
Get the Position Error Limit trigger value.
void HomeDecelerationSet(double decel)
Set the decleration to be used for homing when using the switch is not detected before the HomeTravel...
void PostFilterLowPassSet(int32_t sectionNumber, double frequency)
Use a Low-Pass filter.
RSIAction SoftwareNegLimitActionGet()
Get the action that will occur when the Software Negative Limit Event triggers.
void HomeCancelSet(bool cancel)
Cancel Homing.
void PostTrajectoryGearingMultiplierSet(double multiplier)
Set the multiplier for post-trajectory gearing.
void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct, double finalVel)
double EStopJerkPercentGet()
Get the jerk percent for an E-Stop, Modify Event.
double HomeDecelerationGet()
Get the decleration to be used for homing when using the switch is not detected before the HomeTravel...
int32_t PostTrajectoryGearingMasterAxisGet()
Get the master axis number used for post-trajectory gearing.
void TriggeredModifyJerkPercentSet(double jerkPct)
Set the jerk percent for an Triggered Modify Event.
double CommandAccelGet()
Get the current commanded acceleration.
void PostFilterSingleOrderSet(int32_t sectionNumber, double aOne, double bZero, double bOne)
Use a Single Order Post Filter.
void PostFilterLeadLagSet(int32_t sectionNumber, double lowGain, double highGain, double centerFreq)
Use a Lead Lag Post Filter.
void HardwarePosLimitDurationSet(double seconds)
Set the duration required before the Hardware Positive Limit event triggers.
void HomeStateSet(bool homed)
Set the home state.
bool DedicatedInExists(RSIMotorDedicatedIn motorDedicatedInNumber)
Determine if a particular Dedicated input bit exists for a motor.
void BacklashWidthSet(double width)
Sets the total range of the give in a system with Backlash.
double BacklashWidthGet()
Gets the Backlash Width which was set by the user.
RSIOperationMode OperationModeGet()
Get the operation mode.
void MotionCamMasterStartSet(Axis *master, double startPosition)
Set the position at which camming starts.
void FilterDualLoopSet(Axis *velocityAxis, RSIMotorFeedback velocityEncoder, bool enable)
Configure an axis for dual loop feedback.
void MoveTrapezoidal(double position, double vel, double accel, double decel, double finalVel)
Point-to-point trapezoidal move.
bool SettleOnEStopGet()
Get the E-Stop Event settling configuration.
uint16_t MotionIdExecutingGet()
RSIAction EncoderFaultActionGet()
Get the action that will occur when the Encoder Fault Limit Event triggers.
void EncoderFaultTriggerSet(RSIMotorFeedbackFault encoder)
Set the encoders which are used to generate encoder faults.
void MoveTrapezoidal(double position, double vel, double accel, double decel)
Point-to-point trapezoidal move.
RSIFilterAlgorithm FilterAlgorithmGet()
Get the control algorithm type for an axis.
double CommandVelocityGet()
Get the current commanded velocity.
int32_t FramesToExecuteGet()
bool HomeTriggerStateGet()
Get the trigger state for the Home input.
uint64_t GearingMasterAddressGet()
Get the address of the gearing master.
void HomeAccelerationSet(double accel)
Set the deceleration used for homing.
RSIDataType AddressDataTypeGet(RSIAxisAddressType type)
Get the data type for an address the Axis.
void StepperMotorPulseTypeSet(RSIMotorStepperPulse pulse, RSIMotorStepperPulseType type)
Set how the stepper pulse outputs are configured.
void VelocityToleranceSet(double tolerance)
Set the Velocity Tolerance used for settling.
void EncoderCountSet(int32_t count)
void StepperMotorLoopbackSet(bool loopback)
Configure the stepper to be open or closed loop.
void CompensationPositionSet(double position)
Set the compensator position.
double BacklashValueGet()
Gets the current backlash compensation value.
double PostTrajectoryGearingScaledOffsetGet()
Get the current scaled position offset from post-trajectory gearing.
double PositionToleranceCoarseGet()
Get the Coarse Position Tolerance for axis settling.
double EStopDecelerationGet()
Get the deceleration rate for an E-Stop, Modify Event.
bool AmpFaultTriggerStateGet()
Get the Amp Fault trigger state.
double EncoderPositionGet(RSIMotorFeedback encoder)
Get the raw encoder position.
void MotorFaultMaskSet(int32_t faultMask)
Set the Motor Fault Mask.
double VelocityToleranceGet()
Get the velocity tolerance used for settling.
void HomeDurationSet(double seconds)
Set the duration required before the Home event triggers.
void HomeMethodSet(RSIHomeMethod method)
Set the method to be used for homing.
void EStopDecelerationSet(double decel)
Set the deceleration rate for an E-Stop, Modify Event.
double TriggeredModifyJerkPercentGet()
Get the jerk percent for an Triggered Modify Event.
void MoveCamCubic(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, const double *const masterDistances, const double *const slavePositions, const double *const gearRatios, int32_t pointCount)
Enable this Axis to be cubic follower (slave) using an electronic cam.
void PostFilterClear(int32_t sectionNumber)
Remove any Post Filters in section Number.
double HomeDurationGet()
Get the duration required before the Home event triggers.
double HomeJerkPercentGet()
Get the Jerk Percent used for homing.
bool NegativeLimitGet()
Get the state of the Hardware Negative Limit input.
bool HomeStateGet()
Get the home state.
void SettleOnEStopSet(bool state)
Set the E-Stop Event settling configuration.
void MotorTypeSet(RSIMotorType type)
Set the motor type.
void SoftwareNegLimitTriggerValueSet(double triggerValue)
Set the Software Negative Position limit.
void GearingDisable()
Disable the electronic gearing.
void HomeLimitCustomConfigSet(uint64_t address, int32_t bitIndex)
void PositionSet(double position)
Set the Command and Actual positions.
double BrakeReleaseDelayGet()
Get the brake release delay time.
uint32_t DedicatedInputsGet()
Get all 32 dedicated input bits at once for this axis.
bool AmpFaultGet()
Get the current state of the Amp Fault input.
void NetworkIndexSet(RSINetworkIndexType indexType, uint32_t newIndex)
Override the PDO array index for an axis signal mapping.
int32_t GearingMasterAxisNumberGet()
Get a Slave's Master Axis Number.
void MoveRelative(double relativePosition, double vel, double accel, double decel, double jerkPct)
Command a relative point-to-point S-Curve motion.
bool DedicatedInGet(RSIMotorDedicatedIn motorDedicatedInNumber)
Read a digital input.
RSIMotorBrakeMode BrakeModeGet()
Get the brake mode.
bool HardwareNegLimitTriggerStateGet()
Trigger state return.
void PostFilterNotchSet(int32_t sectionNumber, double centerFreq, double bandwidth)
Use a Notch Post Filter.
double ActualPositionGet()
Get the current actual position.
uint16_t MotionElementIdExecutingGet()
void FrameBufferSizeSet(int32_t frameSize)
void FilterLowPassSet(double frequency)
Use a Low-Pass filter.
double MotionCamMasterStartGet(Axis *master)
Gets the position on the master that will start the cam when exceeded.
RSIAction ErrorLimitActionGet()
Get the action that will occur when the Position Error Limit Event triggers.
void GearingEnable(int32_t masterAxisNumber, RSIAxisMasterType masterFeedbackSource, int32_t numerator, int32_t denominator)
Enable this Axis to be follower (slave) using electronic gearing.
void HomeOffsetSet(double offset)
Sets the user coordinate value assigned to the detected homing reference point.
double HardwarePosLimitDurationGet()
Get the duration required before the Hardware Positive Limit event triggers.
void AmpFaultDurationSet(double seconds)
Set the duration required before the Amp Fault event triggers.
double HomeSlowVelocityGet()
Get the slow home velocity.
void HomeJerkPercentSet(double percent)
Set the Jerk Percent used for homing.
RSIAction SoftwarePosLimitActionGet()
Get the action that will occur when the Software Positive Limit Event triggers.
void PostFilterUnityGainSet(int32_t sectionNumber)
Use a Unity Gain Post Filter.
double HomeOffsetGet()
Get the home offset.
void MotionCamRepeatStop()
Stops a Repeating Cam.
double ErrorLimitDurationGet()
Get the duration required before the Position Error Limit event triggers.
double PostTrajectoryGearingMultiplierGet()
Get the multiplier for post-trajectory gearing.
void PostTrajectoryGearingEnableSet(bool enable)
Enable or disable post-trajectory gearing for this axis.
void MoveVelocity(double velocity, double accel)
Command a constant velocity move (jog).
void ActualPositionSet(double position)
Set the actual position.
void PostFilterResonatorSet(int32_t sectionNumber, double centerFreq, double bandwidth, double gain)
Use a Resonator Post Filter.
bool DedicatedOutGet(RSIMotorDedicatedOut motorDedicatedOutNumber)
Get the state of dedicated output bit.
bool PostTrajectoryGearingEnableGet()
Get the enable state of post-trajectory gearing.
double FilterLowPassGet()
Get the value of the Low-Pass filter.
RSIAction HardwareNegLimitActionGet()
Get the action that will occur when the Hardware Negative Limit Event triggers.
void SettleOnEStopCmdEqActSet(bool state)
Set the settling configuration for E-Stop events (when configured for Command = Actual).
void BrakeReleaseDelaySet(double seconds)
Set the Brake Release Delay.
void HardwareNegLimitTriggerStateSet(bool state)
Sets the trigger state.
uint32_t DigitalInputsGet()
Get all 32 digital input bits at once for this axis.
int32_t MotionCamRepeatFromGet()
Get the segment at which camming repeats.
void SettlingTimeSet(double time)
Set the settling time.
void MoveSCurve(double position, double vel, double accel, double decel, double jerkPct)
void SoftwarePosLimitActionSet(RSIAction action)
Set the action that will occur when the Software Positive Limit Event triggers.
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 EncoderRatioPrimarySet(char *numeratorCommaDenominator)
Set the primary feedback encoder ratio as text. "1.0 ,2.0".
bool LimitTriggerStateGet(RSIEventType limit)
Get the trigger state for any type of limit.
void NodeFailureActionSet(RSIAction action)
Set the action for a node failure.
double DefaultDecelerationGet()
Get the default deceleration in UserUnits.
uint64_t HomeLimitCustomConfigAddressGet()
Get the host address of the custom home input configuration.
static constexpr uint32_t NetworkIndexInvalid
Returned by NetworkIndexGet() when the index is invalid or nonexistent for this Axis.
void EncoderRatioSecondarySet(char *numeratorCommaDenominator)
Set the secondary feedback encoder ratio as text. "1.0 ,2.0".
double CommandJerkGet()
Get the current commanded jerk value (custom firmware required).
double FilterOutputGet(void)
Get the output of a demand filter, range is +/- 100.0.
void EncoderPointerSet(RSIMotorFeedback encoder, uint64_t address)
Set the pointer (host address) for the motor feedback.
void DefaultAccelerationSet(double acceleration)
Set the default acceleration in UserUnits.
bool IsTuneable()
Is an Axis tunable? Returns false if Axis is in position mode, otherwise true.
double DefaultPosition2Get()
Get the default Position 2 value in UserUnits (used by RapidSetup).
void LimitTriggerStateSet(RSIEventType limit, bool triggerState)
Set the trigger state for any type of limit.
double DefaultJerkPercentGet()
Get the default jerk percent.
double DefaultAccelerationGet()
Get the default acceleration in UserUnits.
const char *const EncoderRatioSecondaryGet()
Get the secondary feedback encoder ratio as text.
double DefaultVelocityGet()
Get the default velocity in UserUnits.
int32_t GearingDenominatorGet()
Get the denominator of the gearing ratio.
void FilterGainSchedulingSet(bool enable)
Enable or disable automatic gain scheduling.
double UserUnitsToCounts(double userUnits)
Convert from UserUnits to raw feedback counts.
const char *const PostFilterInfoGet()
Get a text description of the current post filters.
void GantryTypeSet(RSIAxisGantryType type)
Set the gantry type.
uint16_t StatusWordGet()
Get the DS402 status word.
double LimitTriggerValueGet(RSIEventType limit)
Get the trigger value for any type of limit.
double DefaultPosition1Get()
Get the default Position 1 value in UserUnits (used by RapidSetup).
int32_t ClosedLoopStepperVersionGet()
Unsupported.
int32_t GearingNumeratorGet()
Get the numerator of the gearing ratio.
uint64_t EncoderPointerGet(RSIMotorFeedback encoder)
Get the pointer (host address) for the motor feedback.
const char *const EncoderRatioPrimaryGet()
Get the primary feedback encoder ratio as text.
double LimitDurationGet(RSIEventType limit)
Get the duration for any type of limit.
void MotionFinalVelocitySet(double finalVelocity)
Set the final velocity of a motion, when FINAL_VEL motion attribute is used.
uint64_t FeedbackDeltaPointerGet(RSIAxisPositionInput input)
Get the pointer (host address) for the axis feedback.
bool FaultMaskBitGet(RSIMotorFaultMask bitMask)
Unsupported Function. Likely to be removed in the future.
void HomeLimitCustomConfigReset()
Remove any custom home input configuration and reset to use the Axis' dedicated home input bit.
void DefaultPosition1Set(double position1)
Set the default Position 1 value in UserUnits (used by RapidSetup).
void DefaultDecelerationSet(double deceleration)
Set the default deceleration in UserUnits.
double DefaultRelativeIncrementGet()
Get the default relative increment value in UserUnits (used by RapidSetup).
int32_t EncoderRatioDenominatorGet(RSIMotorFeedback encoder)
Get the encoder ration denominator.
void DefaultRelativeIncrementSet(double relativeIncrement)
Set the default relative value in UserUnits (used by RapidSetup).
double CountsToUserUnits(double counts)
Convert from raw feedback counts to UserUnits.
void DefaultPosition2Set(double position2)
Set the default Position 2 value in UserUnits (used by RapidSetup).
int32_t EncoderRatioNumeratorGet(RSIMotorFeedback encoder)
Get the encoder ratio numerator.
void ClosedLoopStepperSet(bool enable)
Unsupported.
RSIAction LimitActionGet(RSIEventType limit)
Get the action for any type of limit.
void LimitDurationSet(RSIEventType limit, double seconds)
Set the duration for any type of limit.
void FeedbackDeltaPointerSet(RSIAxisPositionInput input, uint64_t address)
Set the pointer (host address) for the axis feedback.
double MotionFinalVelocityGet()
Get final velocity of a motion, when FINAL_VEL motion attribute is used.
RSIAxisGantryType GantryTypeGet()
Get the gantry type.
uint64_t FeedbackPointerGet(RSIAxisPositionInput input)
Get the pointer (host address) for the axis feedback.
void LimitActionSet(RSIEventType limit, RSIAction action)
Set the action for any type of limit.
RSIAction NodeFailureActionGet()
Get the action for a node failure.
bool GearingEnableGet()
Get the state of gearing feature. If true, this Axis is a geared slave.
void DefaultJerkPercentSet(double jerkPercent)
Set the default jerk percent.
void LimitTriggerValueSet(RSIEventType limit, double triggerValue)
Set the trigger value for any type of limit.
int32_t EncoderCountGet()
Get the number of encoders processed in firmware by the motor object. Valid values: 0,...
bool FilterGainSchedulingGet()
Get the status of automatic gain scheduling.
bool IOExists()
IOExists validates your IO object is an IO Node.
bool DigitalInGet(int32_t digitalInNumber)
Get the state of a digital input bit.
const char *const UserLabelGet()
Get the IO User defined Label.
void UserLabelSet(const char *const userLabel)
Set the IO User defined Label.
int32_t AnalogInGet(int32_t analogChannel)
Get the value of an analog input.
bool DigitalOutGet(int32_t digitalOutNumber)
Get the state of a Digital Output bit.
int32_t NumberGet()
Get the zero-based IO number.
int32_t AnalogOutGet(int32_t analogChannel)
Get the value of an analog output.
void DigitalOutSet(int32_t digitalOutNumber, bool outValue)
Set the state of a digital output bit.
void AnalogOutSet(int32_t analogChannel, int32_t analogValue)
Set the value of an analog output.
The IO object provides an interface to the inputs and outputs of a network node.
NetworkNode * NetworkNode
Gets the parent NetworkNode object.
MotionController * rsiControl
Gets the parent MotionController object.
uint64_t AddressGet()
Get the Host Address for the I/O point.
static IOPoint * CreateDigitalInput(Axis *axis, RSIMotorGeneralIo motorGeneralIoNumber)
Create a Digital Input from an Axis' general purpose inputs.
void ValueSet(double valueDouble)
Set the value for an Analog Output.
double ValueGet()
Get the value of an Analog Input or Output.
bool IsOutput()
Determine if an I/O point is an output.
static IOPoint * CreateDigitalInput(NetworkNode *networkNode, int32_t bitNumber)
Create a Digital Input from a RapidCodeNetworkNode.
static IOPoint * CreateDigitalOutput(MotionController *controller, uint64_t memoryAddress, int32_t bitNumber)
Create a Digital Output from a network PDO.
void Set(bool state)
Set the state of a Digital Output.
static IOPoint * CreateDigitalOutput(Axis *axis, RSIMotorGeneralIo motorGeneralIoNumber)
Create a Digital Output from an Axis' general purpose inputs.
static IOPoint * CreateAnalogInput(NetworkNode *networkNode, int32_t analogChannel)
Create an Analog Input from a RapidCodeNetworkNode.
static IOPoint * CreateAnalogOutput(NetworkNode *networkNode, int32_t analogChannel)
Create an Analog Output from a RapidCodeNetworkNode.
static IOPoint * CreateDigitalInput(Axis *axis, RSIMotorDedicatedIn motorDedicatedInNumber)
Create a Digital Input from an Axis' Dedicated Input bits.
static IOPoint * CreateDigitalOutput(MotionController *controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type)
Create a Digital Output from a network PDO.
bool IsDigital()
Determine if an I/O point is Digital or Analog.
static IOPoint * CreateDigitalInput(MotionController *controller, uint64_t memoryAddress, int32_t bitNumber)
Create a Digital Output from a network PDO.
static IOPoint * CreateDigitalInput(MotionController *controller, int32_t pdoIndex, int32_t bitNumber, RSIPDOType type)
Create a Digital Output from a network PDO.
static IOPoint * CreateDigitalOutput(Axis *axis, RSIMotorDedicatedOut motorDedicatedOutNumber)
Create a Digital Output from an Axis' Dedicated Output bits.
static IOPoint * CreateDigitalOutput(NetworkNode *networkNode, int32_t bitNumber)
Create a Digital Output from a RapidCodeNetworkNode.
bool Get()
Get the state of Digital Input or Output.
int32_t MaskGet()
Get the bit mask for the I/O point.
Represents one specific point: Digital Output, Digital Input, Analog Output, or Analog Input....
Axis * AxisGet(int32_t axisNumber)
AxisGet returns a pointer to an Axis object and initializes its internals.
NetworkNode * NetworkNodeGet(int32_t nodeNumber)
NetworkNodeGet returns a pointer to a RapidCodeNetworkNode object using its node number and initializ...
void UserLimitDisable(int32_t number)
Disable the processing of a User Limit.
void InterruptWake()
Wake all threads waiting for a controller interrupt.
int32_t RecorderRecordCountGet()
Get the number of records that are stored and ready for reading on Recorder 0.
void UserLimitReset(int32_t number)
Clear the latched status of a User Limit.
int32_t UserLimitCountGet()
Get the number of UserLimits processing in the firmware.
uint64_t NetworkOutputValueGet(int32_t index)
Gets the value sent out over EtherCAT.
void RecorderStart()
Start recording data.
void RecorderCircularBufferSet(bool enable)
Configure recorder as circular buffer (or not) on Recorder 0.
int32_t RecorderBufferSizeGet(int32_t recorderNumber)
Get Frame buffer size for the Recorder.
void UserVersionSet(int32_t version)
Sets a customer designed Version for the application.
void NetworkOutputOverrideValueSet(int32_t index, uint64_t outputValue)
Sets a PDO output directly.
RSINetworkState NetworkStateGet()
void RecorderBufferSizeSet(int32_t recorderNumber, int32_t bufferSize)
Set buffer size for the Recorder.
static constexpr int32_t AxisFrameBufferSizeDefault
The default value of the AxisFrameBufferSize, also the minimum allowable value.
void MathBlockCountSet(int32_t mathBlockCount)
Set the number of processed MathBlocks in the MotionController.
bool RecorderTriggerOnMotionGet(int32_t recorderNumber)
Check to see if the Recorder is set to trigger on motion.
void RecorderRecordDataRetrieve()
Retrieve one record of recorded data on Recorder 0.
RSINetworkEniResult NetworkEniGenerate()
Generate the network ENI file, EtherCAT.xml.
void SampleRateSet(double sampleRate)
Configure the RMP firmware control loop frequency.
const char *const FirmwareVersionGet()
Get the firmware version.
void RecorderDataCountSet(int32_t count)
Set the number of data values to be recorded on Recorder 0.
void Reset()
Reset the controller which stops and restarts the RMP firmware.
int32_t NetworkInputBitOffsetGet(int32_t index)
void RecorderConfigureToTriggerOnMotion(Axis *axis, bool triggerOnMotion)
Configure the Recorder 0 to trigger on Axis motion.
void UserLimitConditionSet(int32_t number, int32_t conditionNumber, RSIUserLimitLogic logic, uint64_t addressOfUInt32, uint32_t userLimitMask, uint32_t limitValueUInt32)
Set the conditions for a User Limit with a 32-bit integer trigger value.
void SyncInterruptHostProcessStatusClear()
Clear the Host Process status bit.
void MotionCountSet(int32_t motionCount)
Set the number of processed Motion Supervisors in the controller.
void MemorySet(uint64_t address, int32_t data)
Write a value to controller memory.
uint64_t NetworkOutputOverrideValueGet(int32_t index)
Sets a PDO output directly.
static MotionController * Get()
Get an already running RMP EtherCAT controller.
static MotionController * Create(CreationParameters *creationParameters)
Initialize and start the RMP EtherCAT controller.
int32_t CompensatorCountGet()
Get the number of Compensators available in the firmware.
int32_t ExternalMemorySizeGet()
void NetworkOutputOverrideSet(int32_t index, bool outputOverride)
Set NetworkOutputValue to override RMP cyclic value.
uint32_t FirmwareAddressGet(uint64_t hostAddress)
Convert a host controller address to a firmware address.
const char *const NetworkOutputDataTypeNameGet(int32_t index)
void MemoryDoubleSet(uint64_t address, double dataDouble)
Write a 64-bit double value to controller memory.
const int32_t *const RecorderRecordDataGet()
Get one record of recorded data on Recorder 0.
void ServiceThreadEnableSet(bool enable)
Enable or disable the service thread.
RSIDataType AddressDataTypeGet(RSIControllerAddressType type)
Get the data type for an address on the MotionController.
uint64_t AddressGet(RSIControllerAddressType type)
Get the an address for some location on the MotionController.
void UserLimitOutputSet(int32_t number, uint32_t andMask, uint32_t orMask, uint64_t outputPtr, bool enabled)
Configure a User Limit Output block.
int32_t RecorderRecordMaxCountGet()
Get the maximum number of records the recorder can store on Recorder 0.
int32_t CompensatorPointCountGet(int32_t compensatorNumber)
Get the number of points for use with a Compensator.
int32_t NetworkNodeCountGet()
void CompensatorEnable(int32_t compensatorNumber)
Enables the compensator only if it will cause no errors.
bool UserLimitEnableGet(int32_t number)
Get the enabled state of a User Limit.
void SyncInterruptEnableSet(bool enable)
Configure Sync (periodic) interrupts for the controller.
void CompensatorPointCountSet(int32_t compensatorNumber, int32_t pointCount)
Set the number of points for use with a Compensator.
uint64_t NetworkInputValueGet(int32_t index)
static MotionController * Create()
Initialize and start the RMP EtherCAT controller.
RSIProcessorType ProcessorTypeGet()
Get the processor type.
uint64_t AddressFromStringGet(const char *const addressName)
Get a controller memory address from string.
void CompensatorTableGet(int32_t compensatorNumber, double *table)
Read the table for a configured compensator.
bool IsLicensed()
Check to see if this MotionController is licensed.
uint64_t NetworkOutputIntendedValueGet(int32_t index)
Gets the value set by the cyclic RMP processes.
uint64_t NetworkOutputSentValueGet(int32_t index)
Gets the value sent out over EtherCAT.
static MotionController * CreateFromFile(const char *const fileName)
Create a MotionController from a memory-dumped file.
void RecorderDataAddressesSet(int32_t recorderNumber, const uint64_t *const addresses, int32_t addressCount)
Setup multiple addresses to record at once.
void SyncInterruptHostProcessFlagSet(bool hostProcessFlag)
Set the Host Process flag.
double CompensatorPositionGet(int32_t compensatorNumber)
Get the compensator position.
void NetworkShutdown()
Shutdown the EtherCAT network.
int32_t MemoryGet(uint64_t address)
Read controller memory.
uint64_t NetworkOutputAddressGet(int32_t index)
Returns an Address of a Network Output.
void SampleWait(uint32_t samples)
Wait for controller firmware to execute samples.
void SyncInterruptPeriodSet(uint32_t samples)
Configure the period for the Sync Interrupt on the controller.
void UserLimitInterruptUserDataAddressSet(int32_t number, uint32_t userDataIndex, uint64_t address)
Set the User Data address based on a User Limit trigger.
void MemoryToFile(const char *const fileName)
Saves an RMP firmware memory dump which can be compared with others.
int32_t BackgroundCycleCounterGet()
Get the current value of the controller's processor's background cycle counter.
int32_t RecorderRecordDataValueGet(int32_t index)
Get one value from a retrieved record on Recorder 0.
void NetworkStart()
Start the network, doing both a discovery followed by starting to OPERATIONAL state.
void NetworkOutputValueSet(int32_t index, uint64_t outputValue)
Sets a PDO output directly.
void MotionHoldGateSet(int32_t gateNumber, bool hold)
Set the Motion Hold Gate.
void UserLimitConfigSet(int32_t number, RSIUserLimitTriggerType triggerType, RSIAction action, int32_t actionAxis, double duration, bool singleShot)
Configure a User Limit.
const char *const NetworkEniGenerateOutputGet()
Retrieve the text output from the previous NetworkEniGenerate() call.
uint64_t HostAddressGet(uint32_t firmwareAddress)
Convert a firmware address to a host controller address.
void CompensatorTableSet(int32_t compensatorNumber, const double *const table)
Override the table for a configured compensator.
static constexpr double SampleRateDefault
Default RMP sample rate in hertz.
void MemoryBlockSet(uint64_t address, const void *const dataStart, int32_t size)
Set controller memory.
uint64_t NetworkInputAddressGet(int32_t index)
void RecorderStop()
Stop recording data on Recorder 0.
const char *const NetworkLogMessageGet(int32_t messageIndex)
static MotionController * CreateFromSoftware(const char *const RtaPath, const char *const NodeName)
Initialize and start the RMP EtherCAT controller.
int32_t MathBlockCountGet()
Get the number of MathBlocks processing in the firmware.
static MotionController * CreateFromSoftware()
Initialize and start the RMP EtherCAT controller.
int32_t SyncInterruptHostProcessTimeGet()
Get the total number of microseconds availble for host processing.
void Delete(void)
Delete the MotionController and all its objects.
int32_t FirmwareOptionGet()
Get the firmware option number.
int32_t SampleCounterGet()
Get the current value of the controller's processor's sample counter.
double ProcessorUsageGet()
Get the processor usage percent.
int32_t AxisFrameBufferSizeGet(int32_t axisNumber)
Get Frame buffer size for the axis.
int32_t UserVersionGet()
Get a customer designated Version for the application.
static MotionController * CreateFromSoftware(const char *const RtaPath)
Initialize and start the RMP EtherCAT controller.
bool SyncInterruptHostProcessStatusBitGet()
See if the host was processing too int32_t on previous Sync Interrupt.
IO * IOGet(int32_t nodeNumber)
IOGet returns a pointer to an IO object using its node number and initializes its internals.
void RecorderReset()
Reset the recorder on Recorder 0.
uint32_t FirmwareTimingDeltaGet()
Get the most recent time (in microseconds) between samples.
int32_t RecorderCountGet()
Get the number of Recorder available in the firmware.
CreationParameters CreationParametersGet()
Get the CreationParameters used to create this MotionController.
static MotionController * Get(int32_t controllerIndex)
Get an already running RMP EtherCAT controller.
void RecorderDataAddressSet(int32_t index, uint64_t address)
Setup the addresses to be recorded on Recorder 0.
void AxisFrameBufferSizeSet(int32_t axisNumber, int32_t frameBufferSize)
Set Frame buffer size for the axis.
int32_t UserLimitCountMax()
Get the total number of User Limits available.
void Refresh()
Refresh / reinitialize the motion controller. Required after changing dynamic memory object counts.
void Shutdown()
Shutdown the controller.
bool UserLimitStateGet(int32_t number)
Get the state of a User Limit.
int32_t CompensatorDimensionGet(int32_t compensatorNumber)
Get the dimension of the compensator.
void MemoryBlockGet(uint64_t address, void *dataStart, int32_t size)
Read controller memory.
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.
void RecorderPeriodSet(uint32_t samples)
Set the number of samples between records on Recorder 0.
int32_t MotionCountGet()
Get the number of Motion Supervisors available in the firmware.
void RecorderCountSet(int32_t recorderCount)
Set the number of processed Recorders in the controller.
MultiAxis * LoadExistingMultiAxis(int32_t motionSupervisorNumber)
Get/Create a MultiAxis object from one that already exists (previously setup) on the RMP motion contr...
double MemoryDoubleGet(uint64_t address)
Read a 64-bit double value from controller memory.
void CompensatorCountSet(int32_t compensatorCount)
Set the number of Compensators available in the firmware.
int32_t NetworkLogMessageCountGet()
bool MotionHoldGateGet(int32_t gateNumber)
Get the state of the hold gate.
bool RecorderEnabledGet()
Determine if the recorder is recording on Recorder 0.
int32_t SyncInterruptWait()
Suspend the current thread until an interrupt arrives from the controller.
bool NetworkOutputOverrideGet(int32_t index)
Gets if the NetworkOutputValue or the RMP cyclic value is exchanged over EtherCAT.
void ProcessorUsageClear()
Clear the processor usage percent.
int32_t RecorderRecordDataRetrieveBulk(int32_t recorderNumber, int32_t recordCount)
Retrieve a group of records of recorded data.
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 UserLimitCountSet(int32_t userLimitCount)
Set the number of processed UserLimits in the MotionController.
void RecorderBufferHighCountSet(int32_t bufferHighCount)
Set the high count for the recording buffer on Recorder 0.
void CompensatorTableClear(int32_t compensatorNumber)
Sets all values in the compensator table to 0.
uint32_t SerialNumberGet(void)
Get the controller's serial number.
const char *const StringFromAddressGet(uint64_t hostAddress)
Get a human-readable string from a memory address.
void InterruptEnableSet(bool enable)
Control interrupts for this class.
int32_t NetworkOutputCountGet()
void CompensatorDisable(int32_t compensatorNumber)
Disables the compensator only if it will not cause errors.
void AxisCountSet(int32_t axisCount)
Set the number of allocated and processed axes in the controller.
const char *const NetworkInputDataTypeNameGet(int32_t index)
Represents the RMP soft motion controller. This class provides an interface to general controller con...
int32_t UnsupportedOptionSet(int32_t option)
deprecated
RSIControllerType ControllerTypeGet()
Get the type of motion controller.
int32_t UserLimitOutputValueGet(int32_t number)
Get the user limit output value.
uint32_t NetworkTimingThresholdHighCountGet()
Get the number of network packets that were sent to slowly (above the high threshold).
bool HasMechaWare()
Returns true if this RMP firmware supports MechaWare.
uint64_t UserLimitOutputAddressGet(int32_t number)
Get the user limit output address. The output will write its value to this address.
uint32_t UserLimitConditionMaskGet(int32_t number, int32_t conditionNumber)
Get the user limit condition mask.
int32_t SyncInterruptHostProcessFlagGet()
Get the host process flag.
bool NetworkSynchronizedGet()
Returns true if the network is synchronized with distributed clocks.
uint32_t NetworkTimingMinGet()
Get the minimum microseconds recorded between network packets.
uint64_t UserLimitConditionAddressGet(int32_t number, int32_t conditionNumber)
Get the user limit condition address.
const char *const NetworkOutputNameGet(int32_t index)
Get the name of a PDO output.
int32_t ServerPortGet()
Get the TCP port of the server. (Valid if controller type is CLIENT.).
uint32_t NetworkTimingThresholdLowCountGet()
Get the number of network packets that were sent to quickly (below the low threshold).
uint32_t NetworkTimingMaxGet()
Get the maximum microseconds recorded between consecutive network packets.
int32_t NetworkOutputBitSizeGet(int32_t index)
Get the size (in bits) of a PDO output.
uint64_t UserLimitOutputAndMask64Get(int32_t number)
Get the user limit output 64-bit AND mask.
RSIAction UserLimitActionGet(int32_t number)
Get the user limit action.
uint32_t UserLimitOutputOrMaskGet(int32_t number)
Get the user limit output OR mask.
MathBlockConfig MathBlockConfigGet(int32_t mathBlockNumber)
Get a MathBlock configuration.
int32_t NetworkOutputBitOffsetGet(int32_t index)
Get the raw PDO offset for an output.
int32_t AxisLicenseCountGet()
Get the number of licensed Axis objects on this motion controller. If you need more,...
RapidCodeOS * OS
Provides access to operating system (Windows) features.
bool ServiceThreadStateGet()
Returns true if the service thread was started.
static constexpr uint32_t RecorderCountMaximum
Maximum number of Recorder objects supported.
uint32_t UserLimitOutputAndMaskGet(int32_t number)
Get the user limit output AND mask.
bool UserLimitSingleShotGet(int32_t number)
Returns true if the user limit is configured for single-shot.
bool UserLimitOutputEnableGet(int32_t number)
Returns true if the user limit output is enabled.
const char *const ServerNameGet()
Get the name of the server. (Valid if controller type is CLIENT.).
bool MechaWareLicenseGet()
Returns true if this motion controller is licensed to run MechaWare.
int32_t PackageVariantGet()
Get the motion controller package.
RSIUserLimitLogic UserLimitConditionLogicGet(int32_t number, int32_t conditionNumber)
Get the user limit condition logic.
static constexpr uint32_t AxisCountMaximum
Maximum number of Axis objects supported.
void UserLimitEnableSet(int32_t number, bool enable)
Enable or disable a user limit to be processed by the RMP firmware.
double UserLimitOutputDoubleGet(int32_t number)
Get the user limit output 64-bit double value.
static constexpr uint32_t NetworkStartTimeoutMillisecondsDefault
Default time to wait when calling NetworkStart().
FirmwareValue MathBlockProcessValueGet(int32_t mathBlockNumber)
Get a MathBlock process value.
void NetworkTimingEnableSet(bool enable)
Enable or disable the firmware to start timing the network packets.
RSINetworkStartError LastNetworkStartErrorGet()
Get the last (most recent) network start error.
void MathBlockConfigSet(int32_t mathBlockNumber, MathBlockConfig &config)
Set a MathBlock configuration.
int32_t NetworkInputCountGet()
Get the number of PDO inputs found on the network.
void NetworkTimingThresholdHighSet(uint32_t microseconds)
Set a high threshold. The RMP will count the number of network packets sent above this threshold (too...
uint64_t UserLimitInterruptUserDataAddressGet(int32_t number, uint32_t userDataIndex)
Get the user limit interrupt user data address.
int32_t NetworkInputBitSizeGet(int32_t index)
Get the size (in bits) of a network input.
static constexpr uint32_t CompensatorCountMaximum
Maximum number of position Compensator objects supported.
RSINetworkType NetworkTypeGet()
Returns network type. (Currently only STRING type is supported.).
int32_t NetworkCounterGet()
Read the network counter. This increments by one for each cycle of the network.
uint64_t UserLimitOutputInputAddressGet(int32_t number)
Get the user limit output address. The user limit will output the value stored at this address when t...
RSINetworkTechnologyType NetworkTechnologyTypeGet()
Get the network technology type EtherCAT.
double RecorderRecordDataDoubleGet(int32_t index)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static constexpr uint32_t UserBufferDataCountMaximum
Maximum number of 64-bit values that can be stored in the UserBuffer.
uint32_t NetworkTimingDeltaGet()
Get the number of microseconds since the previous network packet was sent.
RSIDataType UserLimitConditionDataTypeGet(int32_t number, int32_t conditionNumber)
Get the user limit condition data type.
double UserLimitConditionLimitValueDoubleGet(int32_t number, int32_t conditionNumber)
Get the user limit condition limit value (as 64-bit double).
int32_t UserLimitConditionLimitValueGet(int32_t number, int32_t conditionNumber)
Get the user limit condition value.
RSIDataType UserLimitOutputDataTypeGet(int32_t number)
Get the user limit output data type.
int32_t UserLimitAxisNumberGet(int32_t number)
Get the user limit axis number.
static constexpr uint32_t MathBlockCountMaximum
Maximum number of MathBlock objects supported.
double UserLimitDurationGet(int32_t number)
Get the user limit duration (seconds).
static constexpr uint32_t NetworkNodeCountMaximum
Maximum numober of nodes allowed on the network.
static constexpr uint32_t MotionCountMaximum
Maximum number of Motion objects supported. (One required for each Axis and MultiAxis).
void NetworkTimingThresholdLowSet(uint32_t microseconds)
Set a low threshold. The RMP will count the number of network packets sent below this threshold (too ...
RSIUserLimitTriggerType UserLimitTriggerTypeGet(int32_t number)
Get the user limit trigger type.
uint64_t UserLimitOutputOrMask64Get(int32_t number)
Get the user limit output 64-bit OR mask.
void NetworkTimingClear()
Clear all the network timing values.
const char *const NetworkInputNameGet(int32_t index)
Get the name of a PDO network input.
void MoveVelocitySCurve(const double *const velocity, const double *const accel, const double *const jerkPct)
Velocity move with non-constant acceleration.
void PathListStart(const double *const startPosition)
Start a line and arc point list for path motion.
void MoveTrapezoidal(const double *const position, const double *const vel, const double *const accel, const double *const decel)
Point-to-point trapezoidal move.
void PathMotionStart()
Start the path motion.
void PathArcAdd(const double *const center, double angle)
Add an arc segment to the path.
Axis * AxisGet(int32_t index)
Get the Axis class used in this MultiAxis class.
bool AmpEnableGet()
Get the enabled/disabled state of the multi axis.
void PathRatioSet(const double *const ratio)
Set the scale factor ratios for each axis.
double VectorJerkPercentGet()
Get the vector jerk percent.
uint64_t AddressGet(RSIMultiAxisAddressType addressType)
Get the host address for some location on the MultiAxis.
double VectorAccelerationGet()
Get the vector acceleration.
RSIPathPlanType PathPlanTypeGet()
Get the path motion planning type.
const char *const UserLabelGet()
Get the MultiAxis User defined Label.
void UserLabelSet(const char *const userLabel)
Set the MultiAxis User defined Label.
double VectorVelocityGet()
Get the vector velocity.
double VectorDecelerationGet()
Get the vector deceleration.
void AxisRemoveAll()
Remove all axes from a MultiAxis group.s.
RSIDataType AddressDataTypeGet(RSIMultiAxisAddressType type)
Get the data type for an address of the MultiAxis.
void MoveRelative(const double *const relativePosition, const double *const vel, const double *const accel, const double *const decel, const double *const jerkPct)
Command a relative point-to-point S-Curve motion.
void VectorDecelerationSet(double deceleration)
Set the vector deceleration.
void MoveVector(const double *const position)
Point-to-point vector move.
void PathPlanTypeSet(RSIPathPlanType type)
Set the path motion planning type.
uint16_t MotionIdExecutingGet()
void MoveVectorRelative(const double *const relativePosition)
void MoveSCurve(const double *const position, const double *const vel, const double *const accel, const double *const decel, const double *const jerkPct)
Point-to-point S-Curve Move.
void PathLineAdd(const double *const position)
Add a line segment to the path.
void AxesAdd(Axis **axes, int32_t axisCount)
void PathTimeSliceSet(double seconds)
Set the time slice for the Path.
void PathBlendSet(bool blend)
Set the blending attribute.
void VectorAccelerationSet(double acceleration)
Set the vector acceleration.
void MoveVelocity(const double *const velocity, const double *const accel)
Velocity move.
uint16_t MotionElementIdExecutingGet()
void VectorJerkPercentSet(double jerkPercent)
Set the jerk percent for a vector move.
double PathRatioGet(int32_t index)
void PathListEnd()
End a line and arc point list for path motion.
void AxisAdd(Axis *axis)
Add an Axis to a MultiAxis group.
double PathTimeSliceGet()
Set the time slice for the Path.
void VectorVelocitySet(double velocity)
Set the vector velocity.
Represents multiple axes of motion control, allows you to map two or more Axis objects together for e...
int32_t AxisMapCountGet()
Get the number of Axis objects in the Axis map.
void DigitalOutSet(int32_t digitalOutNumber, bool state)
Set the state of a digital output.
bool DigitalInGet(int32_t digitalInNumber)
Get the state of a digital input.
uint64_t DigitalOutAddressGet(int32_t bitNumber)
Get the controller memory address for a Node's digital output.
RapidVector< uint8_t > ServiceChannelReadBytes(int32_t index, int32_t subIndex, int32_t byteCount, uint32_t timeoutMilliseconds)
Read a number of bytes from the SDO.
int32_t ServiceChannelRead(int32_t index, int32_t subIndex, int32_t byteCount)
Read a 32-bit integer value from the SDO.
uint64_t AnalogInAddressGet(int32_t channel)
Get the controller memory address for a Node's analog input.
int32_t DigitalInCountGet()
Get the number of digital inputs on this node.
bool HasIO()
Check if the node has any analog or digital inputs or outputs.
const char *const VendorNameGet()
Get the Node's Vendor Name that appears on NodeInfo.xml.
int32_t AnalogInMaskGet(int32_t channel)
Get the bitwise mask for a Node's analog input.
int32_t DigitalInMaskGet(int32_t bitNumber)
Get the bitwise mask for a Node's digital input.
int32_t AnalogInGet(int32_t analogChannel)
Get the value of an analog input.
int32_t DigitalOutMaskGet(int32_t bitNumber)
Get the bitwise mask for a Node's digital output.
uint64_t DigitalInAddressGet(int32_t bitNumber)
Get the controller memory address for a Node's digital input.
bool DigitalOutGet(int32_t digitalOutNumber)
Get the state of a digital output.
char * AKDASCIICommand(const char *const command)
Send a Kollmorgen AKD ASCII command (NodeType must equal KOLLMORGEN_AKD).
const char *const ServiceChannelReadString(int32_t index, int32_t subIndex, int32_t byteCount)
Read a string from the SDO.
const char *const NameGet()
Get the Node's Short Name that appears on NodeInfo.xml.
void ServiceChannelWrite(int32_t index, int32_t subIndex, int32_t byteCount, int32_t sdoValue)
Write a number in the SDO.
const char *const ProductNameGet()
Get the Node's Product/Long Name that appears on NodeInfo.xml.
int32_t AnalogOutGet(int32_t analogChannel)
Get the value of an analog output.
int32_t AnalogInCountGet()
Get the number of analog inputs on this node.
int32_t DigitalOutCountGet()
Get the number of digital outputs on this node.
int32_t AnalogOutCountGet()
Get the number of analog outputs on this node.
void AnalogOutSet(int32_t analogChannel, int32_t analogValue)
Set the value of an analog output.
uint64_t AnalogOutAddressGet(int32_t channel)
Get the controller memory address for a Node's analog output.
int32_t AnalogOutMaskGet(int32_t channel)
Get the bitwise mask for a Node's analog output.
uint32_t RevisionGet()
Get the EtherCAT hardware revision.
uint32_t AxisCountGet()
Get the number of Axis objects associated with this NetworkNode.
int32_t SegmentDigitalOutCountGet(int32_t segmentNumber)
Get the number of digital outputs on a segment.
int32_t SegmentIDGet(int32_t segmentNumber)
Get the ID number of a segment.
uint32_t ProductCodeGet()
Get the EtherCAT product code.
uint16_t StatusWordGet(int32_t axisIndex)
Get the DS402 status word.
int32_t SegmentCountGet()
Get the number of segments on this node.
int32_t SegmentAnalogOutCountGet(int32_t segmentNumber)
Get the number of analog outputs on a segment.
bool IsEtherCAT()
Check if the node is EtherCAT.
int32_t SegmentAnalogInCountGet(int32_t segmentNumber)
Get the number of analog inputs on a segment.
static constexpr uint32_t SDOTimeoutMillisecondsDefault
Default time to wait when reading or writing an SDO with ServiceChannelRead() or ServiceChannelWrite(...
uint32_t VendorIdGet()
Get the EtherCAT vendor ID.
bool IsSynqNet()
Check if the node is SynqNet.
void ClearFaults(int32_t axisNumber)
Clear the faults for a specific axis number on this node.
bool Exists()
Returns true if this NetworkNode exists on a physical network.
int32_t SegmentDigitalInCountGet(int32_t segmentNumber)
Get the number of digital inputs on a segment.
RSINodeType TypeGet()
Get the node type, as determined by the Vendor ID and Product Code.
uint32_t StationAliasGet()
Get the EtherCAT station alias.
const char *const SerialNumberGet()
Get the serial number as text.
static const char *const INtimeCatalogRMPNetworkGet()
Get the RMPNetwork catalog.
static INtimeStatus INtimeStatusGet(const char *const nodeName)
Get the status of INtime.
static INtimeStatus INtimeStart()
Start INtime.
static INtimeStatus INtimeRestart(const char *const nodeName)
Restart INtime (reboot INtime).
static uint32_t INtimeNodeCountGet()
Get the number of INtime nodes on this PC.
static const char *const INtimeCatalogRMPGet()
Get the RMP catalog.
static INtimeStatus INtimeStart(const char *const nodeName)
Start INtime.
static INtimeStatus INtimeStatusGet()
Get the status of INtime.
static bool INtimeNodeIsLocal(uint32_t nodeNumber)
Determine if an INtime node is local (on this PC) or distributed (on another PC).
static INtimeStatus INtimeStop(const char *const nodeName)
Stop INtime.
static const char *const INtimeNodeNameGet(uint32_t nodeNumber)
Get the name of an INtime node.
static INtimeStatus INtimeRestart()
Restart INtime (reboot INtime).
static INtimeStatus INtimeStop()
Stop INtime.
Represents the real-time operating system (INtime) when using RMP for Windows. This class provides st...
double InterruptUserDataDoubleGet(uint32_t userDataIndex)
Get the user data associated with the interrupt, as a 64-bit double.
uint64_t InterruptUserDataAddressGet(uint32_t userDataIndex)
Get the 64-bit host address from the interrupt's UserData.
int32_t InterruptSourceNumberGet()
Get the number (or index) of the object (Axis, Motor, etc) that generated the interrupt.
int32_t InterruptSampleTimeGet()
Get the sample timer value when the last interrupt was generated.
const char *const InterruptNameGet()
Get the text name of an interrupt type.
FirmwareValue InterruptUserDataValueGet(uint32_t userDataIndex)
Read the user data associated with the interrupt as a FirmwareValue.
void InterruptUserDataAddressSet(uint32_t userDataIndex, uint64_t hostAddress)
Set the interrupt's UserData address.
uint64_t InterruptUserDataGet(uint32_t userDataIndex)
Get the user data associated with the interrupt, as a 64-bit unsigned integer.
RSIEventType InterruptWait(int32_t milliseconds)
Suspend the current thread until an interrupt arrives from the controller.
Interface for objects which can use interrupts.
void InterruptWake()
Wake any and all threads waiting for interrupts.
void InterruptMaskClear()
Clear the interrupt mask so no interrupts will be generated.
uint16_t InterruptMotionIdGet()
Get the 16-bit MotionId - only valid if RSIEventType == MOTION_DONE.
void InterruptMaskOnSet(RSIEventType eventType)
Set a bit in the interrupt mask so you will get interrupts for the given RSIEventType.
void InterruptMaskOffSet(RSIEventType eventType)
Clear a bit in the interrupt mask so you won't get interrupts for the given RSIEventType.
void InterruptMaskAllSet()
Set all the bits of the interrupt mask to get interrupts for ALL sources.
bool InterruptMaskOnGet(RSIEventType eventType)
Get the status of the interrupt mask for the given RSIEventType.
void InterruptEnableSet(bool enable)
Enable or disable interrupts.
void ClearFaults()
Clear all faults for an Axis or MultiAxis.
void MotionHoldAxisPositionSet(double position)
Sets the Axis position.
void InterruptWake()
Wake all threads waiting for an interrupt on this Axis.
bool MotionHoldGateGet()
Get the state of the hold gate.
double MotionHoldAxisPositionGet()
Gets the Axis position.
double MotionDelayGet()
Get the delay (seconds) that will occur before motion starts.
void Abort()
Abort an axis.
int32_t MotionHoldAxisNumberGet()
Gets the Axis number.
void StopTimeSet(double seconds)
Set the deceleration time for a Stop Event.
void MotionDelaySet(double seconds)
Set the time (seconds) that a motion will wait before starting.
void EStop()
E-Stop an axis.
int32_t MotionDoneWait()
Waits for a move to complete.
void MotionHoldUserMaskSet(int32_t holdMask)
Sets the Motion Hold User bit mask.
double EStopTimeGet()
Get E-Stop Event deceleration time.
bool MotionAttributeMaskOnGet(RSIMotionAttrMask maskOn)
Check to see if a particular motion attribute mask is turned on.
void Map()
Writes the axis mapping relationship to the Controller.
void StreamingOutputAdd(int32_t onMask, int32_t offMask, uint64_t address)
bool AmpEnableGet()
Get the enabled state of all amplifiers.
void MovePVTF(const double *const position, const double *const velocity, const double *const time, const double *const feedforward, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
Move commanded by list of positions, velocities, times, and feedforward values.
double FeedRateGet()
Get the axis feed rate.
void MotionHoldUserPatternSet(int32_t pattern)
Sets the Motion Hold User pattern bit mask.
void MotionAttributeMaskOffSet(RSIMotionAttrMask maskOff)
Turn off a particular motion attribute mask.
uint64_t MotionHoldUserAddressGet()
Gets the Motion Hold User Address.
void MotionHoldTypeSet(RSIMotionHoldType type)
Set the motion hold type.
int32_t MotionHoldGateNumberGet()
Returns the Motion Hold Gate number that the axis or multiaxis is set to.
void TriggeredModify()
Modify the currently executing motion to decelerate the Axis or MultiAxis to a zero velocity IDLE sta...
void MotionHoldAxisNumberSet(int32_t number)
Sets the Axis number for Motion Hold.
const char *const SourceNameGet(RSISource source)
Get the name (string) of the source of an error for an Axis or MultiAxis.
void MotionIdSet(uint16_t id)
Set the Motion identifier.
bool StatusBitGet(RSIEventType bitMask)
Return the state of a status bit.
int32_t MotionHoldUserMaskGet()
Gets the Motion Hold User Mask.
void EStopTimeSet(double seconds)
Set the deceleration time for an E-Stop Event.
int32_t MotionHoldUserPatternGet()
Gets the Motion Hold user bit pattern.
void MotionHoldGateNumberSet(int32_t gateNumber)
Assigns the axis or multiaxis Motion Hold Gate number to the specified controller gate.
RSIMotionHoldType MotionHoldTypeGet()
Get the motion hold attribute type.
RSIState StateGet()
Get the Axis or MultiAxis state.
void MotionHoldUserAddressSet(uint64_t address)
Sets the Motion Hold User Address.
void Resume()
Resume an axis.
void StreamingOutputsClear()
Clear the contents of the Streaming Output List.
uint64_t StatusBitsGet()
Return all the RMP firmware status bits as a 64-bit unsigned bitmask.
void MotionHoldGateSet(bool hold)
Set the Motion Hold Gate.
void StreamingOutputsEnableSet(bool enable)
Sets whether Streaming Output is enabled (true) or disabled (false).
int32_t AmpEnableSet(bool enable, int32_t ampActiveTimeoutMilliseconds=AmpEnableTimeoutMillisecondsDefault, bool overrideRestrictedState=false)
Enable all amplifiers.
void FeedRateSet(double rate)
Set the feed rate for an Axis.
double MotionHoldTimeoutGet()
Get the motion hold timeout value.
void MotionHoldTimeoutSet(double seconds)
Set the motion hold timeout value.
void MotionFinalVelocitySet(double finalVelocity)
Sets final velocity value in UserUnits (!!! only used if FINAL_VEL motion attribute is used !...
int32_t NumberGet()
Get the axis number.
RSISource SourceGet()
Get the source of an error state for an Axis or MultiAxis.
uint16_t MotionIdGet()
Get the motion identifier.
void EStopModify()
E-Stop with a deceleration rate.
void MovePVT(const double *const position, const double *const velocity, const double *const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
Move commanded by list of positions, velocities, and times.
void Unmap()
Removes the axis mapping relationship of the MultiAxis.
void MovePT(RSIMotionType type, const double *const position, const double *const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
A move commanded by a list of position and time points.
void MovePTF(const double *const position, const double *const time, const double *const feedforward, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
A move commanded by a list of position, time, and feedforward points.
bool IsMapped()
Check to see if the axis mapping is active on the firmware.
bool MotionDoneGet()
Check to see if motion is done and settled.
double StopTimeGet()
Get Stop Event deceleration time.
int32_t AxisCountGet()
Get the axis count.
void EStopAbort()
E-Stop, then abort an axis.
void MotionAttributeMaskOnSet(RSIMotionAttrMask maskOn)
Turn on a particular motion attribute mask.
double MotionFinalVelocityGet()
Gets final velocity value (!!! only used if FINAL_VEL motion attribute is used !!!...
void MovePVAJT(const double *const position, const double *const velocity, const double *const acceleration, const double *const jerk, const double *const time, int32_t pointCount, int32_t emptyCount, bool retain, bool final)
void InterruptEnableSet(bool enable)
Control interrupts for this class.
The RapidCodeMotion interface is implemented by Axis and MultiAxis .
static constexpr int32_t AmpEnableTimeoutMillisecondsDefault
Default timeout in milliseconds for AmpEnableSet() to wait for AMP_ACTIVE / OPERATION_ENABLED to go h...
RSIUserLimitLogic MotionHoldAxisLogicGet()
Get the logic when holding for Axis ActualPosition.
uint16_t MotionIdExecutingGet()
Get the currently executing motion ID.
MotionController * rsiControl
Gets the parent MotionController object.
void MotionHoldAxisLogicSet(RSIUserLimitLogic logic)
Set the logic when holding for Axis ActualPosition.
void MotionAttributeMaskDefaultSet()
Restore the motion attribute mask to the RapidCode default.
uint16_t MotionElementIdExecutingGet()
Get the currently executing element ID (streaming motion).
void Sleep(int32_t milliseconds)
Put the current thread to sleep.
int32_t KeyGet(int32_t milliseconds)
Wait for a key to be pressed and return its value.
int32_t PerformanceTimerFrequencyGet()
Gets the frequency of the performance counter.
int32_t PerformanceTimerCountGet()
Gets the current high performance counter value.
int32_t TimerFrequencyGet()
Get the number milliseconds per second.
int32_t TimerCountGet()
Gets the time since startup.
The RapidCodeOS object provides access to operating system (Windows) features. Accessible via MotionC...
void Trace(bool state)
Enables/Disables trace output.
void TraceInjectMessage(RSITrace traceLevel, const char *const message)
Add a message to the Trace Log.
bool TraceMaskOnGet(RSITrace maskOn)
Check to see if a particular trace output mask is turned on.
void TraceMaskOnSet(RSITrace maskOn)
Turn on a particular trace output mask.
void TraceMaskClear()
Clear the trace output mask.
void ThrowExceptions(bool state)
Configure a class to throw exceptions.
void ErrorLogClear()
Clear the error log.
const RsiError *const ErrorLogGet()
Get the next RsiError in the log.
void TraceFileSet(const char *const fileName)
Channels Tracing messages to specified file.
void TraceMaskOffSet(RSITrace maskOff)
Turn off a particular trace output mask.
const char *const VersionGet()
Get the RSI RapidCode version.
int32_t NumberGet()
Get the zero-based index of this object.
void TraceFileClose()
Stops Logging to the file.
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.
int32_t RSIVersionPatch()
Get the patch RSI version.
int32_t MpiVersionRelease()
Get the release MPI version.
int32_t MpiVersionMinor()
Get the minor MPI version.
const char *const ErrorMessageGet(RSIErrorMessage msg)
Get the detailed text message for an RSIErrorMessage.
int32_t RSIVersionMicro()
Get the micro RSI version.
const char *const RsiErrorMessageGet(RSIErrorMessage msg)
Get the RSI-specific error message text for a specific RSIErrorMessage.
int32_t RSIVersionMinor()
Get the minor RSI version.
int32_t RSIVersionMajor()
Get the major RSI version.
int32_t MpiVersionMajor()
Get the major MPI version.
bool WarningMsgCheck(RSIErrorMessage msg)
Check to see if an RSIErrorMessage is a warning (true) or not (false).
void Reserve(const size_t capacity)
Increases the size of the allocated storage of the vector to at least the specified size.
const size_t Size() const
Returns the number of elements in the vector.
const Type & operator[](const size_t index) const
Returns a const reference to the element at the location specified by the index.
const Type & Back() const
Returns a const reference to the last element in the vector.
void PushBack(Type &&element)
Appends the given element to the end of the vector.
Iterator begin() noexcept
Returns a RapidVectorIterator to the first element of the vector. The naming convention follows STL c...
Type & Front()
Returns a reference to the first element in the vector.
Iterator end() const noexcept
Returns a RapidVectorIterator to the element following the last element of the vector....
const Type & Front() const
Returns a const reference to the first element in the vector.
const Type & At(const size_t index) const
Returns a const reference to the element at the location specified by the index.
void PushBack(const Type &element)
Appends the given element to the end of the vector.
Type & Back()
Returns a reference to the last element in the vector.
Type & operator[](const size_t index)
Returns a reference to the element at the location specified by the index.
Type & At(const size_t index)
Returns a reference to the element at the location specified by the index.
A wrapper class for the C++ STL vector class that aims to maintain application binary interface....
RapidVector(RapidVector &&other) noexcept
Move constructor. Replaces contents with those of the other RapidVector.
RapidVectorIterator< RapidVector > Iterator
The iterator type for this RapidVector.
~RapidVector()
Destructs the vector and deallocates used storage.
RapidVector & operator=(const RapidVector &other)
Copy assignment operator. Replaces contents with the contents of the other RapidVector.
RapidVector(const RapidVector &other)
Copy constructor. Constructs a RapidVector as a deep-copy.
RapidVector(RapidVectorImplementation< Type > *)
Constructs a RapidVector with the given implementation. Intended for RSI internal use only.
void Clear()
Erases all elements from the vector.
void PopBack()
Removes the last element from the container. Calling PopBack() on an empty container results in undef...
RapidVector(const size_t size)
Constructs a vector with the specified size.
RapidVector & operator=(RapidVector &&other) noexcept
Move assignment operator. Replaces contents with those of the other RapidVector. The original content...
RapidVector()
Default constructor that constructs an empty vector.
RsiError(const RsiError ©From)
Copy constructor for RsiError.
Represents the error details thrown as an exception by all RapidCode classes. This class contains an ...
char fileName[RSI_ERROR_TEXT_SIZE]
source file name
bool isWarning
Whether the error is or is not a warning.
static constexpr uint32_t RSI_ERROR_TEXT_SIZE
Error message text.
const char * what() const noexcept
Returns a null terminated character sequence that may be used to identify the exception.
char shortText[RSI_ERROR_TEXT_SIZE]
Error short text.
int32_t lineNumber
Source code line number.
char functionName[RSI_ERROR_TEXT_SIZE]
Function name of the raised the error.
RSIErrorMessage number
Error number.
int32_t objectIndex
Object index (0-based index of the object that has the error).
static void MaskSet(RSITrace mask)
Sets the specified trace mask.
static void MaskOnSet(RSITrace maskOn)
Turn on a particular trace output mask.
static void InjectMessage(RSITrace traceLevel, const char *const message)
Add a message to the Trace Log.
static bool MaskOnGet(RSITrace maskOn)
Check to see if a particular trace output mask is turned on.
static void MaskOffSet(RSITrace maskOff)
Turn off a particular trace output mask.
static void FileClose()
Stops Logging to the file.
static int32_t FileSet(const char *const fileName)
Channels Tracing messages to specified file.
static void MaskClear()
Clear the trace output mask.
Tracing allows for low level logs to be generated.
RSIFilterAlgorithm
Filter algorithms.
RSINetworkEniResult
NetworkEniGenerate return values.
RSIPDOType
Compensator output types.
RSIMathBlockOperation
MathBlock operations.
RSICompensatorOutputType
Compensator output types.
RSINetworkStartMode
Network start modes.
RSIMotorFeedbackFault
Feedbacks to use for Feedback Fault action.
RSIMotorStepperPulse
Pulse A or B.
RSIAxisGantryType
How to combine Axis Feedback Positions.
RSINetworkState
State of network.
RSIControllerAddressType
Used to get firmware address used in User Limits, Recorders, etc.
RSIMotorDisableAction
Action for when a motor is disabled.
RSIEventType
Event Types or Status Bits.
RSIMotionType
PT and PVT streaming motion types.
RSIDataType
Data types for User Limits and other triggers.
RSIUserLimitLogic
Logic options for User Limits.
RSIMotorIoTypeMask
Possible mask bits for Motor I/O types.
RSIAction
Action to perform on an Axis.
RSIAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
RSIProcessorType
Controller's processor type.
RSIMotorStepperPulseType
Stepper pulse type.
RSINetworkStartError
Network start errors.
RSIMotorGeneralIo
Motor I/O bit numbers.
RSIMotionAttrMask
Attribute masks for motion. You cannot mix RSIMotionAttrMaskDELAY and RSIMotionAttrMaskAPPEND.
RSIMultiAxisAddressType
Used to get firmware address used in User Limits, Recorders, etc.
RSIFilterGainPIDCoeff
PID gain coefficients.
RSIUserLimitTriggerType
Trigger types for UserLimits.
RSINetworkOutputAddressType
Network output address types.
INtimeStatus
INtime status values.
RSIMotionHoldType
Types for MotionHold attribute.
RSIControllerType
Controller type.
RSIMotorFaultMask
Mask values for several motor faults.
RSIHomeStage
Predefined Homing Stage sections.
RSIMotorBrakeMode
Brake modes.
RSIErrorMessage
All possible RSI Error Messages.
RSINetworkType
Type of Network topology.
RSIMotorIoType
Possible configurations for Motor I/O.
RSIAxisPositionInput
Feedback Positions for each Axis.
RSINodeType
Valid Node types.
RSISource
Possible sources that have caused an Error state.
RSIMotorDedicatedIn
Dedicated Input bits per motor.
RSIMotorFeedback
Encoders per motor.
RSIMotorDedicatedOut
Dedicated Output bits per motor.
RSIOperationMode
DS402 modes of operation.
RSIPathPlanType
Path motion planning types.
RSINetworkTechnologyType
Network technology type.
RSINetworkIndexType
Network PDO index types for configuring axis input/output mappings.
RSINetworkStartupMethod
Network startup methods.
RSIFilterGainPIVCoeff
PIV gain coefficients.
RSIAxisMasterType
Sources available to a slave Axis for electronic gearing & camming.
int32_t ControllerIndex
The index of the controller to create.
static constexpr int32_t RmpThreadPriorityMaximum
The maximum thread priority for the real-time system.
static constexpr int32_t CpuAffinityDefault
The default value for CpuAffinity specifying no particular CPU core to run on.
char NodeName[PathLengthMaximum]
[Windows/INtime] Indicate the INtime node on which the RMP and RMPNetwork processes run.
char RmpPath[PathLengthMaximum]
Location of the RMP firmware executable, license, and associated binaries and resources.
static constexpr int32_t ControllerIndexDefault
The default value for ControllerIndex.
static constexpr int32_t RmpThreadPriorityNoRealTime
The thread priority where real time properties (scheduler and relative priorities) are not set.
static constexpr int32_t RmpThreadPriorityMinimum
The minimum thread priority for the real-time system.
static constexpr int32_t RmpThreadPriorityMaximumDefault
The default value for RmpThreadPriorityMax.
static constexpr int32_t RmpThreadPriorityRange
The priority range required for RMP and RMPNetwork threads. Minimum thread priority is this +1.
int32_t CpuAffinity
[Linux] Indicate the CPU core on which the RMP and RMPNetwork processes run.
char NicPrimary[PathLengthMaximum]
Primary EtherCAT Network Interface (NIC) name.
int32_t RmpThreadPriorityMax
[Linux] The maximum thread priority. All threads of the RMP and RMPNetwork will be based off of this....
static constexpr uint32_t PathLengthMaximum
MotionController::CreationParameters Maximum string buffer length.
CreationParameters()
Instantiate with default values and all memory zeroed out.
char NicSecondary[PathLengthMaximum]
Secondary EtherCAT Network Interface (NIC) name. Reserved for future use.
CreationParameters for MotionController::Create.
RSIDataType ProcessDataType
Data type for processing.
MathBlock configuration structure.
RSIDataType OutputDataType
Data type for Output. (optional).
uint64_t OutputAddress
Host memory address for Output. The MathBlock will write its result to this address....
uint64_t InputAddress0
Host memory address for Input0. Represents the left-hand side operand in math operations.
RSIDataType InputDataType0
Data type for Input0. This is the data type of the left-hand side operand in math operations.
uint64_t InputAddress1
Host memory address for Input1. Represents the right-hand side operand in math operations.
RSIDataType InputDataType1
Data type for Input1. This is the data type of the right-hand side operand in math operations.
RSIMathBlockOperation Operation
Math operation to be performed. (+, -, *, /, etc) use RSIMathBlockOperationNONE to disable a MathBloc...
Union representing a generic RMP firmware value with multiple data types, stored in 64-bits.
float Float
Single precision (32-bit) floating-point.
int64_t Int64
64-bit signed integer.
uint8_t UInt8
8-bit unsigned integer.
int8_t Int8
8-bit signed integer.
double Double
Double precision (64-bit) floating-point.
int32_t Int32
32-bit signed integer.
uint16_t UInt16
16-bit unsigned integer.
int16_t Int16
16-bit signed integer.
uint32_t UInt32
32-bit unsigned integer.
uint64_t UInt64
64-bit unsigned integer.