[etherlab-dev] Minor domain bug fixed in etherlab C master

Johnny Rasmussen jra at deif.com
Tue Mar 5 11:48:22 CET 2013


Hi Etherlab-dev.

During development and testing of the Etherlab EtherCAT C master I found a minor bug which has been fixed in our version.
I tested with version 1.5-pre and the new 1.5.2.

Bug description :
When the C master adds slaves to a domain there is a problem with LRD/LWR/LRW assignment if the last slave alone expands to a new EtherCAT telegram because the first one is full.

Example:
We have a slave that has 284 bytes inputs and 264 bytes output

BAD SETUP: (6 slaves, 284 byte WRITE, 264 READ)

SLAVE READ DOMAIN
Feb 27 09:37:06 kernel: [ 2560.537230] EtherCAT 0: Domain1: Logical address 0x00000006, 1704 byte, expected working counter 6.
Feb 27 09:37:06 kernel: [ 2560.537256] EtherCAT 0: Datagram domain1-6: Logical offset 0x00000006, 1420 byte, type LRD. <-- (first 5 slaves 284*5 = 1420, READ)
Feb 27 09:37:06 kernel: [ 2560.537280] EtherCAT 0: Datagram domain1-1426: Logical offset 0x00000592, 284 byte, type LRD. <-- (last slave, READ)

SLAVE WRITE DOMAIN
Feb 27 09:37:06 kernel: [ 2560.537325] EtherCAT 0: Domain2: Logical address 0x000006ae, 1584 byte, expected working counter 6.
Feb 27 09:37:06 kernel: [ 2560.537351] EtherCAT 0: Datagram domain2-1710: Logical offset 0x000006ae, 1320 byte, type LWR. <-- (first 5 slaves 264*5 = 1320, WRITE)
Feb 27 09:37:06 kernel: [ 2560.537375] EtherCAT 0: Datagram domain2-3030: Logical offset 0x00000bd6, 264 byte, type LRD. <-- (last slave, WRITE became READ which is a error)

OK SETUP: (7 slaves, 284byte WRITE, 264 READ)

SLAVE READ DOMAIN
Feb 27 09:55:40 kernel: [ 3674.831832] EtherCAT 0: Domain1: Logical address 0x00000006, 1988 byte, expected working counter 7.
Feb 27 09:55:40 kernel: [ 3674.831858] EtherCAT 0: Datagram domain1-6: Logical offset 0x00000006, 1420 byte, type LRD. <-- (first 5 slaves 284*5 = 1420, READ)
Feb 27 09:55:40 kernel: [ 3674.831882] EtherCAT 0: Datagram domain1-1426: Logical offset 0x00000592, 568 byte, type LRD. <-- (last 2 slaves 284*2=568, READ)

SLAVE WRITE DOMAIN
Feb 27 09:55:40 kernel: [ 3674.831930] EtherCAT 0: Domain2: Logical address 0x000007ca, 1848 byte, expected working counter 7.
Feb 27 09:55:40 kernel: [ 3674.831955] EtherCAT 0: Datagram domain2-1994: Logical offset 0x000007ca, 1320 byte, type LWR. <-- (first 5 slaves 264*5 = 1320, WRITE)
Feb 27 09:55:40 kernel: [ 3674.831980] EtherCAT 0: Datagram domain2-3314: Logical offset 0x00000cf2, 528 byte, type LWR. <-- (last 2 slaves, 264*2=528, READ error was corrected to correct WRITE again when we added a extra slave)
I found the problem in master/domain.c and fixed it and have included a git patch that you can evaluate.

Best regards,
Johnny Rasmussen
DEIF Wind Power Technology
Software Developer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.etherlab.org/pipermail/etherlab-dev/attachments/20130305/8010d254/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: multiple_domains.patch
Type: application/octet-stream
Size: 1923 bytes
Desc: multiple_domains.patch
URL: <http://lists.etherlab.org/pipermail/etherlab-dev/attachments/20130305/8010d254/attachment.obj>


More information about the etherlab-dev mailing list