【EtherCAT】Windows+Visual Studio配置SOEM主站——静态库配置+部署

目录

一、准备工作

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

0764c6f72328418199a3e06308146f78.png

        安装步骤:三个全选

8a895d2f353a44e89e73a5c1b11601ff.png

3. SOEM源码

        下载地址:GitHub - OpenEtherCATsociety/SOEM: Simple Open Source EtherCAT Master

 

二、静态库配置

1. 修改SOEM源码配置

f7e6e9645af049cf8ea17fb1dd88fc32.png

        ① 双击打开CMakeLists.txt

        ② 找到最后一行

9a0b5351163f4b8b8faf31b98e09c1c4.png

        ③ 注释掉原来内容,添加:add_subdirectory(test/win32/slaveinfo)

ed8f5cd9e1ec4e0db7cc145eb66c55b8.png

        ④ 进入SOEM源代码的路径:\test\linux\slaveinfo

        ⑤ 复制CMakeLists.txt到路径:\test\win32\slaveinfo

583f88cef67b4b008058a3d672f6e758.png

2. 编译SOEM源码

        ① 开始菜单栏打开命令行。(二选一,如果后续测试遇到问题:无法解析外部符号,“x86”与“x64”冲突,换另外一个重新编译。这里使用x64编译,x86相同)

79bc6a897a7a46e982645163c2381de9.png

        ② 切换到SOEM根目录

d3b37adffec1475ea36d294a8351b24f.png

        ③ 创建build文件夹  mkdir build

0898792f092e4ccd9e64ae7b81a5dd91.png

        ④ 进入build文件夹  cd build

4dcc646d21f24a6f9f66ed78947495c4.png

        ⑤ 编译:cmake .. -G "NMake Makefiles"

54d36068f4c24f62af6d593ca9720ad2.png

        ⑥ 编译:nmake

989bcbcc212d457e97e2cf3689d99154.png

3. 测试

        ① 编译完成后,build文件夹下会多出一堆文件

ce6b30080451460492d6cc587ca839aa.png

        ② 查看路径:\build\test\win32\slaveinfo 中出现slaveinfo.exe,则编译成功

8b90ace2f4314e69adb1fdda5f3f5b8e.png

        ③ 进入路径:\build\test\win32\slaveinfo    cd ./test/win32/slaveinfo

456629a0c78e46d980de9816638c948f.png

        ④ 运行测试  slaveinfo.exe  (弹出框点是)

7c128cd8c0424ec8859ebc2794fe78bf.png

        ⑤ 连接从站测试  slaveinfo.exe \Device\NPF_{xxxx}  (弹出框点是)

fe131b2767354d42bb7cbca17ab15854.png

 

三、静态库部署

1. 新建Visual Studio工程

9861b4c7463a4962ba70c7553dc216a4.png

668271170c574d239dedd02973dd7d89.png

c482b8ac8a024e77b21fb339a8b58663.png

2. 创建文件夹

        创建inc、src、lib文件夹

975104429dd24c31aa98890221ef556d.png

3. 创建主函数

        在src文件夹中创建main.c

6329b13b8992422088c5da048da7df02.png

939a278fe92642008a511ea47bd6eae5.png

2726a81e8d394bea8b473f79ca13c98c.png

3c943a4675644da2856cadcee3577ead.png

4. 复制静态库

        ① 将SOEM源码路径:SOEM-master_x64\build中的soem.lib复制到第2步中创建的lib文件夹

        ② 将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Lib中的Packet.lib、wpcap.lib复制到第2步中创建的lib文件夹

bff6f958ca2b463ab675387560fe98bb.png

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文件夹

72cff87f7aec40bb99ad4e3f6a37de99.png

6. 配置头文件路径

125b0b7798574d06a41e6831d761170e.png

bed8a67b6a1b45c5a117e79f4c4452a3.png

eff633958456407795b89fd328bf7300.png

f59ecab04ad84f148c8f015b71e436dd.png

7100f88278ea47418c1459414b3248b4.png

7. 添加头文件

99c3a2db13764f4ebbd617ed266aaa48.png

8f1c3fb02e75425d95314732b2054628.png

ac89a8d3c1c843b898302ad274406a4c.png

743e0190ea5d49d795806d6be9ce5fe2.png

65130316ba7444619a950b86920c35ac.png

8. 配置静态库路径

        打开属性

3174c088e8b84e1a8e437125fa7a9b90.png

047cd82848c24fb0b5aee840ee76862d.png

660ad6c1d9104e0e96238a58a7fdd774.png

6bea57de926e4630954f26e6ec265654.png

9. 添加静态库

        添加静态库 soem.lib、Packet.lib、wpcap.lib、winmm.lib、ws2_32.lib

19280eea5f6b4815aea3b9fd5e04831e.png

db6317a3280c43eeba4a5942c7f6f40f.png

10. 添加宏

       添加宏:_CRT_SECURE_NO_WARNINGS、WIN32

55c5043de02d4cd08c62692342efd854.png

dc96273f216f44ff8ec65435ac82ba23.png

 

四、测试

1. 网卡测试

  • 打开SOEM源文件夹路径:SOEM-master\test\win32\slaveinfo
  • 打开slaveinfo.c,复制所有程序到主函数main.c中
  • 运行代码

f98875c0b0ac4848b68f7381ec516c50.png

2. 问题及解决办法

        ① 找不到头文件

2016aed6c4cd43c496e46754c35d38da.png

        解决办法:双击跳转到下图,修改为#include <bpf.h>

c13ebb3da2f94cefbbf16656f7d92310.png

6d2a2ed4745d4025adc0c95762476f07.png

        ② 无法解析的外部符号,“x86”与“x64冲突”

f842180c71094c90a9f1e9b49f2d5b8c.png

        解决办法:将SOEM源码路径:SOEM-master_x64\oshw\win32\wpcap\Lib\x64中的Packet.lib、wpcap.lib复制到lib文件夹

3. 运行结果

5aa146b3b42d4c068b91a64acc892d27.png

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;
}

890165a085bf4bb185deee7c8f620781.png

f92c4c5776d14363a805c5a29fafd614.png

 

 

  • 21
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SudoReboot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值