Communication Protocol
The Alius Robot Joint Module communicates with the controller via the CAN / CAN-FD bus. This document describes in detail the data frame format, command set, and status feedback mechanism of the communication protocol, helping developers achieve reliable communication with the joint module.
Protocol Overview
The joint module uses a custom application-layer protocol based on the CAN bus. The protocol design follows these principles:
- Simplicity and Efficiency: Command and data frame formats are compact, minimizing bus load.
- Flexible Extensibility: Supports both standard CAN 2.0A and CAN-FD frame formats, selectable based on bandwidth requirements.
- Reliable Transmission: Both critical commands and status data include CRC verification to ensure data transmission integrity.
Each joint module has a unique node ID (1–127) on the bus. The controller distinguishes different modules by their node IDs. The node ID can be configured via software and is stored in the module’s non-volatile memory.
CAN Identifier Allocation
The CAN identifier (CAN ID) uses the 11-bit standard frame format, structured as follows:
Bits [10:7] – Function Code
Bits [6:0] – Node ID
Function code definitions:
| Function Code | Name | Direction | Description |
|---|---|---|---|
| 0x0 | Heartbeat Frame | Module → Controller | Periodically sent status heartbeat |
| 0x1 | Control Command | Controller → Module | Position/velocity/torque control command |
| 0x2 | Status Feedback | Module → Controller | Real-time position, velocity, and torque feedback |
| 0x3 | Parameter Read/Write | Bidirectional | Read/write module parameters |
| 0x4 | Fault Report | Module → Controller | Fault code and detailed information |
| 0x5 | Firmware Update | Bidirectional | Firmware update data stream |
Control Command Frames
Position Control Mode
Data frame format (8 bytes):
| Byte | Field | Description |
|---|---|---|
| 0 | Command Type | 0x01 = Position Control |
| 1–3 | Target Position | 32-bit signed integer, unit: encoder counts |
| 4–5 | Target Velocity | 16-bit signed integer, unit: 0.1 °/s |
| 6–7 | Control Parameters | High 8 bits: acceleration profile; Low 8 bits: reserved |
Velocity Control Mode
Data frame format (8 bytes):
| Byte | Field | Description |
|---|---|---|
| 0 | Command Type | 0x02 = Velocity Control |
| 1–2 | Target Velocity | 16-bit signed integer, unit: 0.1 °/s |
| 3–4 | Acceleration | 16-bit unsigned integer, unit: °/s² |
| 5–7 | Reserved | — |
Torque Control Mode
Data frame format (8 bytes):
| Byte | Field | Description |
|---|---|---|
| 0 | Command Type | 0x03 = Torque Control |
| 1–2 | Target Torque | 16-bit signed integer, unit: 0.1 N·m |
| 3–7 | Reserved | — |
Status Feedback Frame
The module sends a status feedback frame at a configurable period (default 10 ms). Frame format (8 bytes):
| Byte | Field | Description |
|---|---|---|
| 0 | Status Flags | Bit 0: Enable status; Bit 1: Fault flag; Bit 2: In-position flag |
| 1–3 | Current Position | 32-bit signed integer, unit: encoder counts |
| 4–5 | Current Velocity | 16-bit signed integer, unit: 0.1 °/s |
| 6–7 | Current Torque | 16-bit signed integer, unit: 0.1 N·m |
Parameter Read/Write
Read Parameter
Request frame format:
| Byte | Field | Description |
|---|---|---|
| 0 | Operation Code | 0x01 = Read |
| 1–2 | Parameter ID | 16-bit unsigned integer |
| 3–7 | Reserved | — |
Response frame format:
| Byte | Field | Description |
|---|---|---|
| 0 | Operation Code | 0x81 = Read Response |
| 1–2 | Parameter ID | Same as in request frame |
| 3–6 | Parameter Value | 32-bit data, format depends on parameter type |
| 7 | Status Code | 0x00 = Success; Non-zero = Error code |
Common Parameter IDs
| Parameter ID | Name | R/W | Description |
|---|---|---|---|
| 0x0001 | Node ID | R/W | Module CAN node ID |
| 0x0002 | Communication Baud Rate | R/W | 0 = 1Mbps; 1 = 2Mbps; 2 = 5Mbps (CAN-FD) |
| 0x0003 | Control Mode | R/W | 0 = Position; 1 = Velocity; 2 = Torque |
| 0x0004 | Zero Offset | R/W | Encoder zero offset |
| 0x0005 | Temperature Limit | R/W | Overtemperature protection threshold, unit: °C |
| 0x0006 | Current Limit | R/W | Peak current limit, unit: 0.1 A |
Error Handling
When a fault is detected, the module immediately sends a fault report frame and enters a protective state (ceases torque output).
Fault code definitions:
| Code | Name | Description | Recovery Method |
|---|---|---|---|
| 0x01 | Over-current Fault | Phase current exceeds safety threshold | Power cycle restart |
| 0x02 | Overtemperature Fault | Module internal temperature exceeds protection threshold | Automatic recovery after temperature decreases |
| 0x03 | Encoder Fault | Encoder signal abnormal or timeout | Check connection, power cycle restart |
| 0x04 | Communication Timeout | No control command received for 500 ms continuously | Automatically cleared after communication resumes |
| 0x05 | Undervoltage Fault | Supply voltage below 22 VDC | Automatically cleared after voltage recovers |
| 0x06 | Overvoltage Fault | Supply voltage above 52 VDC | Automatically cleared after voltage recovers |
CAN-FD Extension
When using CAN-FD communication, the data frame length can be extended to 64 bytes, supporting higher-bandwidth status feedback and firmware update data transmission. The CAN-FD frame format is compatible with the standard CAN frame format; the controller can automatically identify the frame type.
It is recommended to prioritize the use of CAN-FD communication in multi-joint coordinated control scenarios to achieve lower communication latency and higher data throughput.