產(chǎn)品類(lèi)別
新聞分類(lèi)導航
聯(lián)系我們
廠(chǎng)家傳真:022-83719059
企業(yè)郵箱:hjzhu0518@21cn.com 工廠(chǎng)所在地址: 天津市南開(kāi)區華苑產(chǎn)業(yè)區鑫茂科技園D2座一層A單元
新聞詳情
基于DSP的科氏流量計變送器設計及算法驗證
1 引言
科氏流量計(以下簡(jiǎn)稱(chēng)CMF)是一種廣泛應用的直接式質(zhì)量流量計。目前此類(lèi)流量計存在著(zhù)許多問(wèn)題,諸如:管子的振動(dòng)會(huì )隨流體密度的改變而發(fā)生頻率漂移,給相位差測量帶來(lái)困難;對噪聲極敏感,現場(chǎng)測量精度低于實(shí)驗室標定精度等。CMF的關(guān)鍵技術(shù)是通過(guò)變送器精確測量一次儀表信號的時(shí)間差。為此,科研機構及商業(yè)公司都致力于研制高性能的變送器。
提出了基于FPGA的全相位FFT方案,有效地抑制了頻譜泄露,免去了傳統FFT算法中頻譜校正的煩瑣步驟,精度及實(shí)時(shí)性都有提高,采用FPGA作為處理器,便于電路重構,但增加了成本。提出了基于DSP的過(guò)零檢測方案,采用反向拉格朗日插值求解過(guò)零點(diǎn),實(shí)現較簡(jiǎn)單,但信號過(guò)零點(diǎn)附近擾動(dòng)較大,在濾波效果不理想時(shí),測量精度較差。提出了基于MCU的方案,MCU沒(méi)有硬件乘法器和浮點(diǎn)數處理器,實(shí)時(shí)性較差。提出了基于DSP的希爾伯特變換方案,但希爾伯特變換存在端點(diǎn)效應,未給出解決方案。此外,還有學(xué)者提出了基于現代譜分析、計及負頻率的DT-FT、數字相關(guān)法、自適應濾波器等多種信號處理方法,但多停留在仿真階段,未在變送器中實(shí)現,其實(shí)際效果未知。市場(chǎng)上成品的變送器禁止用戶(hù)訪(fǎng)問(wèn)和修改內部程序,在一定程度上限制了前沿理論向應用的轉化。
針對以上問(wèn)題,設計了支持用戶(hù)下載和調試程序的變送器,采用了基于改進(jìn)的自適應格型陷波器(簡(jiǎn)稱(chēng)為MALNF)和重疊短漢寧窗滑動(dòng)DTFT(簡(jiǎn)稱(chēng)為DOHW)的信號處理方法,通過(guò)實(shí)驗,驗證了變送器的有效性。
2 變送器功能設計
CMF由一次儀表和變送器組成。一次儀表包括導流管和安裝于其上的激振器、拾振器等。激振器驅動(dòng)導流管以某一頻率振動(dòng),流體流經(jīng)振動(dòng)的導流管時(shí)受科氏力作用發(fā)生扭曲,反作用于導流管,拾振器檢測出形變,輸出兩路具有時(shí)間差的信號。變送器具備以下功能:為激振器提供起振信號;接收拾振器輸出信號,據此測量質(zhì)量流量、密度、體積流量等,并通過(guò)反饋修正驅動(dòng)信號,以維持激振器的穩定;以脈沖信號和電流信號將測量結果遠傳至其他智能儀表;與控制室上位機通信;實(shí)現現場(chǎng)人機交互。
變送器的主要功能模塊分為:信號調理模塊、運算控制模塊、人機交互模塊、工程量輸出模塊、通信模塊、驅動(dòng)模塊及電源模塊等,如圖1所示。信號調理模塊將拾振器輸出的電壓信號進(jìn)行放大、濾波和模數轉換,送入運算控制模塊。運算控制模塊通過(guò)特定算法,計算兩路信號的頻率及相位差,得到瞬時(shí)流量、累計流量、密度、體積流量等信息,并監控其他外設。人機交互模塊由鍵盤(pán)和顯示屏組成,用戶(hù)可以選擇菜單,輸入參數,實(shí)時(shí)觀(guān)察運算結果。工程量輸出模塊將計算結果轉換為脈沖信號和電流信號,以供遠端控制器和其他智能儀表使用。通信模塊與控制室計算機通信,實(shí)時(shí)上傳測量數據,接收控制人員的指令。驅動(dòng)模塊接收拾振器輸出信號,通過(guò)反饋調節,輸出激振器驅動(dòng)信號,使激振器驅動(dòng)導流管振動(dòng)。
圖1 功能模塊
3 變送器硬件設計
變送器硬件結構如圖2。拾振器輸出幅值為0.3V,頻率約為200Hz的正弦電壓信號。為提高測量精度,需要經(jīng)過(guò)幅值放大以適應ADC的量程。而后采用低通濾波器去除高頻噪聲,防止采樣后發(fā)生頻率混疊。ADC與DSP的通信基于SPI標準,將ADC與DSP的McBSP引腳連接,DSP作為主設備,提供串行時(shí)鐘和同步信號,發(fā)送控制指令,ADC作為從設備,接收指令,將用戶(hù)指定的數據傳輸給DSP。
圖2 硬件結構
頻率信號由DSP的ePWM產(chǎn)生。DSP的GPIO輸出數字量,控制DAC,輸出電流信號。DSP通過(guò)SCI模塊與遠程計算機通信。鍵盤(pán)和顯示屏通過(guò)GPIO與DSP交換數據。
4 變送器軟件設計
軟件流程如圖3所示,分為系統初始化、數據采集、信號處理算法、通信、人機交互等幾個(gè)環(huán)節。
圖3 軟件流程
4.1 數據采集
ADC輸出的數據首先進(jìn)入DSP中McBSP數據接收寄存器DRR1,2,應及時(shí)將此數據轉移到內存中,以防被新數據覆蓋。DMA方式可實(shí)現外設與內存間的高速傳輸,能大大減輕CPU開(kāi)銷(xiāo)。因ADC輸出為24位,DSP的最小內存單元為16位,故DMA緩存區設置為6000×32位數組,這樣便可邊采集數據,邊處理之前的數據。以傳輸左拾振器的數據為例,為其在內存中開(kāi)辟數組Uint32LS_CH[6000],對DMA控制器配置的關(guān)鍵代碼如下:
DmaRegs.CH1.BURST_SIZE.all=1;
DmaRegs.CH1.SRC_BURST_STEP=1;
DmaRegs.CH1.DST_BURST_STEP=-1;
DmaRegs.CH1.TRANSFER_SIZE=49;
DmaRegs.CH1.SRC_TRANSFER_STEP=-1;
DmaRegs.CH1.DST_TRANSFER_STEP=3;
DmaRegs.CH1.SRC_ADDR_SHADOW=(un-signedlong)&McbspaRegs.DRR2.all;
DmaRegs.CH1.SRC_BEG_ADDR_SHADOW=(unsignedlong)&McbspaRegs.DRR2.all;
DmaRegs.CH1.DST_ADDR_SHADOW=(un-signedlong)&LS_CH[0]+1;
DmaRegs.CH1.DST_BEG_ADDR_SHADOW=(unsignedlong)&LS_CH[0]+1;
DmaRegs.CH1.MODE.bit.CHINTE=1;DmaRegs.CH1.MODE.bit.CHINTMODE=1;DmaRegs.CH1.MODE.bit.PERINTSEL=DMA_MREVTA;
DmaRegs.CH1.MODE.bit.CONTINUOUS=1;
DmaRegs.CH1.MODE.bit.PERINTE=1;
DMA的源指針初始指向McBSP_A的數據接收寄存器DRR2(其中存放的是ADC輸出數據中的高8位),而目的指針初始指向DMA緩存區中偏移地址為1的內存單元,即LS_CH[0]的高字部分。傳輸數據過(guò)程為2層循環(huán),內層循環(huán)為每個(gè)脈沖傳輸2個(gè)字,傳輸完第一個(gè)字,源指針指向DRR1,目的指針指向LS_CH[0];外層循環(huán)為每個(gè)轉移傳輸50個(gè)脈沖,每個(gè)脈沖過(guò)后,源指針指向DRR2,目的指針指向3個(gè)偏移量后的內存單元。這樣,數據在內存中以便于DSP處理的小端模式存儲。McBSP_A每接收24位數據,就產(chǎn)生一次MREVTA中斷,從而觸發(fā)DMA控制器執行一次脈沖,而每完成一次轉移又會(huì )觸發(fā)一次DMA中斷。在連續運行模式下,影子地址寄存器中的值重新裝載到當前地址寄存器,開(kāi)始新一輪轉移。具體過(guò)程如圖4所示。
圖4 DMA運送數據過(guò)程
4.2 數據預處理
對采集到的數據預處理,每次取256點(diǎn)進(jìn)行工程量轉換,剔除奇異值。對數據進(jìn)行篩選:設信號最大幅值為A,采樣頻率為2kSPS,當信噪比大于5dB時(shí),絕對值位于(2/3)A~A區間內的點(diǎn)數應占總點(diǎn)數的22%~28%,若不滿(mǎn)足此條件,直接舍棄。
4.3 頻率估計算法實(shí)現
頻率估計采用MALNF算法,該算法適合處理時(shí)變信號,能根據估計誤差自動(dòng)調整濾波器參數,可快速跟蹤頻率變化,并有效降噪。傳統的自適應陷波器在誤差曲線(xiàn)收斂至局部最優(yōu)時(shí)便停止跟蹤頻率,改進(jìn)的算法解決了這個(gè)問(wèn)題。因算法存在收斂過(guò)程,下一時(shí)刻的參數須在之前時(shí)刻參數的基礎上調整,才能盡快收斂,通過(guò)遞推法可將冪運算化簡(jiǎn)為乘法運算,計算速度大大加快。為節約內存,采用原址存儲。例如,中間變量v[n]與輸入信號x[n]之間的傳遞函數為式(1):
(1)
對于變量υ,僅需3個(gè)存儲單元。計算υ[n]的流程如圖5所示,υ[n]、υ[n-1]與υ[n-2]按箭頭方向滑動(dòng)計算,循環(huán)存儲在υ[0]、υ[1]、υ[2]3個(gè)內存單元中。
圖5 計算v[n]的流程
當運算至第n(設n能被3整除)點(diǎn)時(shí),計算υ的關(guān)鍵代碼如下:
其中bufIndx代表本次參與運算的點(diǎn)在數組LV_CH中的索引,而smpIndx表示本次調用MALNF算法之前,已計算過(guò)的總點(diǎn)數,(smpIndx+bufIndx)表示當前參與計算的點(diǎn)在DMA緩存數組LS_CH中的索引,通過(guò)這種表示方法,可保證參與計算的數據的索引具有延續性,以持續跟蹤頻率的變化。
4.4 相位差估計算法實(shí)現
相位差估計采用DOHW法,該法考慮了負頻率成分的影響,通過(guò)漢寧窗對數據截短,對頻譜泄露有良好的抑制作用,利用滑動(dòng)算法遞推計算,增強了算法的實(shí)時(shí)性。加重疊短漢寧窗后的信號x(n)在ω^(短窗內最后采樣時(shí)刻的頻率估計值)處的DTFT如式(2):
(2)
因C語(yǔ)言不支持復數運算,需將復數分解為實(shí)數再運算,如exp(-jωi)拆分成實(shí)數cos(ωi)和sin(ωi)。為節約時(shí)間,盡量減少重復計算,例如,i每變換一次,需重復計算4次ωi,2次cos(ωi),若把ωi用中間變量eInd代替,cos(ωi)用p代替,只需計算1次ωi和1次cos(ωi)。具體代碼如下:
a=bufIndx-WINDOW+i;
l=cos(Pi2*(float)i/WINDOW);
win=(1-l)/2.0;
eInd=-1*(float)i*omega;
p=cos(eInd);
q=sin(eInd);
dtftRe1+=LV_CH[a]*p*win;
dtftIm1+=LV_CH[a]*q*win;
4.5 代碼優(yōu)化
對代碼的優(yōu)化主要遵循以下幾點(diǎn)原則:
1)運算盡量化簡(jiǎn)為加、減和乘法,如:整數次冪改用乘法,而不調用pow函數,整數乘以或除以2的整數次冪時(shí),改用左移或右移運算;
2)使用浮點(diǎn)庫rts2800_fpu32.lib;
3)常調用的函數在初始化時(shí)復制到RAM中運行,不被其他文件調用的函數盡量聲明為內線(xiàn)函數,可減小函數跳轉的開(kāi)銷(xiāo);
4)使用CCS文件級優(yōu)化:分配變量到寄存器;擴展對內線(xiàn)函數的調用;對返回值無(wú)用的函數進(jìn)行化簡(jiǎn);當調用某函數都向同一形參傳遞同一值時(shí),在函數體內增加參數;
5)“見(jiàn)縫插針”,對某些硬件配置后必須待其穩定后才能啟動(dòng),可在這個(gè)時(shí)間內插入其他程序,節約時(shí)間;
6)未用到的外設模塊,關(guān)閉其時(shí)鐘,節約功耗。
5 實(shí)驗驗證及分析
5.1 實(shí)驗方案
利用AFG3000系列雙通道任意波形/函數發(fā)生器產(chǎn)生兩路同頻不同相的正弦加噪信號模擬拾振器信號,將本文實(shí)現的信號處理方法與DFT法對信號進(jìn)行對比處理。選擇精度較高的算法,在科氏流量計實(shí)驗平臺上進(jìn)行流量測量實(shí)驗。實(shí)驗平臺由兩款流量計串聯(lián)而成,一款為進(jìn)口流量計;另一款為國產(chǎn)流量計。將自制變送器連接到一次儀表上,比較國產(chǎn)變送器與自制變送器的精度。
CMF拾振器輸出信號的頻率通常在測量管固有頻率±4Hz鄰域內變化,而相位差一般小于4°。變送器參數設置如下:采樣頻率為2kSPS,每次取256點(diǎn)計算,遺忘因子λ(1)=0.9,λ(n)=0.0099+0.99λ(n-1),去偏置參數ρ(1)=0.9007,ρ(n)=0.009+0.99ρ(n-1),漢寧窗長(cháng)度為25。具體實(shí)驗步驟如下:
1)使信號發(fā)生器輸出幅值為0.3V的連續正弦電壓波,頻率在[196,204]Hz區間內變化,步長(cháng)為1Hz,進(jìn)行頻率估計;
2)保持頻率為200Hz,使相位差在[0.4,4]°區間變化,步長(cháng)為0.4°,進(jìn)行相位差估計;
3)設定DSP定時(shí)時(shí)間為2s,每次運行算法前啟動(dòng)定時(shí)器,運行完算法后停止定時(shí)器,測定算法消耗時(shí)間;
4)在科氏流量計實(shí)驗平臺上進(jìn)行流量測量實(shí)驗,使閥門(mén)開(kāi)度在[20%,100%]區間變化,步長(cháng)為10%,以高精度進(jìn)口變送器的示數作為準確值,對比國產(chǎn)變送器和自制變送器的精度。
5.2 實(shí)驗結果及分析
濾波前后的信號波形如圖6所示,當計算約130點(diǎn)后,波形基本穩定。頻率估計結果如圖6濾波前后的信號波形。
圖6 濾波前后的信號波形
如表1和圖7,可看出,采用MALNF法進(jìn)行頻率估計的誤差基本穩定,至多是DFT法的1/10,而采用DFT法進(jìn)行頻率估計的誤差具有周期性,當采樣點(diǎn)數為信號周期的整數倍時(shí)無(wú)頻譜泄露,因而誤差較小。
表1 頻率估計結果
圖7 頻率估計誤差
若要提高DFT法的精度,則需降低采樣頻率或增加每次參與計算的點(diǎn)數。采樣頻率太低會(huì )導致頻譜混疊,而增加每次參與計算的點(diǎn)數,勢必會(huì )延長(cháng)計算時(shí)間。由于DFT法求出的頻率是一段時(shí)間內的平均值,參與運算的點(diǎn)數越多,算法對頻率的變化越不敏感。DFT法在DSP上實(shí)現時(shí),采用C28FPULibrary的RFFT_32函數,要求在內存中給輸入數組分配2倍于其大小的空間。因此增加同樣的輸入點(diǎn)數,DFT法對內存的消耗是MALNF法的2倍,通過(guò)增加點(diǎn)數來(lái)提高頻率分辨率的效果遠遠抵不過(guò)增加內存消耗帶來(lái)的負面影響。
相位差估計結果如表2和圖8,可看出,采用DOWH法估計相位差的誤差約是DFT法的1/5,這是因為兩種相位差估計方法都需要利用頻率值,而采用DFT法估計的頻率誤差原本就比較大,該誤差會(huì )累積到相位差中,DOWH法考慮了負頻率的影響,漢寧窗比矩形窗具有更小的邊瓣和更快的邊瓣譜峰漸進(jìn)衰減速度,能更有效地抑制頻譜泄露。
表2 相位差估計結果
圖8 相位差估計誤差
對算法耗時(shí)進(jìn)行測量,每次參與計算的點(diǎn)數為256時(shí),DFT法耗時(shí)0.21ms,而本文實(shí)現的算法耗時(shí)0.96ms。這是由于DFT法可以使用FFT算法,將可能用到的三角函數值事先計算好保存在內存中,后續運算用到這些數值時(shí)直接查表,避免了重復計算,而本文實(shí)現的算法每次運行時(shí)都要多次調用三角函數,這就消耗了較多時(shí)間。
流量測量結果如表3和圖9,可以看出,自制變送器相比實(shí)驗平臺上的國產(chǎn)變送器精度有所提高,相對誤差隨著(zhù)閥門(mén)開(kāi)度的增加而減小,這是因為閥門(mén)開(kāi)度較小時(shí),流體沒(méi)有充滿(mǎn)管道,屬于氣液兩相流,干擾較大,因而誤差也較大,而當流體充滿(mǎn)導流管時(shí),誤差很小。根據《原油動(dòng)態(tài)計量一般原則》,流量計精度不得低于0.2%,自制變送器的精度滿(mǎn)足這個(gè)要求。
表3 流量測量結果
圖9 流量測量誤差
6 結論
本文進(jìn)行了以DSP為核心的科氏流量計變送器設計,實(shí)現了一種基于改進(jìn)的格型自適應濾波器和重疊短漢寧窗滑動(dòng)DTFT的信號處理方法,并進(jìn)行了實(shí)驗驗證。
實(shí)驗結果表明:上述方法的精度優(yōu)于DFT法,不受非整周期采樣的影響,算法易于實(shí)現;自制變送器相比某款國產(chǎn)流量計,精度有所提高,符合國家標準,可以實(shí)時(shí)準確地測量流體的瞬時(shí)質(zhì)量流量。