CANopen is the internationally standardized (EN 50325-4) CAN-based higher-layer protocol for embedded control system. For more information on CANopen see http://www.can-cia.org/
This library allows the manipulation of CANopen devices as defined in CiA 301.
Pre-built documentation is available here: https://daxbot.github.io/node-canopen/
The CANopen emergency protocol is used to indicate internal errors with a CANopen device. Call Emcy.write to produce an emergency object.
OD Entry | Description | Notes |
---|---|---|
0x1001 | Error register | Required. |
0x1003 | Pre-defined error field | Required for error history. |
0x1014 | COB_ID EMCY | Required for write. |
0x1015 | Inhibit time EMCY | Required for inhibit time. |
Supported Features:
- Error generation ✔️
- Error history ✔️
The CANopen layer setting services protocol allows the CAN-ID and bitrate of an LSS consumer device to be modified. This allows for setting up a network of identical devices without relying on physical dip switches or non-volatile storage to distinguish between them.
OD Entry | Description | Notes |
---|---|---|
0x1018 | Identity object | Required. |
Supported Features:
- LSS producer ✔️
- LSS consumer ✔️
The CANopen network management protocol is used to manipulate the state of NMT consumer devices on the network and is responsible for the device heartbeat. Call Nmt.start to begin heartbeat generation.
OD Entry | Description | Notes |
---|---|---|
0x1016 | Consumer heartbeat time | Required for monitoring. |
0x1017 | Producer heartbeat time | Required for generation. |
Supported Features:
- Remote state changes ✔️
- Heartbeat
- Generation ✔️
- Monitoring ✔️
- Command processing
- State changes ✔️
- Reset node ✔️
- Reset communications ✔️
The CANopen process data object protocol is used for broadcasting data changes with minimal overhead, similar to a more traditional CAN network architecture. A mapped PDO can be sent with the Pdo.write method. Calling Pdo.start will begin producing mapped synchronous TPDOs.
OD Entry | Description | Notes |
---|---|---|
0x1400 - 0x15FF | RPDO communication parameter | Required for RPDOs. |
0x1600 - 0x17FF | RPDO mapping parameter | Required for RPDOs. |
0x1800 - 0x19FF | TPDO communication parameter | Required for TPDOs. |
0x1A00 - 0x1BFF | TPDO mapping parameter | Required for TPDOs. |
Supported Features:
- Asynchronous PDOs
- Triggered ✔️
- Inhibit time ✔️
- Event timer ✔️
- RTR ❌
- Synchronous PDOs ✔️
- Multiplex PDOs ❌
The CANopen service data object protocol provides direct access to a device's object dictionary. Call the Sdo.upload or Sdo.download methods to initate a transfer.
OD Entry | Description | Notes |
---|---|---|
0x1200 - 0x127F | SDO server parameter | Required for server. |
0x1280 - 0x12FF | SDO client parameter | Required for client. |
Supported Features:
- Expedited Transfer ✔️
- Segmented Transfer ✔️
- Block Transfer ✔️
The CANopen sync protocol is used to synchronize actions between devices on the network. Call Sync.start to begin producing sync objects.
OD Entry | Description | Notes |
---|---|---|
0x1005 | COB-ID SYNC | Required. |
0x1006 | Communication cycle period | Required for generation. |
0x1019 | Sync counter overflow value | Required for counter. |
Supported Features:
- Sync counter ✔️
The CANopen time protocol is used to provide a simple network clock. Call Time.write to produce a time stamp object.
OD Entry | Description | Notes |
---|---|---|
0x1012 | COB-ID TIME | Required. |