CANopen Integration
Node ID and Baud Rate
The default node ID is 1. To change it, write to EEPROM[0x2001] via SDO before NMT boot:
cansend can0 601#2F200120[new_node_id]00
Supported baud rates:
| Baud Rate | Max Nodes | Recommended |
|---|---|---|
| 1 Mbit/s | 16 | Short stub topology |
| 500 kbit/s | 32 | Standard actuator chain |
| 250 kbit/s | 63 | Long cable runs >10 m |
NMT State Machine
On power-up, each TK actuator enters the Initialization state and automatically transitions to Pre-Operational. To transition to Operational:
cansend can0 000#0101
This sends the NMT Start-node command to node ID 1. Use 0100 to broadcast to all nodes.
PDO Mapping
Default RPDO1 (receive from master → actuator, 0x1600):
- Bytes 0–3: Target position (INT32,
0x607A) - Bytes 4–5: Control word (UINT16,
0x6040)
Default TPDO1 (transmit from actuator → master, 0x1A00):
- Bytes 0–3: Position actual value (INT32,
0x6064) - Bytes 4–5: Status word (UINT16,
0x6041) - Bytes 6–7: Actual torque (INT16,
0x6077)
Key Object Dictionary Entries
| Index | Name | Default |
|---|---|---|
| 0x6060 | Modes of operation | 8 (pos) |
| 0x6081 | Profile velocity | 1000 rpm |
| 0x6083 | Profile acceleration | 500 rpm/s |
| 0x607E | Polarity | 0x00 |
| 0x2010 | Impedance Kp | 20.0 |
| 0x2011 | Impedance Kd | 1.5 |
SocketCAN Command Example
sudo ip link set can0 up type can bitrate 500000
sudo ip link set can0 up
cansend can0 601#2B606000[mode]0000
cansend can0 601#2B607A00[target_pos_bytes]
Replace [mode] with 08 for profile position, 09 for profile velocity, or 0A for torque mode. Target position uses little-endian INT32 in brackets.