《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 一種高效的串行通信協議的制定及實現
一種高效的串行通信協議的制定及實現
宋兵躍1,2,吳軍輝1,2,楊學軍1,黃 斌1,2
1.同濟大學 現代農業科學與工程研究院,上海 200092;2.教育部設施農業網上合作中心,上海 2
摘要: 探討了一種基于串行通信的簡單、高效的通信協議制定方法。實驗結果證明,該協議有效提高了串行通信的通信效率。
Abstract:
Key words :

摘  要: 探討了一種基于串行通信的簡單、高效的通信協議制定方法。實驗結果證明,該協議有效提高了串行通信通信效率
關鍵詞: 串行通信;通信效率;高效

1 串行通信介紹
    串行通信是將數據分成若干二進制位(bit),然后通過一條線路或一個通信信道,按照規定的規程逐位依次進行傳輸,實現計算機與計算機或計算機與外部設備之間的通信(數據交換)。串行通信具有占用硬件資源少、可大幅度降低通信線路成本、簡化通信設備、應用靈活、易維護等諸多優點,在工業控制、電力通信、智能儀表等領域得到了廣泛應用[1]。
    EIA-RS232、EIA-RS485、電流環、CAN等串行通信方式是通信領域中應用廣泛的串行接口。EIA-RS232是全雙工的通信模式,可保證短距離點對點的高速傳輸,EIA-RS485實現了較長距離下的多點互聯通信。CAN屬于現場總線的范疇,采用了多主機制,改善了在集散控制系統下的主從通信模式[2]。隨著應用需求的復雜化,對串行通信的性能、通信效率的提升需求越來越明顯。如何制定一套切實可行、簡單易用,又能大幅度提高串行通信效率的通信協議;如何在PC端、嵌入式系統端構建一個高效的串行數據處理的應用程序,是串行通信協議中等待解決的問題。本文將以加油站信息管理系統為例,介紹串行通信協議的制定以及高效通信數據處理的實現。
2 串行通信協議的設計
2.1 系統總體結構

    加油站信息管理系統的結構如圖1所示,每臺加油機為一個應用節點(即圖1中的控制點),通過半雙工RS-485總線連接至通信控制器,在RS-485網絡中,通信控制器為主機(Master),各加油機為從機(Slave),構成一個主從通信的網絡架構。在多種串行接口標準中,RS-485接口結構簡單、通信速率高、傳輸距離遠、使用傳輸線較少,長距離通信較經濟,在集散式控制裝置中得到了廣泛應用。RS-485采用差分電平傳輸,只需2根信號線,即可以方便地增加控制節點數目[3]。


    通信控制器通過全雙工RS-232總線與管理PC進行數據交互,管理PC和通信控制器層面的數據交互,保證了實時性和高效性,采用互為主機的通信方式,以此構成集散控制系統[4]。
2.2 通信協議格式的定義
2.2.1 協議幀格式

    (1)主機(Master)下發數據幀格式
    起始標志數據(5AH+A5H)+長度(從命令字開始到校驗和為止的字節數)+命令字HIGH+命令字LOW+機號+參數+一個字節校驗和(從命令字開始到校驗碼前一個字節的邏輯“異或”和)。
    (2)從機(Slave)上傳數據幀格式
    起始標志數據(9BH+B9H)+長度(從命令字開始到校驗和為止的字節數)+命令字HIGH+命令字LOW+機號+參數+一個字節校驗和(從命令字開始到校驗碼前一個字節的邏輯“異或”和)[5-6]。
2.2.2 協議幀解釋
    起始標志數據:采用1個字節或多字節作為幀起始標志,該部分的字節定義應盡量與幀數據的其他部分完全不一樣。接收方在接收數據時總是先尋找幀頭。幀頭的排他性將有利于提高各通信節點的接收效率。
    長度:應盡量采用短幀,以避免各種干擾因素對通信效率的影響。可根據實際應用情況,在“長度”后增加“長度反碼”或“長度補碼”等校驗數據對長度進行更為嚴格的校驗。
    命令字:根據實際通信應用需求,可應用1~2字節的通信命令字。
    機號:該幀所需接收方的地址識別號,可根據實際應用需求對其進行修改,如增加源地址、目的地址等。
    參數:該幀的應用數據,針對不同的應用,考慮到數據的安全性,可對該部分的數據進行加密處理。
    校驗和:該幀的數據校驗,可根據應用需求選擇不同的校驗方式。
3 高效串行通信方式的實現
3.1 PC端軟件發送數據的處理機制

    PC端的軟件首先判斷最高優先級的命令字是否需要發送,如果需要,則進入該命令字的發送流程;如果沒有,接著判斷次高級優先級的命令字是否需要發送,如果需要,則進入發送流程。根據命令字的優先級由高到低的順序依次判斷要發送的命令字,當沒有通信數據命令字發送時,PC端軟件將發送輪詢命令字。此外,在發送完一幀數據后,PC端軟件會開啟接收超時定時器T,如果PC端軟件在超時時間內收到應答命令數據幀則進入相應數據處理流程,同時關閉接收超時定時器T;如果系統定時時間內未收到應答命令數據幀,則重新發送該命令字的幀數據,并記錄發送該命令字的次數,當發送命令字的幀超過10次未收到相應應答命令,即視為該命令字和控制點的通信失敗,將通信流程重新調整到輪詢命令字狀態下。
3.2 PC端軟件接收數據的處理機制
    在PC軟件端的接收程序部分,按字節來處理接收到的每幀數據,而不是按幀來處理。為此,應用程序將串口的接收中斷的響應字節閾值設為1,即當接收緩沖區有多于1個數據便進入接收數據處理流程。
    當開始接收一幀數據時,首先找到幀頭,其次應根據接收數據緩沖區中的有效數據長度和幀長度的關系來分類處理。因為Windows對串口的封裝(開發平臺為VC++6.0),使得應用程序無法來設定軟件,根據接收數據緩沖區的數據閾值來響應串行中斷。所以在通信過程中當PC產生串行中斷時,應根據串行中斷當前數據接收緩沖區的有效數據長度來做分類處理[7]。
    首先,把接收緩沖區ReceBuffer[M]的數據取出來,放到待處理緩沖區DealBuffer[M]中(為了防止該幀數據還沒有處理完畢,未處理的數據會被新來的數據覆蓋掉,造成系統的數據丟失)。其次,要確定接收數據的幀頭,方法就是逐字節查找,一般幀頭在接收緩沖區中出現的位置有3種情況,如圖2所示,每一個方格代表一個字節。
    如果幀頭就是接收緩沖區的前兩個字節(如圖2(a)所示),則按照通信協議依次處理剩下的接收緩沖區的有效數據。用全局變量表示接收緩沖區處理步驟S,正確接收到2個幀頭后P賦值為2。

    如果幀頭在接收數據緩沖區的不連續字節內(如圖2(b)所示),應把從第2個幀頭開始的有效數據移到第1個幀頭后,如圖3所示,使得待處理緩沖區的數據形成連續的一幀數據來繼續下一步的處理。

    如果幀頭分散在兩個數據幀中(如圖2(c)所示),即PC響應串行中斷第1次接收到第1個幀頭,第2次響應或者第n次響應串行中斷接收到第2個幀頭。當接收到第1個幀頭后,S賦值為1。當下次響應串行中斷時,判斷S的值,如果是1,表示第1個幀頭已經找到,開始在接收到的幀數據中尋找第2個幀頭;如果找到,S賦值為2,并把從第2個幀頭開始的有效數據移到第1個幀頭后,使待處理緩沖區的數據形成連續的一幀數據來處理。
    判斷命令字是否為協議中規定的合法命令字。如果是,將根據命令字所對應的長度來判斷該幀數據的合法性,因為在制定通信協議時,規定了特定命令字所對應
的數據長度,這兩點約束條件可以保證接收數據的合法性,從而提高了系統的穩定性。如果命令字和其對應的長度值合法則將S賦值為3,進入下一步的數據處理步驟。
    最后,關閉發送定時器,防止處理的過程中有新的接收數據影響處理有效數據的過程。處理完畢,打開發送定時器,根據處理過程中標志位的改變情況繼續與控制點進行相應的數據通信。在處理接收數據的步驟中,如果任何一個步驟出現非法數據,則清空ReceBuffer[M]和DealBuffer[M],認為該幀數據傳輸出錯,丟棄該幀數據,并初始化接收變量,重新設定接收超時定時器,接收下一次通信數據。
    本文通過完整的串行通信協議的設計,在PC軟件發送端始終處于通信狀態,能以很快的速度響應系統協議規定的命令字及其數據的發送。同時,在PC軟件接收端,采用逐字節處理的方式,通過設定全局變量來確定處理接收數據幀的步驟,細化了處理接收數據的過程,保證了數據高效可靠的傳輸。本系統已經應用在上海寶鋼集團加油站信息管理系統中,實驗結果證明,此協議的通信數據準確、通信效率高效可靠、自適應能力強,具有在相關領域推廣的價值和意義。
參考文獻
[1] 胡新華,鄧元勇,王先平.多種通信網絡及接口轉換模塊的研制[J].計算機工程,2009(6):1-3.
[2] 徐勇,賀建民,王景玉.計算機硬件技術基礎[M].北京:北京交通大學出版社,北京:清華大學出版,2004.
[3] 謝瑞和.串行技術大全[M].北京:清華大學出版社, 2003.
[4] 王常力,羅安.分布式控制系統(DCS)設計與應用實例[M].北京:電子工業出版,2005.
[5] 吳濤.PLC與上位機的高速通信實現[J].微計算機信息,2007,12(1):52-54.
[6] REED K D.協議分析[M].孫坦,張學鋒,譯.北京:電子工業出版社,2004.
[7] 李現勇.Visual C++串口通信技術與工程實踐[M].北京:人民郵電出版社,2002.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产亚洲精品久| 亚洲午夜性刺激影院| 国产精品国产a级| 欧美极品欧美精品欧美视频| 久久综合久久美利坚合众国| 久久精品国产精品亚洲精品| 欧美伊人久久大香线蕉综合69| 亚洲自拍偷拍一区| 亚洲欧美另类在线| 亚洲欧美在线aaa| 亚洲欧美日韩精品| 亚洲欧美中文日韩v在线观看| 亚洲欧美日韩在线综合| 亚洲欧美日韩天堂| 欧美一级淫片aaaaaaa视频| 性欧美xxxx视频在线观看| 午夜亚洲影视| 久久精品国产99精品国产亚洲性色| 欧美一级视频精品观看| 久久国产精彩视频| 久久久精彩视频| 蜜臀久久久99精品久久久久久| 麻豆久久婷婷| 欧美jizz19hd性欧美| 欧美紧缚bdsm在线视频| 欧美日韩国产综合视频在线观看中文 | 1024国产精品| 91久久久久| 一本久道久久综合狠狠爱| 中文精品视频一区二区在线观看| 亚洲视频欧美视频| 香蕉久久a毛片| 亚洲国产欧美不卡在线观看| 亚洲精品在线看| 亚洲色无码播放| 欧美在线播放| 榴莲视频成人在线观看| 欧美精品成人| 国产精品亚洲欧美| 国产在线一区二区三区四区 | 亚洲欧美资源在线| 久久国产日韩| 欧美激情欧美激情在线五月| 欧美日韩三级电影在线| 国产伦精品一区二区三区免费 | 亚洲视频axxx| 久久99在线观看| 亚洲靠逼com| 性8sex亚洲区入口| 美女视频黄a大片欧美| 欧美日韩国内| 国产午夜精品全部视频播放| 亚洲国产欧美日韩另类综合| 亚洲午夜精品久久久久久浪潮 | 亚洲欧美在线x视频| 久久人人爽爽爽人久久久| 欧美日韩国产另类不卡| 国产毛片一区| 亚洲精品视频啊美女在线直播| 亚洲专区一二三| 亚洲欧洲精品一区二区三区| 亚洲午夜av电影| 久久蜜桃资源一区二区老牛 | 欧美日韩一卡二卡| 国产日韩在线不卡| 亚洲人成7777| 欧美一区二区三区在线看| 日韩一级黄色av| 久久福利视频导航| 欧美日韩亚洲国产精品| 国产一区激情| 洋洋av久久久久久久一区| 久久精品国语| 亚洲欧美三级伦理| 欧美顶级少妇做爰| 国模精品一区二区三区色天香| 日韩天堂在线观看| 欧美综合77777色婷婷| 久久亚洲一区二区三区四区| 欧美日韩国产区一| 好看的日韩视频| 亚洲一区二区在线视频| 亚洲精品在线观| 久久看片网站| 国产精品一区在线播放| 亚洲精品视频在线观看网站| 欧美在线观看天堂一区二区三区| 亚洲视频观看| 欧美精品99| 狠狠色噜噜狠狠狠狠色吗综合| 在线亚洲电影| 99ri日韩精品视频| 久热re这里精品视频在线6| 国产欧美va欧美va香蕉在| 一本色道久久综合亚洲精品按摩 | 久久aⅴ国产欧美74aaa| 亚洲欧美激情四射在线日 | 亚洲图片自拍偷拍| 欧美激情视频给我| 黄色小说综合网站| 性色一区二区三区| 亚洲欧美另类国产| 欧美日韩一区二区三| 亚洲国产一区二区a毛片| 久久精品一区二区三区中文字幕| 香港久久久电影| 欧美性色aⅴ视频一区日韩精品| 亚洲经典在线| 亚洲精品久久7777| 欧美aⅴ一区二区三区视频| 国产在线视频欧美| 久久爱91午夜羞羞| 久久精品二区三区| 国产一区二区三区高清播放| 午夜精品婷婷| 欧美一区二区视频观看视频| 国产精品每日更新| 亚洲午夜激情在线| 午夜精品亚洲| 国产精品久久久免费| 亚洲午夜精品久久久久久浪潮 | 亚洲亚洲精品在线观看| 99国产精品| 欧美日韩ab片| av不卡在线观看| 亚洲一区免费视频| 欧美视频中文一区二区三区在线观看 | 欧美在线免费观看视频| 久久久精彩视频| 禁断一区二区三区在线| 亚洲黄色成人网| 欧美激情一区二区三区在线视频| 91久久精品美女高潮| 日韩一区二区福利| 欧美天天在线| 亚洲综合成人在线| 久久久久九九视频| 影音先锋日韩有码| 99视频超级精品| 国产精品草草| 性欧美xxxx大乳国产app| 久久久久免费观看| 亚洲国产成人久久综合一区| 宅男噜噜噜66一区二区| 欧美午夜宅男影院| 欧美一区二区三区视频免费| 免费成人激情视频| 日韩一级成人av| 欧美在线地址| 欲香欲色天天天综合和网| 亚洲理论在线| 国产精品v片在线观看不卡| 午夜激情综合网| 麻豆精品一区二区av白丝在线| 91久久线看在观草草青青| 亚洲一区日韩| 国产综合精品| 日韩一区二区精品在线观看| 欧美性大战久久久久久久| 先锋影音一区二区三区| 欧美成人精品1314www| 中文亚洲视频在线| 久久久99国产精品免费| 91久久久久久国产精品| 午夜激情亚洲| 在线观看亚洲视频| 亚洲欧美国产日韩中文字幕| 一区二区三区在线观看欧美| 一区二区三区精品久久久| 国产日韩欧美另类| 99视频一区二区三区| 国产精品三上| 亚洲精品日产精品乱码不卡| 国产精品久久一区二区三区| 亚洲国产激情| 国产精品美女久久久久久免费 | 亚洲精品乱码久久久久久| 国产精品久久久久国产a级| 久久精品国产精品| 欧美性感一类影片在线播放| 久久国产精品第一页| 欧美日韩中文字幕综合视频| 久久成人av少妇免费| 欧美刺激午夜性久久久久久久| 亚洲一区二区三区免费在线观看| 免费成人高清在线视频| 亚洲欧美国产不卡| 久久亚裔精品欧美| 日韩亚洲欧美在线观看| 久久国产一区二区三区| 欧美日韩成人在线视频| 亚洲欧美日韩直播| 美日韩精品免费| 久久综合给合久久狠狠狠97色69| 欧美日韩国产在线看| 久久精品国产91精品亚洲| 国产精品第一页第二页第三页| 亚洲国产va精品久久久不卡综合| 国产精品黄色在线观看| 亚洲精品国产精品国产自|