1 引言
眾所周知,對于每一個復(fù)雜的控制系統(tǒng)都是由各種各樣的傳感器,變送器等檢測設(shè)備組成,以便及時地將現(xiàn)場設(shè)備的運行狀態(tài)和被控對象的各種參數(shù)反應(yīng)到控制器或控制計算機,從而實現(xiàn)整個系統(tǒng)的精確控制.我們將這些傳感器檢測到的現(xiàn)場信號盡快的傳送到控制器或上位機進(jìn)行顯示,處理,傳輸和記錄的技術(shù),稱之為數(shù)據(jù)采集技術(shù),他是當(dāng)今控制領(lǐng)域所研究的一個重要方向.目前,對于數(shù)據(jù)采集設(shè)備也提出了微型化,低功耗,長壽命,高可靠性等要求.同時,為了適應(yīng)多種任務(wù)的需要以及在各個領(lǐng)域中普遍應(yīng)用,需要研制一種比較靈敏通用的數(shù)據(jù)采集模塊,對不同的采集任務(wù)應(yīng)具有一定的適應(yīng)性和實時性.隨著計算機,通信,集成電路,傳感器技術(shù)的發(fā)展,在控制領(lǐng)域又出現(xiàn)了一種新興的控制技術(shù),即現(xiàn)場總線(FCS).現(xiàn)場總線的出現(xiàn),為數(shù)據(jù)采集提供了一種新的手段.在總線系統(tǒng)中,總線中的各個單元將分別完成各種不同的任務(wù),系統(tǒng)中的測量,控制任務(wù)將大部分下放到現(xiàn)場的智能儀表單元中去.這種智能化儀表設(shè)計的概念使得總線系統(tǒng)的數(shù)據(jù)采集任務(wù)可以通過單獨的數(shù)據(jù)采集單元來完成.而基于CAN總線的數(shù)據(jù)采集模塊則是為了適應(yīng)這樣的要求而設(shè)計的.CAN總線是一種有效支持分布式控制和實時控制的串行通信網(wǎng)絡(luò),具有可靠性高,成本低,傳輸距離遠(yuǎn),傳輸速率快等優(yōu)點,在國際上已經(jīng)得到了廣泛的應(yīng)用.
2. 數(shù)據(jù)采集模塊的功能
由于分布在控制現(xiàn)場的各種傳感器,變送器的輸出可以是模擬量,也可以是數(shù)字量,為了將這些不同形式,不同類型的信號能夠被基于CAN總線的控制器或上位機所識別,因此基于CAN總線的數(shù)據(jù)采集模塊所要完成的功能分為兩個方面:一方面是將未知的連續(xù)的模擬輸入信號轉(zhuǎn)換為微計算機能接收的數(shù)字信號,即模擬量數(shù)據(jù)采集,另一方面是將現(xiàn)場數(shù)字傳感器,變送器等設(shè)備所輸出的遵循某一協(xié)議格式的數(shù)字信號或數(shù)字量I/O信號轉(zhuǎn)換成符合CAN總線協(xié)議的信息,即數(shù)字量數(shù)據(jù)采集.其具體實現(xiàn)功能圖如圖1所示:
由圖1可知,對于模擬量數(shù)據(jù)采集部分,多路模擬信號通過模擬輸入通道進(jìn)入A/D轉(zhuǎn)換器的輸入端,A/D轉(zhuǎn)換器在微計算機(即CPU)的控制下開始逐個對多路模擬信號進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換的結(jié)果讀入CPU中,當(dāng)一輪數(shù)據(jù)轉(zhuǎn)換完后,判斷各路轉(zhuǎn)換結(jié)果是否合理,

圖1 基于CAN總線的數(shù)據(jù)采集模塊功能圖
對合理的結(jié)果進(jìn)行必要的處理,然后將數(shù)據(jù)寫入CAN微控制器轉(zhuǎn)換成CAN 協(xié)議的數(shù)據(jù)格式通過其接口發(fā)送到總線上供上位機進(jìn)一步處理或其他模塊使用.而對于數(shù)字量數(shù)據(jù)采集部分,該模塊主要是將從控制現(xiàn)場以RS-232協(xié)議形式傳送來的數(shù)據(jù)信息轉(zhuǎn)換成CAN 協(xié)議要求的數(shù)據(jù)格式并發(fā)送到CAN 總線上供上位機和其他模塊使用.由于該數(shù)據(jù)采集模塊帶有CPU,是一種微機化的智能設(shè)備,能對采集到的數(shù)據(jù)作初步的處理和完成一定的控制,顯示任務(wù),因此在該模塊上還擴展了多路數(shù)字量輸入輸出和與其他單片機進(jìn)行直接串行通訊的接口.整個模塊可實現(xiàn)對現(xiàn)場信息的采集,對設(shè)備狀態(tài)的顯示,報警,與現(xiàn)場設(shè)備及上位機進(jìn)行通訊等功能.
3. 數(shù)據(jù)采集模塊硬件實現(xiàn)
根據(jù)基于CAN 總線的數(shù)據(jù)采集模塊所要實現(xiàn)的功能,其硬件實現(xiàn)電路如圖2所示:

圖2 基于CAN總線的數(shù)據(jù)采集模塊硬件結(jié)構(gòu)圖
由圖2可知,基于CAN總線的數(shù)據(jù)采集模塊以單片機SST89C54為核心處理芯片;SST89C54單片機是MCS-51系列單片機的派生產(chǎn)品.它在指令系統(tǒng),硬件結(jié)構(gòu)和片內(nèi)資源上與標(biāo)準(zhǔn)8052單片機完全兼容,只是加大了內(nèi)部程序存儲器Flash的容量.內(nèi)置20K ROM,程序空間余量大,方便系統(tǒng)的軟件升級,而且SST89C54內(nèi)置EEPROM,看門狗定時器,成本低廉,可靠性高.整個硬件實現(xiàn)電路由四個部分組成:
1)CAN總線接口電路:由SJA1000及82C250組成,SST89C54對SJA1000的操作相當(dāng)于外部RAM的操作,其P0口接SJA1000的AD0~AD7,ALE,/WR,/RD,P2.4端分別接SJA1000的ALE,/WR,/RD,/CS端,另外SJA1000的中斷信號端/INT接SST89C54的/INT0端,使得SST89C54可收發(fā)各類信息.CAN總線收發(fā)器82C250提供了CAN控制器與物理總線之間的接口,提供總線的差動發(fā)送和接收能力,抗干擾能力,使得信號能更遠(yuǎn)更可靠的傳輸.其 TXD,RXD端通過高速光隔分別接SJA1000的TX0,RX0,兩個輸出端CANH和CANL分別與物理總線的CANH和CANL連接.
2)A/D轉(zhuǎn)換電路:由11路模/數(shù)轉(zhuǎn)換芯片TLC2543實現(xiàn),SST89C54的P1.0~P1.3引腳分別與TLC2543的/CS,CLOCK,DATA IN和DATA OUT相連,通過這些連接,SST89C54可以控制A/D轉(zhuǎn)換的時機,選擇轉(zhuǎn)換通道,極性;當(dāng)A/D轉(zhuǎn)換結(jié)束后,TLC2543通過EOC引腳,以中斷的形式通知SST89C54接收數(shù)據(jù).其中TLC2543 為CMOS 12位開關(guān)電容逐次逼近模/數(shù)轉(zhuǎn)換器.具有快速轉(zhuǎn)換和通用的控制能力.片內(nèi)設(shè)有采樣-保持電路.
3)RS-232協(xié)議轉(zhuǎn)換電路:SST89C54通過串口TXD,RXD與MAX232的相應(yīng)管腳相連,當(dāng)SST89C54需要將從現(xiàn)場采集到的數(shù)據(jù)或從CAN總線上接收到的數(shù)據(jù)轉(zhuǎn)換成RS-232協(xié)議格式的信息與現(xiàn)場設(shè)備或其他模塊進(jìn)行通信時,可直接將信息通過串口TXD,RXD傳送給MAX232,由芯片MAX232完成數(shù)據(jù)格式的轉(zhuǎn)換.同時該部分還擴展了串口通信電路,通過高速光電隔離器隔離可實現(xiàn)與其他設(shè)備進(jìn)行串行通信.
4)多路輸入輸出電路:由于基于CAN總線的數(shù)據(jù)采集模塊可直接與多種模擬量或數(shù)字量設(shè)備相連,且內(nèi)部帶有CPU,具有一定的數(shù)據(jù)處理和控制能力,所以當(dāng)模塊需要采集現(xiàn)場的I/O量信息或需要根據(jù)處理結(jié)果進(jìn)行顯示,報警,控制時,可通過由P1.4-P1.7和高速光隔組成的多路輸入輸出電路實現(xiàn).
此外,為了滿足數(shù)據(jù)存取和處理的需要,電路中還擴展了8K 的數(shù)據(jù)存貯器空間(RAM).
4. 數(shù)據(jù)采集模塊軟件結(jié)構(gòu)
基于CAN總線的數(shù)據(jù)采集模塊的軟件結(jié)構(gòu)圖如圖3所示:

圖3 基于CAN總線的數(shù)據(jù)采集模塊軟件結(jié)構(gòu)圖
由軟件結(jié)構(gòu)圖可知,SST89C54先對自身進(jìn)行初始化,然后立即對SJA1000進(jìn)行初始化以盡快建立該數(shù)據(jù)采集模塊與CAN總線之間的通信鏈接,其中對SJA1000的初始化是該軟件設(shè)計中一個比較關(guān)鍵的部分,主要包括在復(fù)位模式下設(shè)置通信的波特率,AMR,ACR,OCR,CDR,在通用模式下寫控制寄存器命令字等.其中對ACR,AMR寄存器中所寫的內(nèi)容要根據(jù)網(wǎng)絡(luò)系統(tǒng)和現(xiàn)場工藝的實際要求來確定,并且與將要發(fā)送的報文標(biāo)識符有關(guān);BTR0,BTR1寄存器的內(nèi)容可唯一確定系統(tǒng)的通信波特率和同步跳轉(zhuǎn)寬度,所以整個系統(tǒng)中的所有節(jié)點,這兩個寄存器的內(nèi)容必須相同,否則將無法進(jìn)行通信;對OCR的操作可確定CAN控制器的輸出方式,并建立起CAN總線要求的電平邏輯所需輸出驅(qū)動器的配置.
與CAN總線的通信建立之后,SST89C54就開始采集現(xiàn)場數(shù)據(jù),先是模擬量,然后是數(shù)字量,在對模擬量的數(shù)據(jù)采集中,為了減少外部干擾帶來的誤差還進(jìn)行了消除誤差處理,主要包括判斷數(shù)據(jù)是否存在超大誤差,對連續(xù)多次采樣得到的數(shù)據(jù)求平均值作為采樣值等措施,以減少系統(tǒng)采樣誤差.在采集到了現(xiàn)場的各種數(shù)據(jù)后,CPU還要進(jìn)行數(shù)據(jù)處理,主要包括將采集到的數(shù)據(jù)進(jìn)行組裝,拆包打包,簡單的數(shù)據(jù)運算,與設(shè)定值作比較;判斷現(xiàn)場參數(shù)是否超出了設(shè)備正常工作的上下限,是否需要顯示設(shè)備狀態(tài)或報警,如需要則進(jìn)行顯示或報警;判斷是否需要往CAN總線上發(fā)送數(shù)據(jù),如需要則要進(jìn)行不同數(shù)據(jù)格式的轉(zhuǎn)換,當(dāng)需要往CAN總線發(fā)送超過8個字節(jié)的數(shù)據(jù)時,還要按事先設(shè)計好的算法分多個數(shù)據(jù)包發(fā)送.
5. 結(jié)束語
實踐證明基于CAN總線的數(shù)據(jù)采集模塊具有采樣數(shù)據(jù)更新速度快(10毫秒),轉(zhuǎn)換精度高(±0.5%),轉(zhuǎn)換線性誤差?。ā?LSB Max),通信速率高,抗干擾性能強,出錯率極低,傳輸舉例較遠(yuǎn)等特點,能很好地完成對現(xiàn)場信息的采集和進(jìn)行簡單的數(shù)據(jù)處理及數(shù)據(jù)通信,由該類模塊組成的系統(tǒng)特別適合于現(xiàn)場環(huán)境比較復(fù)雜,實時性要求高的分布式控制系統(tǒng),且由于其價格低廉,在自動化領(lǐng)域有著廣泛的應(yīng)用前景.