Skip to main content
Firmware Stable

Canopen

CANOpen

note

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

tip

If you can, use the XDD file, because more comments and descriptions are included.

Supported services

ServiceSupport
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 guardingTemporarily 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

IndexSubAccessTypeDescription
0x10000ROUINT32Device type. Returns 0.
0x10010ROUINT8Error register. Non-zero when the controller reports an error.
0x10170ROUINT16Producer heartbeat time. Returns 0 (heartbeat disabled).
0x10180ROUINT8Identity object — number of entries. Returns 0.
0x10181ROUINT32Vendor ID. Returns 0.
0x10182ROUINT32Product code. Returns 0.
0x10183ROUINT32Revision number. Returns 0.
0x10184ROUINT32Serial number. Returns 0.

Drive command — 0x2000

IndexSubAccessTypeDescription
0x2000nWOINT16 or INT32Drive 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.
warning

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.

IndexSubTypeDescription
0x20500STRINGController name
0x20501STRINGHWID (hardware identification)
0x20502STRINGSWID (firmware identification)
0x20503STRINGUUID (96-bit unique ID, hex)
0x20504STRINGSerial number
0x20505STRINGClass signature
tip

Strings longer than 4 bytes are transferred using segmented or block SDO transfer.

Battery measurements — 0x2100

IndexSubAccessTypeUnitDescription
0x21000ROFLOAT32ABattery current
0x21001ROFLOAT32VBattery voltage

Motor measurements — 0x2104

IndexSubAccessTypeUnitDescription
0x21040ROFLOAT32VMotor voltage, Q axis
0x21041ROFLOAT32VMotor voltage, D axis
0x21042ROFLOAT32AMotor current, Q axis
0x21043ROFLOAT32AMotor current, D axis
0x21044ROFLOAT32RPMMotor speed
0x21045ROINT32-Odometer

Emergency (EMCY) messages

When the aggregated controller error state changes, an EMCY message is sent:

ByteDescription
0–1Error code: 0x1000 (generic error) when an error is active, 0x0000 when the error is cleared
2Error register (mirrors object 0x1001)
3–6Manufacturer-specific: the controller error code