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





