您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术TCP/IP协议栈在嵌入式异构网络互联中的应用 正文
TCP/IP协议栈在嵌入式异构网络互联中的应用

TCP/IP协议栈在嵌入式异构网络互联中的应用

点击数:7944 次   录入时间:03-04 11:51:34   整理:http://www.55dianzi.com   嵌入式系统-技术

2.4 SX52 UDP协议的设计与实现

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP不提供可靠性,它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。由于缺乏可靠性,我们似乎觉得要避免使用UDP,而使用一种可靠的协议,如TCP。但分析发现,UDP在我们的互连设计中有很多的优点:其一,UDP协议传输效率高,无须TCP通信前的连接开销;第二,UDP协议简单,无须复杂的状态机传输机制,可以很好地避免SX52网关死机复位后由于状态不一致而无法正常通信,且上层协议又很难发现的危险。因此,可以使用UDP来实现通信(避免TCP连接的开销),而让许多需要的特征(如动态超和重传、拥塞避免、查错等)放置在应用层设计和实现。使用的变量有:

UDP接收数据报的源端口{udpRxSRCPortMSB,udpRxSrcPortLSB};

UDP接收数据报的目的端口{udpRxDestPortMSB,udpRxDestPortLSB};

UDP接收数据报的长度{udpRxDataLenMSB,udpRxDataLenLSB};

UDP发送数据报的源端口{udpTxSrcPortMSB,udpTxSrcPortLSB};

UDP发送数据报的目的端口{udpTxDestPortMSB,udpTxDestPortLSB};

UDP发送数据报的长度{udpTxDataLenMSB,udpTxDataLenLSB}。

设计的相关函数有:UDPAppInit(),DPGenCheckSum(),UDPStartPktOut(),UDPProcPktIn(),UDPEndPktOut(),UDPAppProcPktIn(),UDPAppProcPktOut()等。

2.5 SX52 TCP协议的设计与实现

传输控制协议TCP(Transmission Control Protocol)是传输层的重要协议。它提供一个完全可靠的(没有数据重复或丢失)、面向连接的、全双工的流传输服务。本设计中,对复杂的TCP协议做了合理的简化:①因为CAN网络传输速度较快,数据量小且10Mbps的以太网传输一般不会发生阻塞,以太网上的主机也会有足够的能力及时处理通信数据,所以可以固定超时与重传的时间为5s。②RTL8019AS上有两个1500字节的接收缓冲区,且CAN网络为控制网,信息量小,所以可以固定接收窗口为1400字节。③因为我们采用一般的TCP服务就可以满足应用,所以可以忽略紧急指针和选项及填充字段的值。通过上述三点简化,实际上大大简化了TCP协议的实现。因为TCP的超时与重传时间的确定和窗口大小的控制有着较复杂的算法和实现机制。

它的实现变量有:tcpState,{tcpTmpSeq4,tcpTmpSeq3,tcpTmpSeq2,tcpTmpSeq1},{tcpTmpAck4,tcpTmpAck3,tcpTmpAck2,tcpTmpAck1},{tcpUnAckMSB,tcpUnAckLSB},tcpRxFlags,{tcpCheckSumMSB,tcpCheckSumLSB},{tcpLengthMSB,tcpLengthLSB},{tcpTmpMSB,TcpTmpLSB},{tcbLOCalPortMSB,tcbLocalPortLSB},{tcbRemotePortMSB,tcbRemotePortLSB},{tcbSndUna4,tcbSndUna3,tcbSndUna2,tcbSndUnal},{tcbRcvNxt4,tcbRcvNxt3,tcbRcvNxt2,tcbRcvNxt1},tcbOffset,tcbFlags,{tcbSendWinMSB,tcbSendWinLSB},{tcpTimerMSB,tcpTimerLSB}等。

相关函数有:TCPIPInit(),TCPRxHeader(),TCPProcPktIn(),TCPTransmit(),TCPReTransmit(),TCPAppPassiveOpen(),TCPAppActiveOpen(),CPAppClose(),TCPAddRcvNxt(),TCPIncRcvNxt(),TCPIncSndUna(),TCPCopySeqToNxt(),TCPACkUpdate(),TCPUpdateSeq(),TCPChkSeq(),TCPRestorePrev(),TCPCMpNxtSeq(),TCPSendEmptyPkt(),TCPSendReset(),TCPSendSyn(),TCPSendISN(),TCPSendSynAck()TCPSenDACk(),TCPSendFin(),TCPCheckSuminit(),CPCheckSumACC(),TCPCheckSumAddHdr(),CPTxByte(),TCPStartPktOut(),TCPAppInit(),TCPAppTxBytes(),TCPAppTxData(),TCPAppTxDone(),TCPAppRxBytes(),TCPAppRxData(),等。

2.6 TCP和IP传输层协议的选择

把TCP/IP协议应用到控制网络中如何选择传输层协议类型很关键。如果要与现有的应用程序通信,必须使用与其相同的协议类型。在实际应用时,从可靠性来说,TCP提供了可靠的数据连接,UDP和直接访问IP的一些协议是不可靠的,数据报可能会丢失、损坏或重复;从性能上讲,UDP的性能最快,可靠性、流量控制重组包和连接维护等附加开销降低了TCP的性能。对于速度比较慢的系统来说,如温度、湿度传感器,选择TCP或UDP都无所谓,对于不太重要的传感器选用UDP就可以了;对于可靠性要求较高的传感器,应该选用TCP协议;对于实时性要求高的网络设备,如网络会议系统、IP音响、实时播放的电视等设备,数据传输率较高,应该选用UDP协议;有些有严格要求的同步系统应采用UDP;数据监控系统传输的可靠性要求较高,应采用TCP;Web和Email也应采用了TCP。总之,要根据实际情况来确定选用何种协议。

结语

针对本嵌入式异构网络互连方案,对TCP/IP协议栈简化设计为SX52型CAN总线与以太网互连方案,达到了测控通信系统高实时性、可靠性和嵌入式设计的要求。该互连方案很好地保证及管理监控层和生产测控层之间的连接,方便了上下层信息交换,能满足工厂、变电站等工业场合的应用要求。



上一页  [1] [2] 


本文关键字:嵌入式  网络  IP协议  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术