Status Messages
This document describes the status messages format of the ESCx controller.
info
- All listed datagram types are multicast
- All listed payloads use big-endian format
Interface Configuration
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.
note
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
Controller sendingCAN ID:
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] |
Status Message - Driver State 1
Controller sendingCAN ID:
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
Controller sendingCAN ID:
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
Controller sendingCAN ID:
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
Controller sendingCAN ID:
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
Controller sendingCAN ID:
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
Controller sendingCAN ID:
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
Controller sendingCAN ID:
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 |