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

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

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

基于通信控制器實(shí)現(xiàn)高效串行數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)

電子設(shè)計(jì) ? 來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 ? 作者:宋兵躍,吳軍輝, ? 2021-05-05 14:11 ? 次閱讀

作者:宋兵躍,吳軍輝,黃斌

1 串行通信介紹

所謂串行通信,就是將數(shù)據(jù)分成一個(gè)個(gè)的二進(jìn)制位(bit) ,然后通過一條線路或一個(gè)通信信道,按照規(guī)定的規(guī)程逐位依次進(jìn)行傳輸,實(shí)現(xiàn)計(jì)算機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與外部設(shè)備之間的通信(數(shù)據(jù)交換) 。串行通信因其占用硬件資源少、可大幅度降低通信線路的成本、簡化通信設(shè)備、應(yīng)用靈活、易維護(hù)等諸多優(yōu)點(diǎn),在工業(yè)控制、電力通信、智能儀表等領(lǐng)域得到了廣泛應(yīng)用[1 ] 。

目前,有EIA2RS232 、EIA2RS485 、電流環(huán)、CAN 等串行通信方式。EIA2RS232 是全雙工的通信模式,可以保證短距離點(diǎn)對(duì)點(diǎn)的高速傳輸;EIA2RS485 可實(shí)現(xiàn)較長距離下的多點(diǎn)互聯(lián)通信;CAN 屬于現(xiàn)場(chǎng)總線的范疇,采用多主機(jī)制,改善了在集散控制系統(tǒng)下的主從通信模式[2 ] 。隨著應(yīng)用需求的復(fù)雜化,對(duì)串行通信的通信效率及性能的要求越來越高,所以如何制定一套切實(shí)可行、簡單易用,又能大幅度提高串行通信效率的通信協(xié)議,如何在PC 端、嵌入式系統(tǒng)端構(gòu)建一個(gè)高效的串行數(shù)據(jù)處理的應(yīng)用程序,是亟待解決的一大問題。

面向各個(gè)領(lǐng)域不同的應(yīng)用需求,串行通信的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)也多種多樣,如總線型、環(huán)型、星型等。本文以加油站信息管理系統(tǒng)為例,介紹串行通信協(xié)議的制定以及高效通信數(shù)據(jù)處理的實(shí)現(xiàn)。

2 串行通信協(xié)議的設(shè)計(jì)

2. 1 系統(tǒng)總體構(gòu)架

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

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

各個(gè)加油站信息管理系統(tǒng)中,控制點(diǎn)的數(shù)目可能較大,所以對(duì)數(shù)據(jù)通信的實(shí)時(shí)性提出了較高的要求。采用RS485總線作為底層通信接口。與點(diǎn)對(duì)點(diǎn)的通信方式相比,任何節(jié)點(diǎn)均能偵聽到總線上傳輸?shù)娜魏螖?shù)據(jù),這對(duì)串行通信數(shù)據(jù)接收處理也提出了很高的要求。每一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)既要可靠、穩(wěn)定地完成其自身的控制工作,又要準(zhǔn)確、高效地在RS485 總線上接收到發(fā)送至本節(jié)點(diǎn)的通信數(shù)據(jù)幀。

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

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

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

起始標(biāo)志數(shù)據(jù)(5AH + A5 H) + 長度(從命令字開始到校驗(yàn)和為止的字節(jié)數(shù)) + 命令字HIGH + 命令字LOW+ 機(jī)號(hào)+ 參數(shù)+ 1 字節(jié)校驗(yàn)和(從命令字開始到校驗(yàn)碼前一字節(jié)的邏輯異或和)

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

起始標(biāo)志數(shù)據(jù)(9BH + B9 H) + 長度(從命令字開始到校驗(yàn)和為止的字節(jié)數(shù)) + 命令字HIGH + 命令字LOW +機(jī)號(hào)+ 參數(shù)+ 1 字節(jié)校驗(yàn)和(從命令字開始到校驗(yàn)碼前一字節(jié)的邏輯異或和)

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

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

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

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

機(jī)號(hào):所需接收方的地址識(shí)別號(hào)??筛鶕?jù)實(shí)際應(yīng)用需求進(jìn)行修改,如增加源地址、目的地址等。

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

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

3 高效串行通信方式的實(shí)現(xiàn)

3. 1 通信控制器發(fā)送數(shù)據(jù)的處理機(jī)制

通信控制器的發(fā)送數(shù)據(jù)流程如圖2 所示。通信控制器首先判斷最高優(yōu)先級(jí)的命令字是否需要發(fā)送。如果需要,則進(jìn)入該命令字的發(fā)送流程;如果沒有,接著判斷次高優(yōu)先級(jí)的命令字是否需要發(fā)送。如果需要?jiǎng)t進(jìn)入發(fā)送流程,根據(jù)命令字的優(yōu)先級(jí)由高到低的順序依次判斷要發(fā)送的命令字。

當(dāng)沒有通信數(shù)據(jù)命令字發(fā)送時(shí),通信控制器會(huì)發(fā)送輪詢命令字。此外,在發(fā)送完一幀數(shù)據(jù)后,通信控制器會(huì)開啟接收超時(shí)定時(shí)器T2 ,如果通信控制器在超時(shí)時(shí)間內(nèi)收到應(yīng)答命令數(shù)據(jù)幀,則進(jìn)入相應(yīng)數(shù)據(jù)處理流程,同時(shí)關(guān)閉T2 。如果系統(tǒng)長時(shí)間未收到應(yīng)答命令數(shù)據(jù)幀,則重新發(fā)送該命令字的數(shù)據(jù),并記錄發(fā)送該命令字的次數(shù)。

當(dāng)發(fā)送的命令字的幀超過10 次仍未收到相應(yīng)應(yīng)答命令,則視為該命令字和PC 機(jī)的通信失敗,把通信流程重新調(diào)整到輪詢命令字狀態(tài)下。

發(fā)送的代碼程序放到單片機(jī)的串行中斷服務(wù)程序中來處理 ,代碼如下:

3. 2 通信控制器接收數(shù)據(jù)的處理機(jī)制

在通信控制器的接收端,應(yīng)保持串行中斷的優(yōu)先級(jí)最高。這樣才能保證系統(tǒng)時(shí)刻可以和PC 處于通信的狀態(tài)。具體的處理機(jī)制如下:

①找到幀頭(本協(xié)議是2 個(gè)字節(jié)) 。找到第1 個(gè)幀頭,就把接收步驟的全部標(biāo)志S 賦值1 ,把接收字節(jié)的內(nèi)容放到接收數(shù)據(jù)緩沖區(qū)中。接著找第2 個(gè)幀頭,找到幀頭后把內(nèi)容順序放到接收數(shù)據(jù)緩沖區(qū)中。繼續(xù)判斷命令字是不是協(xié)議中規(guī)定的合法命令字。如果是,再根據(jù)命令字所對(duì)應(yīng)的長度來判斷該幀數(shù)據(jù)的合法性。因?yàn)樵谥贫ㄍㄐ艆f(xié)議時(shí)就規(guī)定了特定命令字所對(duì)應(yīng)的數(shù)據(jù)長度,這兩點(diǎn)約束條件就可以保證接收數(shù)據(jù)是合法的,從而提高了系統(tǒng)的穩(wěn)定性 。如果命令字和其對(duì)應(yīng)的長度值合法,則把S值賦值為3 ,進(jìn)入下一步的數(shù)據(jù)處理步驟。

②在一幀數(shù)據(jù)接收開始時(shí),開啟接收超時(shí)定時(shí)器。如果在超時(shí)時(shí)間內(nèi)未收到一幀完整的數(shù)據(jù),則視為本次通信流程失敗,重新初始化串行通信,等待下次通信。

③如果一幀數(shù)據(jù)完全接收正確并成功,則關(guān)閉接收定時(shí)器,停止響應(yīng)串行中斷,以防止處理的過程中有新的接收數(shù)據(jù)影響有效數(shù)據(jù)的處理。處理完畢, 使能串行中斷,打開接收定時(shí)器, 清除接收步驟S 為0 ,根據(jù)處理過程中標(biāo)志位的改變情況繼續(xù)和PC 進(jìn)行相應(yīng)的數(shù)據(jù)通信。通信控制器數(shù)據(jù)接收流程如圖3所示。

4 總結(jié)

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

責(zé)任編輯:gt

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

    關(guān)注

    112

    文章

    15879

    瀏覽量

    175343
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18816

    瀏覽量

    298455
  • 控制系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    6417

    瀏覽量

    110092
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于DSP和FPGA的紅外信息數(shù)據(jù)處理系統(tǒng)

    新一代紅外成像導(dǎo)引系統(tǒng)須具備高精度、處理速度快、實(shí)時(shí)性強(qiáng)且反應(yīng)時(shí)間短等特點(diǎn),這便要求圖像處理計(jì)算機(jī)能滿足圖像處理中大數(shù)據(jù)量、復(fù)雜運(yùn)算、實(shí)時(shí)性
    發(fā)表于 07-30 14:43 ?606次閱讀
    基于DSP和FPGA的紅外信息<b class='flag-5'>數(shù)據(jù)處理系統(tǒng)</b>

    SC26C94器件在測(cè)控、測(cè)試及數(shù)據(jù)處理系統(tǒng)中的應(yīng)用

    在許多復(fù)雜的測(cè)控、測(cè)試及數(shù)據(jù)處理系統(tǒng)中,一般需要與大量的被控對(duì)象、被測(cè)試設(shè)備及自動(dòng)化儀表進(jìn)行通信,而這些對(duì)象、設(shè)備及儀表等所提供的接口大多是標(biāo)準(zhǔn)的異步串行接口形式,因此,在以CPU為核心,與多路
    的頭像 發(fā)表于 12-21 08:53 ?4680次閱讀
    SC26C94器件在測(cè)控、測(cè)試及<b class='flag-5'>數(shù)據(jù)處理系統(tǒng)</b>中的應(yīng)用

    實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)有什么特點(diǎn)?

    ,傳統(tǒng)的單一DSP的架構(gòu)已經(jīng)不能完全滿足人們的需求。實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)的出現(xiàn)勢(shì)在必行,那大家知道其有什么特點(diǎn)嗎?
    發(fā)表于 07-31 07:53

    VHDL 基于FPGA的高速數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)思路

    數(shù)據(jù)存儲(chǔ)和USB通信等外圍功能模塊構(gòu)造而成。由于光纖微擾動(dòng)傳 感的傳感采用的是光纖,所以首先需要將信號(hào)經(jīng)過光電轉(zhuǎn)換和A/D轉(zhuǎn)換,將信號(hào)轉(zhuǎn)換為適于FPGA處理的數(shù)字信號(hào)。然后,在FP
    發(fā)表于 08-31 18:54

    FPGA的高速數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)和硬件設(shè)計(jì)

    數(shù)據(jù)存儲(chǔ)和USB通信等外圍功能模塊構(gòu)造而成。由于光纖微擾動(dòng)傳 感的傳感采用的是光纖,所以首先需要將信號(hào)經(jīng)過光電轉(zhuǎn)換和A/D轉(zhuǎn)換,將信號(hào)轉(zhuǎn)換為適于FPGA處理的數(shù)字信號(hào)。然后,在FP
    發(fā)表于 09-04 09:56

    ADC器件ADS8344在互感高壓側(cè)數(shù)據(jù)處理系統(tǒng)中的怎么應(yīng)用?

    參考電壓?A/D轉(zhuǎn)換?比較?控制邏輯電路和逐次逼近寄存(SAR)等部分組成;ADC器件ADS8344在互感高壓側(cè)
    發(fā)表于 04-14 07:03

    一種基于TMS320F206的雷達(dá)數(shù)據(jù)處理系統(tǒng)

    雷達(dá)數(shù)據(jù)處理系統(tǒng)是現(xiàn)代雷達(dá)的重要組成部分,實(shí)際應(yīng)用中,一般采用微型計(jì)算機(jī)實(shí)現(xiàn)雷達(dá)數(shù)據(jù)處理功能.隨著DSP芯片的快速發(fā)展,應(yīng)用了DSP芯片的雷達(dá)數(shù)據(jù)處理系統(tǒng)極大地提高雷達(dá)
    發(fā)表于 04-23 17:15 ?26次下載

    一種基于TMS320F206的雷達(dá)數(shù)據(jù)處理系統(tǒng)1

    雷達(dá)數(shù)據(jù)處理系統(tǒng)是現(xiàn)代雷達(dá)的重要組成部分,實(shí)際應(yīng)用中,一般采用微型計(jì)算機(jī)實(shí)現(xiàn)雷達(dá)數(shù)據(jù)處理功能.隨著DSP芯片的快速發(fā)展,應(yīng)用了DSP芯片的雷達(dá)數(shù)據(jù)處理系統(tǒng)極大地提高雷達(dá)
    發(fā)表于 04-24 15:35 ?17次下載

    并行空間數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)

    隨著多核計(jì)算機(jī)的出現(xiàn),并行計(jì)算技術(shù)的發(fā)展進(jìn)入了一個(gè)新的階段,如何將并行技術(shù)引入空間數(shù)據(jù)處理系統(tǒng)成為了當(dāng)前研究的熱點(diǎn)問題。本文給出了一種基于分布式/共享內(nèi)存結(jié)構(gòu)的并
    發(fā)表于 03-01 15:26 ?12次下載

    摩擦試驗(yàn)機(jī)數(shù)據(jù)采集與處理系統(tǒng)設(shè)計(jì)

    基于摩擦試驗(yàn)機(jī)對(duì)計(jì)算機(jī)采集與處理數(shù)據(jù)功能的要求,采用串口通信方法,結(jié)合VB語言編程,設(shè)計(jì)了試驗(yàn)機(jī)的數(shù)據(jù)采集卡和數(shù)據(jù)處理系統(tǒng)。實(shí)驗(yàn)測(cè)試表明,該
    發(fā)表于 10-10 14:45 ?0次下載
    摩擦試驗(yàn)機(jī)<b class='flag-5'>數(shù)據(jù)</b>采集與<b class='flag-5'>處理系統(tǒng)</b>設(shè)計(jì)

    一種輸變電設(shè)備多源數(shù)據(jù)處理系統(tǒng)的功能設(shè)計(jì)

    針對(duì)輸變電設(shè)備狀態(tài)評(píng)估數(shù)據(jù)來源多樣、平臺(tái)繁多以及數(shù)據(jù)質(zhì)量參差不齊的問題,通過對(duì)輸變電設(shè)備狀態(tài)評(píng)估數(shù)據(jù)特點(diǎn)進(jìn)行研究,提出了一種輸變電設(shè)備多源數(shù)據(jù)處理系統(tǒng)的功能設(shè)計(jì)。設(shè)計(jì)了可提高設(shè)備狀態(tài)評(píng)
    發(fā)表于 03-05 14:03 ?0次下載
    一種輸變電設(shè)備多源<b class='flag-5'>數(shù)據(jù)處理系統(tǒng)</b>的功能設(shè)計(jì)

    基于時(shí)差法流量監(jiān)測(cè)裝置的數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)的詳細(xì)資料概述

    本文設(shè)計(jì)了一種基于時(shí)差法流量監(jiān)測(cè)裝置的數(shù)據(jù)處理系統(tǒng)。系統(tǒng)選用ARM11系列芯片S3C6410為核心處理器,基于S3C6410設(shè)計(jì)了多種傳感通信
    發(fā)表于 04-28 15:23 ?3次下載
    基于時(shí)差法流量監(jiān)測(cè)裝置的<b class='flag-5'>數(shù)據(jù)處理系統(tǒng)</b>設(shè)計(jì)的詳細(xì)資料概述

    基于PDA的電能表輪換數(shù)據(jù)處理系統(tǒng)的原理及設(shè)計(jì)

    今天為大家介紹一項(xiàng)國家發(fā)明授權(quán)專利——一種基于PDA的電能表輪換數(shù)據(jù)處理系統(tǒng)。該專利由國網(wǎng)上海市電力公司申請(qǐng),并于2017年11月21日獲得授權(quán)公告。
    發(fā)表于 12-28 09:23 ?1469次閱讀

    數(shù)據(jù)處理系統(tǒng)模式及其應(yīng)用分析

    數(shù)據(jù)處理系統(tǒng)始終是分析大數(shù)據(jù)的基礎(chǔ),因?yàn)榇?b class='flag-5'>數(shù)據(jù)本身具有信息量繁多冗雜、擴(kuò)展速度極快、信息多樣性且價(jià)值密度高等特點(diǎn),所以要求大數(shù)據(jù)處理系統(tǒng)具有極強(qiáng)的專業(yè)性和
    的頭像 發(fā)表于 02-14 14:45 ?7423次閱讀
    大<b class='flag-5'>數(shù)據(jù)處理系統(tǒng)</b>模式及其應(yīng)用分析

    如何使用FPGA實(shí)現(xiàn)光譜探測(cè)實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)

    實(shí)時(shí)獲取戰(zhàn)場(chǎng)中來襲激光、大氣污染物、毒氣等待測(cè)物光譜分布信息,根據(jù)傅里葉光譜變換理論,研究設(shè)計(jì)了實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)。分析了光譜探測(cè)系統(tǒng)結(jié)構(gòu)和工作原理,采用Xilinx公司Virtex2-Pro開發(fā)板在
    發(fā)表于 01-26 15:03 ?9次下載
    如何使用FPGA<b class='flag-5'>實(shí)現(xiàn)</b>光譜探測(cè)實(shí)時(shí)<b class='flag-5'>數(shù)據(jù)處理系統(tǒng)</b>的設(shè)計(jì)