目录
一、准备工作
1. Visual Studio 2022
2. Npcap 1.79
3. SOEM源码
二、静态库配置
1. 修改SOEM源码配置
2. 编译SOEM源码
3. 测试
三、静态库部署
1. 新建Visual Studio工程
2. 创建文件夹
3. 创建主函数
4. 复制静态库
5. 复制头文件
6. 配置头文件路径
7. 添加头文件
8. 配置静态库路径
9. 添加静态库
10. 添加宏
四、测试
1. 网卡测试
2. 问题及解决办法
3. 运行结果
4. 连接从站测试
一、准备工作
1. Visual Studio 2022
下载地址:略
安装步骤:略
2. Npcap 1.79
下载地址:Npcap: Windows Packet Capture Library & Driver
安装步骤:三个全选
3. SOEM源码
下载地址:GitHub - OpenEtherCATsociety/SOEM: Simple Open Source EtherCAT Master
二、静态库配置
1. 修改SOEM源码配置
① 双击打开CMakeLists.txt
② 找到最后一行
③ 注释掉原来内容,添加:add_subdirectory(test/win32/slaveinfo)
④ 进入SOEM源代码的路径:\test\linux\slaveinfo
⑤ 复制CMakeLists.txt到路径:\test\win32\slaveinfo
2. 编译SOEM源码
① 开始菜单栏打开命令行。(二选一,如果后续测试遇到问题:无法解析外部符号,“x86”与“x64”冲突,换另外一个重新编译。这里使用x64编译,x86相同)
② 切换到SOEM根目录
③ 创建build文件夹 mkdir build
④ 进入build文件夹 cd build
⑤ 编译:cmake .. -G "NMake Makefiles"
⑥ 编译:nmake
3. 测试
① 编译完成后,build文件夹下会多出一堆文件
② 查看路径:\build\test\win32\slaveinfo 中出现slaveinfo.exe,则编译成功
③ 进入路径:\build\test\win32\slaveinfo cd ./test/win32/slaveinfo
④ 运行测试 slaveinfo.exe (弹出框点是)
⑤ 连接从站测试 slaveinfo.exe \Device\NPF_{xxxx} (弹出框点是)
三、静态库部署
1. 新建Visual Studio工程
2. 创建文件夹
创建inc、src、lib文件夹
3. 创建主函数
在src文件夹中创建main.c
4. 复制静态库
① 将SOEM源码路径:SOEM-master_x64\build中的soem.lib复制到第2步中创建的lib文件夹
② 将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Lib中的Packet.lib、wpcap.lib复制到第2步中创建的lib文件夹
5. 复制头文件
- 将SOEM源码路径:SOEM-master_x64\osal中的osal.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM-master_x64\osal\win32中的inttypes.h、osal_defs.h、osal_win32.h、stdint.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM-master_x64\osal\win32中的inttypes.h、osal_defs.h、osal_win32.h、stdint.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM-master_x64\oshw\win32中的nicdrv.h、oshw.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM-master_x64\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-master_x64\oshw\win32\wpcap\Include\pcap中的bluetooth.h、bpf.h、namedb.h、pcap.h、sll.h、usb.h、vlan.h复制到第2步中创建的inc文件夹
- 将SOEM源码路径:SOEM-master_x64\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文件夹
6. 配置头文件路径
7. 添加头文件
8. 配置静态库路径
打开属性
9. 添加静态库
添加静态库 soem.lib、Packet.lib、wpcap.lib、winmm.lib、ws2_32.lib
10. 添加宏
添加宏:_CRT_SECURE_NO_WARNINGS、WIN32
四、测试
1. 网卡测试
- 打开SOEM源文件夹路径:SOEM-master\test\win32\slaveinfo
- 打开slaveinfo.c,复制所有程序到主函数main.c中
- 运行代码
2. 问题及解决办法
① 找不到头文件
解决办法:双击跳转到下图,修改为#include <bpf.h>
② 无法解析的外部符号,“x86”与“x64冲突”
解决办法:将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Lib\x64中的Packet.lib、wpcap.lib复制到lib文件夹
3. 运行结果
4. 连接从站测试
- 找到自己的网卡,上一步成功运行可以查看自己的网卡名称为:\Device\NPF_{xxx}
- 复制网卡名称
- 修改主函数代码:(注:网卡名称中“\”,要用“\\”表示)
char ifbuf[1024] = "\\Device\\NPF_(xxxxxxxxxxx)";
int main(int argc, char* argv[])
{
ec_adaptert* adapter = NULL;
printf("S0EM (Simple Open EtherCAT Master)\nSlaveinfo\n");
/* start slaveinfo */
slaveinfo(ifbuf);
printf("End program\n");
return 0;
}