当前位置: 首页 > news >正文

【EtherCAT】Windows+Visual Studio配置SOEM主站——源码配置

目录

一、准备工作

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

0764c6f72328418199a3e06308146f78.png

        安装步骤:三个全选

8a895d2f353a44e89e73a5c1b11601ff.png

3. SOEM源码

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

 

二、源码部署

1. 新建Visual Studio工程

629d7ee1eb7446509f743c27ade4a2dd.png

dbee70ff25b941869f53a0a34d1d353c.png

f28a490482ae4ddb9ca72258f8398770.png

2. 创建文件夹

       在第1步,⑤位置设置的路径下,创建inc、src、soem三个文件夹。

c70a066dd1b4471f8d45d2533080ff97.png

3. 创建主函数

        在第2步创建的src文件夹下,创建主函数main.c

9aca7485d54d4d74bc491693288b4c6a.png

0fc1f2e1731641f5bec7aec1d9ab3efb.png

1b80b31d47dd4a9ebebe8cd05acd72b2.png

cfb5dc111ffd4f54967ce07ebae5ad11.png

4. 复制源代码

        复制SOEM源代码中的osal、oshw、soem三个文件夹,到步骤2创建的soem文件夹下

bef0cb40078b4fcf8c8f35296b9a6b79.png

5. 删除无关项

         ① 进入步骤2创建的soem文件夹下

5701bb8c67da488a88aea4ded900f501.png

9ff40037209c4a959422d43497cf03f0.png

        ② 进入osal文件夹,保留win32文件夹和osal.h文件,其余删除

2e9a1e327f7640e5bce158e274c2074a.png

  • 在osal文件夹中创建src、inc文件夹;
  • 将win32文件夹中的c源代码复制到src文件夹;
  • 将win32文件夹中的头文件复制到inc文件夹;
  • 将osal.h文件复制到inc文件夹;
  • 删掉其余文件,只保留inc、src文件夹。

64f6c8a235c64f4191e22b6db3633055.png

d2f8403ba3424f59a6ed3f47328bd40a.png

d79c40006dee4882a9f33023a41a08a8.png

        ③ 进入oshw文件夹,保留win32文件夹,其余删除

  • 在oshw文件夹中创建src、inc文件夹;
  • 将win32文件夹中的c源代码复制到src文件夹;
  • 将win32文件夹中的头文件复制到inc文件夹;
  • 将win32文件夹中的wpcap文件夹复制到oshw文件夹下;
  • 删掉其余文件,只保留inc、src文件夹、wpcap文件夹。

125f923285b04dff9f1a88feb4e715d3.png

b5fd9f75e9f0423aa4415cf0993565d2.png

fd872cb501ed4f918027ab3891720c52.png

3b222e2b44534ac6a4ed8dede0d67bc9.png

        ④ 进入soem文件夹

  • 在soem文件夹中创建src、inc文件夹;
  • 将soem文件夹中的c源代码复制到src文件夹;
  • 将soem文件夹中的头文件复制到inc文件夹;
  • 删掉其余文件,只保留inc、src文件夹。

a7b5e677c0c740bdb3698b81f43821ea.png

4c06e0d77b98434f89d0f97fdfdc12e4.png

8eb18010c06d4808920cea4dc2d1f1b2.png

6. 将soem源码添加进工程

89cae660f7004bc197459a4f586d6258.png

fbf5071162d245dcbf17aab92e895172.png

8a0b5ded73b440c097433694652dd350.png

1f873e2c63dc4c05bc2b965fb1b03444.png

d448ed6468664ae982047def24d85bc6.png

e65f6f293af7465da62857476205a847.png

        重复步骤①、②、③

e3d2717b3dca474aa9749f8dfb4484aa.png

eedc271ee37a47b8b67f24a4b37d1373.png

3d063a1b82324d249302f69e73214ccd.png

        重复步骤①、②、③

7b70b100a94a48bba79363ecd1e9bf21.png

f32853f6fc6848459e1f6ba898f957e3.png

5067148f99274a1194fae1dbfd7e8d6f.png

e82ad4615d7a454692632eecbabe89b7.png

7. 添加soem头文件

84303b3b55504d6d8f66da11c6bbd354.png

1774522ac679416c8adaec5937644def.png

3fbc214921cf47fe934c8a317154266c.png

3e0dfe4012134d23a1edca2d8d180984.png

4ecfaf6ef10045f3b6c08b64b51172ee.png

cfa7d9632a2e4d25a2b3692f2b1ff20b.png

eac5fe7977674579bd5043a560a78dd5.png

8. 配置头文件路径

2976c73fd3f343c7a4d08fad50146dda.png

5c9dbeb0734d4446ae45d2fc524fb718.png

690ef02ed4bf415f9a301d2bef3289c2.png

5fd6fa0e904e417c94171bbdfefac300.png

        重复⑤、⑥

6ec4fd95f4034dee83bbb8d07a56ccd8.png

        重复⑤、⑥

2755a2320527423c85670732aa589890.png

        重复⑤、⑥

d407b6dd7b974b38ba3a75f2d6c59d80.png

        重复⑤、⑥

f3e1b2d133d8448ab75491495ad6b1d2.png

c0d1beb53605480ebd55b3964f63d819.png

bbe05d58ff05471caca71084a50710b3.png

9. 配置静态库路径和静态库

        同第8步的①、②,打开属性

dd2f233666b54cc7896bfae1e01586ee.png

f661f3b81b104dcc9e311c3bf2921452.png

ef82d7cc6666478bb5f69dde18b3a725.png

441bdfc5bb9d4f2ab6a275629f257e55.png

bee0af56e0c34049a0c8df8523c20d10.png

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

79d5e6a872064a82806f2d87a864733b.png

10. 定义宏

         同第8步的①、②,打开属性

fa82807a319e44d09d6bdef143010366.png

        添加宏:_CRT_SECURE_NO_WARNINGS、WIN32

ec6c460ef94d4c9885479a8d75db148f.png

三、运行测试

1. 网卡测试

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

13ddb1f5076e479eb23e69313c10b3f9.png

a24e22cb5f7f4106a2c07995d8975b25.png

2. 问题及解决办法

        ① 指针未初始化

0830bdd555874254b1fc5035851d8b9b.png

           解决办法:双击上图红色行,跳转到oshw.c文件;第42行,对prev_adapter指针初始化。

50b4fb8b6f1e49f6b1059d5f3023b1df.png

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

106155935d1c45d3a638a88ddb774e0e.png

          解决办法:参考源码部署的“9. 配置静态库和静态库路径”,重新配置静态库路径为:\soem\oshw\wpcap\Lib\x64(原始的静态库路径为:\soem\oshw\wpcap\Lib)

0172a265ac0244e7b7da924caae83c56.png

3. 运行结果

97a520523ae54d2786b83747deab1e57.png

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

be3e0058c62b4e2cb285c730ad8c2a41.png

610197ef864a42f0a25d8f6846a8c813.png

 

 

相关文章:

【EtherCAT】Windows+Visual Studio配置SOEM主站——源码配置

目录 一、准备工作 1. Visual Studio 2022 2. Npcap 1.79 3. SOEM源码 二、源码部署 1. 新建Visual Studio工程 2. 创建文件夹 3. 创建主函数 4. 复制源代码 5. 删除无关项 6. 将soem源码添加进工程 7. 添加soem头文件 8. 配置头文件路径 9. 配置静态库和静态库路…...

GPTPDF深度解析:开源文档处理技术全攻略

GPTPDF深度解析:开源文档处理技术全攻略 在数字化信息时代,PDF文件因其稳定性和跨平台兼容性,已成为学术交流、技术文档和电子书籍等领域的首选格式。然而,PDF文档的处理和内容提取一直是一个难题。随着人工智能技术的飞速发展&a…...

网络学习:应用层DNS域名解析协议

目录 一、简介 二、工作流程 一、简介 DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。 同时,DNS…...

7.怎么配置一个axios来拦截前后端请求

首先创建一个axios.js文件 导入我们所需要的依赖 import axios from "axios"; import Element from element-ui import router from "./router"; 设置请求头和它的类型和地址 注意先注释这个url,还没有解决跨域问题,不然会出现跨域 // axios.defaults.…...

Day17_1--AJAX学习之GET/POST传参

AJAX 简介 AJAX 是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。其实AJAX就可以理解为就是JS。通过AJAX也就实现了前后端分离&#xff0c;前端只写页面&#xff0c;后端生成数据&#xff01; 现在开始通过实例学习&#xff1a; 1--GET传参 <!…...

golang国内proxy设置

go env -w GOPROXYhttps://goproxy.cn,direct经常使用的两个, goproxy.cn 和 goproxy.io 连接分别是 https://goproxy.cn https://goproxy.io 如果遇到某些包下载不下来的情况&#xff0c;可尝试更换数据源 更推荐使用https://goproxy.cn 速度快&#xff0c;缓存的包多 提醒…...

全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type

全网最适合入门的面向对象编程教程&#xff1a;31 Python 的内置数据类型-对象 Object 和类型 Type 摘要&#xff1a; Python 中的对象和类型是一个非常重要的概念。在 Python 中,一切都是对象,包括数字、字符串、列表等,每个对象都有自己的类型。 原文链接&#xff1a; Fre…...

【mongodb】mongodb副本集的搭建和使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

Java后端面试复习7.24

lock加锁解锁尝试获取锁方法lock底层基于什么实现lock和lock的底层实现分别面向什么用户lock和synchronized异同如何选择合适的锁ReentrantLock如何实现冲入内部类三个公平和非公平获取锁怎么实现的RL默认公平还是非公平&#xff0c;构造参数ReentrantRedaWriteLock的特性什么是…...

前端 HTML 概述

目录 1. HTML概述 1.1 超文本标记语言 1.2 标签 2. HTML 解析与编辑 2.1 解析与访问 2.2 编辑 html文件 1. HTML概述 HTML&#xff08; Hyper Text Markup Language&#xff1a;超文本标记语言 &#xff09;&#xff1a;主要用于网页主体结构的搭建&#xff0c;在网页上…...

探索Thymeleaf:用动态Web模板引擎打造吸引人的用户界面(SpringBoot的html详解)

什么是Thymeleaf&#xff1f; Thymeleaf是一个用于Web和独立环境的现代服务器端Java模板引擎&#xff0c;用于处理XML/XHTML/HTML5内容。它特别适合基于Spring框架的Web应用程序&#xff0c;因为它提供了与Spring MVC的出色集成。Thymeleaf以其自然的模板语法和强大的数据绑定…...

视频教程 - 自研Vue3 Tree组件高级功能:虚拟滚动新增节点实现自动滚动

感谢小伙伴们对本套自研vue3 tree组件教程的关注&#xff0c;在前一篇媲美Element Plus JuanTree终极实战&#xff1a;虚拟滚动的功能演示中发现了小bug&#xff0c;特地整理了相关录屏来说明怎么一步步解决bug的&#xff0c;来回馈小伙伴们的支持。 Tree组件高级功能&#xff…...

职业生涯阶段总结3:转眼毕业三年

不知不觉&#xff0c;科班毕业三年多了&#xff0c;也换了三个单位了&#xff1b; 个人软件开发的理论和技术能力确实比以前刚出来的时候&#xff0c;强了不少&#xff1b; 在行情越发下滑的形势&#xff0c;似乎只有进大厂才能拿到不错的收入&#xff0c;但是大厂的压力也是比…...

项目经理面试总结

先上结论&#xff1a;每个公司问的问题侧重点都不太一样&#xff0c;五花八门&#xff0c;评判标准也不一样&#xff0c;目前我能感觉到的就是自己需要很了解项目&#xff0c;也就是工作过程中经常做出总结&#xff0c;需要你经常去思考&#xff0c;包括对内和对外的思考。 自我…...

(免费领源码)java#springboot#mysql大学校园旧物捐赠网站 25109-计算机毕业设计项目选题推荐

摘 要 在网络信息的时代&#xff0c;众多的软件被开发出来&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个性的需求。在这种时代背景下&#xff0c;企业只能以用户为导向&#xff0c;按品种分类规划&#xff0c;以产品的持续创新作为企业最重要的竞…...

Java 设计模式之单例模式

Java 设计模式之单例模式 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供了一种访问该实例的全局方法。这种模式有助于确保系统中的某些组件只有一个实例&#xff0c;并提供了一种方便的方法来访问该实例。 更多设计模式请参考&#x…...

Linux系统驱动(二)字符设备驱动

文章目录 一、概念&#xff08;一&#xff09;相关概念&#xff08;二&#xff09;字符设备框架结构&#xff08;三&#xff09;用户空间和内核空间数据传输1. 函数的参数对应关系 &#xff08;四&#xff09;字符设备相关的API1. 字符设备驱动&#xff08;1&#xff09;注册字…...

Day29 | 动态规划 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

语言 Java 509. 斐波那契数 斐波那契数 题目 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n -…...

【开源移植】MultiButton_小型按键驱动模块移植

MultiButton 简介 MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块&#xff0c;可无限量扩展按键&#xff0c;按键事件的回调异步处理方式可以简化你的程序结构&#xff0c;去除冗余的按键处理硬编码&#xff0c;让你的按键业务逻辑更清晰。 使用方法 1.先申请一个…...

【Python系列】Python 字典合并

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...