摘 要: 針對(duì)電梯控制系統(tǒng)對(duì)分布式、實(shí)時(shí)性和模塊化的特點(diǎn)要求,設(shè)計(jì)了以AT91RM9200微處理器為核心、以MCP2510為CAN控制器的CAN通信節(jié)點(diǎn),從硬件和軟件兩方面詳細(xì)敘述了如何進(jìn)行CAN網(wǎng)絡(luò)節(jié)點(diǎn)的設(shè)計(jì),并將其成功應(yīng)用在電梯控制系統(tǒng)中,提高了系統(tǒng)實(shí)時(shí)響應(yīng)和抗干擾能力。
關(guān)鍵詞: CAN總線(xiàn); CAN控制器; 智能節(jié)點(diǎn); 電梯控制系統(tǒng); MCP2510
現(xiàn)場(chǎng)總線(xiàn)控制系統(tǒng)FCS(Fieldbus Control System)是一種非常典型的實(shí)現(xiàn)分布式網(wǎng)絡(luò)控制的總線(xiàn)結(jié)構(gòu)。它將工業(yè)控制現(xiàn)場(chǎng)大量的傳感器、電子控制單元和執(zhí)行機(jī)構(gòu)等裝置互連,實(shí)現(xiàn)高準(zhǔn)確性、快實(shí)時(shí)性的控制。CAN(Controller Area Network)總線(xiàn)屬于現(xiàn)場(chǎng)總線(xiàn)的范疇,它是一種有效支持分布式控制或?qū)崟r(shí)控制的多主串行總線(xiàn),能將掛接在其上作為網(wǎng)絡(luò)節(jié)點(diǎn)的智能設(shè)備連接成網(wǎng)絡(luò)系統(tǒng),并進(jìn)一步構(gòu)成自動(dòng)化系統(tǒng),實(shí)現(xiàn)控制的目的。CAN 總線(xiàn)通信具有速度快 (最高可達(dá)1 Mb/s)、傳輸距離長(zhǎng)(最遠(yuǎn)可達(dá)10 km)和干擾小等特點(diǎn),被認(rèn)為是最有前途的現(xiàn)場(chǎng)總線(xiàn)之一,被廣泛應(yīng)用于交通工具、智能樓宇、醫(yī)療儀器和工業(yè)現(xiàn)場(chǎng)控制等領(lǐng)域中[1]。
CAN總線(xiàn)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)是多個(gè)智能裝置節(jié)點(diǎn)分別連接在總線(xiàn)上構(gòu)成局域網(wǎng),進(jìn)行信息傳遞用以實(shí)現(xiàn)實(shí)時(shí)控制。設(shè)備控制器連接到CAN總線(xiàn)主要是通過(guò)CAN控制器和CAN驅(qū)動(dòng)器。CAN控制器主要分為兩大類(lèi):一類(lèi)直接集成在微控制器(MCU)上,即用于控制的MCU本身具有用于CAN總線(xiàn)通信的模塊;另一類(lèi)則是獨(dú)立可編程CAN控制器芯片。前者不需另外擴(kuò)展CAN口,集成度較高,但價(jià)格較昂貴;后者配置靈活,MCU的選擇范圍不受限制,獨(dú)立的CAN控制器功能也更加完善。CAN總線(xiàn)驅(qū)動(dòng)器提供了CAN總線(xiàn)控制器與物理總線(xiàn)之間的接口,是影響系統(tǒng)網(wǎng)絡(luò)性能的關(guān)鍵因素之一[2]。本文設(shè)計(jì)了以AT91RM9200微處理器為核心、以MCP2510為CAN控制器和以PCA82C250為總線(xiàn)驅(qū)動(dòng)器的CAN通信節(jié)點(diǎn),并應(yīng)用于電梯控制系統(tǒng)中,提高了系統(tǒng)實(shí)時(shí)響應(yīng)和抗干擾能力。
1 電梯控制系統(tǒng)結(jié)構(gòu)
電梯控制系統(tǒng)的結(jié)構(gòu)示意圖如圖1所示。對(duì)于一個(gè)單梯系統(tǒng),主要包括外呼控制器、內(nèi)選控制器和主控制器。外呼控制器分布于大樓各層電梯間內(nèi),主要負(fù)責(zé)收集和向主控制器傳送乘客目的樓層的方向(上行或下行)信息,還負(fù)責(zé)顯示目的樓層方向和當(dāng)前電梯所在樓層等信息。內(nèi)選控制器位于電梯轎廂內(nèi),主要負(fù)責(zé)收集和向主控制器傳送乘客目的樓層號(hào)(要去第幾層)信息,還負(fù)責(zé)顯示轎廂內(nèi)所有乘客的目的樓層號(hào)和當(dāng)前電梯所在樓層等信息。主控制器匯總接收到的外呼、內(nèi)選控制器的信息,依據(jù)規(guī)則進(jìn)行邏輯調(diào)度以控制電機(jī)實(shí)現(xiàn)轎廂運(yùn)行接送乘客,同時(shí)發(fā)送電梯運(yùn)行信息給各外呼、內(nèi)選控制器去顯示,此外,主控制器還兼有其他的擴(kuò)展功能。外呼控制器、內(nèi)選控制器和主控制器通過(guò)CAN總線(xiàn)進(jìn)行信息傳遞,它把三者連成網(wǎng)絡(luò)實(shí)現(xiàn)了單部電梯系統(tǒng)整體控制。在該控制系統(tǒng)中,外呼控制器、內(nèi)選控制器和主控制器是分別作為節(jié)點(diǎn)掛接到CAN總線(xiàn)上的。單部電梯的內(nèi)部系統(tǒng)結(jié)構(gòu)圖如圖1所示。
與傳統(tǒng)RS-485總線(xiàn)“主從”的工作方式相比,CAN總線(xiàn)采用“多主”的工作方式,把各個(gè)控制器看成網(wǎng)絡(luò)中平等自治的節(jié)點(diǎn),相互協(xié)調(diào)完成總的控制任務(wù),而且這樣的結(jié)構(gòu)也有利于提高系統(tǒng)的穩(wěn)定性。在CAN控制器的“多主”的工作方式中,網(wǎng)絡(luò)中的各節(jié)點(diǎn)都可根據(jù)總線(xiàn)訪問(wèn)優(yōu)先權(quán)(取決于報(bào)文標(biāo)識(shí)符)采用無(wú)損結(jié)構(gòu)的逐位仲裁方式競(jìng)爭(zhēng)向總線(xiàn)發(fā)送數(shù)據(jù),CAN協(xié)議廢除了站地址編碼而對(duì)通信數(shù)據(jù)進(jìn)行編碼,這可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這些特點(diǎn)使得CAN總線(xiàn)構(gòu)成的網(wǎng)絡(luò)各節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)時(shí)性強(qiáng),并且容易構(gòu)成冗余結(jié)構(gòu),提高了系統(tǒng)的可靠性和靈活性。采取“多主”的工作方式,各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)能根據(jù)本身的狀態(tài)是否發(fā)生變化來(lái)自主判斷是否發(fā)送信息,這樣與RS-485只能以主站輪詢(xún)的方式進(jìn)行通信相比,可以有效地減輕網(wǎng)絡(luò)負(fù)載,減小網(wǎng)絡(luò)時(shí)延,增加系統(tǒng)的實(shí)時(shí)性[3-4]。
對(duì)于目前建筑物中比較常見(jiàn)的由多個(gè)電梯組成的多梯系統(tǒng),由于要求其能夠在調(diào)度的性能上實(shí)現(xiàn)快速、高效、穩(wěn)定、節(jié)能,因此大多嵌入了一些優(yōu)化的電梯群控調(diào)度算法用以實(shí)現(xiàn)復(fù)雜控制。這就要求在各電梯獨(dú)立運(yùn)行的基礎(chǔ)上設(shè)置一個(gè)群控器用于綜合信息結(jié)合群控算法實(shí)現(xiàn)群組控制??梢圆捎肅AN總線(xiàn)將各單梯的主控制器與另外的群組控制器及監(jiān)控設(shè)備等相連組成更高一級(jí)的CAN網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)。如圖1中的外部群控CAN總線(xiàn)。
2 主控制器在CAN網(wǎng)絡(luò)中的節(jié)點(diǎn)設(shè)計(jì)
2.1 節(jié)點(diǎn)硬件設(shè)計(jì)
主控制器CAN節(jié)點(diǎn)硬件上主要包括MCU、CAN控制器和CAN驅(qū)動(dòng)器,CAN通信節(jié)點(diǎn)硬件電路原理圖如圖2所示。其由AT91RM9200通過(guò)SPI串行外設(shè)接口連接CAN控制器MCP2510進(jìn)行數(shù)據(jù)傳輸,MCP2510負(fù)責(zé)將數(shù)據(jù)再通過(guò)光電耦合器6N137連接到CAN驅(qū)動(dòng)器PCA82C250,最后掛在CAN網(wǎng)絡(luò)上與其他CAN通信節(jié)點(diǎn)進(jìn)行通信。
針對(duì)智能電梯控制系統(tǒng),除了基本的運(yùn)動(dòng)邏輯控制和CAN節(jié)點(diǎn)網(wǎng)絡(luò)通信外,還有很多智能功能模塊,如視頻監(jiān)控、指紋識(shí)別、語(yǔ)音報(bào)警和嵌入智能調(diào)度算法等,因此要嵌入操作系統(tǒng)進(jìn)行多任務(wù)實(shí)時(shí)控制,這就對(duì)MCU性能提出了較高的需求,采用雙51單片機(jī)分別進(jìn)行邏輯控制和CAN節(jié)點(diǎn)通信已經(jīng)不能滿(mǎn)足要求。MCU選取ATMEL公司生產(chǎn)的32 bit ARM處理器AT91RM9200,它是一款性能優(yōu)良的微處理器,在180 MHz頻率下運(yùn)算速度高達(dá)200 MIPS;存儲(chǔ)器容量大,SRAM為16 KB,ROM為128 KB,還可以另外通過(guò)配置外部總線(xiàn)接口擴(kuò)展多種類(lèi)型的存儲(chǔ)器,如SDRAM、靜態(tài)存儲(chǔ)器、Burst Flash、無(wú)縫連接的CompactFlash、SmartMedia及NAND Flash等,適合于對(duì)性能和價(jià)格要求苛刻的嵌入式設(shè)計(jì)。AT91RM9200是一款工業(yè)級(jí)MCU,對(duì)于工業(yè)控制非常適合,不但性能卓越,而且價(jià)格相對(duì)低廉,其集成度也很高,幾乎包含了嵌入式應(yīng)用領(lǐng)域內(nèi)的各種主流接口,特別是AT91RM9200本身含有用于CAN總線(xiàn)通信的SPI串口通信單元,其4路SPI接口可以并行連接4路CAN網(wǎng)絡(luò),很適合進(jìn)行多層次電梯控制的CAN網(wǎng)絡(luò)構(gòu)建。圖1的電梯控制結(jié)構(gòu)為單梯控制和群組控制2 層CAN網(wǎng)絡(luò)結(jié)構(gòu)。
MCP2510是Microchip公司推出的具有SPI接口的獨(dú)立CAN控制器。它完全支持CAN V2.0B技術(shù)規(guī)范,通信速率最高可達(dá)1 Mb/s,內(nèi)含3個(gè)發(fā)送緩沖器、2個(gè)接收緩沖器、6個(gè)29 bit驗(yàn)收濾波寄存器和2個(gè)29 bit驗(yàn)收屏蔽寄存器[2]。其SPI接口時(shí)鐘頻率最高可達(dá)10 MHz,可滿(mǎn)足1個(gè)SPI主機(jī)接口擴(kuò)展多路CAN總線(xiàn)接口的需要[3]。
CAN驅(qū)動(dòng)器選擇PHILIPS公司的PCA82C250,其完全符合ISO-11898標(biāo)準(zhǔn),用以完成對(duì)物理總線(xiàn)差動(dòng)發(fā)送和接收的功能。PCA82C250集成了CAN協(xié)議物理層的部分功能,是CAN控制器和物理總線(xiàn)之間的接口。它主要實(shí)現(xiàn)了差分電信號(hào)的轉(zhuǎn)換,同時(shí)具有抗共模干擾、電磁干擾、射頻干擾的電氣保護(hù)功能以及防止電池和地之間發(fā)生短路過(guò)熱保護(hù)等功能。PCA82C250可以連接110個(gè)節(jié)點(diǎn),滿(mǎn)足CAN總線(xiàn)5 kb/s~1 Mb/s高速率通信的要求[5]。
為了增強(qiáng)CAN總線(xiàn)節(jié)點(diǎn)的抗干擾能力,在CAN控制器MCP2510與CAN驅(qū)動(dòng)器PCA82C250之間加入了光電耦合器6N137進(jìn)行隔離。為了進(jìn)一步提高節(jié)點(diǎn)的穩(wěn)定性和安全性,PCA82C250的CANH和CANL與地之間并聯(lián)2個(gè)30 pF的電容來(lái)濾除總線(xiàn)上高頻干擾;CAN總線(xiàn)接入端與地之間分別反接1個(gè)二級(jí)管,可以在總線(xiàn)電壓發(fā)生瞬變干擾時(shí)起保護(hù)作用。
2.2 節(jié)點(diǎn)軟件設(shè)計(jì)
電梯主控器的軟件設(shè)計(jì)主要分為驅(qū)動(dòng)程序和應(yīng)用程序兩部分。主控制器主要有CAN總線(xiàn)、以太網(wǎng)、RS232、數(shù)字量輸入輸出和人機(jī)接口5個(gè)模塊。在主控制器MCU上添加實(shí)時(shí)操作系統(tǒng)ARMlinux可以有效地進(jìn)行多任務(wù)調(diào)度,滿(mǎn)足智能電梯多功能模塊實(shí)時(shí)的需求。在驅(qū)動(dòng)程序方面,重點(diǎn)對(duì)AT91RM9200的相關(guān)功能寄存器、外圍器件MCP2510的工作方式和通信方式及其寄存器進(jìn)行配置,然后編寫(xiě)調(diào)試各模塊驅(qū)動(dòng)程序;在應(yīng)用程序方面,將在深入研究電梯工作原理的基礎(chǔ)上,結(jié)合嵌入式系統(tǒng)應(yīng)用程序的設(shè)計(jì)方法,編寫(xiě)電梯控制系統(tǒng)的基本邏輯程序和智能模塊應(yīng)用程序。
在整個(gè)電梯控制系統(tǒng)的設(shè)計(jì)中,CAN總線(xiàn)起著進(jìn)行網(wǎng)絡(luò)通信的作用。這里著重介紹主控制器的CAN總線(xiàn)模塊的節(jié)點(diǎn)軟件設(shè)計(jì)。
從圖2可以看出,MCU對(duì)CAN控制器MCP2510的控制是通過(guò)SPI串口來(lái)完成的,MCU向CAN控制器MCP2510寫(xiě)SPI命令,可以對(duì)其進(jìn)行初始化配置,讀寫(xiě)報(bào)文幀。
下面先介紹一下針對(duì)MCP2510定義的一些較重要SPI控制命令,如表1所示[4]。
?。?)節(jié)點(diǎn)初始化
節(jié)點(diǎn)的初始化包括AT91RM9200的SPI初始化和MCP2510的初始化。SPI初始化包括PIO口配置、時(shí)鐘配置、中斷配置、工作模式配置和MCP2510片選分配;MCP2510的初始化包括對(duì)各個(gè)控制寄存器的初值和波特率的設(shè)定,根據(jù)已經(jīng)設(shè)定好的節(jié)點(diǎn)標(biāo)志為兩個(gè)接收緩沖區(qū)配置屏蔽寄存器和濾波寄存器。
?。?)報(bào)文發(fā)送
報(bào)文的發(fā)送是在MCU的控制下通過(guò)SPI口對(duì)MCP2510進(jìn)行操作完成的。節(jié)點(diǎn)MCU將要發(fā)送的數(shù)據(jù)按照CAN通信的幀定義進(jìn)行封裝,調(diào)用SPI寫(xiě)控制命令將數(shù)據(jù)寫(xiě)入MCP2510指定地址起始的發(fā)送緩沖區(qū)寄存器中(TXBn,n=1、2、3),然后調(diào)用SPI位修改控制命令將MCP2510相應(yīng)的發(fā)送緩沖控制寄存器TXBnCTRL的TXREQ位置1,啟動(dòng)發(fā)送過(guò)程。發(fā)送結(jié)束后TXREQ位自動(dòng)清零。返回等待繼續(xù)發(fā)送或接收CAN報(bào)文幀。
(3)報(bào)文接收
報(bào)文的接收也是在MCU的控制下通過(guò)SPI口對(duì)MCP2510進(jìn)行操作完成的。首先,節(jié)點(diǎn)MCU查詢(xún)標(biāo)識(shí)位t(初始t=0,表示MCP2510沒(méi)有收到符合本節(jié)點(diǎn)屏蔽濾波的有效報(bào)文幀)以檢測(cè)MCP2510是否接收到來(lái)自CAN總線(xiàn)的報(bào)文幀,如果t=0,返回繼續(xù)檢測(cè);如果t=1,則表示MCP2510已經(jīng)收到符合本節(jié)點(diǎn)屏蔽濾波的有效報(bào)文幀。由t=0變?yōu)閠=1是因?yàn)槿绻鸐CP2510的某一緩沖區(qū)RXBm(m=1,2)收到有效報(bào)文幀后,MCP2510的中斷標(biāo)志寄存器CANINTF的相應(yīng)位RXmIF會(huì)自動(dòng)置1,產(chǎn)生相應(yīng)的中斷,進(jìn)入中斷處理程序,則MCU開(kāi)始調(diào)用SPI讀控制命令將此時(shí)已經(jīng)存放在接收緩沖區(qū)的CAN報(bào)文幀讀到MCU的內(nèi)存中。待確定接收完畢后,清零引起中斷的中斷標(biāo)志位RXmIF。返回等待繼續(xù)接收或發(fā)送CAN報(bào)文幀。
?。?)中斷處理程序
MCP2515收到CAN報(bào)文幀后,產(chǎn)生中斷并將INT引腳置低。AT91RM9200響應(yīng)外部中斷,并調(diào)用與外部中斷相對(duì)應(yīng)的中斷處理例程。
本文利用CAN總線(xiàn)通信具有速度快、傳輸距離長(zhǎng)和干擾小的特點(diǎn),介紹了實(shí)現(xiàn)電梯控制系統(tǒng)各組成控制器的通信問(wèn)題,詳細(xì)敘述了如何從硬件和軟件兩方面實(shí)現(xiàn)CAN總線(xiàn)的節(jié)點(diǎn)設(shè)計(jì)??梢钥闯?,在復(fù)雜系統(tǒng)設(shè)計(jì)中用CAN總線(xiàn)解決通信問(wèn)題是不錯(cuò)的選擇,其有很好的推廣價(jià)值。
參考文獻(xiàn)
[1] 鄔寬明.CAN總線(xiàn)原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1996.
[2] 饒運(yùn)濤,王進(jìn)宏.現(xiàn)場(chǎng)總線(xiàn)CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[3] Microchip公司.MCP2510,stand-alone CAN controller with SPI interface[Z].2003.
[4] 楊如峰,趙國(guó)軍,鄭尚透.CAN控制器MCP2510在電梯召喚系統(tǒng)中的應(yīng)用[J].機(jī)電設(shè)備,2005,26(6):38-40.
[5] 李貌,秦霆鎬,閆世曉.MCP2510在CAN總線(xiàn)系統(tǒng)智能節(jié)點(diǎn)的應(yīng)用[J].微計(jì)算機(jī)信息,2005(7):37-39.