作者:宋兵躍,吳軍輝,黃斌
1 串行通信介紹
所謂串行通信,就是將數(shù)據(jù)分成一個個的二進制位(bit) ,然后通過一條線路或一個通信信道,按照規(guī)定的規(guī)程逐位依次進行傳輸,實現(xiàn)計算機與計算機或計算機與外部設備之間的通信(數(shù)據(jù)交換) 。串行通信因其占用硬件資源少、可大幅度降低通信線路的成本、簡化通信設備、應用靈活、易維護等諸多優(yōu)點,在工業(yè)控制、電力通信、智能儀表等領域得到了廣泛應用[1 ] 。
目前,有EIA2RS232 、EIA2RS485 、電流環(huán)、CAN 等串行通信方式。EIA2RS232 是全雙工的通信模式,可以保證短距離點對點的高速傳輸;EIA2RS485 可實現(xiàn)較長距離下的多點互聯(lián)通信;CAN 屬于現(xiàn)場總線的范疇,采用多主機制,改善了在集散控制系統(tǒng)下的主從通信模式[2 ] 。隨著應用需求的復雜化,對串行通信的通信效率及性能的要求越來越高,所以如何制定一套切實可行、簡單易用,又能大幅度提高串行通信效率的通信協(xié)議,如何在PC 端、嵌入式系統(tǒng)端構建一個高效的串行數(shù)據(jù)處理的應用程序,是亟待解決的一大問題。
面向各個領域不同的應用需求,串行通信的網(wǎng)絡拓撲結構也多種多樣,如總線型、環(huán)型、星型等。本文以加油站信息管理系統(tǒng)為例,介紹串行通信協(xié)議的制定以及高效通信數(shù)據(jù)處理的實現(xiàn)。
2 串行通信協(xié)議的設計
2. 1 系統(tǒng)總體構架
加油站信息管理系統(tǒng)的結構如圖1 所示。本系統(tǒng)中,每臺加油機為一個應用節(jié)點(即圖中的控制點) ,通過半雙工RS485 總線連接至通信控制器。在該RS485 網(wǎng)絡中,通信控制器為主機(Master) ,各加油機為從機(Slave) ,構成一個主從通信的網(wǎng)絡架構。在多種串行接口標準中,RS485接口以其結構簡單、通信速率高、傳輸距離遠、使用的傳輸線較少、在長距離通信時比較經(jīng)濟等諸多優(yōu)點,在集散式控制裝置中得到了廣泛應用。RS485 采用差分電平傳輸,只需兩根信號線,可以方便地增加控制節(jié)點數(shù)目 。
通信控制器通過全雙工RS232總線與管理PC 機進行數(shù)據(jù)交互。RS232 總線為全雙工通信總線,為了保證實時性和高效性,管理PC 機和通信控制器這個層面的數(shù)據(jù)交互采用互為主機的通信方式,以此構成一個集散控制系統(tǒng)。
各個加油站信息管理系統(tǒng)中,控制點的數(shù)目可能較大,所以對數(shù)據(jù)通信的實時性提出了較高的要求。采用RS485總線作為底層通信接口。與點對點的通信方式相比,任何節(jié)點均能偵聽到總線上傳輸?shù)娜魏螖?shù)據(jù),這對串行通信數(shù)據(jù)接收處理也提出了很高的要求。每一個網(wǎng)絡節(jié)點既要可靠、穩(wěn)定地完成其自身的控制工作,又要準確、高效地在RS485 總線上接收到發(fā)送至本節(jié)點的通信數(shù)據(jù)幀。
2. 2 通信協(xié)議格式的定義
2. 2. 1 協(xié)議幀格式
(1) 主機下發(fā)數(shù)據(jù)幀格式
起始標志數(shù)據(jù)(5AH + A5 H) + 長度(從命令字開始到校驗和為止的字節(jié)數(shù)) + 命令字HIGH + 命令字LOW+ 機號+ 參數(shù)+ 1 字節(jié)校驗和(從命令字開始到校驗碼前一字節(jié)的邏輯異或和)
(2) 從機上傳數(shù)據(jù)幀格式
起始標志數(shù)據(jù)(9BH + B9 H) + 長度(從命令字開始到校驗和為止的字節(jié)數(shù)) + 命令字HIGH + 命令字LOW +機號+ 參數(shù)+ 1 字節(jié)校驗和(從命令字開始到校驗碼前一字節(jié)的邏輯異或和)
2. 2. 2 協(xié)議幀解釋
起始標志數(shù)據(jù):采用一字節(jié)或多字節(jié)作為幀起始標志(該部分的字節(jié)定義應盡量與幀數(shù)據(jù)的其他部分完全不同) 。接收方在接收錯誤后,接收數(shù)據(jù)時總是先尋找?guī)^。幀頭的排他性將有利于提高各通信節(jié)點的接收效率。
長度:應盡量采用短幀,以避免各種干擾因素對通信效率的影響。可根據(jù)實際應用情況,在“長度”后增加“長度反碼”或“長度補碼”等校驗數(shù)據(jù),對長度進行更為嚴格的校驗。
命令字:根據(jù)實際通信應用需求,可應用1~2 字節(jié)的通信命令字。
機號:所需接收方的地址識別號。可根據(jù)實際應用需求進行修改,如增加源地址、目的地址等。
參數(shù):應用數(shù)據(jù)。考慮到數(shù)據(jù)的安全性,可針對不同的應用對該部分的數(shù)據(jù)進行加密處理。
校驗和:數(shù)據(jù)校驗,可根據(jù)應用需求選擇不同的校驗方式 。
3 高效串行通信方式的實現(xiàn)
3. 1 通信控制器發(fā)送數(shù)據(jù)的處理機制
通信控制器的發(fā)送數(shù)據(jù)流程如圖2 所示。通信控制器首先判斷最高優(yōu)先級的命令字是否需要發(fā)送。如果需要,則進入該命令字的發(fā)送流程;如果沒有,接著判斷次高優(yōu)先級的命令字是否需要發(fā)送。如果需要則進入發(fā)送流程,根據(jù)命令字的優(yōu)先級由高到低的順序依次判斷要發(fā)送的命令字。
當沒有通信數(shù)據(jù)命令字發(fā)送時,通信控制器會發(fā)送輪詢命令字。此外,在發(fā)送完一幀數(shù)據(jù)后,通信控制器會開啟接收超時定時器T2 ,如果通信控制器在超時時間內(nèi)收到應答命令數(shù)據(jù)幀,則進入相應數(shù)據(jù)處理流程,同時關閉T2 。如果系統(tǒng)長時間未收到應答命令數(shù)據(jù)幀,則重新發(fā)送該命令字的數(shù)據(jù),并記錄發(fā)送該命令字的次數(shù)。
當發(fā)送的命令字的幀超過10 次仍未收到相應應答命令,則視為該命令字和PC 機的通信失敗,把通信流程重新調(diào)整到輪詢命令字狀態(tài)下。
發(fā)送的代碼程序放到單片機的串行中斷服務程序中來處理 ,代碼如下:
3. 2 通信控制器接收數(shù)據(jù)的處理機制
在通信控制器的接收端,應保持串行中斷的優(yōu)先級最高。這樣才能保證系統(tǒng)時刻可以和PC 處于通信的狀態(tài)。具體的處理機制如下:
①找到幀頭(本協(xié)議是2 個字節(jié)) 。找到第1 個幀頭,就把接收步驟的全部標志S 賦值1 ,把接收字節(jié)的內(nèi)容放到接收數(shù)據(jù)緩沖區(qū)中。接著找第2 個幀頭,找到幀頭后把內(nèi)容順序放到接收數(shù)據(jù)緩沖區(qū)中。繼續(xù)判斷命令字是不是協(xié)議中規(guī)定的合法命令字。如果是,再根據(jù)命令字所對應的長度來判斷該幀數(shù)據(jù)的合法性。因為在制定通信協(xié)議時就規(guī)定了特定命令字所對應的數(shù)據(jù)長度,這兩點約束條件就可以保證接收數(shù)據(jù)是合法的,從而提高了系統(tǒng)的穩(wěn)定性 。如果命令字和其對應的長度值合法,則把S值賦值為3 ,進入下一步的數(shù)據(jù)處理步驟。
②在一幀數(shù)據(jù)接收開始時,開啟接收超時定時器。如果在超時時間內(nèi)未收到一幀完整的數(shù)據(jù),則視為本次通信流程失敗,重新初始化串行通信,等待下次通信。
③如果一幀數(shù)據(jù)完全接收正確并成功,則關閉接收定時器,停止響應串行中斷,以防止處理的過程中有新的接收數(shù)據(jù)影響有效數(shù)據(jù)的處理。處理完畢, 使能串行中斷,打開接收定時器, 清除接收步驟S 為0 ,根據(jù)處理過程中標志位的改變情況繼續(xù)和PC 進行相應的數(shù)據(jù)通信。通信控制器數(shù)據(jù)接收流程如圖3所示。
4 總結
本文設計了一套完整的通信協(xié)議,通信控制器的發(fā)送端始終處于通信狀態(tài),能以很快的速度響應系統(tǒng)協(xié)議規(guī)定的命令字及其數(shù)據(jù)的發(fā)送。在通信控制器的接收端,采用逐字節(jié)處理的方式,通過設定全局變量來確定處理接收數(shù)據(jù)幀的步驟,細化了處理接收數(shù)據(jù)的過程,保證了數(shù)據(jù)高效、可靠的傳輸。本系統(tǒng)已經(jīng)應用在上海寶鋼集團加油站信息管理系統(tǒng)中。實驗結果證明,按照此協(xié)議進行的通信數(shù)據(jù)準確,通信高效可靠,自適應能力強,具有在相關領域推廣的價值。
責任編輯:gt
-
控制器
+關注
關注
112文章
16384瀏覽量
178355 -
嵌入式
+關注
關注
5085文章
19138瀏覽量
305779 -
控制系統(tǒng)
+關注
關注
41文章
6629瀏覽量
110654
發(fā)布評論請先 登錄
相關推薦
評論