CANopen Library V 4.5.13 available

(09/2017) PORT delivers the new CANopen Library version 4.5.13 to its customers

The CANopen Library has been comprehensively revised and is now available as an update to our customers. Customers with a current SMA (Service - Maintenance - Agreement) are automatically sent to the update. For our customers without SMA, we recommend an update to the new version - we would be happy to make you an offer.

What is New:

  • the library can now report any received message to the application
    • enabled via define CO_CONFIG_USER_MESSAGE_TEST
    • the application can then suppress further handling of a message by the library
  • the library can now report the time until the next internal event
    • could be used to better time the call of FlushMbox on threaded systems
    • note: FlushMbox should still be called promtly on receiving a message
    • function is called co_getNextInternalEventTime(..)


  • dynamic services setup now uses calloc instead of malloc to ensure NULLed variable initialization
  • when using dynamic services setup on singleline more internal functions use values derived from arguments of initDynamicServices, where applicable
    • this was already the case on multiline
    • this will give a pointer to the full identity information array instead of the start of line specific information
    • only noticeable on multiline
    • old behavior unchanged
  • added option CO_CONFIG_SUPPRESS_BOOTUP to start up
    • this will suppress sending any boot up, but the device will start otherwise normal
    • this option is NOT according to the CANopen standard and WILL FAIL any conformance test
  • added option CO_CONFIG_BLOCKTRANSFER_INHIBITED_SEND to blocktransfer
    • this will inhibit data segments of the blocktransfer, spreading them over time
    • value in CO_CONFIG_BLOCKTRANSFER_INHIBITED_SEND is used as a default value, this can be adjusted per SDO
    • only data segments in blocktransfer are affected


  • added template for coProtocolErrorInd
  • added templates for coUserVirtualTpdoInd, coUserVirtualRpdoInd


  • the library can now handle 64bit variable conversion on big endian systems
  • the LSS template for usr_305.c has a proper default case

If you have any questions, please do not hesitate to contact us.