From RSI - Robotic Systems Integration - SynqNet Systems
Mechanical gearing consists of a master unit and a slave unit linked mechanically by a ratio determined by the number of teeth on the input gear and the output gear.

Electronic gearing can achieve the same relationship without the mechanical linkage. This can be useful for many different systems:
Gantry systems where one unit must follow another in the same direction

- MotionController *controller; Axis *axisX0; Axis *axisX1;
- controller = MotionController::CreateFromBoard(RSI_BOARD);
- Get Axis X0 and X1 respectively. axisX0 = controller->AxisGet(0); axisX1 = controller->AxisGet(1);
- Setup Gearing axisX1->GearingEnable(axisX0->NumberGet(), RSIAxisMasterTypeAXIS_COMMANDED_POSITION , 1, 1);
- Move to the endof track axisX0->MoveSCurve(2500, VELOCITY, ACCELERATION, DECELERATION, JERK_PERCENT);
- Wait till motion is complete axisX0->MotionDoneWait();
In-feed systems where two pinch-rollers must rotate in an inverse relationship (1:-1)

- MotionController *controller; Axis *axisX0; Axis *axisX1;
- controller = MotionController::CreateFromBoard(RSI_BOARD);
- Get Axis X0 and X1 respectively. axisX0 = controller->AxisGet(0); axisX1 = controller->AxisGet(1);
- Setup Gearing axisX1->GearingEnable(axisX0->NumberGet(), RSIAxisMasterTypeAXIS_COMMANDED_POSITION , -1, 1);
- Command motion Move to the end of spool axisX0->MoveSCurve(2500, VELOCITY, ACCELERATION, DECELERATION, JERK_PERCENT);
Conveying systems where the ratio between the pay-out & take-up spool continuously changes as product is moved from one to the other (1:4) at start (4:1) at end

- int num = 4, den = 1; MotionController *controller; Axis *axisX0; Axis *axisX1;
- controller = MotionController::CreateFromBoard(RSI_BOARD);
- Get Axis X0 and X1 respectively. axisX0 = controller->AxisGet(0); axisX1 = controller->AxisGet(1);
- Initial Ratio axisX1->GearingEnable(axisX0->NumberGet(), RSIAxisMasterTypeAXIS_COMMANDED_POSITION , num, den);
- Move to the end of spool axisX0->MoveSCurve(2500, VELOCITY, ACCELERATION, DECELERATION, JERK_PERCENT);
- Change ratio based on dancer D0 while moving
while(!axisX0->MotionDoneGet()) {
if(D0 > Deadband); axisX0->GearingRatioChange(num + 1, den - 1); else if(D0 < Deadband) axisX0->GearingRatioChange(num - 1, den + 1);
Disable gearing to allow loading of new spool axisX->GearingDisable();