System Units#
CANopen carries integers, not physical quantities. Every object in the MD object dictionary uses one of the scalings below. Getting this wrong is the most common cause of a drive that moves a thousand times too far, so read this page before writing any setpoint.
Position, velocity and acceleration#
The drive works in micro-revolutions of the output shaft. One full output revolution is 1 000 000 increments.
Quantity |
Unit |
Objects |
|---|---|---|
Position |
micro-revolutions |
0x6064, 0x607A, 0x6067, 0x607B, 0x607D, 0x2002:5 |
Velocity |
micro-revolutions per second |
0x606C, 0x60FF, 0x6080, 0x2002:6 |
Acceleration |
micro-revolutions per second squared |
0x6083, 0x6084, 0x6085 |
The drive publishes these scalings through the CiA 402 SI unit objects, which are read-only:
Object |
Name |
Value |
|---|---|---|
0x60A8 |
SI Unit Position |
0xFAB40000 |
0x60A9 |
SI Unit Velocity |
0xFAB40300 |
0x60AA |
SI Unit Acceleration |
0xFAB45700 |
Converting to and from radians, which is what the MD Protocol and the CANdle SDK use:
increments = radians * 1000000 / (2 * pi)
radians = increments * (2 * pi) / 1000000
Some worked values:
Physical value |
Object value |
|---|---|
1 revolution |
1 000 000 |
90 degrees |
250 000 |
1 rad |
159 155 |
1 rev/s (60 rpm) |
1 000 000 |
1 rad/s |
159 155 |
Position is multi-turn and signed. The full INT32 range covers roughly plus or minus 2147 output revolutions before the counter wraps.
Note
All of these are output shaft quantities. The gear ratio in 0x6091 is applied by the drive, so you never convert for the gearbox yourself.
Torque and current#
Torque and current setpoints are expressed in thousandths of the corresponding rated value, as CiA 402 requires. The rated values themselves are absolute.
Object |
Name |
Unit |
|---|---|---|
0x6076 |
Motor Rated Torque |
mNm |
0x6071 |
Target Torque |
1/1000 of Motor Rated Torque |
0x6072 |
Max Torque |
1/1000 of Motor Rated Torque |
0x6077 |
Torque Actual Value |
1/1000 of Motor Rated Torque |
0x6075 |
Motor Rated Current |
mA |
0x6073 |
Max Current |
1/1000 of Motor Rated Current |
For example, with Motor Rated Torque set to 1000 (1 Nm), a Target Torque of 250 commands 0.25 Nm, and a Max Torque of 2000 allows twice the rated torque.
Important
Motor Rated Torque and Motor Rated Current must be written before any of the per-mille objects. While either rated value is still zero the drive cannot compute the scaling and aborts the transfer with code 0x08000020, data cannot be transferred or stored to the application.
Other quantities#
Object |
Name |
Unit |
|---|---|---|
0x6079 |
DC Link Circuit Voltage |
mV |
0x2004:1 |
Power Stage Temperature |
degrees Celsius |
0x2004:2 |
Motor Temperature |
degrees Celsius |
0x2000:3 |
Phase Inductance |
H, IEEE-754 single precision |
0x2000:4 |
Phase Resistance |
ohm, IEEE-754 single precision |
0x2000:5 |
Torque Bandwidth |
Hz |
0x2000:7 |
Motor Shutdown Temperature |
degrees Celsius |
0x2000:9 |
Motor Torque Constant |
Nm/A, IEEE-754 single precision |
0x2000:A |
Motor KV Rating |
RPM/V, IEEE-754 single precision |
0x2003:2 |
Torque Sensor Value |
Nm, IEEE-754 single precision |
0x1017 |
Producer Heartbeat Time |
ms |
0x6091:1 |
Motor Revolutions |
dimensionless |
0x6091:2 |
Shaft Revolutions |
dimensionless |
Controller gains in 0x2010, 0x2011 and 0x2012 are IEEE-754 single precision values and are not scaled. They operate on the shaft quantities described above.
Note
Every multi-byte value, including the floating point ones, is transferred little endian. Some CANopen configuration tools display REAL32 objects as raw integers. If a gain reads back as a large meaningless number, the tool is showing you the bit pattern rather than the float.