There is no recommendation because there is no universal solution to this problem. Depending on your use case you can do a few different things. The only "fixed" thing is the maximum of 2x4x127=1016 PDO COB IDs with standard CANopen. fully dynamic assignment, thereby make use of all available COB IDs reduce address space to e.g. 63 and use now unused pre-defined set of those. "Multiplex PDO", gives you unlimited number of PDOs using 29 Bit extended CAN header, gives you more COB IDs using CANopen...
Take a look here: https://github.com/robincornelius/libedssharp
work trough that book to get basic understanding: https://www.canopenbook.com/ With that knowledge you can use CANopenNode linux app as starting point for your application: https://github.com/CANopenNode/CANopenSocket.
Hi, seems none of us has expirience with that. From what I can see from the presentation this is not currently implemented but should be possible to add. Please be aware that CANopenNode does not have SIL certification (and certainly not SIL2 or SIL3). I think for this use case at least talk to some of the commercial vendors (that might already have certification and can be held responsible). Depending on what they offer you, you can still decide to use CANopenNode or buy a stack.
Hi, If you are using GCC compiler, you can just use the sync macros from linux driver.
Then we need someone to maintain that example. I don't use microchip controllers, and honestly, I'm more than happy to not have to use their software.
Except for asking Microchip to add support for a 20 year old standard in a currently sold compiler? Add the missing types to your driver files should work as this is included in everything.
Reading is done inside the rxWait function (hence the name). This enqueues the received message to the correpsoning modules. You can, however, change the driver to non-blocking and then have all run inside one thread.