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