I have a problem with receiving heat beats from 2 slave nodes, and I am beginning to believe that the CANopen Manager has a problem with receiving heat beats either by doing some access violation or overwrite data not yet read. My system is this:
CODESYS Control For Raspberry Pi MC SL
Version 4.4.0.0
SYNC
Cycle period 100ms, Window length 20ms
For each node I have 4 Rx PDO and 4 Tx PDO. Heart beat every 400ms
First I thought that all PDOs always where transmitted and received at every SYNC period. That does not seem to be the case. with
ip -details -statistics link show can0
I can see that TX: bytes aren't changing but the number of packets does. Why? Is that because the values of my TX PDOs haven't change? Can anyone confirm that?
Ok my problem is this:
My two nodes works well for 1 hour. Then I get missing heart beats from both of them.
I was curious about what error frames I might receive from the nodes when the fault occurred, so I ran
candump -e -x -ta -a -l any,0~0,#FFFFFFFF
but as soon I did that there was no problems. It works for hours and it is still running.
However, I cannot have logging enabled in my application for ever. Any suggestions for a work around.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I can report that all my PDO was device specific asynchrony it means in my case that when ever a variable in the PDO changed value the PDO was sent. For one device it was acceptable but for 2-3 devices the bus got saturated and the behavior of CODESYS became unpredictable. When I changed the PDO to cyclic the problem disappeared.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have a problem with receiving heat beats from 2 slave nodes, and I am beginning to believe that the CANopen Manager has a problem with receiving heat beats either by doing some access violation or overwrite data not yet read. My system is this:
CODESYS Control For Raspberry Pi MC SL
Version 4.4.0.0
Version: 3.5.17.0
Description: CANopen Manager
Configuration version: 3.5.1.0
Baud rate 250kbit/s
MainTask Interval 100ms
SYNC
Cycle period 100ms, Window length 20ms
For each node I have 4 Rx PDO and 4 Tx PDO. Heart beat every 400ms
First I thought that all PDOs always where transmitted and received at every SYNC period. That does not seem to be the case. with
ip -details -statistics link show can0
I can see that TX: bytes aren't changing but the number of packets does. Why? Is that because the values of my TX PDOs haven't change? Can anyone confirm that?
Ok my problem is this:
My two nodes works well for 1 hour. Then I get missing heart beats from both of them.
I was curious about what error frames I might receive from the nodes when the fault occurred, so I ran
candump -e -x -ta -a -l any,0~0,#FFFFFFFF
but as soon I did that there was no problems. It works for hours and it is still running.
However, I cannot have logging enabled in my application for ever. Any suggestions for a work around.
I can report that all my PDO was device specific asynchrony it means in my case that when ever a variable in the PDO changed value the PDO was sent. For one device it was acceptable but for 2-3 devices the bus got saturated and the behavior of CODESYS became unpredictable. When I changed the PDO to cyclic the problem disappeared.