Showing results for 
Search instead for 
Did you mean: 

Using LabView and Modbus to communicate with AKD Servo Drive

I am attempting to use the LabView Modbus library to communicate with a Kollmorgen AKD servo drive.  I am not using any control boards/cards, I have the AKD connected directly to my laptop via Ethernet.  I have made some progress with simple commands but am struggling with more complex commands and data.  I have created a series of simple vi's that execute a single command as building blocks.  Attached are vi's for clearing faults, enabling the drive, and turning on the drive (velocity mode) that seem to work although this has been some what of a hit and miss effort.  I need some basic understanding of how to format the AKD commands to control the drive and read the registers on the drive to provide feedback to the user.  I'm not proficient at hex, words, etc. but I can follow directions if someone who knows how to do this can explain it.  I'm actually wondering why there is not a library of functions to read/write and parse AKD commands using modbus seeing as NI is selling the AKD drives?

Download All
Message 1 of 7

Do you have other working samples in e.g. other languages (e.g. C#)?

Then you could run them and look, which commands are sent through serial port (use a serial port sniffer).

Hope this helps.


Eugen Wiebe
Bernstein AG
CLAD - Certified LabView Associate Developer
0 Kudos
Message 2 of 7

Hi Larry,


Looking at the AKD manual, I am not seeing any specific modbus coils enumerated for what commands you can send them.


Have you tried using AKD WorkBench to communicate with your device? You can download this software here:


Also, I found a discussion of using ModBus (including an overview powerpoint) with AKD on this forum:

Joey S.
Senior Product Manager, Software
National Instruments
0 Kudos
Message 3 of 7

I've used Workbench to setup and communicate with the servo.  All the commands in the CAD manual seem to work fine from Workbench.  It's more of a matter of formatting them in a vi to then send them to the drive over the Ethernet connection.

0 Kudos
Message 4 of 7

Can you tell me what format you need in order to send a specific command so I can help you create that in LabVIEW?


I found the Modbus TCP manual here:

This seemed to describe some of the tags we might need to use.

Joey S.
Senior Product Manager, Software
National Instruments
0 Kudos
Message 5 of 7

I am specifically interested in the following AKD commands:  

    Reads: PL.FB, DRV.Fault1, DRV.Active, IL.FB, AIN.VALUE



As a start, I built a vi that lets me read the values in the drive registers.  The attached screenshot example works with the PL.FB command and shows the values in the four registers.  How do I use the four values to arrive at the displacement as shown by the attached AKD Workbench screenshot  (360.230 degrees)?


0 Kudos
Message 6 of 7

Hi Larry,


Let's post this to the right forum to get better help:


1. If this is an issue related to correctly controlling your servo drive (syntax, third party software, commands), post it to the Motion Control and Motor Drives forum


2. If this is an issue related to how to correctly connect through Modbus, post it to the  Industrial Communications forum

Joey S.
Senior Product Manager, Software
National Instruments
0 Kudos
Message 7 of 7