RMP Motion Controller
10.7.1
APIs
, concepts, guides, and more
Community
Support
Contact
_helpers.cs
using
RSI.RapidCode
;
// RSI.RapidCode.dotNET;
public
static
class
Helpers
{
public
static
void
CheckErrors
(
RapidCodeObject
rsiObject)
{
var hasErrors =
false
;
var errorStrBuilder =
new
System.Text.StringBuilder();
while
(rsiObject.
ErrorLogCountGet
() > 0)
{
// get error
RsiError
rsiError = rsiObject.
ErrorLogGet
();
// get message
var errorMsg = rsiError.isWarning ? $
"WARNING: {rsiError.Message}"
: $
"ERROR: {rsiError.Message}"
;
errorStrBuilder.AppendLine(errorMsg);
// set flag
hasErrors = !rsiError.
isWarning
;
}
if
(hasErrors)
throw
new
Exception(errorStrBuilder.ToString());
}
public
static
void
NetworkStart
(
MotionController
controller)
{
// check if network is started already
if
(controller.
NetworkStateGet
() !=
RSINetworkState
.RSINetworkStateOPERATIONAL)
{
Console.WriteLine(
"Starting Network.."
);
// if not started, initialize the network
controller.
NetworkStart
();
}
// check if network is started again
if
(controller.
NetworkStateGet
() !=
RSINetworkState
.RSINetworkStateOPERATIONAL)
{
// read network log messages
int
messagesToRead = controller.
NetworkLogMessageCountGet
();
// print all the messages to help figure out the problem
for
(
int
i = 0; i < messagesToRead; i++)
Console.WriteLine(controller.
NetworkLogMessageGet
(i));
throw
new
SystemException(
"Expected OPERATIONAL state but the network did not get there."
);
}
else
{
Console.WriteLine(
"Network Started"
);
}
}
public
static
void
NetworkShutdown
(
MotionController
controller)
{
// check if the network is already shutdown
if
(controller.
NetworkStateGet
() ==
RSINetworkState
.RSINetworkStateUNINITIALIZED ||
controller.
NetworkStateGet
() ==
RSINetworkState
.RSINetworkStateSHUTDOWN)
return
;
// shutdown the network
Console.WriteLine(
"Shutting down the network.."
);
controller.
NetworkShutdown
();
// check if the network is shutdown
var networkState = controller.
NetworkStateGet
();
if
(networkState !=
RSINetworkState
.RSINetworkStateUNINITIALIZED &&
networkState !=
RSINetworkState
.RSINetworkStateSHUTDOWN)
{
// some kind of error shutting down the network, read the network log messages
int
messagesToRead = controller.
NetworkLogMessageCountGet
();
// print all the messages to help figure out the problem
for
(
int
i = 0; i < messagesToRead; i++)
Console.WriteLine(controller.
NetworkLogMessageGet
(i));
throw
new
SystemException(
"Expected SHUTDOWN state but the network did not get there."
);
}
else
{
Console.WriteLine(
"Network Shutdown"
);
}
}
public
static
void
ControllerSetup
(
MotionController
controller)
{
NetworkShutdown
(controller);
// reset the controller to ensure it is in a known state
controller.
Reset
();
NetworkStart
(controller);
}
public
static
void
PhantomAxisReset
(
Axis
phantomAxis)
{
if
(phantomAxis.
MotorTypeGet
() !=
RSIMotorType
.RSIMotorTypePHANTOM)
{
throw
new
Exception(@$
"Axis {phantomAxis.NumberGet()} is not configured as a phantom axis.
Please ensure the axis is set to phantom before calling PhantomAxisConfigure."
);
}
// abort any motion
AbortMotionObject
(phantomAxis);
// disable all limits (not used for phantom axes)
phantomAxis.
ErrorLimitActionSet
(
RSIAction
.RSIActionNONE);
phantomAxis.
HardwareNegLimitActionSet
(
RSIAction
.RSIActionNONE);
phantomAxis.
HardwarePosLimitActionSet
(
RSIAction
.RSIActionNONE);
phantomAxis.
HomeActionSet
(
RSIAction
.RSIActionNONE);
phantomAxis.
SoftwareNegLimitActionSet
(
RSIAction
.RSIActionNONE);
phantomAxis.
SoftwarePosLimitActionSet
(
RSIAction
.RSIActionNONE);
// set position tolerances to max value for immediate MotionDone
double
POSITION_TOLERANCE_MAX = Double.MaxValue / 10.0;
phantomAxis.
PositionToleranceCoarseSet
(POSITION_TOLERANCE_MAX);
phantomAxis.
PositionToleranceFineSet
(POSITION_TOLERANCE_MAX);
// set sample apps default motion parameters
phantomAxis.
UserUnitsSet
(1);
phantomAxis.
DefaultVelocitySet
(100);
phantomAxis.
DefaultAccelerationSet
(1000);
phantomAxis.
DefaultDecelerationSet
(1000);
phantomAxis.
DefaultJerkPercentSet
(0);
phantomAxis.
PositionSet
(0);
}
public
static
void
AbortMotionObject
(
RapidCodeMotion
motionObject)
{
motionObject.
EStopAbort
();
motionObject.
MotionDoneWait
();
motionObject.
ClearFaults
();
// check for idle state
if
(motionObject.
StateGet
() !=
RSIState
.RSIStateIDLE)
{
RSISource
source = motionObject.
SourceGet
();
// get state source enum
string
errorMsg = @$
"Axis or MultiAxis {motionObject.NumberGet()} failed to enter IDLE state after aborting.
The source of the axis error is: {motionObject.SourceNameGet(source)}"
;
throw
new
Exception(errorMsg);
}
}
}
Helpers.AbortMotionObject
static void AbortMotionObject(RapidCodeMotion motionObject)
Aborts motion on the given RapidCodeMotion object (Axis or MultiAxis), waits for motion to stop,...
Definition
_helpers.cs:186
Helpers.NetworkShutdown
static void NetworkShutdown(MotionController controller)
Shuts down the network communication for the given MotionController.
Definition
_helpers.cs:86
Helpers.CheckErrors
static void CheckErrors(RapidCodeObject rsiObject)
Checks for errors in the given RapidCodeObject and throws an exception if any non-warning errors are ...
Definition
_helpers.cs:15
Helpers.PhantomAxisReset
static void PhantomAxisReset(Axis phantomAxis)
Configures a phantom axis on the controller.
Definition
_helpers.cs:144
Helpers.NetworkStart
static void NetworkStart(MotionController controller)
Starts the network communication for the given MotionController.
Definition
_helpers.cs:47
Helpers.ControllerSetup
static void ControllerSetup(MotionController controller)
Sets up the controller for hardware use by resetting it and starting the network.
Definition
_helpers.cs:126
Helpers
Helpers class provides static methods for common tasks in RMP applications.
Definition
_helpers.cs:5
RSI::RapidCode::Axis::HardwareNegLimitActionSet
void HardwareNegLimitActionSet(RSIAction action)
Set the action that will occur when the Hardware Negative Limit Event triggers.
RSI::RapidCode::Axis::HardwarePosLimitActionSet
void HardwarePosLimitActionSet(RSIAction action)
Set the action that will occur when the Hardware Positive Limit Event triggers.
RSI::RapidCode::Axis::MotorTypeGet
RSIMotorType MotorTypeGet()
Get the motor type.
RSI::RapidCode::Axis::PositionToleranceCoarseSet
void PositionToleranceCoarseSet(double tolerance)
Set the Coarse Position Tolerance for Axis settling.
RSI::RapidCode::Axis::SoftwareNegLimitActionSet
void SoftwareNegLimitActionSet(RSIAction action)
Set the action that will occur when the Software Negative Limit Event triggers.
RSI::RapidCode::Axis::UserUnitsSet
void UserUnitsSet(double countsPerUserUnit)
Sets the number of counts per User Unit.
RSI::RapidCode::Axis::HomeActionSet
void HomeActionSet(RSIAction action)
Set the action that will occur when the Home Event triggers.
RSI::RapidCode::Axis::PositionToleranceFineSet
void PositionToleranceFineSet(double tolerance)
Set the Fine Position Tolerance for Axis settling.
RSI::RapidCode::Axis::ErrorLimitActionSet
void ErrorLimitActionSet(RSIAction action)
Set the action that will occur when the Error Limit Event triggers.
RSI::RapidCode::Axis::PositionSet
void PositionSet(double position)
Set the Command and Actual positions.
RSI::RapidCode::Axis::SoftwarePosLimitActionSet
void SoftwarePosLimitActionSet(RSIAction action)
Set the action that will occur when the Software Positive Limit Event triggers.
RSI::RapidCode::Axis
Represents a single axis of motion control. This class provides an interface for commanding motion,...
Definition
rsi.h:5862
RSI::RapidCode::Axis::DefaultVelocitySet
void DefaultVelocitySet(double velocity)
Set the default velocity in UserUnits.
RSI::RapidCode::Axis::DefaultAccelerationSet
void DefaultAccelerationSet(double acceleration)
Set the default acceleration in UserUnits.
RSI::RapidCode::Axis::DefaultDecelerationSet
void DefaultDecelerationSet(double deceleration)
Set the default deceleration in UserUnits.
RSI::RapidCode::Axis::DefaultJerkPercentSet
void DefaultJerkPercentSet(double jerkPercent)
Set the default jerk percent.
RSI::RapidCode::MotionController::NetworkStateGet
RSINetworkState NetworkStateGet()
RSI::RapidCode::MotionController::Reset
void Reset()
Reset the controller which stops and restarts the RMP firmware.
RSI::RapidCode::MotionController::NetworkShutdown
void NetworkShutdown()
Shutdown the EtherCAT network.
RSI::RapidCode::MotionController::NetworkStart
void NetworkStart()
Start the network, doing both a discovery followed by starting to OPERATIONAL state.
RSI::RapidCode::MotionController::NetworkLogMessageGet
const char *const NetworkLogMessageGet(int32_t messageIndex)
RSI::RapidCode::MotionController::NetworkLogMessageCountGet
int32_t NetworkLogMessageCountGet()
RSI::RapidCode::MotionController
Represents the RMP soft motion controller. This class provides an interface to general controller con...
Definition
rsi.h:800
RSI::RapidCode::RapidCodeMotion::ClearFaults
void ClearFaults()
Clear all faults for an Axis or MultiAxis.
RSI::RapidCode::RapidCodeMotion::MotionDoneWait
int32_t MotionDoneWait()
Waits for a move to complete.
RSI::RapidCode::RapidCodeMotion::StateGet
RSIState StateGet()
Get the Axis or MultiAxis state.
RSI::RapidCode::RapidCodeMotion::SourceGet
RSISource SourceGet()
Get the source of an error state for an Axis or MultiAxis.
RSI::RapidCode::RapidCodeMotion::EStopAbort
void EStopAbort()
E-Stop, then abort an axis.
RSI::RapidCode::RapidCodeMotion
The RapidCodeMotion interface is implemented by Axis and MultiAxis .
Definition
rsi.h:4311
RSI::RapidCode::RapidCodeObject::ErrorLogGet
const RsiError *const ErrorLogGet()
Get the next RsiError in the log.
RSI::RapidCode::RapidCodeObject::ErrorLogCountGet
int32_t ErrorLogCountGet()
Get the number of software errors in the error log.
RSI::RapidCode::RapidCodeObject
The RapidCode base class. All non-error objects are derived from this class.
Definition
rsi.h:184
RSI::RapidCode::RsiError
Represents the error details thrown as an exception by all RapidCode classes. This class contains an ...
Definition
rsi.h:111
RSI::RapidCode::RsiError::isWarning
bool isWarning
Whether the error is or is not a warning.
Definition
rsi.h:120
RSI::RapidCode::RSINetworkState
RSINetworkState
State of network.
Definition
rsienums.h:568
RSI::RapidCode::RSIAction
RSIAction
Action to perform on an Axis.
Definition
rsienums.h:1115
RSI::RapidCode::RSIMotorType
RSIMotorType
Motor Type.
Definition
rsienums.h:1311
RSI::RapidCode::RSISource
RSISource
Possible sources that have caused an Error state.
Definition
rsienums.h:1014
RSI::RapidCode::RSIState
RSIState
Definition
rsienums.h:879
RSI::RapidCode
Generated by
1.10.0