目录
一、准备工作
1. Visual Studio 2022
2. Npcap 1.79
3. SOEM源码
二、源码部署
1. 新建Visual Studio工程
2. 创建文件夹
3. 创建主函数
4. 复制源代码
5. 删除无关项
6. 将soem源码添加进工程
7. 添加soem头文件
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. 新建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;
}