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