CN101707599A - 故障录波系统中基于dsp的以太网通信方法 - Google Patents

故障录波系统中基于dsp的以太网通信方法 Download PDF

Info

Publication number
CN101707599A
CN101707599A CN200910212554A CN200910212554A CN101707599A CN 101707599 A CN101707599 A CN 101707599A CN 200910212554 A CN200910212554 A CN 200910212554A CN 200910212554 A CN200910212554 A CN 200910212554A CN 101707599 A CN101707599 A CN 101707599A
Authority
CN
China
Prior art keywords
message
data
tcp
dsp
protocol stack
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.)
Granted
Application number
CN200910212554A
Other languages
English (en)
Other versions
CN101707599B (zh
Inventor
戴超金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing SAC Automation Co Ltd
Original Assignee
Guodian Nanjing Automation Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guodian Nanjing Automation Co Ltd filed Critical Guodian Nanjing Automation Co Ltd
Priority to CN2009102125547A priority Critical patent/CN101707599B/zh
Publication of CN101707599A publication Critical patent/CN101707599A/zh
Application granted granted Critical
Publication of CN101707599B publication Critical patent/CN101707599B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种故障录波系统中基于DSP的以太网通信方法,包括以下步骤:1)在接收报文中断服务程序后,将接收报文存储在Pbufs链缓冲中,同时存储报文的各个链缓冲指针被依次存入一自定义的接收报文循环队列,而不直接传入协议栈,当报文收取完毕,中断服务程序即退出;2)将循环队列中的报文送入1wIP协议栈进行分用;3)应用层数据的输入;4)应用层数据的输出;5)将写入协议栈传输层的缓冲区的报文封装成网络报文;6)将网络报文写入以太网控制器,再由以太网控制器将数据帧转换成差分信号送入网络。本发明的故障录波系统中基于DSP的以太网通信方法可实现故障录波系统的数据信息通过以太网进行高速通信。

Description

故障录波系统中基于DSP的以太网通信方法
技术领域
本发明涉及一种故障录波系统中基于DSP的以太网通信方法,属于电气及通信技术领域。
背景技术
故障录波系统中,由于数据量大,通过传统的网络进行数据传输,网络扩展速度低,实时性差,不支持TCP/IP协议。
TCP/IP以太网通信现在正成为最主要的通信手段,而DSP嵌入式设计也已渗透到工业控制多个领域,把二者结合起来利用现有网络资源实现高速DSP以太网通信,就要解决以下几个问题:
1)DSP要扩展高速以太网必须要选好以太网控制器;
2)要编写或移植TCP/IP协议栈;
3)要编写网络驱动程序。
由于DSP无操作系统,没有现成的网络驱动程序、TCP/IP协议栈,所以必须自己编写网络驱动程序,移植TCP/IP协议栈。另外,由于嵌入式工业控制实时性强、数据量大,所以必须高速实时。
如果能够实现将两者结合实现高速以太网通信,其优点是显而易见的:
1)由于没有操作系统,所以没有病毒干扰。
2)由于DSP是实时系统,所以通信实时性强,特别适用高速、实时、大容量数据传输领域。
发明内容
本发明所要解决的技术问题是提供一种故障录波系统中可以实现高速数据传输的以太网通信方法。
为解决上述技术问题,本发明提供一种故障录波系统中基于DSP的以太网通信方法,将网络控制器与以太网连接,DSP与网络控制器相通信,将采样数据存储于2片FLASH(HY27UF082G2A),其特征在于:所述网络控制器为AX88796,所述DSP上设置有TCP/IP协议栈,用于实现DSP系统与网络上主机的通信,所述TCP/IP协议栈包括1wIP,通信过程包括以下步骤:
1)在接收报文中断服务程序后,以太网驱动程序将接收报文存储在Pbufs链缓冲中,同时存储报文的各个链缓冲指针被依次存入一自定义的接收报文循环队列,而不直接传入协议栈,当报文收取完毕,中断服务程序即退出;
2)将循环队列中的报文送入1wIP协议栈进行分用;
3)应用层数据的输入:将经过协议栈分用的报文传送到上层由规约处理的模块并接收;
4)应用层数据的输出:将用户报文写入协议栈传输层的缓冲区;
5)将写入协议栈传输层的缓冲区的报文封装成网络报文;
6)将网络报文写入以太网控制器,再由以太网控制器将数据帧转换成差分信号送入网络。
在所述步骤1)中,所述以太网控制器的中断服务程序由DSPTMS 320VC5509A在控制器中断使能的条件下执行,实现读取控制器接收到的报文数据、处理接收缓冲区溢出及处理接收数据包错误。
在所述步骤2)中,在报文分用的过程中,协议栈立即发送一个回应报文,为了避免此时被以太网控制器中断打断发送流程,暂时禁用控制器中断。
在所述步骤3)和4)中,协议栈的应用层软件接口为raw API,主控系统使用TCP进行数据通信,应用层数据输入和输出过程包括应用层的初始化,应用层的初始化包括以下步骤,
d)设置主控系统为TCP服务器;
e)设置网络通信回调函数,即调用1wIP的tcp_accept配置函数;
f)在3个TCP端口上进行监听,等待后台处理机的TCP连接请求,所述3个监听端口分别为实时数据通道、录波文件通道和配置通道。
上述过程中,所述连接请求回调函数包括如下内容:
(1)初始化与该TCP通道对应的PORTINFO端口信息结构体中各成员变量值;
(2)设置该TCP连接的多个回调函数,包括收到新的用户数据,数据被接收端收到,连接发生异常。
在所述步骤4)中,应用层数据的输出包括以下步骤:
a)数据被写入1wIP的TCP发送缓冲区,封装进多个TCP报文段;
b)1wIP发送TCP缓冲区中的报文段到网络中。
将用户数据写入发送缓冲区是通过调用1wIP的tcp_write()函数实现,将数据封装进多个TCP报文段中,等待后续的发送。
最终的数据输出是通过调用tcp_output()函数实现。
网络控制芯片选用ASIX公司的AX88796(简称88796),它是适用于嵌入式系统的10/100Mbps自适应以太网控制器。它内部集成有物理层收发器和8K×16bit的SRAM,同时支持多种8位和16位本地CPU总线接口,包括MCS-51系列、80186系列以及MC68K系列,内部MAC寄存器与NE2000兼容,支持全双工和半双工通信模式。综合88796在网络通信速度、内部缓冲区容量、本地接口类型和寄存器操作等方面的配置,这款以太网控制器比之市面流行的RTL8019AS或CS8900A等更有优势,尤其是它的百兆网络数据速率能够满足DSP系统传输数据的速度需求。
TCP/IP协议是实现以太网通信的基础,只有符合该协议的报文(Packet)数据才能被网络上的主机正确接收到。TCP/IP协议栈即是实现该协议的软件模块,它可以运行在多种类型的CPU上,包括5509A DSP系统。移植工作就是针对DSP的特点,对TCP/IP协议栈进行必要的设置和改造,使得它能运行在DSP上,实现DSP系统与网络上主机通信的功能。
1wIP实现了绝大多数协议功能,是一套适用于嵌入式系统的免费开源的TCP/IP协议栈。它采用模块化的设计理念,对应于TCP/IP协议的每一层分别实现了ARP、IP、ICMP、UDP和TCP等协议,具有很好的扩展性。同时,它还具有如下特性:
1)支持多网络接口下的IP转发。
2)支持多个TCP连接和参数化的TCP最大报文段长度(MSS)。
3)支持TCP的流量控制,RTT往返时间估算,滑动窗口,超时重发,快速恢复和快速重发机制。
4)提供基于事件驱动的API函数,用于提高应用程序性能。
5)灵活的配置选项使得其对存储器容量要求仍然很小。
1wIP的协议实现规范完整,具有不俗的网络性能。LwIP是瑞士计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LwIP的含义是Light Weight(轻型)IP协议。LwIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。LwIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,一般它只需要几十K的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端嵌入式系统中使用。
本发明所达到的有益效果:
本发明的故障录波系统中基于DSP的以太网通信方法,网络控制器选用AX88796,并对DSP上设置的TCP/IP协议栈进行设置和改造,从而实现故障录波系统的数据信息传送至以太网,同时以太网上的数据信息传送至用户端,从而实现故障录波系统的数据信息通过以太网进行高速通信。
附图说明
图1为本发明中DSP系统中的网络数据输入流程图;
图2为本发明中网络数据的输出过程示意图;
图3为本发明中以太网控制器的底层数据输入流程图;
图4为本发明中网络数据输出的流程图;
图5为本发明中中断服务程序的流程图;
图6为本发明中应用层的TCP初始化流程图;
图7为本发明中应用层数据输入的处理流程图;
图8为本发明中应用层数据输出流程图。
具体实施方式
下面结合附图对本发明作进一步的说明。
图1为本发明中DSP系统中的网络数据输入流程图。本发明中网络数据的输入过程为:
网络数据的输入通常是由以太网控制器的接收报文中断发起的,DSP接收到该中断后即从以太网控制器中读取所有新的报文数据。接收到的报文必须经过TCP/IP协议栈分用(Demultiplexing),逐步解析才能传送到用户应用层。
DSP主控系统中将网络数据的输入分为两个阶段:以太网驱动程序收取接收报文阶段和接收报文被协议栈分用阶段。
在接收报文中断服务程序中,以太网驱动程序将接收报文存储在Pbufs链缓冲中,同时存储报文的各个链缓冲指针被依次存入一自定义的接收报文循环队列,而不直接传入协议栈,当报文收取完毕,中断服务程序即退出.
循环队列中的报文将在DSP系统的主程序中被送入1wIP协议栈进行分用。此时,主程序是一个无限循环,循环队列将周期性地得到处理,只要主程序的结构设计得当,则接收报文总是能够被及时处理并回应的。
需要注意的一点是,由于在报文分用的过程中,协议栈可能需要立即发送一个回应报文,为了避免此时被以太网控制器中断打断发送流程,接收报文被分用时,控制器中断需要被暂时禁用。
图2为本发明中网络数据的输出过程示意图;图3为本发明中以太网控制器的底层数据输入流程图;本发明中,网络数据的输出过程为:
主控系统的网络数据输出需要实现两部分:应用层数据输出和底层数据输出。
应用层数据输出即主控系统的网络应用软件调用1wIP的相关函数将用户数据写入TCP或UDP缓冲区的过程,随后缓冲区的数据将由协议栈自动封装成以太网数据帧,并发送到网络中去。根据主控系统的需求,本发明编写相应的用户数据输出函数,实现数据送入传输层缓冲区的功能。
底层数据输出即以太网控制器的底层输出程序将协议栈封装好的以太网数据帧交由控制器进行发送。它属于以太网控制器的驱动程序部分,由协议栈的网络层执行该操作。
以太网控制器的主要功能是收发网络报文,DSP主控系统对控制器的操作是由它的驱动程序完成的,包括控制器的初始化、数据输入和输出等底层函数。
图5为本发明中中断服务程序的流程图。以太网控制器的中断服务程序是服务于控制器发生的异步事件的,它由DSP在控制器中断使能的条件下执行,主要实现读取控制器接收到的报文数据、处理接收缓冲区溢出、处理接收数据包错误等功能。系统可以通过访问以太网控制器的ISR寄存器来查询是什么事件触发了中断。
由于接收到的报文必须经过TCP/IP协议栈的分用,逐步解析才能传送到用户应用层,因此多个报文通过协议栈的过程将花费更大的系统开销,体现在时间上即这一操作的耗时将相当可观。另外,某些报文在被协议栈分用时将会引起协议栈立即发送一个回应报文,这需要调用网络数据的输出例程,从而不仅进一步增大处理接收报文的时间开销,而且在输出过程中,DMA操作完成中断将不能被DSP及时响应,因为此时DSP还处在以太网控制器的中断服务程序中,全局中断使能位是关闭的,总之,在中断服务程序中即让接收报文通过协议栈进行分用是不明智的,不仅会导致中断例程的处理时间太长,使得其他中断得不到及时响应,还会和系统的DMA传输完成中断相冲突,造成通信失败。因此,系统的中断服务程序仅将接收报文的Pbuf链缓冲指针依次存入循环队列,而不直接传入协议栈。接收报文将在系统的主程序中得到进一步处理,此时,程序处在非中断服务程序中,可以正常执行网络输出例程。
主控系统在DSP上移植了1wIP的ARP、RARP、ICMP、IP、UDP、TCP协议模块以及附属的缓冲管理、状态显示、协议栈调试等模块,这些协议已经足以组建网络连接通道,能够满足主控系统的通信需求.移植结果在主控系统与PC主机之间进行验证,两者通过直连双绞线互联.经过试验,主控系统的ARP协议实现正常,查询主机可以发现其ARP表中已存在主控系统的IP地址记录;ICMP协议实现正常,ping程序通过,主控系统响应迅速,每个ICMP报文的响应时间都在1ms以内;UDP端口通信正常,主控系统使用UDP连接向主机发送10MByte字节有效数据,总共耗时0.967486秒,平均通信速度达到10.336MByte/s.同时,当主机发送UDP报文到主控系统未开启的UDP端口时,主控系统能够正常回应端口不可达的ICMP回应报文;TCP通信正常,DSP上的1wIP协议栈能够及时响应主机的TCP连接请求,主控系统主动发送的TCP数据可以被正常封装到各个TCP报文段中,并进入TCP发送队列,随后通过调用以太网控制器驱动被发送到网络上.TCP定位于可靠的有连接的字节流服务,通信中任一环节出错,都能导致TCP通信的中断或连接的丢失.主控系统能够实现通过TCP连接通道持续上传大批量数据到主机,TCP通信最大平均速度达到9.375MByte/s,峰值速度达到9.875MByte/s,可以满足主控系统对上传速度的要求.
通常TCP/IP协议的应用层软件接口是socket API,1wIP为协议栈提供了2种应用软件接口:底层的raw API和更高层的sequential API。Sequential API是类BSD socket的应用层软件接口,它的执行是基于传统socket的打开-读取-写入-关闭的机制,具有简单易用的特点。然而,这种类型的API要求协议栈代码和应用软件分属于不同的线程,即它必须在具有操作系统的系统上运行,因此,主控系统不能采用这种软件接口。
底层的raw API是基于事件驱动的,它通过由事件去主动执行回调函数(callback function)来实现协议栈与应用层的软件接口,协议栈代码和应用软件属于同一个线程。因此,raw API使得应用程序与协议栈结合更紧密,从而使得它比sequential API运行速度更快,占用内存更少,更适合小型嵌入式系统1。然而,由于raw API比sequential API抽象化层次低,因此应用程序的开发难度将加大。根据主控系统的实际配置,我们选用raw API作为协议栈的应用层软件接口。
DSP主控系统,使用TCP进行数据通信,应用层数据输入和输出过程包括应用层的初始化,应用层的初始化包括设置主控系统为TCP服务器,在3个TCP端口上进行监听,等待后台处理机的TCP连接请求。3个监听端口分别对应实时数据通道、录波文件通道和配置通道。每个通道的初始化过程都是相同的。图6为应用层的TCP初始化流程图。
在1wIP中,每个TCP连接都需要一个TCP_PCB数据结构体来维护它的所有运行状态,在连接断开时,该结构体才可以被释放。由于系统使用raw API,应用层软件接口是基于事件驱动的,因此,在TCP服务端口监听之前需要设置连接到来时的回调函数,这一步仅需调用1wIP的tcp_accept配置函数即可。在后面的应用层软件中仍会遇到类似的需要设置回调函数的场合。
每个TCP_PCB上都会绑定多个回调函数,例如,上一节中的请求连接的回调函数。1wIP中的回调函数是由用户定义,并在初始化时注册到TCP_PCB结构体中的。当TCP报文段经过协议栈的分用,被传递到TCP传输层,则协议栈会根据该报文对应的端口号及其特定的属性而调用预先注册过的回调函数,该函数将针对属性执行相应的操作。通常,每个回调函数是用来专门响应一个事件的发生,进而执行用户层的程序,因此,它已经属于网络应用软件范畴。
例如,当有主机连接主控系统监听的TCP服务端口后,协议栈的TCP层会收到TCP连接请求,并主动调用上一节设置的连接请求回调函数,该函数将为即将建立的TCP连接作好准备,随后协议栈即回应发起请求的主机并建立真正的TCP连接。主控系统中定义的连接请求回调函数包括如下内容:
(1)初始化与该TCP通道对应的PORTINFO结构体中各成员变量值;
(2)设置该TCP连接的多个回调函数,包括收到新的用户数据,数据被接收端收到,连接发生异常等。
建立TCP连接后,TCP数据通道也就建立了。一旦该连接有任何事件发生,协议栈将自动调用预先注册的回调函数予以响应。例如,若远端发送用户数据到主控系统,协议栈会调用用户定义的“收到新的用户数据”回调函数,在该函数中完成用户数据的接收。
由应用层对事件的处理方式来看,在宏观上,主机系统在3个TCP端口上同时监听连接请求,并能同时处理这3个端口的双工网络通信;而在微观上,每个接收的TCP报文段是被串行处理的,只是因为它们对应的服务端口号不同而被协议栈区分为从属于不同的TCP连接,随后再交由与该连接对应的回调函数来处理。因此,在主控系统不使用操作系统的情况下,多端口的TCP连接是可行的。
应用层数据的输入过程为:
图7为本发明中应用层数据输入的处理流程图。远端主机通过TCP通道发送用户数据到主控系统后,经过协议栈的分用,存储用户数据的缓冲区指针被作为参数,传递给“收到新的用户数据”回调函数。
按照1wIP的实现机制,若缓冲区指针为空,则表明远端发送了关闭TCP连接的请求,主控系统也将执行相应的TCP关闭流程。否则,系统调用tcp_recved()函数通知协议栈已成功接收该用户数据,并将数据送到上层由规约处理模块接收它们。
调用tcp_recved()函数是必须的,它的作用是扩大该TCP连接的接收缓冲区,即将TCP滑动窗口右边沿向右移动,使得远端能发送更多的数据过来。该函数缺失的后果是,滑动窗口被关闭,远端将误以为主控系统接收缓冲区满而不再发送新的数据。
规约处理模块是比应用层更高一层的数据处理单元,它将依照通信规约对接收数据进行解释,并最终完成相应的控制功能。
应用层数据的输出过程为:
图8应用层数据输出流程图。在实现应用层数据的输出之前,需要先配置对应该TCP通道的PORTINFO结构体中的DATASEND成员,在其中填写输出数据的缓冲区指针,发送数据长度等,然后将它作为参数传递给应用层输出函数。应用层输出函数完成实际的数据输出功能,它的流程如图4.19所示。其中,len_left是待发送的数据长度,tcp_sndbuf是当前TCP发送缓冲区的可用大小。
应用层数据的输出分两个阶段:
(1)数据被写入1wIP的TCP发送缓冲区,封装进多个TCP报文段;
(2)1wIP发送TCP缓冲区中的报文段到网络中。
在用户数据写入之前,TCP当前发送缓冲区的可用大小是不确定的。通常,缓冲区中会包含所有未被远端主机确认的已发送的报文段,这会导致缓冲区可用大小变小。因此,需要先确定它的可用大小,然后决定能把多少数据写入其中。
将用户数据写入发送缓冲区是通过调用1wIP的tcp_write()函数实现的,它将数据封装进多个TCP报文段中,等待后续的发送。
最终的数据输出是通过调用tcp_output()函数实现的.它尽可能地将发送缓冲区中的报文段发送出去,发送量由接收窗口和拥塞窗口决定,即在某些情况下,发送缓冲区中仍然会滞留一部分尚未被发送的报文段,有可能是对方缓冲区已满,或是当前网络拥堵,协议栈将根据特定的算法自动减少发送报文的数量.
在进行写入缓冲区和发送报文段的操作时,以太网控制器的中断是暂时禁用的。该操作是用来保证在协议栈代码运行期间,接收报文中断不会被DSP响应。由于系统使用了DMA方式传输网络数据到以太网控制器,因此,在发送报文段的大部分时间里,DMA总是在工作中。此时,若DSP响应接收报文中断,则当前的网络数据传输将被打断,DMA操作会失败。同时,禁用以太网控制器的中断也是为了保护协议栈临界区的执行,它是有必要的。禁用中断的缺点是,它将导致接收报文的积累。延迟其被DSP读取的时间。然而,考虑到主控系统在绝大多数情况下是数据发送者,接收数据量很小,同时,以太网控制器中的循环缓冲区也能够暂存足够多的接收报文,因此,禁用中断对系统稳定性的影响不大。
网络通信的效率与多种因素有关,为了提高网络通信速度,本文作了如下的工作:
(1)调整DSP访问网络控制器的时序,使得DSP对其进行读写操作的周期逼近它能接受的最小值。由于在网络通信期间,DSP会非常频繁地访问以太网控制器,因此,适当减小访问周期即可获取更高的数据流量。由控制器的技术文档可知,它的最短访问周期是160ns,则在DSP的EMIF控制寄存器中可以相应设置存储器访问时序,以刚好满足该时序要求为宜。
(2)使用汇编语言重写通信过程中频繁调用的关键函数。网络通信过程中被频繁调用的函数通常包括以太网控制器驱动中的底层数据读写函数和传输层中的校验和计算函数,它们都需要对报文中的每一个字节进行访问,时间耗费巨大。通常,汇编语言实现的函数效率更高,因此,本文分别完成了这两类函数的汇编语言实现。试验表明,在完成某一次数据发送任务的测试中,若这两类函数仍使用原有的C语言实现,则执行一次该任务将分别在底层数据发送函数和校验和计算函数上花费29643和13936个时钟周期;若用它们的汇编语言实现代替,则同样的任务,这两个函数分别仅花费了19855和836个时钟周期,时间被大大节省下来了。
(3)在底层网络数据输出时使用DMA操作完成数据传输。使用DMA操作明显地增大了网络数据吞吐量,试验证明,当不使用DMA操作完成网络数据输出时,TCP平均通信速率在40~50Mbps之间,一旦换用DMA传输方式,则TCP的平均通信速率能达到72~76Mbps,速度有了大幅度地提升。DMA能大大提高网络通信效率的原因在于它是与DSP并行操作的,此时,对以太网控制器的访问完全由DMA控制器来完成,DSP可以有更多的时间去执行协议栈代码,因而数据处理速度也相应提高了。
(4)调整最大报文长度(MSS)和协议栈发送缓冲区大小.前文已提到,MSS设为1460可以最大化每个报文的负载数据,因此,同样多的数据,封装后得到的报文数目就少了,协议栈处理报文的开销也相应地减小.发送缓冲区是协议栈内部的参数,应用层将待发送的用户数据送入TCP缓冲区中时,协议栈都会检查发送缓冲区是否足够容纳这些数据,若不能,则只能将一小部分刚好能存满缓冲区的用户数据写入其中,其余的则需要应用程序在下次继续尝试写入.显而易见,若发送缓冲区过小,则每次应用程序只能写一小部分数据到缓冲区,发送大批量的数据将造成时间都耗费在等待缓冲区中数据被发送和不断尝试写入的过程中,网络通信效率会很低.因此,将发送缓冲区设置得足够大,可以明显提高通信速度.试验表明,若主控系统循环发送21K数据到主机端,则当发送缓冲区大小仅为8760时,TCP平均通信速率在30Mbps~40Mbps;而当其被设为29200时,由于应用程序能一次把所有数据都写入发送缓冲区中,TCP平均通信速率达到了72Mbps.
(5)优化1wIP中的部分代码。在系统调试阶段,本文使用DSP的profiler工具发现1wIP的缓冲管理模块中有一个断言语句极其严重地影响了协议栈的性能,该断言调用了名为sanity()的函数,其花费DSP的指令周期数几倍于通信所需。由1wIP的最新版本可知,该函数可以被人为屏蔽,不会对协议栈有本质的影响。
(6)设置DSP软件的编译器优化选项,使用软件的Release版本。编译器将自动对软件的变量和函数进行优化,能在一定程度上提升通信的效率。
通过嵌入式TCP/IP协议栈的移植,以太网通信的通道已经完好地建立。此时,主控系统与后台处理机之间的网络通信性能还将和以下几个方面有关:
(1)TCP拥塞窗口。TCP具有流量控制功能,当网络拥堵发生时,协议栈将自动降低TCP传输速率,同时它将根据拥塞避免等算法动态调整发送数据量,避免加重网络负担。因此,网络阻塞时的通信速率下降是不可避免的。
(2)后台处理机的接收窗口,即它的接收缓冲区。主控系统发送的TCP数据都会存入后台处理机的接收缓冲区,同时,主控系统端将会确认接收端的缓冲区不会被过多的数据填满而溢出,即它将根据接收缓冲区大小调整发送数据量。若接收缓冲中的数据不能被应用层及时接收并处理,则接收端将向发送端通报一个越来越小的接收窗口,直至窗口关闭,不允许主控系统继续发送。因此,后台处理机必须开辟足够大的接收缓冲区,以使得主控系统可以满负荷地执行数据发送任务。
(3)后台处理机端的延迟的ACK确认。由于后台处理机基本上都处于接收数据的角色,因此,它可以延迟ACK确认报文的发送,从而使得一次大批量数据的传输仅需要少量的ACK确认报文返回给主控系统,网络负担相应地减少了,网络带宽可以被更充分地利用起来。
对于10KHZ采样率,16bit AD转换,96路模拟量,256路开入量的录波系统数据传输速度要求为:(96×16+256)*10000=17,920,000bps=17.92Mbps
实测速度达72Mbps,完全满足录波系统数据传输速度要求。

Claims (8)

1.一种故障录波系统中基于DSP的以太网通信方法,将网络控制器与以太网连接,DSP与网络控制器相通信,DSP通过总线与采集卡连接,将采样数据存储于2片FLASH,并与后台管理机建立以太网通信,其特征在于:所述网络控制器为AX88796,所述DSP上设置有TCP/IP协议栈,用于实现DSP系统与网络上主机的通信,所述TCP/IP协议栈包括1wIP,通信过程包括以下步骤:
1)在接收报文中断服务程序后,以太网驱动程序将接收报文存储在Pbufs发送报文缓冲链缓冲中,同时存储报文的各个链缓冲指针被依次存入一自定义的接收报文循环队列,而不直接传入协议栈,当报文收取完毕,中断服务程序退出;
2)将循环队列中的报文送入1wIP协议栈进行分用;
3)应用层数据的输入:将经过协议栈分用的报文传送到上层由规约处理的模块并接收;
4)应用层数据的输出:将用户报文写入协议栈传输层的缓冲区;
5)将写入协议栈传输层的缓冲区的报文封装成网络报文;
6)将网络报文写入以太网控制器,再由以太网控制器将数据帧转换成差分信号送入网络。
2.根据权利要求1所述的故障录波系统中基于DSP的以太网通信方法,其特征在于:在所述步骤1)中,所述以太网控制器的报文中断服务程序由DSP在控制器中断使能的条件下执行,实现读取控制器接收到的报文数据、处理接收缓冲区溢出及处理接收数据包错误。
3.根据权利要求1所述的故障录波系统中基于DSP的以太网通信方法,其特征在于:在所述步骤2)中,在报文分用的过程中,协议栈立即发送一个回应报文,为了避免此时被以太网控制器中断打断发送流程,暂时禁用控制器中断。
4.根据权利要求1或2或3所述的故障录波系统中基于DSP的以太网通信方法,其特征在于:在所述步骤3)和4)中,协议栈的应用层软件接口为raw API应用接口函数,主控系统使用TCP进行数据通信,应用层数据输入和输出过程包括应用层的初始化,应用层的初始化包括以下步骤,
a)设置主控系统为TCP服务器;
b)设置网络通信回调函数,即调用1wIP的tcp_accept配置函数;
c)在3个TCP端口上进行监听,等待后台处理机的TCP连接请求,所述3个监听端口分别为实时数据通道、录波文件通道和配置通道。
5.根据权利要求4所述的故障录波系统中基于DSP的以太网通信方法,其特征在于:所述连接请求回调函数包括如下内容:
(1)初始化与该TCP通道对应的PORTINFO端口信息结构体中各成员变量值;
(2)设置该TCP连接的多个回调函数,包括收到新的用户数据,数据被接收端收到,连接发生异常。
6.根据权利要求1或2或3所述的故障录波系统中基于DSP的以太网通信方法,其特征在于:在所述步骤4)中,应用层数据的输出包括以下步骤:
a)数据被写入1wIP的TCP发送缓冲区,封装进多个TCP报文段;
b)1wIP发送TCP缓冲区中的报文段到网络中。
7.根据权利要求6所述的故障录波系统中基于DSP的以太网通信方法,其特征在于:将用户数据写入发送缓冲区通过调用1wIP的tcp_write()函数实现,将数据封装进多个TCP报文段中,等待后续的发送.
8.根据权利要求6所述的故障录波系统中基于DSP的以太网通信方法,其特征在于:在所述步骤b)中,最终的数据输出通过调用tcp_output()函数实现。
CN2009102125547A 2009-11-12 2009-11-12 故障录波系统中基于dsp的以太网通信方法 Active CN101707599B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102125547A CN101707599B (zh) 2009-11-12 2009-11-12 故障录波系统中基于dsp的以太网通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102125547A CN101707599B (zh) 2009-11-12 2009-11-12 故障录波系统中基于dsp的以太网通信方法

Publications (2)

Publication Number Publication Date
CN101707599A true CN101707599A (zh) 2010-05-12
CN101707599B CN101707599B (zh) 2012-11-28

Family

ID=42377790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102125547A Active CN101707599B (zh) 2009-11-12 2009-11-12 故障录波系统中基于dsp的以太网通信方法

Country Status (1)

Country Link
CN (1) CN101707599B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101886938A (zh) * 2010-05-28 2010-11-17 四川大学 可通过并行总线集成分布系统的单板录波器
CN102710474A (zh) * 2012-05-25 2012-10-03 山西联华伟业科技有限公司 基于lwip兼容光口和电口的以太网接入设备
CN103729215A (zh) * 2013-12-20 2014-04-16 江苏锐天信息科技有限公司 一种以太网板卡数据输入输出方法
CN104852893A (zh) * 2014-02-13 2015-08-19 现代自动车株式会社 用于以太网和can通讯之间信号转换的车载设备及其控制方法
CN105162751A (zh) * 2015-06-18 2015-12-16 南京国电南自电网自动化有限公司 一种基于lwIP协议栈多网口多连接的通讯系统
CN111107050A (zh) * 2019-10-22 2020-05-05 国网浙江省电力有限公司电力科学研究院 一种配电网动模系统的分布式录波方法及装置
WO2021046936A1 (zh) * 2019-09-10 2021-03-18 北京东土科技股份有限公司 总线数据存储到存储器上的方法、存储装置及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1218549C (zh) * 2003-07-25 2005-09-07 清华大学 多控制器局域网总线式光纤网的故障录波及数据采集系统
CN101446603B (zh) * 2008-11-11 2011-04-06 中国电力科学研究院 一种电力系统分布式多功能一体化测量方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101886938A (zh) * 2010-05-28 2010-11-17 四川大学 可通过并行总线集成分布系统的单板录波器
CN102710474A (zh) * 2012-05-25 2012-10-03 山西联华伟业科技有限公司 基于lwip兼容光口和电口的以太网接入设备
CN103729215A (zh) * 2013-12-20 2014-04-16 江苏锐天信息科技有限公司 一种以太网板卡数据输入输出方法
CN103729215B (zh) * 2013-12-20 2017-02-01 江苏锐天信息科技有限公司 一种以太网板卡数据输入输出方法
CN104852893A (zh) * 2014-02-13 2015-08-19 现代自动车株式会社 用于以太网和can通讯之间信号转换的车载设备及其控制方法
CN104852893B (zh) * 2014-02-13 2019-08-16 现代自动车株式会社 用于以太网和can通讯之间信号转换的车载设备及其控制方法
CN105162751A (zh) * 2015-06-18 2015-12-16 南京国电南自电网自动化有限公司 一种基于lwIP协议栈多网口多连接的通讯系统
CN105162751B (zh) * 2015-06-18 2018-06-22 南京国电南自电网自动化有限公司 一种基于lwIP协议栈多网口多连接的通讯系统
WO2021046936A1 (zh) * 2019-09-10 2021-03-18 北京东土科技股份有限公司 总线数据存储到存储器上的方法、存储装置及存储介质
CN111107050A (zh) * 2019-10-22 2020-05-05 国网浙江省电力有限公司电力科学研究院 一种配电网动模系统的分布式录波方法及装置
CN111107050B (zh) * 2019-10-22 2021-10-22 国网浙江省电力有限公司电力科学研究院 一种配电网动模系统的分布式录波方法及装置

Also Published As

Publication number Publication date
CN101707599B (zh) 2012-11-28

Similar Documents

Publication Publication Date Title
CN101707599B (zh) 故障录波系统中基于dsp的以太网通信方法
CN105516191B (zh) 基于fpga实现的万兆网tcp协议卸载引擎toe的系统
CN111666242B (zh) 一种基于飞腾平台lpc总线的多路通信系统
CN105024942B (zh) 一种动态流量监控方法
CN106648896B (zh) 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法
US10574592B2 (en) Compute-communicate continuum technology
CN101902504A (zh) 航空电子全双工交换式以太网网卡及其集成化方法
US10609125B2 (en) Method and system for transmitting communication data
CN105577567A (zh) 基于Intel DPDK的网络数据包并行处理方法
JP3946145B2 (ja) 高速イーサネット(登録商標)スイッチおよび高速イーサネット(登録商標)データフレームを分配するための方法
CN102185833B (zh) 一种基于fpga的fc i/o并行处理方法
CN104883335A (zh) 一种全硬件tcp协议栈实现方法
CN105553883A (zh) 基于fpga的多dsp数据交换装置
CN102158435A (zh) 一种支持虚连接的基于can总线和以太网实时嵌入式网关
CN112769514A (zh) 基于时间敏感的通信设备
CN111736115A (zh) 基于改进型sgdma+pcie的mimo毫米波雷达高速传输方法
CN113836048A (zh) 一种基于fpga内存动态分配的数据交换方法及装置
CN114827292B (zh) 工业异构协议高速转换优化处理方法及系统
CN110658751A (zh) 一种EtherCAT现场总线控制系统的实现方法
CN113542148B (zh) 一种报文聚合方法、装置、网络网卡及可读存储介质
CN102521159A (zh) 一种片内、片外存储器按流量动态调度分包数据的方法
US7146537B2 (en) Protocol test device including a network processor
CN111090611A (zh) 一种基于fpga的小型异构分布式计算系统
CN103384225B (zh) 基于输入交叉点缓存快速分组交换网络的流量控制方法
CN103618683A (zh) Afdx交换机终端协议栈结构及其数据收发方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: NANJING GUODIAN NANJING GRID AUTOMATION CO., LTD.

Free format text: FORMER OWNER: NANJING AUTOMATION CO., LTD., CHINA ELECTRONICS CORP.

Effective date: 20121129

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 210003 NANJING, JIANGSU PROVINCE TO: 211100 NANJING, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20121129

Address after: 211100 No. 8 SIEMENS Road, Jiangning Development Zone, Nanjing, Jiangsu

Patentee after: Nanjing Guodian Nanjing Grid Automation Co., Ltd.

Address before: 210003, 38 new model street, Gulou District, Jiangsu, Nanjing

Patentee before: Nanjing Automation Co., Ltd., China Electronics Corp.