APIs, concepts, guides, and more
Drive-Based Homing (AKD ASCII)

Optimize homing accuracy using drive-based ASCII commands on AKD drives, reducing network latencies and allowing extensive customization through various homing methods and configurations.

🔹 What is AKD Drive Based ASCII Homing?

AKD Drive-based ASCII homing uses preloaded methods available on the drive. This allows for homing to be performed entirely in the drive without network latencies producing more accurate results. Drive homing is the recommended homing strategy.

Note
We have created a separate version for Kollmorgen AKD servo drive because even though the drive is part of the DS402 standard, its ASCII commands are more powerful and much easier to use. Instead of writing to SDOs, we will send ASCII commands to the AKD drive.

🔹 AKD Drive Based Homing Using ASCII

1. Drive Configuration

DRV.OPMODE 2 - Set the drive to Position Operation Mode.

HOME.AUTOMOVE 0 - Make sure that automove is disabled. Unless you would like to trigger homing when amp/axis gets enabled.

Now, since we are running CANopen DS402 or EtherCAT, it is required that we set object/index 0x6060 through CAN/EtherCAT communication.

Index 0x6060 represents Mode of Operation. When homing we must specify the homing mode, and when homing is done we must go back to default mode.

We change the mode by writing to the SDO.

modeOfOpIndex = 0x6060; // Mode of Operation (DS402 Standard)
modeOfOpSubindex = 0x0; // Subindex
modeOfOpByteSize = 1; // INTEGER8 (1 byte)
modeOfOpValueToHOME = 6; // Hex value to determine Mode (6 = Homing mode)
Axis.NetworkNode.ServiceChannelWrite(modeOfOpIndex, modeOfOpSubindex, modeOfOpByteSize, modeOfOpValueToHOME);

2. Dedicated Limit Switch Configuration (optional - dependent upon specific homing method)

*** If you are not using limit switches skip this section.

In this example we are using: Homing Method 1: Find Limit Input.

Image

The ‘Find Limit Input’ method creates a move to a limit input. This method can be used if you have a positive or negative limit switch available that you want to establish as a home reference point.

Note
Limit switches should be set to Active Low (this means the state of the limit switch will be HIGH when not triggered).

AKD Digital Input Parameters:

DIN5.MODE 18 // Sets the digital input modes. - DI5 is now our Positive Limit Switch.
DIN5.INV 1 // Sets the indicated polarity of a digital input mode. - DI5 is now active when Low.
DIN6.MODE 19 // Sets the digital input modes. - DI6 is now our Negative Limit Switch.
DIN6.INV 1 // Sets the indicated polarity of a digital input mode. - DI6 is now active when Low.

Check the Kollmorgen AKD User Guide (www.kollmorgen.com) to learn about the different Homing methods.

2b. RMP to AKD position unit conversions

RMP position units from the AKD will be in counts. For rotary motors, the counts per revolution will be defined by the AKD parameter FB1.PSCALE (primary feedback position scale). The default value is 20, which yields 2^20 counts/revolution.

AKD Homing parameters will be in AKD drive units and are different for rotary and linear motors. Units depend on UNIT.VROTARY or UNIT.VLINEAR which can be:

Rotary: rpm, rps, deg/s, Custom Units/s, rad/s

Linear: counts/s, mm/s, µm/s, Custom Units/s

Similarly, check or confirm UNIT.ACCROTARY and UNIT.ACCLINEAR are set as expected.

3. Homing Parameter Configuration

AKD Home Parameters:

HOME.MODE // Selects the homing method.
HOME.V // Sets homing velocity.
HOME.ACC // Sets homing acceleration.
HOME.DEC // Sets homing deceleration.
HOME.DIR // Sets homing direction. (0 = negative | 1 = positive)
HOME.P // Sets home position.
HOME.DIST // Sets homing distance.
HOME.MAXDIST // Sets the maximum distance the motor is allowed to move during the homing routine. (Disabled when value = 0)
HOME.IPEAK // Sets the current limit during homing procedure to a mechanical stop. Or use default.

Check the Kollmorgen AKD User Guide (visit www.kollmorgen.com) for all other Home parameters.

4. Ready Axis

Axis.Abort(); // Disable the Axis.
Axis.ClearFaults(); // Clear any Faults.
Axis.AmpEnableSet(true); // Enable the axis to trigger the home start.
Warning
Ensure people and objects are clear of motion.

5. Start Homing

HOME.MOVE // Command to start homing

6. Check Homing Status

You can monitor the Status Word to determine if/when homing is complete:

Status Word - bit 12 = 1(HIGH), if Homing was attained.

Status Word - bit 13 = 1(HIGH), if there was a Homing error.

If the drive homed properly, it will have set the RMP Actual Position to zero.

7. Clean Up

Axis.Abort() - Disable the Axis. This will disable the Axis and it will automatically set Command Position equal to the Actual Position. This is a required step before changing the control mode and enabling the Axis.

Restore the mode of operation to the control mode you want to run in. (Only do this when Axis is DISABLED.)

modeOfOpIndex = 0x6060 // Mode of Operation (DS402 Standard)
modeOfOpSubindex = 0x0 // Subindex
modeOfOpByteSize = 1 // INTEGER8 (1 byte)
modeOfOpValueToDEFAULT = 7 // Hex value to determine Mode (7 = Interpolated position)
Axis.NetworkNode.ServiceChannelWrite(modeOfOpIndex, modeOfOpSubindex, modeOfOpByteSize, modeOfOpValueToDEFAULT);

🔹 AKD Homing Methods

Note
Please refer to the link below for details on each homing mode to help you select appropriate mode for specific axis.
Detailed homing mode link
When using any of the methods that use homing switches and limits, please refer to the Input/Output section for proper wiring techniques.
Link to AKD online help

HOME.MODE 0: Home Using Current Position.

Image

HOME.MODE 1: Find limit input.

Image

HOME.MODE 2: Find input limit then find zero angle.

Image

HOME.MODE 3: Find input limit then find index.

Image

HOME.MODE 4: Find home input.

Image

HOME.MODE 5: Find home input then find zero angle.

Image

HOME.MODE 6: Find home input then find index.

Image

HOME.MODE 7: Find zero angle.

Image

HOME.MODE 8: Move until position error exceeded.

Image

HOME.MODE 9: Move until position error exceeded, then find zero angle.

Image

HOME.MODE 10: Move until position error exceeded, then find index.

HOME.MODE 10*

HOME.MODE 11: Find index signal.

HOME.MODE 11

HOME.MODE 12: Home to home-switch, including mechanical stop detection.

HOME.MODE 12

HOME.MODE 13: Home to feedback position.

Image

HOME.MODE 12: Home to home-switch for rotary applications.

HOME.MODE 12

HOME.MODE 15: Find next feedback zero position.

Image

HOME.MODE 16: Find home input with dual edges.

Image

HOME.MODE 17: Absolute Mode - Calculate and save offset.

HOME.MODE 18: Find home input, then find next feedback zero position.

📜 Sample Code