天然氣體積修正儀數(shù)據(jù)采集模塊設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
天然氣在輸送、分配和使用過程中,需要對(duì)天然氣的輸送量、分配量和用戶用量進(jìn)行計(jì)量。在天然氣流量的實(shí)用計(jì)量中,通常用某一段時(shí)間間隔內(nèi)通過天然氣管道輸送的天然氣總量來表示,即天然氣的體積總量。天然氣總量的計(jì)量對(duì)象類型很多,氣源售出計(jì)量、城市購(gòu)入計(jì)量、區(qū)域供氣計(jì)量和用戶用氣計(jì)量等。目前國(guó)內(nèi)天然氣大都使用體積計(jì)量的方法,但由于天然氣在不同的溫度和壓力下,氣體體積有較為明顯的變化,采用簡(jiǎn)單的體積計(jì)量,明顯不符合公平交易的原則。如何將工況下的天然氣體積通過溫度、壓力和壓縮系數(shù)進(jìn)行修正,從而得到標(biāo)準(zhǔn)狀況下的體積,是保證天然氣貿(mào)易結(jié)算公平的關(guān)鍵所在。信息技術(shù)的不斷發(fā)展、計(jì)算機(jī)技術(shù)在計(jì)量系統(tǒng)中的廣泛應(yīng)用將會(huì)提高天然氣的計(jì)量精度,加快測(cè)量數(shù)據(jù)的傳遞速度。
1 儀表總體設(shè)計(jì)
天然氣體積修正儀主要完成天然氣流量的自動(dòng)修正,適于安裝在工廠、住宅等環(huán)境,實(shí)時(shí)反映天然氣的流量計(jì)量情況,并可與上位機(jī)進(jìn)行通信,為上位機(jī)管理軟件提供數(shù)據(jù)支持。
體積修正儀通過壓力傳感器和溫度傳感器采集壓力和溫度信息,結(jié)合氣體流量計(jì)采集的流量脈沖信號(hào)進(jìn)行天然氣流量的自動(dòng)修正,并通過RS232標(biāo)準(zhǔn)進(jìn)行串口數(shù)據(jù)傳送。圖1是體積修正儀的結(jié)構(gòu)示意圖。
天然氣體積修正儀根據(jù)功能設(shè)計(jì)如下5個(gè)模塊:數(shù)據(jù)采集模塊、體積修正模塊、液晶顯示模塊、按鍵模塊以及與上位機(jī)通信模塊。幾個(gè)功能模塊采用低功耗FPGA器件,以Nios Ⅱ嵌入式處理器為核心,利用SoPC技術(shù)完成嵌入式開發(fā)。
2 數(shù)據(jù)采集模塊設(shè)計(jì)
在天然氣體積修正儀設(shè)計(jì)中,數(shù)據(jù)采集模塊是保證測(cè)量和計(jì)算精度的首要模塊。分為輸入檢測(cè)和數(shù)據(jù)處理兩部分。
2.1 輸入檢測(cè)
天然氣體積修正儀前端測(cè)量中涉及2個(gè)模擬量:溫度和壓力信號(hào)。根據(jù)溫度和壓力值可計(jì)算出天然氣的壓縮因子,從而校正天然氣的體積。
2.1.1 溫度檢測(cè)
照顧到民用和商用的范圍,設(shè)計(jì)采用Pt100陶瓷高性能鉑熱電阻溫度計(jì)作為測(cè)溫元件,鉑在氧化性介質(zhì)中,甚至在高溫下的物理、化學(xué)性質(zhì)都很穩(wěn)定。另外,Pt100溫度傳感器還具有抗振動(dòng)、穩(wěn)定性好、準(zhǔn)確度高、耐高壓等優(yōu)點(diǎn)。
本設(shè)計(jì)氣體溫度范圍為:-30 ℃~70 ℃。經(jīng)放大電路放大后電壓變化范圍在0V~4.5 V之間。
2.1.2 壓力檢測(cè)
由于工作壓力范圍為0~10 MPa,經(jīng)過選型,采用CGYL-202壓力變送器,其三線制輸出電壓范圍為0 V~5 V,配合溫度信號(hào),方便后續(xù)模數(shù)轉(zhuǎn)換。壓力變送器采用硅杯壓阻傳感器為敏感元件,具有體積小、質(zhì)量輕、結(jié)構(gòu)簡(jiǎn)單和穩(wěn)定性好的優(yōu)點(diǎn),精度也較高。且具有本安防爆認(rèn)證,防震性能好。
2.2 A/D轉(zhuǎn)換及數(shù)據(jù)處理[2]
經(jīng)采集的溫度壓力信號(hào)在參與壓縮因子計(jì)算前必須經(jīng)過模數(shù)轉(zhuǎn)換。
本設(shè)計(jì)采用12位4通道、高速低功耗A/D轉(zhuǎn)換芯片AD7864。AD7864是美國(guó)ADI公司生產(chǎn)的逐次逼近式并行輸出的A/D轉(zhuǎn)換器,片內(nèi)由12位ADC、時(shí)鐘電路、5 V高精度參考電壓源和比較器組成,無需任何外部電路即可完成整個(gè)A/D轉(zhuǎn)換的過程。該轉(zhuǎn)換器自身帶有4路采樣/保持電路,可同時(shí)進(jìn)行采樣轉(zhuǎn)換,這樣就節(jié)省了系統(tǒng)的硬件電路空間。該器件最快轉(zhuǎn)換時(shí)間可達(dá)1.65μs,信號(hào)輸入范圍可為0 V~5 V、±5 V或±10 V。
AD7864的控制狀態(tài)引腳主要有:
(1)轉(zhuǎn)換啟動(dòng)信號(hào)CONVST,下降沿觸發(fā)一次四通道轉(zhuǎn)換;
(2)工作狀態(tài)忙信號(hào)輸出BUSY,高為忙;
(3)讀轉(zhuǎn)換結(jié)果控制信號(hào)RD,低電平有效;
(4)片選信號(hào)CS,低電平有效;
(5)轉(zhuǎn)換結(jié)束狀態(tài)輸出信號(hào)EOC,低電平有效;
(6)通道選擇信號(hào)線SL1~SL4;
(7)硬件/軟件通道選擇方式H/S SEL;
(8)第1個(gè)數(shù)據(jù)輸出狀態(tài)信號(hào)FRSTDATA,第1通道轉(zhuǎn)換結(jié)束數(shù)據(jù)可讀觸發(fā)為高,第2通道轉(zhuǎn)換結(jié)束變?yōu)榈汀?br />本系統(tǒng)采用EP1C12Q240型FPGA,其足夠的引腳資源完全能夠滿足需求。
2.2.1 數(shù)據(jù)采集模塊總體設(shè)計(jì)
為了讓CPU專注于處理其他任務(wù),專門在FPGA內(nèi)部設(shè)計(jì)一個(gè)A/D硬件控制器,負(fù)責(zé)對(duì)A/D的采樣控制,并將采樣數(shù)據(jù)進(jìn)行濾波處理。該控制器還可以根據(jù)CPU的輸出控制字改變采樣的頻率。
頻譜分析的誤差很大程度來自采樣窗口和實(shí)際波形的同步不嚴(yán)格,造成頻譜泄漏。為消除頻譜泄漏引起的誤差,常用的方法有硬件同步和加窗處理。硬件同步的方法比較多,常用的主要有使用PLL電路進(jìn)行同步。因此,按照GB/T14549-1993要求,用FPGA內(nèi)部高精度的PLL產(chǎn)生采樣時(shí)鐘來實(shí)現(xiàn)嚴(yán)格的同步采樣,以保證窗口間無重疊和間隔,并能嚴(yán)格與被測(cè)信號(hào)頻率同步。
在本模塊中,所有時(shí)序控制均由FPGA完成,采用VHDL語言對(duì)FPGA進(jìn)行配置,配置后的硬件功能包括對(duì)A/D轉(zhuǎn)換器的控制、12位并行數(shù)據(jù)的處理和數(shù)據(jù)的濾波。
設(shè)計(jì)2個(gè)控制器完成上述功能:A/D控制器和濾波器。A/D控制器用來控制A/D時(shí)序,完成A/D轉(zhuǎn)換功能。濾波模塊完成數(shù)據(jù)的后續(xù)處理。設(shè)計(jì)模塊圖如圖2所示。[!--empirenews.page--]
2.2.2 A/D控制器設(shè)計(jì)
AD7864的工作時(shí)序圖如圖3所示。當(dāng)CONVST信號(hào)為下降沿時(shí)啟動(dòng)一次四通道的A/D轉(zhuǎn)換,因此采樣頻率決定于CONVST信號(hào)的頻率,在第一通道開始轉(zhuǎn)換之后BUSY信號(hào)為高,四通道轉(zhuǎn)換全部結(jié)束后變?yōu)榈?,EOC為高表明正在轉(zhuǎn)換,為低表示一次轉(zhuǎn)換結(jié)束,可讀取結(jié)果,此時(shí)將片選置為低,同時(shí)將讀信號(hào)RD置低即可從數(shù)據(jù)線上將數(shù)據(jù)讀出。為了便于控制采樣頻率,設(shè)置AD_START和CLOCK信號(hào)分別作為外部控制A/D開始轉(zhuǎn)換信號(hào)和時(shí)鐘信號(hào)。
本文采用硬件選擇通道方式,SL1、SL2置高,兩通道依次按順序轉(zhuǎn)換。由于兩通道采樣數(shù)據(jù)使用同一路數(shù)據(jù)總線依次讀出,采用有限狀態(tài)機(jī)(FSM)實(shí)現(xiàn)各通道數(shù)據(jù)的采集。狀態(tài)機(jī)是邏輯設(shè)計(jì)中最重要的設(shè)計(jì)內(nèi)容之一,通過狀態(tài)轉(zhuǎn)移圖設(shè)計(jì)手段可以將復(fù)雜的控制時(shí)序圖形化表示,分解為狀態(tài)之間的轉(zhuǎn)換關(guān)系,將問題簡(jiǎn)化。VHDL流水線設(shè)計(jì)方法可以提高系統(tǒng)的工作頻率,采用VHDL語言編寫控制程序。
狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖如圖4所示,共分為6個(gè)工作狀態(tài):零狀態(tài)(idle)、等待狀態(tài)(STAND_BY)、轉(zhuǎn)換第一通道數(shù)據(jù)(CH0_CONVST)、讀第一通道數(shù)據(jù)(CH0_RD)、轉(zhuǎn)換第二通道數(shù)據(jù)(CH1_CONVST)以及讀第二通道數(shù)據(jù)(CH1_RD)。
設(shè)計(jì)控制器端口類型及說明如表1所示。
[!--empirenews.page--]FSM結(jié)構(gòu)體定義信號(hào)類型ST和count。ST為狀態(tài),且初始狀態(tài)為零狀態(tài);count用于讀數(shù)據(jù)的計(jì)數(shù),用于濾波。
為了實(shí)現(xiàn)快速狀態(tài)轉(zhuǎn)換同時(shí)增強(qiáng)穩(wěn)定性,避免出現(xiàn)毛刺現(xiàn)象,A/D轉(zhuǎn)換器的時(shí)序控制采用多進(jìn)程有限狀態(tài)機(jī)來實(shí)現(xiàn)。
(1) 時(shí)序邏輯
時(shí)序邏輯進(jìn)程STATE_TRANS負(fù)責(zé)狀態(tài)轉(zhuǎn)換,當(dāng)時(shí)鐘信號(hào)SYS_CLK上升沿到來時(shí),判斷轉(zhuǎn)換條件使?fàn)顟B(tài)機(jī)轉(zhuǎn)入相應(yīng)狀態(tài)。
(2) 組合邏輯
組合邏輯進(jìn)程STATE_BEHV負(fù)責(zé)狀態(tài)輸出,當(dāng)狀態(tài)變量ST發(fā)生變化時(shí),產(chǎn)生對(duì)應(yīng)此狀態(tài)的CNV_ST,AD_RD AD_CS,CH(0為第一通道,1為第二通道)及STATUS相應(yīng)輸出。
(3) 計(jì)數(shù)邏輯
定義P0進(jìn)程,敏感參數(shù)為CNV_ST,當(dāng)一組數(shù)據(jù)采樣結(jié)束(CNV_ST信號(hào)由0變?yōu)?),如果已經(jīng)采集10組數(shù)據(jù),則置位FULL信號(hào),表示采樣過程已經(jīng)結(jié)束。
2.2.3 濾波器設(shè)計(jì)
A/D轉(zhuǎn)換后的數(shù)據(jù)還不能立即送入處理器中處理,為了提高數(shù)據(jù)的準(zhǔn)確性,設(shè)計(jì)濾波單元對(duì)數(shù)據(jù)進(jìn)行處理。濾波濾波器設(shè)計(jì)實(shí)現(xiàn)經(jīng)A/D轉(zhuǎn)換后的數(shù)據(jù)濾波處理及數(shù)據(jù)的輸出。
數(shù)字濾波模塊的濾波算法采用中位值平均濾波法,相當(dāng)于“中位值濾波法”+“算術(shù)平無度濾波法”,該方法計(jì)算簡(jiǎn)單、速度快,還可消除由于脈沖干擾所引起的采樣值偏差,使得經(jīng)濾波后的輸出信號(hào)為“干凈”信號(hào),可直接用于工業(yè)控制。中位值平均濾波法的時(shí)域差分方程是:
本系統(tǒng)設(shè)計(jì)10組數(shù)據(jù)進(jìn)行濾波處理,取N=8。為了節(jié)約FPGA內(nèi)部資源,濾波器的設(shè)計(jì)中采用移位寄存器代替除法器來實(shí)現(xiàn)平均濾波部分的算法。濾波模塊的設(shè)計(jì)從采樣數(shù)據(jù)的輸入、數(shù)值累加、去極值、求平均值到數(shù)字量的輸出共5個(gè)處理步驟,并且整個(gè)數(shù)據(jù)處理是“單流向”的,前一步驟的輸出是下一步驟的輸入,符合流水線設(shè)計(jì)要求。采用流水線設(shè)計(jì)方法可以提高系統(tǒng)的工作頻率,從宏觀上看數(shù)字濾波模塊不占用額外的處理時(shí)間,對(duì)于超高速A/D轉(zhuǎn)換控制中顯得格外重要。從VHDL語言的角度看,流水線操作是用面積換速度思想的具體體現(xiàn)[3]。
定義濾波器端口類型見表2所示。
從仿真圖中可以看出,當(dāng)時(shí)鐘處于上升沿,AD_START變?yōu)楦唠娖綍r(shí),啟動(dòng)A/D轉(zhuǎn)換,依次讀2個(gè)通道的數(shù)據(jù)。當(dāng)讀滿10組時(shí),進(jìn)行濾波處理。當(dāng)CPU發(fā)出讀信號(hào)時(shí),數(shù)據(jù)讀出??梢?,設(shè)計(jì)的A/D控制器和濾波器完全符合設(shè)計(jì)要求。
對(duì)設(shè)計(jì)程序進(jìn)行編譯,可以看出,EP1C12Q240C8總的邏輯元數(shù)目為12 060,本控制模塊只占用了227個(gè),完全達(dá)到數(shù)據(jù)采集及濾波處理功能,極大地減輕了CPU的負(fù)擔(dān),可以讓CPU專注于其他的任務(wù)。是一種可行且值得推廣的方法。
3 總體功能仿真及編譯結(jié)果
設(shè)計(jì)完成,生成頂層模塊。該模塊可直接加入到體積修正儀的SOPC設(shè)計(jì)中。其總體功能仿真如圖5所示。
從仿真圖中可以看出,當(dāng)時(shí)鐘處于上升沿,AD_START變?yōu)楦唠娖綍r(shí),啟動(dòng)A/D轉(zhuǎn)換,依次讀2個(gè)通道的數(shù)據(jù)。當(dāng)讀滿10組時(shí),進(jìn)行濾波處理。當(dāng)CPU發(fā)出讀信號(hào)時(shí),數(shù)據(jù)讀出。可見,設(shè)計(jì)的A/D控制器和濾波器完全符合設(shè)計(jì)要求。
對(duì)設(shè)計(jì)程序進(jìn)行編譯,可以看出,EP1C12Q240C8總的邏輯元數(shù)目為12 060,本控制模塊只占用了227個(gè),完全達(dá)到數(shù)據(jù)采集及濾波處理功能,極大地減輕了CPU的負(fù)擔(dān),可以讓CPU專注于其他的任務(wù)。是一種可行且值得推廣的方法。