本發明涉及流量測量領域,為一種氣體超聲波流量變送器,特別是一種采用同時激勵兩路換能器和同時接收兩路回波信號的雙發雙收模式、采用八路換能器激勵與八路回波信號數字信號處理相分離模式的四聲道氣體超聲波流量變送器。
背景技術:
氣體超聲波流量計(又稱氣體超聲流量計)具有測量精度高、無壓損、量程比大、適用于大口徑等優點而被廣泛地應用于天然氣流量測量領域。氣體超聲波流量計由一次儀表和二次儀表組成,一次儀表包括氣體超聲波換能器、流量管和安裝部件。二次儀表(又稱變送器)包括驅動信號生成和調理部分、回波信號調理和數字處理部分、人機交互部分和軟件。
合肥工業大學研制了雙聲道氣體超聲波流量計(徐科軍,方敏,汪偉,朱文姣,沈子文。一種基于FPGA和DSP的氣體超聲流量計,申請中國發明專利,公開號CN104697593A,申請日2015.06.10)。雙聲道氣體超聲波流量計由一次儀表和二次儀表組成,一次儀表包括氣體超聲換能器和傳感器單元;二次儀表包括發射/接收信號通道切換電路、驅動信號生成與放大電路、回波信號調理與采集電路、FPGA最小系統、DSP最小系統、人機接口、串口通訊、電源管理模塊以及FPGA和DSP的軟件。其特征如下:
(1)一次儀表由四個換能器A、B、C、D、壓力傳感器和溫度傳感器組成,四個換能器成X型分布方式,即形成兩個對射式(又稱直射式)的聲道,換能器A和B組成一個聲道,換能器C和D組成另外一個聲道。
(2)采用單發單收的工作模式,其工作過程為:換能器A作為發射換能器,發射超聲波信號,換能器B作為接收換能器,接收超聲波信號并產生回波信號;DSP對接收到的回波信號進行數字信號處理;處理完成后,再開始激勵下一個換能器和處理下一路回波信號。在一次測量周期中依次激勵四個換能器和處理四路回波信號。這樣,在整個測量過程中數字信號處理耗時較長,因此,每個通道的激勵時刻也間隔時間較長。當流體流速變化較快時,在一個測量周期內,不同聲道間測得的氣體流量線速度會存在偏差,導致采用線速度加權去求得平均面速度時存在誤差。
(3)發射信號通道切換電路包括四路驅動信號選通電路。驅動信號選通電路位于變壓放大電路之前,并采用MOSFET(金屬氧化物半導體場效應晶體管)對驅動信號進行選通,其通道切換控制信號與驅動信號采用共地接法,沒有進行隔離。在MOSFET關斷的情況下,漏極和源極之間并非完全斷開,而是存在一個大電阻,因此,仍然會有一定的漏電流流過。由于驅動信號放大電路與4路驅動信號選通電路同時相連,因此,當某一通道被選通工作時,激勵信號會通過漏電流而影響到其它通道。
技術實現要素:
為了提高儀表的測量精度,增強系統的抗干擾能力,本發明提供了一種高精度四聲道氣體超聲波流量變送器。
一種高精度四聲道氣體超聲波流量計由一次儀表和二次儀表(又稱變送器)組成。
所述一次儀表由八個氣體超聲換能器、流量管和安裝部件組成。所述八個氣體超聲換能器分別固定在流量管上;每個換能器既可作為發射換能器,又可作為接收換能器。
所述二次儀表由兩路驅動信號生成與放大電路、兩路回波信號調理與采集電路、DSP(數字信號處理器)最小系統、FPGA(現場可編程門陣列)最小系統、發射/接收信號通道切換電路、電源管理模塊、人機接口、串口通訊模塊以及FPGA軟件和DSP軟件組成。
所述驅動信號生成與放大電路由高速DAC(數模轉換器)轉換電路、驅動信號電壓放大電路、功率放大電路和變壓器放大電路組成。
所述回波信號調理與采集電路由電壓放大電路、帶通濾波電路、自增益放大電路、單端轉差分電路和高速ADC(模數轉換器)轉換電路組成。
所述發射/接收信號通道切換電路由驅動信號選通電路和回波信號選通電路組成。
所述DSP最小系統由DSP芯片TMS320F28335、時鐘電路、外部看門狗和FRAM(鐵電存儲器)組成。
所述FPGA最小系統由FPGA芯片EP4CE10E22C8N、FPGA芯片串行配置器電路FLASH EPCS4、FPGA芯片復位電路和時鐘電路組成。
所述FPGA芯片用于暫存回波信號調理與采集電路傳送來的轉換碼值,當延遲時間到達后,傳輸至DSP芯片;所述DSP芯片為主控芯片,負責數字信號處理以及人機交互、串口通訊,并且與FPGA配合完成整個系統的時序控制;DSP芯片采用零相位濾波消除信號中混雜的噪聲,采用跟蹤回波信號最大峰值的可變閾值過零檢測方法,提取特征波,計算超聲回波的傳播時間,進而獲得氣體流量。
所述FPGA軟件包括分頻模塊、ADC控制模塊、RAM_2PROT模塊、DAC控制模塊、ROM模塊、延遲模塊、判穩模塊以及通道切換模塊。
所述DSP軟件由主監控程序和各個子程序模塊組成。所述主監控程序為總調度程序,所述各個子程序模塊為初始化模塊、看門狗模塊、FRAM讀寫模塊、串口通信模塊、數據傳輸模塊、脈沖輸出模塊、中斷模塊、計算模塊和液晶顯示模塊;主監控程序通過調用各個子程序模塊實現所述氣體超聲流量計的各項功能。
主監控程序的具體操作步驟如下:
(1)電路系統初始化
系統上電后,DSP執行初始化程序,包括外設配置和變量定義。外設配置包括對DSP的GPIO(通用輸入輸出)口資源的分配和設置、SCI(串行通信接口)通信模塊的配置、液晶顯示的初始化、ePWM(增強型脈沖寬度調制)的初始化、定時器配置、中斷向量表的配置和中斷使能等。在變量定義環節中,定義流量計算需要的閾值、聲道長度、聲速、修正系數等參數。并且建立8個隊列,每個隊列由50個數據位組成,用于存放8個換能器接收到的超聲波的傳播時間(以下簡稱傳播時間);每當有一個新的傳播時間數據進入時,每個隊列首位的數據會被丟棄,新的傳播時間數據加在隊列的尾部。在后面的測量過程中,將根據這8個隊列的數據,實時計算出四聲道超聲波流量計順流和逆流的平均傳播時間。
(2)等待FPGA芯片存儲八路回波信號
DSP芯片向FPGA芯片發送“開始測量”信號。FPGA芯片立即使能內部的延時模塊,并由DAC控制模塊讀取ROM模塊中存儲的激勵信號的波形數據,傳輸至兩路驅動信號生成和放大電路;再經由FPGA芯片控制的發射/接收信號通道切換電路,輸出至直射式四聲道結構的換能器A和換能器C、或者換能器B和換能器D、或者換能器E和換能器G、或者換能器F和換能器H,由換能器A和換能器C、或者換能器B和換能器D、或者換能器E和換能器G、或者換能器F和換能器H發出兩路超聲波;超聲波經過一段渡越時間后,到達對應的接收換能器;由換能器E和換能器G、或者換能器F和換能器H、或者換能器A和換能器C、或者換能器B和換能器D接收超聲波,形成兩路回波信號;由FPGA芯片控制的發射/接收信號通道切換電路接收由換能器發出的回波信號,并輸入至兩路回波信號調理和采集電路;由回波信號調理和采集電路中的高速ADC完成數據轉換;并將高速ADC的轉換碼值存放于FPGA芯片內部的RAM_2PORT(又稱雙口RAM)模塊。
將上述過程重復4次;在每次重復時,FPGA通過改變I/O(輸入/輸出)口的輸出狀態,按順序切換不同的發射換能器和接收換能器,切換順序為:換能器A和換能器C發射,換能器E和換能器G接收;換能器E和換能器G發射,換能器A和換能器C接收;換能器B和換能器D發射,換能器F和換能器H接收;換能器F和換能器H發射,換能器B和換能器D接收。重復4次后,就得到了8路回波信號,并按照回波信號接收的順序,將回波信號存儲至FPGA芯片內部的RAM_2PORT模塊。當延時時間到達后,通過拉高設定的DSP芯片的GPIO口告知DSP芯片可以開始讀取數據。這就是所述的八路換能器激勵與八路回波信號數字信號處理相分離的模式。
(3)復制數據
DSP芯片檢測到設定的GPIO口的高電平后,首先將存放在FPGA芯片內部的RAM_2PORT模塊中的一路回波信號數據復制到DSP芯片的片內RAM(隨機存取存儲器)中,DSP芯片對其進行數字信號處理。
(4)DSP芯片對數據進行處理,計算超聲波的傳播時間。
DSP芯片首先對回波信號進行帶通濾波,再對濾波后的回波信號進行幅值歸一化處理,尋找到相應的特征波,再找到特征波之后的8個過零點。超聲波的傳播時間T可通過式(1)求得:
式中,τi(i=1,2,3…8)為過零點時間,t'為一個固定的偏差值。在零流量的情況下計算得到該偏差值。
(5)計算瞬時流量
將步驟(3)~(4)重復8次,就完成了四聲道順流和逆流傳播時間的測量,并將這8個傳播時間分別放入步驟(1)中所建立的8個隊列中。
執行5次這樣的測量,計算出四聲道順流和逆流的平均傳播時間t1、t2、t3、t4、t5、t6、t7、t8后。聲道1和聲道4的瞬時流量Q1可由式(2)求得,聲道2和聲道3得到的瞬時流量Q2可由式(3)求得。
式中,L1為聲道1和聲道4的聲道長度,L2為聲道2和聲道3的聲道長度,θ1為聲道1和聲道4的聲道角的角度,θ2為聲道2和聲道3的聲道角的角度,所述聲道角為超聲波傳播路徑與管道軸線之間的夾角。D為管道直徑。φ為線速度到面速度的轉換參數,通過標定實驗得到。
在計算儀表的瞬時流量時,Q1所占比重為0.2764,Q2所占比重為0.7236。瞬時流量Q的計算公式為
Q=0.2764×Q1+0.7236×Q2 (4)
(6)計算累積流量
在得到瞬時流量后,由DSP芯片的內部定時器1的中斷服務程序計算累積流量,每隔1秒鐘累積一次;定時器中斷服務程序首先讀取主監控程序計算的瞬時流量結果,并累加得到累積流量;再根據瞬時流量的值更新脈沖輸出模塊的參數,輸出一定頻率的脈沖,表示測得的瞬時流量;然后,將定時器時間標志置為1,以便在主監控程序中更新液晶顯示以及進行上位機通信。
本發明的有益技術效果是:在雙聲道氣體超聲波流量計的基礎上,采用雙發雙收、激勵換能器和回波信號處理分離的模式,實現了四聲道氣體超聲波流量計兩路換能器的同時激勵和兩路回波信號的同時采集,縮短了各個通道間的激勵時刻,提高了系統的實時性和測量精度,符合工業現場應用的需求。
附圖說明
圖1是一種高精度四聲道氣體超聲波流量計聲道分布示意圖。
圖2是一種高精度四聲道氣體超聲波流量變送器硬件框圖。
圖3是驅動信號生成與放大電路圖。
圖4是驅動信號選通電路圖。
圖5是回波信號選通電路圖。
圖6是回波信號調理和采集電路圖。
圖7是FPGA芯片(EP4CE10E22C8N)I/O(輸入/輸出)口子模塊圖。
圖8是FPGA芯片(EP4CE10E22C8N)內核電壓和I/O口電壓電路子模塊圖。
圖9是FPGA芯片(EP4CE10E22C8N)地子模塊圖。
圖10是FPGA芯片(EP4CE10E22C8N)仿真接口子模塊圖。
圖11是FPGA芯片(EP4CE10E22C8N)鎖相環電壓電路子模塊圖。
圖12是FPGA芯片(EP4CE10E22C8N)時鐘輸入子模塊圖。
圖13是FPGA芯片串行配置電路圖。
圖14是FPGA芯片復位電路圖。
圖15是DSP芯片電路圖。
圖16是DSP芯片引導模式選擇電路圖。
圖17是FPGA軟件組成圖。
圖18是DSP軟件組成圖。
圖19是變送器系統軟件流程圖。
圖20是主監控程序流程圖。
圖21是回波信號波形圖。
圖22是不同流量下回波信號波形圖。
圖23是線性插值求取過零點示意圖。
圖24是臺階法示意圖。
圖25是定時器中斷服務程序流程圖。
具體實施方式
參見圖1,本發明的一次儀表由八個氣體超聲換能器、流量管和安裝部件組成。所述八個氣體超聲換能器分別為換能器A、換能器B、換能器C、換能器D、換能器E、換能器F、換能器G和換能器H,每個換能器既作為發射換能器,又作為接收換能器。所述八個超聲換能器形成四個聲道,分別是換能器A與換能器E(記為聲道1)、換能器B與換能器F(記為聲道2)、換能器C與換能器G(記為聲道3)、換能器D與換能器H(記為聲道4),所述聲道1和聲道4的聲道長度較短,所述聲道2和聲道3的聲道長度較長。
參見圖2,本發明的二次儀表硬件系統由發射/接收信號通道切換電路、驅動信號生成和放大電路、回波信號調理與采集電路、DSP最小系統、FPGA最小系統、人機接口、串口通信和電源管理模塊組成。
所述發射/接收信號通道切換電路由驅動信號選通電路和回波信號選通電路組成。其中,驅動信號選通電路根據FPGA給出的控制信號選通對應的發射換能器,回波信號選通電路根據FPGA給出的控制信號選通對應的接收換能器。
所述驅動信號生成和放大電路由高速DAC轉換電路,驅動信號電壓放大電路、功率放大電路和變壓器放大電路組成。驅動信號生成與放大電路實現驅動信號的數模轉換、電壓放大、功率放大和變壓器隔離放大。
所述回波信號調理與采集電路由電壓放大電路、帶通濾波電路、自增益放大電路、單端轉差分電路、高速ADC轉換電路組成。回波信號調理與采集電路實現回波信號的電壓放大、帶通濾波、自增益放大、單端轉差分和模數轉換。
所述DSP最小系統由TMS320F28335DSP芯片、時鐘電路、外部看門狗和FRAM(鐵電存儲器)組成。DSP最小系統主要負責數字信號處理和傳播時間的計算。
所述FPGA最小系統由EP4CE10E22C8NFPGA FPGA芯片、FPGA芯片串行配置器電路FLASH EPCS4、FPGA芯片復位電路和時鐘電路組成。FPGA最小系統主要負責系統的時序控制和信號交互。
本發明的電路系統按功能分為模擬板和數字板,模擬板包括發射/接收信號通道切換電路、驅動信號生成與放大電路中的電壓放大電路、功率放大電路、變壓器放大電路、回波信號調理與采集電路中的電壓放大電路、帶通濾波電路、自增益放大電路、單端轉差分電路,以及電源管理模塊;數字板包括驅動信號生成與放大電路中的高速DAC轉換電路、回波信號調理與采集電路中的高速ADC轉換電路、FPGA最小系統、DSP最小系統。
圖3為驅動信號生成與放大電路,由高速DAC轉換電路、電壓放大電路、功率放大電路和變壓器放大電路組成。高速DAC電路將FPGA輸出的數字信號轉換為模擬信號;電壓放大電路對DAC輸出的信號進行I/V(電流/電壓)轉換并將轉換得到的電壓信號放大6.1倍;功率放大電路將上級輸出信號的電壓幅值同相放大2倍,同時,極大地提高了上級輸出信號的電流輸出能力;變壓器放大電路將上級輸出信號電壓放大10倍。
圖4為換能器A的驅動信號選通電路,由SW1、W1、R145、R153、R149、TP10、D26和D22組成。SW1為固態繼電器,其觸發LED(發光二極管)的正向電流最大僅需2mA,輸入側端子間電容為40pf,動作時間僅為0.1ms。W1為換能器A的連接端。I/O1為FPGA輸出的換能器A的選通信號。DRIVE1為驅動信號生成與放大電路的輸出信號。R145為換能器兩端并聯電阻。R153為固態繼電器控制端的限流電阻。R149為固態繼電器高壓側的限流電阻。D26和D22為回波信號輸出雙向鉗位二極管,防止回波信號選通電路被高壓擊穿。TP10為測試點。采用繼電器選通驅動信號減少了通道間的串擾。換能器B、C、D、E、F、G、H的驅動信號選通電路與換能器A的驅動信號選通電路類似。
圖5為回波信號選通電路,由4個低阻抗單刀單擲開關U26、U27、U28、U29,下拉電阻R174、R175、R179、R180、R184、R185、R189和R190和連接電阻R172、R173、R176、R177、R178、R181、R182、R183、R186、R187和R188組成。當換能器A、換能器B、換能器C、換能器D、換能器E、換能器F、換能器G和換能器H作為接收換能器時,COM1、COM2、COM3、COM4、COM5、COM6、COM7和COM8分別為該換能器的回波信號的輸入端。IC_A、IC_B、IC_C、IC_D、IC_E、IC_F、IC_G和IC_H分別是FPGA輸出的回波選通信號。R181斷開時,可做雙發雙收模式;R181焊上時,可做單發單收模式。
圖6為回波信號調理和采集電路,由電壓放大電路、帶通濾波電路、自增益放大電路、單端轉差分電路和高速ADC轉換電路組成。經過回波信號選通電路的回波信號輸入到電壓放大電路,同向放大11倍;電壓放大電路的輸出信號輸入至帶通濾波電路,進行4階帶通濾波;帶通濾波電路的輸出信號輸入至自增益放大電路,對回波信號的幅值進行自增益控制;自增益放大電路的輸出信號輸入至單端轉差分電路,形成兩路差分信號,輸入至高速ADC轉換電路,高速ADC轉換電路將模擬信號轉換為數字信號。
圖7為FPGA芯片I/O口子模塊。其中,FPGA芯片的IO105、IO106、IO110、IO111、IO112、IO113、IO114、IO115、IO119、IO120、IO121引腳分別連接至高速DAC轉換電路中的DAC芯片的DA_DATA0、DA_DATA1、DA_DATA2、DA_DATA3、DA_DATA4、DA_DATA5、DA_DATA6、DA_DATA7、DA_DATA8、DA_DATA9、DA_CLK引腳,用于控制高速DAC產生驅動信號;FPGA芯片的IO104、IO103、IO101、IO100、IO99、IO98、IO87、IO86、IO85、IO84、IO83、IO80、IO77、IO76、IO75、IO74、IO73、IO_72、IO71、IO70、IO69、IO68、IO67、IO66、IO65引腳分別連接至高速ADC轉換電路中的ADC芯片的AD_DA0、AD_DA1、AD_DA2、AD_DA3、AD_DA4、AD_DA5、AD_DA6、AD_DA7、AD_DA8、AD_DA9、AD_DA10、AD_DA11、AD_DB0、AD_DB1、AD_DB2、AD_DB3、AD_DB4、AD_DB5、AD_DB6、AD_DB7、AD_DB8、AD_DB9、AD_DB10、AD_DB11、AD_CLK引腳,用于控制高速ADC以預定采樣頻率完成回波信號的采集與轉換,并且將轉換結果上傳至FPGA芯片內部的RAM_2PROT模塊。FPGA引腳IO34連接至DSP的START引腳,用于接收DSP芯片發出的開始測量指令,啟動高速DAC輸出驅動信號;FPGA的IO64引腳連接至DSP的INT2DSP引腳,用于當FPGA芯片片內雙口RAM中存儲的高速ADC轉換碼值達到一定數量后,向DSP芯片發送接受請求信號;FPGA的IO32引腳連接至DSP的READ_EN引腳,用于檢測DSP芯片發出的讀取指令;FPGA的IO28引腳連接至DSP的READ_CLK引腳,用于控制FPGA芯片和DSP芯片之間的數據傳遞速度;FPGA的IO60、IO59、IO58、IO55、IO54、IO53、IO52、IO51、IO50、IO49、IO46、IO44引腳分別連接至DSP的DATA2DSP0、DATA2DSP1、DATA2DSP2、DATA2DSP3、DATA2DSP4、DATA2DSP5、DATA2DSP6、DATA2DSP7、DATA2DSP8、DATA2DSP9、DATA2DSP10、DATA2DSP11,用于將FPGA芯片中暫存的采樣數據并行傳輸至DSP芯片。FPGA芯片的IO144、IO143、IO142、IO141、IO138、IO137、IO136、IO135引腳分別連接至回波信號選通電路的EHCO_switch1、EHCO_switch2、EHCO_switch3、EHCO_switch4、EHCO_switch5、EHCO_switch6、EHCO_switch7、EHCO_switch8端口,用于控制8路回波信號選通電路;FPGA芯片的IO133、IO132、IO129、IO128、IO127、IO126、IO125、IO124引腳連接至驅動信號選通電路的DRIVE_switch1、DRIVE_switch2、DRIVE_switch3、DRIVE_switch4、DRIVE_switch5、DRIVE_switch6、DRIVE_switch7、DRIVE_switch8端口,用于控制8路驅動信號選通電路。
圖8為FPGA芯片內核電壓和I/O口電壓子模塊。其中+3.3V電源連接至FPGA引腳17、26、40、47、56、62、81、93、117、122、130、139,為FPGA的I/O口提供工作電壓;+1.2V連接至FPGA引腳5、29、45、61、78、102、116、134,為FPGA內核提供工作電壓。
圖9為FPGA芯片地子模塊。其中引腳4、19、22、27、41、57、63、48、79、82、95、118、123、131、140與參考地平面連接。
圖10為FPGA芯片仿真接口子模塊,由U7A、R120、R119、R122、R118、R250、R251、R252、R253、R254、R255組成。其中,U7A的引腳18、16、20、15連接至JTAG接口,引腳12、13連接至串行配置器,引腳14、92、13、12、21連接至AS接口,引腳94、96、97用于配置FPGA工作模式,R120、R119、R122、R118為下拉電阻,R250、R251、R252、R253、R254、R255用于設置引腳94、96、97的端口電平。
圖11為FPGA芯片鎖相環電壓子模塊。其中+1.2V電源連接至FPGA引腳37、109,為數字鎖相環提供電壓;2.5V電源連接至FPGA引腳35、107,為模擬鎖相環提供電壓;FPGA引腳36、108接地。
圖12為FPGA芯片時鐘輸入子模塊。由U9、L4、C82、C97、R115、U7F組成。其中,U9為晶振,L4為磁珠,用于抑制電源傳導噪聲,C82為退耦電容,C97為濾波電容,R115為連接電阻,U7F的引腳24為時鐘信號輸入端。
圖7、圖8、圖9、圖10、圖11、圖12中的U7D、U7B、U7C、U7A、U7E、U7F組成了FPGA芯片。
圖13為FPGA芯片串行配置電路,由Flash型串行配置器構成。
圖14為FPGA復位電路,由電阻R111、R112、R113、電容C96、二極管D2和按鍵組成。
圖15所示為DSP芯片電路,DSP芯片的型號為TMS320F28335;其中,+1.9V電源連接至引腳4、15、23、29、61、101、109、117、126、139、146、154、167,為DSP芯片內核供電;+3.3V電源連接至引腳9、71、93、107、121、143、159、170,為DSP芯片IO口供電;引腳3、8、14、22、30、60、70、83、92、103、106、108、118、120、125、140、144、147、155、160、166、171連接至地。引腳80、78、87、79、76、77、85、86為DSP芯片JTAG端口。DSP芯片的152引腳連接至FPGA的START引腳,用于啟動流量測量,通知FPGA芯片啟動外部DAC模塊輸出驅動信號;DSP的114引腳連接至FPGA的INT2DSP引腳,用于通知DSP芯片開始接收FPGA芯片內部存儲的高速ADC轉換碼值;DSP芯片的156引腳連接至FPGA的READ_EN引腳,用于使能FPGA芯片片內雙口RAM的讀取;DSP芯片的158引腳連接至DSP的READ_CLK引腳,用于控制數據轉移的速度,為數據傳遞提供時鐘信號;DSP芯片的115、116、119、122、123、124、127、128、129、130、131、132引腳連接至FPGA的DATA2DSP0~DATA2DSP11引腳,用于并行接收FPGA芯片中暫存的采樣數據。DSP芯片的10、11、12、13引腳連接至鐵電存儲器的FRAM_CS、FRAM_SOMI、FRAM_SIMO、FRAM_CLK引腳,用于和外部鐵電存儲器之間的數據交換;DSP芯片的65、64、63、62引腳連接至按鍵輸入的KEY0~KEY3引腳,用于接收外部的按鍵輸入信號;DSP芯片的66、67、68引腳連接至外部液晶的LCD_CS、LCD_CLK、LCD_DI引腳,用于控制外部液晶模塊的顯示;DSP芯片的18、20引腳連接至串行通訊的SCITXDB、SCIRXDB引腳,用于和上位機之間的異步串行通訊。
圖16為DSP芯片引導模式選擇電路,由電阻R49、R50、R51、R52、R53、R54、R55和R56組成。通過配置R49和R50,R51和R52,R53和R54以及R55和R56之間的阻值比,即可修改DSP芯片的引導模式。
圖17為FPGA軟件組成圖。FPGA芯片的主要功能模塊包括:分頻模塊、ADC控制模塊、RAM_2PROT模塊、DAC控制模塊、ROM模塊、延遲模塊、判穩模塊以及通道切換模塊,各個模塊之間采用同步設計方案。分頻模塊用于將外部輸入的50MHz時鐘信號調制為輸出至高速ADC的5MHz采樣時鐘和DAC的20MHz工作時鐘;ADC控制模塊用于將高速ADC的轉換碼值搬運至FPGA芯片內部的RAM_2PORT模塊;RAM_2PROT模塊則用于存放高速ADC轉換碼值,當高速ADC的轉換碼值存儲達到一定數量后,向DSP芯片發出“請求讀取”信號,然后將存儲的高速ADC轉換碼值按照一定的速率傳輸至DSP芯片;DAC控制模塊用于將ROM模塊中存儲的波形數據傳輸至高速DAC,產生相應的激勵波形;延遲模塊用于控制在激勵信號發出之后,經過預先設定的延遲時間,使能RAM_2PORT模塊開始存儲高速ADC的轉換碼值,用于延時切換驅動信號通道和回波信號通道;判穩模塊用于判斷FPGA收到的“開始測量”信號是否正常;通道切換模塊用于按順序切換驅動信號通道和回波信號通道。
圖18所示為DSP軟件組成框圖,軟件設計采用了模塊化的設計方法。DSP軟件由主監控程序和各個子程序模塊組成;子程序模塊包括初始化模塊、數據傳輸模塊、中斷模塊、計算模塊、FRAM讀寫模塊、串口通訊模塊、脈沖輸出模塊、看門狗模塊以及液晶顯示模塊。主監控程序是整個系統的總調度程序,通過調動各個子程序模塊實現系統的各項功能。各子程序模塊功能如下:
(1)初始化模塊:初始化模塊包括系統初始化、外設初始化和算法初始化。系統初始化完成系統時鐘和看門狗的初始化;外設初始化對片內外設初始化,主要包括GPIO口、SPI(串行外設接口)等。算法初始化對累積流量、儀表參數進行初始化。
(2)FRAM讀寫模塊:變送器選用FRAM來保存一些需要進行掉電保存的數據。通過DSP的GPIO口模擬串行時序來實現對FRAM的讀寫和控制。
(3)數據傳輸模塊:在流量測量循環中,DSP需要將“開始測量”信號發送給FPGA來啟動流量測量,FPGA采樣并存儲在雙口RAM中的信號數據需要傳輸給DSP來進行數字信號處理。
(4)中斷模塊:為了確保順逆流測量時間上的準確性,計算得到的瞬時流量不直接累積出流量,而是通過調用定時器中斷服務程序來計算累積流量,定時器中斷由DSP的內部定時器1產生,周期為1秒。中斷服務程序首先讀取主監控程序計算的瞬時流量結果,并累加其瞬時流量得到累積流量。然后根據瞬時流量的值更新PWM模塊的參數,使其輸出一定頻率的脈沖來代表測得的瞬時流量。然后將定時器時間標志置為1,以便在主監控程序中更新液晶顯示以及上位機通信。
(5)計算模塊:計算模塊主要包括截取采樣信號從而得到有用信號、零相位濾波、采用回波信號幅值歸一化來尋找特征波、通過多零電平交點法計算過零點和計算傳播時間。
采用零相位數字濾波器,實現了回波信號的預處理;采用跟蹤回波信號幅值的可變閾值法,實現了回波信號特征波的拾取;采用多零電平交點法,得到了超聲波傳播時間;采用排序加權法,保證了瞬時流量計算的準確性。
(6)串口通信模塊:串口通信模塊將瞬時流量、累積流量和采樣數據上傳給上位機,方便調試工程師或者用戶對數據進行離線處理。
(7)脈沖輸出模塊:脈沖輸出模塊用與在流量標定時,將流量計測量的流量以脈沖的形式傳送給其他裝置計數。
(8)液晶顯示模塊:顯示模塊將氣體超聲波流量計計算的瞬時流量和累積流量顯示在液晶(LCD)上,DSP通過GPIO模擬串口通信的方式將命令和數據傳送給LCD,LCD完成顯示。
(9)看門狗模塊:當DSP軟件因為某些原因而無法正常工作時,外部看門狗可以及時地對DSP進行復位操作。
圖19為變送器系統軟件流程圖。工作流程如下:變送器上電之后,DSP芯片首先完成各個部分的初始化,然后,進入主監控程序,進行流量測量的循環。DSP向FPGA發送“開始測量”指令。DSP發出的指令經過FPGA判穩模塊捕獲后,使能DAC控制模塊,控制ROM模塊將波形數據發送至高速DAC電路,同時FPGA選通兩對換能器。經過一段延時時間之后,外部的高速ADC轉換電路依據FPGA提供的5MHz采樣頻率完成從模擬信號到數字信號的轉換。兩路回波信號數據被存儲在FPGA內部的雙口RAM中。然后,FPGA切換發射/回波信號選通通道,并將以上操作重復4次,得到8路回波信號數據,FPGA將內部的雙口RAM空間中八路回波信號數據通過并口線傳輸至DSP。DSP獲得回波信號后,調用內部的數字信號處理算法,計算出八路信號的傳播時間,再加權得到流速信息。將以上過程循環五次,對這五次的流速信息進行平均,計算出瞬時流量,然后,對瞬時流量積分求得累積流量并且定時輸出。
圖20為DSP軟件的主監控程序流程圖,變送器上電后主監控程序自動運行。主監控程序的具體操作步驟如下:
(1)電路系統初始化
系統上電后,DSP執行初始化程序,包括外設配置和變量定義。外設配置包括對DSP的GPIO口資源的分配和設置、SCI通訊模塊的配置、液晶顯示的初始化、ePWM的初始化、定時器配置、中斷向量表的配置和中斷使能等。在變量定義環節中,定義流量計算需要的閾值、聲道長度、聲速、修正系數等參數。并且建立8個隊列,每個隊列由50個數據空位組成,用于存放8個換能器接收到的超聲波的傳播時間(以下簡稱傳播時間);每當有一個新的傳播時間數據進入時,每個隊列首位的數據會被丟棄,新的傳播時間數據加在隊列尾部。在后面的測量過程中,將根據這8個隊列的數據,實時計算出四聲道超聲波流量計順流和逆流的平均傳播時間。
(2)等待FPGA芯片存儲八路回波信號
DSP芯片向FPGA芯片發送“開始測量”信號,FPGA芯片立即使能內部的延時模塊,并由DAC控制模塊讀取ROM模塊中存儲的激勵信號的波形數據,傳輸至驅動信號生成和放大電路;再經由FPGA芯片控制的發射/接收信號通道切換電路,輸出至直射式四聲道結構的換能器A和換能器C、或者換能器B和換能器D、或者換能器E和換能器G、或者換能器F和換能器H,由換能器A和換能器C、或者換能器B和換能器D、或者換能器E和換能器G、或者換能器F和換能器H發出兩路超聲波;超聲波經過一段渡越時間后,到達對應的接收換能器;由換能器E和換能器G、或者換能器F和換能器H、或者換能器A和換能器C、或者換能器B和換能器D接收超聲波,形成兩路回波信號;由FPGA芯片控制的發射/接收信號通道切換電路接收由換能器發出的回波信號,并輸入至回波信號調理和采集電路;由回波信號調理和采集電路中的高速ADC完成數據轉換;并將高速ADC的轉換碼值存放于FPGA芯片內部的RAM_2PORT模塊。
將上述過程重復4次;在每次重復時,FPGA通過改變I/O口的輸出狀態,按順序切換不同的發射換能器和接收換能器,切換順序為:換能器A和換能器C發射,換能器E和換能器G接收;換能器E和換能器G發射,換能器A和換能器C接收;換能器B和換能器D發射,換能器F和換能器H接收;換能器F和換能器H發射,換能器B和換能器D接收。重復4次后,就得到了8路回波信號,并按照回波信號接收的順序,將回波信號存儲至FPGA芯片內部的RAM_2PORT模塊。當延時時間到達后,通過拉高設定的DSP芯片的GPIO口告知DSP芯片可以開始讀取數據。這就是所述的八路換能器激勵與八路回波信號數字信號處理相分離的模式。
(3)復制數據
DSP芯片檢測到設定的端口的高電平后,首先將存放在FPGA芯片內部的RAM_2PORT模塊中的一路回波信號數據復制到DSP芯片的片內RAM中。
(4)DSP芯片對數據進行處理,計算超聲波的傳播時間
接收到的超聲波回波信號波形如圖21所示。該信號波形類似棗核狀,每個波的峰值逐漸增大再逐漸減小,直至衰減為零。首先采用零相位濾波器對采樣得到的超聲波回波信號進行數字濾波。數字濾波器的通帶頻率為20kHz~380kHz。將濾波后的0m3/h流量和600m3/h流量下的信號波形對齊,繪制在同一張圖上,如圖22所示。可見,這兩個流量下的回波信號的形狀基本一致。通過大量的實驗數據分析,確定了在各個流量下,回波信號各個極值點幅值相對于最大值點幅值的比值基本不變。由于回波信號具有這種特征,可以根據特定的比值來準確地定位回波信號中的某一個特征波。首先,在濾波后的回波信號中找到最大峰值Amax,再根據最大峰值設定一個閾值SW(SW=α·Amax)。其中,α為一個固定比值,由大量實驗統計得到。以圖22對應的換能器為例,在0~900m3/h流量范圍之間,每隔100m3/h取一個流量點,在每個流量點下采集50次回波信號,然后,用MATLAB對其進行分析,計算回波信號中各個峰值與最大峰值的比例。可見,在各個流量下,第5個波與第6個波與最大峰的比值基本上是不變的。第5個波的波峰與最大峰的比值維持在0.39左右,而第6個波的波峰與最大峰的比值則維持在0.53左右。所以,取α為兩者的均值,即0.46。用SW去檢測回波信號,當回波信號的幅值第一次達到這個閾值時,所對應的波就是要找的特征波。這種確定回波信號中特征波的方法稱為可變閾值法。
通過這種可變閾值方法準確地找到特征波后,就可以根據這個特征波計算所需的過零點。這里采用特征波后8個過零點的平均值。通過計算這8個過零點的平均值,獲得準確的傳播時間。這樣可以消除隨機誤差,提高測量精度。這8個過零點按照時間先后順序排列分別為:τ1,τ2……τ8。在確定過零點時間時,采用線性插值的方法,如圖23所示。若第n點的幅值為x(n),第n+1點的幅值為x(n+1),且x(n)與x(n+1)數值的極性相反,那么,第n點和第n+1點的之間必有一個過零點,可通過式(5)進行線性插值運算,計算出信號過零點τi(i=1,2,3…8):
式中,Tc為信號采樣的周期,因為采樣頻率是5MHz,這里Tc=0.2μs;n為第i個過零點對應的點數;x(n)與x(n+1)分別是第n點和第n+1點的幅值。
傳播時間T可通過式(6)計算獲得:
式中,τi(i=1,2,3…8)為由式(5)計算獲得的過零點時刻,t'為一個固定的偏差值。該偏差值可以在零流量的情況下計算出來。
當管道內氣體不流動情況下,首先,依據測量聲道的長度以及實際聲速計算出超聲回波的傳播時間T0;然后,依據式(5)計算獲得此時8個過零點對應的時間τ0i(i=1,2,3…8);最后,通過式(7)計算出該固定偏差值t'。
得到t′后,就可根據式(6)和(7)實時計算出超聲波的傳播時間。
(5)計算瞬時流量
將步驟(3)~(4)重復8次,就完成了四個聲道順流和逆流傳播時間的測量,得到一次測量循環中的8個傳播時間,將這8個傳播時間分別放入步驟(1)中所建立的8個隊列中。
執行5次這樣的測量,計算出四個聲道順流和逆流的平均傳播時間,并根據這個平均傳播時間計算出平均流量,并作為瞬時流量顯示。
為了提高系統測量的穩定性,避免極端情況下出現的粗大誤差,采用判斷“臺階”的方法剔除異常值,即在計算平均流量時,首先將某一個聲道對應的傳播時間隊列里的50個數據取出,存放在另外開辟的數組中,然后,將代表50次測量的傳播時間的數據從小到大進行排序。如果這50次測量結果中存在粗大誤差,那么,排序后的傳播時間值就會出現明顯的“臺階”現象,如圖24所示。通過判斷“臺階”,將數據分成若干段,點數最多的那一段數據即為正確的傳播時間數據。以圖24為例,“臺階”出現在第6點和第40點,這50個傳播時間數據,則被分為3小段:1~5點、6~39點以及40~50點。數據點數最多的6~39段為測量正確的傳播時間。然后,求正確的傳播時間數據的均值,即可得到該個通道的平均傳播時間t。
計算出四個聲道順流和逆流的平均傳播時間t1、t2、t3、t4、t5、t6、t7、t8后。可以根據公式(8)計算得到聲道1和聲道4的瞬時流量Q1,根據公式(9)計算得到聲道2和聲道3的瞬時流量Q2。
式中,L1為聲道1和聲道4的聲道長度,L2為聲道2和聲道3的聲道長度,θ1為聲道1和聲道4的聲道角的角度,θ2為聲道2和聲道3的聲道角的角度,所述聲道角為超聲波傳播路徑與管道軸線之間的夾角。D為管道直徑。φ為線速度到面速度的轉換參數,通過標定實驗得到。
通過公式(10)計算得到瞬時流量Q,Q1所占比重為0.2764,Q2所占比重為0.7236。
Q=0.2764×Q1+0.7236×Q2 (10)
式中,Q為瞬時流量。
(6)計算累積流量
在得到修正后的瞬時流量后,由DSP芯片的內部定時器1的中斷服務程序計算累積流量,每隔1秒鐘累加一次,圖25為DSP芯片的內部定時器1的中斷服務程序流程圖。定時器中斷服務程序首先讀取主監控程序計算的瞬時流量結果,并累加得到累積流量;再根據瞬時流量的值更新脈沖輸出模塊的參數,輸出一定頻率的脈沖,表示測得的瞬時流量;然后,將定時器時間標志置為1,以便在主監控程序中更新液晶顯示以及進行上位機通信。