国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

提高51單片機TCP通信效率的軟件方法

2011-09-25 03:24:48梅小華
關鍵詞:數(shù)據(jù)量分包上位

梅小華

(華僑大學信息科學與工程學院,福建泉州 362021)

提高51單片機TCP通信效率的軟件方法

梅小華

(華僑大學信息科學與工程學院,福建泉州 362021)

以80C51單片機數(shù)據(jù)采集系統(tǒng)為研究對象,分析嵌入式傳輸控制協(xié)議(TCP)通信中速率較慢的可能原因.提出兩點提高其傳輸效率的新方案,即修改上位機Nagle算法的延時確認時間,以及修改下位機TCP協(xié)議程序.實驗結果表明:在相同的數(shù)據(jù)量(4 MB)下,經過修改的嵌入式TCP層通信速率在局域網(wǎng)中可以達到40~50 kB·s-1,是未修改前的10倍.

80C51單片機;TCP/IP協(xié)議簇;Nagle算法;延時確認;TCP包

1 嵌入式TCP/IP通信系統(tǒng)

目前,工業(yè)控制領域典型的80C51嵌入式 TCP/IP通信系統(tǒng),主要有兩種硬件方案[1-4].(1)采用80C51+網(wǎng)卡芯片,在單片機中實現(xiàn)TCP/IP協(xié)議并接入Internet;(2)采用固化TCP/IP協(xié)議的硬件芯片自動解析協(xié)議,實現(xiàn)Internet接入.后者程序已固化在硬件中,一般難以通過軟件方法提高通信速率.因此,主要分析提高前一種方案的通信速率,其接口電路如圖1所示.

圖1 RTL8019AS與51單片機的接口電路Fig.1 Interface circuit for RTL8019AS and 51 single-chip

由于單片機中斷資源有限,嵌入式系統(tǒng)與以太網(wǎng)通信主要采用的是軟件查詢方式,而不是中斷響應方式.從以太網(wǎng)上傳來的數(shù)據(jù)會先存至芯片上16 kB的數(shù)據(jù)緩存區(qū).當單片機空閑時,通過對8019芯片標志寄存器的查詢,來確認是否有數(shù)據(jù)到來,并進行接收.

嵌入式 TCP/IP協(xié)議的實現(xiàn)方法尚無統(tǒng)一標準,往往是設計人員根據(jù)具體工程的實際需要,結合TCP/IP規(guī)范進行裁減的.目前,雖然針對80C51單片機的開源嵌入式 TCP/IP代碼的實現(xiàn)方式有多種多樣,但大致遵循TCP/IP層次(鏈路層、網(wǎng)絡層、傳輸層、應用層)進行開發(fā).TCP協(xié)議是 TCP/IP協(xié)議簇的核心,是最復雜的協(xié)議,其獨特的自動檢錯和重發(fā)機制,實現(xiàn)了數(shù)據(jù)的可靠通信.但是,嵌入式系統(tǒng)對TCP協(xié)議進行較大裁減,若設計不當,會嚴重影響通信速率.

2 影響通信速率的因素

以80C51單片機數(shù)據(jù)采集系統(tǒng)(圖2)為例進行分析.圖2中:上位機為裝有Window s操作系統(tǒng)的PC機,下位機為單片機.由于51單片機處理速度和內存資源的局限,目前大部分開源TCP通信的處理流程,如圖3所示.圖3中發(fā)送數(shù)據(jù)的部分表示發(fā)送一次 TCP數(shù)據(jù)包.由于嵌入式IP協(xié)議沒有分組功能,為了符合網(wǎng)絡M TU的限制,在設計中最好在嵌入式TCP層進行分包處理.即在TCP層將所要發(fā)送的數(shù)據(jù)按網(wǎng)絡M TU進行分包,然后交給IP層直接發(fā)送,如此循環(huán)往復.這種簡單的TCP通信方式在低速小數(shù)據(jù)包中的應用是足夠的,然而,一旦采集速度變高,數(shù)據(jù)量增大,就無法滿足應用要求.

造成上述通信速率低下的原因是:上位機不是收到數(shù)據(jù)就直接發(fā)送確認,而是繼續(xù)等待下一個數(shù)據(jù)包.而出現(xiàn)這種延時確認的情況,是為了解決Internet上出現(xiàn)所謂的“糊涂窗口綜合癥”問題.RFC(Request for Comments)申明,TCP發(fā)送端必須實現(xiàn)Nagle算法,并推薦TCP接收端使用延時確認算法.

Nagle算法要求 TCP連接上最多只能有一個未被確認的分包,在該分包的確認到達之前不能發(fā)送其他的小分包;而接收端延時確認算法,允許接收端接收到一個數(shù)據(jù)包后不立即進行確認,而是經過一段延時(一般為200 m s)后再發(fā)送該數(shù)據(jù)包的確認包.因此,在嵌入式 TCP/ IP通信系統(tǒng)中會經常觸發(fā)上位機延時確認算法,而下位機在沒收到確認之前是不能發(fā)送數(shù)據(jù)的.這對高速交互的采樣系統(tǒng)而言,將產生明顯的時延,降低TCP通信效率.

一個以太網(wǎng)數(shù)據(jù)包最大字節(jié)數(shù)是1.5 kB,扣除各個包頭信息所占的字節(jié)數(shù),真正有效的數(shù)據(jù)在1 kB左右.如果發(fā)送端每次都等接收端發(fā)出確認后再發(fā)送下一個數(shù)據(jù)包,那么在1 s內,發(fā)送端的發(fā)送次數(shù)為5次,總的發(fā)送數(shù)據(jù)量為5 kB.

圖2 單片機數(shù)據(jù)采集系統(tǒng)Fig.2 Single chip data acquisition system

圖3 嵌入式 TCP通信流程Fig.3 Communication procedure based on embedded TCP

3 提高TCP通信速率的方法

采用以下兩種方案,可以消除或減小延時確認的時間,達到提高嵌入式TCP/IP通信速率的目的.

(1)修改上位機Nagle算法的延時確認時間[5].這種方案雖然可以直接關閉 TCP的Nagle算法,不再受到未確認TCP包數(shù)量的限制,但對于數(shù)據(jù)包較小的情況會產生大量的分組,浪費大量的系統(tǒng)和網(wǎng)絡資源,產生“糊涂窗口綜合癥”.

在實際應用中,修改上位機的Nagle算法延時時間比關閉算法更可行.即通過修改Window s操作系統(tǒng)在注冊表表項TCPDelAck Ticks的值(H KLMSYSTEMCurrentControlSetServicesTcpipParametersInterface)來調整.通過修改延時確認的時間,可以減小發(fā)送端的確認等待時間,快速地發(fā)送數(shù)據(jù).但是,要在快速發(fā)送和誤碼率之間求得一個合適的時間值,一般要根據(jù)系統(tǒng)的情況實際調整測試后才能決定.

(2)修改下位機TCP協(xié)議程序.雖然通過修改Nagle算法的設置來提高單片機通信速率的方法較為簡單,但實際應用中卻有諸多不便.例如,當 TCP通信端口采用公用服務如 H TTP的80端口時,修改該端口的延時確認時間必然影響正常的H TTP服務,而且對于每臺上位都要手動進行修改,比較麻煩.所以對于大數(shù)據(jù)量的 TCP傳輸,直接修改單片機TCP層的代碼更合理.

在實際操作中,可以采用類似滑動窗口的算法改變 TCP發(fā)送流程來提高速率.滑動窗口控制機制在上位機的TCP/IP協(xié)議中是很普遍的,但在下位機,為了簡化設計往往忽略了該功能.采用類似滑動窗口的機制,只要設計得當,將強迫上位機發(fā)送確認消息.

具體算法有如下4個發(fā)送步驟.

(1)將應用層要發(fā)送的數(shù)據(jù)按以太網(wǎng)M TU劃分為1 kB的大小分包.

(2)由于每個分包有1 kB,因此,將TCP層發(fā)送窗口大小設計為2 kB的倍數(shù),如圖4所示.考慮到實際中上位機TCP緩存窗口都不大,Window s操作系統(tǒng)一般只有幾千到幾萬字節(jié),所以將窗口直接設計為2 kB大小.

(3)連續(xù)發(fā)送兩個分包后,發(fā)送窗口變?yōu)榱?發(fā)送端就停止發(fā)送,等待確認.

(4)接到確認后,窗口設置為2,并重新開始步驟(2).

上述發(fā)送步驟似乎與圖3并無太大不同,但由于連續(xù)發(fā)送了兩個 TCP數(shù)據(jù)包,根據(jù)Nagle算法,TCP連接上只能有一個未確認的數(shù)據(jù)包.上位機在接收到兩個數(shù)據(jù)包后,已經超過算法規(guī)定的未確認包數(shù),因而要立刻發(fā)送針對這兩個數(shù)據(jù)包的確認消息.這里需要注意的是:嵌入式TCP/IP的分包是在TCP層進行而不是在IP層進行,所以發(fā)送的兩個TCP包到達上位機后不會在IP層被重組為一個包,上位機的TCP層才會馬上進行確認.

在數(shù)據(jù)量較大的情況下,采用這樣的方式來提高 TCP通信速率,既不用修改上位機的 TCP協(xié)議程序,又具有了部分滑動窗口控制的優(yōu)點,使得數(shù)據(jù)流可靠地傳輸.經實驗,在相同的數(shù)據(jù)量(4 MB)下,經過修改的嵌入式 TCP層通信速率在局域網(wǎng)中,可達到40~50 kB· s-1,是未修改前的10倍.

圖4 TCP層窗口控制發(fā)送流程Fig.4 TCP congestion window controls send process

4 結束語

采用嵌入式TCP/IP技術的儀器具有組網(wǎng)靈活、成本低和通信距離遠等優(yōu)點.在需要高速傳送大量數(shù)據(jù)的嵌入式系統(tǒng)中,上述兩種方案可較好地滿足嵌入式 TCP通信中速率較慢的問題.在此基礎上,可實現(xiàn)以文件為單位如 HTTP,FTP等的傳輸服務,工作參數(shù)均達到項目要求,具有較好的實用性.

[1]BEHROUZ A F,SOPH IA C F.TCP/IP協(xié)議族[J].3版.謝希仁,譯.北京:清華大學出版社,2001.

[2]李金梁,景博.嵌入式Internet中 TCP協(xié)議的設計與實現(xiàn)[J].微計算機信息,2005,21(7):40-41.

[3]金小明,李英姿,錢建強,等.8位機嵌入式 TCP通信速度的研究[J].電子測量技術,2007,30(7):67-70.

[4]李超,何先波,王安志,等.基于嵌入式 TCP/IP協(xié)議棧的擁塞控制研究[J].電腦知識與技術,2008,4(4):860-862.

[5]周志洪,王勇,陳抗生.基于Nagle算法的嵌入式 TCP協(xié)議[J].浙江大學學報:工學版,2006,40(1):41-44.

(責任編輯:陳志賢英文審校:吳逢鐵)

A Software Method Improves the Transmission Efficiency with TCP Protocol for 51 Single Chip Microcomputer

MEI Xiao-hua
(College of Information Science and Engineering,Huaqiao University,Quanzhou 362021,China)

Taking the 80C51 single-chip data acquisition system as study object,this paper analyzes the possible reasons for slower speed,finally designs two solutions for imp roving the transmission efficiency of embedded transmission control protocol(TCP)communication.That is,modifying the host computer confirm time delay of Nagle algorithm or modifying the TCP protocol procedure for the lower computer.The experimental results indicate that the revised speed of embedded TCP layer communication in the LAN can reach 40~50 kB·s-1,which is 10 times faster than the pre-amendment one at the same amount of data.

80C51 single-chip;TCP/IP protocol suite;nagle algorithm;delayed acknowledgment;TCP packet

TP 273+.5

A

1000-5013(2011)02-0235-03

2010-03-16

梅小華(1978-),女,講師,主要從事計算機控制方面的研究.E-mail:meixh@hqu.edu.cn.

猜你喜歡
數(shù)據(jù)量分包上位
建筑工程施工中對工程分包的管理
基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
計算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
高刷新率不容易顯示器需求與接口標準帶寬
寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設計與研究
電子制作(2019年13期)2020-01-14 03:15:18
特斯拉 風云之老阿姨上位
車迷(2018年12期)2018-07-26 00:42:22
如何加強施工分包安全管理
江西建材(2018年4期)2018-04-10 12:37:46
“三扶”齊上位 決戰(zhàn)必打贏
基于ZigBee和VC上位機的教室智能監(jiān)測管理系統(tǒng)
建筑業(yè)勞務分包制研究:現(xiàn)狀及其展望
北京市| 彭泽县| 马关县| 金阳县| 双流县| 井冈山市| 公主岭市| 石林| 界首市| 浦北县| 民丰县| 襄汾县| 遂昌县| 郸城县| 芷江| 贺兰县| 曲松县| 平利县| 久治县| 庄浪县| 海淀区| 策勒县| 陇南市| 安陆市| 桐城市| 鄯善县| 漳浦县| 镇原县| 新余市| 广西| 项城市| 陵川县| 邵东县| 麦盖提县| 榕江县| 永和县| 海南省| 泽库县| 高雄县| 比如县| 静宁县|