背景:一般机器人主要软件都运行在Linux下,EtherCAT主站和通信代码也运行在Linux下,对于只使用Windows的同学来说,有时候想要进行简单的整机通信系统测试就变得相对困难。这时候如果能在Windows平台下构建简单的主站应用程序,用于基础的通信系统测试,就变得相当方便了
编译环境
根据官方资料,Windows平台下使用Visual Studio完成编译
SOEM源码链接:OpenEtherCATsociety/SOEM: Simple Open Source EtherCAT Master
系统:Windows10
VS:Visual Studio 2022
SOEM:SOEM-1.4.0
pcap:npcap-1.80
从Releases · OpenEtherCATsociety/SOEM下载1.4.0的源码zip压缩包并解压
Visual Studio 2022安装下面的环境
从官网Npcap: Windows Packet Capture Library & Driver下载npcap-1.80,备用
编译源码与demo
开始编译前先修改源码中的CMakeLists.txt文件,默认为编译Linux下的demo,修改为Windows平台的demo
if(BUILD_TESTS)
# add_subdirectory(test/linux/slaveinfo)
# add_subdirectory(test/linux/eepromtool)
# add_subdirectory(test/linux/simple_test)
add_subdirectory(test/win32/slaveinfo)
add_subdirectory(test/win32/simple_test)
endif()
然后给需要编译的demo增加CMakeLists.txt文件
内容参考Linux中的,或者直接拷贝到相应目录即可
set(SOURCES simple_test.c)
add_executable(simple_test ${SOURCES})
target_link_libraries(simple_test soem)
install(TARGETS simple_test DESTINATION bin)
set(SOURCES slaveinfo.c)
add_executable(slaveinfo ${SOURCES})
target_link_libraries(slaveinfo soem)
install(TARGETS slaveinfo DESTINATION bin)
使用安装好的Visual Studio 2022环境和工具进行编译
cmake .. -G "NMake Makefiles"
nmake
编译完成,得到两个demo的可执行文件
安装依赖
直接运行可执行文件,得到下面的错误
安装npcap-1.80,解决依赖问题。这里建议勾选后两项,第一项勾选后每次运行都会有弹窗提示,按需求安装。
继续运行可执行文件,即可得到下面输出,说明编译与运行都没有问题了
硬件测试
通过网线连接EtherCAT从站,进行相关测试。slaveinfo和simpletest都可以正常运行
打包运行
Windows平台有很多方便的打包工具,不过这里只是一些简单的小工具,就不进行复杂的操作,直接将可执行文件和依赖的库一起压缩打包
直接将以上文件拷贝到另一台全新的电脑,安装npcap-1.80,运行提示缺少相关库
直接从之前编译的电脑中拷贝相关文件,最终得到下面这些文件
C:\Windows\System32\vcruntime140d.dll
C:\Windows\System32\ucrtbased.dll
最后运行,两个demo程序都可以正常运行
至此,即可完成一些小工具的开发与使用,并且可以移动到别的电脑运行
Tips:Windows11使用的时候输入网卡名字的时候加上引号(“device”,‘device’),单双引号皆可
参考链接
主要参考以下内容