Gearing

For gearing, we use SetAxisGear to link the master and slave axes.

In Gear.cpp, add the following code:

Copy
SetAxisGear
KsCommandStatus AssignGearSlave(int Master, int Slave)
{
    RtPrintf("Link a slave to the master for gearing.\n\n");

    KsCommandStatus gear = WaitForCommand(5, FALSE, SetAxisGear(
        Master,   //The index of the master axis.
        Slave,    //The index of the slave axis.
        FALSE,    //Determine whether the gear state is preserved after the motor is disabled.
        GEAR_NUMERATOR / GEAR_DENOMINATOR,   //The gear ratio.
        //For example, if the ratio is 3:2, the slave moves three units and master moves two.
        mcSetValue,   /*Master Value Source. Value of the master velocity used.
                        Can be the target velocity or the actual velocity.*/
        MAXIMUM_ACCELERATION,   //Acceleration for gearing in.
        MAXIMUM_DECELERATION,   //Deceleration for gearing in.
        MAXIMUM_JERK,           //Jerk fo gearing in.
        mcAborting              //Define how to blend the velocity of two functions.
    ));
    if (gear.Error)
        RtPrintf("SetAxisCam failed: %d\n\n", gear.ErrorId);

    return gear;
}

 

Output:

Motion command: MoveAxisVelocity

Direction: negative