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

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

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

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