alde103
EtherCAT + Nerves
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
.
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
Using Phoenix.LiveView.TagEngine as an EEx.Engine is deprecated!
To compile HEEx, use Phoenix.LiveView.TagEngine.compile/2 instead.
Sta...
New
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app?
Looking for hints regarding:
Addi...
New
Hi all, I wanted to ask how the community is dealing with post-release steps.
Today we have Ecto migrations, which make sure that the db...
New
I am using Oban and occasionally, shortly after a deployment, a handful of jobs can fail because of dependency on other parts of the syst...
New
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #performance










First 5 of 5 Posts
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 ase100for 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
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
We had problems with
igh-ethercatwith raspberry pi. It simply couldn’t compile theigh-ethercatpackage. 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-ethercatdoesn’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
Hi all, here is an update of this thread; first, I tried to build
igh-ethernetpackage in buildroot for a rpi3, however, since rpi3 doesn’t have anyigh-ethernetsupported hardware. Theigh-ethernetneeds to be compiled with--enable-genericoption, therefore, I needed to add a customigh-ethernetpackage to buildroot, also I enabled udev, taskset packages. Despite this, I had these types of warnings during compilation:The following error was shown during runtime:
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-ethernethaha.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: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=yin linux-x.x.defconfig both packages works in runtime !!!The option
CONFIG_TRIM_UNUSED_KSYMS=yseem 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-ethernetis to open a device/dev/EtherCAT0that 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
If anyone is still stumbling upon this problem, I’ve written two libraries which are both running on <10ms cycle time on a Rpi4: