目录
一、准备工作
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. 新建Visual Studio工程
2. 创建文件夹
在第1步,⑤位置设置的路径下,创建inc、src、soem三个文件夹。
3. 创建主函数
在第2步创建的src文件夹下,创建主函数main.c
4. 复制源代码
复制SOEM源代码中的osal、oshw、soem三个文件夹,到步骤2创建的soem文件夹下
5. 删除无关项
① 进入步骤2创建的soem文件夹下
② 进入osal文件夹,保留win32文件夹和osal.h文件,其余删除
- 在osal文件夹中创建src、inc文件夹;
- 将win32文件夹中的c源代码复制到src文件夹;
- 将win32文件夹中的头文件复制到inc文件夹;
- 将osal.h文件复制到inc文件夹;
- 删掉其余文件,只保留inc、src文件夹。
③ 进入oshw文件夹,保留win32文件夹,其余删除
- 在oshw文件夹中创建src、inc文件夹;
- 将win32文件夹中的c源代码复制到src文件夹;
- 将win32文件夹中的头文件复制到inc文件夹;
- 将win32文件夹中的wpcap文件夹复制到oshw文件夹下;
- 删掉其余文件,只保留inc、src文件夹、wpcap文件夹。
④ 进入soem文件夹
- 在soem文件夹中创建src、inc文件夹;
- 将soem文件夹中的c源代码复制到src文件夹;
- 将soem文件夹中的头文件复制到inc文件夹;
- 删掉其余文件,只保留inc、src文件夹。
6. 将soem源码添加进工程
重复步骤①、②、③
重复步骤①、②、③
7. 添加soem头文件
8. 配置头文件路径
重复⑤、⑥
重复⑤、⑥
重复⑤、⑥
重复⑤、⑥
9. 配置静态库路径和静态库
同第8步的①、②,打开属性
添加静态库:Packet.lib、wpcap.lib、winmm.lib、ws2_32.lib
10. 定义宏
同第8步的①、②,打开属性
添加宏:_CRT_SECURE_NO_WARNINGS、WIN32
三、运行测试
1. 网卡测试
- 打开SOEM源文件夹路径:SOEM-master\test\win32\slaveinfo
- 打开slaveinfo.c,复制所有程序到主函数main.c中
- 运行代码
2. 问题及解决办法
① 指针未初始化
解决办法:双击上图红色行,跳转到oshw.c文件;第42行,对prev_adapter指针初始化。
② 无法解析外部符号,“x86”与“x64”冲突
解决办法:参考源码部署的“9. 配置静态库和静态库路径”,重新配置静态库路径为:\soem\oshw\wpcap\Lib\x64(原始的静态库路径为:\soem\oshw\wpcap\Lib)
3. 运行结果
4. 连接从站测试
- 找到自己的网卡名称,第3步的“运行结果”可以查看自己的网卡名称为:\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; }