Canopen
CANOpen
It is not possible to ship controller with CANOpen from the siliXcon factory, because the CANOpen protocol is in conflict with siliXcon service protocol. If the CANOpen protocol is enabled, siliXcon manufacturing tools are not working.
How to enable the CANOpen
The CANOpen protocol is in conflict with siliXcon service protocol. To enable CANOpen, you need to disable the siliXcon service protocol. As a result, the emGUI, upgrade and other tools will not work over CAN bus. For configuring the controller, please use USB.
First upgrade the controller to a firmware with canopen support. Usually the firmware SWID ends with _canopen. Like VECTOR_ECHO_canopen.
Then disable the siliXcon service protocol, run command protoconf 3 0
Using parameter coadr, you can set the CANOpen address of the controller. The address must be in range 1-127. The default address is 1.
EDS file
If you can, use the XDD file, because more comments and descriptions are included.
Supported services
| Service | Support |
|---|---|
| NMT (network management) | Start / Stop / Enter pre-operational. Reset node and reset communication are acknowledged but perform no action. |
| EMCY (emergency) | Sent automatically when the controller error state changes. |
| SDO (service data objects) | Expedited, segmented (domain) and block transfers. CRC in block transfers is not supported. |
| PDO (process data objects) | Not supported. There are no TPDOs or RPDOs — all data exchange (including the drive command) is done via SDO. |
| Heartbeat / node guarding | Temporarily disabled (caused a deadlock with two controllers on the same bus). The producer heartbeat time object reads as 0. |
After boot-up the node starts directly in the operational state.
Object dictionary
Communication profile objects
| Index | Sub | Access | Type | Description |
|---|---|---|---|---|
| 0x1000 | 0 | RO | UINT32 | Device type. Returns 0. |
| 0x1001 | 0 | RO | UINT8 | Error register. Non-zero when the controller reports an error. |
| 0x1017 | 0 | RO | UINT16 | Producer heartbeat time. Returns 0 (heartbeat disabled). |
| 0x1018 | 0 | RO | UINT8 | Identity object — number of entries. Returns 0. |
| 0x1018 | 1 | RO | UINT32 | Vendor ID. Returns 0. |
| 0x1018 | 2 | RO | UINT32 | Product code. Returns 0. |
| 0x1018 | 3 | RO | UINT32 | Revision number. Returns 0. |
| 0x1018 | 4 | RO | UINT32 | Serial number. Returns 0. |
Drive command — 0x2000
| Index | Sub | Access | Type | Description |
|---|---|---|---|---|
| 0x2000 | n | WO | INT16 or INT32 | Drive command. The subindex selects the driver mode, the written value is the command. The value is interpreted as a fraction of full scale: INT16 range ±32767 or INT32 range ±2147483647 maps to command −1.0 … +1.0. |
The drive command is only accepted while the node is in the operational NMT state.
The command has a timeout — it must be sent periodically. If no command is received within the timeout, the CANOpen command override is released and the controller falls back to its local command inputs.
Controller identification — 0x2050
All entries are read-only strings.
| Index | Sub | Type | Description |
|---|---|---|---|
| 0x2050 | 0 | STRING | Controller name |
| 0x2050 | 1 | STRING | HWID (hardware identification) |
| 0x2050 | 2 | STRING | SWID (firmware identification) |
| 0x2050 | 3 | STRING | UUID (96-bit unique ID, hex) |
| 0x2050 | 4 | STRING | Serial number |
| 0x2050 | 5 | STRING | Class signature |
Strings longer than 4 bytes are transferred using segmented or block SDO transfer.
Battery measurements — 0x2100
| Index | Sub | Access | Type | Unit | Description |
|---|---|---|---|---|---|
| 0x2100 | 0 | RO | FLOAT32 | A | Battery current |
| 0x2100 | 1 | RO | FLOAT32 | V | Battery voltage |
Motor measurements — 0x2104
| Index | Sub | Access | Type | Unit | Description |
|---|---|---|---|---|---|
| 0x2104 | 0 | RO | FLOAT32 | V | Motor voltage, Q axis |
| 0x2104 | 1 | RO | FLOAT32 | V | Motor voltage, D axis |
| 0x2104 | 2 | RO | FLOAT32 | A | Motor current, Q axis |
| 0x2104 | 3 | RO | FLOAT32 | A | Motor current, D axis |
| 0x2104 | 4 | RO | FLOAT32 | RPM | Motor speed |
| 0x2104 | 5 | RO | INT32 | - | Odometer |
Emergency (EMCY) messages
When the aggregated controller error state changes, an EMCY message is sent:
| Byte | Description |
|---|---|
| 0–1 | Error code: 0x1000 (generic error) when an error is active, 0x0000 when the error is cleared |
| 2 | Error register (mirrors object 0x1001) |
| 3–6 | Manufacturer-specific: the controller error code |