胡國棟,馮正平,2,畢安元
(1. 上海交通大學(xué) 船舶海洋與建筑工程學(xué)院,上海 200240;2. 高新船舶與深海開發(fā)裝備協(xié)同創(chuàng)新中心 船海協(xié)創(chuàng)中心,上海 200240)
科氏質(zhì)量流量計(CMF)直接高精度地測量介質(zhì)質(zhì)量流量與密度,被廣泛應(yīng)用于海洋石油等領(lǐng)域[1],如超大型油輪(VLCC)的油料加裝過程。介質(zhì)密度信息既可作為船用燃油等級劃分依據(jù)[2],又可作為混合流體中目標(biāo)液體所占比例的計算依據(jù)[3]。BZ19-4油田海上石油平臺利用CMF同時測量分離器水相出口的質(zhì)量流量與水中含油率,降低了分析儀器費(fèi)用[3]。并且,CMF質(zhì)量流量測量過程不易受環(huán)境溫度、介質(zhì)密度、介質(zhì)流態(tài)的影響,在海洋石油等氣液兩相流測量應(yīng)用中具有獨(dú)特的優(yōu)勢。2008年,英國國家工程實(shí)驗(yàn)室與牛津大學(xué)Henry團(tuán)隊合作,研制出直徑200mm科氏質(zhì)量流量計。同年,該團(tuán)隊針對新加坡某集裝箱船進(jìn)行現(xiàn)場船用燃油加注測試。測試結(jié)果顯示,該流量計實(shí)際質(zhì)量流量測量誤差低于1%[4]。
科氏質(zhì)量流量計通過檢測兩路檢測線圈振動信號之間的相位差,得到介質(zhì)的質(zhì)量流量信息[5]。目前,數(shù)字式CMF實(shí)時信號處理方法主要有2種:CMF并行信號處理方法與CMF串行信號處理方法。
21世紀(jì)初,牛津大學(xué)Henry團(tuán)隊基于自確認(rèn)傳感器模型[6]研制出數(shù)字化科氏質(zhì)量流量計系統(tǒng)[7-8]。該系統(tǒng)通過采用“FPGA+微處理器”的并行處理架構(gòu),將CMF信號處理與控制任務(wù)分布運(yùn)行在2個處理模塊中。其中,F(xiàn)PGA模塊完成信號采集與輸出任務(wù),微處理器完成流量檢測、密度檢測與流量管振動參數(shù)計算等任務(wù)[9]。需要指出的是,除了硬件設(shè)計層面的復(fù)雜性,該系統(tǒng)需要采用VxWorks實(shí)時操作系統(tǒng)進(jìn)行進(jìn)程調(diào)度,軟件復(fù)雜程度也較高。
另一方面,數(shù)字信號處理器(DSP)因采用哈佛架構(gòu),具有專門的硬件乘法器、特殊的數(shù)字信號處理指令等優(yōu)勢,而被廣泛應(yīng)用于數(shù)字信號處理領(lǐng)域[10]。徐科軍團(tuán)隊[11-12]基于單核DSP設(shè)計的CMF串行信號處理與控制系統(tǒng),在一個周期內(nèi)完成數(shù)據(jù)采集與數(shù)字濾波計算、頻率檢測與相位差檢測、數(shù)字驅(qū)動控制參數(shù)計算等任務(wù)。該系統(tǒng)能夠取得較高的相位差檢測精度,但由于多任務(wù)串行運(yùn)行在同一個周期內(nèi),系統(tǒng)不具有良好的實(shí)時性;并且在DSP執(zhí)行相位差檢測任務(wù)時,系統(tǒng)無法采集CMF模擬信號,造成數(shù)據(jù)浪費(fèi)。
為了解決上述CMF串行信號處理方法無法同時進(jìn)行數(shù)據(jù)采集與相位差檢測工作的問題,并考慮到DSP在數(shù)字信號處理方面的獨(dú)特優(yōu)勢,本文基于雙核DSP設(shè)計了CMF并行信號處理方法,旨在提升CMF信號處理實(shí)時性,降低系統(tǒng)復(fù)雜度。基于設(shè)計的CMF信號處理驗(yàn)證平臺,對該方法進(jìn)行相位差檢測實(shí)時性與精度驗(yàn)證,并將實(shí)驗(yàn)驗(yàn)證結(jié)果與仿真測試結(jié)果對比。
典型的CMF信號處理任務(wù)可分為兩類:預(yù)處理任務(wù)(數(shù)據(jù)采集與數(shù)字濾波計算)與后處理任務(wù)(頻率檢測與相位差檢測)。預(yù)處理任務(wù)(Sample-based Task)依據(jù)采樣頻率不斷反復(fù)地被執(zhí)行;當(dāng)采樣點(diǎn)數(shù)量達(dá)到數(shù)據(jù)幀長度時,后處理任務(wù)(Frame-based Task)被執(zhí)行一次。在一個數(shù)據(jù)幀周期內(nèi),預(yù)處理任務(wù)與后處理任務(wù)是互斥的。數(shù)據(jù)幀周期開始時,系統(tǒng)執(zhí)行預(yù)處理任務(wù)而阻塞了后處理任務(wù)。當(dāng)采樣點(diǎn)數(shù)量到達(dá)數(shù)據(jù)幀長度時,系統(tǒng)執(zhí)行后處理任務(wù)而阻塞預(yù)處理任務(wù)。
在執(zhí)行預(yù)處理任務(wù)的時間內(nèi),CMF輸出的模擬信號無法被采集,因此,CMF串行信號處理方法存在信號利用率低、系統(tǒng)實(shí)時性差的明顯缺點(diǎn)。
為解決上述問題,將CMF信號處理任務(wù)重組,并行運(yùn)行在分布式處理器中,如圖1所示。
圖 1 CMF并行信號處理流程圖Fig. 1Parallel CMF signal processing flowchart
主處理器中運(yùn)行的預(yù)處理進(jìn)程依據(jù)采樣頻率,不斷反復(fù)執(zhí)行預(yù)處理任務(wù),即數(shù)據(jù)采集與數(shù)字濾波計算任務(wù);當(dāng)采樣點(diǎn)數(shù)量達(dá)到數(shù)據(jù)幀長度時,預(yù)處理進(jìn)程向后處理進(jìn)程發(fā)送事件通知。
從處理器中運(yùn)行的后處理進(jìn)程收到來自預(yù)處理進(jìn)程的事件通知時,方可開始針對本數(shù)據(jù)幀進(jìn)行頻率檢測與相位差檢測等后處理任務(wù)。
需要指出的是,在預(yù)處理進(jìn)程中最后一個預(yù)處理任務(wù)時間片內(nèi)需要額外完成發(fā)送事件通知與將相位差檢測結(jié)果輸出等工作,因此比其他預(yù)處理任務(wù)時間片稍長(見圖2)。另外,從處理時序中可看出,后處理進(jìn)程比預(yù)處理進(jìn)程滯后一個數(shù)據(jù)幀周期。由于CMF信號處理數(shù)據(jù)幀周期通常很短(典型值為40 ms左右),因此完全可以認(rèn)為后處理進(jìn)程輸出的處理結(jié)果是實(shí)時的。
圖 2 CMF并行信號處理時序圖Fig. 2Parallel CMF signal processing timeline
基于TI公司TMS320F28379D型號MCU開發(fā)CMF并行信號處理軟件。該MCU集成了2個32位DSP核(CPU01與CPU02),集成了2個獨(dú)立于CPU之外的浮點(diǎn)運(yùn)算協(xié)處理器(CLA)、2個六通道DMA、核間通信模塊(IPC)與128KB共享內(nèi)存。預(yù)處理進(jìn)程與后處理進(jìn)程分布并行運(yùn)行在雙核DSP中。
1.3.1 預(yù)處理進(jìn)程
預(yù)處理進(jìn)程基于定時器中斷,等時間間隔地完成數(shù)據(jù)采集與數(shù)字濾波計算任務(wù)。
在每個定時器中斷處理程序中:
1)使能2個ADC,分別對兩路CMF模擬信號進(jìn)行一次采樣,并將采樣數(shù)據(jù)傳遞給CLA1;
2)CLA1完成數(shù)字濾波計算后,將本次濾波計算結(jié)果寫入循環(huán)緩存。
當(dāng)循環(huán)緩存的最后一個位置被寫入數(shù)字濾波計算結(jié)果時,本數(shù)據(jù)幀數(shù)據(jù)采集完成,預(yù)處理進(jìn)程在最后一個預(yù)處理任務(wù)時間片內(nèi)需要完成以下額外的工作:
1)啟動兩路DMA,由DMA將本數(shù)據(jù)幀轉(zhuǎn)移至后處理進(jìn)程的工作內(nèi)存中;
2)重置循環(huán)緩存指針,準(zhǔn)備開始寫入新數(shù)據(jù)幀;
3)將雙核DSP共享內(nèi)存內(nèi)的相位差檢測結(jié)果寫入DAC寄存器;
4)通過核間中斷向后處理進(jìn)程發(fā)送事件通知,通知其基于本數(shù)據(jù)幀進(jìn)行頻率檢測與相位差檢測任務(wù)。
1.3.2 后處理進(jìn)程
后處理進(jìn)程初始化后處于等待事件通知的狀態(tài)。當(dāng)其接收到來自預(yù)處理進(jìn)程的事件通知時,依次完成以下工作:
1)基于自適應(yīng)陷波濾波算法(ANF頻率檢測算法)對本數(shù)據(jù)幀進(jìn)行頻率檢測;
2)基于離散時間傅里葉變換算法(DTFT相位差檢測算法)或三參數(shù)正弦擬合算法(SWF3相位差檢測算法)對本數(shù)據(jù)幀進(jìn)行相位差檢測;
3)將相位差檢測結(jié)果寫入雙核DSP共享內(nèi)存;
4)重新進(jìn)入等待預(yù)處理進(jìn)程事件通知的狀態(tài)。
ANF頻率檢測算法根據(jù)被處理信號的特點(diǎn),對被處理信號進(jìn)行參數(shù)優(yōu)化,自動調(diào)節(jié)自身模型參數(shù),令誤差函數(shù)達(dá)到最小值,使陷波頻率與信號頻率相等,從而計算出信號頻率值[13-15]。DTFT相位差檢測算法依據(jù)兩路信號的離散傅里葉變換相位譜差值計算得到兩路信號基波分量間的相位差[16,17]。SWF3相位差檢測算法通過迭代,不斷逼近得出待檢測信號參數(shù)(如相位、頻率與振幅等),進(jìn)而得到兩路信號間相位差[18,19]。
為與CMF信號處理驗(yàn)證平臺精度測試結(jié)果對比,基于隨機(jī)參數(shù)信號進(jìn)行300次相位差檢測仿真測試。設(shè)定待檢測正弦信號頻率在150~180 Hz范圍內(nèi)隨機(jī)變化,信號采樣頻率為50 kHz,數(shù)據(jù)幀長度為2 000,兩路待檢測數(shù)字信號間相位差隨機(jī)范圍為-0.5°~0.5°,設(shè)定信號信噪比為40 dB。仿真結(jié)果顯示,DTFT算法相位差檢測結(jié)果平均絕對誤差為0.000 28°,SWF3算法相位差檢測結(jié)果平均絕對誤差為0.000 25°(見圖3和圖4)。
圖 3 DTFT算法相位差檢測結(jié)果Fig. 3Phase difference detection results based on DTFT algorithm
圖 4 SWF3算法相位差檢測結(jié)果Fig. 4Phase difference detection results based on SWF3 algorithm
為驗(yàn)證本文設(shè)計的基于雙核DSP的CMF并行信號處理方法實(shí)時性與精度,開發(fā)CMF信號處理驗(yàn)證平臺。驗(yàn)證平臺由主機(jī)與目標(biāo)機(jī)兩部分組成。主機(jī)為搭載NI公司PCI-6154多功能數(shù)據(jù)采集卡的臺式電腦,目標(biāo)機(jī)為搭載TMS320F28379D雙核DSP的C2000系列開發(fā)板。主機(jī)通過數(shù)據(jù)采集卡的模擬信號輸出通道為目標(biāo)機(jī)提供CMF模擬信號,并通過數(shù)據(jù)采集卡的模擬信號輸入通道采集目標(biāo)機(jī)相位差檢測結(jié)果。即主機(jī)實(shí)現(xiàn)了CMF模擬信號的輸出與相位差檢測結(jié)果的采集功能,目標(biāo)機(jī)搭載CMF并行信號處理軟件對兩路CMF模擬信號進(jìn)行相位差檢測。
主機(jī)數(shù)據(jù)采集卡模擬信號輸出通道與目標(biāo)機(jī)ADC引腳相連,目標(biāo)機(jī)DAC引腳接入主機(jī)數(shù)據(jù)采集卡模擬信號輸入通道。
驗(yàn)證平臺軟件由主機(jī)軟件與目標(biāo)機(jī)軟件兩部分組成。目標(biāo)機(jī)軟件即前文所述基于雙核DSP的CMF并行信號處理軟件。
基于Matlab Data Acquisition Toolbox開發(fā)驗(yàn)證平臺主機(jī)軟件。主機(jī)軟件匹配識別PCI-6154數(shù)據(jù)采集卡,并配置模擬信號輸入輸出通道。主機(jī)軟件依據(jù)設(shè)定的輸出頻率,通過數(shù)據(jù)采集卡模擬信號輸出通道,輸出兩路帶有相位差的正弦信號,并通過模擬信號輸入通道實(shí)時采集目標(biāo)機(jī)相位差檢測結(jié)果。
驗(yàn)證平臺主機(jī)硬件與軟件總體組成如圖5所示。
圖 5 實(shí)驗(yàn)驗(yàn)證平臺組成示意圖Fig. 5Schematic diagram of Test-bed
為了驗(yàn)證基于雙核DSP的CMF并行信號處理方法相位差檢測的實(shí)時性與精度,通過目標(biāo)機(jī)檢測主機(jī)輸出的兩路模擬正弦信號間相位差。實(shí)驗(yàn)設(shè)定主機(jī)軟件輸出的兩路模擬信號間相位差為0°~0.5°,設(shè)定目標(biāo)機(jī)軟件預(yù)處理進(jìn)程采樣頻率為50 kHz、數(shù)據(jù)幀長度為2 000(即數(shù)據(jù)幀周期為40 ms),設(shè)定DSP主頻為200 MHz。
為驗(yàn)證CMF并行信號處理方法是否可達(dá)實(shí)時性要求,在目標(biāo)機(jī)軟件中打點(diǎn)統(tǒng)計各部分任務(wù)所消耗的時間,如表1所示。
表 1 相位差檢測實(shí)時性結(jié)果Tab. 1Time consumption of phase difference detection experiment
經(jīng)統(tǒng)計,預(yù)處理進(jìn)程采集一個完整數(shù)據(jù)幀耗時40 ms,而后處理進(jìn)程完成一次對數(shù)據(jù)幀的數(shù)字信號處理耗時7.8 ms(ANF頻率檢測算法與DTFT相位差檢測算法)或13.5 ms(ANF頻率檢測算法與SWF3相位差檢測算法)。實(shí)驗(yàn)結(jié)果說明,在預(yù)處理進(jìn)程進(jìn)行數(shù)據(jù)幀采集的時間內(nèi),后處理進(jìn)程有足夠的時間完成針對上一個數(shù)據(jù)幀的全部數(shù)字信號處理任務(wù)。因此,CMF并行信號處理方法能夠以40 ms為數(shù)據(jù)幀周期,連續(xù)地對CMF模擬信號進(jìn)行相位差檢測。而CMF串行信號處理方法則相應(yīng)耗時47.8 ms或53.5 ms,才可完成一次對數(shù)據(jù)幀的數(shù)字信號處理任務(wù)。
另由實(shí)驗(yàn)統(tǒng)計結(jié)果可知,啟動DMA、發(fā)送事件通知與將相位差檢測結(jié)果寫入DAC寄存器等工作耗時小于1 μs,遠(yuǎn)小于預(yù)處理任務(wù)時間片間隔空余時間。因此,預(yù)處理進(jìn)程中最后一個預(yù)處理任務(wù)需要完成的額外工作,不影響預(yù)處理進(jìn)程的連續(xù)運(yùn)行,也即CMF模擬信號可以連續(xù)被采樣。
統(tǒng)計主機(jī)軟件收集到的目標(biāo)機(jī)相位差檢測結(jié)果,可分別得到基于DTFT相位差檢測算法和SWF3相位差檢測算法的相位差檢測精度結(jié)果(見表2)。經(jīng)計算,DTFT算法相位差檢測結(jié)果平均絕對誤差為0.000 21°,SWF3算法相位差檢測結(jié)果平均絕對誤差為0.000 18°。即基于雙核DSP的CMF并行信號處理軟件相位差檢測精度結(jié)果優(yōu)于仿真測試結(jié)果。
1)為解決CMF串行信號處理方法無法連續(xù)采樣的問題,本文基于雙核DSP設(shè)計的科氏質(zhì)量流量計并行信號處理方法,實(shí)現(xiàn)了數(shù)據(jù)采集與數(shù)字濾波計算、頻率檢測與相位差檢測任務(wù)的并行運(yùn)行,并降低了系統(tǒng)復(fù)雜度。
2)通過搭建的CMF信號處理驗(yàn)證平臺,對該方法進(jìn)行相位差檢測實(shí)時性與精度測試。實(shí)驗(yàn)結(jié)果顯示,該方法具有更好的CMF信號處理精度與實(shí)時性。
單位/度 DTFT_50 kHz SWF3_50 kHz相位差設(shè)定值 檢測值 絕對誤差相對誤差 檢測值 絕對誤差相對誤差0.0 0.000 00 0.000 00 - 0.000 10 0.000 10 -0.1 0.09950 0.000 50 0.50% 0.100 20 0.000 20 0.20%0.2 0.200 00 0.000 00 0.00% 0.200 10 0.000 10 0.05%0.3 0.299 80 0.000 20 0.07% 0.300 00 0.000 00 0.00%0.4 0.400 20 0.000 20 0.05% 0.400 00 0.000 00 0.00%0.5 0.500 30 0.000 30 0.06% 0.499 30 0.000 70 0.14%