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