Status Messages
This document describes the status messages format of the ESCx controller.
- All listed datagram types are multicast
- All listed payloads use big-endian format
Advanced
Relative Units
To optimize communication bandwidth, some data uses relative units and ranges instead of floating-point values. Ranges represent real units (Volts, Amps) and are transmitted in the Range and Reference message. Current range applies to all current values, and voltage range applies to all voltage values.
Converting relative units to absolute values:
VMEAS = (relative value / 32767) * VRANGE
Use the specified range when provided in the message description.
Range Examples: Voltage and current ranges remain constant for each specification. With a single controller type, ranges can be hardcoded.
Example:
- esc3-sc1_24dxa0840
- Urange = 80
- Irange = 400
| Controller Voltage Range | Urange |
|---|---|
| 60V | 60 |
| 80V | 80 |
| 100V | 100 |
| Controller Current Range | Irange |
|---|---|
| 100A | 100 |
| 400A | 400 |
| 600A | 600 |
Status Message - Range and Reference
0x0D8(27 << 3) + 0 controller address| Datagram byte | Value / type | Description |
|---|---|---|
| 0-1 | uint16 | Urange - voltage range |
| 2-3 | uint16 | Irange - current range |
| 4-5 | uint16 | /driver/motor/Uref [V] |
| 6-7 | uint16 | /driver/motor/Iref [A] |
The Uref field carries the resolved voltage reference [V] (the voltage actually used by the driver), not the raw uref parameter. With uref = 0 it streams the available bus voltage; hosts that read this field back as the parameter value must be updated.
Status Message - Driver State 1
0x0D0(26 << 3) + 0 controller address| Datagram byte | Value / type | Description |
|---|---|---|
| 0 | bit 0-3 | /driver/enabled |
| 0 | bit 4-7 | Driver algorithm (BLDC: bit4 enabled, VECTOR: bit5 enabled) |
| 1 | uint8 | /driver/stat |
| 2 | uint8 | /driver/mode |
| 3 | int8 | /driver/temp |
| 4-5 | uint16 | /driver/limit |
| 6-7 | uint16 | /driver/error |
Status Message - Driver State 2
0x120(36 << 3) + 0 controller address| Datagram byte | Value / type | Description |
|---|---|---|
| 0-1 | int16 | /driver/cmd (-32767 to 32767) |
| 2-3 | uint16 | /driver/totallimit (0 to 65535) |
| 4-5 | uint16 | /driver/ptctemp [-] (no scaling) |
| 6 | uint8 | /driver/imult (0 to 255) |
| 7 | uint8 | /driver/umult (0 to 255) |
Status Message - Supply 1
0x0E0(28 << 3) + 0 controller address| Datagram byte | Value / type | Description |
|---|---|---|
| 0-1 | int16 | /driver/supply/currentf in relative units |
| 2-3 | int16 | /driver/supply/voltage in relative units |
| 4-7 | int32 | /driver/supply/cap [mAh] |
Status Message - Motor 1
0x0F0(30 << 3) + 0 controller address| Datagram byte | Value / type | Description |
|---|---|---|
| 0-1 | int16 | Motor current amplitude (q+d axis) in relative units |
| 2-3 | int16 | /driver/motor/voltage in relative units |
| 4-7 | int32 | /driver/motor/energy [J] |
Status Message - Motor 2
0x0F8(31 << 3) + 0 controller address| Datagram byte | Value / type | Description |
|---|---|---|
| 0-1 | int16 | /driver/power in relative units. Range: Urange*Irange. |
| 2-3 | int16 | Mechanical angle [radian]. Range: 3.14. |
| 4-5 | int16 | /driver/motor/rpmf. Range: int16 * 8. |
| 6-7 | int16 | /driver/motor/odo. Range: 1. |
Status Message - Motor 3
0x100(32 << 3) + 0 controller address| Datagram byte | Value / type | Description |
|---|---|---|
| 0-1 | int16 | /driver/motor/currentqf in relative units |
| 2-3 | int16 | /driver/motor/voltageq in relative units |
| 4-5 | int16 | /driver/motor/currentdf in relative units |
| 6-7 | int16 | /driver/motor/voltaged in relative units |
Status Message - Motor 4
0x108(33 << 3) + 0 controller address| Datagram byte | Value / type | Description |
|---|---|---|
| 0-1 | int16 | Rthermistor [ohm] |
| 2-3 | int16 | /driver/motor/mres [mohm] |
| 4-5 | int16 | Actual motor torque [Nm] * 100 |
| 6-7 | int16 | Maximum possible torque [Nm] * 100 |