Skip to main content
Firmware Stable

Drive Command Message

The ESCx motor driver can be controlled remotely via communication interfaces such as CAN Bus by sending the drive command directly. The structure of drive command is detailed in the Driver documentation. Reception of this message overrides the Application and initiates direct control. This override lasts for 200ms. If no new command message is received within this period, control reverts to the Application.

info
  • All listed datagram types are unicast with SID = 25
  • All listed payloads use big-endian format
warning

For driver command API usage, it is recommended to disable your application by setting parameter /common/appsel to 10.

While the API takes priority over the application, leaving the application enabled may cause errors or motor beeping.

Interface Configuration
Advanced

For payloads with an even number of bytes, the first byte must contain a live counter. The receiver must increment this counter in each transmission, or the message will be ignored. This prevents runaway situations (e.g., transmitter repeating the same payload without process context linkage).

Multiple motor driver command message formats exist, varying in message length and datatypes.

Driver Command 1 (Fixed Point Command)

Without Live Counter (payload length = 3)

Controller receivingCAN ID: 0x0CF(25 << 3) + 7 host address|Controller address: 0x00
Datagram byteValue / typeDescription
00x00Controller address (link layer)
1uint8Driver mode
2-3int16Driver cmd, -32768 to 32767 mapped to range -1 to 1. Value transmitted as big-endian (MSB first).

With Live Counter (payload length = 4)

Controller receivingCAN ID: 0x0CF(25 << 3) + 7 host address|Controller address: 0x00
Datagram byteValue / typeDescription
00x00Controller address (link layer)
1uint8Live counter
2uint8Driver mode
3-4int16Driver cmd, -32768 to 32767 mapped to range -1 to 1. Value transmitted as big-endian (MSB first).

Driver Command 2 (Floating Point Command)

Without Live Counter (payload length = 5)

Controller receivingCAN ID: 0x0CF(25 << 3) + 7 host address|Controller address: 0x00
Datagram byteValue / typeDescription
00x00Controller address (link layer)
1uint8Driver mode
2-5floatDriver cmd. Float value transmitted as big-endian (MSB first).

With Live Counter (payload length = 6)

Controller receivingCAN ID: 0x0CF(25 << 3) + 7 host address|Controller address: 0x00
Datagram byteValue / typeDescription
00x00Controller address (link layer)
1uint8Live counter
2uint8Driver mode
3-6floatDriver cmd. Float value transmitted as big-endian (MSB first).

Driver Command 3 (Fixed Point Command with Multipliers)

Without Live Counter (payload length = 7)

Controller receivingCAN ID: 0x0CF(25 << 3) + 7 host address|Controller address: 0x00
Datagram byteValue / typeDescription
00x00Controller address (link layer)
1uint8Driver mode
2-3int16Driver cmd, -32768 to 32767 mapped to range -1 to 1. Value transmitted as big-endian (MSB first).
4-5uint16Driver imult and rmult, 0 to 65535 mapped to range 0 to 1.
6-7uint16Driver umult, 0 to 65535 mapped to range 0 to 1.