本站小編為你精心準備了高速串行總線的RS485串口通信接口設(shè)計參考范文,愿這些范文能點燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
摘要:工業(yè)現(xiàn)場存在大量RS5串口接入設(shè)備,然而一般處理器集成的RS5串口個數(shù)有限,難以滿足實際應(yīng)用需求。通過研究分析RS5串口的應(yīng)用需求和變電站輔助設(shè)備的結(jié)構(gòu)特點,提出一種基于高速串行總線的分布式RS5串口通信方式,重點討論了通信協(xié)議設(shè)計和通信接口設(shè)計。采用該方案研制的變電站輔助設(shè)備,提高了RS5串口可擴展性,易于升級與維護。現(xiàn)場運行結(jié)果表明該方案的有效性和實用性。
關(guān)鍵詞:串行高速總線;分布式;RS5串口;通信
RS5串口通信技術(shù)具有傳輸距離遠、成本低、抗干擾能力強等優(yōu)點,在計算機通信領(lǐng)域占有一席之地。但是由于RS5總線缺少總線仲裁,多對多會導(dǎo)致多個設(shè)備在總線上信號沖撞,所以只能構(gòu)成一對一或一對多的通信網(wǎng)絡(luò),使其難以實現(xiàn)較為復(fù)雜的工業(yè)現(xiàn)場測控網(wǎng)絡(luò)的構(gòu)建[1]。控制器局域網(wǎng)網(wǎng)絡(luò)(ControllerAreaNetwork,CAN)是應(yīng)用最為廣泛的工業(yè)現(xiàn)場總線之一,具有總線仲裁、高可靠性和高性能等特點,在變電站、礦山煤場、汽車等領(lǐng)域有廣泛的應(yīng)用[2-4]。但是CAN總線最高速率只有1Mbps,難以滿足高速數(shù)據(jù)采集、通信的速率要求。高速串行總線(High-speedSerialBus,HSB)利用低壓差分信號(LowVoltageDef-erentialSignaling,LVDS)的高速特點(最高1.23Gbps)來改進CAN總線的性能,其中CAN作為控制總線,LVDS作為數(shù)據(jù)總線,從而實現(xiàn)多點互聯(lián)的大數(shù)據(jù)量高速通信的應(yīng)用需求,在變電站等領(lǐng)域有廣泛應(yīng)用[5-6]。變電站內(nèi)一次設(shè)備在線監(jiān)測、火災(zāi)消防、安全防衛(wèi)、動環(huán)系統(tǒng)等為變電站監(jiān)控提供輔助支撐的設(shè)備,總稱為輔助設(shè)備。輔助設(shè)備通過RS5接口接入火災(zāi)自動報警系統(tǒng)、溫濕度傳感器、空調(diào)控制器等外部監(jiān)測和控制設(shè)備,實現(xiàn)對各種數(shù)據(jù)的采集接入和設(shè)備的控制[7-8]。然而一般的處理器集成的串口資源有限,難以滿足使用需求,針對此問題,本文實現(xiàn)了一種基于高速串行總線的分布式串口擴展方式,可以根據(jù)使用需求快速擴展串口資源。
1系統(tǒng)概述
基于靈活硬件資源配置和硬件平臺設(shè)計考慮,典型的變電站輔助設(shè)備裝置硬件系統(tǒng)采用多板卡的分布式結(jié)構(gòu),由控制、數(shù)字量采集、模擬量采集和RS5通信等板卡組成,每個板卡可以根據(jù)需要進行多個配置,裝置內(nèi)部互聯(lián)總線采用HSB總線,硬件總線架構(gòu)圖如圖1所示。控制板卡是輔助設(shè)備的核心,通過HSB總線與其他板卡進行通信,對采集的數(shù)據(jù)進行計算處理,其中的FPGA模塊實現(xiàn)HSB總線和千兆以太網(wǎng)總線控制,通過千兆以太網(wǎng)總線與CPU模塊互聯(lián);CPU模塊為ARMCortex-A7系列處理器,處理器包含4個CPU核心,主頻1.2GHz,運行嵌入式Linux操作系統(tǒng)。RS5通信板卡包含8個RS5接口,用于接入RS5接口設(shè)備,其中的FPGA模塊實現(xiàn)HSB總線控制和RS5總線控制功能。其他板卡與本文內(nèi)容無關(guān),限于篇幅不再贅述。RS5通信板卡的FPGA接收RS5報文后,添加HSB報文頭后發(fā)送到HSB總線,控制板卡的FPGA從HSB總線接收HSB報文后,通過千兆以太網(wǎng)口上送CPU,由CPU進行HSB報文解包和計算處理,至此,完成一幀RS5報文的接收。控制板卡的CPU接收到RS5報文后,添加HSB報文頭后通過千兆以太網(wǎng)口發(fā)送給FPGA,F(xiàn)PGA的HSB總線控制模塊將HSB報文發(fā)送到HSB總線,RS5通信板卡的FPGA從HSB總線接到HSB報文后,從HSB報文中解析出RS5報文,并根據(jù)HSB報文頭中的相關(guān)信息將RS5報文發(fā)送到指定的RS5接口,至此,完成一幀RS5報文的發(fā)送。
2通信協(xié)議設(shè)計
基于通信過程的復(fù)雜性和靈活性考慮,通常將通信協(xié)議劃分為若干個層次,每個層次完成一部分功能,各個層次相互配合共同完成通信功能。控制板卡與RS5通信板卡間的通信基于HSB總線,依照分層通信體系結(jié)構(gòu),通信協(xié)議從下往上依次劃分為數(shù)據(jù)鏈路層、HSB通信協(xié)議層和串口通信協(xié)議層,如圖2所示。數(shù)據(jù)鏈路層的主要功能是幀編碼和誤差糾正控制。通過鏈路層協(xié)議來控制數(shù)據(jù)的傳輸,以保證被傳輸數(shù)據(jù)的正確性。使用千兆以太網(wǎng)協(xié)議作為鏈路層協(xié)議,不僅可以利用Linux操作系統(tǒng)現(xiàn)有的千兆以太網(wǎng)驅(qū)動和編程接口,減少開發(fā)工作量,而且可以利用Linux網(wǎng)絡(luò)協(xié)議棧的NAPI收包、套接字緩存等特性[],提高通信性能和穩(wěn)定性。HSB通信協(xié)議層的主要功能是實現(xiàn)控制板卡與RS5通信板卡間的通信,也是本文討論的重點。HSB通信協(xié)議報文的各字段定義如圖3所示。報文目標節(jié)點地址、報文源節(jié)點地址、報文優(yōu)先級、報文長度5個字段用于HSB的CAN總線控制,其中,報文目標節(jié)點地址字段表示通信的接收方,報文源節(jié)點地址字段表示通信的發(fā)送方,報文優(yōu)先級字段用于CAN總線的發(fā)送優(yōu)先級控制,報文長度字段用于指定HSB協(xié)議數(shù)據(jù)段的長度。報文類型、串口端口、串口配置3個字段用于HSB的RS5串口報文控制,其中,報文類型字段用于區(qū)分發(fā)送報文和接收報文,串口端口字段用于確定RS5通信板卡上的串口地址,串口配置字段用于確定串口的波特率和通信協(xié)議配置,該通信協(xié)議由1個起始位、5~個數(shù)據(jù)位、1~2個停止位、1個奇偶校驗位組成。串口通信協(xié)議層的主要功能是實現(xiàn)各種應(yīng)用功能。作為應(yīng)用層協(xié)議,位于HSB報文的數(shù)據(jù)部分。常用的通信協(xié)議包括ModBus、ProfiBus協(xié)議等。
3通信接口設(shè)計
“一切皆是文件”是Unix/Linux的基本哲學(xué)之一,Linux常用文件接口包括打開、關(guān)閉、讀、寫等。基于此設(shè)計思想,RS5串口通信接口設(shè)計如下。COMOpen用于打開和初始化RS5通信板卡上的串口設(shè)備,其中slotid參數(shù)用于指定RS5通信板卡地址,devid參數(shù)用于指定串口端口地址,baud參數(shù)用于指定串口波特率,flags參數(shù)用于指定串口通信協(xié)議配置,接口返回打開的串口對象指針;COMClose用于關(guān)閉串口;COMWrite、COMRead分別用于串口報文發(fā)送和接收,其中dev參數(shù)用于指定已打開的串口對象,buf、len參數(shù)用于指定串口報文緩沖區(qū)的首地址和長度。structcom_dev觹COMOpen(uint_tslotid,uint_tdevid,uint_tbaud,uint_tflags);intCOMClose(structcom_dev觹dev);intCOMWrite(structcom_dev觹dev,uint8_t觹buf,uint_tlen);intCOMRead(structcom_dev觹dev,uint8_t觹buf,uint_tlen);
3.1串口打開和初始化
因為串口報文通過千兆以太網(wǎng)總線進入控制板卡的CPU,所以CPU通過網(wǎng)絡(luò)接口設(shè)備與RS5通信板卡進行通信。首先通過socket接口打開千兆以太網(wǎng)接口網(wǎng)絡(luò)接口設(shè)備,并綁定網(wǎng)絡(luò)協(xié)議號,網(wǎng)絡(luò)協(xié)議號由RS5通信板卡地址slotid和串口端口地址devid構(gòu)造生成,通過網(wǎng)絡(luò)協(xié)議號實現(xiàn)與指定RS5通信板卡的串口端口建立通信通道。接著設(shè)置報文接收超時的時間,避免讀接口因為無報文而阻塞。然后創(chuàng)建并初始化串口設(shè)備對象,串口設(shè)備對象包含socket文件描述符、RS5通信板卡地址、串口地址和串口配置等信息,作為其他接口的參數(shù),提供相關(guān)通信信息。最后發(fā)送一個數(shù)據(jù)長度為0的HSB報文,完成串口波特率和通信協(xié)議配置。
3.2串口報文發(fā)送
串口報文發(fā)送接口的核心工作是為串口報文添加HSB報文首部后發(fā)出。首先對串口設(shè)備對象、報文緩沖區(qū)的首地址和長度進行合法性檢查,然后通過串口報文長度加上HSB報文首部長度計算出HSB報文長度,以此申請一個HSB報文緩沖區(qū)并初始化此HSB報文的目標節(jié)點地址、報文長度、報文類型、串口配置、數(shù)據(jù)段等各個發(fā)送相關(guān)字段,最后通過網(wǎng)絡(luò)通信接口sendto發(fā)出HSB報文。
3.3串口報文接收
串口報文接收接口與串口報文發(fā)送接口的處理流程類似。首先對所有參數(shù)進行合法性檢查,然后計算出HSB報文長度并申請一個HSB報文緩沖區(qū),接著使用網(wǎng)絡(luò)通信接口recvfrom接收到HSB報文,最后將接收到的HSB報文的數(shù)據(jù)段數(shù)據(jù)拷貝到串口報文接收緩沖區(qū)。
3.4串口關(guān)閉
串口關(guān)閉接口的主要功能是釋放相關(guān)系統(tǒng)資源,如關(guān)閉socket接口、釋放串口設(shè)備對象等。
4工程應(yīng)用
本方案目前已應(yīng)用到新一代的安防監(jiān)控、消防信息傳輸控制等多個變電站輔助設(shè)備中。通過RS5通信板卡的RS5接口,與安防監(jiān)控、火災(zāi)自動報警系統(tǒng)等終端的通信功能工作正常,通過RS5接口接入的擴展鍵盤、探測器和輸出前端等設(shè)備,能正確實現(xiàn)報警信號、布撤防等數(shù)據(jù)交互。設(shè)備現(xiàn)場運行情況良好,所有功能工作穩(wěn)定,性能符合裝置技術(shù)指標要求。本方案提高設(shè)備的可擴展性,通信協(xié)議易于升級與維護,對低速通信總線的擴展具有一定參考價值。
作者:陳彬 陳從靖 單位:南京國電南自電網(wǎng)自動化有限公司