CN114513383B - 基于原始套接字的实时以太网现场总线数据包处理方法 - Google Patents
基于原始套接字的实时以太网现场总线数据包处理方法 Download PDFInfo
- Publication number
- CN114513383B CN114513383B CN202011277556.7A CN202011277556A CN114513383B CN 114513383 B CN114513383 B CN 114513383B CN 202011277556 A CN202011277556 A CN 202011277556A CN 114513383 B CN114513383 B CN 114513383B
- Authority
- CN
- China
- Prior art keywords
- real
- time ethernet
- data packet
- time
- ethernet bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40169—Flexible bus arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/4026—Bus for use in automation systems
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明涉及一种基于PACKET_MMAP的实时以太网现场总线网络数据包处理方法,本发明涉及数控技术领域,尤其涉及实时以太网现场总线技术领域,具体涉及基于原始套接字的实时以太网现场总线数据包处理方法,原始套接字采用PACKET_MMAP方法。本发明首先,分析实时以太网现场总线数据包从网卡驱动到内核网络协议栈的传输路径,建立在内核网络协议栈入口的实时以太网总线数据包的捕获点;然后,分析数据包在捕获点的特征,建立基于PACKET_MMAP的数据包捕获及转发方法;最后,根据数据包所属的总线协议类型,设计在用户空间的实时以太网总线组件中数据包的解析处理方法。
Description
技术领域
本发明涉及数控技术领域,尤其涉及实时以太网现场总线技术领域,具体涉及基于原始套接字的实时以太网现场总线数据包处理方法,原始套接字采用PACKET_MMAP方法。
背景技术
PACKET_MMAP机制是内核提供的一套基于内存映射方式的套接字编程接口,该机制在内核空间中分配一块内核缓存区并映射到用户空间,然后用户空间的应用程序通过mmap系统调用获取映射到用户空间的数据。PACKET_MMAP机制非常高效,它提供一个映射到用户空间的大小可配置的环形缓冲区。这种方式,通过内核空间和用户空间共享的缓冲区还可以起到减少数据拷贝的作用。
中低档数控系统对实时性有较高的要求,但是受限于系统的性能一般插补周期都比较长。出于对成本的考量,实时以太网现场总线网络数据包的传输方式通常会选择简单灵活的方式实现,而对网络数据包传输时间的要求没那么严格。若采用内核提供的PACKET_MMAP机制在网络协议栈的入口捕获数据包,一方面不需要特定网卡的支持,另一方面也不需要修改网卡驱动和内核网络协议栈,可以使网络数据包的传输和处理变得更加简单灵活。因此如何基于PACKET_MMAP机制设计简单高效的实时以太网总线网络数据包处理方法,是解决中低档数控系统实时以太网现场总线网络数据包实时高效传输的关键。
发明内容
为解决上述技术问题,本发明提出了一种基于PACKET_MMAP的实时以太网现场总线网络数据包处理方法。
本发明为实现上述目的所采用的技术方案是:
基于原始套接字的实时以太网现场总线数据包处理方法,原始套接字采用PACKET_MMAP方法,包括以下步骤:
根据内核输出的调试信息,确定实时以太网现场总线数据包从网卡驱动到内核网络协议栈的传输路径,在内核网络协议栈入口建立实时以太网总线数据包的捕获点;
根据内核网络协议栈入口的实时以太网总线数据包捕获点,建立基于PACKET_MMAP的实时以太网总线数据包转发方法,将实时以太网总线数据包映射到实时以太网总线组件中;
根据实时以太网总线数据包所属的总线协议类型,在用户空间的实时以太网总线组件中对实时以太网总线数据包进行解析。
所述实时以太网现场总线数据包类型包括EtherCAT协议和SSB-III协议中的任意一种。
所述捕获点位于实时以太网总线数据包发往内核协议栈之前。
所述建立基于PACKET_MMAP的实时以太网总线数据包转发方法具体为:
在内核空间中开辟出用于存储实时以太网总线数据包的静态内存;
屏蔽网卡中实时以太网总线数据包映射到环形队列时产生的接收中断;
通过不断轮询网卡,读取环形队列中的实时以太网总线数据包到开辟出的静态内存中;
在内核网络协议栈的入口,屏蔽掉实时以太网总线数据包向内核网络协议栈的传递;
采用PACKET_MMAP的MMAP内存映射方式将轮询得到的实时以太网总线数据包映射到用户空间。
实时以太网总线数的接收采用无中断方式。
实时以太网总线数的读取采用轮询方式。
所述在用户空间的实时以太网总线组件中对实时以太网总线数据包进行解析具体为:
建立用户态实时线程并设置实时线程为周期性实时线程,在每个用户态实时线程的实时周期中,完成对实时以太网现场总线数据包的解析处理工作;
在用户态实时以太网总线组件的实时线程的开始部分,采用PACKET_MMAP原始套接字的方式轮询的获取实时以太网总线数据包;
在用户态实时以太网总线组件的实时线程中解析以太网协议数据包头,确定实时以太网总线数据包类型;
根据实时以太网总线数据包类型解析实时以太网总线数据包的指令数据;
将解析出的指令数据组织成为NML中性消息命令,通过用户态实时以太网总线组件的消息通信通道与用户空间的实时应用程序交换数据;
等待下一周期轮询实时以太网总线数据包。
本发明具有以下有益效果及优点:
1.实时以太网现场总线采用标准网卡传递数据包,有效减少了硬件通信板卡的种类结构。现有数控系统中实时以太网现场总线仍采用传统的通信板卡形式进行总线数据的传输,不同的现场总线(如EtherCAT、SSB-III实时以太网总线等)对应不同的通信板卡,针对每一种现场总线都要开发一套与之对应的硬件板卡,使系统变得臃肿且不可复用。
2.在内核网络协议栈的入口捕获并转发实时以太网总线数据包,避免了对网卡驱动的依赖,兼容性好,使用方式更加方便灵活。采用PACKET_MMAP的内存映射机制,将所以实时以太网现场总线协议的网络数据包共享给用户空间的实时以太网总线组件,数据包捕获在网络协议栈入口进行,不依赖于特定的网卡,因此更加方便灵活。
3.实时以太网数据包的接收采用无中断的方式,避免了中断上下文的切换,提升了数据包处理效率,降低了系统延迟。实时以太网现场总线的控制结构均为主从控制方式,在实时以太网现场总线的网络中,数控系统为控制网络的主站设备,而从站为被控的伺服驱动器以及I/O等,网络的通信全部由主站发起,因此,主站在发出数据包后的一定时间内会接收到从站反馈回来的数据包,所以可以采用轮询的方式接收数据包,以减少中断带来的上下文切换。
附图说明
图1实时以太网现场总线网络结构图;
图2数据包的捕获处理方法图。
具体实施方式
下面结合附图及实施例对本发明做进一步的详细说明。
本发明适合应用于数控系统领域,尤其适用于采用标准网卡传输实时以太网现场总线网络数据包的应用场合,具体适用于中低档数控系统中采用标准网卡传输实时以太网现场总线网络数据包的应用场合。下面结合附图对本发明方法的具体实施方式作进一步详细说明。
基于PACKET_MMAP的实时以太网现场总线网络数据包处理方法,包括以下步骤:
1)确定实时以太网现场总线数据包从网卡驱动到内核网络协议栈的传输路径,建立在内核网络协议栈入口的实时以太网总线数据包的捕获点;
2)建立基于PACKET_MMAP的网络数据包转发方法;
3)根据数据包所属的总线协议类型,设计在用户空间的实时以太网总线组件中数据包的解析处理方法;
所述的确定实时以太网现场总线数据包从网卡驱动到内核网络协议栈的传输路径,实时以太网现场总线为EtherCAT和SSB-III;
所述的确定实时以太网现场总线数据包从网卡驱动到内核网络协议栈的传输路径,网卡为任意型号的网卡;
所述的建立在内核网络协议栈入口的实时以太网总线数据包的捕获点,捕获点位于数据发往内核协议栈之前;
所述的建立基于PACKET_MMAP的数据包捕获及转发方法,PACKET_MMAP使用原始套接字的编程方式;
所述的建立基于PACKET_MMAP的数据包捕获及转发方法,其特征在于数据包捕获方法包括以下步骤:
a.在内核空间中开辟一块儿静态内存,用于存储以太网数据包;
b.数据的接收采用无中断的方式,将网卡DMA数据包到环形队列产生的接收中断屏蔽掉;
c.数据的读取采用轮询的方式,通过不断轮询网卡设备,读取环形队列中的数据到新开辟的内存中;
d.在内核网络协议栈的入口,屏蔽掉数据包向内核网络协议栈的传递;
e.采用PACKET_MMAP的mmap机制将轮询得到的数据包映射到用户空间;
所述的设计在用户空间的实时以太网总线组件中数据包的解析处理方法,其特征在于数据包的解析处理方法包括以下步骤:
a.建立用户态实时线程并设置实时线程为周期性实时线程,在每个用户态线程的实时周期中,完成对实时以太网现场总线数据包的解析处理工作;
b.在用户态实时以太网总线组件的实时线程的开始部分,采用PACKET_MMAP原始套接字的方式轮询的获取实时以太网数据包;
c.在用户态实时以太网总线组件的实时线程中解析以太网协议数据包头,确定实时以太网数据包类型;
d.根据数据包类型解析数据包的指令数据;
e.将解析出的指令数据组织成为消息命令,通过实时以太网组件的消息通信通道与上层的运动控制组件交换数据,其中,上层的运动控制组件为实时应用程序,用于轨迹规划、加减速控制以及插补计算。
f.等待下一周期轮询数据包。
如图1所示,基于PACKET_MMAP的实时以太网现场总线的网络结构为图中的左半部分,默认情况下,网络数据包首先会经过内核空间的网卡驱动和网络协议栈,然后通过AF_INET套接字或者AF_PACKET标准套接字,被发送的用户空间中的应用程序中,本发明在内核网络协议栈的入口设置数据包的捕获点,通过屏蔽实时以太网总线数据包到内核协议栈的传输,并采用PACKET_MMAP的原始套接字直接将EtherCAT、SSB-III实时以太网数据包转发到用户空间的实时以太网总线组件中,在用户态实时以太网总线组件中对数据包进行解析处理。
基于PACKET_MMAP的实时以太网现场总线的数据流结构如图1中的右半部分所示,实时以太网数据包经过网卡之间DMA到了原生网卡驱动内部的环形队列中,采用轮询方式,通过PACKET_MMAP的mmap机制将环形队列中的实时以太网总线数据包映射到用户空间的环形队列中,上层实时以太网总线组件中的实时线程,通过轮询机制读取环形队列中的实时以太网数据包,数据包会在实时以太网总线组件中被解析处理,最后通过实时以太网组件的消息通信通道与上层的运动控制组件交换数据。
如图2所示,基于PACKET_MMAP的实时以太网现场总线数据包的捕获处理方法的具体实施步骤包括:
A.在内核空间中静态的开辟一块儿内存区域,用于以太网数据包的存储;
B.数据的接收采用无中断的方式,将网卡DMA数据包到环形队列产生的接收中断屏蔽掉;
C.数据的读取采用poll轮询机制的方式,通过不断轮询网卡设备,读取环形队列中的数据到新开辟的内存中;
D.在内核网络协议栈的入口,通过屏蔽netif_receive_skb()内核网络协议栈接口,屏蔽掉数据包向内核网络协议栈的传递;
E.采用PACKET_MMAP的mmap机制将轮询得到的数据包映射到用户空间;
F.采用RT_Preempt实时补丁的实时线程创建方法,建立用户态实时线程并设置实时线程为周期性实时线程,在每个用户态线程的实时周期中,完成对实时以太网现场总线数据包的解析处理工作;
G.在用户态实时以太网总线组件的实时线程的开始部分,采用PACKET_MMAP原始套接字的方式轮询的获取实时以太网数据包;
H.在用户态实时以太网总线组件的实时线程中解析以太网协议数据包头,确定实时以太网数据包类型,分别有EtherCAT、SSB-III以及其他实时以太网协议;
I.根据数据包类型解析数据包的指令数据,其中EtherCAT协议的指令数据包括周期性指令数据和非周期的指令数据,周期性的指令数据采用EtherCAT协议的过程数据进行数据传递,根据传递方向不同分为周期性的命令数据和状态数据,非周期性的指令数据采用EtherCAT协议的邮箱进行数据传递,根据传递方向不同分别为非周期性的命令数据和状态数据;SSB-III协议与EtherCAT协议类似,指令数据也包括周期性指令数据和非周期性的指令数据,不同的是SSB-III协议对于这两种数据均采用邮箱进行数据传输;
J.将解析出的指令数据组织成为消息命令,通过实时以太网组件的消息通信通道与上层的运动控制组件交换数据;
K.等待下一周期轮询数据包。
Claims (6)
1.基于原始套接字的实时以太网现场总线数据包处理方法,其特征在于,原始套接字采用PACKET_MMAP方法,包括以下步骤:
根据内核输出的调试信息,确定实时以太网现场总线数据包从网卡驱动到内核网络协议栈的传输路径,在内核网络协议栈入口建立实时以太网总线数据包的捕获点;
根据内核网络协议栈入口的实时以太网总线数据包捕获点,建立基于PACKET_MMAP的实时以太网总线数据包转发方法,将实时以太网总线数据包映射到实时以太网总线组件中;
根据实时以太网总线数据包所属的总线协议类型,在用户空间的实时以太网总线组件中对实时以太网总线数据包进行解析;
所述在用户空间的实时以太网总线组件中对实时以太网总线数据包进行解析具体为:
建立用户态实时线程并设置实时线程为周期性实时线程,在每个用户态实时线程的实时周期中,完成对实时以太网现场总线数据包的解析处理工作;
在用户态实时以太网总线组件的实时线程的开始部分,采用PACKET_MMAP原始套接字的方式轮询的获取实时以太网总线数据包;
在用户态实时以太网总线组件的实时线程中解析以太网协议数据包头,确定实时以太网总线数据包类型;
根据实时以太网总线数据包类型解析实时以太网总线数据包的指令数据;
将解析出的指令数据组织成为NML中性消息命令,通过用户态实时以太网总线组件的消息通信通道与用户空间的实时应用程序交换数据;
等待下一周期轮询实时以太网总线数据包。
2.根据权利要求1所述的基于原始套接字的实时以太网现场总线数据包处理方法,其特征在于,所述实时以太网现场总线数据包类型包括EtherCAT协议和SSB-III协议中的任意一种。
3.根据权利要求1所述的基于原始套接字的实时以太网现场总线数据包处理方法,其特征在于,所述捕获点位于实时以太网总线数据包发往内核协议栈之前。
4.根据权利要求1所述的基于原始套接字的实时以太网现场总线数据包处理方法,其特征在于,所述建立基于PACKET_MMAP的实时以太网总线数据包转发方法具体为:
在内核空间中开辟出用于存储实时以太网总线数据包的静态内存;
屏蔽网卡中实时以太网总线数据包映射到环形队列时产生的接收中断;
通过不断轮询网卡,读取环形队列中的实时以太网总线数据包到开辟出的静态内存中;
在内核网络协议栈的入口,屏蔽掉实时以太网总线数据包向内核网络协议栈的传递;
采用PACKET_MMAP的MMAP内存映射方式将轮询得到的实时以太网总线数据包映射到用户空间。
5.根据权利要求4所述的基于原始套接字的实时以太网现场总线数据包处理方法,其特征在于,实时以太网总线数的接收采用无中断方式。
6.根据权利要求4所述的基于原始套接字的实时以太网现场总线数据包处理方法,其特征在于,实时以太网总线数的读取采用轮询方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011277556.7A CN114513383B (zh) | 2020-11-16 | 2020-11-16 | 基于原始套接字的实时以太网现场总线数据包处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011277556.7A CN114513383B (zh) | 2020-11-16 | 2020-11-16 | 基于原始套接字的实时以太网现场总线数据包处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114513383A CN114513383A (zh) | 2022-05-17 |
CN114513383B true CN114513383B (zh) | 2023-07-21 |
Family
ID=81547026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011277556.7A Active CN114513383B (zh) | 2020-11-16 | 2020-11-16 | 基于原始套接字的实时以太网现场总线数据包处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114513383B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016295B (zh) * | 2022-12-14 | 2024-04-09 | 鹏城实验室 | 以太网性能监控方法、系统、工控设备以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582895A (zh) * | 2009-06-18 | 2009-11-18 | 重庆邮电大学 | 基于epa的嵌入式工业无线wia-pa网关 |
CN101841470A (zh) * | 2010-03-29 | 2010-09-22 | 东南大学 | 一种基于Linux的底层数据包的高速捕获方法 |
CN105187304A (zh) * | 2014-06-16 | 2015-12-23 | 阿自倍尔株式会社 | 网关装置以及包捕获方法 |
CN107800621A (zh) * | 2017-11-14 | 2018-03-13 | 宁波钧飞智能科技有限公司 | 一种支持多种接入协议的新型智能家居网关 |
CN111726809A (zh) * | 2020-06-17 | 2020-09-29 | 华中科技大学 | 数控环境下的网络安全审计方法及系统 |
-
2020
- 2020-11-16 CN CN202011277556.7A patent/CN114513383B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582895A (zh) * | 2009-06-18 | 2009-11-18 | 重庆邮电大学 | 基于epa的嵌入式工业无线wia-pa网关 |
CN101841470A (zh) * | 2010-03-29 | 2010-09-22 | 东南大学 | 一种基于Linux的底层数据包的高速捕获方法 |
CN105187304A (zh) * | 2014-06-16 | 2015-12-23 | 阿自倍尔株式会社 | 网关装置以及包捕获方法 |
CN107800621A (zh) * | 2017-11-14 | 2018-03-13 | 宁波钧飞智能科技有限公司 | 一种支持多种接入协议的新型智能家居网关 |
CN111726809A (zh) * | 2020-06-17 | 2020-09-29 | 华中科技大学 | 数控环境下的网络安全审计方法及系统 |
Non-Patent Citations (1)
Title |
---|
"基于AM3358处理器的嵌入式实时EtherCAT主站的构建";李备备;《组合机床与自动化加工技术》(第5期);第1-3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN114513383A (zh) | 2022-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109347884B (zh) | 一种实时以太网到现场总线的转换方法及装置、存储介质 | |
CN103631190A (zh) | 基于EtherCAT网络的监控系统 | |
CN110417780B (zh) | 定制化数据传输协议的多通道高速数据接口转化模块 | |
US10609125B2 (en) | Method and system for transmitting communication data | |
CN112039746B (zh) | 一种工业控制网络系统 | |
WO2020143237A1 (zh) | 一种dma控制器和异构加速系统 | |
CN104009976A (zh) | 一种用于多主站系统之间的实时通信方法及其设备 | |
CN107171892B (zh) | 一种基于qt的跨平台数据通信方法及系统 | |
CN114513383B (zh) | 基于原始套接字的实时以太网现场总线数据包处理方法 | |
CN112147927A (zh) | 一种双通道总线通信的多轴运动控制系统 | |
CN112929418B (zh) | 一种基于发布订阅的RapidIO高速通信方法及系统 | |
CN114513381B (zh) | 基于af_xdp的实时以太网现场总线数据包处理方法 | |
EP1217517A1 (en) | Synchronizing calls in a server and client system | |
CN109756503B (zh) | 一种消防机器人的通讯协议设计方法 | |
CN106372019B (zh) | 一种系统总线设备响应超时的处理方法及超时处理装置 | |
CN114513382B (zh) | 一种基于网卡的实时以太网现场总线网络数据包处理方法 | |
CN114185830A (zh) | 基于mailbox的多处理器通信方法、设备、系统和存储介质 | |
CN216623029U (zh) | 可编程逻辑控制器数据辅助处理装置及系统 | |
CN1960276B (zh) | 远程控制系统及方法 | |
CN110687854B (zh) | 一种pa总线控制器以及一种pa总线控制系统 | |
CN210129113U (zh) | 兼具主线控制和独立控制的EtherCAT控制结构 | |
CN201773394U (zh) | 一种profibus总线接口装置 | |
CN114362872A (zh) | 一种基于tsn网络的多网协同边缘智能设备 | |
KR100350315B1 (ko) | 실시간 시스템의 원격지 입출력 제어 장치 및 방법 | |
CN114509993A (zh) | 一种基于国产cpu的自主可控数控系统构建方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |