[etherlab-users] ERROR: Failed to determine PDO sync manager for FMMU on slave 0!

Uwe Hermann uwe at hermann-uwe.de
Tue Apr 7 16:51:09 CEST 2009


On Wed, Apr 01, 2009 at 05:40:48PM +0200, Florian Pose wrote:
> Hi,
> 
> On Wed, Mar 25, 2009 at 04:29:08AM +0100, Uwe Hermann wrote:
> > See below for what I did so far and output from the relevant commands.
> > I guess I'm doing something fundamentally stupid somewhere, but I just
> > cannot figure out what exactly that is. My current guess for the root
> > cause of the problems are these errors:
> > 
> > EtherCAT WARNING: PDOs configured for SM2, but slave 0 does not provide the sync manager information!
> > EtherCAT ERROR: Failed to determine PDO sync manager for FMMU on slave 0!
> > 
> > I'm not sure how to fix it, though. Maybe some EEPROM contents are
> > bogus? Using TwinCAT on Windows the synchorous mode operation seems to
> > work fine from what I can tell.
> 
> TwinCAT uses the XML device descriptions to get the sync manager
> addresses. The IgH master relies on the SII contents. Please have a look at
> 
> http://etherlab.org/de/ethercat/faq.php#incomplete-sii

Hm, indeed. I read that page before (and the EEPROM contents looked the
same), but I somehow missed the part that the EEPROM size in the XML
file might be wrong. And it seems to be wrong indeed in our case.

I tried changing it to 1024 (or 512, it turned out that's is also enough),
_but_ you have to do this in the

   C:\TwinCAT\Io\EtherCAT\Baumueller\ EtherCAT\ Slave\ Drives.xml

file directly, just modifying a copy of the file and trying to import it
using "Action / Import XML Description" does _not_ work, it seems.

Here's what I get with a hardcoded 512 bytes EEPROM size, i.e. change

   <Eeprom>
           <ByteSize>128</ByteSize>
           <ConfigData>.......</ConfigData>
   </Eeprom>

to

   <Eeprom>
           <ByteSize>512</ByteSize>
           <ConfigData>......</ConfigData>
   </Eeprom>

(all occurences)


00000000  08 00 02 04 f0 00 00 00  00 00 00 00 00 00 b0 00  |................|
00000010  5a 01 00 00 01 00 01 03  00 00 01 00 00 00 00 00  |Z...............|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 18 2e 02 2e 1a 2e 02  06 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000070  00 00 00 00 00 00 00 00  00 00 00 00 03 00 01 00  |................|
00000080  0a 00 3a 00 0a 12 42 4d  33 2d 4f 2d 45 43 54 2d  |..:...BM3-O-ECT-|
00000090  30 31 2d 30 30 2d 30 31  05 62 6d 61 58 58 0f 45  |01-00-01.bmaXX.E|
000000a0  74 68 65 72 43 41 54 20  44 72 69 76 65 73 16 31  |therCAT Drives.1|
000000b0  20 43 68 6e 20 43 41 4e  6f 70 65 6e 20 41 78 69  | Chn CANopen Axi|
000000c0  73 20 45 6f 45 05 44 52  49 56 45 06 44 43 53 79  |s EoE.DRIVE.DCSy|
000000d0  6e 63 06 49 6e 70 75 74  73 0a 73 74 61 74 75 73  |nc.Inputs.status|
000000e0  77 6f 72 64 07 4f 75 74  70 75 74 73 0b 63 6f 6e  |word.Outputs.con|
000000f0  74 72 6f 6c 77 6f 72 64  1e 00 10 00 02 05 01 04  |trolword........|
00000100  01 01 00 01 00 01 00 00  00 00 03 00 11 00 00 00  |................|
00000110  00 00 00 00 00 00 00 00  00 00 00 00 28 00 01 00  |............(...|
00000120  01 02 29 00 10 00 00 18  2e 02 26 00 01 01 2e 1a  |..).......&.....|
00000130  2e 02 22 00 01 02 00 10  00 00 24 00 01 03 00 14  |..".......$.....|
00000140  00 00 20 00 01 04 32 00  08 00 00 1a 01 03 00 07  |.. ...2.........|
00000150  01 00 41 60 00 08 06 10  00 00 33 00 08 00 00 16  |..A`......3.....|
00000160  01 02 00 09 01 00 40 60  00 0a 06 10 00 00 3c 00  |......@`......<.|
00000170  0c 00 01 00 00 00 88 13  00 00 00 00 00 00 00 00  |................|
00000180  00 03 01 00 06 00 00 00  00 00 ff ff ff ff ff ff  |................|
00000190  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000001a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000001b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000001c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000001d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000001e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000001f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000200

So it looks like the actual data is 0x190 bytes in size, the rest if 0xff.
However, trying to write this using the 'ethercat' tool doesn't seem to work
as expected. After writing and a shutdown/restart cycle (both software and the
hardware) I'm reading 1426 bytes for some strange reason.

00000000  08 00 02 04 f0 00 00 00  00 00 00 00 00 00 b0 00  |................|
00000010  5a 01 00 00 01 00 01 03  00 00 01 00 00 00 00 00  |Z...............|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 18 2e 02 2e 1a 2e 02  06 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000070  00 00 00 00 00 00 00 00  00 00 00 00 1f 00 01 00  |................|
00000080  0a 00 3a 00 0a 12 42 4d  33 2d 4f 2d 45 43 54 2d  |..:...BM3-O-ECT-|
00000090  30 31 2d 30 30 2d 30 31  05 62 6d 61 58 58 0f 45  |01-00-01.bmaXX.E|
000000a0  74 68 65 72 43 41 54 20  44 72 69 76 65 73 16 31  |therCAT Drives.1|
000000b0  20 43 68 6e 20 43 41 4e  6f 70 65 6e 20 41 78 69  | Chn CANopen Axi|
000000c0  73 20 45 6f 45 05 44 52  49 56 45 06 44 43 53 79  |s EoE.DRIVE.DCSy|
000000d0  6e 63 06 49 6e 70 75 74  73 0a 73 74 61 74 75 73  |nc.Inputs.status|
000000e0  77 6f 72 64 07 4f 75 74  70 75 74 73 0b 63 6f 6e  |word.Outputs.con|
000000f0  74 72 6f 6c 77 6f 72 64  1e 00 10 00 02 05 01 04  |trolword........|
00000100  08 00 02 04 f0 00 00 00  00 00 00 00 00 00 b0 00  |................|
00000110  5a 01 00 00 01 00 01 03  00 00 01 00 00 00 00 00  |Z...............|
00000120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000130  00 18 2e 02 2e 1a 2e 02  06 00 00 00 00 00 00 00  |................|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 1f 00 01 00  |................|
00000180  0a 00 3a 00 0a 12 42 4d  33 2d 4f 2d 45 43 54 2d  |..:...BM3-O-ECT-|
00000190  30 31 2d 30 30 2d 30 31  05 62 6d 61 58 58 0f 45  |01-00-01.bmaXX.E|
000001a0  74 68 65 72 43 41 54 20  44 72 69 76 65 73 16 31  |therCAT Drives.1|
000001b0  20 43 68 6e 20 43 41 4e  6f 70 65 6e 20 41 78 69  | Chn CANopen Axi|
000001c0  73 20 45 6f 45 05 44 52  49 56 45 06 44 43 53 79  |s EoE.DRIVE.DCSy|
000001d0  6e 63 06 49 6e 70 75 74  73 0a 73 74 61 74 75 73  |nc.Inputs.status|
000001e0  77 6f 72 64 07 4f 75 74  70 75 74 73 0b 63 6f 6e  |word.Outputs.con|
000001f0  74 72 6f 6c 77 6f 72 64  1e 00 10 00 02 05 01 04  |trolword........|
00000200  01 01 00 01 00 01 00 00  00 00 03 00 11 00 00 00  |................|
00000210  00 00 00 00 00 00 00 00  00 00 00 00 28 00 01 00  |............(...|
00000220  01 02 29 00 10 00 00 18  2e 02 26 00 01 01 2e 1a  |..).......&.....|
00000230  2e 02 22 00 01 02 00 10  00 00 24 00 01 03 00 14  |..".......$.....|
00000240  00 00 20 00 01 04 32 00  08 00 00 1a 01 03 00 07  |.. ...2.........|
00000250  01 00 41 60 00 08 06 10  00 00 33 00 08 00 00 16  |..A`......3.....|
00000260  01 02 00 09 01 00 40 60  00 0a 06 10 00 00 3c 00  |......@`......<.|
00000270  0c 00 01 00 00 00 88 13  00 00 00 00 00 00 00 00  |................|
00000280  00 03 01 00 06 00 00 00  00 00 ff ff ff ff ff ff  |................|
00000290  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000002a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000002b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000002c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000002d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000002e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000002f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000300  01 01 00 01 00 01 00 00  00 00 03 00 11 00 00 00  |................|
00000310  00 00 00 00 00 00 00 00  00 00 00 00 28 00 01 00  |............(...|
00000320  01 02 29 00 10 00 00 18  2e 02 26 00 01 01 2e 1a  |..).......&.....|
00000330  2e 02 22 00 01 02 00 10  00 00 24 00 01 03 00 14  |..".......$.....|
00000340  00 00 20 00 01 04 32 00  08 00 00 1a 01 03 00 07  |.. ...2.........|
00000350  01 00 41 60 00 08 06 10  00 00 33 00 08 00 00 16  |..A`......3.....|
00000360  01 02 00 09 01 00 40 60  00 0a 06 10 00 00 3c 00  |......@`......<.|
00000370  0c 00 01 00 00 00 88 13  00 00 00 00 00 00 00 00  |................|
00000380  00 03 01 00 06 00 00 00  00 00 ff ff ff ff ff ff  |................|
00000390  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000003a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000003b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000003c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000003d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000003e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000003f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000400  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000410  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000420  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000430  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000440  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000450  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000460  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000470  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000480  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000490  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000004a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000004b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000004c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000004d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000004e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000004f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000500  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000510  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000520  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000530  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000540  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000550  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000560  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000570  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000580  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000590  ff ff                                             |..|
00000592

This is what I read every time I write something that seems to be
broken, or invalid, or of the wrong size. E.g. I write 512 bytes above and
still read back the 1426 bytes (after a power-cycle). Only when writing the
original 128 bytes back into the EEPROM will work as expected, i.e.
reading back the contents returns the correct 128 bytes (not 1426 bytes).

I'm guessing that there's a problem related to the EEPROM size (which I
don't know; I tried asking Baumüller, will hopefully get an answer
soonish; or is there a way to get the actual EEPROM size via software?).

The repeating contents of the second hexdump suggest that the
EEPROM size is something like 256 bytes or so and then "wraps around" during
writing/reading, or something along those lines? Has anybody seen such a
behavior before?

Even worse, say the EEPROM is indeed too small to store all the required
info (which seems to be 0x190 bytes, please correct me if I'm wrong),
can I use the XML file with the Igh EtherCAT Master software? From what
I've read that won't work, correct? What other options would I have in
such a case?

If everything else fails, I might hack the code to just hardcode the
hexdump in an array and then replace the eeprom reading function with
a dummy implementation that reads from that array instead (but that's
really just an ugly hack). I assume that would work, though?


Thanks, Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org



More information about the Etherlab-users mailing list