利用單片機實現(xiàn)多路電壓信號采集系統(tǒng)的設計
引言
在下業(yè)生產(chǎn)中,需要將環(huán)境和狀態(tài)的變化由傳感器轉換為電壓信號,再由監(jiān)控設備完成對電壓信號的數(shù)據(jù)采集和監(jiān)控。傳感器的信號處理在監(jiān)測點完成,處理后的結果經(jīng)RS485網(wǎng)絡傳送到監(jiān)控計算機。這樣把監(jiān)控工作分散到各地,而對監(jiān)控結果集中管理,所形成的分布式監(jiān)控系統(tǒng)可有效減少因工業(yè)強噪聲干擾和傳輸距離的增加所帶來的信號失真。
1 系統(tǒng)構成
本監(jiān)控系統(tǒng)下位機的核心部分為MEGA8單片機。MEGA8單片機內置lO位的A/D轉換器。
故可不用外接A/D轉換器。當多路電壓信號由多路轉換器(CIM051)進入單片機后,即可對多路電壓信號進行A/D轉換和數(shù)據(jù)處理,完成數(shù)據(jù)采集。
可根據(jù)處理的結果進行報警操作,也可通過RS485網(wǎng)絡同監(jiān)控計算機進行通信,以實現(xiàn)分布式監(jiān)控。
系統(tǒng)結構如圖1所示。此系統(tǒng)的監(jiān)控計算機程序使用VB開發(fā),單片機程序使用c語言開發(fā)。本文主要討論單片機如何對多路電壓信號進行采集,以及采集的數(shù)據(jù)如何由單片機經(jīng)RS485網(wǎng)絡傳送給監(jiān)控計算機,以及如何編制CheckSum效驗碼以實現(xiàn)錯誤檢查。
2 數(shù)據(jù)采集
數(shù)據(jù)采集工作完全是在下位機進行的,可通過對單片機編寫控制程序已完成信號的采集和處理任務,主程序流程如圖2所示。
除主程序外,程序中還設置了實現(xiàn)多路信號巡檢的1 s中斷程序模塊;將A/D轉換結果送人單片機進行處理的A/D轉換完成中斷程序模塊;實現(xiàn)數(shù)據(jù)串行傳輸?shù)腢SART中斷程序模塊;以及實現(xiàn)按鍵報警,數(shù)據(jù)處理等功能的子程序模塊。
A/D轉換結束后,在ADC數(shù)據(jù)寄存器中可以取得轉換的結果,對于單端輸入的A/D轉換,其轉換結果為:
其中,Vin表示選定的輸入引腳上的電壓,Vref表示選定的參考電源的電壓。0x000表示輸入引腳的電壓為模擬地,Ox3FF表示輸入引腳的電壓為參考電壓值減去一個LSB。
3 串行通信協(xié)議
監(jiān)控計算機與單片機的數(shù)據(jù)交換包括如下3個步驟。
(1)單片機要發(fā)送數(shù)據(jù)時,計算機會發(fā)送一組字符串過去。該字符串的第一個字符是前導碼,單片機根據(jù)前導碼辨認是否應該讀取該字符串,該字符串屬于哪一個命令集。
在前導碼之后是站號,通常以兩個字符代表,以RS-485進行網(wǎng)絡連接,需要用站號來辨別命令是屬于哪一個設備。站號之后是要解讀的命令或數(shù)據(jù)。
(2)當單片機收到要求字符串,并經(jīng)過辨讀確定后,便會送出計算機所要求的數(shù)據(jù)。同樣,數(shù)據(jù)被送出時會在數(shù)據(jù)之前加上前導碼與站號,計算機也有由此辨別數(shù)據(jù)來自何處。
(3)計算機端收到單片機發(fā)送回來的字符串,即進行解讀檢查的操作。當檢查完成后,再送一個確定的字符串給單片機,用以說明計算機端已成功收到字符串;而若發(fā)送失敗,計算機也在該回送的字符串中要求單片機重新發(fā)送數(shù)據(jù)。
另外數(shù)據(jù)發(fā)送時,一般會加上錯誤檢查機制,最常用的方法是將字符進行運算,而在字符串的最后加上CheckSum字符,收發(fā)雙方利用Check-Sum字符的檢查判斷字符串的正確性。
本系統(tǒng)設計的數(shù)據(jù)格式為:
其中,前導碼為一個字節(jié);站號為一個字節(jié);命令/數(shù)據(jù)為一個字節(jié);數(shù)據(jù)長度為一個字節(jié);數(shù)據(jù)內容為幾個字節(jié);CheckSum校驗為兩個字節(jié);結束標志位為一個字節(jié)。
4 通信軟件的實現(xiàn)
4.1 監(jiān)控計算機通信軟件的實現(xiàn)
利用VB提供的具有強大功能的通信控件MsComm,可設置串行通信的數(shù)據(jù)發(fā)送和接收,串口狀態(tài)及串口通信的數(shù)據(jù)發(fā)送和接收,以及串口狀態(tài)和串口通信的信息,格式和協(xié)議。監(jiān)控計算機的通信流程如圖3所示。
4.2 單片機通信部分的軟件實現(xiàn)
ATMEGA8單片機帶有一個全雙工通用同步/異步串行收發(fā)模塊USART,該接1:3是一個高度靈活的串行通信設備。單片機的通信流程如圖4所示。
4.3 CheckSum的使用
使用了outCheckSum和inCheckSum子函數(shù)以實現(xiàn)CheckSum計算。第1個函數(shù)(outCheckSum)用于處理所要發(fā)送的字符串,只要將所要發(fā)送的字符串傳人,返回的結果的結果字符串即是作完CheckSum處理。第2個函數(shù)(inCheckSum)用于處理接收到的返回字符串,只要將所收到的字符串傳人,返回的結果字符串即是做完CheckSum檢查,并去除校驗和與結尾字符。
5 結語
以上提出的單片機和監(jiān)控計算機的軟硬件設計已在實際中得以應用。數(shù)據(jù)的采集及單片機和監(jiān)控計算機之間的通信快速準確,效果良好??梢娚鲜龆嗦?strong>電壓信號的采集和分布式監(jiān)控系統(tǒng)的設計方案是可行和可靠的。





