Hi,<br><br>We have been observing some strange behavior with the ethercat network that I wanted to bring to your attention. We are not sure if it has something to do with the master or the slaves.<br><br>First, let me explain what we do. We are building a robotic skin (so now, you may remember me). Right now, we don't have a real large skin, so we have decided to test our network with fake sensors.<br>
<br>Here is the setup:<br><br>Imagine 2 slaves, each of them producing data for 600 pdo-entries (in 50 pdos) each producing 16 bits of data. They are both in the same domain.<br><br>After configuring the network, this is the master's log:<br>
<br><span style="font-family:courier new,monospace">... EtherCAT: Requesting master 0...</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">... EtherCAT: Successfully requested master 0.</span><br style="font-family:courier new,monospace">
<span style="font-family:courier new,monospace">... EtherCAT 0: Domain0: Logical address 0x00000000, 2400 byte, expected working counter 2.</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">... EtherCAT 0: Datagram domain0-0: Logical offset 0x00000000, 1200 byte, type LRD.</span><br style="font-family:courier new,monospace">
<span style="font-family:courier new,monospace">... EtherCAT 0: Datagram domain0-1200: Logical offset 0x000004b0, 1200 byte, type LRD.</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">... EtherCAT 0: Master thread exited.</span><br style="font-family:courier new,monospace">
<span style="font-family:courier new,monospace">... EtherCAT 0: Starting EtherCAT-OP thread.</span><br><br>As you can see, the master needs to send two datagrams to retrieve data from the whole skin. Having more than 1 datagram is indeed what we are aiming at testing.<br>
<br>The strange behavior that we observed was that the first 600 values (that corresponds to the first datagram) were correct, but the second one was total gibberish.<br><br>Now we added another slave to the end of the network, this one connected to a small piece of skin with 72 pdo-entries (in 6 pdos). That is, the data of the slaves are divided in 1200-1200-144 bytes. Here is the master's log of this network:<br>
<br><span style="font-family:courier new,monospace">... EtherCAT: Requesting master 0...</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">... EtherCAT: Successfully requested master 0.</span><br style="font-family:courier new,monospace">
<span style="font-family:courier new,monospace">... EtherCAT 0: Domain0: Logical address 0x00000000, 2544 byte, expected working counter 3.</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">... EtherCAT 0: Datagram domain0-0: Logical offset 0x00000000, 1200 byte, type LRD.</span><br style="font-family:courier new,monospace">
<span style="font-family:courier new,monospace">... EtherCAT 0: Datagram domain0-1200: Logical offset 0x000004b0, 1344 byte, type LRD.</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">... EtherCAT 0: Master thread exited.</span><br style="font-family:courier new,monospace">
<span style="font-family:courier new,monospace">... EtherCAT 0: Starting EtherCAT-OP thread.</span><br style="font-family:courier new,monospace"><br>The result was this:<br><br>- The first 600 values (corresponding to the first datagram) were correct<br>
- The second 600 values (corresponding to the first 600 values of the second datagram) were gibberish<br>- The last 72 values (corresponding to 72 values at the end of the second datagram) were showing values of the second slave (Which should have been in the second 600 values)<br>
- The data from the last slave was nowhere to be found<br><br><b>My question is, has the master ever been tested with networks that require more than one datagram to collect data?</b> If not, can you please test it (like us, you can have the slave pretend there are a lot of sensors) and see if you get the same behavior?<br>
<br><b>If this is not a master's bug, do you have any idea how such a thing might happen?!</b><br><br>The way it looks, it seems like the second slave thinks it should write data from byte 1200 to 2400 on the second datagram. Indeed, it should write from bytes 1200 to 2400 of the whole data being exchanged, which is byte 0 to 1200 of the second datagram, since the first datagram has 1200 bytes of data already. Could it be that the master is sending wrong configuration to the slaves?<br>
<br>The master we are using is one that was downloaded from the development branch on Feb 6 2012.<br>