Back to top

Key Tips on Dealing with 64-bit data on Modbus Communications Devices that only Support 32-bit data

08 Sep 2015
Jimmy Coleman

AKD servo driveMost of the AKD drive's parameters have a 32-bit data size, but some parameters have a 64-bit data size. Modbus communication on the AKD drive uses registers of a 16-bit data size. So for a 64-bit parameter, it takes four registers to send the data over Modbus.

There are many devices, including PLC's, HMI's, and PC programs that do not handle a 64-bit data size. So what can be done to read and write 64-bit values when working with Modbus and a device that only supports 32-bit values?

There are two approaches to limiting a 64-bit value to 32 bits. One is to simply not use the two upper registers. The other method is to use the Modbus addresses specifically made to be 32-bit versions of the 64-bit parameters.

In many cases, the position scaling can be set in such a way that the position values, such as PL.FB, will not exceed 32 bits. For example, if you set the position scaling to 10000 counts per motor revolution, then it would take 429,496 motor revolutions to fill up the 32-bit position value. If you never move the motor that far, then you will never use the upper two registers of the 64-bit position value.

For any parameter that may have a negative value, the sign bit is contained in the upper most 16-bit register. So if you choose to limit a 64-bit parameter to a 32-bit value by not using the upper two registers, then you will be eliminating the sign bit and the value will not be allowed to be negative. Just like you can use only the lower two registers of a 64-bit parameter to make it a 32-bit value, you can also just use the lowest 16-bit register of any parameter, whether 64-bit or 32-bit. There are many AKD parameters with values that never exceed 16 bits and always have a positive value.

The order of the Modbus registers is important. For the AKD drive, the Modbus address number is the address of the upper most register. Again with PL.FB, the address is 588, which is the address of the most significant register of that parameter. Register 591 is the lowest, or least significant, register. So keep in mind which registers you want to read or write to when using only a portion of the parameter data size. Registers 590 and 591 are the lower two registers (32 bits) of PL.FB. Modbus

The second method is to use the Modbus addresses that are remapped from 64-bit to 32-bit. For example, Modbus address 588 is for PL.FB and is four Modbus registers (588, 589, 590, and 591). Modbus address 2072 is for PL.FB as a 32bit data size, including the sign bit. It is two Modbus registers.

About the Author

Jimmy Coleman

Jimmy Coleman - Author
Jimmy Coleman is a Systems Engineer in the L2 Technical Support team in Kollmorgen Customer Support. He graduated from Virginia Tech in 1999 with a B.S. in Civil Engineering. Prior to working at Kollmorgen, Jimmy worked for a small company doing electrical and mechanical design and fabrication of customized instruments for analyzing petroleum products. Jimmy started at Kollmorgen in 2004. He is heavily involved in fieldbus communication protocols, along with supporting mechanical, servo, stepper, and programmable products in various applications. He enjoys the challenge of finding solutions for interesting applications. Most of Jimmy’s time away from work is spent enjoying time with his family. Some frequent activities include working on the house and cars, going bowling and roller skating, and going to the beach. You can reach Jimmy here: Jimmy Coleman

Blog Taxonomy Helper

Aerospace & Defense
Automated Guided Vehicles
Embedded Motion
Food Regulations
Installation Tips
Oil and Gas
University Partnerships