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