鄭威,王志,冉祥濤,惠力,劉敏,楊立
(山東省科學院海洋儀器儀表研究所,山東省海洋環(huán)境監(jiān)測技術(shù)重點實驗室,山東 青島 266001)
基于Delphi和MATLAB混合編程的波浪估計算法實現(xiàn)
鄭威,王志,冉祥濤,惠力,劉敏,楊立
(山東省科學院海洋儀器儀表研究所,山東省海洋環(huán)境監(jiān)測技術(shù)重點實驗室,山東青島266001)
摘要:針對在Delphi7下編寫波浪估計算法效率低且不易實現(xiàn)的問題,本文采用基于Delphi7和MATLAB7.0混合編程的方法,實現(xiàn)了上位機軟件的波浪估計能力。該方法簡單,開發(fā)周期短。將上位機軟件估計結(jié)果與Nortek公司商用軟件Quickwave對比,結(jié)果表明本文的上位機軟件估計結(jié)果準確,采用混合編程方法可準確地實現(xiàn)ADCP上位機軟件中波浪估計的功能。
關(guān)鍵詞:ADCP;方向譜估計;上位機;Delphi;MATLAB
聲學多普勒流速剖面儀(acousticdopplercurrentprofiler,ADCP)利用聲學多普勒原理,可以獲取不同深度海流的流速和流向,在全世界范圍的海洋、湖泊和河流等地域中廣泛應用。近十年來,一些海洋學者開始利用ADCP進行海洋表面波浪的估計,其基本原理類似于傳感器陣列的測波向技術(shù),即認為ADCP沿著波束方向上的測點相當于一個獨立傳感器,多個測點組成的陣列具備了測量波向的能力,這種方法經(jīng)過了Terray等[1]的驗證,證明JANNUS配置的ADCP利用3層12個測點陣列可以精確估計波浪波向。到目前為止,美國RDI公司、Sontek公司以及挪威Nortek公司都相繼推出了具備波浪和海流測量能力的ADCP設備,例如RDI公司“駿馬”系列新型ADCP[2]、Nortek公司“浪龍”系列新型ADCP[3]等。多名海洋學者利用商用ADCP與其他儀器進行了比測試驗,例如Jeans[4]、Work[5]利用ADCP與波浪騎士進行了波浪估計對比,結(jié)果一致證明ADCP的波浪測量是準確的。
波浪方向譜估計算法發(fā)展到目前為止,在海洋工程領(lǐng)域內(nèi)最常用的是最大似然算法(maximumlikelihoodmethod,MLM),其計算速度快、計算結(jié)果穩(wěn)定,且具有一定計算精度,RDI的商用軟件WAVESMON和Nortek的Quickwave都使用最大似然算法。傅里葉級數(shù)算法同樣在實測中應用較多,該算法計算簡單,但估計方向分布比實際分布略寬,主要應用于測點較少時的情況(如測點為3個)。貝葉斯算法是另外一種常用的算法,估計精度高,但一般要求測點個數(shù)不少于4個,計算復雜、計算時間長,主要應用于實驗室后續(xù)的數(shù)據(jù)分析[6]。
我國的海洋儀器產(chǎn)品研發(fā)距離國外先進水平還有一段距離,目前海洋儀器大多依賴進口,80%以上國內(nèi)使用的ADCP設備是國外產(chǎn)品。國內(nèi)的相關(guān)院所一直致力于ADCP方面的研究,到目前為止,中船重工715所的相控陣ADCP(PAADCP)是受到認可的唯一商用產(chǎn)品,但PAADCP主要用來測流,并不具備波浪的觀測能力。國家海洋技術(shù)中心在國家863計劃下進行了ADCP方面的研究,并組裝了樣機進行試驗,取得了有益成果[7-8]。山東省科學院海洋儀器儀表研究所近年來一直從事ADCP的理論研究及技術(shù)研發(fā)工作,目前在換能器陣、機械和軟件設計等方面取得了進展。本文主要闡述ADCP研發(fā)中上位機軟件的波浪估計實現(xiàn)技術(shù)。目前界面開發(fā)軟件很多,常用的有Delphi,C++Builder等,這些開發(fā)工具在界面設計上效率很高,但缺點是科學計算能力較低,方向譜估計算法在Delphi7下編程效率低且不易實現(xiàn)。本文采用Delphi7和MATLAB7.0混合編程的方法來實現(xiàn)方向譜估計算法。
ADCP由水下測量和陸上處理系統(tǒng)兩部分組成(圖1),水下測量模塊主要由聲學多普勒換能器陣、壓力傳感器、電子羅盤、傾斜傳感器、溫度傳感器、數(shù)據(jù)采集處理器、固態(tài)存儲器、電池、水密機箱、小型水下鎧裝電纜和水密接頭組成,其中水下測量系統(tǒng)的4個聲學多普勒換能器按一定方位角安裝在一個殼體內(nèi)組成換能器陣,其中3個波束的傾角為30°,波束之間在水平面投影的夾角為120°,另一個換能器豎直向上(圖2)。
圖1 ADCP的水下測量系統(tǒng)和陸上處理系統(tǒng)Fig.1 Underwatermeasuring system and onshore processing system of ADCP
圖2 聲學換能器陣設計Fig.2 Design of acoustic transducer array
水下測量系統(tǒng)的功能是:(1)進行數(shù)據(jù)采集及測量數(shù)據(jù)的存儲;(2)通過聲學多普勒回波計算分層海流的流速和流向;(3)將采集數(shù)據(jù)及海流數(shù)據(jù)打包,而后發(fā)送到陸上處理系統(tǒng)。
陸上處理系統(tǒng)主要由接收模塊和上位機軟件組成,其主要功能是:(1)接收水下測量系統(tǒng)上傳的數(shù)據(jù)包,解析數(shù)據(jù)包并分析數(shù)據(jù),顯示及存儲海流數(shù)據(jù);(2)通過上位機軟件估計波浪的各種特征值,包括有義波高、峰值周期、峰值方向和主波向,顯示并儲存波浪數(shù)據(jù);(3)具備歷史數(shù)據(jù)查詢、歷史曲線顯示功能。
構(gòu)成上位機軟件的主要功能模塊有通訊配置、實時數(shù)據(jù)顯示、歷史數(shù)據(jù)查詢、歷史曲線顯示及波浪計算模塊(圖3)。其中通訊配置模塊的功能是實現(xiàn)水下測量系統(tǒng)和陸上主機之間的串口數(shù)據(jù)傳遞,采用小型鎧裝電纜連接保證數(shù)據(jù)傳遞的實現(xiàn);實時數(shù)據(jù)顯示模塊主要實現(xiàn)海流及波浪數(shù)據(jù)的實時顯示;歷史數(shù)據(jù)查詢模塊及歷史數(shù)據(jù)曲線模塊的功能是保證用戶可以查詢以往記錄的海流及波浪數(shù)據(jù),并進行數(shù)值顯示或曲線顯示;波浪計算模塊是上位機軟件的重要模塊,主要實現(xiàn)每個小時的波浪特征值計算。
圖3 坐底式波浪儀上位機軟件構(gòu)成Fig.3 Upper-computer software composition of upward-looking ADCP
圖4 上位機軟件計算流程Fig.4 Calculation flowchart of upper-computer software
上位機軟件的計算流程見圖4,水下系統(tǒng)每分鐘定時通過串口向陸上上位機軟件發(fā)送數(shù)據(jù)包,數(shù)據(jù)包中包含了壓力、溫度、姿態(tài)、羅經(jīng)和流速數(shù)據(jù)。上位機判斷串口是否接收到下位機的數(shù)據(jù),確認接收到后,通過異或校驗判斷數(shù)據(jù)是否正確,如果校驗位滿足要求,解析數(shù)據(jù),并實時顯示流速及存儲。上位機軟件每小時計算波浪1次,利用每小時的前49min的海流及各種傳感器數(shù)據(jù)計算1h內(nèi)波浪的特征值,并在實時界面內(nèi)顯示。同時上位機軟件具備歷史數(shù)據(jù)查詢及歷史曲線顯示功能,通過對數(shù)據(jù)庫中的數(shù)據(jù)進行取出操作來實現(xiàn)。
3.1波浪方向譜估計基本原理
假定波浪振幅很小且由多數(shù)組成波迭加而成,可推導出任意兩個波浪特性間的互譜等于相應波浪特性與波面間的傳遞函數(shù)的乘積的傅里葉變換,即
方向譜S(f,θ)的表達形式分解為頻譜和方向分布函數(shù)的乘積
式中,θ為組成波的方向,SH(f)為海浪頻譜,D(f,θ)代表頻點f的方向分布函數(shù),方向譜S(f,θ)滿足
由公式(1)可知,公式左側(cè)的互譜是已知量;當測量物理量選定后,不同物理量對應的傳遞函數(shù)H通過線性波浪理論是已知的,公式右側(cè)的方向譜S(f,θ)是未知的。公式(3)求逆運算即是方向譜求解過程,求逆過程中解值并不是唯一的,方向譜估計算法也存在多種,比如最大似然算法、貝葉斯算法,以及最大熵算法等[9]。
適用于波束陣列的最大似然法(MLM)基本思想是將方向譜估計值表示為交叉譜的線性疊加,并將此估計值最小化來接近真實值。最大似然算法的方向譜估計值為:
其中,H代表共軛轉(zhuǎn)置。
傅里葉級數(shù)算法是將方向譜表示為傅里葉級數(shù)展開的形式,通過對于展開系數(shù)的求解來表示方向譜。Nortek的Quickwave軟件使用波面高度(s)、水平方向上的橫向和縱向速度(u,v)采用傅里葉級數(shù)算法計算方向譜,只能求解到n=2時的傅里葉系數(shù),方向譜估計值可表示為
3.2方向譜估計的實現(xiàn)步驟
采用Delphi7和MATLAB7.0混合編程的方法來實現(xiàn)方向譜估計算法,分別利用到Delphi7的界面設計能力及MATLAB7.0的科學計算能力,實現(xiàn)優(yōu)勢互補。該方法在上位機軟件設計中有著獨特的優(yōu)勢,主要體現(xiàn)在能夠保證上位機軟件準確地實現(xiàn)波浪估計能力,同時可以有效降低軟件的實現(xiàn)難度,縮短軟件的開發(fā)周期[10-15],具體的實現(xiàn)步驟見圖5。
第一步,在MATLAB7.0下編寫函數(shù)。編寫的波浪估計函數(shù)只能是函數(shù)文件,函數(shù)的輸入值為一個小時的測流速度值,以及所選速度測點所在深度、水深、姿態(tài)信息和羅經(jīng)數(shù)據(jù);函數(shù)的輸出值為一個小時內(nèi)波浪的特征值,包括有義波高、峰值周期、峰值方向和主浪向。
第二步,在MATLAB7.0下的編寫函數(shù)需要通過ADCP歷史資料的驗證。將編寫函數(shù)的波浪估計結(jié)果與ADCP商用軟件的波浪估計結(jié)果進行對比,對比結(jié)果的一致性可以驗證編寫函數(shù)的正確性。
圖5 基于 Delphi和MATLAB混合編程的方向譜估計步驟Fig.5 Delphi andmATLABmixed programming based wave directional spectrum estimation
圖6mATLAB 7.0和Delphi 7混合編程步驟Fig.6mATLAB 7.0 and Delphi 7mixed programming steps
第三步,利用MATLAB7.0自帶的comtool工具新建工程并完成工程設置;在Mfiles添加編寫好的函數(shù),點擊build菜單下的COMobject即開始dll組件生成過程,當該生成過程成功后,會在工程所在目錄下的distrib文件夾下生成dll文件,可以點擊component菜單下的packagecomponent,點擊create會將dll等文件進行打包,生成exe程序。見圖6。
第四步,在Delphi7軟件所在電腦上,運行上述exe程序即可完成dll文件的注冊,而后選擇Delphi7的project目錄下importtypelibrary選中所用dll文件,如圖6,點擊install即可安裝dll,安裝的dll控件在activex組件欄中,選擇該組件即可在Delphi7軟件中調(diào)用波浪估計的dll組件,最終實現(xiàn)上位機的波浪估計功能。
為了驗證上位機軟件的估計效果,本文采用美國NCCOOS(northcarolinacoastaloceanobservingsystem)項目的jpier試驗點Nortek“浪龍”數(shù)據(jù),選取數(shù)據(jù)的時間是2008年4月18日到20日。通過模擬串口向上位機發(fā)送一組數(shù)據(jù),數(shù)據(jù)包含有海流數(shù)據(jù)及各種其他傳感器數(shù)據(jù)。圖7是坐底式波浪儀的實時數(shù)據(jù)接收界面,主要包含海流部分和波浪部分,只顯示了深度為6.58m的一層海流,并顯示了有義波高、峰值周期、峰值方向和主波向計算值,分別采用了IMLM(迭代最大似然算法)和SUV(傅里葉級數(shù)展開算法),兩種算法的估計結(jié)果是一致的。
圖7 實時接收界面Fig.7 Real-time receiving interface
將本文中上位機軟件處理結(jié)果(IMLM算法)和Nortek公司商用波浪處理軟件Quickwave處理結(jié)果進行對比,結(jié)果表明上位機軟件與Quickwave軟件計算結(jié)果是一致的,波浪能量主要集中在0.1Hz,波浪主浪向在240°左右(圖8)。圖9顯示了2008年4月18日03時到4月20日03時的有義波高及平均波向數(shù)據(jù),分別利用本文上位機軟件以及Quickwave對于原始數(shù)據(jù)進行分析,二者之間吻合較好,有義波高從1.7m下降到0.6m左右,平均波向穩(wěn)定在240°左右,驗證了本文上位機軟件的波浪估計結(jié)果的正確性。
圖8 2008年4月19日00時計算結(jié)果對比Fig.8 Calculation result comparison at 00 of April 19,2008
圖9 2008年4月18日03時到20日03時數(shù)據(jù)對比Fig.9 Data comparison from three of April 18 to three of April 20,2008
在以Delphi7作為平臺的ADCP上位機軟件研發(fā)中,本文采用基于Delphi7和MATLAB7.0混合編程的方法,有效地實現(xiàn)了上位機軟件中波浪估計的功能,這種方法易于實現(xiàn),開發(fā)周期短。通過與Nortek公司商用Quickwave軟件對比,驗證了該上位機軟件中波浪估計的準確性。本文給出的混合編程方法有效地實現(xiàn)了上位機軟件中的波浪估計功能,該方法同樣適用于其他復雜算法在上位機軟件上的實現(xiàn),具有很強的工程實用價值。
在本文的技術(shù)方案中,每秒計算一次海流測量值,海流值的計算放在下位機中進行,可保證計算的實時性;每小時計算一次波浪值,波浪計算放在上位機中,主要是考慮到上位機軟件編程方法實現(xiàn)波浪估計相對容易,在MATLAB環(huán)境下存在多種庫函數(shù),節(jié)省了大量的子函數(shù)開發(fā)時間,軟件開發(fā)周期短。通過實際計算觀察,本文上位機軟件中的波浪計算一次需要8~10s時間(跟計算機硬件配置有關(guān)),完全能滿足技術(shù)方案中對于海流及波浪的實時觀測要求。本技術(shù)方案只適用于ADCP有纜觀測模式,當ADCP為自容式時,本文的方案不再滿足要求,現(xiàn)有國外商用ADCP產(chǎn)品大多將海流及波浪計算同時放在下位機中實現(xiàn),這種方式更為先進,能夠同時滿足有纜在線觀測方式和自容式的ADCP??紤]到儀器的實用性,波浪的計算必然需要向下位機移植,只需要在程序部分實現(xiàn)波浪估計的功能,不需額外增加硬件成本,但波浪估計編程在下位機中實現(xiàn)無疑要更加復雜,需要后續(xù)進行深入研究。
參考文獻:
[1]TERRAYEA,BRUMLEYBH,STRONGBS.Measuringwavesandcurrentswithanupward-lookingADCP[M]//ProceedingsoftheIEEESixthWorkingConferenceonCurrentmeasurement.IEEE,1999:66-71.
[2]BRUMLEYBH,TERRAYEA,STRONGBS.Systemandmethodformeasuringwavedirectionalspectrumandwave height:US,6282151[P].2001-08-28.
[3]LOHRMANNATLE,PEDERSEN,TORSTEINKanstad.Systemandmethodfordeterminingdirectionalandnon-directionalfluidwaveandcurrentmeasurements:US,7613072[P].2009-11-03.
[4]JEANSG,PRIMROSEC,DESCUSSEN,etal.AcomparisonbetweendirectionalwavemeasurementsfromtheRDIworkhorsewithwavesandthedatawelldirectionalwaverider[C]//ProceedingoftheIEEE/OESseventhworkingconferenceoncurrentmearmenttechnology.IEEE,2003.
[5]WORKPA.Nearshoredirectionalwavemeasurementsbysurface-followingbuoyandacousticDopplercurrentprofiler[J].OceanEngineering,2008,35(8/9):727-737.
[6]李晨,吳建波,高超,等.用于多普勒流速剖面儀測波浪的方向譜反演算法研究[J].電子與信息學報,2012,34(10):2482-2488.
[7]ADCP課題組.坐底式波流測量儀[J].海洋技術(shù),2001,20(1):88-92.
[8]張道平,梁婕.坐底式聲學流速測量儀監(jiān)測波向[EB/OL].[2015-02-25].http://cpfd.cnki.com.cn/Article/CPFDTOTAL-ZGSU200110001068.htm.
[9]HERBERSTHC,LENTZSJ.Observingdirectionalpropertiesofoceanswellwithanacousticdopplercurrentprofiler(ADCP)[J].JournalofAtmosphericandoceanictechnology,2010,27(1):210-225.
[10]姜銀方,陳建希,李璐娜.基于COM的Delphi和Matlab接口編程研究[J].計算機應用與軟件,2008,25(2):31-34.
[11]吳小莉,丁維明,程力.Delphi動態(tài)調(diào)用MatlabCOM組件實現(xiàn)二者混合編程[J].工業(yè)控制計算機,2011,24(3):1-3.
[12]任稟潔,王琦,李云璋,陳博.Delphi與Matlab混合編程實現(xiàn)對混凝土壩揚壓力灰色模型預測[J].水利與建筑工程學報,2014,12(5):147-149.
[13]王建勛,呂群芳,劉會金.基于Delphi和Matlab混合編程的配電網(wǎng)無功優(yōu)化軟件設計[J].電力自動化設備,2011,31(4):112-115.
[14]向培林,彭小東,張海江,汪洋.Delphi和Matlab的混合編程在水輪機特性曲線處理中的應用[J].水電與新能源,2011,10(3):44-48.
[15]崔園.MATLAB與DELPHI混合編程的實現(xiàn)[J].計算機與數(shù)字工程,2011,39(9):176-178.
DelphiandmATLABmixedprogrammingbasedwaveestimationalgorithm
ZHENGWei,WANGZhi,RANXiang-tao,HUILi,LIUmin,YANGLi
(ShandongProvincialKeyLaboratoryofOceanEnvironmentalmonitoringTechnology,InstituteofOceanographicInstrumentation,ShandongAcademyofSciences,Qingdao266001,China)
Abstract:InviewoflowefficiencyandimplementationdifficultyofDelphi7basedwaveestimationalgorithm,werealizewaveestimationcapabilityofuppercomputersoftwarewithDelphi7andmATLAB7.0mixedprogramming.Themethodissimpleandhasshortdevelopmentperiod.Wealsocomparecalculationresultbetweenupper-computersoftwareandNortekcompanycommercialsoftwareQuickwave.Resultsshowthatwaveestimationresultofupper-computersoftwareisaccurate.Thepresentedmixedprogrammingmethodcaneffectivelyestimatewavefunctionalityofupper-computersoftware.
Keywords:ADCP;wavedirectionalspectrumestimation;upper-computer;Delphi;MATLAB
中圖分類號:TP312
文獻標識碼:A
文章編號:1002-4026(2016)01-0007-07
DOI:10.3976/j.issn.1002-4026.2016.01.002
收稿日期:2015-07-16
基金項目:海洋公益性行業(yè)科研專項(201205039-2,201505007-3);山東省自主創(chuàng)新專項(2013CXC80101);青島市市南區(qū)發(fā)展基金(2013-12-001-XX);山東省科學院青年基金(2014QN037);山東省自然科學基金(ZR2015YL022)
作者簡介:鄭威(1983-),男,副研究員,博士,研究方向為ADCP波流測量研究。Email:honestzheng123@163.com