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

Uwe Hermann uwe at hermann-uwe.de
Wed Mar 25 04:29:08 CET 2009


Hi,

I'm having quite a bit of trouble here, trying to make a modified and
working mini.c example for our omnidirectional robot base, see
http://hermann-uwe.de/blog/dancing-omnidirectional-robot-base-controlled-via-linux-shellscripts-based-on-igh-ethercat-master

After various problems with the kernel module building I now have a
sort-of working mini.c module, but I cannot get the four slaves (motors)
of the robot to work in synchronous mode.

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 1 does not provide the sync manager information!
EtherCAT ERROR: Failed to determine PDO sync manager for FMMU on slave 1!
EtherCAT WARNING: PDOs configured for SM2, but slave 2 does not provide the sync manager information!
EtherCAT ERROR: Failed to determine PDO sync manager for FMMU on slave 2!
EtherCAT WARNING: PDOs configured for SM2, but slave 3 does not provide the sync manager information!
EtherCAT ERROR: Failed to determine PDO sync manager for FMMU on slave 3!
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.

See also the attached mini.c for the test code I currently use.

Here's some more output:


$ uname -a
Linux greenwood 2.6.24-etchnhalf.1-686 #1 SMP Fri Dec 26 04:10:16 UTC 2008 i686 GNU/Linux

$ lspci | grep Ethernet # e1000 driver
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)

$ tar xfvj ethercat-1.4.0.tar.bz2

$ cd ethercat-1.4.0

$ ./configure --enable-e1000

$ make all modules

$ make modules_install install

$ depmod

$ cat /etc/sysconfig/ethercat
MASTER0_DEVICE="00:11:22:33:44:55"
DEVICE_MODULES="e1000"
#MODPROBE_FLAGS="-b"

[Start the robot, wait 10 seconds or so, just in case]

$ /opt/etherlab/etc/init.d/ethercat start

[wait 10 seconds]

$ dmesg
EtherCAT: Master driver 1.4.0 r1611
EtherCAT: 1 master waiting for devices.
ACPI: PCI interrupt for device 0000:02:01.0 disabled
EtherCAT Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI
Copyright (c) 1999-2006 Intel Corporation.
ACPI: PCI Interrupt 0000:02:01.0[A] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11
ec_e1000: 0000:02:01.0: e1000_probe: (PCI:33MHz:32-bit) 00:11:22:33:44:55
EtherCAT: Accepting device 00:11:22:33:44:55 for master 0.
EtherCAT: Starting EtherCAT-IDLE thread.
ec_e1000: ec0: e1000_probe: Intel(R) PRO/1000 Network Connection
ec_e1000: ec0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX
EtherCAT: Link state changed to UP.
EtherCAT: 4 slave(s) responding.
EtherCAT: Slave states: PREOP.
EtherCAT: Scanning bus.
EtherCAT: Bus scanning completed in 80 ms.
EtherCAT: Starting EoE processing.
EtherCAT ERROR: Timeout while waiting for SDO dictionary list response on slave 0.
EtherCAT ERROR: Timeout while waiting for SDO dictionary list response on slave 1.
EtherCAT ERROR: Timeout while waiting for SDO dictionary list response on slave 2.
EtherCAT ERROR: Timeout while waiting for SDO dictionary list response on slave 3.

$ cd examples/mini

[copy our mini.c over the original one from the tarball]

$ make clean
$ cp ../../Module.symvers .	# Needed to work around a kbuild bug.
$ make modules
$ make modules_install
$ depmod

[the activity LEDs on the 4 slaves are blinking frantically, the (CANOpen?)
state is "1", as shown on the 4 boxes via a charater display]

$ /opt/etherlab/bin/ethercat master -v
Master0
  Phase: Idle
  Slaves: 4
  Device0: 00:11:22:33:44:55 (attached)
    Tx count: 636468
    Rx count: 636467
  Device1: None.

$ /opt/etherlab/bin/ethercat slaves -v
=== Slave 0 ===
Alias: 1001
State: PREOP
Flag: +
Identity:
  Vendor Id:       0x0000015a
  Product code:    0x03010001
  Revision number: 0x00010000
  Serial number:   0x00000000
Mailboxes:
  RX: 0x1800/558, TX: 0x1a2e/558
  Supported protocols: EoE, CoE
=== Slave 1 ===
Alias: 1002
State: PREOP
Flag: +
Identity:
  Vendor Id:       0x0000015a
  Product code:    0x03010001
  Revision number: 0x00010000
  Serial number:   0x00000000
Mailboxes:
  RX: 0x1800/558, TX: 0x1a2e/558
  Supported protocols: EoE, CoE
=== Slave 2 ===
Alias: 1003
State: PREOP
Flag: +
Identity:
  Vendor Id:       0x0000015a
  Product code:    0x03010001
  Revision number: 0x00010000
  Serial number:   0x00000000
Mailboxes:
  RX: 0x1800/558, TX: 0x1a2e/558
  Supported protocols: EoE, CoE
=== Slave 3 ===
Alias: 1004
State: PREOP
Flag: +
Identity:
  Vendor Id:       0x0000015a
  Product code:    0x03010001
  Revision number: 0x00010000
  Serial number:   0x00000000
Mailboxes:
  RX: 0x1800/558, TX: 0x1a2e/558
  Supported protocols: EoE, CoE

$ /opt/etherlab/bin/ethercat config -v
[no output]

$ /opt/etherlab/bin/ethercat sii_read -v -p 0
SII Area:
  08 00 02 04 f0 00 00 00 e9 03 00 00 00 00 d1 00
  5a 01 00 00 01 00 01 03 00 00 01 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 18 2e 02 2e 1a 2e 02 06 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
$ /opt/etherlab/bin/ethercat sii_read -v -p 1
SII Area:
  08 00 02 04 f0 00 00 00 ea 03 00 00 00 00 aa 00
  5a 01 00 00 01 00 01 03 00 00 01 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 18 2e 02 2e 1a 2e 02 06 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
$ /opt/etherlab/bin/ethercat sii_read -v -p 2
SII Area:
  08 00 02 04 f0 00 00 00 eb 03 00 00 00 00 83 00
  5a 01 00 00 01 00 01 03 00 00 01 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 18 2e 02 2e 1a 2e 02 06 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
$ /opt/etherlab/bin/ethercat sii_read -v -p 3
SII Area:
  08 00 02 04 f0 00 00 00 ec 03 00 00 00 00 5c 00
  5a 01 00 00 01 00 01 03 00 00 01 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 18 2e 02 2e 1a 2e 02 06 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00

$ /opt/etherlab/bin/ethercat domains -v
[no output]

$ /opt/etherlab/bin/ethercat pdos -v
=== Slave 0 ===
=== Slave 1 ===
=== Slave 2 ===
=== Slave 3 ===

$ /opt/etherlab/bin/ethercat sdos -v
=== Slave 0 ===
=== Slave 1 ===
=== Slave 2 ===
=== Slave 3 ===

$ modprobe ec_mini

[state as per display is still "1" for each slave]

ec_omnidrive: Starting...
EtherCAT: Requesting master 0...
EtherCAT: Successfully requested master 0.
ec_omnidrive: Registering domain...
ec_omnidrive: Configuring PDOs for motor0...
ec_omnidrive: Configuring PDOs for motor1...
ec_omnidrive: Configuring PDOs for motor2...
ec_omnidrive: Configuring PDOs for motor3...
ec_omnidrive: Registering PDO entries...
ec_omnidrive: Activating master...
EtherCAT: Domain0: Logical address 0x00000000, 8 byte, expected working counter 4.
EtherCAT:   Datagram domain0-0: Logical offset 0x00000000, 8 byte, type LWR.
EtherCAT: Stopping EoE processing.
EtherCAT: Master thread exited.
EtherCAT: Starting EtherCAT-OP thread.
EtherCAT: Starting EoE processing.
ec_omnidrive: Starting cyclic sample thread.
ec_omnidrive: Started.
ec_omnidrive: Motor0 velocity: 0.
ec_omnidrive: 4 slave(s).
ec_omnidrive: AL states: 0x02.
ec_omnidrive: Link is up.
ec_omnidrive: motor0: State 0x02.
ec_omnidrive: motor0: online.
ec_omnidrive: motor1: State 0x02.
ec_omnidrive: motor1: online.
ec_omnidrive: motor2: State 0x02.
ec_omnidrive: motor2: online.
ec_omnidrive: motor3: State 0x02.
ec_omnidrive: motor3: online.
EtherCAT WARNING: PDOs configured for SM2, but slave 1 does not provide the sync manager information!
EtherCAT ERROR: Failed to determine PDO sync manager for FMMU on slave 1!
EtherCAT WARNING: PDOs configured for SM2, but slave 2 does not provide the sync manager information!
EtherCAT ERROR: Failed to determine PDO sync manager for FMMU on slave 2!
EtherCAT WARNING: PDOs configured for SM2, but slave 3 does not provide the sync manager information!
EtherCAT ERROR: Failed to determine PDO sync manager for FMMU on slave 3!
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!
ec_omnidrive: Motor0 velocity: 11.
ec_omnidrive: Motor0 velocity: 12.
ec_omnidrive: Motor0 velocity: 13.
ec_omnidrive: Motor0 velocity: 14.
ec_omnidrive: Motor0 velocity: 15.
ec_omnidrive: Motor0 velocity: 10.
ec_omnidrive: Motor0 velocity: 11.
ec_omnidrive: Motor0 velocity: 12.
ec_omnidrive: Motor0 velocity: 13.
ec_omnidrive: Motor0 velocity: 14.
ec_omnidrive: Motor0 velocity: 15.
ec_omnidrive: Motor0 velocity: 10.
[...]

$ /opt/etherlab/bin/ethercat master -v
Master0
  Phase: Operation
  Slaves: 4
  Device0: 00:11:22:33:44:55 (attached)
    Tx count: 1289586
    Rx count: 1289585
  Device1: None.

$ /opt/etherlab/bin/ethercat slaves -v
=== Slave 0 ===
Alias: 1001
State: PREOP
Flag: E
Identity:
  Vendor Id:       0x0000015a
  Product code:    0x03010001
  Revision number: 0x00010000
  Serial number:   0x00000000
Mailboxes:
  RX: 0x1800/558, TX: 0x1a2e/558
  Supported protocols: EoE, CoE
=== Slave 1 ===
Alias: 1002
State: PREOP
Flag: E
Identity:
  Vendor Id:       0x0000015a
  Product code:    0x03010001
  Revision number: 0x00010000
  Serial number:   0x00000000
Mailboxes:
  RX: 0x1800/558, TX: 0x1a2e/558
  Supported protocols: EoE, CoE
=== Slave 2 ===
Alias: 1003
State: PREOP
Flag: E
Identity:
  Vendor Id:       0x0000015a
  Product code:    0x03010001
  Revision number: 0x00010000
  Serial number:   0x00000000
Mailboxes:
  RX: 0x1800/558, TX: 0x1a2e/558
  Supported protocols: EoE, CoE
=== Slave 3 ===
Alias: 1004
State: PREOP
Flag: E
Identity:
  Vendor Id:       0x0000015a
  Product code:    0x03010001
  Revision number: 0x00010000
  Serial number:   0x00000000
Mailboxes:
  RX: 0x1800/558, TX: 0x1a2e/558
  Supported protocols: EoE, CoE

$ /opt/etherlab/bin/ethercat config -v
Alias: 0
Position: 0
Vendor Id: 0x0000015a
Product code: 0x03010001
Attached slave: 0 (PREOP)
SM2 (Output)
  PDO 0x1600
    PDO entry 0x6042:00, 16 bit
SDO configuration:
  None.

Alias: 0
Position: 1
Vendor Id: 0x0000015a
Product code: 0x03010001
Attached slave: 1 (PREOP)
SM2 (Output)
  PDO 0x1600
    PDO entry 0x6042:00, 16 bit
SDO configuration:
  None.

Alias: 0
Position: 2
Vendor Id: 0x0000015a
Product code: 0x03010001
Attached slave: 2 (PREOP)
SM2 (Output)
  PDO 0x1600
    PDO entry 0x6042:00, 16 bit
SDO configuration:
  None.

Alias: 0
Position: 3
Vendor Id: 0x0000015a
Product code: 0x03010001
Attached slave: 3 (PREOP)
SM2 (Output)
  PDO 0x1600
    PDO entry 0x6042:00, 16 bit
SDO configuration:
  None.

$ /opt/etherlab/bin/ethercat domains -v
Domain0: LogBaseAddr 0x00000000, Size   8, WorkingCounter 0/4
  SlaveConfig 0:0, SM2 (Output), LogAddr 0x00000000, Size 2
    0x0e 0x00 
  SlaveConfig 0:1, SM2 (Output), LogAddr 0x00000002, Size 2
    0x00 0x00 
  SlaveConfig 0:2, SM2 (Output), LogAddr 0x00000004, Size 2
    0x00 0x00 
  SlaveConfig 0:3, SM2 (Output), LogAddr 0x00000006, Size 2
    0x00 0x00 

$ /opt/etherlab/bin/ethercat pdos -v
=== Slave 0 ===
=== Slave 1 ===
=== Slave 2 ===
=== Slave 3 ===

$ /opt/etherlab/bin/ethercat sdos -v
=== Slave 0 ===
=== Slave 1 ===
=== Slave 2 ===
=== Slave 3 ===

$ /opt/etherlab/bin/ethercat xml
<?xml version="1.0" ?>
  <EtherCATInfo>
    <!-- Slave 0 -->
    <Vendor>
      <Id>346</Id>
    </Vendor>
    <Descriptions>
      <Devices>
        <Device>
          <Type ProductCode="#x03010001" RevisionNo="#x00010000"></Type>
        </Device>
     </Devices>
  </Descriptions>
</EtherCATInfo>
<?xml version="1.0" ?>
  <EtherCATInfo>
    <!-- Slave 1 -->
    <Vendor>
      <Id>15a</Id>
    </Vendor>
    <Descriptions>
      <Devices>
        <Device>
          <Type ProductCode="#x03010001" RevisionNo="#x00010000"></Type>
        </Device>
     </Devices>
  </Descriptions>
</EtherCATInfo>
<?xml version="1.0" ?>
  <EtherCATInfo>
    <!-- Slave 2 -->
    <Vendor>
      <Id>15a</Id>
    </Vendor>
    <Descriptions>
      <Devices>
        <Device>
          <Type ProductCode="#x03010001" RevisionNo="#x00010000"></Type>
        </Device>
     </Devices>
  </Descriptions>
</EtherCATInfo>
<?xml version="1.0" ?>
  <EtherCATInfo>
    <!-- Slave 3 -->
    <Vendor>
      <Id>15a</Id>
    </Vendor>
    <Descriptions>
      <Devices>
        <Device>
          <Type ProductCode="#x03010001" RevisionNo="#x00010000"></Type>
        </Device>
     </Devices>
  </Descriptions>
</EtherCATInfo>

$ /opt/etherlab/bin/ethercat sii_read -v -p 0
SII Area:
  08 00 02 04 f0 00 00 00 e9 03 00 00 00 00 d1 00
  5a 01 00 00 01 00 01 03 00 00 01 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 18 2e 02 2e 1a 2e 02 06 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
$ /opt/etherlab/bin/ethercat sii_read -v -p 1
SII Area:
  08 00 02 04 f0 00 00 00 ea 03 00 00 00 00 aa 00
  5a 01 00 00 01 00 01 03 00 00 01 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 18 2e 02 2e 1a 2e 02 06 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
$ /opt/etherlab/bin/ethercat sii_read -v -p 2
SII Area:
  08 00 02 04 f0 00 00 00 eb 03 00 00 00 00 83 00
  5a 01 00 00 01 00 01 03 00 00 01 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 18 2e 02 2e 1a 2e 02 06 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
$ /opt/etherlab/bin/ethercat sii_read -v -p 3
SII Area:
  08 00 02 04 f0 00 00 00 ec 03 00 00 00 00 5c 00
  5a 01 00 00 01 00 01 03 00 00 01 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 18 2e 02 2e 1a 2e 02 06 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00


The EEPROM dumps from TwinCAT are as follows:

$ hexdump Drive\ 1*\).bin
0000000 0008 0402 00f0 0000 0000 0000 0000 00b0
0000010 015a 0000 0001 0301 0000 0001 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 1800 022e 1a2e 022e 0006 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
*
0000070 0000 0000 0000 0000 0000 0000 0000 0001
0000080

$ hexdump Drive\ 2*\).bin
0000000 0008 0402 00f0 0000 03ea 0000 0000 00aa
0000010 015a 0000 0001 0301 0000 0001 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 1800 022e 1a2e 022e 0006 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
*
0000070 0000 0000 0000 0000 0000 0000 0000 0001
0000080

$ hexdump Drive\ 3*\).bin
0000000 0008 0402 00f0 0000 03eb 0000 0000 0083
0000010 015a 0000 0001 0301 0000 0001 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 1800 022e 1a2e 022e 0006 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
*
0000070 0000 0000 0000 0000 0000 0000 0000 0001
0000080

$ hexdump Drive\ 4*\).bin
0000000 0008 0402 00f0 0000 03ec 0000 0000 005c
0000010 015a 0000 0001 0301 0000 0001 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 1800 022e 1a2e 022e 0006 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
*
0000070 0000 0000 0000 0000 0000 0000 0000 0001
0000080


I'm thankful for any suggestions or comments.

Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mini.c
Type: text/x-csrc
Size: 15540 bytes
Desc: not available
URL: <http://lists.etherlab.org/pipermail/etherlab-users/attachments/20090325/8bf356fc/attachment-0003.c>


More information about the Etherlab-users mailing list