Windows下EtherCAT-SOEM主站快速搭建指南
将SOEM源码路径:SOEM\soem中的ethercat.h、ethercatbase.h、ethercatcoe.h、ethercatconfig.h、ethercatconfiglist.h、ethercatdc.h、ethercateoe.h、ethercatfoe.h、ethercatmain.h、ethercatprint.h、ethercatsoe.h、ethercattype.h复
环境准备
- 操作系统:Windows 7/10/11(64位推荐)
- 开发工具:Visual Studio 2022社区版、QT5.12.12
- 依赖库:SOEM源码(需从官方GitHub下载)、NPcap(网络驱动支持)
- SOEM源码编译工具:CMake
- 硬件要求:支持EtherCAT的网卡(如Intel I210)
下载与编译
-
获取SOME源文件
支持cmake的SOME(编译为VS项目,方便调试)的源文件,从网站https://github.com/OpenEtherCATsociety/SOEM/releases 上下载V1.4.0版本的软件。
-
下载安装网络抓包软件NpCap
下载地址:Npcap: Windows Packet Capture Library & Driver
安装步骤:选下面两项
-
下载安装CMake
方法一:
优先下载最新版,下载地址:https://cmake.org/download/
方法二:
【也可以使用chocoley方式下载(引用地址:Building SOEM — SOEM documentation)】:
其中installChocolatey.cmd内容源文为:
@echo off
SET DIR=%~dp0%
::download install.ps1
%systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "((new-object net.webclient).DownloadFile('https://community.chocolatey.org/install.ps1','%DIR%install.ps1'))"
::run installer
%systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '%DIR%install.ps1' %*"
运行installChocolatey.cmd安装Chocolatey,以管理员身份运行指令窗口cmd.exe,安装CMake。
安装CMake的指令为:
C:\Windows\system32>cd C:\ProgramData\chocolatey
C:\Windows\system32>choco install -y cmake
卸载CMake的指令为:
C:\Windows\system32>cd C:\ProgramData\chocolatey
C:\ProgramData\chocolatey>choco install -y cmake
-
编译生成SOEM静态库
载zip压缩包到本地,文件结构是这样的:
将压缩包解压到本地,就可以利用CMake进行配置了。
设置源代码路径为D:/SOEM(带有CMakeLists.txt文件),设置构建目录为D:/SOEM/build,设置好后点击Configure按钮,进行编译环境配置,这里选择VS2022(也可以根据自己安装的VS版本选择对应的版本),最后点Finish
回到主界面,等待config完成,点击Generate,等待处理完成。
【注意】此时大概率会报错
此时需要修改CMakeLists.txt中内容,然后再执行上述操作。
①修改第一行,可根据具体报错提示修改新版本号
②修改最后几行
不出意外应该会在D:\SOEM\build下生成一个SOEM的解决方案工程
工程已经配置好了
直接生成就可以得到soem.lib文件,这样就可以在自己的项目中引用了。
【注意】这是一个静态库,引用的时候是将整个lib编译进可执行文件,如果需要进行动态引用就需要编译成动态库(.dll)。
静态库部署
-
新建Visual Studio工程
-
创建文件夹
创建SOEM_LIB_x64文件夹,并在该文件家中创建inc、lib子文件夹
-
复制静态库
① 将SOEM源码路径:SOEM\build中的soem.lib复制到第2步中创建的lib文件夹
② 将SOEM源码路径:SOEM \oshw\win32\wpcap\Lib\x64中的Packet.lib、wpcap.lib复制到第2步中创建的lib文件夹
-
复制头文件
- 将SOEM源码路径:SOEM\osal中的osal.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM\osal\win32中的inttypes.h、osal_defs.h、osal_win32.h、stdint.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM\oshw\win32中的nicdrv.h、oshw.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM\oshw\win32\wpcap\Include中的bittypes.h、ip6_misc.h、Packet32.h、pcap-bpf.h、pcap-namedb.h、pcap-stdinc.h、remote-ext.h、Win32-Extensions.h复制到第2步中创建的inc文件夹(不要复制pcap.h)
- 将SOEM源码路径:SOEM\oshw\win32\wpcap\Include\pcap中的bluetooth.h、bpf.h、namedb.h、pcap.h、sll.h、usb.h、vlan.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM\soem中的ethercat.h、ethercatbase.h、ethercatcoe.h、ethercatconfig.h、ethercatconfiglist.h、ethercatdc.h、ethercateoe.h、ethercatfoe.h、ethercatmain.h、ethercatprint.h、ethercatsoe.h、ethercattype.h复制到第2步中创建的inc文件夹
-
配置头文件路径
-
添加头文件
添加现有项
-
配置静态库路径
打开属性
-
添加静态库
添加静态库 soem.lib、Packet.lib、wpcap.lib、winmm.lib、ws2_32.lib
-
添加宏
添加宏:_CRT_SECURE_NO_WARNINGS、WIN32、__STDC_LIMIT_MACROS
测试
-
网卡测试
右键项目->添加->新建项
打开SOEM源文件夹路径:SOEM\test\win32\slaveinfo
打开slaveinfo.c,复制所有程序到主函数slaveInfo.cpp中,将原来的main函数名改为mainSlaveInfo,并在slaveInfo.h中声明
在main.cpp中调用
运行代码。
-
问题及解决办法
① 找不到头文件
**解决办法:**双击跳转到下图,修改为#include <bpf.h>
② 无法解析的外部符号,"x86"与"x64冲突"
**解决办法:**将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Lib\x64中的Packet.lib、wpcap.lib复制到lib文件夹
-
运行结果
在mainSlaveInfo函数中设置断点,进入断点时,可查看到获取的网卡信息
-
连接从站测试
找到自己的网卡,上一步成功运行可以查看自己的网卡名称为:\Device\NPF_{xxx}
复制网卡名称
修改主函数代码:(注:网卡名称中"\",要用"\\"表示)
在slaveinfo函数内打断点,可以正常运行到内部信息,也可以使用Qt函数自行打印读取的从站信息。
下方为具体信息内容(这个是控制台应用程序调用静态库时,打印的信息,具体配置方法可查看网页【EtherCAT】Windows+Visual Studio配置SOEM主站——静态库配置+部署 - 技术栈
更多推荐
所有评论(0)