CANopen Library V4.5
CANopen Library 4.5.18 - 2021-08-05
recommended ICC version 6.6 and higher
PDO: behavior for PDO event time < PDO inhibit time configurable
PDO: behavior of TPDOs with transmission type 252 (RTR-only synchronous) corrected
PDO: for dynamic PDO mapping SDO abort code changed from 08000022h to 06040041h
if the PDO mapping shall be changed but the PDO mapping is enabledSYNC: intialization for multi-line with usage of different SYNC services corrected
SYNC: deactivation of SYNC via object 1006h added
SDO: CSDO128 for none 16 bit CPUs and little-endian devices added
SDO block transfer: The SDO block transfer is used if the data length is greater
than CONFIG_BLOCK_MIN_DATASIZE. Older versions uses the SDO block transfer if the
data length was equal to CONFIG_BLOCK_MIN_DATASIZE, too.HB consumer: DO abort code changed from 06040043h to 06090031h
if the node-ID was too high.HB/NG: Both error control mechanisms are configurable. HB is preferred against NG.
NMT: getRemoteNodeState() for NMT slaves without error control monitoring corrected
LSS: configuration of LSS timeout via ICC and during runtime added
object dictionary: getObjSize() for short ARRAY's corrected
object dictionary: handling of negative values of objects from data type INTEGER8
for 16 bit CPUs or big-endiness corrected
CANopen Library 4.5.17 - 2020-01-30
SDO segmented transfer: The SDO abort code returned by the indication
function sdoDomainWrCon(..) or sdoDomainRdCon(..) is reported by the
SDO abort transfer instead of the fixed SDO abort code 0x06060000.SDO block transfer: unnecessary block timer removed, i.e. the compiler-define
CO_CONFIG_BLOCKTRANSFER_BLOCKTIMER is no longer supportedTemplates for the indication functions sdoDomainCon(..), sdoDomainWrInd(..),
and sdoDomainRdInd() were moved from sdoDomainInd.c to usr_301.c.SDO: arguments of function initUpLd_res(..) for multi-line corrected
SDO block transfer: handling of lost or exchanged segment messages corrected
SDO block transfer: handling of SDO abort transfer messages from SDO server
on the SDO client side corrected, the SDO request is aborted on the SDO client
CANopen Library 4.5.16 - 2018-11-05
New
library can prevent sending of identical data on subsequent calls of writePdoReq()
enable with define CO_CONFIG_PDO_DATA_CHECK
can be configured via the PDO attribute dataHandling on a per PDO setting
default is to prevent the sending
data is not checked on time triggered or sync triggered send
library can send all linked TPDOs when data is entered
enable with define CO_CONFIG_PDO_AUTOSEND
behavior can then be disabled on a per PDO basis
default behaviour is: send all linked PDO
requires usage of putObj(..) API call to change data
writePdoReq(..) is called automatically
only in OPERATIONAL state
works with multiline
works in conjunction with the above CO_CONFIG_PDO_DATA_CHECK setting:
PDO is sent when data is entered, but only if the data has changed
in other words: only new data is sent
Fixed
SDO block transfer can recover on loosing the very first segment of a block
SDO block transfer can recover on loosing the last segment(s) of a block
enable with define CO_CONFIG_BLOCKTRANSFER_BLOCKTIMER
timeout value set by define CO_CONFIG_BLOCKTRANSFER_BLOCKTIMER_TIMEOUT
default 500 (50 ms)
timeout is checked between segments in the block
CANopen Library 4.5.15b - 2018-07-30
Fixed
automatic start of heartbeatconsumer is again possible
heartbeat functionality included in NMTS only when heartbeatconsumer active
nodeGuarding functionality included in NMTS only when nodeguarding active
CANopen Library 4.5.15 - 2018-06-13
New
Changes
virtual PDO functionality can now select a handling method, on a per PDO basis
the CO_CONFIG_SDO_SHORT_STRINGS option now works on virtual (string) objects
new callbacks for this are
coUser_getVirtualStringSize
coUser_setVirtualStringSize
Minor
the led state getter function coGetCoErrLedState(..) and coGetCoRunLedState(..) now
have redundancy parameters
Fixedthe options NodeGuarding and NMT StartUp can now be used together
small cleanup on examples s33/m33
CANopen Library 4.5.14 - 2017-10-27
New
Option CO_CONFIG_SDO_EXPEDITED_NO_VALID_SIZE_BIT allows to send expedited SDO transfers
without the size bit setsetting is per SDO: adjust the SDO_T member expedited_sdo_with_valid_size_bit
this setting allows SDO communication to CANopen implementations that did not check
expedited SDOs for size, it should be considered experimental
added examples m33 and s33
the examples show usage of the user message system to implement an additional small
protocolimplemented example protocol is the energy management of profile 447
also showcased is the CobId distribution of profile 447
example is based on socketCAN, but can be easily changed
segmented SDO domain write transfers using an intermediate buffer on the SDO server side
can now be delayed every time the buffer is fullthis is useful when the domain needs to passed on through a slower process, ie. an
I2C or SPI further transferenabled by define CO_CONFIG_DOMAIN_INDICATION_DEFERRABLE
the sdoDomainInd(..) function gains additional parameters, see the usr_301.c template
finishSdoDomainInd(..) will resume SDO processing
Changes
it is now possible to preselect the SDO communication line when using redundancy
requires option CO_CONFIG_REDUNDANCY_ALLOW_SDO_LINE_SELECT
this option will allow setting the SDO_T type's commLine variable
this option will disable the automatic switch of SDO commLine should a commLine fail,
the application has to take over this part
Minor
Fixeda number of C++ build errors
CANopen Library 4.5.13 - 2017-08-25
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 promptly on receiving a message
function is called co_getNextInternalEventTime(..)
Changes
dynamic services setup now uses calloc instead of malloc to ensure NULLed variable
initializationwhen using dynamic services setup on singleline more internal functions use values
derived from arguments of initDynamicServices, where applicablethis was already the case on multiline
added option CO_CONFIG_LSS_FASTSCANDATA_REPORT_FULL_ARRAY to LSS
this will give a pointer to the full identity information array instead of the
start of line specific informationonly 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 SDOonly data segments in blocktransfer are affected
Minor
added template for coProtocolErrorInd
added templates for coUserVirtualTpdoInd, coUserVirtualRpdoInd
Fixedthe library can now handle 64bit variable conversion on big endian systems
the lss template for usr_305.c has a proper default case
CANopen Library 4.5.12 - 2017-03-13
New
the library can now report any heartbeat to the application
enabled via define CO_CONFIG_REPORT_ANY_HB
uses indication coUserHbReceived(..) (see examples/template/usr_301.c)
Changes
LSS slaves will now react to requests while in OPERATIONAL state
previously any requests in while OPERATIONAL state would be ignored
old behaviour can be reenabled by setting
#define CO_CONFIG_LSS_NO_REACTION_IN_OPERATIONAL 1
added an automatic SDO abort in case the SDO client cannot start the SDO timeout monitoring
previously this would fail silently and had to be solved by application
Fixed
when using fast sort, removeNodeReq(..) will now also resort it's internal list
many small changes due to static code checks via lint
in the template for usr_301.c the indication mGuardErrorInd(..) is now included
for any device that is using define (CONFIG_MASTER), so it can report received BootUp
messages
CANopen Library 4.5.11 - 2016-11-18
New
includes and source were changed to UTF-8, including the templates
devices with CO_CONFIG_SELFSTARTING_SLAVE can change bit 3 of 1f80h
this allows (re-)configuration of selfstarting slave behavior at runtime
all SDO abort codes defined in CiA 301 available for applications
ChangesPDO mapping sizes are now exact like defined in CiA 301
previously size less than object size would be accepted.
This new behaviour can be disabled with the define CO_CONFIG_NO_MAPPING_LOWER_SIZE_CHECK.
Fixed
CRC will work in block transfer, even if segments in a block were missed and are retransmitted
a few fixes for compiler warnings in Renesas Compilers
CANopen Library 4.5.10 - 2016-06-30
New
support for selfstarting slaves via object 0x1f80
requires define CO_CONFIG_SELFSTARTING_SLAVE
requires value 0x8 in object 0x1f80
Changes
objects in device profile area can be virtual
segment size of SDO blocktransfer can be changed on an SDO Client/Server basis
CANopen Library 4.5.9 - 2016-02-16
Changes:
added library checks for restricted CobIds according to CiA301
can be disabled by
#define CO_CONFIG_DONT_CHECK_RESTRICTED_COBID 1
added public declarations for segmented transfer functions for SDO
added utility function coSetNodeOPERATIONAL(...) to set a node operational
added optional indication functions for reset behaviour
fix: corrected SDO abort code in SDO upload
change: testSdoValue() is also available when using SDO blocktransfer
change: setting HB will disable a running nodeGuarding
new example: s23 SDO domain transfer
CANopen Library 4.5.8 - 2015-11-03
Changes:
removed additional warnings in SDO blocktransfer
CANopen Library 4.5.7 - 2015-10-26
Changes:
Added new functions for getting the state of a LED
Added option to transfer strings without transfering full length as given by OD
Added option to transfer domains with dynamic ending, controlled by user application
Added support for SDO abort code 06040047h (CO_E_INTERNAL_INCOMP)
CANopen Library 4.5.6 - 2015-08-03
Changes:
Added new request function to write an SDO as segmented transfer, even if
blocktransfer is configured - writeSdoSegReq.Added new request function to read with an SDO as segmented transfer, even if
blocktransfer is configured - readSdoSegReq.Added support for INTEGER64.
Added new function to get the actual LSS-state of the local LSS-slave.
CANopen Library 4.5.5 - 2015-07-14
Changes:
Added new indication which get called if an virtual object is mapped to an PDO, to
gain access to the PDO payload.Extended the object specific callback type structure with a pointer to the object
and the object size.Fixed missing pointer cast to avoid warnings.
Corrected documentation and comments in code.
CANopen Library 4.5.4 - 2015-04-24
Changes:
Added new object callback call if the sdo aborts for some reason.
Added objects callback calls for mpdo.
Added function putObjPtr for faster access if there is a known object pointer.
Minor fixes to avoid compiler warnings.
CANopen Library 4.5.3 - 2014-09-29
Changes:
Changed the nmt startup manager to fix compile problem from 4.5.2 multiline version.
CANopen Library 4.5.2 - 2014-08-12
Changes:
Changed the nmt startup manager to only configure the SDOs if needed.
Changed the nmt startup manager to only search the needed objects once.
New indication for the nmt startup manager to retry if a device aborts object
0x1000 read.Some changes to make the initialization of the stack faster
Fixed a issue with the getObjPtrAtIndex function to return the correct pointer.
Added an indication in the nmt startup manager to change the sdo timeout for
every SDO request.
CANopen Library 4.5.1 - 2014-04-30
Changes:
Changed object attributes to UNSIGNED16 from V4.4 UNSIGNED8.
Added optional function pointers for objects, to speed up application response time.
Speed optimization for object access, so boot up and SDO gained better reaction time.
Added new API function getObjStoreEnableReq, which return if an object is supposed to
be stored in non-volatile memory.Fixed several MISRA C issues.
Removed several compiler warnings.
Removed automatic emergency sending due to too short or too long PDOs.
Fixed MPDO issue, where the stack send empty MPDOs if PDO Eventtimer is enabled this.
Added LSS package to standard delivery of the CANopen Library