eCAL - enhanced Communication Abstraction Layer enables scalable, high performance interprocess communication in heterogenous networks. It is based on a publish/subscribe pattern, designed for minimal latency and high data throughput, leveraging UDP or shared memory as the transport layer for best performance. Thanks to its lightweight C/C++ API, eCAL has been integrated into Simulink as an open-source toolbox for simulation on desktop and prototyping on Speedgoat’s real-time target computers, providing a flexible and high performant multi-node communication layer.
Please watch a recording presentation of the original creators of eCAL at the MATLAB EXPO 2021 in this link for more information.
How to get started on desktop
- Install the latest eCAL Release availabe for your OS from here.
- To leverage UDP, please set your multicast routes as shown here.
- Open eCAL Monitor.
- Start a first MATLAB instance and run the model
ecal_helloworld_snd
. - Start a second MATLAB instance and run the model
ecal_helloworld_rec
.
Please notice that the message counter of eCAL subscriber only increases if you run a matching publisher which has the same topic name and is not part of the same process.
How to get started for real-time simulation with Simulink Real-Time™ on Speedgoat® target computers
Build and preparation steps for QNX® RTOS
- Initialize and check out Git submodules.
- Build eCAL libraries for QNX:
- Use the script
buildeCALlibs4QNX.cmd
to build eCAL libraries for QNX® on Windows. - Use the script
buildeCALlibs4QNX.sh
to build eCAL libraries for QNX® on Linux. - Call
buildeCALlibs4QNX
from the objecteCALutils
within MATLAB.
- Use the script
- Copy the libraries from
_install_qnx/lib
to the target. For this purpose, create aneCALutils
object and call the methodinstallLibsOnSpeedgoat
. - Patch Fast-RTPS libraries with
patchFastRTPSLibs
from the class eCALutils.
Setting up eCAL route on QNX®
Run setMulticast4ECAL
. Routes are restored to default after every target reboot. Therefore, you must add the eCAL route after booting the target, whenever you want to use eCAL with the external UDP communication.
Check eCAL communication between Speedgoat® target and host (optional)
- Log into QNX® over SSH and run a send sample, for instance
ecal_sample_person_snd
. - On the host computer, open eCAL Monitor, and you should see the Speedgoat sending the messages. If you don't see them, please review your route and firewall settings on the host. Also, you may use WireShark to inspect the network communication.
Run test model on Speedgoat®
Open and use the "Run on Target" button on the Real-Time ribbon to build, deploy and run the real-time application on the Speedgoat target. If you are using the eCAL Monitor on the host, you should be able to see the incoming messages. Otherwise, please check the network configuration as shown above.
Cloud configuration
Don’t forget to set your multicast routes and make sure your hostname resolution works on all machines!
Getting started
Please read the following documentation about UDP Multicast routes at eCAL Documentation.
Citar como
Pablo Romero (2024). ecal-toolbox (https://github.com/mathworks/ecal-toolbox/releases/tag/v1.4.0), GitHub. Recuperado .
Compatibilidad con la versión de MATLAB
Compatibilidad con las plataformas
Windows macOS LinuxCategorías
- Real-Time Simulation and Testing > Simulink Real-Time > Model Preparation for Real-Time Execution > Communication Protocols >
Etiquetas
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Descubra Live Editor
Cree scripts con código, salida y texto formateado en un documento ejecutable.
bin
buildtools
libraries
src/@eCALutils
test
libraries
models
Versión | Publicado | Notas de la versión | |
---|---|---|---|
1.4.0 | See release notes for this release on GitHub: https://github.com/mathworks/ecal-toolbox/releases/tag/v1.4.0 |
||
1.3.4 | See release notes for this release on GitHub: https://github.com/mathworks/ecal-toolbox/releases/tag/v1.3.4 |
||
1.3.3 | See release notes for this release on GitHub: https://github.com/mathworks/ecal-toolbox/releases/tag/v1.3.3 |
||
1.3.2 | See release notes for this release on GitHub: https://github.com/mathworks/ecal-toolbox/releases/tag/v1.3.2 |
||
1.3.1 | See release notes for this release on GitHub: https://github.com/mathworks/ecal-toolbox/releases/tag/v1.3.1 |
||
1.3 | See release notes for this release on GitHub: https://github.com/mathworks/ecal-toolbox/releases/tag/v1.3 |
||
1.2 | See release notes for this release on GitHub: https://github.com/mathworks/ecal-toolbox/releases/tag/v1.2 |
||
1.1 | See release notes for this release on GitHub: https://github.com/mathworks/ecal-toolbox/releases/tag/v1.1 |
||
1.0 |