[導(dǎo)讀] 渦街流量計(jì)輸出的頻率信號(hào)能夠在較寬流量范圍內(nèi)保持良好的重復(fù)性,但其儀表系數(shù)只能在較窄的范圍內(nèi)保持恒定,從而制約了其測(cè)量范圍。本文提出一種基于CPLD的儀表系數(shù)非線(xiàn)性修正方法,即采用三次樣條插值法對(duì)流量-儀表系數(shù)曲線(xiàn)進(jìn)行逼近,通過(guò)優(yōu)化CPLD查找表實(shí)現(xiàn)了對(duì)儀表系數(shù)的非線(xiàn)性修正。實(shí)驗(yàn)表明,該方法在保證精度的前提下可以有效地?cái)U(kuò)展量程。對(duì)于存在儀表系數(shù)非線(xiàn)性問(wèn)題的其他流量?jī)x表也同樣適用,易于推廣。
1 引言
渦街、渦輪等頻率信號(hào)輸出的流量傳感器在較寬流量范圍內(nèi)都能獲得具有良好重復(fù)性的輸出信號(hào)。理想情況下其輸出信號(hào)與瞬時(shí)流量成正比,而實(shí)際上其儀表系數(shù)只在相對(duì)較小的范圍內(nèi)能夠基本保持恒定[1]。傳統(tǒng)的方法是將平均儀表系數(shù)作為傳感器儀表系數(shù)的唯一值來(lái)使用,這樣導(dǎo)致流量計(jì)在保證測(cè)量精度前提下的測(cè)量范圍較窄?;诖?,文章針對(duì)存在這一問(wèn)題的渦街流量計(jì)進(jìn)行研究,以實(shí)現(xiàn)保證精度擴(kuò)展測(cè)量范圍的目的。
渦街流量計(jì)在正常流量范圍內(nèi),其儀表系數(shù)基本為一常數(shù),但在測(cè)量小流量時(shí)卻表現(xiàn)出明顯的非線(xiàn)性,制約了渦街流量計(jì)測(cè)量范圍和測(cè)量精度。普通模擬渦街流量計(jì)確保儀表系數(shù)線(xiàn)性度在1%以?xún)?nèi)時(shí)的量程比只能達(dá)到10:1,遠(yuǎn)低于理論量程100:1[2]。隨著工業(yè)技術(shù)的發(fā)展和進(jìn)步,對(duì)于寬量程高精度渦街流量計(jì)的需求日漸迫切,各種儀表系數(shù)非線(xiàn)性修正方法和應(yīng)用相繼出現(xiàn)。
最早出現(xiàn)的是采用硬件電路進(jìn)行修正[3]。在傳感器前置放大電路中增加一些硬件電路,人為摻加(或減少)一個(gè)固定頻率信號(hào),從而使傳感器實(shí)際輸出信號(hào)頻率得到修正,改善其儀表系數(shù)的非線(xiàn)性程度。此方法的缺點(diǎn)是只適用于單調(diào)上升(或下降)的曲線(xiàn)形狀,而且硬件補(bǔ)償靈活性差、補(bǔ)償精度不高。但由于是硬件電路設(shè)計(jì),保證了良好的穩(wěn)定性和可靠性。隨著電子技術(shù)特別是單片機(jī)技術(shù)的迅猛發(fā)展,這一問(wèn)題得到了更好的解決。根據(jù)實(shí)際標(biāo)定的結(jié)果可以回歸出儀表系數(shù)與頻率的函數(shù)表達(dá)式,將表達(dá)式存入單片機(jī)系統(tǒng)的程序存儲(chǔ)器中。測(cè)量時(shí)測(cè)出傳感器信號(hào)頻率,根據(jù)函數(shù)表達(dá)式計(jì)算出此時(shí)的儀表系數(shù)來(lái)進(jìn)行計(jì)算,從而達(dá)到對(duì)儀表系數(shù)非線(xiàn)性的修正[4]。這種方法操作簡(jiǎn)單,而且通用性好,補(bǔ)償精度更高、更靈活。但由于該方法是靠軟件補(bǔ)償來(lái)實(shí)現(xiàn),編程時(shí)出現(xiàn)的微小紕漏與應(yīng)用現(xiàn)場(chǎng)復(fù)雜情況造成的不確定性,都易造成程序“跑飛”或者死機(jī)的現(xiàn)象,造成使用上的不穩(wěn)定。近年來(lái),隨著FPGA(FieldProgrammableGateArray)與CPLD(ComplexProgrammableLogicDevice)技術(shù)的飛速發(fā)展及其廣泛應(yīng)用,因其具有高度的穩(wěn)定性和可靠性,設(shè)計(jì)簡(jiǎn)單靈活等優(yōu)點(diǎn)[5],本文提出了基于CPLD硬件結(jié)構(gòu)實(shí)現(xiàn)渦街流量計(jì)儀表系數(shù)非線(xiàn)性修正的方法,該方法綜合了上述兩種方法的優(yōu)點(diǎn),具有良好的實(shí)用價(jià)值。①
2 修正算法比較
實(shí)現(xiàn)非線(xiàn)性修正的前提是需要得到渦街流量計(jì)流量Q與儀表系數(shù)K的關(guān)系曲線(xiàn),再將超出線(xiàn)性度范圍的儀表系數(shù)修正到合理的范圍內(nèi)。文章對(duì)三種常用的曲線(xiàn)逼近方法:線(xiàn)性插值法、三次樣條插值法和最小二乘法進(jìn)行了比較,具體方法介紹見(jiàn)文獻(xiàn)[6]。
對(duì)于渦街流量計(jì)來(lái)說(shuō),由于在小流量時(shí)普遍存在著K-Q之間的非線(xiàn)性,即使在線(xiàn)性度范圍內(nèi),K也很難保證為常數(shù),這給用數(shù)學(xué)公式描述兩者的之間關(guān)系帶來(lái)很大困難,插值(或曲線(xiàn)擬和)方法能很好地解決這一問(wèn)題。根據(jù)速度式流量計(jì)檢定規(guī)程[7],可以將檢定點(diǎn)作為插值函數(shù)的結(jié)點(diǎn)(或曲線(xiàn)擬和的觀測(cè)點(diǎn)),即各檢定流量點(diǎn)Qi(i=0,1,…,n),各結(jié)點(diǎn)(或觀測(cè)點(diǎn))對(duì)應(yīng)的函數(shù)值為Ki(i=0,1,…,n),即各流量點(diǎn)對(duì)應(yīng)的儀表系數(shù)。根據(jù)這些列表函數(shù),可以利用插值多項(xiàng)式(或擬和多項(xiàng)式)對(duì)其他流量點(diǎn)的儀表系數(shù)進(jìn)行逼近。
為了比較三種方法對(duì)渦街流量計(jì)K-Q關(guān)系描述的準(zhǔn)確性,在標(biāo)準(zhǔn)水流量裝置上對(duì)DN25渦街流量計(jì)進(jìn)行實(shí)驗(yàn),其流量測(cè)量范圍為1~11m3/h,受裝置條件的限制,最大流量只能做到9.3m3/h。實(shí)驗(yàn)中發(fā)現(xiàn),當(dāng)流量小于1m3/h時(shí),雖然儀表的線(xiàn)性度已超出1%,但其重復(fù)性依然很好,這給儀表系數(shù)的非線(xiàn)性修正奠定了良好基礎(chǔ),而修正的前提是要得到K-Q關(guān)系曲線(xiàn)。因此,對(duì)表1中流量點(diǎn)進(jìn)行了實(shí)驗(yàn)。
其中,渦街流量計(jì)平均儀表系數(shù)K:
(1)
式中:(Ki)max——各檢定流量點(diǎn)Qi的儀表系數(shù)Ki中最大值;(Ki)min——各檢定流量點(diǎn)Qi的儀表系數(shù)Ki中最小值。
線(xiàn)性度EL:
(2)
重復(fù)性Er:各檢定點(diǎn)重復(fù)性的最大值:
(3)
各檢定點(diǎn)重復(fù)性(Er)i:
(4)
式中:Ki——每個(gè)檢定點(diǎn)平均儀表系數(shù);Kij——第i檢定點(diǎn)第j次檢定的儀表系數(shù)。
選擇流量點(diǎn)0.509、0.997、1.649、2.737、4.41、7.742和9.26m3/h作為插值函數(shù)的結(jié)點(diǎn)進(jìn)行分段插值,采用線(xiàn)性插值法和三次樣條插值法,同時(shí)作為最小二乘法的觀測(cè)點(diǎn)進(jìn)行曲線(xiàn)擬和,對(duì)剩余流量點(diǎn)0.601、0.696、0.801和0.898m3/h的儀表系數(shù)進(jìn)行逼近,最后與實(shí)驗(yàn)結(jié)果進(jìn)行比較得到表2與圖1~圖3。
圖1 線(xiàn)性插值法
圖2 三次樣條插值法
圖3最小二乘法,階數(shù)為5
通過(guò)比較,利用三次樣條插值法得到的逼近點(diǎn)誤差相對(duì)較小,且能夠很好反映曲線(xiàn)變化趨勢(shì)。所以在利用CPLD進(jìn)行儀表系數(shù)非線(xiàn)性修正 時(shí),選擇用三次樣條插值法對(duì)各流量點(diǎn)的儀表系數(shù)進(jìn)行逼近。
3 CPLD程序設(shè)計(jì)
以上討論的修正算法都要通過(guò)CPLD程序語(yǔ)言來(lái)實(shí)現(xiàn),選擇了美國(guó)ALTERA公司最新推出的MAXII系列器件,這是迄今為止成本最低、功耗最小、密度最高的CPLD器件[8]。考慮到功耗和邏輯資源數(shù)兩方面的影響,最終選取EPM570GT100這款芯片。
3.1 軟件總體設(shè)計(jì)
由于CPLD的程序設(shè)計(jì)可以同時(shí)進(jìn)行多個(gè)進(jìn)程,因此將程序分為四個(gè)模塊,即四個(gè)進(jìn)程,提高了程序運(yùn)行速度。
(1)時(shí)鐘模塊。
各模塊的運(yùn)行都要有一個(gè)時(shí)鐘基準(zhǔn),此模塊提供了時(shí)鐘頻率c??紤]到時(shí)鐘頻率的大小會(huì)影響到功耗,這里選擇用一個(gè)1MHz的無(wú)源晶振經(jīng)32分頻后得到的c=31250Hz作為整個(gè)電路的時(shí)鐘基準(zhǔn)。
(2)頻率采集模塊。
由于渦街信號(hào)是一個(gè)脈沖信號(hào),因此利用脈沖捕獲方法進(jìn)行計(jì)頻。如圖4所示,渦街信號(hào)相鄰脈沖上升沿的時(shí)間間隔通過(guò)高頻時(shí)鐘c來(lái)進(jìn)行計(jì)數(shù)。計(jì)數(shù)值N、渦街頻率f和時(shí)鐘c存在如下關(guān)系:
(5)
圖4 脈沖捕獲方法計(jì)頻示意圖
這樣,通過(guò)對(duì)每個(gè)脈沖間隔進(jìn)行計(jì)數(shù),就間接獲得了渦街頻率。
(3)頻率修正(查找表)模塊。
對(duì)儀表系數(shù)進(jìn)行修正實(shí)際上是對(duì)渦街頻率進(jìn)行修正。由式(5),對(duì)頻率的修正可以轉(zhuǎn)化為對(duì)計(jì)數(shù)值N的修正,即CPLD頻率采集模塊得到N值,經(jīng)上位機(jī)生成查找表后,直接輸出對(duì)應(yīng)的修正值N'((如圖5所示),查找表反映了N-N'的對(duì)應(yīng)關(guān)系。此部分為整個(gè)程序設(shè)計(jì)的重點(diǎn),將在3.2部分進(jìn)行詳細(xì)說(shuō)明。
(4)脈沖(或PWM波)輸出模塊。
將修正后的計(jì)數(shù)值N',根據(jù)式(5),對(duì)高頻時(shí)鐘c進(jìn)行N'分頻,最終將修正后的渦街頻率以方波(或PWM波)形式輸出。
各模塊之間關(guān)系如圖5所示。
圖5 模塊關(guān)系圖
3.2 基于查找表修正方法的設(shè)計(jì)
查找表法常用于FPGA的設(shè)計(jì)中。在FPGA設(shè)計(jì)中常常要實(shí)現(xiàn)一些復(fù)雜運(yùn)算(如乘法、除法、三角函數(shù)等),而這些運(yùn)算會(huì)占用大量的邏輯單元,且速度難以滿(mǎn)足信號(hào)實(shí)時(shí)處理的要求,查找表法是解決這一問(wèn)題的最簡(jiǎn)單、有效的方法。其基本原理[9]為:將函數(shù)所有輸入變量的運(yùn)算結(jié)果寫(xiě)入FPGA的存儲(chǔ)單元中,同時(shí)以這些輸入變量作為該存儲(chǔ)單元的地址。當(dāng)運(yùn)算時(shí),通過(guò)讀取存儲(chǔ)單元地址的方式獲取計(jì)算結(jié)果,這樣一來(lái),不僅大幅減少了運(yùn)算所需邏輯單元,又滿(mǎn)足了實(shí)時(shí)運(yùn)算的要求。
非線(xiàn)性修正方法的本質(zhì)其實(shí)是對(duì)渦街頻率的修正,也可以轉(zhuǎn)化為對(duì)渦街信號(hào)周期長(zhǎng)度計(jì)數(shù)值N的修正,即對(duì)于每個(gè)輸入的周期長(zhǎng)度計(jì)數(shù)值N(反映的是渦街頻率的真實(shí)大小),總有一個(gè)修正后的周期長(zhǎng)度計(jì)數(shù)值輸出N'(反映的是修正后的渦街頻率)與之對(duì)應(yīng),可見(jiàn)這種方法尤其適宜采用查找表方法來(lái)實(shí)現(xiàn)。
受CPLD資源數(shù)以及功耗的限制,要求在滿(mǎn)足渦街流量計(jì)線(xiàn)性度的前提下,盡可能地利用較少的CPLD資源對(duì)儀表系數(shù)進(jìn)行修正,使渦街流量計(jì)的量程可以擴(kuò)展。而程序中查找表占據(jù)了CPLD的大部分資源,因此對(duì)其進(jìn)行優(yōu)化是十分必要的。
為了說(shuō)明修正思想及如何優(yōu)化查找表,仍以表1實(shí)驗(yàn)數(shù)據(jù)進(jìn)行說(shuō)明,采用三次樣條插值法進(jìn)行儀表系數(shù)曲線(xiàn)逼近。如圖6所示,在正常流量范圍內(nèi)1~9.3m3/h(頻率20.41~185.87Hz),線(xiàn)性度在1%以?xún)?nèi),在此范圍的流量點(diǎn)不需要儀表系數(shù)修正。流量在0.5~1m3/h(頻率10.86~20.41Hz)時(shí),可以保證良好的重復(fù)性,因此可以通過(guò)修正將儀表系數(shù)降到正常流量范圍所在的儀表系數(shù)區(qū)間Kmin~Kmax。如式(6),其中K為正常流量范圍1~9.3m3/h得到的平均儀表系數(shù),EL為所要求的線(xiàn)性度誤差即儀表的精度等級(jí),對(duì)于液體渦街流量計(jì)EL=0.01,氣體渦街流量計(jì)EL=0.015。
(6)
為保證各修正點(diǎn)的儀表系數(shù)Ki落在Kmin~Kmax區(qū)間,其計(jì)數(shù)值NI必須落在Nimin~Nimax,根據(jù)式(5)可得:
即每一個(gè)Ni都對(duì)應(yīng)一個(gè)修正空間Nimin~Nimax,只要修正后的Ni'落在此區(qū)域內(nèi)就可以實(shí)現(xiàn)儀表系數(shù)的修正。由于Kmin~Kmax是基于線(xiàn)性度誤差的一個(gè)較寬范圍,由式(7)和式(8)可以推測(cè),Nimin~Nimax也應(yīng)是一個(gè)較寬的范圍,因此相鄰幾個(gè)修正點(diǎn)的Ni所對(duì)應(yīng)的Ni'的允許范圍一定存在重疊部分,可以將這幾個(gè)修正點(diǎn)的查找表合并成一個(gè),輸出同一個(gè)修正值N'。這樣既節(jié)約了查找表資源,也降低了功耗。
圖6 儀表系數(shù)修正圖,EL=0.01
基于以上思想,首先利用Matlab在上位機(jī)編寫(xiě)查找表生成程序,再將生成的查找表拷貝到CPLD程序中,最終完成整個(gè)CPLD程序的編寫(xiě)。由于查找表程序是整個(gè)程序設(shè)計(jì)的核心,兼顧著非線(xiàn)性算法實(shí)現(xiàn)以及資源優(yōu)化的雙重使命,因此以下將進(jìn)行詳細(xì)介紹。查找表程序流程圖如圖7所示。
圖7 查找表程序流程圖
對(duì)每一個(gè)步驟作具體說(shuō)明:
(1)初始化:根據(jù)第一次實(shí)驗(yàn)結(jié)果(表1),設(shè)置插值結(jié)點(diǎn),選擇線(xiàn)性度范圍內(nèi)的6個(gè)檢定點(diǎn)和最小流量點(diǎn)(圖2);設(shè)置新插值點(diǎn)的插值步長(zhǎng)sf,在整個(gè)量程范圍內(nèi)每0.01Hz插一個(gè)點(diǎn);高頻時(shí)鐘頻率c設(shè)置為31250Hz;儀表的精度等級(jí)EL=0.01。
(2)根據(jù)實(shí)驗(yàn)結(jié)果,計(jì)算在EL精度內(nèi)的K,Kmin,Kmax(式6)。
(3)根據(jù)三次樣條插值方法,對(duì)整個(gè)量程范圍內(nèi)步長(zhǎng)間隔為sf的頻率點(diǎn)fi進(jìn)行插值,得到Ki,i=1,2,…,n,n為插值點(diǎn)數(shù)。按照式(5),得到相應(yīng)的Ni。
(4)各插值點(diǎn)的Ki若要保證在線(xiàn)性度范圍內(nèi),必須使Ki落在Kmin~Kmax區(qū)間,相應(yīng)地,其N(xiāo)i必須落在Nimin~Nimax(式7,式8)。
(5)若Nimin<Ni<Nimax,則不需要進(jìn)行修正,Ni'=Ni。反之,則需要將不滿(mǎn)足條件的m個(gè)點(diǎn)篩選出來(lái),以備修正,m<n。
對(duì)于待修正的Ni,i=1,2,…,m,總有一個(gè)滿(mǎn)足線(xiàn)性度條件的區(qū)間Nimin~Nimax與之對(duì)應(yīng)。在計(jì)算中發(fā)現(xiàn),相鄰k個(gè)Ni的Nimin~Nimax區(qū)間存在重疊部分,因此可以將這k個(gè)Ni修正為同一個(gè)Ni',使得Ni'落在k個(gè)Nimin~Nimax區(qū)間的交集中。這種方法可以大幅度減少查找表的數(shù)量,使CPLD資源得到優(yōu)化。
4 實(shí)驗(yàn)結(jié)果
為了檢驗(yàn)提出的基于CPLD儀表系數(shù)非線(xiàn)性修正方法的測(cè)量效果,分別對(duì)DN25和DN50渦街流量計(jì)在水流量標(biāo)準(zhǔn)裝置上進(jìn)行實(shí)驗(yàn),比較修正前后的實(shí)驗(yàn)效果。
DN25修正前的實(shí)驗(yàn)數(shù)據(jù)已在表1中給出,表3列出了修正后的實(shí)驗(yàn)數(shù)據(jù)。
DN50修正前、后的實(shí)驗(yàn)數(shù)據(jù)如表4、表5所示。
可見(jiàn),兩個(gè)口徑在修正后其測(cè)量范圍明顯擴(kuò)大。與DN25情況不同,從DN50實(shí)驗(yàn)數(shù)據(jù)來(lái)看,除小流量外,流量上限的重復(fù)性也很好,因此有儀表系數(shù)修正的空間,只需要將儀表系數(shù)修正到合理的線(xiàn)性度范圍內(nèi)即可,說(shuō)明該方法不僅對(duì)擴(kuò)展下限有很好的效果,在重復(fù)性良好的前提下,對(duì)于擴(kuò)展流量上限也同樣適用。由此,經(jīng)CPLD儀表系數(shù)修正后,渦街流量計(jì)的測(cè)量范圍在保證精度的前提下得到了明顯擴(kuò)展。
5 總結(jié)
本文提出了一種基于CPLD的硬件式儀表系數(shù)非線(xiàn)性修正方法,并將該方法應(yīng)用于渦街流量計(jì)中,擴(kuò)展其測(cè)量范圍,即利用CPLD對(duì)超出線(xiàn)性度范圍但重復(fù)性較好的流量點(diǎn)進(jìn)行儀表系數(shù)非線(xiàn)性修正。采用三次樣條插值法對(duì)K-Q曲線(xiàn)進(jìn)行逼近,通過(guò)優(yōu)化CPLD查找表資源,不僅實(shí)現(xiàn)了儀表系數(shù)的非線(xiàn)性修正,擴(kuò)展了量程,而且為實(shí)現(xiàn)低功耗作足準(zhǔn)備。該方法實(shí)現(xiàn)簡(jiǎn)單,效果明顯,對(duì)于存在儀表系數(shù)非線(xiàn)性問(wèn)題的其他流量?jī)x表也同樣適用,易于推廣。