文常保,戚一娉,宿建斌,巨永鋒
(長安大學(xué) 電子與控制工程學(xué)院 微納電子研究所,西安710064)
稱重系統(tǒng)作為測量物體質(zhì)量的重要工具,被廣泛應(yīng)用于各個(gè)行業(yè),其中制藥、配料和貴金屬等行業(yè)對稱重系統(tǒng)的精度有較高要求[1-2]。
在稱重過程中,信號(hào)不可避免會(huì)受到干擾,勢必影響測量精度,干擾主要有內(nèi)部干擾和外部干擾,外部干擾指外界的干擾波和環(huán)境因素如電磁干擾、靜電干擾[3-5];內(nèi)部干擾,存在于傳感器采集信號(hào)和信號(hào)數(shù)模轉(zhuǎn)換的過程中,以脈沖干擾的方式對信號(hào)造成誤差[6],還存在于所有電子器件和傳輸介質(zhì)中,以電子熱振動(dòng)導(dǎo)致的溫度變化所引起的熱噪聲[7-8],熱噪聲在工作頻率范圍內(nèi)的頻譜均勻分布,且由內(nèi)部大量自由電子運(yùn)動(dòng)產(chǎn)生,因此屬于高斯白噪聲,由此,針對內(nèi)部干擾,提高稱重信號(hào)的精度具有重要意義。
在內(nèi)部干擾問題上,從軟件算法上進(jìn)行改進(jìn),不僅簡化電路,還可以降低硬件的二次干擾和成本,在單一的濾波算法中,對比小波變換、神經(jīng)網(wǎng)絡(luò)和模糊理論等算法,卡爾曼濾波在濾除高斯白噪聲方面更具有針對性[9-10]。故在此提出基于新型卡爾曼濾波算法的稱重系統(tǒng)實(shí)現(xiàn)方案,在處理不穩(wěn)定或者噪聲大的被測信號(hào)時(shí),改善濾波結(jié)果穩(wěn)定性差而且檢測精度低的情況,還可以預(yù)測、校正信號(hào)中的誤差,從而提高稱重信號(hào)的精度[11]。
基于新型卡爾曼濾波算法的稱重系統(tǒng)由稱重傳感器、A/D轉(zhuǎn)換模塊、微處理器、存儲(chǔ)模塊、顯示模塊以及紅外模塊等外圍電路組成,稱重系統(tǒng)結(jié)構(gòu)及算法流程如圖1所示。
圖1 稱重系統(tǒng)結(jié)構(gòu)及算法流程Fig.1 Weighing system structure and algorithm flow chart
對待測物進(jìn)行測量時(shí),稱重傳感器會(huì)將物體的質(zhì)量轉(zhuǎn)換成電信號(hào),在轉(zhuǎn)換過程中很可能會(huì)因脈沖形式的電磁干擾引起誤差,由于傳感器輸出信號(hào)在mA級(jí)別,所以需要放大模塊將電信號(hào)放大到A/D轉(zhuǎn)換模塊的量程范圍內(nèi),在這過程中放大模塊也會(huì)將在稱重過程中信號(hào)攜帶的脈沖干擾進(jìn)行放大,另外,在A/D轉(zhuǎn)換模塊將帶有干擾的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)過程中,會(huì)因?yàn)闇囟葘?dǎo)致熱噪聲影響其分辨率,進(jìn)而影響稱重系統(tǒng)的精確度,因此,需要對采集信號(hào)進(jìn)行軟件濾波,去除干擾和噪聲對系統(tǒng)的影響進(jìn)而提高稱重前端測量信號(hào)的精度。
對于信號(hào)中的高斯白噪聲干擾,可以采用卡爾曼濾波算法通過動(dòng)態(tài)調(diào)整權(quán)值進(jìn)行濾除,使測量結(jié)果無限收斂于真值,但是,傳統(tǒng)卡爾曼濾波算法在處理非周期性較大噪聲信號(hào)時(shí)會(huì)不可避免的引入線性誤差,甚至?xí)?dǎo)致測量結(jié)果較大波動(dòng)和偏離。
在圖1所示基于新型卡爾曼濾波算法的稱重系統(tǒng)中,采用閾值濾波方式濾除因偶然因素引起的脈沖干擾,將讀取的采樣新值D1與系統(tǒng)所允許的最大偏差值進(jìn)行比較,未超出最大偏差值的會(huì)被作為有效采樣值,超出則被舍棄使用,并且重新取值,最大偏差值的大小設(shè)置標(biāo)準(zhǔn)一般根據(jù)系統(tǒng)控制信號(hào)的要求范圍所選取,如果設(shè)最大偏差值為A0,則經(jīng)過閾值算法的第1次輸出值Y0(1)為
式中:D1為第1次的采樣值。
循環(huán)采樣取值時(shí),使用更新的采樣值與對比值之差來與系統(tǒng)所允許的最大偏差值進(jìn)行對比,選取經(jīng)過防脈沖干擾濾波器得到的平均值Dc作為對比值,若新采樣值與對比值的絕對值之差≤A0,則本次采樣值Dn有效;若兩者之差>A0,則認(rèn)為發(fā)生了較大的隨機(jī)干擾,本次采樣值Dn無效,并選擇用對比值Dc來代替本次采樣值,因此,可以得到經(jīng)過閾值算法處理后的第n次(n≠1)輸出值Y0(n)為
式中:Dn為第n次的采樣值;Dc為經(jīng)過防脈沖干擾濾波器的平均值來更新閾值濾波中的對比值。
由于單獨(dú)使用閾值濾波算法,在濾除周期性干擾上效果較差,并且存在信號(hào)平滑度差等問題,因此可以采用防脈沖干擾濾波消除周期性干擾引起的采樣值偏差。
將經(jīng)過閾值濾波處理后的數(shù)據(jù)送入防脈沖干擾濾波器,將會(huì)得到一組新的隊(duì)列,在該組隊(duì)列長度選取上,為保證平均值的可靠性和系統(tǒng)的運(yùn)行速度,將其設(shè)置為以12個(gè)采樣值為一隊(duì)列,對新的隊(duì)列進(jìn)行連續(xù)采樣,將新的采樣值放在隊(duì)尾,與此同時(shí)將隊(duì)首的一個(gè)采樣值剔除,以保持隊(duì)列的長度不變,接著剔除隊(duì)列中的最大值和最小值,最終隊(duì)列長度為10個(gè)采樣值,對其進(jìn)行算數(shù)平均運(yùn)算,將運(yùn)算結(jié)果送入下一階濾波器中進(jìn)行濾波,且不斷更新閾值濾波器中的對比值Dc,以使閾值濾波器能獲得更好的濾波效果,經(jīng)過防脈沖干擾濾波算法的第n次輸出Y1(n)為
式中:Y0(n-i)為經(jīng)過閾值濾波后的第n-i次采樣值;M(Y0),m(Y0)分別為12個(gè)采樣值隊(duì)列中的最大值、最小值。
經(jīng)過防脈沖干擾濾波算法后得到平均值,用其更新閾值濾波器中的對比值為
為確保更好地消除噪聲,需要構(gòu)造符合稱重系統(tǒng)的狀態(tài)模型,將上一階濾波器濾波后的數(shù)據(jù)作為下一階濾波器的初始數(shù)據(jù)值,得到作為估計(jì)狀態(tài)的輸入信號(hào)值為
在稱重狀態(tài)變化過程中,會(huì)使噪聲產(chǎn)生波動(dòng)情況,此時(shí)用線性隨機(jī)微分方程描述信號(hào)值,當(dāng)信號(hào)經(jīng)過防脈沖干擾濾波算法后,信號(hào)值在n時(shí)刻的值是n-1時(shí)刻的值加上控制信號(hào)和過程噪聲的線性組合,經(jīng)過濾波后的信號(hào)值可用線性隨機(jī)微分方程描述為
式中:Y2(n-1)分別為預(yù)估計(jì)n-1時(shí)刻狀態(tài)變量的值;U(n)為對系統(tǒng)的控制信號(hào),因系統(tǒng)中沒有控制信號(hào)影響,故可將其略去;W(n)為符合高斯分布的過程激勵(lì)噪聲;A和B為系統(tǒng)參數(shù)矩陣。
在經(jīng)過濾波后的信號(hào)值轉(zhuǎn)變?yōu)闇y量值的過程中,存在傳感器測量到符合高斯分布的噪聲,即測量噪聲,測量值用線性隨機(jī)微分方程描述為
當(dāng)構(gòu)造完模型后,開始進(jìn)行迭代估算,其具體過程可以分為時(shí)間更新和測量更新2部分,時(shí)間更新部分得出的值為先驗(yàn)值,測量更新部分得到的值為后驗(yàn)值。
在時(shí)間更新部分,對n時(shí)刻的先驗(yàn)狀態(tài)估計(jì)值Y2()粗略估計(jì)為
式中:P(n-1)為n-1時(shí)刻后驗(yàn)估計(jì)誤差協(xié)方差;Q為過程噪聲W(n)的協(xié)方差。
進(jìn)入測量更新部分后,先根據(jù)預(yù)測的誤差協(xié)方差P(n)和測量噪聲信號(hào)V(n)的協(xié)方差R 來計(jì)算得到增益,即
用得到的增益K(n)來計(jì)算狀態(tài)n時(shí)刻的后驗(yàn)狀態(tài)估計(jì)值為
有機(jī)質(zhì)熱解生烴膨脹力和流體擴(kuò)散力與源巖生烴率成正比,即生烴速率越大,產(chǎn)物增加的體積越大,形成的膨脹力和流體擴(kuò)散力也越大[9-10]。隨埋深增加,累積生烴量增加,源巖生烴速率逐漸增加,達(dá)到生油窗時(shí)生烴速率達(dá)到最大值,隨后生烴速率逐漸降低(圖6(b));毛細(xì)管壓力差呈現(xiàn)出先增加后降低的趨勢,產(chǎn)物增容膨脹力和流體擴(kuò)散力也呈現(xiàn)先增加,到一定程度又減小的趨勢(圖6(c))。
式中:Z(n)為n時(shí)刻的測量值。
然后,不斷地迭代更新誤差協(xié)方差P(n),即對P(n)值不斷地修正:
最后,將經(jīng)過新型卡爾曼濾波算法輸出的2個(gè)相鄰的數(shù)值做差,當(dāng)差值≤系統(tǒng)設(shè)定值時(shí),就認(rèn)為數(shù)值穩(wěn)定,可以輸出顯示與儲(chǔ)存;如果差值>系統(tǒng)設(shè)定值,則繼續(xù)循環(huán)取值濾波,同時(shí),可以通過紅外遙控對稱重系統(tǒng)參數(shù)進(jìn)行設(shè)定或自主校準(zhǔn)。
為了實(shí)現(xiàn)稱重系統(tǒng)的質(zhì)量采集功能,采用中航電測L6D 稱重傳感器作為稱重前端。它是一個(gè)能夠采集質(zhì)量的高精度電阻應(yīng)變式傳感器,其量程為2.5~50 kg,精度為C3。
稱重傳感器輸出的電信號(hào)通常比較微弱,需要將其放大再進(jìn)行模數(shù)轉(zhuǎn)換,由于A/D轉(zhuǎn)換模塊的位數(shù)越高,即對輸入信號(hào)的分辨能力就越高,采用高位數(shù)模轉(zhuǎn)換器在數(shù)據(jù)輸出的精度上也更加可靠,所以,模數(shù)轉(zhuǎn)換模塊選用了24位的高度集成模數(shù)轉(zhuǎn)換器ADS1232,其內(nèi)部有高精度模數(shù)轉(zhuǎn)換器ADC和儀表放大器PGA,不僅結(jié)合了模數(shù)轉(zhuǎn)換和放大信號(hào)功能,而且減少了元器件的使用。
為了提升稱重系統(tǒng)的實(shí)用功能,選用擁有大量I/O接口的STC12C5A60S2單片機(jī)作為稱重系統(tǒng)的核心微處理,在稱重系統(tǒng)中,需要對稱重?cái)?shù)據(jù)和設(shè)置操作的過程進(jìn)行顯示,LCD19264 全點(diǎn)陣液晶顯示模塊可以同時(shí)顯示多位字符,且通過設(shè)置可以開啟背光功能,為了保存稱重?cái)?shù)據(jù)和對稱重系統(tǒng)發(fā)送的指令信息,設(shè)計(jì)稱重系統(tǒng)儲(chǔ)存電路,不僅要求儲(chǔ)存和取值的速度快,而且容量大小需要滿足系統(tǒng)存儲(chǔ)需要,采用含有256個(gè)8位字節(jié)的24C256 作為稱重系統(tǒng)的存儲(chǔ)模塊,適用于稱重系統(tǒng)儲(chǔ)存電路。紅外線模塊采用了一體化紅外接收器HS38B和遠(yuǎn)程操控的遙控組成,可以對器件進(jìn)行遠(yuǎn)程操控,設(shè)計(jì)的稱重系統(tǒng)硬件如圖2所示。
圖2 稱重系統(tǒng)硬件實(shí)物Fig.2 Weighing system hardware object
對稱重系統(tǒng)濾波算法中的參數(shù)進(jìn)行設(shè)置,狀態(tài)轉(zhuǎn)移參數(shù)A是用于將相鄰2個(gè)時(shí)刻狀態(tài)相聯(lián)系的橋梁,在系統(tǒng)中認(rèn)為相鄰2個(gè)時(shí)刻的質(zhì)量并無改變,故將狀態(tài)轉(zhuǎn)移參數(shù)A 設(shè)為常數(shù)1。由于構(gòu)建符合稱重系統(tǒng)的狀態(tài)模型并無控制信號(hào)的參與,故將控制輸入的增益B 設(shè)為0,根據(jù)狀態(tài)變量和測量變量二者之間的比率,可以判定其增益H=1。
當(dāng)參數(shù)確定后,需要對估計(jì)狀態(tài)的輸入信號(hào)值Y2(n)和誤差協(xié)方差P(n)賦予初值。在設(shè)定初值時(shí),若P(0)=0,表明此時(shí)環(huán)境中是無噪聲的,不需要在進(jìn)行濾波。由于卡爾曼濾波在每次迭代時(shí)均會(huì)產(chǎn)生新值,可以很快地修正不合理的數(shù)值,故將Y2(0),P(0)的初值分別設(shè)定為1,10。
在濾波算法中,參數(shù)Q 負(fù)責(zé)控制濾波后的曲線平滑程度,參數(shù)R控制濾波后的曲線與真值曲線的相近程度。協(xié)方差Q和R的值由被觀測的系統(tǒng)本身和測量過程中的噪聲所決定,只能通過仿真試驗(yàn)觀察其取值是否可以收斂到真值來確定,通過多次試驗(yàn)對比可知,當(dāng)取Q=1×10-7,R=0.05時(shí),系統(tǒng)的收斂程度是最優(yōu)的。
采用多組測量質(zhì)量來測試系統(tǒng)的線性度和靈敏度,在此分別使用10,15,20,25,30,35,40,45,50 kg 標(biāo)準(zhǔn)砝碼,每個(gè)測量值均取5次測量后的平均值作為最后結(jié)果,在測量質(zhì)量時(shí),記錄相應(yīng)的A/D轉(zhuǎn)換模塊的輸出電壓,最終得到檢測系統(tǒng)的輸出電壓與稱重質(zhì)量之間的關(guān)系,如圖3所示。
圖3 質(zhì)量與輸出電壓之間的關(guān)系Fig.3 Relationship between mass and output voltage
由圖可見,當(dāng)稱重質(zhì)量增加時(shí),檢測系統(tǒng)的輸出電壓也隨之升高,并且檢測系統(tǒng)的輸出電壓和質(zhì)量可以保持較為理想的線性關(guān)系,有利于提高檢測系統(tǒng)的測量精度,另外,可以計(jì)算出,在測量范圍內(nèi)系統(tǒng)的靈敏度約為0.15 mV/kg。
測量質(zhì)量為30 kg時(shí),在相同的條件下,快速測取20次經(jīng)過新型卡爾曼濾波后的結(jié)果值和未經(jīng)濾波的結(jié)果值,濾波前后的對比如圖4所示。
圖4 濾波前后的測量結(jié)果Fig.4 Result graph before and after filtering
由圖可見,未經(jīng)濾波的結(jié)果與真實(shí)值30 kg對比,最大差值為1.86 kg,其中最大誤差為6.2%,未經(jīng)濾波的結(jié)果與真實(shí)值之間存在較大的浮動(dòng)誤差,而經(jīng)過新型卡爾曼算法濾波后,最大差值為0.09 kg,最大誤差僅為0.3%,經(jīng)對比可知,新型卡爾曼濾波算法將系統(tǒng)精度提高到20倍,而且在使用了新型卡爾曼濾波算法后,數(shù)據(jù)曲線更加收斂于真實(shí)數(shù)據(jù),平穩(wěn)性也較高。
采用10 組不同質(zhì)量的標(biāo)準(zhǔn)砝碼,得到的測量數(shù)據(jù)和誤差見表1,表中,C1為標(biāo)準(zhǔn)砝碼的質(zhì)量值;C2為經(jīng)過卡爾曼濾波后的采樣值;C3為經(jīng)過改進(jìn)的卡爾曼濾波的采樣值;E1為經(jīng)過卡爾曼濾波后與真實(shí)值的誤差;E2為經(jīng)過改進(jìn)型的卡爾曼濾波與真實(shí)值的誤差。
表1 濾波前后的測量數(shù)據(jù)及稱重誤差Tab.1 Measurement data before and after filtering and weighing error
由表可知,使用傳統(tǒng)卡爾曼濾波算法對數(shù)據(jù)信號(hào)處理后,誤差最大為1.8%;經(jīng)過新型卡爾曼濾波處理后,誤差均在0.4%以下,對比二者濾波處理后的數(shù)據(jù)誤差可知,新型卡爾曼濾波算法將系統(tǒng)精度提高到4.5倍,可見新型卡爾曼濾波比傳統(tǒng)的卡爾曼濾波的效果更好。
所設(shè)計(jì)的基于新型卡爾曼濾波算法的稱重系統(tǒng),采用多種濾波方式結(jié)合的方式對采集信號(hào)進(jìn)行處理,融合了各個(gè)濾波算法的優(yōu)點(diǎn),同時(shí)也相互彌補(bǔ)了對方濾波算法的缺點(diǎn),試驗(yàn)結(jié)果表明,新型卡爾曼濾波算法不僅克服周期和非周期的脈沖干擾,而且減小了由于脈沖干擾所引起的采樣值偏差,抑制了采集信號(hào)高斯白噪聲,有效地提升了稱重系統(tǒng)的精度。