学习SOEM主站过程中进行的一些记录,防止以后遗忘,顺便分享出来,适合新手入门看看。
SOEM安装还是比较容易的。我的安装环境是debian9,在类似的linux系统下安装方法类似。没有尝试在windows下安装,如有需要,大家可以查阅其他资料。
进入SOEM主站官网Open EtherCAT Society: Home of SOEM and SOES
下拉,找到对应的版本,我下载的是SEOM-1.3.1
下载完后,解压到自己的目录下。然后在该目录下打开终端,输入以下命令即可安装完成。
source ./setup.sh linux
make all
利用网线将ethercat从站连接至电脑网口,接通电源。终端中输入以下命令,查找ethercat从站使用了哪个网口。
ifconfig
输入命令后可以看到以下情况,因为电脑安装了多个网卡。此处需要自行判断是用了哪个。测试时实际连接在eth1网卡上。
得知这个关键信息后,即可运行SOEM中一个自带的简易程序。终端中输入命令如下
sudo 你的目录/SOEM-1.3.1/test/linux/simple_test/simple_test 你的网卡名
运行效果如下,
至此,说明你的SOEM至少是已经可以正常工作的。但是simple_test这个测试只是在进行简单的循环操作,每次循环时打印过程数据ProcessData的输入输出状态。下面将尝试怎么修改这个文件来满足我们自己的需要。
打开原SOEM-1.3.1/test/linux/simple_test文件夹下的simple_test.c文件可以看到代码,截取部分如下。可以看到第97行中,设置的循环次数为10000次。由于运行此段测试代码时循环太多,导致打印的字符占满了整个终端,现在进行一个简单的修改,即将此处的10000次改为10次,然后看如何编译通过。
修改后的文件另存为simple_test1.1.c后在目录下编译将会报错。首先查看本目录下的Makefile,查看后可以看到其中有一些变量值。因此,需要像安装SOEM时一样,首先source一下,然后再make。需要执行的命令如下
cd 你的目录/SOEM-1.3.1
source ./setup.sh linux
cd /test/linux/simple_test
make
然后发现仍然会报错,如下
因此尝试改正,修改Makefile中APPNAME = simple_test1.1 发现仍然报同样的错误。考虑到报错提示重复定义,怀疑可能是需要删除掉之前原始文件以及其编译生成的库文库。
进入SOEM-1.3.1/test/linux/simple_test/obj/linux目录删除simple_test.o和simple_test.d
再次make,发现编译通过,如下
输入以下代码,运行修改后的程序,
sudo 你的目录/SOEM-1.3.1/test/linux/simple_test/simple_test1.1 你的网卡名
此处仍然有些疑问,改了循环次数为10次。但实际却只打印了第十次,而不是打印10次。因此,需要进一步研究代码中写的内容。
后面尝试了如何去控制IO模块的输入输出。发现已经有博主分享过了,此处就贴上他的链接吧,大家可以自行查阅,按照文中方式修改代码即可,链接如下,
SOEM控制io超简洁程序_IGH EtherCAT的博客-CSDN博客_ec_config_init