CAN總線(xiàn)在機車(chē)監控系統中的應用
以Philips公司的SJA1000為例,介紹了CAN現場(chǎng)總線(xiàn)的特點(diǎn),控制器的功能、結構和CAN2.0B總線(xiàn)協(xié)議的基本內容,闡述了一個(gè)基于CAN總線(xiàn)的火車(chē)機車(chē)監控系統,及其系統性能要求、系統硬件構建、軟件設計思路和應用結果,由此說(shuō)明CAN總線(xiàn)的優(yōu)點(diǎn)及其用于工業(yè)現場(chǎng)控制系統的一個(gè)通用設計過(guò)程。
關(guān)鍵詞:CAN,現場(chǎng)總線(xiàn),SJA1000初始化,機車(chē)監控系統,信號檢測,局域網(wǎng)
1 引 言
對火車(chē)機車(chē)監控系統而言,數據測量/傳輸的快速性、準確性、可靠性、通訊的靈活性都是至關(guān)重要的。以前的機車(chē)數據監控僅僅提供現場(chǎng)數據的顯示和報警,在各設備上加智能儀表,比較分散,不便于觀(guān)察機車(chē)運行情況和進(jìn)行及時(shí)檢修,機車(chē)運行數據也無(wú)法保存,而這些數據是查清機車(chē)故障原因和檢修的重要依據;智能儀表的各種操作,如調零、限值、精度都因環(huán)境和人為因素,影響了簡(jiǎn)單儀表的顯示、報警功能,加之工作現場(chǎng)環(huán)境惡劣(高溫、震動(dòng)、電磁波輻射等),導致其實(shí)時(shí)性、準確性都較差。隨著(zhù)國內現場(chǎng)總線(xiàn)技術(shù)的發(fā)展,有必要及時(shí)更新原來(lái)的檢測系統。
機車(chē)監控系統本身有幾十個(gè)數據采集節點(diǎn)(采用單片微機AT89C51),一個(gè)上位工控機負責數據存儲和記錄,由于采集點(diǎn)多、采集頻率較高(20Hz),因此,總線(xiàn)上的數據通常比較擁擠,而系統對數據傳輸的準確性、報警數據的實(shí)時(shí)性要求特別高,鑒于此,我們選擇CAN現場(chǎng)總線(xiàn)搭建數據平臺,它兼具了靈活性、實(shí)時(shí)性、準確性、可靠性各方面的優(yōu)勢。
CAN是控制器局域網(wǎng)絡(luò )(Controller Area Net)的簡(jiǎn)稱(chēng),是80年代德國奔馳汽車(chē)公司制定的一種串行通訊協(xié)議,主要用于汽車(chē)多個(gè)控制設備和多個(gè)儀器儀表之間的數據通訊,鏈路層采用CAN2.0B協(xié)議?,F在,它已廣泛應用于各種工業(yè)現場(chǎng),特別適用于做優(yōu)化、分析及維護的系統。90年代,國內開(kāi)始對CAN總線(xiàn)應用進(jìn)行研究,目前已在諸多領(lǐng)域中應用CAN總線(xiàn)技術(shù)。
本系統就是一個(gè)依照CAN2.0B構建的局域網(wǎng),總線(xiàn)控制器采用德國Philips公司的SJA1000,驅動(dòng)器為與其匹配的PCA82C250,下位機和上位機通過(guò)CANH、CANL雙絞線(xiàn)進(jìn)行雙向通信。此系統的整個(gè)硬件結構又可以作為CAN網(wǎng)絡(luò )的一個(gè)標準節點(diǎn),構成樹(shù)狀網(wǎng)絡(luò ),它是CAN總線(xiàn)系統的最小構成和典型應用。
2 CAN總線(xiàn)特點(diǎn)簡(jiǎn)介
CAN總線(xiàn)的最大特征就是,網(wǎng)絡(luò )內各節點(diǎn)以多主方式工作,各節點(diǎn)在任意時(shí)刻都可以點(diǎn)對點(diǎn)、一點(diǎn)對多點(diǎn)向其他節點(diǎn)發(fā)送信息,不分主從,靈活性好。
CAN總線(xiàn)上同時(shí)傳送的數據采用非破壞性仲裁,ID小的優(yōu)先傳送,低優(yōu)先級數據延遲發(fā)送,這對負載較重的網(wǎng)絡(luò )解決網(wǎng)絡(luò )癱瘓、網(wǎng)絡(luò )阻塞及提高效率很有效。
CAN還有較強的校驗功能,出錯的數據自動(dòng)重新發(fā)送,可靠性很高。
另外,CAN通訊介質(zhì)選擇雙絞線(xiàn),機車(chē)現場(chǎng)空間狹窄,雙絞線(xiàn)的現場(chǎng)布線(xiàn)、安裝、拆卸都比較簡(jiǎn)單。最大通信距離長(cháng)達10km,比特率可達1Mbps(通信距離較大時(shí),比特率會(huì )有所降低),可同時(shí)傳送16個(gè)報文。Philips公司的SJA1000的工作溫度范圍:-40℃~+125℃,存儲溫度范圍:-65℃~+150℃。
對于系統選用的SJA1000CAN控制器,其功能模塊主要有:接口管理邏輯(Interface ManagementLogic)、接收FIFO棧(Receive FIFO)、接收過(guò)濾器(Acceptance Filter)、發(fā)送緩沖器(Transmit Buffer)和CAN核心模塊(CAN Core Block),結構如圖1所示(見(jiàn)Philips Semiconductors公司的資料:ApplicationNote——SJA1000 Stand-alone CAN ControllerAN97076,1997)。
接口管理邏輯主要處理和微控制器的信號交換,通過(guò)CS、ALE/AS、RD、WR、INT等控制信號與微控制器進(jìn)行數據讀寫(xiě)。而CAN核心模塊就是CAN2.0B的執行部分。
接收過(guò)濾器接收經(jīng)CAN核心模塊轉換過(guò)的數據,通過(guò)寄存器接收碼寄存器(Acceptance CodeRegister,ACR)、接收屏蔽寄存器(Acceptance MaskRegister,AMR)做過(guò)濾處理,符合ID要求的數據才予以接收。ACR提供本機ID,AMR提供ID過(guò)濾時(shí)的有效位信息。接收FIFO棧用來(lái)暫存通過(guò)過(guò)濾器過(guò)濾而接收的數據。
發(fā)送緩沖器(TB)存儲欲發(fā)送的數據,CAN核心模塊從發(fā)送緩沖器讀數,依照CAN2.0B協(xié)議發(fā)送數據。
3 系統功能及硬件實(shí)現
此系統除了常規系統提供的功能之外,還具有模塊優(yōu)先級可調(ID可調)、報警限值可調、報警歷史數據的保存等功能。
工作現場(chǎng)由多個(gè)模擬儀表和一些開(kāi)關(guān)信號組成,每一個(gè)儀表配一塊數據采集板,開(kāi)關(guān)量的采集由一個(gè)和模擬量采集板相似的單獨模塊完成。下位機采用ATMEL公司的AT89C51微型單片機,主要做通信數據的采集、簡(jiǎn)單判斷和數據發(fā)送的準備工作;通信部分由總線(xiàn)控制器SJA1000及其配套的驅動(dòng)器PCA82C250構成,它們可以完成數據鏈路層和物理層的所有工作;另有上位工控機,帶有5M字節的閃存E2PROM,能提供10萬(wàn)次擦除和10年的數據保存期,用以存儲各個(gè)采集模塊報警前、后1min的數據,機車(chē)每個(gè)運行周期結束后,就將E2PROM中的數據導出,以備日后的性能分析;監控報警模塊,用來(lái)進(jìn)行數據的實(shí)時(shí)顯示及報警,為了防止上位機出現瓶頸現象,各模塊的報警任務(wù)分散給下位機完成,向上位機發(fā)送數據只需將報警標志位置復位即可;總線(xiàn)終端接100Ω~120Ω電阻以抑制信號反射,保證通信可靠性。雙絞線(xiàn)連接各個(gè)模塊節點(diǎn),形成多主控制的局域網(wǎng)。另外,為了防止系統運行意外,還加了X25045(美國Xicor公司的外圍器件,集成了Watchdog、復位控制器、帶Block鎖的CMOS串行E2PROM陣列三種功能)作看門(mén)狗,4KB的SPI(Serial Peripheral Interface)E2PROM可以存儲此節點(diǎn)的報警限值等一些重要數據。系統拓撲結構如圖2所示。
4 上位/下位機的數據通訊
SJA1000支持CAN2.0B規范協(xié)議,且有2種工作方式:BasicCAN和PeliCAN,本系統采用BasicCAN。
各AT89C51單片機每隔0.05s主動(dòng)給上位機發(fā)送一次數據,下位機的CPU相對上位機來(lái)說(shuō)不太忙,因此,為了防止外部干擾信號引起錯誤報警,下位機發(fā)送數據之前對數據進(jìn)行數字濾波:0.05s分為5次采集,取其平均值發(fā)送,這樣就可以避免對瞬間高頻干擾信號的誤報警。
而上位工控機發(fā)給下位機的數據一般都是針對某個(gè)下位機的命令,下位單片機接收數據是用外部中斷INT0完成的。上位機時(shí)刻監聽(tīng)所有下位單片機,下位機也時(shí)時(shí)監聽(tīng)上位機,接收發(fā)給自己的命令。
SJA1000以BasicCAN工作模式接收數據時(shí),先裝入到過(guò)濾器中,順序如下:
其中,ID的高八位接收AMR碼屏蔽之后,與ACR八位接收碼進(jìn)行比較,符合則傳入接收FIFO,否則不予接收。因CAN2.0B協(xié)議中ID越小的優(yōu)先級越高,所以,可以將ID最高位ID10設為報警數據的標志(數據超限時(shí)此位為零),以保證有報警的模塊數據優(yōu)先傳送。而對于上位機,要接收所有下位單片微機的數 據,ID高八位應全部屏蔽,而低三位ID2~ID0用來(lái)作為上位工控機向下位單片機發(fā)送命令(如修改報警限值等)的標志位,因此,在系統工作期間各個(gè)模塊的限值可以由上位機發(fā)送命令加以調節。
下位機在發(fā)送數據時(shí),先從寄存器讀入限值,判斷是否超限,如超限,ID10置0,否則置1。然后在ID9~ID3填入本模塊的ID號,將發(fā)送命令位置位,之后單片機就不參與此次數據發(fā)送進(jìn)程了,其他工作就由SJA1000和PCA82C250完成。由于ID也可以決定數據的優(yōu)先級,單片機復位時(shí)總是先從P2口上讀入外部8位撥動(dòng)開(kāi)關(guān)作為ID,這樣,各個(gè)模塊的優(yōu)先級就可以人為改變,增強了系統的靈活性。
AT89C51在主程序中向上位機發(fā)送數據,在0#外部中斷程序中接收上位機的命令,利用ID低三位判斷約定命令的意義,在此不再細述,只給出主程序和SJA1000的初始化程序流程,其中,在各個(gè)主程序開(kāi)始,為了防止網(wǎng)絡(luò )由于所有下位機復位的時(shí)間、采集周期、軟件均一致而導致BUS上負荷不均勻,上位機工作量時(shí)而很大的問(wèn)題,各個(gè)下位機每次復位時(shí)主程序特意安排不同時(shí)間長(cháng)短的延時(shí),這樣,各模塊發(fā)送數據的時(shí)刻就能均勻分布。
上位機接收到數據后,先查看報警標志位,判斷是否報警,若是,將寄存器中前1分鐘的數據及對應的時(shí)間向E2PROM中寫(xiě)入,并且繼續寫(xiě)入接收到的報警實(shí)時(shí)數據,直到報警停止以后一分鐘。否則,將數據加上當前時(shí)間以隊列方式存入寄存器,寄存器滿(mǎn),將最舊的數據刷掉。
監控報警模塊和上位工控機一樣接收數據,只是每個(gè)儀表模塊對應一個(gè)報警裝置,n個(gè)報警裝置實(shí)時(shí)顯示各個(gè)儀表的超限狀態(tài),另有液晶屏一塊,顯示有報警模塊的實(shí)時(shí)數據,無(wú)報警時(shí)顯示ID最小的模塊的實(shí)時(shí)數據。
以上介紹的就是一個(gè)單獨的下位采集模塊和上位機通訊的基本過(guò)程和原理,整個(gè)系統由若干個(gè)相對獨立的、相似的下位模塊和一個(gè)上位機組成,下位機之間暫時(shí)無(wú)通信。
5 結束語(yǔ)
此系統是為西安某公司改進(jìn)機車(chē)控制臺開(kāi)發(fā)的,經(jīng)過(guò)試驗、軟件調試直到試車(chē)運行(采集模塊20個(gè))表明,性能穩定,采集數據的波動(dòng)幅度小于0.05%,試車(chē)時(shí)數據傳輸率設為125kbps,無(wú)數據丟失,上位機和下位機間無(wú)數據傳送出錯現象,最高比特率可達1Mb/s,抗干擾能力、抗高溫能力(-40℃~+120℃)、數據準確性都令人滿(mǎn)意,充分體現了CAN總線(xiàn)的優(yōu)越性。遺憾的是,機車(chē)儀表報警以后,目前還只能以人工方式解決問(wèn)題。
下一步還會(huì )考慮更高一層的上位機與次系統的通信(仍會(huì )采用CAN現場(chǎng)總線(xiàn)),若能實(shí)現,車(chē)站及相關(guān)部門(mén)與各列車(chē)的聯(lián)絡(luò )、運行情況的及時(shí)匯報和監控等問(wèn)題都將迎刃而解。
參考文獻
1 何立民.單片機應用技術(shù)選編.北京:北京航空航天大學(xué)出版社,1999
2 鄔寬明.單片機外圍器件實(shí)用手冊——數據傳輸接口器件分冊.北京:北京航空航天大學(xué)出版社,1998
3 鄔寬明.CAN總線(xiàn)原理及應用系統設計.北京:北京航空航天大學(xué)出版社,1996
評論