EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排
0 Windows系统QT及VisualStudio和ubuntu系统QT和STM32F767视频欣赏及源代码链接:
0 Win QT & VS和Ubuntu QT & STM32F767 移植SOEM
0.0 移植环境预览:
序号 | 硬件环境 | 开发软件 |
---|---|---|
1 | Ubuntu18.04系统 | QT 5.13.2 及以上 |
2 | Win11/10系统 及 正点原子开发板阿波罗 STM32F767IGT6 | keil5 |
3 | Win11/10系统 | QT5.12.9及以上 |
4 | Win11/10系统 | VisualStudio 2017,建议使用2017版本 |
5 | 最近忙,忙完这段时间移植 |
0.1 Ubuntu18.04系统QT-SOEM博客、视频欣赏及源代码链接
特别注意 PS:
关于源代码说明一下,如果你订阅 我这个专栏 EtherCAT主站SOEM ,可以按照这篇博客配置主站,EtherCAT主站SOEM – 9 – SOEM之基于QT搭建自己的EtherCAT主站 ,只要跟从站能到OP状态,就能使用我的博客里面提供 控制IO模块和电机源代码,从相关博客里面复制代码 ,需要修改一下向自己的工程靠,确保编译通过。 EtherCAT主站SOEM – 13 --Qt-Soem通过界面按键控制 EtherCAT IO模块的io输出 。
如果你觉得麻烦或者繁琐,可以直接下载我提供的 Soem-跟从站通讯到OP状态 整个项目源代码 Soem-跟从站通讯到OP状态-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码 ; 后面控制IO模块和控制电机的相关功能,只需要从相关博客里面复制代码替换即可使用, 这个项目源代码( Soem-跟从站通讯到OP状态)的模板都是已经调整好的,只需要从对应的博客复制替换 对应的cpp文件即可。
如果你只是学习源代码 QT-SOEM怎么控制IO模块或者控制电机的话,可以不用订阅 我这个专栏 EtherCAT主站SOEM ,也能下载看源代码,我也上传相关的源代码,
功能 | 博客链接 | 视频欣赏链接 | 源代码链接 | 其他说明 |
---|---|---|---|---|
EtherCAT主站SOEM – 9 – SOEM之基于QT搭建自己的EtherCAT主站 | 博客地址点我跳转 | 视频欣赏地址点我跳转 | 源代码地址点我跳转 | 该项目源代码只是提供了 QT-SOEM 配置从站到OP状态,没有对EtherCAT从站进行操作。 |
EtherCAT主站SOEM – 13 --Qt-Soem通过界面按键控制 EtherCAT IO模块的io输出 | 博客 | 视频 | 源代码 | 该项目源代码提供了 QT-SOEM 配置从站到OP状态,并且对1个EtherCAT从站 IO模块进行操作,包括:IO输出控制,IO采集进行显示。 |
EtherCAT主站SOEM – 14 --Qt-Soem通过界面采集从站IO进行显示 | 博客 | 视频 | 上面这个 | 上面这个 |
EtherCAT主站SOEM – 16 --Qt-Soem通过界面按键控制电机转圈圈PV模式(速度模式) | 博客 | 视频 | 源代码 | 该项目源代码提供了 QT-SOEM 配置从站到OP状态,并且对1个EtherCAT从站 电机进行操作,通过 PV模式(速度模式) 让 1个电机转圈圈,正反转及停止。 |
EtherCAT主站SOEM – 17 --Qt-Soem通过界面按键控制电机转圈圈PP模式(位置模式) | 博客 | 视频 | 源代码 | 该项目源代码提供了 QT-SOEM 配置从站到OP状态,并且对1个EtherCAT从站 电机进行操作,操作1个电机走PP模式(位置模式) 界面显示目标位置达到状态,正转达到目标位置,反转达到目标位置,及停止。 |
EtherCAT主站SOEM – 20 --Qt-Soem通过 PT模式(力矩模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 该项目源代码提供了 QT-SOEM 配置从站到OP状态,并且对1个EtherCAT从站 电机进行操作,通过PT模式(力矩模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 18 --Qt-Soem通过CSV模式(周期同步速度模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过CSV模式(周期同步速度模式) 控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 19 --Qt-Soem通过CSP模式(周期同步位置模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过CSP模式(周期同步位置模式) 控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 21 --Qt-Soem通过 CST模式(周期同步力矩模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过周期同步力矩模式(CST)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止 |
0.2 STM32F767-SOEM 博客、视频欣赏及源代码链接
源代码模板已经调整,可以直接文件使用替换即可。
正点原子开发板按键功能 key0是电机使能、key1是电机反转、key2是电机正转 、 key_UP是电机停止。
功能 | 博客链接 | 视频欣赏链接 | 源代码链接 | 其他说明 |
---|---|---|---|---|
EtherCAT主站SOEM – 24 – 基于STM32F767IGT6搭建自己的SOEM-EtherCAT主站-识别从站并到OP状态 | 博客地址点我跳转 | 视频链接地址点我跳转 | 无 | 无 |
EtherCAT主站SOEM – 25 – STM32F767-SOEM通过 PV模式(速度模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过 PV模式(速度模式) 控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 26 – STM32F767-SOEM通过 PP模式(位置模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过 PP模式(位置模式) 控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 27 – STM32F767-SOEM通过 PT模式(力矩模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过 PT模式(力矩模式) 控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 28 – STM32F767-SOEM通过 CSV模式(周期同步速度模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过 CSV模式(周期同步速度模式) 控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 29 – STM32F767-SOEM通过 CSP模式(周期同步位置模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过 CSP模式(周期同步位置模式) 控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 30 --STM32F767-SOEM通过 CST模式(周期同步力矩模式) 控制一个电机转圈圈 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过 CST模式(周期同步力矩模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 31 – STM32F767-SOEM 从站IO模块采集DI及输出DO | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 IO模块进行操作,采集DI到串口printf打印,开发板上的按键控制输出DO。 |
0.3 Win11/10系统QT-SOEM博客、视频欣赏及源代码链接
源代码模板已经调整,可以直接文件使用替换即可。
环境:基于win10/win11系统上使用QT-SOEM搭建EtherCAT主站。
功能 | 博客链接 | 视频欣赏链接 | 源代码链接 | 其他说明 |
---|---|---|---|---|
EtherCAT主站SOEM – 32 – win10/win11系统QT-SOEM搭建自己的EtherCAT主站 | 博客 | 视频 | 无 | 无 |
EtherCAT主站SOEM – 33-- win10及win11系统QT-SOEM-EtherCAT主站1个IO模块输入IO显示及IO输出控制 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 IO模块进行操作,通过1个IO模块输入IO显示及IO输出控制。 |
EtherCAT主站SOEM – 34 – win-soem-win10及win11系统QT-SOEM-EtherCAT主站1个电机转圈圈-速度模式(PV模式) | 博客 | 视频 | 源代码 | 并且对1个EtherCAT从站 电机进行操作,通过速度模式(PV模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 35 – win-soem-win10及win11系统QT-SOEM-EtherCAT主站1个电机转圈圈-位置模式(PP模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过位置模式(PP模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 36 – win-soem-win10及win11系统QT-SOEM-EtherCAT主站1个电机转圈圈-力矩模式(PT模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过力矩模式(PT模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 37 – win-soem-win10及win11系统QT-SOEM-1个电机转圈圈-周期同步速度模式(CSV模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过周期同步速度模式(CSV模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 38 – win-soem-win10及win11系统QT-SOEM-EtherCAT主站1个电机转圈圈-周期同步位置模式(CSP模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过周期同步位置模式(CSP模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
EtherCAT主站SOEM – 39 – win-soem-win10及win11系统QT-SOEM-EtherCAT主站1个电机转圈圈-周期同步力矩模式(CST模式) | 博客 | 刷视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过周期同步力矩模式(CST模式)控制一个电机转圈圈,正转,反转及停止,及电机运行过程中停止。 |
0.4 Win11/10系统VisualStudio -SOEM 博客、视频欣赏及源代码链接
环境:基于win10/win11系统上使用VisualStudio 2017 搭建SOEM主站。
源代码模板已经调整,可以直接文件使用替换即可。
功能 | 博客链接 | 视频欣赏链接 | 源代码链接 | 其他说明 |
---|---|---|---|---|
EtherCAT主站SOEM – 40 --win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机走速度模式(PV模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过速度模式(PV模式)控制一个电机转圈圈。 |
EtherCAT主站SOEM – 41 – win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机走位置模式(PP模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过位置模式(PP模式)控制一个电机转圈圈。 |
EtherCAT主站SOEM – 42 – win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机走转矩模式(PT模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过转矩模式(PT模式)控制一个电机转圈圈。 |
EtherCAT主站SOEM – 43 – win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机走周期同步速度模式(CSV模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过周期同步速度模式(CSV模式)控制一个电机转圈圈。 |
EtherCAT主站SOEM – 44 – win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机走周期同步位置模式(CSP模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过周期同步位置模式(CSP模式)控制一个电机转圈圈。 |
EtherCAT主站SOEM – 45 – win-vs-soem-win10及win11系统VisualStudio-SOEM-控制电机走周期同步力矩模式(CST模式) | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 电机进行操作,通过周期同步力矩模式(CST模式)控制一个电机转圈圈。 |
EtherCAT主站SOEM – 46 – win-vs-soem-win10及win11系统VisualStudio-SOEM-控制IO模块-采集IO及IO输出 | 博客 | 视频 | 源代码 | 对1个EtherCAT从站 IO模块进行操作,控制IO模块-采集IO及IO输出 |
0.5
最近忙,忙完这段时间移植
1 该EtherCAT主站SOEM专栏后续安排
大概分为以下5个大模块:
当涉及到SOEM(Simple Open EtherCAT Master)库时,以下是更详细的信息:
1.1 介绍SOEM文件和函数:
- SOEM库中的核心文件通常包括主站配置文件(如
ethercat.h
)和用于EtherCAT通信的API函数(如ecrt_init()
、ecrt_master_open()
等)。这些函数允许您初始化EtherCAT主站、配置EtherCAT网络和执行数据通信。此外,SOEM还提供了示例代码,以帮助您更好地理解如何使用库中的函数。
1.2 SOEM主要结构体:
- SOEM库包含多个关键结构体,例如EtherCAT主站配置结构体、从站配置结构体、PDO(Process Data Object)配置结构体等。这些结构体用于定义和管理EtherCAT网络的配置参数和通信数据。通过详细了解这些结构体,您可以更好地配置和管理EtherCAT网络。
1.3 在QT环境搭建自己的EtherCAT主站:
- 若要搭建自己的EtherCAT主站,您需要首先创建主站配置文件,其中包括主站配置结构体,定义EtherCAT网络拓扑,以及设置EtherCAT通信参数。然后,使用SOEM库提供的函数来初始化主站、建立通信通道和与从站进行数据交换。这一过程可能涉及到配置主站的周期性任务以保持实时通信。
1.4 使用Wireshark监控并分析EtherCAT数据:
使用Wireshark监控并分析EtherCAT数据是一种非常有效的手段,可以帮助我们深入了解EtherCAT协议的工作原理和数据传输机制。Wireshark是一款强大的网络协议分析器,可以捕捉和解析各种网络数据包,包括EtherCAT数据包。通过Wireshark,我们可以详细地观察EtherCAT数据包的传输过程、协议格式和数据内容,从而更好地理解EtherCAT协议的工作机制和特点。此外,我们还可以利用Wireshark提供的分析工具,对EtherCAT数据进行深入挖掘和分析,发现潜在的问题和优化点,为我们的项目提供有价值的参考。因此,使用Wireshark监控并分析EtherCAT数据是一种非常实用和有效的技术手段。
1.5 使用QT-SOEM控制EtherCAT-IO模块:
- SOEM库使您能够控制EtherCAT-IO模块,这通常涉及读取输入数据和写入输出数据。通过配置PDO映射,您可以将输入和输出数据映射到EtherCAT网络上的从站设备。然后,使用SOEM函数来实时读取和更新这些数据,从而实现对IO模块的控制。
1.5 使用QT-SOEM控制EtherCAT电机:
- 控制EtherCAT电机通常需要与电机驱动器和控制器建立通信。您需要使用SOEM库配置PDO映射来传输控制命令和获取反馈数据。此外,您需要实现EtherCAT电机控制算法,以便执行位置、速度或力矩控制。SOEM库提供了通信工具,但控制算法通常需要根据具体的电机和应用进行定制。
深入了解SOEM库的文件、函数、结构体以及实际应用步骤将有助于您更好地使用该库来构建和控制EtherCAT网络中的设备和电机。
2. soem介绍:
SOEM(Simple Open EtherCAT Master) 是由荷兰一位研究 EtherCAT协议的专家 Arthur Keetels 开发设计的,他将 EtherCAT 部署到自己的平台上使用,并将其成果贡献给开源社 区,促进了 EtherCAT的进一步普及和应用。SOEM 原本是一个简单的 EtherCAT 主站通信程 序,但是在不断的改进中,它逐渐发展成为一个功能比较全面的协议栈。
SOEM 协议栈的开发语言为便于移植的C 语言,完全支持在Windows 系统和 Linux 系统 等常见操作系统间的相互移植,甚至可支持移植到部分嵌入式操作系统中。因为所有的应用 程序都是各不相同的,所以 SOEM 不会强行规定任何设计架构。
在Linux下它可被用于一般的用户模式, PREEMPT_RT 或 Xenomai; 在 Windows 下可被 用作用户模式下的编程。
SOEM 主站通过 Raw Socket (原始套接字)接收和发送 EtherCAT 数据帧,调用系统自 带的 bind 、send 和 recv 模块,以此实现 EtherCAT 主站与从站之间的通信。SOEM 支持分布 式时钟 (DC), 从站设备基于实时时钟,主站控制信号可准确同步。主站代码通过其独立架 构可支持任何Linux 实时扩展, RTA (包括通过RTDM 的 LXRT) 、ADEOS 、RT-Preempt 和Xenomai (包括 RTDM), 同时还支持CoE(CANopen over EtherCAT) 、FoE(File Access over EtherCAT) 、SoE(Servo Profle over EtherCAT) 和 EoE(EtherNet over EtherCAT) 等邮 箱协议。
SOEM 的主要功能包括以下部分。
1. 基本读写服务,如 BRD (广播读)、BRW (广播写)、APRMW (自动增读写多从 站 ) 及 LRW (读写数据到逻辑地址映射空间)等。
2. 自动扫描发现从站,自动配置从站的FMMU (现场总线存储管理单元)和PDO (过 程数据对象)、MBX (邮箱)的内存映射。
3. 设置和读取从站状态。
4. 从站 EEPROM 的读写支持。
5. 支持时钟同步机制,根据过程数据自动配置从站时钟。
6. 支持过程数据和邮箱数据的通信。
7. 支持 SoE 、CoE 、EoE 和 FoE 等应用协议。
SOEM 主站软件操作实现简单、跨平台性强并且提供开源代码,为自动化控制领域的研 究人员提供了真正意义上的开发工具,既能够从软件本身上进行 EtherCAT 通信实验,又可 以深入了解软件代码底层的实现原理,便于研究人员根据自己的需求进行二次开发。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。下面是关于SOEM库的一些重要信息:
1. 开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。
2. EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。主站可以向从站设备发送实时数据,例如控制命令和传感器数据。
3. 功能丰富:SOEM库包括一系列功能丰富的模块,包括支持CAN over EtherCAT (CoE)、File over EtherCAT (FoE)、Servo Drive Profile over EtherCAT (SoE) 和 Ethernet
over EtherCAT (EoE) 等不同EtherCAT通信协议的功能。
4. 网络配置和管理:SOEM库支持配置和管理EtherCAT网络,包括从站设备的配置、网络拓扑设置和分布式时钟同步。
5. 实时性:EtherCAT是一种实时通信协议,SOEM库的设计目标是提供高性能和低延迟的通信,以满足工业自动化中对实时性的需求。
6. 示例应用程序:SOEM库附带了示例应用程序和文档,帮助开发者入门并开始构建自己的应用程序。这些示例应用程序演示了主站初始化、通信配置和实时数据交换等操作。
7. 跨平台支持:SOEM库可以在多种操作系统和平台上运行,包括Linux和Windows。
8. 活跃的社区:SOEM库有一个积极的开发社区,提供技术支持、更新和改进,以确保库的持续发展。
3 soem主要功能文件说明:
文件 | 该文件功能 |
---|---|
ethercattype.h | 定义了EtherCAT通信所需的数据类型。 包括PDO(Process Data Object)数据类型、SyncManager配置和其他与数据传输相关的类型定义。此文件主要是一些新的类型定义和宏定义,使用这些可以给具体的应用程序带来优化和便利 |
nicdrv.h | 包含网络接口卡(NIC)驱动程序的定义。用于与主机计算机的网络接口卡通信,以连接到EtherCAT网络。EtherCAT原始套接字驱动,主要包含了使用网卡NIC和socket通信来发送数据帧的函数。 |
ethercatbase.h | 定义了EtherCAT通信的基础配置和功能。包括了主站配置、EtherCAT帧的数据结构定义等。 |
ethercatmain.h | 包含了EtherCAT主站的主要函数和数据结构。提供了主站的初始化、启动、停止和周期性任务执行等主要功能。EtherCAT主要功能模块,包含了EtherCAT初始化、状态设置和读取、邮箱数据通信、从站EEPROM操作、从站信息接口SII读和过程数据交换等函数。以及定义ec_slave[],所有从站信息都在这个结构体中。 |
ethercatdc.h | 提供了分布式时钟(DC,Distributed Clocks)相关的函数和数据结构。用于同步从站设备的时钟以实现实时通信。 |
ethercatcoe.h | 定义了CAN over EtherCAT(CoE)通信的相关函数和数据结构。用于配置和通信CANopen对象字典。 |
ethercatfoe.h | 包括文件传输 over EtherCAT(FoE)通信的函数和数据结构。用于文件传输,例如固件升级。 |
ethercatsoe.h | 包括Servo Drive Profile over EtherCAT(SoE)通信的函数和数据结构。用于与伺服驱动器进行通信。 |
ethercateoe.h | 包含Ethernet over EtherCAT(EoE)通信的函数和数据结构。用于与EtherCAT从站设备进行以太网通信。 |
ethercatconfig.h | 用于配置EtherCAT网络的头文件。包括网络拓扑、从站设备的配置以及主站的配置信息。 |
ethercatprint.h | 包含了用于在调试和日志中打印信息的函数和宏。用于记录和调试EtherCAT通信。将EtherCAT错误转换成可读信息模块,SDO中止信息和应用层状态代码用于传递从站信息给用户应用层,所以这个文件里函数的主要功能是将二进制码转换成可读的文本信息。 |
ethercatconfiglist.h | 包含的是一个列表,里面包含了一些已知产品参数的EtherCAT从站。 |
osal.h | 包含定时器配置模块,主要包含了一些定时器设置和延时等函数。 |
oshw.h | 包含的函数主要用来识别现在这台机器上现有的网卡信息。 |
simple_test.h | 包含自己所需的EtherCAT主站开发所编写的程序,通过各种配置,数据发送和读取。 |
4 soem下载链接
4.1 SOEM下载链接
SOEM是一个开源的EtherCAT协议栈,由OpenEtherCAT Society维护并发布。您可以在GitHub上找到并下载其代码包,具体的下载地址为:https://github.com/OpenEtherCATsociety/SOEM
另外,您也可以在开源社区网站上找到SOEM的下载链接: https://openethercatsociety.github.io/
这两个下载途径都能让您获得SOEM的最新版本。
或者可以来下载我发布的SOEM资源( 我上传的是1.4 版本): 链接 :
https://download.csdn.net/download/qq_50808730/88516612
解压缩大概文件:
4.2 SOEM v1.4.0 版本特点
SOEM v1.4.0 版本特点如下。
1. 标准 Raw Socket 连接。
2. 全冗余支持。
3. 无序”帧恢复。
4. 基本读写服务, BRD、BRW、APRMW 和 LRW 等。
5. 阻塞或非阻塞传输。
6. 从站自动配置
7. 设置和读取从站状态。
8. 自动生成过程数据映射。
9. 邮箱链接层支持重发切换。
10. 支持分布式时钟 (DC)。
11. 自动配置 DC, 从站过程数据交换自动同步时钟。
12. 从站 EEPROM 读写支持。
13. 静态缓冲区,可锁定内存。
14. 支持小端和大端目标平台。
15. 支持 SoE 、CoE 、EoE 和FoE 等应用协议。
16. 连接丢失后从站恢复与重新配置。
17. 邮箱错误处理。
18. 支持 Linux、Win32 、RTK、RTEMS 、INtime 、ERIKA 和 MacOS 等目标平台。 19)可在 gcc/visual-c/intime/borland-c 下编译。
20. 支持重叠的IOmap。
21. 多端口支持, 一个主站可在多个网络端口运行并行堆栈。
22. 错误信息更新于最新的 ETG1020 文档等。
5 编译soem
解压已经下载好的源码,这份源码非常清晰易懂,组织结构也十分明了。在根目录里,赫然可见一个名为"README.md"的文件,打开这份文件,发现里面详细记录了针对Windows和Linux系统的相关编译步骤。这些步骤不仅十分详细,而且非常具有指导性,让人一看就能明白如何进行操作。无论是对于新手还是有一定经验的人来说,这些信息都显得非常有价值。
5.1 Windows (Visual Studio):
编译具体过程参考下面这篇博客:
EtherCAT主站SOEM – 32 – win10/win11系统QT-SOEM搭建自己的EtherCAT主站|Windows 编译soem 的博客 点我跳转到该博客
然后启动Visual Studio命令提示符:
后面在windows系统开发在详细介绍。
mkdir build
cd build
cmake .. -G "NMake Makefiles"
make
测试
5.2 Linux & macOS:
在Linux系统上编译SOEM相对比Windows系统更为简单。只需在SOEM根目录下打开终端,按照README.md文件的步骤逐一执行命令即可。这个过程不需要复杂的设置和操作,只需要按照文档的指引,一步步地输入命令即可。相比之下,在Windows系统上进行编译可能需要更多的步骤和操作,因为Windows系统并没有像Linux系统那样提供丰富的命令行工具。因此,如果你是在Linux系统上编译SOEM,那么你只需要按照文档的指引,一步步地执行命令即可,这个过程非常简单易行。
首先,我们需要创建一个名为 “build” 的文件夹。在终端或命令提示符中输入以下命令:
mkdir build
这将创建一个名为 “build” 的文件夹,如果该文件夹已经存在,则不会重复创建。
接下来,我们需要进入这个新创建的文件夹。在终端或命令提示符中输入以下命令:
cd build
这将使我们进入 “build” 文件夹的目录。
最后,我们可以使用 cmake 和 make 命令来编译我们的项目。在终端或命令提示符中输入以下命令:
cmake .. && make
这将执行 cmake 命令来配置编译过程,并使用 “…” 参数指定我们的项目目录。
make
它将执行 make 命令来编译我们的代码。如果一切顺利,这将完成编译过程并生成我们的可执行文件。
5.2.1 编译过程
mkdir build
cd build
cmake ..
make
编译好的文件:
6 SOEM 源代码结构
6.1SOEM 协议栈分层结构框架
第 5 层 | 上层应用功能 |
---|---|
第4层 | EtherCAT主站和从站通信的基本功能 |
第 3 层 | 按相关服务分类组装EtherCAT数据帧的API |
第 2 层 | 数据帧及网络接口管理 |
第1层 | 原始套接字接口(Raw Socket) |
第1层是原始套接字接口 (Raw Socket), 实现通信数据帧的收发。
第2层是数据帧及网络接口管理。收发寄存器都采用带有缓存的寄存器,该部分实现缓 存区队列及数据的管理和发送,并实现第1层与网卡的连接。
第3层是按相关服务分类组装 EtherCAT 数据帧的API 。主要实现 EtherCAT的组帧,将 EtherCAT 基本的读写服务组装成完整的数据帧格式。
第4层是 EtherCAT 主站和从站通信的基本功能。由实现该功能的函数组成,主要包括 ESM(EtherCAT 状态机)初始化状态管理以及数据的收发。
第5层是上层应用功能。实现 CoE、FoE、SoE 和 EoE 等上层应用协议的功能。
6.2 SOEM 库结构框架
通过源代码分析,SOEM 库由分为5个层次的多个模块组成, 一个模块层建立在另外一个模块层之上。 SOEM 库采用分层设计,并且提供 了一个抽象层,将 SOEM 协议栈与 具体操作系统和硬件分开,使得 SOEM 在理论上可以移植到任意操 作系统和硬件平台之上。抽象层由 OSAL (操作系统抽象层)和 OS- HW (硬件抽象层)两个模块组成, 移植的主要内容就是在目标操作系 统 和 硬 件 平 台 上 重 写 OSAL 和 OS-HW的具体实现。
SOEM 库各层功能
层 | 功能 |
---|---|
OSAL 系统抽象层 | 系统时钟控制,多线程应用 |
OSHW 硬件抽象层 | 主站和网络之间数据的大小端转换,网络驱动 |
BASE | 将工业应用数据组装成 EtherCAT 帧,以 BRD、BRW 和 LRW 等方式对从站读写 |
MAIN | 该写从站 EEPROM,提供邮箱模式的非过程数据读写和三缓冲模式的过程数据 PDO 读写 |
CONFIG | 初始化从站控制器寄存器,配置从站 FMMU |
CONFIGDC | 提供分布式时钟,实现主从站之间时钟同步 |
CoE、FoE 等 | 应用协议 |
应用层 | 调用 SOEM 提供的服务,实现具体的工业控制应用,应用层并不在 SOEM 中 |
可以清晰地了解 SOEM 库的各层功能。每一层都有特定的功能,系统抽象层和硬件抽象层负责底层的系统和硬件操作,BASE 层将数据转换为 EtherCAT 帧,MAIN 层处理 EEPROM 和邮箱模式数据读写,CONFIG 层负责初始化配置,CONFIGDC 层提供时钟同步,应用层调用 SOEM 服务来实现具体的应用。
6.3.SOEM 源代码文件
下载解压 SOEM 源代码后,可以看到 SOEM 源代码分为 cmake 、doc 、osal 、oshw 、soem 和 test 六个文件夹。
1. cmake 文件夹内是一些编译模块和工具链。
2. doc 文件夹内是 SOEM的说明文档。
3. osal 文件夹内是系统抽象层的c 文件和头文件。
4. oshw 文件夹内是硬件抽象层的c 文件和头文件。
5. soem 文件夹内是实现 EtherCAT 基本功能的c 文件和头文件。
6. test 文件夹内是一些例程文件。
部分 SOEM 源代码文件列表及描述
序号 | 文件 | 描述 |
---|---|---|
1 | ebox.c | SOEM 的例程 |
2 | eepromtool | SOEM 的 EEPROM 工具 |
3 | ethercatbase.c | EtherCAT 基础函数 |
4 | ethercatbase.h | ethercatbase.c 的头文件 |
5 | ethercatcoe.c | CoE 模块 |
6 | ethercatcoe.h | ethercatcoe.c 的头文件 |
7 | ethercatconfig.c | EtherCAT 主站配置模块 |
8 | ethercatconfig.h | ethercatconfig.c 的头文件 |
9 | ethercatconfiglist.h | 已知的 EtherCAT 从站设备配置列表(弃用) |
10 | ethercatdc.c | EtherCAT 分布式时钟函数 |
11 | ethercatdc.h | ethercatdc.c 的头文件 |
12 | ethercatfoe.c | FoE 模块 |
13 | ethercatfoe.h | ethercatfoe.c 的头文件 |
14 | ethercateoe.c | EoE 模块 |
15 | ethercateoe.h | ethercateoe.c 的头文件 |
16 | ethercatmain.c | EtherCAT 主要函数 |
17 | ethercatmain.h | ethercatmain.c 的头文件 |
18 | ethercatprint.c | EtherCAT 错误转为可读信息模块 |
19 | ethercatprint.h | ethercatprint.c 的头文件 |
20 | ethercatsoe.c | SoE 模块 |
21 | ethercatsoe.h | ethercatsoe.c 的头文件 |
22 | ethercattype.h | EtherCAT 复合类型定义文件和宏定义 |
23 | red_test.c | SOEM 例程 |
24 | simple_test.c | SOEM 例程 |
25 | slaveinfo.c | SOEM 例程 |
6.4 SOEM 的应用
SOEM 是一个库,为用户应用程序提供发送和接收 EtherCAT 帧的方法。这具体取决于 应用程序为以下内容所提供的实现方法。
- 读写通过SOEM 发送/接收的过程数据。
- 保持本地 I/O 数据与全局I/Omap 同步。
- 检测 SOEM 报告的错误。
- 处理 SOEM 报告的错误。
过对SOEM 源代码所提供的例程分析, EtherCAT 主从站可按照图8-36所示的流程启 动,在启动完成后可通过I/Omap 访问数据,或通过 CoE 等协议访问 SDO (服务数据对象) 和 PDO (过程数据对象)。在SOEM 的 v1.4.0 版本中又增加了一些自定义配置,包括 PDO分配和 PDO 配置、重叠 IOmap 和 EtherCAT 从站组等。
由于图片增强处理出错,以下是根据流程图的重新绘制描述,可以为你提供更清晰的版本。
EtherCAT 主从站启动流程图(文字描述)
-
开始
- 流程启动。
-
启动 SOEM
- 启动 EtherCAT 主站软件(SOEM)。
-
配置 NIC
- 配置网络接口卡(NIC)。
-
配置成功?
- 判断网络接口卡配置是否成功:
- 是:继续执行。
- 否:退出并返回 0。
- 判断网络接口卡配置是否成功:
-
配置从站
- 配置 EtherCAT 从站。
-
配置成功?
- 判断从站配置是否成功:
- 是:继续执行。
- 否:退出并返回 0。
- 判断从站配置是否成功:
-
检测从站状态
- 检测从站状态。
-
等于从站数量且从站名称匹配?
- 判断从站数量是否与期望值相等且从站名称是否匹配:
- 是:继续执行。
- 否:退出并返回 0。
- 判断从站数量是否与期望值相等且从站名称是否匹配:
-
创建 IOmap
- 创建 IO 映射(IOmap)。
-
进入 OP 状态
- 将系统状态设置为操作状态(Operational, OP)。
-
- 相关的任务流程
- 用户自定义任务流程。
- 结束
- 流程结束。
结论
通过上述文字描述,可以清晰地理解 EtherCAT 主从站启动流程的每一个步骤及其逻辑判断。确保网络接口卡和从站设备正确配置,并在满足所有条件后将系统状态设置为操作状态,以便开始正常的 EtherCAT 通信和操作。
7 SOEM基础简单使用
7.1 查看EtherCAT 从站的基本信息:
查看EtherCAT从站的基本信息,获取该设备的名称、型号、输入输出大小,是否支持DC等基本信息。
/home/wmyqcy/SOEM-master/build/test/linux/slaveinfo
sudo ./slaveinfo enp0s31f6
该文档修改记录:
修改时间 | 修改说明 |
---|---|
2023年10月27日 | EtherCAT主站SOEM – 0 – SOEM下载编译及文件功能介绍 |
2023.11. 2 | 更换名称,并且加入后续安排等;EtherCAT主站SOEM – 0 – 该EtherCAT主站SOEM专栏后续安排 |
2024.1.13 | 上传EtherCAT主站SOEM专栏的博客,添加上下博客跳转链接 |
2024.7.14 | 上传EtherCAT主站SOEM专栏添加-SOEM移植 WIN 系统 QT及VS相关索引 |
总结
以上就是EtherCAT主站SOEM – 0 – SOEM下载编译及文件功能介绍的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。
上下博客链接
上一篇博客:
NC