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