[etherlab-users] Απ: AL status message 0x0036: "DC Sync0 Cycle Time"
Mike Karam
mike95gr at hotmail.com
Mon Apr 2 20:55:19 CEST 2018
Hi Jurgen,
thanks for your reply. The current option I have beyond the preempt_rt patch is the Xenomai framework (since RTAI I think is not very actively developed nowadays, in contrast with Xenomai).
I have read some articles which say that the gain in the loop rate is not that much considering the development cost. Therefore I haven't done anything in this direction. Moreover, the delay from the slave is around 200 μs so I don't think I can get more than 5 KHz.
I compiled the kernel myself, following this very good tutorial: https://ubuntuforums.org/showthread.php?t=2273355
When I say "native driver" support I mean the e1000e driver support, but for the 3.16 kernel (I don't know if that is correct, but having also used the generic driver support, the outcomes don't have significant differences).
I'm attaching the makefile I used. It's the makefile provided by synapticon: https://doc.synapticon.com/tutorials/getting_started_igh_ethercat_master/installing_igh_ethercat_master/
but a bit changed.
SHELL := /bin/bash
ethercatMasterVersion:=1.5.2-merc
ethercatMasterZip:=ethercat-$(ethercatMasterVersion).tar.bz2
udevRulesFile:=99-EtherCAT.rules
ethercatUserGroup:=$(shell whoami)
$(udevRulesFile):
@echo "Generating udev rules file"
@echo "KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\", GROUP=\"$(ethercatUserGroup)\"">$(udevRulesFile)
ethercatMaster: $(udevRulesFile)
#--with-e1000e-kernel=3.16
tar -xvf $(ethercatMasterZip)
cd ethercat-$(ethercatMasterVersion);\
./configure --disable-8139too --with-e1000e-kernel=3.16;\
make all modules;
ethercatMasterInstall: ethercatMaster
cd ethercat-$(ethercatMasterVersion);\
sudo make modules_install install;\
sudo depmod;\
sudo mv ../$(udevRulesFile) /etc/udev/rules.d/$(udevRulesFile);\
sudo ln -s /opt/etherlab/etc/init.d/ethercat /etc/init.d/ethercat;\
sudo mkdir -p /etc/sysconfig/;\
sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/ethercat;\
sudo sed -i 's/DEVICE_MODULES=\"\"/DEVICE_MODULES=\"generic\"/g' /etc/sysconfig/ethercat;\
sudo ln -s /opt/etherlab/bin/ethercat /usr/bin/ethercat;\
interfaces=`ifconfig | grep -e "^e[tn][a-z0-9]*" -o`;\
for i in $$interfaces;do lastInterface=$$i; done;\
interfaceMAC=`ifconfig $$lastInterface | grep "[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}:[0-9A-Fa-f]\{2\}" -o`;\
sudo sed -i "s/MASTER0_DEVICE=\"\"/MASTER0_DEVICE=\"$$interfaceMAC\"/g" /etc/sysconfig/ethercat;\
ethercatMasterInstallWithAutoStart: ethercatMasterInstall
sudo update-rc.d ethercat defaults;\
sudo /etc/init.d/ethercat start;
clean:
@echo Removing compiled installation files
@rm -f -r ethercat-$(ethercatMasterVersion) $(udevRulesFile)
Can you answer to any of my questions? :)
Thanks again,
Mike________________________________________
Από: Jürgen Walter • DATATRONiQ <jw at datatroniq.com>
Στάλθηκε: Δευτέρα, 2 Απριλίου 2018 8:15 μμ
Προς: etherlab-users at etherlab.org
Κοιν.: Mike Karam
Θέμα: Re: [etherlab-users] AL status message 0x0036: "DC Sync0 Cycle Time"
Hi Mike,
glad to hear you got it working. Can you please clarify:
I wanted to thank you all for your valuable advice. Now I'm acheiving near 3.5 kHz loop rate without a single datagram loss. My configured system is
are you still trying to go for 5-10kHz (as per your initial e-mail)?
Ubuntu 16.04 with kernel 4.8.15-rt10 (preempt_rt patched)
did you compile this yourself or did you find a low latency / preempt version in the Ubuntu repos?
and support for native driver.
what do you mean by "native driver" - is this the generic driver?
Finally, do you mind writing a short list of commands (while the memory is still fresh ;) ) for us and for your future self, perhaps:
1. built the custom kernel 4.8.x for preempt_rt
2. built etherlab, ie ./configure --options ....
Thank you! Jürgen
On 2 Apr 2018, at 18:19, Mike Karam wrote:
Hi all,
I wanted to thank you all for your valuable advice. Now I'm acheiving near 3.5 kHz loop rate without a single datagram loss. My configured system is (just for reference): Ubuntu 16.04 with kernel 4.8.15-rt10(preempt_rt patched) and support for native driver. I would like to ask another question: In the dc_user example I don't understand why the latency is measured that way. Could someone make it more clear? This latency is the latency of our application (the time the scheduler does to put our process to running, so that our application can process the newly arrived datagram)? What quantity is measured exactly with this latency? Bonus: Can we measure the time the datagram does to leave and come back to the master, with wireshark accurately?
Thank you in advance,
Mike Karam
Στις Πέμ, 8 Μαρ 2018, 5:37 μ.μ. ο χρήστης Mike Karam <mike95gr at hotmail.com<mailto:mike95gr at hotmail.com>> έγραψε:
Hi Martin,
thanks for the advice. It seems to me that the hard real time RT-Preempt patch
cannot be avoided if I want to achieve my goal. I will keep that in mind and probably
come back to that.
Thanks again,
Mike
________________________________________
Από: Mike Karam <mike95gr at hotmail.com<mailto:mike95gr at hotmail.com>>
Στάλθηκε: Πέμπτη, 8 Μαρτίου 2018 5:09 μμ
Προς: Jürgen Walter • DATATRONiQ
Κοιν.: etherlab-users at etherlab.org<mailto:etherlab-users at etherlab.org>
Θέμα: Απ: [etherlab-users] AL status message 0x0036: "DC Sync0 Cycle Time"
Hi Jurgen,
thanks for your reply. I forgot to mention that I'm running the lowlatency package of kernel 4.8.0-58. The thing is that,
the team wants 16.04 Ubuntu because of the ROS Kinetic development, so I don't think I can use
a 3.x kernel (although last time I checked there is also a 4.x PREEMPT_RT patch also). I didn't think that
soft-real time vs hard-real time makes such a difference. I will try and come back on that.
Another observation of mine is that using Wireshark, the time the datagrams left and the time the datagrams came couldn't
get less than 240 μs. Shouldn't the DC use of the master, change this time difference to something very small (e.g 100,50,20 μs),
till there is synchronization loss or packet loss?
Thanks again,
Mike
________________________________________
Από: Jürgen Walter • DATATRONiQ <jw at datatroniq.com<mailto:jw at datatroniq.com>>
Στάλθηκε: Πέμπτη, 8 Μαρτίου 2018 4:21 μμ
Προς: Mike Karam
Κοιν.: etherlab-users at etherlab.org<mailto:etherlab-users at etherlab.org>
Θέμα: Re: [etherlab-users] AL status message 0x0036: "DC Sync0 Cycle Time"
Hi Mike,
I was in a similar boat like you just not too long ago. So, first thing,
you need to get your Linux system "real-time" --> best to use PREMPT_RT
in the vanilla Kernel.
That said, for using DC and > 1kHz I never got the "generic" driver to
work. How about you downgrade to a 3.x kernel, e.g. 3.18 and use one of
the supported drivers w/ patches for RT operation. That is what I did -
I also bought a network interface card with a supported chipset and
installed that into a PCIe slot.
Since then, I am pretty much a happy camper.
I hope this helps. Jürgen
On 8 Mar 2018, at 14:23, Mike Karam wrote:
Hi,
I'm trying to create an EtherCAT communication with an XMC4800, using
IgH EtherCAT. I'm using 16.04 Ubuntu with 4.8.0-58 kernel. I
downloaded the code from sourceforge and run the code (a bit modified,
see attachment) found in examples/dc_user. If I use a loop frequency
of 1 KHz all things go well (despite some datagrams UNMATCHED
warnings). But if I increase the loop rate to 5 or 10 KHz I'm seeing
the error in the subject. My goal is at least 10Khz succesful (withoul
losses) communication. Below is the output I'm getting in the kernel
log:
Mar 8 14:42:31 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13658.296909] EtherCAT: Requesting master 0...
Mar 8 14:42:31 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13658.296912] EtherCAT: Successfully requested master 0.
Mar 8 14:42:31 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13658.296961] EtherCAT 0: Domain0: Logical address 0x00000000, 18
byte, expected working counter 3.
Mar 8 14:42:31 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13658.296962] EtherCAT 0: Datagram domain0-0-main: Logical offset
0x00000000, 18 byte, type LRW at ffff91a5b5c9d858.
Mar 8 14:42:31 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13658.296981] EtherCAT 0: Master thread exited.
Mar 8 14:42:31 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13658.296983] EtherCAT 0: Starting EtherCAT-OP thread.
Mar 8 14:42:31 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13658.297040] EtherCAT WARNING 0: 15 datagrams UNMATCHED!
Mar 8 14:42:32 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13659.296406] EtherCAT WARNING 0: 13437 datagrams UNMATCHED!
Mar 8 14:42:32 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13659.297430] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 6725 times.
Mar 8 14:42:33 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13660.296475] EtherCAT WARNING 0: 13455 datagrams UNMATCHED!
Mar 8 14:42:33 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13660.298486] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 6734 times.
Mar 8 14:42:34 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13661.296543] EtherCAT WARNING 0: 13442 datagrams UNMATCHED!
Mar 8 14:42:34 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13661.299562] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 6726 times.
Mar 8 14:42:35 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13662.296611] EtherCAT WARNING 0: 13388 datagrams UNMATCHED!
Mar 8 14:42:35 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13662.300630] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 6700 times.
Mar 8 14:42:36 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13663.296679] EtherCAT WARNING 0: 13414 datagrams UNMATCHED!
Mar 8 14:42:36 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13663.301699] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 6715 times.
Mar 8 14:42:36 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13663.310699] EtherCAT WARNING 0-0: Slave did not sync after 5000 ms.
Mar 8 14:42:36 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13663.312411] EtherCAT ERROR 0-0: Failed to set SAFEOP state, slave
refused state change (PREOP + ERROR).
Mar 8 14:42:36 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13663.312949] EtherCAT ERROR 0-0: AL status message 0x0036: "DC Sync0
Cycle Time".
Mar 8 14:42:36 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13663.313501] EtherCAT 0-0: Acknowledged state PREOP.
Mar 8 14:42:37 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13664.296893] EtherCAT WARNING 0: 14550 datagrams UNMATCHED!
Mar 8 14:42:37 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13664.302791] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7285 times.
Mar 8 14:42:38 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13665.296872] EtherCAT WARNING 0: 14323 datagrams UNMATCHED!
Mar 8 14:42:38 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13665.303849] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7165 times.
Mar 8 14:42:39 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13666.296910] EtherCAT WARNING 0: 14357 datagrams UNMATCHED!
Mar 8 14:42:39 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13666.304931] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7184 times.
Mar 8 14:42:40 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13667.296989] EtherCAT WARNING 0: 14185 datagrams UNMATCHED!
Mar 8 14:42:40 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13667.305995] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7104 times.
Mar 8 14:42:41 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13668.297188] EtherCAT WARNING 0: 14166 datagrams UNMATCHED!
Mar 8 14:42:41 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13668.307062] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7085 times.
Mar 8 14:42:42 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13669.297098] EtherCAT WARNING 0: 14209 datagrams UNMATCHED!
Mar 8 14:42:42 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13669.308106] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7112 times.
Mar 8 14:42:43 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13670.297189] EtherCAT WARNING 0: 13986 datagrams UNMATCHED!
Mar 8 14:42:43 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13670.309191] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7005 times.
Mar 8 14:42:44 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13671.297272] EtherCAT WARNING 0: 14235 datagrams UNMATCHED!
Mar 8 14:42:44 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13671.310255] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7122 times.
Mar 8 14:42:45 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13672.297425] EtherCAT WARNING 0: 14340 datagrams UNMATCHED!
Mar 8 14:42:45 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13672.311322] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7185 times.
Mar 8 14:42:46 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13673.297404] EtherCAT WARNING 0: 14455 datagrams UNMATCHED!
Mar 8 14:42:46 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13673.312406] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7227 times.
Mar 8 14:42:47 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13674.297464] EtherCAT WARNING 0: 14545 datagrams UNMATCHED!
Mar 8 14:42:47 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13674.313523] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7281 times.
Mar 8 14:42:48 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13675.297525] EtherCAT WARNING 0: 14760 datagrams UNMATCHED!
Mar 8 14:42:48 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13675.314541] EtherCAT WARNING: Datagram ffff91a5b5c9d858
(domain0-0-main) was SKIPPED 7384 times.
Mar 8 14:42:49 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13676.202128] EtherCAT 0: Releasing master...
Mar 8 14:42:49 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13676.202166] EtherCAT 0: Master thread exited.
Mar 8 14:42:49 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13676.202179] EtherCAT 0: Starting EtherCAT-IDLE thread.
Mar 8 14:42:49 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13676.202260] EtherCAT 0: Released.
Mar 8 14:42:49 mikekaram-HP-EliteBook-Folio-9470m kernel:
[13676.202274] EtherCAT ERROR 0-0: Failed to receive AL state
datagram: Datagram initialized.
What am I doing wrong? Could you please offer me some advice, to
achieve my goal?
Regards,
Mike Karamousadakis
_______________________________________________
etherlab-users mailing list
etherlab-users at etherlab.org<mailto:etherlab-users at etherlab.org>
http://lists.etherlab.org/mailman/listinfo/etherlab-users
_______________________________________________
etherlab-users mailing list
etherlab-users at etherlab.org
http://lists.etherlab.org/mailman/listinfo/etherlab-users
</mailto:etherlab-users at etherlab.org></mailto:etherlab-users at etherlab.org></jw at datatroniq.com<mailto:jw at datatroniq.com></mailto:etherlab-users at etherlab.org></mike95gr at hotmail.com<mailto:mike95gr at hotmail.com></mike95gr at hotmail.com<mailto:mike95gr at hotmail.com></jw at datatroniq.com>
More information about the Etherlab-users
mailing list