we are using PPC30 controllers with up to 6 CANopen devices connected to it (Acopos P66 and 3rd party stepper controllers). While this configuration works fine in general, there are some quirks that we need to address.
First - bootup times: the controller often needs over a minute to boot up and enter the cyclic state. The boot times also varies a lot. It appears to depend on the state of the CANopen devices. I fiddled around a lot with the PPC30s CAN-Interface settings in AS, like Plug’n’Play timer and other ones but never had success reducing bootup times.
Second - P66 error reset after boot: When our machines are powercycled (turned off for just a few seconds and the P66 stays alive due to its buffer) the P66 enters some error-state and sometimes cannot be error-resetted from the controller (at least we haven’t found a reliable way yet). What we tried is: make the P66 enter another operating state using an NMT command, like RESET_NODE in order to get it back online.
Also I would appreciate if you let me know your best practices when working with CANopen devices in general. Do you have similiar issues? and how did you solve them?
Concerning wiring / bus termination: we are very convinced that we don’t have any issues here since we thoroughly check the signal quality on the bus.
The integrated CanOpen Master transfers all Can objects to the devices via SDO after the controller boots. You can reduce the time by deactivating the objects.
Only object numbers greater than 2000 can be deactivated. The way I proceed is to first select all objects using multiselect and deactivate them. Then I activate all the objects that need to be transferred again.
@stephan.herbig concerning the error-reset: I’m thinking of what the actual procedure should be. As soon as my tasks start excuting, check moduleOk and nodeStatus of all CANopen nodes. In case moduleOk is True and the Error-Bit in the Status-Wort is set, a reset-command sent via Control-wort should be sufficient? and if nodeStatus is <> 261, then I need to reset and/or start the node via NMT, wait until nodeStatus reaches 261, then check for a pending error like above?
After starting the panel you can send an NMT command “coSTART_REMOTE_NODE” to the P66. To send, use the “CANopenNMT” function block from the AsCanOpen library.
You only get ModulOK when the P66 is in the operational state