[etherlab-users] Use EtherCAT in Etherlab
Florian Pose
fp at igh-essen.com
Fri Apr 24 09:29:18 CEST 2009
Hello,
On Thu, Apr 23, 2009 at 09:59:22PM +0200, Andy Rohr wrote:
> I managed to run a minimal Etherlab System based on the bundle 1.6. I made
> a "handcoded C application" using the C-API based on the given skeleton.
> Now I would like to make use of the EtherCAT-Master and get some data from
> EtherCAT slaves. The app_main.c has a function TaskStep where the cyclic
> task is implemented. I this the point where I should use the
> EtherCAT-master (doing things like in function "run" of the rtai_sample.c)?
> How are EtherCAT-master and the realtime-task brought together without
> using Simulink?
you could write a set of EtherCAT funkctions, for example
- ethercat_init(), which requests the master, does the bus configuration
and master activation. Call this in TaskInit().
- ethercat_read(), which calls ecrt_master_receive() and
ecrt_domain_process() and reads the EtherCAT inputs into the signal
tree.
- ethercat_write(), which writes process data from the signal tree into
EtherCAT process image and then calls ecrt_domain_queue() and
ecrt_master_send().
Call there two in TaskStep(), and do your calculations in between.
In TaskExit(), you could call a function like ethercat_cleanup(), which
releases the master again.
I did it this way in a recent project and it works great.
--
Best regards,
Florian Pose
http://etherlab.org
More information about the Etherlab-users
mailing list