Embedded Office Products

The free CANopen Stack

CANopen is a high-level protocol for industrial automation. The specifications are managed by a consortium, called CiA (CAN in Automation). There are many "Draft Standards (DS)". The main standards we support are:

  • DS301  -  Application layer and communication profile
  • DS305  -  Layer setting services (LSS) and protocols
  • DS304  -  Framework for safety-relevant communication (on request)
  • DS306  -  Electronic data sheet specification for CANopen (on request)
  • Besides these draft standards, there are numerous "Device Profiles". A device profile is a standardized configuration of the object directory and the behavior of specific entries for a specific type of device. Common examples are:

  • DS401  -  Profile for I/O devices
  • DS406  -  Device profile for encoders
  • DS415  -  Device profile for road construction machinery
  • DS418  -  Device profile for battery modules
  • Due to the fact, that the device profiles define configurations and conventions on the behavior of object directory entries, we can realize them all with the provided CANopen stack.

    Open-Source License

    Free for Commercial Use

    This is the first component we decide to transfer to open-source. We will give our best to collaborate with the community and maintain the CANopen stack in future development efforts.


    This CANopen product is transferred to open-source licensing terms. By adopting permissive license terms for the software component, we will make the benefits of this software available to the widest user base possible and give the embedded community a role in future development efforts.

    Service & Support

    You can find the source code in GitHub of the corresponding CANopen-Stack project

    The help provided by the community is planned to organize with Issues on GitHub.

    The Professional Service from Embedded Office is still available for a reasonable price.

    Standard CANopen Architecture

    Standardized Device Architecture

    The CANopen standard CiA DS301 defines an architecture for CANopen devices. This architecture is the default for this CANopen stack. To satisfy your CANopen device needs, different architectures are possible, too. The following figure shows the principal software architecture of a CANopen device.

    CANopen Device Architecture
    CANopen Device Architecture

    Supported Modules

    Modular Design

    The CANopen Stack provides the most commonly used protocol elements for your CANopen slave device. With the flexible architecture, it is easy to extend these modules for your application.

    Object Dictionary
    SDO Server
    PDO Producer
    PDO Consumer
    SYNC Consumer
    EMCY Producer
    Heartbeat Producer
    Heartbeat Consumer
    NMT Slave
    Parameter Store & Restore
    LSS Slave
    Software Timer