99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

實現(xiàn)高效通信數(shù)據(jù)處理的串行通信協(xié)議的設(shè)計

電子設(shè)計 ? 來源:郭婷 ? 作者:電子設(shè)計 ? 2019-01-11 09:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、串行通信介紹

1、串行通信概述

串行通信是將數(shù)據(jù)分成若干二進(jìn)制位(bit),然后通過一條線路或一個通信信道,按照規(guī)定的規(guī)程逐位依次進(jìn)行傳輸,實現(xiàn)計算機(jī)與計算機(jī)或計算機(jī)與外部設(shè)備之間的通信(數(shù)據(jù)交換)。

在通信領(lǐng)域內(nèi),有兩種數(shù)據(jù)通信方式:并行通信和串行通信。隨著計算機(jī)網(wǎng)絡(luò)化和微機(jī)分級分布式應(yīng)用系統(tǒng)的發(fā)展,通信的功能越來越重要。通信是指計算機(jī)與外界的信息傳輸,既包括計算機(jī)與計算機(jī)之間的傳輸,也包括計算機(jī)與外部設(shè)備,如終端、打印機(jī)和磁盤等設(shè)備之間的傳輸。

串行通信具有占用硬件資源少、可大幅度降低通信線路成本、簡化通信設(shè)備、應(yīng)用靈活、易維護(hù)等諸多優(yōu)點(diǎn),在工業(yè)控制、電力通信、智能儀表等領(lǐng)域得到了廣泛應(yīng)用。

2、串行通信特點(diǎn)

數(shù)據(jù)在單條一位寬的傳輸線上,一比特接一比特地按順序傳送的方式稱為串行通信。

一位接一位地順序傳送。這樣一個字節(jié)的數(shù)據(jù)要分8次由低位到高位按順序一位位地傳送。由此可見,串行通信的特點(diǎn)如下:

(1)節(jié)省傳輸線,這是顯而易見的。尤其是在遠(yuǎn)程通信時,此特點(diǎn)尤為重要。這也是串行通信的主要優(yōu)點(diǎn)。

(2)數(shù)據(jù)傳送效率低。與并行通信比,這也這是顯而易見的。這也是串行通信的主要缺點(diǎn)。

例如:傳送一個字節(jié),并行通信只需要1T的時間,而串行通信至少需要8T的時間。 由此可見,串行通信適合于遠(yuǎn)距離傳送,可以從幾米到數(shù)千公里。對于長距離、低速率的通信,串行通信往往是唯一的選擇。并行通信適合于短距離、高速率的數(shù)據(jù)傳送,通常傳輸距離小于30米。特別值得一提的是,現(xiàn)成的公共電話網(wǎng)是通用的長距離通信介質(zhì),它雖然是為傳輸聲音信號設(shè)計的,但利用調(diào)制解調(diào)技術(shù),可使現(xiàn)成的公共電話網(wǎng)系統(tǒng)為串行數(shù)據(jù)通信提供方便、實用的通信線路。

3、串行通信方式

EIA-RS232、EIA-RS485、電流環(huán)、CAN等串行通信方式是通信領(lǐng)域中應(yīng)用廣泛的串行接口。EIA-RS232是全雙工的通信模式,可保證短距離點(diǎn)對點(diǎn)的高速傳輸,EIA-RS485實現(xiàn)了較長距離下的多點(diǎn)互聯(lián)通信。CAN屬于現(xiàn)場總線的范疇,采用了多主機(jī)制,改善了在集散控制系統(tǒng)下的主從通信模式。

隨著應(yīng)用需求的復(fù)雜化,對串行通信的性能、通信效率的提升需求越來越明顯。如何制定一套切實可行、簡單易用,又能大幅度提高串行通信效率的通信協(xié)議;如何在PC端、嵌入式系統(tǒng)端構(gòu)建一個高效的串行數(shù)據(jù)處理的應(yīng)用程序,是串行通信協(xié)議中等待解決的問題。本文將以加油站信息管理系統(tǒng)為例,介紹串行通信協(xié)議的制定以及高效通信數(shù)據(jù)處理的實現(xiàn)。

二、串行通信協(xié)議的設(shè)計

1、系統(tǒng)總體結(jié)構(gòu)

實現(xiàn)高效通信數(shù)據(jù)處理的串行通信協(xié)議的設(shè)計

加油站信息管理系統(tǒng)的結(jié)構(gòu)如圖1所示,每臺加油機(jī)為一個應(yīng)用節(jié)點(diǎn)(即圖1中的控制點(diǎn)),通過半雙工RS-485總線連接至通信控制器,在RS-485網(wǎng)絡(luò)中,通信控制器為主機(jī),各加油機(jī)為從機(jī),構(gòu)成一個主從通信的網(wǎng)絡(luò)架構(gòu)。在多種串行接口標(biāo)準(zhǔn)中,RS-485接口結(jié)構(gòu)簡單、通信速率高、傳輸距離遠(yuǎn)、使用傳輸線較少,長距離通信較經(jīng)濟(jì),在集散式控制裝置中得到了廣泛應(yīng)用。RS-485采用差分電平傳輸,只需2根信號線,即可以方便地增加控制節(jié)點(diǎn)數(shù)目。

通信控制器通過全雙工RS-232總線與管理PC進(jìn)行數(shù)據(jù)交互,管理PC和通信控制器層面的數(shù)據(jù)交互,保證了實時性和高效性,采用互為主機(jī)的通信方式,以此構(gòu)成集散控制系統(tǒng)。

2、通信協(xié)議格式的定義

(1)協(xié)議幀格式

1)主機(jī)(Master)下發(fā)數(shù)據(jù)幀格式

起始標(biāo)志數(shù)據(jù)(5AH+A5H)+長度(從命令字開始到校驗和為止的字節(jié)數(shù))+命令字HIGH+命令字LOW+機(jī)號+參數(shù)+一個字節(jié)校驗和(從命令字開始到校驗碼前一個字節(jié)的邏輯“異或”和)。

2)從機(jī)(Slave)上傳數(shù)據(jù)幀格式

起始標(biāo)志數(shù)據(jù)(9BH+B9H)+長度(從命令字開始到校驗和為止的字節(jié)數(shù))+命令字HIGH+命令字LOW+機(jī)號+參數(shù)+一個字節(jié)校驗和(從命令字開始到校驗碼前一個字節(jié)的邏輯“異或”和)。

(2)協(xié)議幀解釋

起始標(biāo)志數(shù)據(jù):采用1個字節(jié)或多字節(jié)作為幀起始標(biāo)志,該部分的字節(jié)定義應(yīng)盡量與幀數(shù)據(jù)的其他部分完全不一樣。接收方在接收數(shù)據(jù)時總是先尋找?guī)^。幀頭的排他性將有利于提高各通信節(jié)點(diǎn)的接收效率。

長度:應(yīng)盡量采用短幀,以避免各種干擾因素對通信效率的影響??筛鶕?jù)實際應(yīng)用情況,在“長度”后增加“長度反碼”或“長度補(bǔ)碼”等校驗數(shù)據(jù)對長度進(jìn)行更為嚴(yán)格的校驗。

命令字:根據(jù)實際通信應(yīng)用需求,可應(yīng)用1~2字節(jié)的通信命令字。

機(jī)號:該幀所需接收方的地址識別號,可根據(jù)實際應(yīng)用需求對其進(jìn)行修改,如增加源地址、目的地址等。

參數(shù):該幀的應(yīng)用數(shù)據(jù),針對不同的應(yīng)用,考慮到數(shù)據(jù)的安全性,可對該部分的數(shù)據(jù)進(jìn)行加密處理。

校驗和:該幀的數(shù)據(jù)校驗,可根據(jù)應(yīng)用需求選擇不同的校驗方式。

三、高效串行通信方式的實現(xiàn)

1、PC端軟件發(fā)送數(shù)據(jù)的處理機(jī)制

PC端的軟件首先判斷最高優(yōu)先級的命令字是否需要發(fā)送,如果需要,則進(jìn)入該命令字的發(fā)送流程;如果沒有,接著判斷次高級優(yōu)先級的命令字是否需要發(fā)送,如果需要,則進(jìn)入發(fā)送流程。

根據(jù)命令字的優(yōu)先級由高到低的順序依次判斷要發(fā)送的命令字,當(dāng)沒有通信數(shù)據(jù)命令字發(fā)送時,PC端軟件將發(fā)送輪詢命令字。

此外,在發(fā)送完一幀數(shù)據(jù)后,PC端軟件會開啟接收超時定時器T,如果PC端軟件在超時時間內(nèi)收到應(yīng)答命令數(shù)據(jù)幀則進(jìn)入相應(yīng)數(shù)據(jù)處理流程,同時關(guān)閉接收超時定時器T;如果系統(tǒng)定時時間內(nèi)未收到應(yīng)答命令數(shù)據(jù)幀,則重新發(fā)送該命令字的幀數(shù)據(jù),并記錄發(fā)送該命令字的次數(shù),當(dāng)發(fā)送命令字的幀超過10次未收到相應(yīng)應(yīng)答命令,即視為該命令字和控制點(diǎn)的通信失敗,將通信流程重新調(diào)整到輪詢命令字狀態(tài)下。

2、PC端軟件接收數(shù)據(jù)的處理機(jī)制

在PC軟件端的接收程序部分,按字節(jié)來處理接收到的每幀數(shù)據(jù),而不是按幀來處理。為此,應(yīng)用程序?qū)⒋诘慕邮罩袛嗟捻憫?yīng)字節(jié)閾值設(shè)為1,即當(dāng)接收緩沖區(qū)有多于1個數(shù)據(jù)便進(jìn)入接收數(shù)據(jù)處理流程。

當(dāng)開始接收一幀數(shù)據(jù)時,首先找到幀頭,其次應(yīng)根據(jù)接收數(shù)據(jù)緩沖區(qū)中的有效數(shù)據(jù)長度和幀長度的關(guān)系來分類處理。因為Windows對串口的封裝(開發(fā)平臺為VC++6.0),使得應(yīng)用程序無法來設(shè)定軟件,根據(jù)接收數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)閾值來響應(yīng)串行中斷。所以在通信過程中當(dāng)PC產(chǎn)生串行中斷時,應(yīng)根據(jù)串行中斷當(dāng)前數(shù)據(jù)接收緩沖區(qū)的有效數(shù)據(jù)長度來做分類處理。

首先,把接收緩沖區(qū)ReceBuffer[M]的數(shù)據(jù)取出來,放到待處理緩沖區(qū)DealBuffer[M]中(為了防止該幀數(shù)據(jù)還沒有處理完畢,未處理的數(shù)據(jù)會被新來的數(shù)據(jù)覆蓋掉,造成系統(tǒng)的數(shù)據(jù)丟失)。其次,要確定接收數(shù)據(jù)的幀頭,方法就是逐字節(jié)查找,一般幀頭在接收緩沖區(qū)中出現(xiàn)的位置有3種情況,如圖2所示,每一個方格代表一個字節(jié)。

如果幀頭就是接收緩沖區(qū)的前兩個字節(jié)(如圖2(a)所示),則按照通信協(xié)議依次處理剩下的接收緩沖區(qū)的有效數(shù)據(jù)。用全局變量表示接收緩沖區(qū)處理步驟S,正確接收到2個幀頭后P賦值為2.

如果幀頭在接收數(shù)據(jù)緩沖區(qū)的不連續(xù)字節(jié)內(nèi)(如圖2(b)所示),應(yīng)把從第2個幀頭開始的有效數(shù)據(jù)移到第1個幀頭后,如圖3所示,使得待處理緩沖區(qū)的數(shù)據(jù)形成連續(xù)的一幀數(shù)據(jù)來繼續(xù)下一步的處理。

如果幀頭分散在兩個數(shù)據(jù)幀中(如圖2(c)所示),即PC響應(yīng)串行中斷第1次接收到第1個幀頭,第2次響應(yīng)或者第n次響應(yīng)串行中斷接收到第2個幀頭。當(dāng)接收到第1個幀頭后,S賦值為1.當(dāng)下次響應(yīng)串行中斷時,判斷S的值,如果是1,表示第1個幀頭已經(jīng)找到,開始在接收到的幀數(shù)據(jù)中尋找第2個幀頭;如果找到,S賦值為2,并把從第2個幀頭開始的有效數(shù)據(jù)移到第1個幀頭后,使待處理緩沖區(qū)的數(shù)據(jù)形成連續(xù)的一幀數(shù)據(jù)來處理。

判斷命令字是否為協(xié)議中規(guī)定的合法命令字。如果是,將根據(jù)命令字所對應(yīng)的長度來判斷該幀數(shù)據(jù)的合法性,因為在制定通信協(xié)議時,規(guī)定了特定命令字所對應(yīng)的數(shù)據(jù)長度,這兩點(diǎn)約束條件可以保證接收數(shù)據(jù)的合法性,從而提高了系統(tǒng)的穩(wěn)定性。如果命令字和其對應(yīng)的長度值合法則將S賦值為3,進(jìn)入下一步的數(shù)據(jù)處理步驟。

最后,關(guān)閉發(fā)送定時器,防止處理的過程中有新的接收數(shù)據(jù)影響處理有效數(shù)據(jù)的過程。處理完畢,打開發(fā)送定時器,根據(jù)處理過程中標(biāo)志位的改變情況繼續(xù)與控制點(diǎn)進(jìn)行相應(yīng)的數(shù)據(jù)通信。在處理接收數(shù)據(jù)的步驟中,如果任何一個步驟出現(xiàn)非法數(shù)據(jù),則清空ReceBuffer[M]和DealBuffer[M],認(rèn)為該幀數(shù)據(jù)傳輸出錯,丟棄該幀數(shù)據(jù),并初始化接收變量,重新設(shè)定接收超時定時器,接收下一次通信數(shù)據(jù)。

四、小結(jié)

本文通過完整的串行通信協(xié)議的設(shè)計,在PC軟件發(fā)送端始終處于通信狀態(tài),能以很快的速度響應(yīng)系統(tǒng)協(xié)議規(guī)定的命令字及其數(shù)據(jù)的發(fā)送。同時,在PC軟件接收端,采用逐字節(jié)處理的方式,通過設(shè)定全局變量來確定處理接收數(shù)據(jù)幀的步驟,細(xì)化了處理接收數(shù)據(jù)的過程,保證了數(shù)據(jù)高效可靠的傳輸。本系統(tǒng)已經(jīng)應(yīng)用在上海寶鋼集團(tuán)加油站信息管理系統(tǒng)中,實驗結(jié)果證明,此協(xié)議的通信數(shù)據(jù)準(zhǔn)確、通信效率高效可靠、自適應(yīng)能力強(qiáng),具有在相關(guān)領(lǐng)域推廣的價值和意義。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7663

    瀏覽量

    90825
  • 串行通信
    +關(guān)注

    關(guān)注

    4

    文章

    588

    瀏覽量

    36198
  • 數(shù)據(jù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    627

    瀏覽量

    29189
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Modbus?串行通信協(xié)議概述

    Modbus是一種串行通信協(xié)議,是Modicon公司(現(xiàn)在的施耐德電氣 Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發(fā)表。Modbus已經(jīng)成為工業(yè)領(lǐng)域
    發(fā)表于 09-02 10:58 ?1586次閱讀

    Minifly的通信協(xié)議是什么?

    通信協(xié)議是什么?是不是我協(xié)議沒理解清楚?還是原子的飛控51822端做了數(shù)據(jù)處理(添加或修改了遙控器發(fā)來的包)后才通過串口發(fā)送給411的?
    發(fā)表于 08-05 02:20

    CAN串行通信協(xié)議

    一.CAN簡介CAN是ControllerArea Network的縮寫(以下稱為CAN),是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議。在當(dāng)前的汽車產(chǎn)業(yè)中,出于對安全性、舒適性、方便性、低公害、低成本的要求
    發(fā)表于 08-19 08:44

    通信協(xié)議是指什么?串行通信和并行通信的優(yōu)缺點(diǎn)分別有哪些

    通信協(xié)議是指什么?串行通信和并行通信的優(yōu)缺點(diǎn)分別有哪些?串行通信
    發(fā)表于 12-10 06:36

    如何實現(xiàn)基礎(chǔ)通信協(xié)議的設(shè)計?

    常見的通信協(xié)議格式是什么?如何實現(xiàn)基礎(chǔ)通信協(xié)議的設(shè)計?
    發(fā)表于 02-14 07:35

    串行通信數(shù)據(jù)的傳送方向是怎樣的?具體的通信協(xié)議有哪幾種呢

    所謂異步通信是指什么?所謂同步通信是指什么?串行通信數(shù)據(jù)的傳送方向是怎樣的?具體的通信協(xié)議有哪幾
    發(fā)表于 02-16 07:57

    高效串行通信協(xié)議的制定及實現(xiàn)

    探討了一種基于串行通信的簡單、高效通信協(xié)議制定方法。實驗結(jié)果證明,該協(xié)議有效提高了串行
    發(fā)表于 12-03 17:22 ?18次下載
    <b class='flag-5'>高效</b>的<b class='flag-5'>串行</b><b class='flag-5'>通信協(xié)議</b>的制定及<b class='flag-5'>實現(xiàn)</b>

    一種高效串行通信協(xié)議的制定及實現(xiàn)

    一種高效串行通信協(xié)議的制定及實現(xiàn)
    發(fā)表于 11-09 18:08 ?56次下載

    基于嵌入式環(huán)境的串行通信協(xié)議設(shè)計

    根線,即可實現(xiàn)簡單的全雙工通信。通信協(xié)議是兩端設(shè)備數(shù)據(jù)交換的語言,是通信可靠性的保證,在保證功能的前提下,
    發(fā)表于 10-14 16:29 ?1610次閱讀
    基于嵌入式環(huán)境的<b class='flag-5'>串行</b>幀<b class='flag-5'>通信協(xié)議</b>設(shè)計

    一個簡單的基礎(chǔ)通信協(xié)議的設(shè)計與實現(xiàn)

    一個簡單的基礎(chǔ)通信協(xié)議的設(shè)計與實現(xiàn)一種常見的通信協(xié)議格式搭建串口收發(fā)環(huán)境配置STM32CubeMX添加USART部分代碼通信協(xié)議實現(xiàn)不同設(shè)
    發(fā)表于 12-14 18:38 ?10次下載
    一個簡單的基礎(chǔ)<b class='flag-5'>通信協(xié)議</b>的設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    通信協(xié)議的概念

    通信協(xié)議是指在通信過程中,為了使得不同設(shè)備之間進(jìn)行有效的數(shù)據(jù)交換,所約定的一整套規(guī)則和標(biāo)準(zhǔn)。通信協(xié)議中定義了通信雙方的接口、
    發(fā)表于 05-06 14:32 ?2694次閱讀

    高速串行通信協(xié)議詳解

    隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)通信已成為現(xiàn)代社會不可或缺的一部分。在數(shù)據(jù)通信中,串行通信作為一種基本的通信方式,以其獨(dú)特的優(yōu)勢在各個領(lǐng)域得到了
    的頭像 發(fā)表于 05-16 16:45 ?1377次閱讀

    簡單認(rèn)識UART串行通信協(xié)議

    數(shù)據(jù)通信,特別是在嵌入式系統(tǒng)、計算機(jī)外設(shè)以及微控制器等場景中。本文將對UART串行通信協(xié)議進(jìn)行詳細(xì)的介紹,包括其基本原理、工作方式、參數(shù)設(shè)置、錯誤檢測與糾正以及應(yīng)用實例等方面。
    的頭像 發(fā)表于 05-27 16:09 ?2838次閱讀

    高速串行通信協(xié)議都有哪些

    高速串行通信協(xié)議是現(xiàn)代電子設(shè)備中用于數(shù)據(jù)傳輸?shù)年P(guān)鍵技術(shù)。這些協(xié)議在各種應(yīng)用中發(fā)揮著重要作用,如計算機(jī)、移動設(shè)備、網(wǎng)絡(luò)設(shè)備等。以下是一些常見的高速串行
    的頭像 發(fā)表于 05-31 16:11 ?1850次閱讀

    AUTOSAR通信協(xié)議解析 如何實現(xiàn)AUTOSAR通信

    通信協(xié)議棧是一個復(fù)雜的系統(tǒng),它涵蓋了多種通信方式和模塊,以實現(xiàn)車內(nèi)ECU之間的高效、可靠的數(shù)據(jù)交換。以下是對AUTOSAR
    的頭像 發(fā)表于 12-17 14:54 ?2839次閱讀