李慶濱,熊木地
(大連海事大學(xué)信息科學(xué)技術(shù)學(xué)院,遼寧大連 116026)
對我國內(nèi)河航道通航船舶進行實時準確的船舶吃水檢測一直是困擾通航管理部門的一大難題,尤其是在重要航道,超吃水行為嚴重威脅航道安全[1-2]。目前常用的吃水檢測方法均有一定的弊端,如:基于圖像處理技術(shù)方法的過于依賴船舶自身水尺的準確性[3];超聲波測距陣列法安裝、檢修繁瑣[4];用于船閘或升船機的超聲波檢測法由于發(fā)射和接收兩端的同步問題[5],無法實現(xiàn)寬航道的吃水檢測。
在較寬的航道中,考慮到通航船舶的安全性,無法利用電纜傳輸控制信號使超聲波發(fā)射陣列和超聲波接收陣列無法同步工作。本文設(shè)計一種基于ARM+FPGA的通航船舶檢測系統(tǒng),提出利用水下超聲波傳遞控制信息使得超聲波發(fā)射陣列與超聲波接收陣列同步工作,很好的解決了上述問題。
上位機通過ARM控制FPGA進行超聲波發(fā)射陣列與超聲波接收陣列的同步工作、超聲波接收陣列傳感器模擬量采集、數(shù)據(jù)整合計算;利用ARM進行水位計深的采集、數(shù)據(jù)融合、任務(wù)調(diào)度以及數(shù)據(jù)傳輸。
超聲波接收陣列端系統(tǒng)結(jié)構(gòu)圖如圖1所示,系統(tǒng)由一個ARM(STM32F103)作為主處理器與兩個FPGA(Spartan6)作為從處理器,若需要對更多超聲波接收傳感器進行采集,則可以串聯(lián)更多從處理器和A/D采集電路。
圖1 超聲波接收陣列端系統(tǒng)結(jié)構(gòu)圖
超聲波發(fā)射陣列端系統(tǒng)結(jié)構(gòu)圖如圖2所示,系統(tǒng)由一個FPGA(Spartan6)作為主控制器,可以滿足數(shù)十路超聲波傳感器的發(fā)射驅(qū)動。
圖2 超聲波發(fā)射陣列端系統(tǒng)結(jié)構(gòu)圖
工作流程如圖3所示,系統(tǒng)中ARM根據(jù)上位機發(fā)送來的指令,同時發(fā)送給水位計采集電路對水位計的采集命令和FPGA1的工作命令。水位計收到采集命令后開始對實時水位進行采集;FPGA1接收到工作命令后驅(qū)動超聲波接收陣列一側(cè)末端專用于發(fā)射同步超聲波脈沖信號的超聲波發(fā)射傳感器,同時根據(jù)兩側(cè)傳感器陣列的間距設(shè)置延時,延時后使能各個A/D采集電路對超聲波接收傳感器陣列進行A/D采集,采集得到的信號值保存到FPGA的內(nèi)部雙口RAM中,當FPGA1完成12路的A/D采集后,將數(shù)據(jù)融為一幀通過串口發(fā)送給ARM模塊,同時向FPGA2發(fā)送工作命令;當FPGA2接收到工作命令后,開始對A/D采集電路13到24使能,同樣將采集后的信號送入FPGA2的雙口RAM中,當FPGA2完成12路的A/D采集后同樣通過串口發(fā)送給ARM模塊,并發(fā)送結(jié)束命令。FPGA3控制超聲波發(fā)射陣列一側(cè)末端專用于檢測同步超聲波脈沖信號的超聲波接收傳感器進行循環(huán)檢測,當檢測到同步超聲波脈沖后,F(xiàn)PGA3驅(qū)動超聲波發(fā)射陣列依次發(fā)射超聲波。ARM模塊接收到FPGA2發(fā)送來的結(jié)束命令后,對數(shù)據(jù)進行初步處理并融合水位計采集到的水位信息發(fā)送給上位機,做吃水水量檢測計算。
圖3 系統(tǒng)流程圖
為了解決寬航道通航船舶吃水檢測的難題,采用在檢測裝置的末端安裝專門用于發(fā)射和接收的超聲波同步脈沖的傳感器,使整個系統(tǒng)的發(fā)射與接收兩部分同步工作,進而使得吃水檢測裝置的測量值更加準確。
圖4為超聲波發(fā)射與接收的同步工作系統(tǒng)圖。
圖4 超聲波同步工作系統(tǒng)圖
為了準確獲得船舶對超聲波傳輸路徑的遮擋情況,超聲波接收傳感器陣列中需要多個超聲波接收傳感器進行判斷。結(jié)合傳感器的尺寸、超聲波衍射效應(yīng)[6-7]、測量精度等原因,超聲波接收陣列中每隔9 cm需要安裝一個超聲波接收傳感器。若對吃水量變化在1.5~3.5 m的不同船舶進行吃水測量,則至少需要24個傳感器。同理,相對應(yīng)的超聲波發(fā)射陣列也需要等間隔安裝等量的傳感器。
面對多通道的A/D采集,同時減少通道間的干擾,選用AD9203芯片進行A/D采集電路的設(shè)計。AD9203是單通道高速A/D轉(zhuǎn)換器,其采集速度可達40MSPS,采集精度為10 bit。它采用多級差分流水線架構(gòu),在整個工作溫度范圍內(nèi)保證無失碼。因選用的超聲波傳感器工作在500 kHz的頻率下,故AD9203可以滿足采集要求。AD9203正常工作時需要向CLK引腳提供工作時鐘,并可以根據(jù)工作時鐘調(diào)節(jié)工作頻率,同時需要向STBY、3-STATE等引腳提供控制信號[8]。但AD9203的輸入阻抗比較小,在AD9203輸入前端添加了一個電壓跟隨器,起到阻抗匹配的作用,使整個電路的輸入阻抗較大,可以起到隔離作用,避免傳感器對A/D采集的干擾[9]。
圖5為單路A/D采集電路工作系統(tǒng)圖。
圖5 單路A/D采集電路工作系統(tǒng)圖
單路A/D采集電路需要占用FPGA芯片的13根引腳,為了便于系統(tǒng)擴展同時考慮系統(tǒng)成本,每個FPGA從處理器配置12路A/D采集電路,若系統(tǒng)需要增加A/D采集電路,可增加FPGA從處理器。ARM與FPGA從處理器之間的通信接口采用一種改進的MODBUS總線形式[10]。使用總線形式就可在不改變電路的情況下增加對超聲波接收傳感器的采集[11]。
如圖6所示,當ARM給FPGA1工作指令脈沖時,F(xiàn)PGA1開始工作,完成對超聲波發(fā)射傳感器陣列的驅(qū)動以及對12路超聲波接收傳感器的控制采集,然后發(fā)送給FPGA2工作脈沖,使FPGA2開始工作。若還有FPGA從處理器,可繼續(xù)串聯(lián)。FPGA1、FPGA2利用RS485傳輸方式向ARM數(shù)據(jù)傳輸端口進行傳輸,可以進行方便的數(shù)據(jù)傳輸。同時RS485支持MODBUS總線傳輸協(xié)議[12]。
圖6 ARM與FPGA接口設(shè)計
ARM接收到FPGA從處理器傳輸?shù)膫鞲衅鲾?shù)據(jù),在ARM中利用五點平滑濾波進行噪聲剔除。剔除噪聲數(shù)據(jù)和異常的傳感器數(shù)據(jù)后,使用均值特征的方法處理傳感器數(shù)據(jù)[13]。如式(1)所示:
(1)
使用均值g(X)來替代一路傳感器采集的大量數(shù)據(jù),以達到較少數(shù)據(jù)量的目的,進而提高上位機處理效率。
采集到的水位信息,需與超聲波傳感器數(shù)據(jù)融合為一幀數(shù)據(jù),這樣上位機可以準確地根據(jù)水位信息,并結(jié)合通航船舶對超聲波傳感器的遮擋情況計算出船舶準確的吃水量。一幀數(shù)據(jù)格式如圖7所示,其中包括幀頭,第一路超聲波傳感器數(shù)據(jù)到第N路超聲波傳感器數(shù)據(jù),水位數(shù)據(jù)以及檢驗數(shù)據(jù)。校驗數(shù)據(jù)的設(shè)計格式為所有數(shù)據(jù)(包括水位數(shù)據(jù))求和的值。
本系統(tǒng)下位機系統(tǒng)與上位機之間采用TCP/IP傳輸?shù)姆绞?,在傳輸前,ARM與上位機之間建立握手連接,保證數(shù)據(jù)傳輸?shù)目煽啃浴_B接建立,ARM模塊一幀一幀給上位機發(fā)送數(shù)據(jù)。上位機編程使用SOCKET接口,SOCKET接口是建立在TCP/IP上的一種套接字的規(guī)范[14-15]。圖8為建立連接的流程。
圖8 建立連接流程
使用TCP/IP網(wǎng)絡(luò)傳輸?shù)姆绞剑搨鬏攩卧哂袑崟r性強、可靠性高、通信流量大等特點。
本文設(shè)計的基于ARM+FPGA的寬航道通航船舶吃水檢測系統(tǒng)在大連海事大學(xué)救助與打撈實驗樓進行模擬試驗,系統(tǒng)電路板實物圖如圖9所示。
(a)超聲波發(fā)射陣列端硬件實物圖
(b)超聲波接收陣列端硬件實物圖圖9 吃水檢測系統(tǒng)硬件實物圖
表1為航道寬度為50 m的條件下,模擬船舶與超聲波接收傳感器陣列距離分別為5 m、12 m、18 m、25 m、32 m、38 m、45 m不同位置情況下所測數(shù)據(jù)。
表1 50米航道寬度所測數(shù)據(jù) cm
由表1可以看出,系統(tǒng)測量的吃水量與模擬船舶的真實吃水量相比誤差小,準確度高,具有較高的可信度。同時上表數(shù)據(jù)獲得中國計量科學(xué)研究院認可。
本文設(shè)計的基于ARM+FPGA架構(gòu)的用于檢測寬航道通航船舶吃水檢測系統(tǒng),充分發(fā)揮了ARM和FPGA的優(yōu)勢。ARM控制FPGA完成了基于AD9203的多路并行A/D采集,設(shè)計了MODBUS協(xié)議的FPGA與ARM的傳輸方式;使用ARM完成了水位數(shù)據(jù)與超聲波數(shù)據(jù)的融合,通過TCP/IP完成了遠距離傳輸。通過在大連海事大學(xué)學(xué)救助與打撈實驗樓進行的模擬實驗可以看出,該系統(tǒng)可以完成寬航道的船舶吃水實時檢測,且可遠距離測量,測量精度高。