一种基于网卡的实时以太网现场总线网络数据包处理方法与流程

文档序号:30088527发布日期:2022-05-18 07:16阅读:227来源:国知局
一种基于网卡的实时以太网现场总线网络数据包处理方法与流程

1.本发明涉及数控技术领域,尤其涉及实时以太网现场总线技术领域,具体涉及一种基于网卡的实时以太网现场总线网络数据包处理方法。


背景技术:

2.目前,数控系统中实时以太网现场总线仍采用传统的通信板卡形式进行网络数据包的传输,不同的现场总线(如ethercat、ssb-iii实时以太网总线等)对应不同的通信板卡,针对每一种现场总线都要开发一套与之对应的硬件板卡,使系统变得臃肿且不可复用,替代方案是采用标准的网络接口卡进行网络数据包的传输。当采用标准网卡进行实时以太网现场总线数据包传输时,网络数据包会在传输到内核网络协议栈后,因不被网络协议栈识别而被丢弃,如通过修改内核网络的方式使之通过协议栈,也将增加系统延迟和抖动,因此必须在进入内核网络协议栈之前捕获并处理数据包,否则系统的实时性将无法得到保证。
3.中高档数控系统对实时性和控制周期的要求相对较高,为了增加系统实时性并降低数据包传输及处理时间以满足中档数控系统对网络传输实时性的需求,理想的方式是在网卡驱动之中捕获并处理实时以太网总线数据包,因此如何设计简单高效的网络数据包处理方法是解决实时以太网现场总线网络数据包实时性传输的关键。


技术实现要素:

4.为解决上述技术问题,本发明提出了一种基于网卡的实时以太网现场总线网络数据包处理方法。
5.本发明为实现上述目的所采用的技术方案是:
6.一种基于网卡的实时以太网现场总线网络数据包处理方法,包括以下步骤:
7.通过内核调试功能输出的调试信息,确定实时以太网现场总线数据包在原生网卡驱动中的传输路径,在网卡驱动内部建立实时以太网总线数据包的捕获点;
8.针对建立在网卡驱动内部的实时以太网总线数据包捕获点,基于原生网卡驱动对实时以太网总线数据包进行捕获;
9.根据实时以太网总线数据包所属的总线协议类型,在原生网卡驱动中对实时以太网总线数据包进行解析处理;
10.根据解析出的实时以太网总线数据,进行基于内存映射机制的底层驱动与用户空间的实时应用程序的数据交换。
11.所述实时以太网现场总线数据包类型包括ethercat协议和ssb-iii协议中的任意一种。
12.所述网卡为mac控制器加phy芯片控制结构。
13.所述捕获点位于网卡dma映射的环形队列之后。
14.所述基于原生网卡驱动对实时以太网总线数据包进行捕获具体为:
15.在内核空间中开辟出用于存储实时以太网总线数据包的静态内存;
16.选择中断源,设置中断为周期性触发并设置中断周期,在中断服务例程中,完成对实时以太网现场总线数据包的捕获;
17.数据的接收采用无中断的方式,屏蔽网卡中实时以太网总线数据包映射到环形队列时产生的接收中断;
18.数据的读取采用轮询的方式,通过不断轮询网卡,读取环形队列中的实时以太网总线数据包到开辟出的静态内存中。
19.所述在原生网卡驱动中对实时以太网总线数据包进行解析处理具体为:
20.开辟出用于存储解析出的指令数据的静态内存;
21.在原生网卡驱动中解析实时以太网总线数据包,确定实时以太网总线数据包的类型;
22.根据实时以太网总线数据包类型,解析实时以太网总线数据包中的指令数据;
23.将解析出的指令数据按数据组织格式存储在开辟的静态内存中。
24.所述基于内存映射机制的底层驱动与用户空间的实时应用程序的数据交换具体为:
25.采用内存映射机制,将指令数据所处的内存映射到用户空间;
26.采用消息通信机制,与用户空间的实时应用程序交换数据;
27.等待下一周期轮询数据包。
28.本发明具有以下有益效果及优点:
29.1.实时以太网现场总线采用标准网卡传递数据包,有效减少了硬件通信板卡的种类结构。现有数控系统中实时以太网现场总线仍采用传统的通信板卡形式进行总线数据的传输,不同的现场总线(如ethercat、ssb-iii实时以太网总线等)对应不同的通信板卡,针对每一种现场总线都要开发一套与之对应的硬件板卡,使系统变得臃肿且不可复用。
30.2.在网卡驱动之中捕获并处理实时以太网总线数据包,可以有效增加数据包的处理效率,并降低与用户态组件之间交互的数据量,同时可以降低系统的延迟及抖动。原生网卡驱动处于内核空间,对数据包的处理更加高效;同时在原生网卡驱动中将数据包的命令以及状态指令解析出来,相比于整个数据包,可以大大减少与用户态组件交互的数据量。
31.3.实时以太网数据包的接收采用无中断的方式,避免了中断上下文的切换,提升了数据包处理效率,降低了系统延迟。实时以太网现场总线的控制结构均为主从控制方式,在实时以太网现场总线的网络中,数控系统为控制网络的主站设备,而从站为被控的伺服驱动器以及i/o等,网络的通信全部由主站发起,因此,主站在发出数据包后的一定时间内会接收到从站反馈回来的数据包,所以可以采用轮询的方式接收数据包,以减少中断带来的上下文切换。
附图说明
32.图1实时以太网现场总线网络结构图;
33.图2数据包的捕获处理方法图。
具体实施方式
34.下面结合附图及实施例对本发明做进一步的详细说明。
35.本发明适合应用于数控系统领域,尤其适用于采用标准网卡传输实时以太网现场总线网络数据包的应用场合,具体适用于中高档数控系统中采用标准网卡传输实时以太网现场总线网络数据包的应用场合。下面结合附图对本发明方法的具体实施方式作进一步详细说明。
36.基于网卡的实时以太网现场总线网络数据包处理方法,包括以下步骤:
37.1)确定实时以太网现场总线数据包在原生网卡驱动中的传输路径,在网卡驱动内部建立实时以太网总线数据包的捕获点;
38.2)针对建立在网卡驱动在内部的网络数据包捕获点,设计基于原生网卡驱动的数据包捕获方法;
39.3)根据数据包所属的总线协议类型,设计在原生网卡驱动中的数据包的解析处理方法;
40.4)根据解析出的实时以太网数据,设计基于内存映射机制的底层驱动与上层用户态组件之间的数据交换方法;
41.所述的确定实时以太网现场总线数据包在原生网卡驱动中的传输路径,实时以太网现场总线为ethercat和ssb-iii;
42.所述的确定实时以太网现场总线数据包在原生网卡驱动中的传输路径,网卡为mac控制器加phy芯片控制结构;
43.所述的确定实时以太网现场总线数据包在原生网卡驱动中的传输路径,网卡驱动为linux系统的原生网卡驱动;
44.所述的在原生网卡驱动内部建立实时以太网总线数据包的捕获点,捕获点位于网卡dma映射的环形队列之后;
45.所述的建立基于原生网卡驱动的数据包捕获方法,数据包捕获方法包括以下步骤:
46.a.在内核空间中静态的开辟一块儿内存,用于存储以太网数据包;
47.b.选择中断源,设置中断为周期性触发并设置中断周期,在中断服务例程中,完成对实时以太网现场总线数据包的捕获和解析处理工作;
48.c.数据的接收采用无中断的方式,将网卡dma数据包到环形队列产生的接收中断屏蔽掉;
49.d.数据的读取采用轮询的方式,通过不断轮询网卡设备,读取环形队列中的数据到新开辟的内存中。
50.所述的设计在原生网卡驱动中的数据包的解析处理方法数据包的解析处理方法包括以下步骤:
51.a.开辟一块儿静态内存用于存储解析出来的指令数据;
52.b.在原生网卡驱动中解析以太网协议数据包,确定实时以太网数据包的类型;
53.c.根据数据包类型,解析数据包中的指令数据;
54.d.将解析出的指令数据按数据组织格式存储在开辟的静态内存中;
55.所述的设计基于内存映射机制的底层驱动与上层用户态组件之间的数据交换方
法,数据包的数据交换方法包括以下步骤:
56.a.采用内存映射机制,将指令数据所处的内存映射到用户空间;
57.b.采用消息通信机制,与上层用户态运动控制组件交换数据,其中,上层的运动控制组件为实时应用程序,用于轨迹规划、加减速控制以及插补计算;
58.c.等待下一周期轮询数据包。
59.如图1所示,基于原生网卡驱动的实时以太网现场总线的网络结构为图中的左半部分,默认情况下,网络数据包首先会经过内核空间的网卡驱动和网络协议栈,然后被发送的用户空间中的应用程序中,本发明在原生网卡驱动的内部增加一个实时以太网现场总线数据包捕获处理模块,它将ethercat、ssb-iii总线数据包在网卡驱动的内部进行捕获,同时解析出数据包中的指令数据再发送到用户空间中的运动控制组件进行进一步处理。
60.基于原生网卡驱动的实时以太网现场总线的数据流结构如图1中的右半部分所示,实时以太网数据包经过网卡之间dma到了原生网卡驱动内部的环形队列中,在环形队列之后增加数据包捕获处理模块,轮询的读取环形队列中的数据包,并对实时以太网数据包进行解析处理,将解析得到的指令数据通过mmap机制映射到用户空间的环形队列中,上层运动控制组件中的运动线程也通过轮询的机制读取环形队列中的指令数据。
61.如图2所示,实时以太网现场总线数据包的捕获处理方法的具体实施步骤包括:
62.a.在内核空间中静态的开辟两块儿内存区域,一块儿用于以太网数据包的存储,另一块儿用于指令数据的存储;
63.b.采用内核的高精度时钟定时器(hrtimer)设定一个周期性的时钟中断或者直接由硬件逻辑提供的高精度的定时中断,在每次周期性中断的中断服务例程中,完成对实时以太网现场总线数据包的捕获和解析处理工作;
64.c.数据的接收采用无中断的方式,将网卡dma数据包到环形队列产生的接收中断屏蔽掉;
65.d.数据包的读取采用polling轮询的方式,通过不断轮询网卡设备,读取环形队列中的数据到新开辟的内存中。
66.e.通过解析以太网协议包头,判断实时以太网现场总线的数据包类型,分别有ethercat、ssb-iii以及其他实时以太网协议;
67.f.根据数据包类型,解析数据包的指令数据,其中ethercat协议的指令数据包括周期性指令数据和非周期的指令数据,周期性的指令数据采用ethercat协议的过程数据进行数据传递,根据传递方向不同分为周期性的命令数据和状态数据,非周期性的指令数据采用ethercat协议的邮箱进行数据传递,根据传递方向不同分别为非周期性的命令数据和状态数据;ssb-iii协议与ethercat协议类似,指令数据也包括周期性指令数据和非周期性的指令数据,不同的是ssb-iii协议对于这两种数据均采用邮箱进行数据传输;
68.g.将解析的指令数据按rcs库的nml中性消息组织格式存储在开辟的静态内存中,其中内存的存储格式分为周期性数据存储区和非周期数据存储器,周期性和非周期性数据存储区又分为命令消息和状态消息存储器,解析出的指令数据需按照对应的格式存储到对应的区域;
69.h.采用mmap机制将指令数据内存映射到用户空间;
70.i.采用rcs库的nml消息通信机制与上层用户态运动控制组件交换数据;
71.j.等待下一个中断周期轮询数据包。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1