alde103

alde103

Hi all, has anyone worked with EtherCAT and Nerves before?

I’m quite new with Ethercat, so I’m looking for a good starting point like a reliable and recommended library (and easy to use haa) that handles Ethercat that can be added to a nerves custom system.

Thanks in advance :slight_smile: .

Showing Posts 1 to 5

ElixirTip

ElixirTip

I’ve worked with EtherCAT. Nerves uses Buildroot which includes an EtherCAT package igh-ethercat. It goes through the standard network stack. It also has a few hardware drivers such as e100 for better performance. To include it you need to make a custom Nerves system and add the package.

Ultimately, we found it didn’t have the performance we needed for our specific hardware. So we made a custom, private Nerves system that uses Acontis’s EtherCAT offering.

alde103

alde103 OP

Thanks for the answer, you give me a good path to follow !!! :).

If you do not mind to tell us, did you used the nerves official supported hardware or another one?
I’m asking it because I’m planning to use a Rpi3 and I want to know if it’s worth to looking at igh-ethercat or directly to the Arcontis, or which were your performance limitations that igh-ethercat doesn’t accomplished?
Also I want to ask:
In your opinion, which package is more friendly to use (or to make an elixir wrapper)?

Thanks in advance…

ElixirTip

ElixirTip

We had problems with igh-ethercat with raspberry pi. It simply couldn’t compile the igh-ethercat package. We never figured out why. It worked with BeagleBone Black and that’s what we’re still using.

We needed sub-millisecond response times on EtherCAT. igh-ethercat doesn’t provide hardware drivers for BBB (or RPi). So it was taking several milliseconds for a round trip.

If you don’t need that level of performance, then go with igh-ethercat. It’s also open source. Actontis provides proprietary, enterprise-level solutions so you’ll be paying quite a bit for it.

alde103

alde103 OP

Hi all, here is an update of this thread; first, I tried to build igh-ethernet package in buildroot for a rpi3, however, since rpi3 doesn’t have any igh-ethernet supported hardware. The igh-ethernet needs to be compiled with --enable-generic option, therefore, I needed to add a custom igh-ethernet package to buildroot, also I enabled udev, taskset packages. Despite this, I had these types of warnings during compilation:

depmod: WARNING: /home/alde/Documents/Elixir/Nerves/repos/valiot_system_rpi3/.nerves/artifacts/valiot_system_rpi3-portable-1.7.2-valiot.7/target/lib/modules/4.19.25/extra/devices/ec_generic.ko needs unknown symbol kernel_bind

depmod: WARNING: /home/alde/Documents/Elixir/Nerves/repos/valiot_system_rpi3/.nerves/artifacts/valiot_system_rpi3-portable-1.7.2-valiot.7/target/lib/modules/4.19.25/extra/master/ec_master.ko needs unknown symbol sched_setscheduler
.
.
.

The following error was shown during runtime:

iex(3)> cmd "modprobe ec_master"
modprobe: can't load module ec_master (extra/master/ec_master.ko): unknown symbol in module, or unknown parameter
1

At this point I thought it could be a kernel version issue, since when compiling a similar repository (for bbb), the compilation works without warnings, therefore, I lost interest in using igh-ethernet haha.

The second option was the arcontis software atemsys, which it appears to be easier to compile, so I added a custom package to buildroot, however, during compilation I had the same type of warning (only 1 warning) as before:

depmod: WARNING: /home/alde/Documents/Elixir/Nerves/repos/valiot_system_rpi3/.nerves/artifacts/valiot_system_rpi3-portable-1.7.2-valiot.7/target/lib/modules/4.19.25/extra/atemsys.ko needs unknown symbol of_find_compatible_node

Therefore, it also fails at runtime.

My third option was the SOEM project, I had no issue with this library (compiles with no warnings), however, this package is refered by the community more as a library than a master software, therefore, I think that its better to make an Elixir wrapper than add the package in buildroot.

Giving another chance to the previous options (atmsys, igh-ethernet) and looking the bbb project, it seems that by disabling CONFIG_TRIM_UNUSED_KSYMS=y in linux-x.x.defconfig both packages works in runtime !!!

The option CONFIG_TRIM_UNUSED_KSYMS=y seem to be to trim exported kernel symbols that are not used, which for me seems that it makes the opposite, I also do not know what kind of problems I am creating when disabling this option :(, Does anyone knows?

Currently, the problem in which I am working with igh-ethernet is to open a device /dev/EtherCAT0 that does not exist, but I think it’s a matter of executing some package commands and defining some rules in /etc/udev/rule.d (this directory does not exist either).

Does anyone know how to define these rules in Nerves?, or does it have to be done in Buildroot?

Regards.

n0gg1n

n0gg1n

If anyone is still stumbling upon this problem, I’ve written two libraries which are both running on <10ms cycle time on a Rpi4:

— All posts loaded —

Where Next? Top

Trending in Questions Top

Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
Trolleger
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge &amp; Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews