We had a very strange occurrence last night where on our geared move one axis didn’t move. This is a move that we run successfully thousands of times a day, but on one move the Z axis didn’t follow (ZL is the leader, and Z, ZR and ZB are the followers). Our code looks like this:
//based on code from gearing.cpp RSI sample code
// Configure the ‘slave’ axes to be a slave to the ‘master’ axis (ZL) at a ratio of 1:1
pZ->GearingEnable(pZL, RSIAxisMasterType::RSIAxisMasterTypeAXIS_ACTUAL_POSITION, 1, 1);
pZR->GearingEnable(pZL, RSIAxisMasterType::RSIAxisMasterTypeAXIS_ACTUAL_POSITION, 1, 1);
pZB->GearingEnable(pZL, RSIAxisMasterType::RSIAxisMasterTypeAXIS_ACTUAL_POSITION, 1, 1);
auto axisState = pZL->StateGet();
if (axisState == RSIState::RSIStateERROR || axisState == RSIState::RSIStateSTOPPING_ERROR)
{
auto errorSource = pZL->SourceGet();
auto errorDescription = pZL->SourceNameGet(errorSource);
... Report error and EStop
return false;
}
... Continue to do SCurve move
Should we check the state of all the axes and not just the leader before doing a move?