胡國棟,馮正平,2,畢安元
(1. 上海交通大學 船舶海洋與建筑工程學院,上海 200240;2. 高新船舶與深海開發裝備協同創新中心 船海協創中心,上海 200240)
科氏質量流量計(CMF)直接高精度地測量介質質量流量與密度,被廣泛應用于海洋石油等領域[1],如超大型油輪(VLCC)的油料加裝過程。介質密度信息既可作為船用燃油等級劃分依據[2],又可作為混合流體中目標液體所占比例的計算依據[3]。BZ19-4油田海上石油平臺利用CMF同時測量分離器水相出口的質量流量與水中含油率,降低了分析儀器費用[3]。并且,CMF質量流量測量過程不易受環境溫度、介質密度、介質流態的影響,在海洋石油等氣液兩相流測量應用中具有獨特的優勢。2008年,英國國家工程實驗室與牛津大學Henry團隊合作,研制出直徑200mm科氏質量流量計。同年,該團隊針對新加坡某集裝箱船進行現場船用燃油加注測試。測試結果顯示,該流量計實際質量流量測量誤差低于1%[4]。
科氏質量流量計通過檢測兩路檢測線圈振動信號之間的相位差,得到介質的質量流量信息[5]。目前,數字式CMF實時信號處理方法主要有2種:CMF并行信號處理方法與CMF串行信號處理方法。
21世紀初,牛津大學Henry團隊基于自確認傳感器模型[6]研制出數字化科氏質量流量計系統[7-8]。該系統通過采用“FPGA+微處理器”的并行處理架構,將CMF信號處理與控制任務分布運行在2個處理模塊中。其中,FPGA模塊完成信號采集與輸出任務,微處理器完成流量檢測、密度檢測與流量管振動參數計算等任務[9]。需要指出的是,除了硬件設計層面的復雜性,該系統需要采用VxWorks實時操作系統進行進程調度,軟件復雜程度也較高。
另一方面,數字信號處理器(DSP)因采用哈佛架構,具有專門的硬件乘法器、特殊的數字信號處理指令等優勢,而被廣泛應用于數字信號處理領域[10]。徐科軍團隊[11-12]基于單核DSP設計的CMF串行信號處理與控制系統,在一個周期內完成數據采集與數字濾波計算、頻率檢測與相位差檢測、數字驅動控制參數計算等任務。該系統能夠取得較高的相位差檢測精度,但由于多任務串行運行在同一個周期內,系統不具有良好的實時性;并且在DSP執行相位差檢測任務時,系統無法采集CMF模擬信號,造成數據浪費。
為了解決上述CMF串行信號處理方法無法同時進行數據采集與相位差檢測工作的問題,并考慮到DSP在數字信號處理方面的獨特優勢,本文基于雙核DSP設計了CMF并行信號處理方法,旨在提升CMF信號處理實時性,降低系統復雜度。基于設計的CMF信號處理驗證平臺,對該方法進行相位差檢測實時性與精度驗證,并將實驗驗證結果與仿真測試結果對比。
典型的CMF信號處理任務可分為兩類:預處理任務(數據采集與數字濾波計算)與后處理任務(頻率檢測與相位差檢測)。預處理任務(Sample-based Task)依據采樣頻率不斷反復地被執行;當采樣點數量達到數據幀長度時,后處理任務(Frame-based Task)被執行一次。在一個數據幀周期內,預處理任務與后處理任務是互斥的。數據幀周期開始時,系統執行預處理任務而阻塞了后處理任務。當采樣點數量到達數據幀長度時,系統執行后處理任務而阻塞預處理任務。
在執行預處理任務的時間內,CMF輸出的模擬信號無法被采集,因此,CMF串行信號處理方法存在信號利用率低、系統實時性差的明顯缺點。
為解決上述問題,將CMF信號處理任務重組,并行運行在分布式處理器中,如圖1所示。

圖 1 CMF并行信號處理流程圖Fig. 1Parallel CMF signal processing flowchart
主處理器中運行的預處理進程依據采樣頻率,不斷反復執行預處理任務,即數據采集與數字濾波計算任務;當采樣點數量達到數據幀長度時,預處理進程向后處理進程發送事件通知。
從處理器中運行的后處理進程收到來自預處理進程的事件通知時,方可開始針對本數據幀進行頻率檢測與相位差檢測等后處理任務。
需要指出的是,在預處理進程中最后一個預處理任務時間片內需要額外完成發送事件通知與將相位差檢測結果輸出等工作,因此比其他預處理任務時間片稍長(見圖2)。另外,從處理時序中可看出,后處理進程比預處理進程滯后一個數據幀周期。由于CMF信號處理數據幀周期通常很短(典型值為40 ms左右),因此完全可以認為后處理進程輸出的處理結果是實時的。

圖 2 CMF并行信號處理時序圖Fig. 2Parallel CMF signal processing timeline
基于TI公司TMS320F28379D型號MCU開發CMF并行信號處理軟件。該MCU集成了2個32位DSP核(CPU01與CPU02),集成了2個獨立于CPU之外的浮點運算協處理器(CLA)、2個六通道DMA、核間通信模塊(IPC)與128KB共享內存。預處理進程與后處理進程分布并行運行在雙核DSP中。
1.3.1 預處理進程
預處理進程基于定時器中斷,等時間間隔地完成數據采集與數字濾波計算任務。
在每個定時器中斷處理程序中:
1)使能2個ADC,分別對兩路CMF模擬信號進行一次采樣,并將采樣數據傳遞給CLA1;
2)CLA1完成數字濾波計算后,將本次濾波計算結果寫入循環緩存。
當循環緩存的最后一個位置被寫入數字濾波計算結果時,本數據幀數據采集完成,預處理進程在最后一個預處理任務時間片內需要完成以下額外的工作:
1)啟動兩路DMA,由DMA將本數據幀轉移至后處理進程的工作內存中;
2)重置循環緩存指針,準備開始寫入新數據幀;
3)將雙核DSP共享內存內的相位差檢測結果寫入DAC寄存器;
4)通過核間中斷向后處理進程發送事件通知,通知其基于本數據幀進行頻率檢測與相位差檢測任務。
1.3.2 后處理進程
后處理進程初始化后處于等待事件通知的狀態。當其接收到來自預處理進程的事件通知時,依次完成以下工作:
1)基于自適應陷波濾波算法(ANF頻率檢測算法)對本數據幀進行頻率檢測;
2)基于離散時間傅里葉變換算法(DTFT相位差檢測算法)或三參數正弦擬合算法(SWF3相位差檢測算法)對本數據幀進行相位差檢測;
3)將相位差檢測結果寫入雙核DSP共享內存;
4)重新進入等待預處理進程事件通知的狀態。
ANF頻率檢測算法根據被處理信號的特點,對被處理信號進行參數優化,自動調節自身模型參數,令誤差函數達到最小值,使陷波頻率與信號頻率相等,從而計算出信號頻率值[13-15]。DTFT相位差檢測算法依據兩路信號的離散傅里葉變換相位譜差值計算得到兩路信號基波分量間的相位差[16,17]。SWF3相位差檢測算法通過迭代,不斷逼近得出待檢測信號參數(如相位、頻率與振幅等),進而得到兩路信號間相位差[18,19]。
為與CMF信號處理驗證平臺精度測試結果對比,基于隨機參數信號進行300次相位差檢測仿真測試。設定待檢測正弦信號頻率在150~180 Hz范圍內隨機變化,信號采樣頻率為50 kHz,數據幀長度為2 000,兩路待檢測數字信號間相位差隨機范圍為-0.5°~0.5°,設定信號信噪比為40 dB。仿真結果顯示,DTFT算法相位差檢測結果平均絕對誤差為0.000 28°,SWF3算法相位差檢測結果平均絕對誤差為0.000 25°(見圖3和圖4)。

圖 3 DTFT算法相位差檢測結果Fig. 3Phase difference detection results based on DTFT algorithm

圖 4 SWF3算法相位差檢測結果Fig. 4Phase difference detection results based on SWF3 algorithm
為驗證本文設計的基于雙核DSP的CMF并行信號處理方法實時性與精度,開發CMF信號處理驗證平臺。驗證平臺由主機與目標機兩部分組成。主機為搭載NI公司PCI-6154多功能數據采集卡的臺式電腦,目標機為搭載TMS320F28379D雙核DSP的C2000系列開發板。主機通過數據采集卡的模擬信號輸出通道為目標機提供CMF模擬信號,并通過數據采集卡的模擬信號輸入通道采集目標機相位差檢測結果。即主機實現了CMF模擬信號的輸出與相位差檢測結果的采集功能,目標機搭載CMF并行信號處理軟件對兩路CMF模擬信號進行相位差檢測。
主機數據采集卡模擬信號輸出通道與目標機ADC引腳相連,目標機DAC引腳接入主機數據采集卡模擬信號輸入通道。
驗證平臺軟件由主機軟件與目標機軟件兩部分組成。目標機軟件即前文所述基于雙核DSP的CMF并行信號處理軟件。
基于Matlab Data Acquisition Toolbox開發驗證平臺主機軟件。主機軟件匹配識別PCI-6154數據采集卡,并配置模擬信號輸入輸出通道。主機軟件依據設定的輸出頻率,通過數據采集卡模擬信號輸出通道,輸出兩路帶有相位差的正弦信號,并通過模擬信號輸入通道實時采集目標機相位差檢測結果。
驗證平臺主機硬件與軟件總體組成如圖5所示。

圖 5 實驗驗證平臺組成示意圖Fig. 5Schematic diagram of Test-bed
為了驗證基于雙核DSP的CMF并行信號處理方法相位差檢測的實時性與精度,通過目標機檢測主機輸出的兩路模擬正弦信號間相位差。實驗設定主機軟件輸出的兩路模擬信號間相位差為0°~0.5°,設定目標機軟件預處理進程采樣頻率為50 kHz、數據幀長度為2 000(即數據幀周期為40 ms),設定DSP主頻為200 MHz。
為驗證CMF并行信號處理方法是否可達實時性要求,在目標機軟件中打點統計各部分任務所消耗的時間,如表1所示。

表 1 相位差檢測實時性結果Tab. 1Time consumption of phase difference detection experiment
經統計,預處理進程采集一個完整數據幀耗時40 ms,而后處理進程完成一次對數據幀的數字信號處理耗時7.8 ms(ANF頻率檢測算法與DTFT相位差檢測算法)或13.5 ms(ANF頻率檢測算法與SWF3相位差檢測算法)。實驗結果說明,在預處理進程進行數據幀采集的時間內,后處理進程有足夠的時間完成針對上一個數據幀的全部數字信號處理任務。因此,CMF并行信號處理方法能夠以40 ms為數據幀周期,連續地對CMF模擬信號進行相位差檢測。而CMF串行信號處理方法則相應耗時47.8 ms或53.5 ms,才可完成一次對數據幀的數字信號處理任務。
另由實驗統計結果可知,啟動DMA、發送事件通知與將相位差檢測結果寫入DAC寄存器等工作耗時小于1 μs,遠小于預處理任務時間片間隔空余時間。因此,預處理進程中最后一個預處理任務需要完成的額外工作,不影響預處理進程的連續運行,也即CMF模擬信號可以連續被采樣。
統計主機軟件收集到的目標機相位差檢測結果,可分別得到基于DTFT相位差檢測算法和SWF3相位差檢測算法的相位差檢測精度結果(見表2)。經計算,DTFT算法相位差檢測結果平均絕對誤差為0.000 21°,SWF3算法相位差檢測結果平均絕對誤差為0.000 18°。即基于雙核DSP的CMF并行信號處理軟件相位差檢測精度結果優于仿真測試結果。
1)為解決CMF串行信號處理方法無法連續采樣的問題,本文基于雙核DSP設計的科氏質量流量計并行信號處理方法,實現了數據采集與數字濾波計算、頻率檢測與相位差檢測任務的并行運行,并降低了系統復雜度。
2)通過搭建的CMF信號處理驗證平臺,對該方法進行相位差檢測實時性與精度測試。實驗結果顯示,該方法具有更好的CMF信號處理精度與實時性。

單位/度 DTFT_50 kHz SWF3_50 kHz相位差設定值 檢測值 絕對誤差相對誤差 檢測值 絕對誤差相對誤差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%