CAN總線智能采集卡的設計與實現
0.引言
控制器局域網CAN(Controller Area Network)作為一種多線路網絡通信系統,以其時分多主、非破壞性總線仲裁和自動檢錯重發等靈活、可靠的通信技術,及低廉的價格,被廣泛地應用于工業自動化生產線、汽車、傳感器、醫療設備、智能化大廈、電梯控制、環境控制等分布式實時系統。本采集卡采用的是一款Atmel公司新近推出的帶有CAN控制器的微控制器,是一款很有前途的新型芯片,其內部集成CAN控制器,用它來組建CAN總線實時監控系統,與傳統的CAN總線組網方式相比,系統具有結構簡單、設計容易、抗干擾性強等應用優勢。
1.采集卡的功能描述
本采集卡完成的主要功能有:
1)?采集溫箱里的溫度數據,并對其進行濾波處理。
2)?監視溫度信號的變化情況,實現報警功能。
3)?將采集到的數據通過CAN總線傳給上位機及其它節點。
???? 采集卡帶有8279鍵盤/顯示接口,可通過手工或上位機來設定各種采集用的參數。
2.總體組成
????? 智能采集卡主要由單片機系統,8279鍵盤/顯示控制芯片,譯碼驅動電路,LED,按鍵陣列,溫度傳感器DS18B20,光電隔離以及CAN總線物理接口等組成,其硬件組成原理圖見圖1。
??? 采集卡的總體工作流程如下:
??? 采集卡上電復位以后,首先根據默認的參數初始化CAN總線的各個寄存器及DS18B20,然后對8279及顯示LED的狀態進行初始化,接著給T0定時器裝載初值及設置中斷寄存器等。待初始化完成之后,就向主機發送控制幀,要求主機設定采樣周期、發送時間間隔、當前時間、發送主機地址、本機標識符等參數。設定完之后,就根據不同的狀態進入到不同的中斷服務程序中。
數據類型根據傳輸方向可分為上行數據(采集卡→主機)和下行數據(主機→采集卡)。
上行數據主要是采集卡采集到的溫度數據。它的處理主要經過以下幾個步驟:T89C51CC01對溫度傳感器DS18B20執行一個其RAM存儲器操作命令完成一次溫度測量。測量結果放在DS18B20的暫存器里,然后CPU用一條讀暫存器內容的存儲器操作命令將暫存器中數據讀出,存放在數據存儲區中。到滿足發送條件之后,短數據直接形成幀送到發送緩沖區,超過幀長的數據則要經過分解,打包后再送入CAN總線控制器發送緩沖區。CAN控制器通過CAN物理接口向CAN總線發送數據,總線的所有節點都偵聽該數據,但并非所有節點都接收此數據,只有通過接收濾波的節點才接收此數據。采集卡的數據主要是發送給主機、監控節點和相關的控制節點。當采集卡采集到的溫度數據超過報警上限、報警下限或變化速率過快的時候,采集卡還通過CAN控制器向主機發送報警信息。
下行數據主要是主機向采集卡發送的各種控制信息。雖然采集卡可以接收任何節點的信息,但它主要起的是智能傳感器的作用,所以一般只接收主機來的各種控制信息??刂菩畔⑼ㄟ^CAN物理接口進入到CAN控制器的接收緩沖器中,采集卡根據幀類型來區分不同的控制幀并設定相應的參數,并進行相應的接收、發送處理。
3.硬件具體組成描述
1)核心CPU —T89C51CC01
??? T89C51CC01主要具有以下特性:其片內具有8051內核,具有1個CAN控制器, 8路模擬量輸入的10位ADC變換器,可在系統編程的32K字節Flash程序存儲器,2K字節程序加載Flash程序存儲器,256字節RAM,1K字節XRAM和2K字節E2PROM數據存儲器,一個21位看門狗定時器。該微控制器基于高性能的靜態結構設計,采用先進的CMOS制造工藝,包含5個端口34根雙向I/O線,3個16位定時/計數器、14個中斷源4級嵌套中斷結構、1個全雙工UART、其提供很寬的操作頻率范圍,支持12時鐘和6時鐘操作。另外,使用者可利用片上Boot加載程序,通過CAN或UART接口對該控制器進行在系統或在應用編程。
T89C51CC01的最顯著的一個特點是內部集成強大功能的CAN控制器。該控制器支持CAN2.A和CAN 2.B協議,通過報文對象頁寄存器管理15個獨立的報文對象.每個報文對象可分別編程為發送、接收或緩沖接收的報文,并可通過標識符寄存器和標識符屏蔽寄存器來設置11位或29位標識符和標識符屏蔽碼來確定報文對象的優先級,以及CAN控制器對該報文對象是否接收或拒絕。其通信的波特率可根據實際通信距離和需要對位定時寄存器進行設定,最大波特率可達1Mbps。T89C51CC01的結構圖如圖2所示。其P0口為8位并行I/O口,將P0.0與DS18B20連接, P4.0(TxDC)和P4.1(RxDC)與82C250連接。P3.4(T0)、P3.5(T1)和P1.0(T2)是T89C51CC01內部定時器的引腳,P3.2(INT0)和P3.3(INT1)是T89C51CC01的外部中斷引腳、低電平有效。
2)溫度傳感器DS18B20
DS18B20是一個單線式溫度采集數據傳輸并直接轉換數字量的溫度傳感器。其特點為:獨特的單線接口僅需一個端口引腳進行雙向通信,多個并聯可實現多點測溫;可通過數據線
???????????????????????????
供電,電源電壓為3~5.5V;零待機功耗;用戶可自定義的非易失性溫度報警設置;報警識別命令識別并標志超過程序限定溫度(溫度報警條件)的器件;測溫范圍為-55~+125○C。 精度為9~12位(與數據位數的設定有關),9位的溫度分辨率為±0.5℃,12位的溫度分辨率為±0.0625○C,缺省為12位;在93.75~750ms內將溫度值轉化為9~12位的數字量,典型轉換時間為200ms。
DS18B20有3個主要數字部件:64位激光ROM、溫度傳感器以及非易失性(E2PROM)溫度報警觸發器TH和TL。操作的順序為:初始化(復位)、ROM操作命令、暫存器操作命令。通過單總線的所有操作都從一個初始化序列開始。次初始化序列包括一個由總線控制器發出的復位脈沖和緊隨其后由從機發出的存在脈沖。一旦總線控制器探測到一個存在脈沖,它就會發出5個ROM命令之一。通過RAM操作命令DS18B20完成一次溫度測量。測量結果放在DS18B20的暫存器里,用一條讀暫存器內容的存儲器操作命令可以將暫存器中數據讀出。溫度報警觸發器TH和TL各由一個E2PROM字節構成。用一條存儲器操作命令對TH和TL進行寫入,對這些寄存器的讀出則需要通過暫存器。所有操作命令都是8位,所有數據均以低有效位在前的方式(LSB)進行讀/寫。連接DS18B20的總線電纜有長度限制,采用普通信號電纜長度為50米,總線電纜為雙絞線帶屏蔽電纜時,正常通信距離為150米。另外,向DS18B20發出溫度轉換命令后,程序總要等待DS18B20的返回信號。如果DS18B20接觸不好或斷線,則程序讀該DS18B20時,將沒有返回信號。
3)可編程鍵盤、顯示器接口芯片---8279 及CAN總線物理接口---82C250
??? 8279芯片是專用于鍵盤、顯示器的接口芯片,能對顯示器自動掃描,能識別鍵盤上閉合鍵的鍵號,提高CPU的工作效率。8279包括鍵盤輸入和顯示輸出兩個部分,鍵盤部分提供的掃描方式,可以和具有64個按鍵和傳感器的陣列相連,能自動消除開關抖動以及對n鍵同時按下采取保護。顯示部分按掃描方式工作,可以顯示8或16位LED八段數碼顯示器。
82C250是PHILIPS公司生產的CAN控制器與物理總線之間的接口,提供對CAN總線的差動發送和接收能力,最初是為汽車高速通信的應用而設計的。它與ISO/DIS 11898標準全兼容,具有抗汽車環境下的瞬間干擾、保護總線能力??梢酝ㄟ^調整CAN總線上通信脈沖的斜率來降低射頻干擾??捎?10個節點相連接。
4.軟件設計
在采集卡的軟件設計中,主要采用模塊化的設計思想,主要分為系統初始化程序、CAN中斷服務程序、INT1中斷服務程序(即8279中斷服務程序)、ADC中斷服務程序、T0中斷服務程序和“看門狗”定時器服務程序等幾個部分。
??? 系統初始化程序主要是對CAN控制器、8279芯片、DS18B20、定時器、ADC控制寄存器、中斷控制寄存器、中斷優先級寄存器等進行初始化設置。然后根據發生事件的不同來進行不同的處理。
????? CAN中斷服務程序主要包括CAN接收中斷服務程序和CAN發送中斷服務程序,主要處理CAN總線通信過程中的各種情況。
????? INT1外部中斷是由8279引起的中斷,當8279的FIFO寄存器不為空的時候,就向CPU發出中斷申請,CPU進入中斷后,首先讀8279的狀態寄存器,如果發生錯誤,就進入鍵盤出錯處理程序。否則,進入鍵盤處理程序。在鍵盤處理程序中,從FIFO寄存器中讀出鍵值,根據鍵值的不同,進行相應的處理。
??? T0中斷程序主要處理跟定時有關的操作,可以起到時鐘的作用,并且根據實現設定好的參數,實現定時采樣,定時發送的功能。
???? T2定時器是專門防止單片機“死機”而設置的“看門狗”定時器。
本文作者創新點:采用當前流行器件來構成CAN智能采集卡以及相關軟件設計。CAN總線數據采集系統由上位機、CAN總線適配卡及若干個CAN節點組成??赏ㄟ^網卡或者嵌入式WEB網關連入局域網,再通過路由器接入Internet。通過WEB服務器,利用OPC技術,進一步實現B/S結構的實時監控。
評論