《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > 列車總線控制系統(tǒng)的CAN—485總線網(wǎng)關(guān)設(shè)計

列車總線控制系統(tǒng)的CAN—485總線網(wǎng)關(guān)設(shè)計

2008-10-13
作者:張 湘1, 張 弢2

  摘? 要: 介紹了列車總線控制系統(tǒng)" title="控制系統(tǒng)">控制系統(tǒng)中的CAN總線與485總線之間的互聯(lián)" title="互聯(lián)">互聯(lián)網(wǎng)關(guān),CAN總線控制器INTEL82526的基本工作原理和功能,給出了CAN—485總線網(wǎng)關(guān)的軟、硬件具體實現(xiàn)方案。

  關(guān)鍵詞: CAN總線? 485總線? 互聯(lián)? INTEL82526? CAN—485總線網(wǎng)關(guān)

?

  隨著現(xiàn)場總線控制技術(shù)的發(fā)展和成熟,越來越多的集散控制系統(tǒng)采用現(xiàn)場總線來構(gòu)建控制系統(tǒng)。在大規(guī)模、高性能的復(fù)雜大系統(tǒng)中存在著大量的被控設(shè)備,而且每個被控設(shè)備有著不同的實時性" title="實時性">實時性要求。從網(wǎng)絡(luò)化控制的角度分析可知,簡單地采用一條現(xiàn)場總線把復(fù)雜大系統(tǒng)中的所有被控設(shè)備聯(lián)接起來會降低整個系統(tǒng)的穩(wěn)定性和可控性,是性能不好的控制網(wǎng)絡(luò)拓撲形式。針對特定的現(xiàn)場總線,在不同的應(yīng)用環(huán)境中,一條網(wǎng)絡(luò)段上通訊結(jié)點數(shù)有一個合理范圍,超出這個范圍將導(dǎo)致網(wǎng)絡(luò)控制性能的惡化[1~2]。另外,實時性差異較大的設(shè)備共存于一條網(wǎng)絡(luò)段也易于造成整個系統(tǒng)不穩(wěn)定。因而,在一個復(fù)雜的網(wǎng)絡(luò)化控制系統(tǒng)中,按實時性和功能性分段,構(gòu)造多個現(xiàn)場總線段是一種較為合理的拓撲形式,利于整個系統(tǒng)的穩(wěn)定和性能的優(yōu)化[2]。從性價比角度看,兩段實時性差異較大的網(wǎng)絡(luò)段采用相同的現(xiàn)場總線構(gòu)建是不劃算的,采用合適的兩種現(xiàn)場總線分別構(gòu)建較為合理??刂凭W(wǎng)絡(luò)的分段和網(wǎng)段采用不同的現(xiàn)場總線構(gòu)建帶來了兩個異種現(xiàn)場總線之間互聯(lián)的問題。本文所探討的列車總線中CAN總線與485總線網(wǎng)關(guān)為兩個異種現(xiàn)場總線間的互聯(lián)提供了一種解決方案。

1 網(wǎng)關(guān)硬件設(shè)計

1.1 INTEL 82526簡介

  82526是INTEL公司生產(chǎn)的執(zhí)行CAN總線規(guī)范的CAN控制器,它包括CAN總線規(guī)范所規(guī)定的所有硬件模塊(傳輸層和目標(biāo)層)。82526與微處理器或微控制器" title="微控制器">微控制器聯(lián)接時能夠完成物理層和數(shù)據(jù)鏈路層的基本功能。82526內(nèi)部結(jié)構(gòu)原理圖如圖1所示。82526采用分時復(fù)用的8位地址/數(shù)據(jù)總線,可與INTEL系列的微處理器或微控制器協(xié)同工作。片內(nèi)雙口RAM作為CPU和接口管理處理器之間的通信緩存接口,CPU初始化全局的狀態(tài)和控制寄存器,并在雙口RAM內(nèi)建立通信目標(biāo)用以接收和發(fā)送報文。位流處理器控制接口管理處理器和總線之間的數(shù)據(jù)流。另外,位流處理器也控制收發(fā)控制邏輯和錯誤管理邏輯??偩€定時邏輯則通過差分輸入比較器監(jiān)視總線并確定串行總線的位定時。接口管理處理器執(zhí)行主控制器命令并控制串行總線上的數(shù)據(jù)傳送、全局狀態(tài)和控制寄存器位。處理器接口單元是82526到CPU的接口。

?

?

1.2 網(wǎng)關(guān)的硬件結(jié)構(gòu)

  網(wǎng)關(guān)的硬件電路原理圖如圖2所示。整個硬件電路由三部分構(gòu)成:微控制器及其外圍擴展電路,CAN總線控制器及CAN總線接口電路,異步串行通訊" title="串行通訊">串行通訊控制器和485總線接口電路。

?

?

1.2.1 微控制器及其外圍擴展電路

  網(wǎng)關(guān)采用了ATMEL公司的AT89C51型微控制器。AT89C51是與8X51系列微控制器兼容的增強型微控制器,其內(nèi)部集成了4K字節(jié)的FLASH ROM[3]。由于網(wǎng)關(guān)的軟件及參數(shù)查詢表所占用存儲空間小于4K,網(wǎng)關(guān)沒有在AT89C51外擴展程序存儲器。AT89C51是網(wǎng)關(guān)處理、控制和轉(zhuǎn)換總線數(shù)據(jù)的核心,其主要功能有三個:一是CAN總線控制器82526接收到CAN總線上其它通訊結(jié)點的數(shù)據(jù)后,交給AT89C51處理,將這些數(shù)據(jù)轉(zhuǎn)換為預(yù)先定義的485總線上傳輸數(shù)據(jù)的協(xié)議格式,由AT89C51控制異步串行通訊控制器通過485總線接口MAXIM485將這些數(shù)據(jù)發(fā)送到485總線上;二是AT89C51將MAXIM485接收到的485總線上的數(shù)據(jù)進行處理,按照82526數(shù)據(jù)組織的格式轉(zhuǎn)換這些數(shù)據(jù),將這些數(shù)據(jù)交給82526,由它將這些數(shù)據(jù)發(fā)送到CAN總線上;三是AT89C51按照預(yù)先定義的策略對通訊任務(wù)進行合理的任務(wù)調(diào)度。網(wǎng)關(guān)接收CAN或485總線來的數(shù)據(jù),應(yīng)將這些數(shù)據(jù)緩沖存儲,才可以將這些數(shù)據(jù)進行處理、轉(zhuǎn)換和轉(zhuǎn)發(fā)。另外,通過CAN或485總線發(fā)送數(shù)據(jù)時需要緩沖發(fā)送的數(shù)據(jù),要開辟發(fā)送緩沖區(qū)。基于上述需要,在AT89C51外擴展一片數(shù)據(jù)存儲器6264作數(shù)據(jù)暫存、緩沖使用。

1.2.2 CAN總線控制器及CAN總線接口電路

  CAN總線控制器82526具有256個8位寄存器,只需8根地址線。網(wǎng)關(guān)將82526寄存器組配置在AT89C51片外數(shù)據(jù)存儲區(qū)的最高256個地址區(qū)域。82526兼容INTEL方式,其引腳AD0~AD7是分時復(fù)用的地址/數(shù)據(jù)總線,不需要通過地址鎖存器分離地址和數(shù)據(jù),只要直接將AD0~AD7聯(lián)接到AT89C51的P0.0~P0.7引腳,將ALE引腳與AT89C51的ALE引腳相聯(lián),就可分時得到正確的地址和數(shù)據(jù)。8輸入與非門74LS30的輸入端聯(lián)接到AT89C51的P2.0~P2.7高8位地址線引腳,輸出端聯(lián)接到82526的片選CS端,就將82526的寄存器組配置在AT89C51片外數(shù)據(jù)存儲區(qū)的最高256個地址區(qū)域。82526的INT引腳聯(lián)接到AT89C51的P3.2引腳,將82526的通訊事件配置為AT89C51的外部中斷0的事件。82526在處理通訊事件和數(shù)據(jù)的過程中,不能被訪問和存取數(shù)據(jù),通過RDY引腳上電平的高低來告知外界其是否處于可訪問狀態(tài),將RDY引腳聯(lián)接到AT89C51的P1.1引腳來控制AT89C51對82526的訪問。82C250是82526與實際物理總線間的接口。將82526的TX0引腳和RX0引腳分別與82C250的TXD引腳和RXD引腳相聯(lián),將82C250的RS引腳接地,使82C250在高速方式下工作。

1.2.3 串行通訊控制器和485總線接口電路

  AT89C51片內(nèi)集成了異步串行通訊模塊,不需在AT89C51片外擴展串行通訊控制器。網(wǎng)關(guān)中的485總線接口采用了MAXIM485。MAXIM485工作在半雙工方式下,因而需要對它處于接收狀態(tài)或發(fā)送狀態(tài)進行控制,將AT89C51的P1.0引腳與MAXIM485的DE引腳和RE引腳相聯(lián),可控制狀態(tài)的轉(zhuǎn)換。

2 網(wǎng)關(guān)軟件設(shè)計

  網(wǎng)關(guān)軟件主要由四部分功能模塊構(gòu)成:初始化模塊、通訊任務(wù)調(diào)度模塊、CAN總線通訊模塊和485總線通訊模塊。軟件由Franclin C51實現(xiàn)。

2.1 網(wǎng)關(guān)初始化

  網(wǎng)關(guān)在正常工作前需對相關(guān)的參數(shù)進行設(shè)置,包括AT89C51的異步串行通訊控制器及其它部分的初始化和82526的初始化。網(wǎng)關(guān)將串行通訊設(shè)置為工作方式2,串行通訊的波特率設(shè)為9600bps,開放外部中斷0并選擇電平觸發(fā)中斷方式;設(shè)置82526的控制寄存器,置位復(fù)位請求、出錯中斷、傳送中斷、同步和運行位;復(fù)位82526狀態(tài)寄存器,設(shè)置82526總線定時寄存器,CAN總線的波特率設(shè)為1Mbps;設(shè)置82526的TX0、TX1引腳為常態(tài)方式輸出。

2.2 通訊任務(wù)調(diào)度

  網(wǎng)關(guān)是485總線上的主設(shè)備,其余的設(shè)備均為從設(shè)備,所有的通訊任務(wù)都由網(wǎng)關(guān)發(fā)起。網(wǎng)關(guān)不斷地輪詢485總線上的從設(shè)備,獲得從設(shè)備的運行狀態(tài)數(shù)據(jù),通過CAN總線將這些數(shù)據(jù)轉(zhuǎn)發(fā)給列車控制器。在輪詢過程中,監(jiān)視是否有列車控制器發(fā)來的控制命令,優(yōu)先將控制命令發(fā)送給相應(yīng)的從設(shè)備。網(wǎng)關(guān)采用帶優(yōu)先級的輪詢策略。設(shè)某一設(shè)備的優(yōu)先級為m級,則所有設(shè)備至少被訪問一次后該設(shè)備被訪問m次,且這m次平均分布在總的訪問次數(shù)中。網(wǎng)關(guān)采用4級優(yōu)先級,建立缺省的設(shè)備—優(yōu)先級表并存儲在AT89C51的FLASH ROM中。根據(jù)設(shè)備—優(yōu)先級表建立設(shè)備輪詢環(huán)并存儲在6264中。列車控制器可發(fā)修改設(shè)備優(yōu)先級的命令給網(wǎng)關(guān),在線修改設(shè)備—優(yōu)先級表并重建設(shè)備輪詢環(huán)。當(dāng)82526接收到CAN總線的數(shù)據(jù)時就觸發(fā)AT89C51的外部中斷0,外部中斷0的中斷服務(wù)程序置有控制命令標(biāo)志,讀取82526中的數(shù)據(jù)并存儲在6264中開辟的控制命令FIFO隊列中,這就實現(xiàn)了對CAN總線上數(shù)據(jù)的監(jiān)控。通訊任務(wù)調(diào)度的流程如圖3和圖4所示。

?

?

2.3? CAN總線通訊

  82526是一種執(zhí)行CAN規(guī)范的CAN控制器,其內(nèi)部采用硬件實現(xiàn)了數(shù)據(jù)鏈路層的全部功能,因而這部分的程序只需將82526中的數(shù)據(jù)讀出和將數(shù)據(jù)寫入82526。對于發(fā)送報文部分,首先將485總線上設(shè)備的運行狀態(tài)數(shù)據(jù)按照在CAN總線傳輸數(shù)據(jù)的應(yīng)用層協(xié)議進行組裝;然后將82526的IMP訪問位鎖定并檢查82526的CPU訪問位是否鎖定,若未鎖定則將組裝好的數(shù)據(jù)寫到選擇的82526的通信目標(biāo)數(shù)據(jù)段;最后復(fù)位82526的發(fā)送狀態(tài)位和置位發(fā)送請求位并釋放IMP訪問位。由于網(wǎng)關(guān)選擇了82526接收到總線數(shù)據(jù)后給AT89C51一個外部中斷,因而對于接收報文部分,首先讀取82526的中斷指針,判斷中斷指針值與82526狀態(tài)寄存器的值是否相同,若不同則讀取82526中通信目標(biāo)數(shù)據(jù)段中數(shù)據(jù),最后復(fù)位82526的傳送狀態(tài)位并清除中斷指針。

2.4 485總線通訊

  485總線只定義了物理層通訊協(xié)議,因而基本的數(shù)據(jù)鏈路層協(xié)議由使用者來定義并由軟件實現(xiàn)。由于沖突檢測和同步通信功能無法由軟件實現(xiàn),因而485總線通常采用主從、異步式通信方式。要實現(xiàn)485總線可靠的多機通訊,應(yīng)實現(xiàn)站點識別和錯誤校驗這兩項數(shù)據(jù)鏈路層的功能。網(wǎng)關(guān)采用握手協(xié)議實現(xiàn)站點識別,采用CRC校驗實現(xiàn)錯誤校驗。具體地說,對于站點識別采用地址握手,即對于51系列微控制器,在通訊方式設(shè)為多機通訊時,通過對串行控制器SCON的TB8置位或清零表示是地址幀還是數(shù)據(jù)幀。在數(shù)據(jù)通信前先進行地址通信,網(wǎng)關(guān)置位SCON的SM2和TB8,將欲與數(shù)據(jù)通信的從設(shè)備的地址發(fā)送出去,從設(shè)備接收到這個地址,與本機地址比較,若相同則將地址發(fā)送,作為對網(wǎng)關(guān)的應(yīng)答,隨后將本機中SCON的SM2清零,若不同則保持不動作。網(wǎng)關(guān)收到相應(yīng)從設(shè)備的應(yīng)答后對本機中SCON的TB8清零,隨后就可以與相應(yīng)的從設(shè)備進行數(shù)據(jù)通信,它們之間的數(shù)據(jù)通信不會影響其余的從設(shè)備,這樣就實現(xiàn)了站點識別。對于錯誤檢驗,采用了CRC—CCITT標(biāo)準(zhǔn),校驗本原多項式為X16+X12+X5+1??紤]到采用基于微控制器的軟件實現(xiàn),不采用直接CRC模2除法算法,而采用串行通訊中XMODEM協(xié)議所使用的CRC查詢算法,這樣大大地提高了數(shù)據(jù)校驗的速度。CRC查詢算法要求構(gòu)造查詢表,可預(yù)先在微機上采用高級語言編制直接CRC模2除法的程序,分別對最低兩個字節(jié)為0、最高字節(jié)為0~255的三字節(jié)數(shù)模2除校驗本原多項式計算余數(shù),這些余數(shù)構(gòu)成一個256個雙字節(jié)的查詢表,然后將這個查詢表固化在AT89C51中的FLASH ROM中。上述方法實現(xiàn)了錯誤校驗。網(wǎng)關(guān)的485總線通訊流程如圖5所示。

?

?

  在列車控制系統(tǒng)中,采用了本文的CAN-485總線網(wǎng)關(guān),實現(xiàn)了列車中CAN總線與485總線的互聯(lián)。在實際應(yīng)用中,網(wǎng)關(guān)有效地控制了CAN總線與485總線之間的數(shù)據(jù)流;針對實時性要求高的設(shè)備與實時性要求一般的設(shè)備對主干網(wǎng)絡(luò)的帶寬和吞吐量需求不同,實現(xiàn)了按數(shù)據(jù)的實時性級別動態(tài)地分配網(wǎng)絡(luò)資源和調(diào)度通信任務(wù),有效地解決了列車總線控制系統(tǒng)的穩(wěn)定性問題,提高了系統(tǒng)的控制性能。

?

參考文獻

1 Gregory C.Walsh,Hong Ye.Scheduling of Networked Control?Systems. IEEE Control Systems Magazine, 2001(2)

2 Feng-Li Lian,James R.Moyne,Dawn M.Tilbury. Performance Evaluation of Control Networks: Ethernet,ControlNet and? DeviceNet. IEEE Control Systems Magazine, 2001(2)

3 余永權(quán). ATMEL 89 系列(MCS-51兼容)Flash單片機原理及應(yīng)用.北京:電子工業(yè)出版社,1997

4 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計. 北京:北京航空航天大學(xué)出版社,1996

5 陽憲惠.現(xiàn)場總線技術(shù)及其應(yīng)用. 北京:清華大學(xué)出版社, 1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。