王樂毅
(青島科技大學(xué) 自動化與電子工程學(xué)院,山東 青島266042)
石油溫度與壓力智能測試儀在石油開采工業(yè)中是必不可少的,主要用來監(jiān)測采油管道的運行狀況、采集生產(chǎn)井正常生產(chǎn)時的井下流溫流壓數(shù)據(jù)[1-2]。經(jīng)過一段時間完成采集任務(wù)后,采集的數(shù)據(jù)與上位機通信進行數(shù)據(jù)回放、校驗、初始化、處理并顯示等操作。它獨立工作于2~3km的井下,儀器在地下一次工作時間較長(一般為1~2個月)[3]且工作環(huán)境較為惡劣,要求系統(tǒng)具有較強的低功耗、高抗干擾能力[4-5]。
智能測試儀是基于PIC單片機設(shè)計的數(shù)據(jù)采集系統(tǒng),通過傳感器將流體的溫度、壓力信號放大轉(zhuǎn)換成0~5V的模擬電信號,再通過A/D轉(zhuǎn)換器將模擬信號轉(zhuǎn)換成數(shù)字信號,單片機對采集的數(shù)據(jù)進行濾波、采集、存儲并通過USART接口將數(shù)據(jù)上傳給上位機做進一步的處理。系統(tǒng)組成如圖1所示。
圖1 智能測試儀組成
基于現(xiàn)場的要求,系統(tǒng)有兩種工作狀態(tài):與上位機聯(lián)機狀態(tài);脫離上位機進行獨立數(shù)據(jù)采集狀態(tài)。
a)實時校驗。使用儀器前應(yīng)在實驗室完成儀器的校準(zhǔn),之后輸入零點和滿量程的溫度和壓力信號。在單片機存儲器中存入溫度和壓力的校正系數(shù),這些系數(shù)由采集的數(shù)據(jù)分別計算得出。這樣用軟件方法既確保了儀器的精度,又免除了設(shè)置零點和量程電位器的必要。
b)數(shù)據(jù)回放。采集任務(wù)完成后,取回儀表通過USB接口將采集的數(shù)據(jù)上傳到上位機,上位機對采集數(shù)據(jù)進行處理后得到實際的溫度、壓力值,然后進行顯示、存儲。
c)初始化。上位機對下位機進行采集任務(wù)設(shè)定,其中包括采集的時間間隔、采集組數(shù)、延時時間等。
在與上位機完成采集任務(wù)設(shè)定后,測試儀裝入電池送入井下,在經(jīng)過設(shè)定的延時時間后開始按預(yù)定的時間間隔自動進行數(shù)據(jù)采集、存儲。
主硬件電路如圖2所示,以PIC16F88單片機為核心組成。
在數(shù)據(jù)采集工作狀態(tài)時,測試儀的電源由2塊3.6V的鋰離子電池串聯(lián)供電,采用具有低壓差、低功耗、低溫漂特性的低壓差(LDO)線性穩(wěn)壓電路進行穩(wěn)壓,在提高電源精度的同時又降低了系統(tǒng)功耗。而且,將輸入輸出壓差降到100mV左右,在負(fù)載電流為0~250mA時,靜態(tài)電流最大為300μA。
圖2 PIC16F88單片機硬件電路示意
a)系統(tǒng)時鐘。采用內(nèi)部RC振蕩器INTRC作為系統(tǒng)時鐘,既可以簡化外部電路又有利于降低功耗。受溫度影響,INTRC產(chǎn)生的誤差對該系統(tǒng)影響并不大,而且INTRC起振快(約為數(shù)百納秒),更適用于頻繁工作在喚醒—休眠狀態(tài)的系統(tǒng)。
b)實時時鐘(RTC)模塊。定時/計數(shù)器TMR1在T1OSI腳和T1OSO腳外接一個32.768MHz的低功耗晶體振蕩器組成實時時鐘,用于采集時間間隔定時,單片機休眠時RTC仍然工作。
外接一個256KB的Eeprom存儲器24LC256,以存儲采集數(shù)據(jù),單片機通過IIC接口與其交換數(shù)據(jù),數(shù)據(jù)傳輸可靠方便,其在電壓5.5V下最大寫電流為3mA,最大讀電流為400μA。
通過單片機內(nèi)部的USART模塊的全雙工異步模式,通過RS-232-USB的轉(zhuǎn)接橋接到上位機的USB接口來實現(xiàn)與上位機的串口通信。
使用單片機內(nèi)部的A/D轉(zhuǎn)換器,利用RA1,RA2,RA3 3路模擬輸入,參考電壓選擇AVDD和AVSS。進行A/D轉(zhuǎn)換時,為提高轉(zhuǎn)換精度,要使單片機工作在休眠狀態(tài)。
a)傳感器模塊。壓力檢測采用壓阻傳感器來檢測流體壓力;溫度檢測T1路采用Pt100熱電阻來檢測流體的溫度,T2路采用LM35精確集成溫度傳感器來檢測儀器的工作溫度。
b)信號調(diào)理模塊。選擇高精度、低功耗、溫漂小的運算放大器對傳感器的輸出信號進行放大,輸出0~5V模擬信號。
a)聯(lián)機識別。通過判斷RB3腳的電平來判斷單片機的工作狀態(tài)。聯(lián)機狀態(tài)將單片機電池取下,RB3引腳通過通信電纜接地,被下拉為低電平,獨立數(shù)據(jù)采集狀態(tài)RB3被VCC上拉為高電平。
b)前級運放及傳感器電源控制。由RA0腳來控制MOSFET導(dǎo)通和關(guān)斷來控制前級運放及傳感器的電源。
在上位機通過查表和分段線性化來實現(xiàn)對溫度傳感器的線性化處理。在實際非電量的檢測中,利用各類傳感器把許多物理量轉(zhuǎn)化為電量時,大多數(shù)傳感器的輸出電量與被測物理量之間不是線性關(guān)系。為使測量儀表的輸出量與輸入量之間具有線性關(guān)系,不僅對傳感器本身的設(shè)計和工藝采取措施,還利用上位機的線性插值程序來對輸出量的非線性進行補償。
設(shè)X為被測變量,Y為輸出變量,它們呈非線性關(guān)系。根據(jù)精度要求,把曲線分成n段,用實驗或計算的方法得到各分段點輸出和輸入的對應(yīng)值(坐標(biāo)值),將這些對應(yīng)的值(X1,Y1)…(Xn,Yn)編制成表格存儲起來。實際的傳感器輸出值Yi一定落在某個區(qū)間(Xk,Yk)之內(nèi),即Yk<Yi<Yk+1,插值法就是用一段簡單的曲線,近似代替這段區(qū)間里實際的曲線,隨后,由簡單曲線的表達式計算出被測量Xi。線性插值法則是用(Xk,Yk)和(Xk+1,Yk+1)兩點間的直線近似代替兩點間的函數(shù)曲線,此時被測量的計算公式:
該系統(tǒng)在上位機程序中建立一個數(shù)據(jù)庫,以1℃為單位來存儲熱電阻的溫度-電壓對應(yīng)表格,得到采集電壓值后,再通過查表和線性插值來確定實際采集的溫度。
下位機單片機軟件主要有主程序模塊、定時模塊、A/D轉(zhuǎn)換模塊、外掛Eeprom模塊、同步串行端口MSSP模塊、串口通信模塊、USART串行通信模塊、中斷模塊和聯(lián)機模塊。為了保證系統(tǒng)的穩(wěn)定運行,還進行了看門狗的設(shè)置和程序的抗干擾設(shè)計。
上位工控機軟件使用Visual Basic編寫,主要完成與下位機的通信,包括時間設(shè)定,實時校驗,上傳數(shù)據(jù)、對數(shù)據(jù)存儲,通過表格、曲線查看上傳的數(shù)據(jù)并顯示所有數(shù)據(jù)庫的數(shù)據(jù)表等。軟件功能如圖3所示。
圖3 軟件功能
檢測串口通過調(diào)用API函數(shù)返回注冊表中串行口的信息實現(xiàn)。注冊表 HKEY_LOCAL_MACHINE,HARDWARE,DEVICEMAP,SERIALCOMM下為計算機串口信息,此鍵下有N個鍵值說明有N個串口。
查詢數(shù)據(jù)表數(shù)據(jù)使用了用于操作注冊表的API函數(shù) RegOpenKey,RegCloseKey,RegEnum ValueAsAny,RegEnumValueAsAny2。自動檢測串口由兩部分組成,注冊表串行口信息的讀取和處理,通過串行通信得到反饋信息從而得到測試儀連接的串口號。
程序中使用此控件可以方便地實現(xiàn)串行通信,如時間參數(shù)設(shè)定、實時顯示、數(shù)據(jù)上傳、系數(shù)校驗。
單片機接收的經(jīng)過線性放大的信號,經(jīng)A/D轉(zhuǎn)換和中值濾波后保存在24LC256中,再上傳到上位機,而這些數(shù)據(jù)是沒有經(jīng)過處理的。零點校正和標(biāo)量轉(zhuǎn)換等數(shù)據(jù)處理工作,由上位機完成,這也是實時校驗的核心。
采用數(shù)據(jù)包的形式傳遞數(shù)據(jù)以保證數(shù)據(jù)高效正確地傳送,每個包60個數(shù)據(jù),若傳遞有誤則要求單片機重新上傳。單片機中存放著所有參數(shù)信息和數(shù)據(jù),可以只傳遞數(shù)據(jù),但這樣上位機不僅要能夠取得下位機的各種參數(shù)還要能和數(shù)據(jù)一一對應(yīng)關(guān)聯(lián),這樣會增大上位機和下位機的開發(fā)難度,因而這里采用上傳時間設(shè)定、系數(shù)、數(shù)據(jù)指針。
繪制曲線首先要把數(shù)據(jù)從數(shù)據(jù)庫中讀取出來,處理后存放到數(shù)組DataTodisplay(4*i)中,每4個為一組分別為壓力、油溫、儀溫、時間間隔。
對從數(shù)據(jù)庫中得到的數(shù)據(jù)進行處理后存放到數(shù)組DataTodisplay(),然后使用文件讀寫函數(shù)寫入文件中,格式為.htm,使用 API函數(shù)ShellExecute調(diào)用Internet Explorer打開該文件。也可以使用數(shù)據(jù)庫中的報表控件來完成。
系統(tǒng)采用PIC16F88單片機,滿足了系統(tǒng)的低功耗、高性能和穩(wěn)定性要求,并依靠軟件完成數(shù)據(jù)上傳、實時校驗、上位機對數(shù)據(jù)的處理及顯示等工作。經(jīng)反復(fù)調(diào)試試驗,該測試儀達到0.5級精度。
由于應(yīng)用環(huán)境惡劣、復(fù)雜,現(xiàn)場安裝和調(diào)試要反復(fù)進行多次,并精心設(shè)計調(diào)試運行方案,否則不能保證系統(tǒng)的可靠性。
[1]趙玲.基于PIC單片機的分布式數(shù)據(jù)采集系統(tǒng)[J].工業(yè)控制計算機,2011(01):82-83.
[2]杜金枝,王文賢,何友國.基于PIC單片機的無線溫度采集系統(tǒng)的設(shè)計[J].網(wǎng)絡(luò)與信息,2011,25(10):60-60.
[3]王海峰.基于PIC單片機的溫濕度監(jiān)控系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2011,34(23):201-207.
[4]丁躍軍,吳清榮.PIC單片機抗干擾設(shè)計技術(shù)[J].機電技術(shù),2011,34(02):44-45.
[5]夏汝華,吳杉.基于低功耗PIC單片機中斷技術(shù)的液位開關(guān)設(shè)計[J].自動化與儀器儀表,2011(04):57-59.
[6]劉篤仁.PIC軟硬件系統(tǒng)設(shè)計-基于PIC16F87X系列[M].北京:電子工業(yè)出版社,2005.
[7]謝晶石.PIC單片機USB接口應(yīng)用設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2011(08):155-156.
[8]王昊天.PIC單片機原理與應(yīng)用——專業(yè)技能入門與精通[M].北京:機械工業(yè)出版社,2010.
[9]閻廣明.PIC單片機常用模塊與典型實例[M].北京:機械工業(yè)出版社,2011.
[10]李榮正,劉啟中,陳學(xué)軍.PIC單片機原理及應(yīng)用[M].北京:北京航天航空大學(xué)出版社,2010.