基于格型陷波濾波器的科里奧利質(zhì)量流量計(jì)信號(hào)處理方法
摘 要:采用比ⅡR型計(jì)算更為簡(jiǎn)單的自適應(yīng)格型陷波濾波器對(duì)科里奧利質(zhì)量流量計(jì)的流量傳感器的輸出信號(hào)進(jìn)行濾波并求得其頻率;并應(yīng)用自適應(yīng)譜線(xiàn)增強(qiáng)器從含有噪聲的信號(hào)中提取出流量管振動(dòng)的基頻信號(hào);然后采用滑動(dòng)Goertzel算法計(jì)算兩路信號(hào)之間的實(shí)時(shí)相位差,再根據(jù)頻率和相位差計(jì)算出時(shí)間差最終求得質(zhì)量流量。
關(guān)鍵字:計(jì)量學(xué) 科里奧利質(zhì)量流量計(jì) 自適應(yīng)格型陷波器 自適應(yīng)譜線(xiàn)增強(qiáng) 滑動(dòng)Goertzel算法
1 引言
科里奧利質(zhì)量流量計(jì)(以下簡(jiǎn)稱(chēng)為質(zhì)量流量計(jì))可以直接測(cè)量質(zhì)量流量,并可同時(shí)獲取流體密度值,應(yīng)用廣泛,有很好的發(fā)展前景。但是,目前的國(guó)內(nèi)外產(chǎn)品采用基于模擬和數(shù)字電路的信號(hào)處理方法存在很多局限。例如,對(duì)噪聲比較敏感、模擬濾波器會(huì)改變信號(hào)的幅值和相位、測(cè)量的是合成波的相位差等,使其在現(xiàn)場(chǎng)的測(cè)量精度低于實(shí)驗(yàn)室標(biāo)定的精度[1]。為了解決上述問(wèn)題,也為提升流量測(cè)量?jī)x表的性能,國(guó)內(nèi)外研究機(jī)構(gòu)和公司將數(shù)字信號(hào)處理方法和數(shù)字信號(hào)處理器(DSP)應(yīng)用于HKC質(zhì)量流量計(jì)的信號(hào)處理。文獻(xiàn)[2]采用基于DFT(離散傅里葉變換)的方法計(jì)算科氏質(zhì)量流量傳感器的頻率和相位差,提出了粗測(cè)、細(xì)測(cè)和頻率跟蹤的思路。文獻(xiàn)[3,4]采用DFT和基于DSP的信號(hào)處理系統(tǒng),并在細(xì)測(cè)和頻率跟蹤方面做了改進(jìn)。文獻(xiàn)[5,6]研究了基于信號(hào)幅值的計(jì)算相位差的方法來(lái)處理科氏質(zhì)量流量傳感器的信號(hào),并進(jìn)行補(bǔ)償。這些方法均存在一些不足之處。文獻(xiàn)[7,8]提出了基于陷波濾波器的信號(hào)處理方法,首先采用兩級(jí)多抽一濾波器,對(duì)HKC質(zhì)量流量計(jì)中的兩個(gè)磁電式傳感器的輸出信號(hào)進(jìn)行濾波,以減少隨機(jī)噪聲的影響;再采用自適應(yīng)陷波濾波方法,抑制確定性噪聲的干擾,提取流量管振動(dòng)基頻的信號(hào)并測(cè)得其頻率。然后,采用加漢寧窗的DFT或常規(guī)Goertzel算法進(jìn)行譜分析,得到振動(dòng)管基頻處的相位差和時(shí)間差,從而測(cè)得質(zhì)量流量。但是,這種方法存在一些問(wèn)題,如兩級(jí)多抽一濾波器的計(jì)算量比較大,所采用的直接型ⅡR自適應(yīng)陷波器計(jì)算復(fù)雜且對(duì)初始值的選取較為敏感,譜分析方法不能做到實(shí)時(shí)輸出相位差,只能每64個(gè)點(diǎn)(即一個(gè)漢寧窗的寬度)計(jì)算一次時(shí)間差。
本文研究了一種新的信號(hào)處理方法,該方法中沒(méi)有使用多抽一濾波器,從而節(jié)約了計(jì)算時(shí)間,并采用一種計(jì)算更為簡(jiǎn)單的自適應(yīng)格型陷波器[9,10]來(lái)對(duì)信號(hào)進(jìn)行陷波濾波。最后采用滑動(dòng)Goertzel算法[12]進(jìn)行實(shí)時(shí)譜分析,從而可以在每個(gè)采樣點(diǎn)都能測(cè)得兩路信號(hào)之間的相位差及時(shí)間差,實(shí)現(xiàn)在線(xiàn)計(jì)算。
2 自適應(yīng)格型陷波器
圖1所示的為一種級(jí)聯(lián)的全極點(diǎn)和全零點(diǎn)格型陷波器,其傳遞函數(shù)為
(1)
k0在經(jīng)過(guò)一段時(shí)間自適應(yīng)后應(yīng)該收斂到-cosω,ω是信號(hào)y(n)的歸一化頻率。α可決定著陷波的帶寬。
自適應(yīng)算法如下[10]:
其中
是k0(n)的估計(jì)值,
是
經(jīng)過(guò)平滑處理后的值,γ=0.5。y(n)-x(n)即為去除噪聲后的增強(qiáng)信號(hào)。
在將計(jì)算出的頻率用于相位差的計(jì)算之前我們先采用下面的方法對(duì)其進(jìn)行平滑處理,以減少陷波器計(jì)算相位差時(shí)所引入的隨機(jī)誤差。
3 相位差及時(shí)間差的計(jì)算
常規(guī)Goertzel算法的傳遞函數(shù)如下:
其頻率為等間隔分布,當(dāng)信號(hào)的頻率恰好對(duì)應(yīng)于某個(gè)k值時(shí),可以獲得精確的結(jié)果。而當(dāng)信號(hào)頻率落在頻率間隔內(nèi)時(shí),就會(huì)由于泄漏問(wèn)題而產(chǎn)生較大誤差。泄漏問(wèn)題對(duì)于計(jì)算相位的影響要遠(yuǎn)遠(yuǎn)大于對(duì)計(jì)算功率譜的影響[7]。
滑動(dòng)Goertzel算法[12]克服了常規(guī)Goertzel算法的這一缺點(diǎn),它用實(shí)際的信號(hào)頻率替換傳遞函數(shù)中的2πk/N,因此在信號(hào)頻率不變的情況下,經(jīng)過(guò)一定時(shí)間的收斂,可以精確地計(jì)算出信號(hào)的傅里葉系數(shù),并且可以在每個(gè)采樣點(diǎn)計(jì)算一次傅里葉系數(shù)。滑動(dòng)Goertzel算法如圖2所示。
設(shè)固定頻率信號(hào)Y(n)的傅里葉展開(kāi)為y(n)=asinnω+bcosnω,其z變換為
V(z-1)是中間變量v(n)的z變換,對(duì)其進(jìn)行z反變換[12],得
從式(15)~(18)可以看出在n值較大時(shí)Δ1和Δ2可以忽略。經(jīng)計(jì)算得到
則信號(hào)的相位為φ(n)=arctan[b(n)/a(n)] (21)
相位差的計(jì)算公式為
其中
和
為兩路信號(hào)的相位估計(jì)值。
由于滑動(dòng)Goertzel算法的相位差計(jì)算結(jié)果是振蕩收斂,所以,對(duì)于每一點(diǎn)的計(jì)算結(jié)果也采用了與頻率計(jì)算相同的平滑處理方法。時(shí)間差的計(jì)算公式為
其中為信號(hào)頻率的估計(jì)值,fs為采樣頻率。
4 仿真結(jié)果
仿真實(shí)踐中,使用的信號(hào)幅值為10V,隨機(jī)噪聲的幅值為1.0547V,服從正態(tài)分布且去均值,采樣點(diǎn)數(shù)為20000。仿真結(jié)果如表1所示,表中的數(shù)據(jù)為第6001~20000點(diǎn)Δt的計(jì)算相對(duì)誤差的均值,單位為% 。
表1 不同頻率和相位差下的計(jì)算誤差
|
相位差 |
頻率/Hz |
||
|
97.0 |
100.0 |
103.0 |
|
|
0.0001 |
0.017357 |
0.034520 |
0.031693 |
|
0.0010 |
0.017356 |
0.034521 |
0.013702 |
|
0.0030 |
0.017356 |
0.034521 |
0.013701 |
|
0.0050 |
0.017356 |
0.034521 |
0.013701 |
|
0.0100 |
0.017357 |
0.034520 |
0.013701 |
|
0.0500 |
0.017362 |
0.034516 |
0.013701 |
|
0.1000 |
0.017368 |
0.034511 |
0.013702 |
|
0.5000 |
0.017418 |
0.034472 |
0.013706 |
|
1.0000 |
0.017479 |
0.034423 |
0.013711 |
|
1.5000 |
0.017540 |
0.034373 |
0.013717 |
|
2.0000 |
0.017601 |
0.034323 |
0.013724 |
|
4.0000 |
0.017845 |
0.034122 |
0.013760 |
圖3給出了頻率為103Hz、相位差為0.1時(shí)相位差和時(shí)間差的相對(duì)計(jì)算誤差變化趨勢(shì)。
值得注意的是將本文所研究的方法應(yīng)用于實(shí)際的系統(tǒng)時(shí)要注意到DSP有限精度的影響。從式(15)和式(16)中可以看出隨著采樣點(diǎn)n的增大而增大。當(dāng)v增大到一定程度時(shí)會(huì)超出DSP所能表示的數(shù)的范圍,造成溢出,這一點(diǎn)在16位定點(diǎn)DSP上尤其明顯。對(duì)于這種情況的解決辦法是一旦檢測(cè)到v溢出,就將滑動(dòng)Goertzel算法的所有變量清零,重新開(kāi)始計(jì)算。這種方法相當(dāng)于用一個(gè)矩形窗對(duì)數(shù)據(jù)進(jìn)行截取,而這個(gè)窗的寬度是不固定的,取決于DSP的位數(shù),所以,本文方法比較適合于以32位浮點(diǎn)DSP為處理核心的系統(tǒng)。
5 結(jié)束語(yǔ)
格型陷波器比原先的直接型ⅡR陷波器計(jì)算更為簡(jiǎn)單并且初始值易于選擇。滑動(dòng)Goertzel算法實(shí)現(xiàn)了實(shí)時(shí)譜分析和兩信號(hào)之間相位差的計(jì)算。仿真結(jié)果表明,本文的方法計(jì)算精度較高,取得了令人滿(mǎn)意的效果。
- 上一篇:基于力控與PLC的流量計(jì)自動(dòng)標(biāo)定系統(tǒng) 2016/3/22
- 下一篇:一種改進(jìn)的科里奧利質(zhì)量流量計(jì)信號(hào)處理方法 2016/3/21
