提高51单片机TCP通信效率的软件方法

发布者:科技火箭最新更新时间:2015-01-23 来源: e-works关键字:80C51  单片机  协议簇  Nagle算法 手机看文章 扫描二维码
随时随地手机看文章

1 嵌入式TCP/IP通信系统

    目前,工业控制领域典型的80C51嵌入式TCP/IP通信系统,主要有两种硬件方案,(1)采用80C51+网卡芯片,在单片机中实现TCP/IP协议并接入Internet;(2)采用固化TCP/IP协议的硬件芯片自动解析协议,实现Internet接入,后者程序已固化在硬件中,一般难以通过软件方法提高通信速率,因此,主要分析提高前一种方案的通信速率,其接口电路如图1所示。

   点击放大图片

    图1 RTL8019AS与51单片机的接口电路

    由于单片机中断资源有限,嵌人式系统与以太网通信主要采用的是软件查询方式,而不是中断响应方式,从以太网上传来的数据会先存至芯片上16 kB的数据缓存区,当单片机空闲时,通过对8019芯片标志寄存器的查询,来确认是否有数据到来,并进行接收。

    嵌入式TCP/IP协议的实现方法尚无统一标准,往往是设计人员根据具体工程的实际需要,结合TCP/IP规范进行裁减的,目前,虽然针对80C51单片机的开源嵌入式TCP/IP代码的实现方式有多种多样,但大致遵循TCP/IP层次(链路层、网络层、传输层、应用层)进行开发,TCP协议是TCP/IP协议簇的核心,是最复杂的协议,其独特的自动检错和重发机制,实现了数据的可靠通信,但是,嵌入式系统对TCP协议进行较大裁减,若设计不当,会严重影响通信速率。

2 影响通信速率的因素

    以80C51单片机数据采集系统(图2)为例进行分析,图2中:上位机为装有Windows操作系统的PC机,下位机为单片机,由于51单片机处理速度和内存资源的局限,目前大部分开源TCP通信的处理流程,如图3所示,图3中发送数据的部分表示发送一次TCP数据包。由于嵌入式IP协议没有分组功能,为了符合网络MTU的限制,在设计中最好在嵌入式TCP层进行分包处理,即在TCP层将所要发送的数据按网络MTU进行分包,然后交给IP层直接发送,如此循环往复,这种简单的TCP通信方式在低速小数据包中的应用是足够的,然而,一旦采集速度变高,数据量增大,就无法满足应用要求。

   点击放大图片

    图2 单片机数据采集系统

    造成上述通信速率低下的原因是:上位机不是收到数据就直接发送确认,而是继续等待下一个数据包,而出现这种延时确认的情况,是为了解决Internet上出现所谓的“糊涂窗口综合症”问题,RFC(Request for Comments)申明,TCP发送端必须实现Nagle算法,并推荐TCP接收端使用延时确认算法。

    Nagle算法要求TCP连接上最多只能有一个未被确认的分包,在该分包的确认到达之前不能发送其他的小分包;而接收端延时确认算法,允许接收端接收到一个数据包后不立即进行确认,而是经过一段延时(一般为200 ms)后再发送该数据包的确认包,因此,在嵌入式TCP/IP通信系统中会经常触发上位机延时确认算法,而下位机在没收到确认之前是不能发送数据的,这对高速交互的采样系统而言,将产生明显的时延,降低TCP通信效率。[page]

    一个以太网数据包最大字节数是1.5 kB,扣除各个包头信息所占的字节数,真正有效的数据在1 kB左右,如果发送端每次都等接收端发出确认后再发送下一个数据包,那么在1 S内,发送端的发送次数为5次,总的发送数据量为5 kB。

   点击放大图片

    图3 嵌入式TCP通信流程


 

3 提高TCP通信速率的方法

    采用以下两种方案,可以消除或减小延时确认的时间,达到提高嵌入式TCP/IP通信速率的目的。

    (1)修改上位机Nagle算法的延时确认时间,这种方案虽然可以直接关闭TCP的Nagle算法,不再受到未确认TCP包数量的限制,但对于数据包较小的情况会产生大量的分组,浪费大量的系统和网络资源,产生“糊涂窗口综合症”。

    在实际应用中,修改上位机的Nagle算法延时时间比关闭算法更可行,即通过修改Windows操作系统在注册表表项TCPDelAckTicks的值(HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interface\)来调整,通过修改延时确认的时间,可以减小发送端的确认等待时间,快速地发送数据。但是,要在快速发送和误码率之间求得一个合适的时间值,一般要根据系统的情况实际调整测试后才能决定。

    (2)修改下位机TCP协议程序,虽然通过修改Nagle算法的设置来提高单片机通信速率的方法较为简单,但实际应用中却有诸多不便,例如,当TCP通信端口采用公用服务如HTTP的80端口时,修改该端口的延时确认时间必然影响正常的HTTP服务,而且对于每台上位都要手动进行修改,比较麻烦,所以对于大数据量的TCP传输,直接修改单片机TCP层的代码更合理。

    在实际操作中,可以采用类似滑动窗口的算法改变TCP发送流程来提高速率,滑动窗口控制机制在上位机的TCP/IP协议中是很普遍的,但在下位机,为了简化设计往往忽略了该功能,采用类似滑动窗口的机制,只要设计得当,将强迫上位机发送确认消息。

    具体算法有如下4个发送步骤。

    (1)将应用层要发送的数据按以太网MTU划分为1 kB的大小分包。

    (2)由于每个分包有1 kB,因此,将TCP层发送窗口大小设计为2 kB的倍数,如图4所示,考虑到实际中上位机TCP缓存窗口都不大,Windows操作系统一般只有几千到几万字节,所以将窗口直接设计为2 kB大小。

    (3)连续发送两个分包后,发送窗口变为零,发送端就停止发送,等待确认。

    (4)接到确认后,窗口设置为2,并重新开始步骤(2)。

    上述发送步骤似乎与图3并无太大不同,但由于连续发送了两个TCP数据包,根据Nagle算法,TCP连接上只能有一个未确认的数据包,上位机在接收到两个数据包后,已经超过算法规定的未确认包数,因而要立刻发送针对这两个数据包的确认消息,这里需要注意的是:嵌入式TCP/IP的分包是在TCP层进行而不是在IP层进行,所以发送的两个TCP包到达上位机后不会在IP层被重组为一个包,上位机的TCP层才会马上进行确认。

   点击放大图片

    图4 TCP层窗口控制发送流程

    在数据量较大的情况下,采用这样的方式来提高TCP通信速率,既不用修改上位机的TCP协议程序,又具有了部分滑动窗口控制的优点,使得数据流可靠地传输,经实验,在相同的数据量(4 MB)下,经过修改的嵌入式TCP层通信速率在局域网中,可达到40~50 kB·S-1,是未修改前的10倍。

4 结束语

    采用嵌入式TCP/IP技术的仪器具有组网灵活、成本低和通信距离远等优点,在需要高速传送大量数据的嵌入式系统中,上述两种方案可较好地满足嵌入式TCP通信中速率较慢的问题,在此基础上,可实现以文件为单位如HTTP,FTP等的传输服务,工作参数均达到项目要求,具有较好的实用性。

关键字:80C51  单片机  协议簇  Nagle算法 引用地址:提高51单片机TCP通信效率的软件方法

上一篇:8255单独控制步进电机
下一篇:简易信号发生器源程序

推荐阅读最新更新时间:2024-03-16 13:52

单片机MCU)电压输出选择
实际使用中大量的输入信号或者是输出信号是必不可少的,但是单片机却没有这么多引脚。利用移位寄存器就能解决这个问题,很多制造厂商的移位寄存器均可供选择。这些寄存器由源电流和灌电流驱动组成,可驱动60V的电压,是多达32路输出的串行输入驱动器。即使这样,在某些情况下,输出电流并不高。这些对驱动继电器、LED甚至是PLC的输入尤其重要。板子的线路密度因为串行连接降低,从而光电隔离很容易。 关注原装IC网官方微信(微信号:yzic998)免费得样品! 在我看来,还有以下选择: 1.像TPIC6A259这样的TI电源逻辑类的8位可寻址锁存器可供选择; 2.ST公司的STP16CP05 16位LED驱动有可调限流功能,但是只有15V的输
[单片机]
AVR单片机制被动式红外线报警器实验
该报警器由红外线发射、接收、蜂鸣器和LED指示灯组成。正常情况下,绿色的LED常烁,表示监控区域正常。一旦监控区域有人闯入,绿色LED熄灭,红色的LED快速闪烁,同时蜂鸣器立即报警。 实验器材 需要准备的器材:Atmega8、红色LED一只、绿色LED一只、万能实验板一块、5V电源、电阻、TTL0038或者其他类似38KHZ的红外接收头、5V长鸣型蜂鸣器。 线路图: 实验电路图及工作原理 该电路工作原理非常简单,Atmega8的PD0端口输出经过调制的38KHZ的方波信号,然后经Q2驱动红外线发射管LED0发出红外线信号。TL0038是集红外线信号接收放大为一体的接收器。其中心接收频率为38KZH,输出为TTL电平,平时输
[单片机]
AVR<font color='red'>单片机</font>制被动式红外线报警器实验
通过红外接口实现单片机之间的通信
  红外线是波长在750nm~lmm的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.75μm~25μm,目前无线电波和微波已被广泛地应用在长距离的无线通信之中。但由于红外线的波长较短,对障碍物的衍射能力差,所以更适合应用在需要短距离无线通信的场合,进行点对点的直线数据传输,从应用领域来看,红外通信主要应用于遥控和数据通信这两方面。红外通信口一般数据传输速率可达2400bit/s~115.2kbit/s,有些甚至可达4Mbit/s。      本设计实现单片机之间通过红外接口进行通信。通信双方约定发送方为甲机,接收方为乙机。甲机向乙机发送一组数据,如果乙机接收到的数
[单片机]
通过红外接口实现<font color='red'>单片机</font>之间的通信
使用可定制微控制器高效开发系统级芯片 (SoC)
作者:爱特梅尔公司 (Atmel) 微控制器部传讯经理Peter Bishop 为了应对成本、尺寸、功耗和开发时间的压力,许多电子产品都建构于系统级芯片 (SoC)之上。这个单片集成电路集成了大多数的系统功能。然而,随着这些器件越来越复杂,要在有限的时间里经济地进行产品开发以满足产品上市时间的压力已变得越来越困难。SoC集成了一些可编程部件 (特别是微控制器),使得其软件开发与硬件开发同样的昂贵和耗时。 使用基于业界标准、带有片上存储器和各种标准接口的ARMò处理器,再加上面向特定应用逻辑和非标接口的金属可编程模块 (MP模块),构成的可定制微控制器是切实可行的SoC开发方法,能够解决上述问题: -采用经过验证的软/硬件模块、
[单片机]
基于AVR单片机的控制系统设计
引言 现在许多的系统都采用了多通道Input/Output的设计,控制系统的设计也日趋复杂、庞大,所以有必要将控制电路单独分离出来。过去许多系统均采用C51系列单片机作为控制电路,但其功能有限,电路设计较为复杂、影响了系统的稳定性,也不易扩展。本文介绍的AVR单片机由美国ATMEL公司生产,采用RISC指令集,内置RAM及可以擦写数千次的FLASH,采用哈佛结构,速度较快。ATmega128为此系列中功能最强大的一款,用于设计控制系统能适应现时复杂系统的要求。 AVR单片机介绍 ATMEL公司是世界上著名的高性能低功耗非易失性存储器和数字集成电路的一流半导体制造公司。AVR单片机由ATMEL公司开发,是过去12年里第一个新发
[单片机]
基于AVR<font color='red'>单片机</font>的控制系统设计
51单片机条件转移指令
条件转移指令是指在满足一定条件时进行相对转移。 判A内容是否为0转移指令 JZ rel JNZ rel 第一指令的功能是:如果(A)=0,则转移,否则顺序执行(执行本指令的下一条指令)。转移到什么地方去呢?如果按照传统的方法,就要算偏移量,很麻烦,好在现在我们可以借助于机器汇编了。因此这第指令我们可以这样理解:JZ 标号。即转移到标号处。下面举一例说明: MOV A,R0 JZ L1 MOV R1,#00H AJMP L2 L1: MOV R1,#0FFH L2: SJMP L2 END 在执行上面这段程序前如果R0中的值是0的话,就转移到L1执行,因此最终的执行结果是R1中的值为0FFH。而如果R0中的值
[单片机]
51<font color='red'>单片机</font>条件转移指令
51单片机普通IO口模拟IIC总线的程序实现
IIC是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA)。 IIC是总线结构,1个Master,1个或多个Slave,各Slave设备以7位地址区分,地址后面再跟1位读写位,表示读(=1)或者写(=0),所以我们有时也可看到8位形式的设备地址,此时每个设备有读、写两个地址,高7位地址其实是相同的。 IIC数据格式如下: 无数据:SCL=1,SDA=1; 开始位(Start):当SCL=1时,SDA由1向0跳变; 停止位(Stop):当SCL=1时,SDA由0向1跳变; 数据位:当SCL由0向1跳变时,由发送方控制SDA,此时SDA为有效数据,不
[单片机]
Freescale 16位单片机命名参考规则
MC 9 S12 Dх 256 B х хх E (1) (2) (3) (4) (5) (6) (7) (8) (9) (1) 表示产品状态,共有MX,XC,PC,KMC,KXC等5种。其中MC表示完全合格品;XC表示部分合格品,没有质量保证,用于性能评估的器件;PC表示工程测试品;KMC,KXC则表示样品封装。此外还可以是单个字母M,它表示一个系列,而非某个具体型号,例如M68HC23A4EVB. (2) 内存类型,9表示Flash。型号名称含 68HC 等的系列中,此部分在 68HC 的后面,8表示EEPROM,7表示
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved