I have noticed that nodes will not be sent configuration data if the following is true:
You have a check mark next to No Initialization in the Nodes PLC configuration.
The particular OD refernce will not be configured if it doesn't differ from the defualt value of the eds file and create all SDO's is not checked.
If a node does not send a bootup guard message that has 0 as the status, ie cobid = 701 byte0 = 00 (701 00) bootup message.
If the CANOpen Master does not have a status = 3. Basically at boot up of the PLC.
If a node responds to a SDO request to OD x1000 and the value is different from that found in the EDS file.
I have a CANOpen DS406 encoder that when first powered up sends an empty emergency message 81 then sends 701 7F to tell the PLC it is in pre-operational after an RTR nodeguard from the Master. Otherwise just an empty emergency message. Also this device is powered up at a different time then the main PLC. The next step by CoDeSys (because the node is pre-op) is to start the node by issuing an NMT Start Node message cobid = 0 byte0 = 01 byte1 = 01 (00 01 01). It never configures the encoder. But if I use my can dongle and send the command manually cobid = 701 byte0 = 00. Then CoDeSys configures the encoder using all the configured SDO's from the PLC configuration.
Why is the configuration trigger in CoDeSys on the node state 00 = bootup and/or when the CANOpen Master status = 3 ? Can this be something that is configurable in the future through the PLC configuration?
What do you think is the best method to get the encoder configured? I can manually monitor the change of node state (nStatus) from 7F (pre-op) to 5 (op) and then send a manual CANOpen message 701 00 or I can maybe try pCANOpenNode[0].SetNodeStatus := 0;
So really what I am asking is how to configure a node long after the PLC CANOpen master has already booted and this node doesn't send a bootup message 701 00 but instead the first guard report is 701 7F?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have noticed that nodes will not be sent configuration data if the following is true:
You have a check mark next to No Initialization in the Nodes PLC configuration.
The particular OD refernce will not be configured if it doesn't differ from the defualt value of the eds file and create all SDO's is not checked.
If a node does not send a bootup guard message that has 0 as the status, ie cobid = 701 byte0 = 00 (701 00) bootup message.
If the CANOpen Master does not have a status = 3. Basically at boot up of the PLC.
If a node responds to a SDO request to OD x1000 and the value is different from that found in the EDS file.
I have a CANOpen DS406 encoder that when first powered up sends an empty emergency message 81 then sends 701 7F to tell the PLC it is in pre-operational after an RTR nodeguard from the Master. Otherwise just an empty emergency message. Also this device is powered up at a different time then the main PLC. The next step by CoDeSys (because the node is pre-op) is to start the node by issuing an NMT Start Node message cobid = 0 byte0 = 01 byte1 = 01 (00 01 01). It never configures the encoder. But if I use my can dongle and send the command manually cobid = 701 byte0 = 00. Then CoDeSys configures the encoder using all the configured SDO's from the PLC configuration.
Why is the configuration trigger in CoDeSys on the node state 00 = bootup and/or when the CANOpen Master status = 3 ? Can this be something that is configurable in the future through the PLC configuration?
What do you think is the best method to get the encoder configured? I can manually monitor the change of node state (nStatus) from 7F (pre-op) to 5 (op) and then send a manual CANOpen message 701 00 or I can maybe try pCANOpenNode[0].SetNodeStatus := 0;
So really what I am asking is how to configure a node long after the PLC CANOpen master has already booted and this node doesn't send a bootup message 701 00 but instead the first guard report is 701 7F?