SOEM(Simple Open EtherCAT Master)是rt-lab提供的一个开源EtherCAT主站,使用裸套接字收发EtherCAT帧,可以很方便地移植到嵌入式设备上。
本文介绍如何在Ubuntu(VMware)上运行SOEM主站的步骤,以及通过1个按钮控制一个LED指示灯的简单实验。
软件:VMware10+Ubuntu14.04, 在此虚拟机上运行SOEM,并连接EtherCAT从站。
硬件:
(1)24V电源
(2) EK1100
(3)EL1014 (输入通道1接一个按钮)
(4) EL2004 (输出通道1接一个LED指示灯)
(5) EL9010
从网站http://openethercatsociety.github.io/上下载SOEM1.3.1并在Ubuntu中解压到/opt,解压后的文件如下:
soem文件夹下为实现EtherCAT master功能的主要文件。
osal和oshw文件夹下是操作系统的接口文件,包括intime、linux、rtk和win32。
test文件夹是各操作系统下的一些demo程序。
打开debug功能后,EC_PRINT函数将有效。
将../soem/EthercatConfig.c文件的第62行注释去掉就可以了:
// define if debug printf is needed
#define EC_DEBUG
运行test目录下的demo程序:
: cd /opt/SOEM-1.3.1/test/linux/simple_test
:./simple_test eno16777736
其中eno16777736为网卡名称,通过命令ifconfig查询得到,运行效果如下
在主机上运行Wireshark软件,网卡选择本地连接,监控到的数据如下:
在/soem/test/linux/simple_test.c 中添加一行:
*(ec_slave[0].outputs = *(ec_slave[0].inputs;
即通过EL1014的输入控制EL2004,这样就能通过按钮控制LED指示灯的亮灭了。