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