摘? 要: 介紹了列車總線控制系統(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)的軟,、硬件具體實(shí)現(xiàn)方案。
關(guān)鍵詞: CAN總線? 485總線? 互聯(lián)? INTEL82526? CAN—485總線網(wǎng)關(guān)
?
隨著現(xiàn)場(chǎng)總線控制技術(shù)的發(fā)展和成熟,越來(lái)越多的集散控制系統(tǒng)采用現(xiàn)場(chǎng)總線來(lái)構(gòu)建控制系統(tǒng),。在大規(guī)模,、高性能的復(fù)雜大系統(tǒng)中存在著大量的被控設(shè)備,而且每個(gè)被控設(shè)備有著不同的實(shí)時(shí)性" title="實(shí)時(shí)性">實(shí)時(shí)性要求。從網(wǎng)絡(luò)化控制的角度分析可知,簡(jiǎn)單地采用一條現(xiàn)場(chǎng)總線把復(fù)雜大系統(tǒng)中的所有被控設(shè)備聯(lián)接起來(lái)會(huì)降低整個(gè)系統(tǒng)的穩(wěn)定性和可控性,是性能不好的控制網(wǎng)絡(luò)拓?fù)湫问?。針?duì)特定的現(xiàn)場(chǎng)總線,在不同的應(yīng)用環(huán)境中,一條網(wǎng)絡(luò)段上通訊結(jié)點(diǎn)數(shù)有一個(gè)合理范圍,超出這個(gè)范圍將導(dǎo)致網(wǎng)絡(luò)控制性能的惡化[1~2],。另外,實(shí)時(shí)性差異較大的設(shè)備共存于一條網(wǎng)絡(luò)段也易于造成整個(gè)系統(tǒng)不穩(wěn)定。因而,在一個(gè)復(fù)雜的網(wǎng)絡(luò)化控制系統(tǒng)中,按實(shí)時(shí)性和功能性分段,構(gòu)造多個(gè)現(xiàn)場(chǎng)總線段是一種較為合理的拓?fù)湫问?利于整個(gè)系統(tǒng)的穩(wěn)定和性能的優(yōu)化[2]。從性價(jià)比角度看,兩段實(shí)時(shí)性差異較大的網(wǎng)絡(luò)段采用相同的現(xiàn)場(chǎng)總線構(gòu)建是不劃算的,采用合適的兩種現(xiàn)場(chǎng)總線分別構(gòu)建較為合理,??刂凭W(wǎng)絡(luò)的分段和網(wǎng)段采用不同的現(xiàn)場(chǎng)總線構(gòu)建帶來(lái)了兩個(gè)異種現(xiàn)場(chǎng)總線之間互聯(lián)的問(wèn)題。本文所探討的列車總線中CAN總線與485總線網(wǎng)關(guān)為兩個(gè)異種現(xiàn)場(chǎng)總線間的互聯(lián)提供了一種解決方案,。
1 網(wǎng)關(guān)硬件設(shè)計(jì)
1.1 INTEL 82526簡(jiǎn)介
82526是INTEL公司生產(chǎn)的執(zhí)行CAN總線規(guī)范的CAN控制器,它包括CAN總線規(guī)范所規(guī)定的所有硬件模塊(傳輸層和目標(biāo)層),。82526與微處理器或微控制器" title="微控制器">微控制器聯(lián)接時(shí)能夠完成物理層和數(shù)據(jù)鏈路層的基本功能。82526內(nèi)部結(jié)構(gòu)原理圖如圖1所示,。82526采用分時(shí)復(fù)用的8位地址/數(shù)據(jù)總線,可與INTEL系列的微處理器或微控制器協(xié)同工作。片內(nèi)雙口RAM作為CPU和接口管理處理器之間的通信緩存接口,CPU初始化全局的狀態(tài)和控制寄存器,并在雙口RAM內(nèi)建立通信目標(biāo)用以接收和發(fā)送報(bào)文,。位流處理器控制接口管理處理器和總線之間的數(shù)據(jù)流,。另外,位流處理器也控制收發(fā)控制邏輯和錯(cuò)誤管理邏輯??偩€定時(shí)邏輯則通過(guò)差分輸入比較器監(jiān)視總線并確定串行總線的位定時(shí),。接口管理處理器執(zhí)行主控制器命令并控制串行總線上的數(shù)據(jù)傳送、全局狀態(tài)和控制寄存器位,。處理器接口單元是82526到CPU的接口,。
?
?
1.2 網(wǎng)關(guān)的硬件結(jié)構(gòu)
網(wǎng)關(guān)的硬件電路原理圖如圖2所示。整個(gè)硬件電路由三部分構(gòu)成:微控制器及其外圍擴(kuò)展電路,CAN總線控制器及CAN總線接口電路,異步串行通訊" title="串行通訊">串行通訊控制器和485總線接口電路,。
?
?
1.2.1 微控制器及其外圍擴(kuò)展電路
網(wǎng)關(guān)采用了ATMEL公司的AT89C51型微控制器,。AT89C51是與8X51系列微控制器兼容的增強(qiáng)型微控制器,其內(nèi)部集成了4K字節(jié)的FLASH ROM[3]。由于網(wǎng)關(guān)的軟件及參數(shù)查詢表所占用存儲(chǔ)空間小于4K,網(wǎng)關(guān)沒(méi)有在AT89C51外擴(kuò)展程序存儲(chǔ)器,。AT89C51是網(wǎng)關(guān)處理,、控制和轉(zhuǎn)換總線數(shù)據(jù)的核心,其主要功能有三個(gè):一是CAN總線控制器82526接收到CAN總線上其它通訊結(jié)點(diǎn)的數(shù)據(jù)后,交給AT89C51處理,將這些數(shù)據(jù)轉(zhuǎn)換為預(yù)先定義的485總線上傳輸數(shù)據(jù)的協(xié)議格式,由AT89C51控制異步串行通訊控制器通過(guò)485總線接口MAXIM485將這些數(shù)據(jù)發(fā)送到485總線上;二是AT89C51將MAXIM485接收到的485總線上的數(shù)據(jù)進(jìn)行處理,按照82526數(shù)據(jù)組織的格式轉(zhuǎn)換這些數(shù)據(jù),將這些數(shù)據(jù)交給82526,由它將這些數(shù)據(jù)發(fā)送到CAN總線上;三是AT89C51按照預(yù)先定義的策略對(duì)通訊任務(wù)進(jìn)行合理的任務(wù)調(diào)度。網(wǎng)關(guān)接收CAN或485總線來(lái)的數(shù)據(jù),應(yīng)將這些數(shù)據(jù)緩沖存儲(chǔ),才可以將這些數(shù)據(jù)進(jìn)行處理,、轉(zhuǎn)換和轉(zhuǎn)發(fā),。另外,通過(guò)CAN或485總線發(fā)送數(shù)據(jù)時(shí)需要緩沖發(fā)送的數(shù)據(jù),要開(kāi)辟發(fā)送緩沖區(qū)?;谏鲜鲂枰?在AT89C51外擴(kuò)展一片數(shù)據(jù)存儲(chǔ)器6264作數(shù)據(jù)暫存,、緩沖使用。
1.2.2 CAN總線控制器及CAN總線接口電路
CAN總線控制器82526具有256個(gè)8位寄存器,只需8根地址線,。網(wǎng)關(guān)將82526寄存器組配置在AT89C51片外數(shù)據(jù)存儲(chǔ)區(qū)的最高256個(gè)地址區(qū)域,。82526兼容INTEL方式,其引腳AD0~AD7是分時(shí)復(fù)用的地址/數(shù)據(jù)總線,不需要通過(guò)地址鎖存器分離地址和數(shù)據(jù),只要直接將AD0~AD7聯(lián)接到AT89C51的P0.0~P0.7引腳,將ALE引腳與AT89C51的ALE引腳相聯(lián),就可分時(shí)得到正確的地址和數(shù)據(jù)。8輸入與非門74LS30的輸入端聯(lián)接到AT89C51的P2.0~P2.7高8位地址線引腳,輸出端聯(lián)接到82526的片選CS端,就將82526的寄存器組配置在AT89C51片外數(shù)據(jù)存儲(chǔ)區(qū)的最高256個(gè)地址區(qū)域,。82526的INT引腳聯(lián)接到AT89C51的P3.2引腳,將82526的通訊事件配置為AT89C51的外部中斷0的事件,。82526在處理通訊事件和數(shù)據(jù)的過(guò)程中,不能被訪問(wèn)和存取數(shù)據(jù),通過(guò)RDY引腳上電平的高低來(lái)告知外界其是否處于可訪問(wèn)狀態(tài),將RDY引腳聯(lián)接到AT89C51的P1.1引腳來(lái)控制AT89C51對(duì)82526的訪問(wèn)。82C250是82526與實(shí)際物理總線間的接口,。將82526的TX0引腳和RX0引腳分別與82C250的TXD引腳和RXD引腳相聯(lián),將82C250的RS引腳接地,使82C250在高速方式下工作,。
1.2.3 串行通訊控制器和485總線接口電路
AT89C51片內(nèi)集成了異步串行通訊模塊,不需在AT89C51片外擴(kuò)展串行通訊控制器。網(wǎng)關(guān)中的485總線接口采用了MAXIM485。MAXIM485工作在半雙工方式下,因而需要對(duì)它處于接收狀態(tài)或發(fā)送狀態(tài)進(jìn)行控制,將AT89C51的P1.0引腳與MAXIM485的DE引腳和RE引腳相聯(lián),可控制狀態(tài)的轉(zhuǎn)換,。
2 網(wǎng)關(guān)軟件設(shè)計(jì)
網(wǎng)關(guān)軟件主要由四部分功能模塊構(gòu)成:初始化模塊,、通訊任務(wù)調(diào)度模塊、CAN總線通訊模塊和485總線通訊模塊,。軟件由Franclin C51實(shí)現(xiàn),。
2.1 網(wǎng)關(guān)初始化
網(wǎng)關(guān)在正常工作前需對(duì)相關(guān)的參數(shù)進(jìn)行設(shè)置,包括AT89C51的異步串行通訊控制器及其它部分的初始化和82526的初始化。網(wǎng)關(guān)將串行通訊設(shè)置為工作方式2,串行通訊的波特率設(shè)為9600bps,開(kāi)放外部中斷0并選擇電平觸發(fā)中斷方式;設(shè)置82526的控制寄存器,置位復(fù)位請(qǐng)求,、出錯(cuò)中斷,、傳送中斷、同步和運(yùn)行位;復(fù)位82526狀態(tài)寄存器,設(shè)置82526總線定時(shí)寄存器,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è)備的運(yùn)行狀態(tài)數(shù)據(jù),通過(guò)CAN總線將這些數(shù)據(jù)轉(zhuǎn)發(fā)給列車控制器,。在輪詢過(guò)程中,監(jiān)視是否有列車控制器發(fā)來(lái)的控制命令,優(yōu)先將控制命令發(fā)送給相應(yīng)的從設(shè)備,。網(wǎng)關(guān)采用帶優(yōu)先級(jí)的輪詢策略。設(shè)某一設(shè)備的優(yōu)先級(jí)為m級(jí),則所有設(shè)備至少被訪問(wèn)一次后該設(shè)備被訪問(wèn)m次,且這m次平均分布在總的訪問(wèn)次數(shù)中,。網(wǎng)關(guān)采用4級(jí)優(yōu)先級(jí),建立缺省的設(shè)備—優(yōu)先級(jí)表并存儲(chǔ)在AT89C51的FLASH ROM中,。根據(jù)設(shè)備—優(yōu)先級(jí)表建立設(shè)備輪詢環(huán)并存儲(chǔ)在6264中。列車控制器可發(fā)修改設(shè)備優(yōu)先級(jí)的命令給網(wǎng)關(guān),在線修改設(shè)備—優(yōu)先級(jí)表并重建設(shè)備輪詢環(huán),。當(dāng)82526接收到CAN總線的數(shù)據(jù)時(shí)就觸發(fā)AT89C51的外部中斷0,外部中斷0的中斷服務(wù)程序置有控制命令標(biāo)志,讀取82526中的數(shù)據(jù)并存儲(chǔ)在6264中開(kāi)辟的控制命令FIFO隊(duì)列中,這就實(shí)現(xiàn)了對(duì)CAN總線上數(shù)據(jù)的監(jiān)控,。通訊任務(wù)調(diào)度的流程如圖3和圖4所示。
?
?
2.3? CAN總線通訊
82526是一種執(zhí)行CAN規(guī)范的CAN控制器,其內(nèi)部采用硬件實(shí)現(xiàn)了數(shù)據(jù)鏈路層的全部功能,因而這部分的程序只需將82526中的數(shù)據(jù)讀出和將數(shù)據(jù)寫(xiě)入82526,。對(duì)于發(fā)送報(bào)文部分,首先將485總線上設(shè)備的運(yùn)行狀態(tài)數(shù)據(jù)按照在CAN總線傳輸數(shù)據(jù)的應(yīng)用層協(xié)議進(jìn)行組裝;然后將82526的IMP訪問(wèn)位鎖定并檢查82526的CPU訪問(wèn)位是否鎖定,若未鎖定則將組裝好的數(shù)據(jù)寫(xiě)到選擇的82526的通信目標(biāo)數(shù)據(jù)段;最后復(fù)位82526的發(fā)送狀態(tài)位和置位發(fā)送請(qǐng)求位并釋放IMP訪問(wèn)位,。由于網(wǎng)關(guān)選擇了82526接收到總線數(shù)據(jù)后給AT89C51一個(gè)外部中斷,因而對(duì)于接收?qǐng)?bào)文部分,首先讀取82526的中斷指針,判斷中斷指針值與82526狀態(tài)寄存器的值是否相同,若不同則讀取82526中通信目標(biāo)數(shù)據(jù)段中數(shù)據(jù),最后復(fù)位82526的傳送狀態(tài)位并清除中斷指針。
2.4 485總線通訊
485總線只定義了物理層通訊協(xié)議,因而基本的數(shù)據(jù)鏈路層協(xié)議由使用者來(lái)定義并由軟件實(shí)現(xiàn),。由于沖突檢測(cè)和同步通信功能無(wú)法由軟件實(shí)現(xiàn),因而485總線通常采用主從,、異步式通信方式。要實(shí)現(xiàn)485總線可靠的多機(jī)通訊,應(yīng)實(shí)現(xiàn)站點(diǎn)識(shí)別和錯(cuò)誤校驗(yàn)這兩項(xiàng)數(shù)據(jù)鏈路層的功能,。網(wǎng)關(guān)采用握手協(xié)議實(shí)現(xiàn)站點(diǎn)識(shí)別,采用CRC校驗(yàn)實(shí)現(xiàn)錯(cuò)誤校驗(yàn),。具體地說(shuō),對(duì)于站點(diǎn)識(shí)別采用地址握手,即對(duì)于51系列微控制器,在通訊方式設(shè)為多機(jī)通訊時(shí),通過(guò)對(duì)串行控制器SCON的TB8置位或清零表示是地址幀還是數(shù)據(jù)幀。在數(shù)據(jù)通信前先進(jìn)行地址通信,網(wǎng)關(guān)置位SCON的SM2和TB8,將欲與數(shù)據(jù)通信的從設(shè)備的地址發(fā)送出去,從設(shè)備接收到這個(gè)地址,與本機(jī)地址比較,若相同則將地址發(fā)送,作為對(duì)網(wǎng)關(guān)的應(yīng)答,隨后將本機(jī)中SCON的SM2清零,若不同則保持不動(dòng)作,。網(wǎng)關(guān)收到相應(yīng)從設(shè)備的應(yīng)答后對(duì)本機(jī)中SCON的TB8清零,隨后就可以與相應(yīng)的從設(shè)備進(jìn)行數(shù)據(jù)通信,它們之間的數(shù)據(jù)通信不會(huì)影響其余的從設(shè)備,這樣就實(shí)現(xiàn)了站點(diǎn)識(shí)別,。對(duì)于錯(cuò)誤檢驗(yàn),采用了CRC—CCITT標(biāo)準(zhǔn),校驗(yàn)本原多項(xiàng)式為X16+X12+X5+1??紤]到采用基于微控制器的軟件實(shí)現(xiàn),不采用直接CRC模2除法算法,而采用串行通訊中XMODEM協(xié)議所使用的CRC查詢算法,這樣大大地提高了數(shù)據(jù)校驗(yàn)的速度,。CRC查詢算法要求構(gòu)造查詢表,可預(yù)先在微機(jī)上采用高級(jí)語(yǔ)言編制直接CRC模2除法的程序,分別對(duì)最低兩個(gè)字節(jié)為0、最高字節(jié)為0~255的三字節(jié)數(shù)模2除校驗(yàn)本原多項(xiàng)式計(jì)算余數(shù),這些余數(shù)構(gòu)成一個(gè)256個(gè)雙字節(jié)的查詢表,然后將這個(gè)查詢表固化在AT89C51中的FLASH ROM中,。上述方法實(shí)現(xiàn)了錯(cuò)誤校驗(yàn),。網(wǎng)關(guān)的485總線通訊流程如圖5所示,。
?
?
在列車控制系統(tǒng)中,采用了本文的CAN-485總線網(wǎng)關(guān),實(shí)現(xiàn)了列車中CAN總線與485總線的互聯(lián)。在實(shí)際應(yīng)用中,網(wǎng)關(guān)有效地控制了CAN總線與485總線之間的數(shù)據(jù)流;針對(duì)實(shí)時(shí)性要求高的設(shè)備與實(shí)時(shí)性要求一般的設(shè)備對(duì)主干網(wǎng)絡(luò)的帶寬和吞吐量需求不同,實(shí)現(xiàn)了按數(shù)據(jù)的實(shí)時(shí)性級(jí)別動(dòng)態(tài)地分配網(wǎng)絡(luò)資源和調(diào)度通信任務(wù),有效地解決了列車總線控制系統(tǒng)的穩(wěn)定性問(wèn)題,提高了系統(tǒng)的控制性能,。
?
參考文獻(xiàn)
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單片機(jī)原理及應(yīng)用.北京:電子工業(yè)出版社,1997
4 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,1996
5 陽(yáng)憲惠.現(xiàn)場(chǎng)總線技術(shù)及其應(yīng)用. 北京:清華大學(xué)出版社,, 1999