?

基于單片機的井徑測量系統軟件設計

2015-09-16 22:20楊晨娜
現代電子技術 2015年18期
關鍵詞:測量精度軟件設計

楊晨娜

摘 要: 針對傳統油井測量儀器體積大、價格貴等問題,設計了一種新型高效的智能三臂測井儀器。該測井儀器將傳統的儀器做成以SPCE061A單片機為核心的嵌入式系統,其集成度高,大部分功能用軟件實現,包括測量、計算、結果校正、顯示、儀器量程自動校正和存儲、語音提示、報警等模塊。實驗證明,該系統能夠穩定工作,可靠性高,測量精度可達2%,能夠滿足實際油井直徑測試要求。

關鍵詞: SPCE061A; 軟件設計; 測量精度; 自動校正

中圖分類號: TN702?34 文獻標識碼: A 文章編號: 1004?373X(2015)18?0053?04

Abstract: To solve the problems of large volume and high cost of traditional oil well measuring instruments, a new?type intelligent three?arm logging instrument with high efficiency was designed. Instead of the traditional instruments, the embedded system with high integration density based on SPCE061A was implemented, whose most of functions can be realized with software, including measurement, calculation, result calibration, display, automatic correction/storage of instrument range, voice prompt and alarm modules. The experiment results show that the system has better stability and reliability, and its measuring accuracy can reach 2%, so it can meet the requirements of actual test of oil well diameter.

Keywords: SPCE061A; software design; measurement accuracy; automatic calibration

目前,我國油井直徑測量需求量大,井徑測量儀作為采油設備工具之一,隨著科學技術的快速發展不斷的更新,但普遍存在著體積大、價格貴、靈活性低等缺點?;谶@種現象,本文設計了一種基于凌陽單片機的智能井徑測量系統,其集成度高、測量誤差小、操作簡單、便于攜帶,具有很高的實用價值。

1 系統總體方案設計

系統功能的實現建立在硬件基礎之上,但也離不開質量較好的軟件設計,只有硬件和軟件無縫連接,所設計出的系統性能穩定,具有較高的可靠性及使用性。在對儀器使用狀況充分了解的基礎上,設計了以單片機為核心的硬件電路。功能框圖及硬件原理圖如圖1所示。但是在測量系統中,不能只靠硬件來實現,功能強大的軟件是驅動硬件不可或缺的。一個好的軟件大大簡化了硬件的設計,軟硬件必須兩者緊密結合起來。既要看到硬件的效率高、又要發揮軟件功能強的特點。

2 井徑測量儀軟件實現

本井經測量軟件主要由6部分組成:測量、濾波、標度變換、存儲、顯示、報警、LED指示和校正。井徑測量軟件是一個包含鍵盤操作、LED顯示和主板控制存儲的小型操作系統。它用匯編語言和C語言聯合編寫而成。匯編和C語言相結合,既顯現出了匯編語言的精煉,又不失C語言的簡練。本程序合理安排匯編和C的比例,使程序精煉而高效。

2.1 主程序模塊

程序采用模塊化設計。主程序模塊是整個程序的核心,其流程如圖2所示。進入系統后,首先對儀器的標準點進行設置,然后對系統進行初始化。接著采用永為真的while語句進行不斷循環掃描,進行數據采集以及標度變換工作。在循環中,先對鍵盤進行初始化操作,之后進行鍵盤掃描,直到有一個鍵按下,并讀取鍵值,若再有一鍵按下,則進入系統矯正程序,當有第三鍵按下時進行FLASH擦除工作。接著進入A/D轉換程序,對采樣的4組數據進行A/D轉換后,進行求平均值,所得結果作為最后采樣數據。接著對采樣數據進行判斷,其值是否處于有效范圍之內,若結果小于最小值,則顯示LLL,當結果大于最大值時,則顯示HHH并進行報警,之后才進行標度變換。

具體程序如下:

#include "hardware.h" //定義頭文件

#include "math.h"

int main() //主函數

{

int i;

unsigned long int AD_result;

//定義變量存儲A/D轉換的結果

unsigned long int AD_resultall;

//定義變量存儲A/D轉換的結果值

F_FlashErase(0xbf00); //初始化存儲效正值的FLASH段

F_FlashWrite1Word(0xbf00,0); //將A/D轉換結果存入FLASH中 F_FlashWrite1Word(0xbf01,250);

F_FlashWrite1Word(0xbf02,500);

F_FlashWrite1Word(0xbf03,750);

F_FlashWrite1Word(0xbf04,1000);

Initial(); //程序初始化

//A/D轉換&誤差效正 //

while(1)

{

key_Initial(); //鍵盤初始化

uiKeyValue=F_GetKeyValue(); //得到鍵值

if ((uiKeyValue==0x0002)|(uiKeyValue==0x0003))

tiaozheng(); //如果為2鍵或1、2同時鍵進入調整程序

if ((uiKeyValue==0x0004)|(uiKeyValue==0x0005))

{

Flash_erase();Flash_enpty=0;}

//初始化FLASH存儲器

AD_resultall=0; //A/D轉換累加器清0

AD_average=0; //A/D轉換平均值清0

system_off(); //關閉系統中斷

for(i=1;i<=4;i++) //進行4次轉換

{

AD_result=AD_converter(); //返回一次A/D轉換的結果

AD_resultall=AD_resultall+AD_result; //求A/D總值

}

system_on();

AD_average=AD_resultall/4; //進行4次轉換求平均值

//標度變換 //

if (AD_averagehhh)

{

shiwei=0x000b;

gewei=0x000b;

xshdhyw=0x000b;

xshdhew=0x000b;

}

else

{

DATA_result=DATA_converte(AD_average);

//對A/D轉換結果進行標度變換

alarm();

DATA_result*=100; //對結果乘100

shiwei=DATA_result/1000; //取出結果的十位

gewei=fmodf(DATA_result,1000)/100; //取出結果的個位

xshdhyw=fmodf(DATA_result,100)/10;

//取出結果的小數點后1位

xshdhew=fmodf(DATA_result,10);

//取出結果的小數點后2位

}

}

} //結束while循環

}

2.2 A/D轉換模塊及其誤差校正

A/D轉換模塊是整個程序數據的入口,如圖3所示,其關系著測量的速度和精度。為了提高精度和減少函數數量便與傳遞參數,誤差校正模塊嵌入在主程序中,而A/D轉換函數則用匯編語言編寫,函數無入口參數,返回值為A/D轉換的10位2進制結果。

如圖4所示,進入誤差校正程序后,首先對標志變量清0,調用A/D轉換函數,并將A/D轉換的結果累加,判斷4次轉換是否結束,未結束則繼續進行轉換,結束后求出平均值存入全局變量AD_average中。

在A/D轉換函數中,首先選擇模擬量輸入通道為LINEIN IOA0 ,允許A/D轉換,延時后查詢A/D轉換標志,判斷A/D轉換是否結束,未結束繼續轉換,結束后將結果左移6位,然后返回給調用函數。

2.3 標度變換模塊

量程校正模塊是一個結構簡單的模塊,它主要完成復雜的4次牛頓插值計算,所以它用C語言編寫,代碼精煉簡單,如圖5所示。

2.4 系統初始化模塊

系統初始化模塊是對系統運行前各個參數的設置,如圖6所示,包括I/O口的初始化,系統時基的初始化,中斷初始化等,其中時基選擇為32 Hz,中斷為IRQ5?2 Hz用于存儲數據計時,IRQ6?32 Hz用于LED動態顯示中斷。32 Hz頻率適中,使LED即能達到亮度,又不回閃爍,顯示穩定。RAM校正表的緩存作為一個程序在這里被調用, 這段程序首先從FLASH ROM中讀出參考的校正數據,然后根據計算生成4次牛頓插值表,并將表存入RAM等候被調用。

2.5 LED顯示模塊

LED顯示是人機交互最直觀的部分,要讓他即能及時顯示,又能不受其他程序的影響,所以LED顯示被放在32 Hz中斷中被調用,當每次進入中斷時首先就是進行壓棧保護,然后取出入口參數,入口參數為4位要顯示的數字如:23.87,入口參數就為2,3,8,7。然后初始化了位選標志位寄存器,接著進入相應位的顯示程序,在那里查表,找到LED位選和段選的編碼送IOB口顯示,延時顯示完1位后就給位標志位加1顯示下1位,當位選標志為5時表示一輪顯示完畢,即出棧后退出中斷程序,如圖7所示。

2.6 存儲程序模塊

存儲程序模塊包括2部分,一部分為FLASH ROM初始化即擦除程序,另一部分為FLASH寫子程序,如圖8所示。FLASH擦除時每次可擦256 B,當給FLASH中存儲數據時必須先擦除才可寫入。所以專門設立FLASH擦除鍵,用于手動控制FLASH的初始化。FLASH寫子程序被0.5 Hz的中斷調用,用于定時存儲數據,便于日后分析,它將A/D轉換的結果存在以c000開始的FLASH中,每存1次給地址指針加1。

2.7 系統校正程序模塊

系統校正程序標志本井徑測量儀進入了智能儀器的行列,它之所以被稱為智能是因為它可以根據需要和實際情況自動的調整量程,同時亦是對系統誤差的校正,如圖9所示。它的原理是人為地輸入5個標準點,測量儀記錄下這5個標準點,并通過4次插牛頓值公式生成校正表,等下次測量時就可以根據這5個標準點和校正表對測量值進行標度變換,程序具體流程如下所述,進入系統校正程序后,首先點亮校正模式指示燈,然后系統關中斷,將存儲校正值的FLASH初始化,語音提示:“進入系統校正模式”提示用戶做好相應的校正準備;程序進入一個5次循環,即設置5個標準點,程序提示開始校正第一點,請用戶把標準值放在第一點上,緊接著程序不斷進行鍵盤掃描等候用戶按確定鍵確認輸入的標準量程;當有鍵按下時系統進行4次A/D轉換,并通過求平均值法消除隨即誤差,并將標準值存入內存指定單元,程序接著進入第二輪循環,并提示進行校正第二點,這樣當進行完5次校正后,系統會把校正值存入指定的FLASH ROM單元中,調用生成校正表程序,提示:“系統校正完畢”,指示燈滅;系統恢復現場并繼續進行測量,此后測量的結果都是通過新生成的校正表,插值校正等計算而成,精確度提高誤差減小。

2.8 其他模塊

(1) 報警程序模塊:報警程序被放在標度變化后被調用,判斷變化結果是否低于報警值,不低于時退出不做任何操作;若小于設定報警值立刻進行語音報警,并驅動相應報警燈閃爍。它是儀器智能化的一個重要部分。

(2) LED指示程序模塊:LED指示模塊,作為一個獨立的模塊,需要LED指示的程序調用,它的入口參數為要顯示的相應燈16進制編碼,由于其在IOA的高8位輸出,又不影響IOA口原來的狀態,所以要將數據左移8位,然后和IOA口原來的數據相異或,在送給IOA口顯示這樣就點亮了相應的指示燈。這段程序用匯編語言編寫恰到好處,代碼精煉,運行速度快。

(3) 語音播放程序模塊:語音播放是SPCE061A單片機的特色功能,在這里增加語音提示功能,可以使人機交互更加方便,生動。它的入口參數為被播放的語音段編碼,語言播放很簡單,這里采用凌陽壓縮算法S480,它有較高的壓縮率和較清晰的音質,作為語音提示是個理想的選擇。由于SPCE公司已經做好了語音播放函數庫,這里只需要進行語言播放初始化和提供相應播放參數就可進行播放;不過每次提示音播放完畢后都要對系統的時鐘和中斷復位,使系統能夠正常運行。

3 結 語

本井徑測量儀所實現的功能為:量程范圍為7~15 inch,即17~38 cm;測量儀上電時會立即進入測量模式,從3位LED上顯示輸出測量值,測量的結果會自動存儲,同時存儲指示燈會閃爍,儀器放入井中后會進行實時的測量;當測量值小于報警值時,儀器報警指示燈會閃爍,并有語音報警提示;儀器若卡在井中,會自動發出聲光報警,可以根據實際給定的標準值進行自動校正。

參考文獻

[1] 趙茂泰.智能儀器原理及應用[M].北京:電子工業出版社,2009.

[2] 楊秀萍,劉嵩巖.小型化油井綜合測試系統設計[J].哈爾濱商業大學學報:自然科學版,2008(3):344?346.

[3] 侯媛彬.凌陽單片機原理及其開發[M].北京:科學出版社,2012.

[4] 陳言俊.凌陽16位單片機應用[M].北京:北京航空航天大學出版社,2009.

[5] 任衛軍.凌陽十六位單片機原理及應用[M].西安:西安電子科技大學出版社,2011.

[6] 譚浩強.C程序設計教程[M].北京:清華大學出版社,2013.

猜你喜歡
測量精度軟件設計
CAN總線通信技術在電梯監控系統中的應用
基于單片機SPCE061A的字幕機點陣式字母電子顯示屏的設計制作
基于STM8S903K3的序列打螺絲夾具的軟件設計
一種VHDL語言代碼重用的方法
礦山動態輕軌衡系統稱重信號處理的研究
淺談工程測量中GPS技術的應用
儀器誤差對經緯儀水平角測量精度的影響
丹尼爾超聲波流量計的日常維護和故障處理辦法
高層建筑施工GPS測量技術探討
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合