[etherlab-users] yet another datagrams UNMATCHED - DC 0.2ms / 5kHz // igb kernel 3.18
Jürgen Walter • DATATRONiQ
jw at datatroniq.com
Tue Feb 13 02:22:43 CET 2018
Hello list,
I have been fighting with an ethercat slave (measurement device from
imc) over the past week. I got it somewhat (mostly?) working but I am
seeing really a lot of the dreaded "datagrams UNMATCHED" in syslog.
My setup is an APU2 (AMD Chipset but "Ethernet controller: Intel
Corporation I210 Gigabit Network Connection (rev 03)" -
https://pcengines.ch/apu2.htm) with Ubuntu 12.04 and a "low latency"
kernel 3.18 installed - to my delight (after doing ./bootstrap.sh) I
found the option "--enable-igb" available with "./configure --help" (it
was not available on the 3.2 and 3.13 (or some earlier experiments with
a newer distro and Kernel 4.4)). I enabled it and after "make && make
modules && make install && make modules_install" I can do
"/etc/init.d/ethercat start" and the module loads with:
ec_igb 0000:01:00.0 eth0: igb: eth0 NIC Link is Up 1000 Mbps Full
Duplex, Flow Control: RX/TX
Next, I have adapted the main.c in "examples/dc_user"
1. customising the PDO section and inserting my output of "ethercat
cstruct"
2. changing the frequency to: "#define FREQUENCY 5000" (this is so I can
get a DC cycle time of 200 microseconds (working fine in TwinCat 3))
3. reading (some of the) mapped PDOs in the cyclic task
4. customizing "ecrt_slave_config_dc" (fixed DC cycle time, nothing else
works with this slave): ecrt_slave_config_dc(sc, 0x0300, 200000, 0, 0,
0);
I can see from the logs that the DC setup succeeds and the slaves goes
into OP (it is the only slave, a 1:1 direct connection).
I can also confirm that the PDO exchange works so far because the data I
am reading makes sense.
Yet, my syslog essentially gets flooded with those two
EtherCAT WARNING 0: 58 datagrams UNMATCHED!
EtherCAT WARNING: Datagram f66b3b8c (domain0-0-main) was SKIPPED 29
times.
In addition - when leaving the "check_domain_state()" call enabled, I am
seeing those (warnings?):
Domain1: WC 0.
Domain1: State 0.
Domain1: WC 1.
Domain1: State 2.
Domain1: WC 0.
Domain1: State 0.
Domain1: WC 1.
When I reduce the "FREQUENCY" back to 1000 the problems pretty much
disappear; however, my problem is that I need to run the DC cycle at 200
microseconds (each channel uses PDOs with 10 real/float values - I need
to read each channel 5000x per second in order to get all 50.000
measurement samples).
I have also tried this setup on a newer Ubuntu with Kernel 4.4 and the
generic driver - the results are essentially the same.
I am really not sure how to proceed from here - should I give the
Xenomai a try? Or buy another PCI/Intel network card (PRO/GT - what
model works still with the e1000/e drivers?) - or am I in general out of
luck because 200us DC cycles are completely unrealistic with the
ec_master?
Any help would be *greatly* appreciated!! Jürgen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.etherlab.org/pipermail/etherlab-users/attachments/20180213/a4fc1680/attachment-0002.htm>
More information about the Etherlab-users
mailing list