張亞寧,劉春光,吳詩(shī)帆
(92124 部隊(duì),遼寧 大連 116023)
在海上靶場(chǎng)進(jìn)行武器試驗(yàn)的過程中,艦船自動(dòng)識(shí)別系統(tǒng)(AIS)可以協(xié)助安控人員進(jìn)行海上目標(biāo)識(shí)別,尤其是對(duì)目標(biāo)飛行器雷達(dá)鎖定漁船、商船等非靶目標(biāo)進(jìn)行及時(shí)有效的安控尤為重要。AIS 報(bào)文一般采取可見字符的方式進(jìn)行傳輸,接收機(jī)收到報(bào)文后需按照ITU-1371-4 協(xié)議進(jìn)行解析,解析之后的數(shù)據(jù)才能供作業(yè)人員使用。目前市面上商用的AIS 解析軟件較多,可以實(shí)現(xiàn)報(bào)文解析、艦船信息顯示等功能,但此類軟件一般不具備直接兼容安控顯示軟件的功能。本文基于MFC 平臺(tái)設(shè)計(jì)了AIS 報(bào)文解析軟件,實(shí)現(xiàn)了將AIS信息融入安控顯示軟件的功能。
AIS 報(bào)文解析軟件的信號(hào)流程如圖1所示,首先啟動(dòng)AIS 報(bào)文接收線程,實(shí)時(shí)接收?qǐng)?bào)文數(shù)據(jù);然后進(jìn)行報(bào)文內(nèi)容的判定,對(duì)其中的AIS 報(bào)文進(jìn)行解析(對(duì)非AIS 報(bào)文不做處理);最后將解析之后的報(bào)文結(jié)果以安控顯示軟件的格式進(jìn)行打包發(fā)送,使AIS 信息在安控顯示軟件上實(shí)時(shí)顯示。
圖1 AIS 報(bào)文解析軟件信號(hào)流程
本文基于MFC 平臺(tái)設(shè)計(jì)AIS 解析軟件,程序界面如圖2所示,界面分為數(shù)據(jù)接收區(qū)、監(jiān)視區(qū)、接收設(shè)置區(qū)、記錄區(qū)、發(fā)送區(qū)五個(gè)區(qū)域。“數(shù)據(jù)接收區(qū)”用于實(shí)時(shí)顯示接收的AIS 原始報(bào)文和解析之后的艦船信息;“監(jiān)視區(qū)”對(duì)解析軟件的工作情況進(jìn)行監(jiān)視,主要顯示解析報(bào)文狀態(tài)、數(shù)量等內(nèi)容;“接收設(shè)置區(qū)”設(shè)置本地接收AIS 報(bào)文的IP地址、端口信息、組播地址等信息;“記錄區(qū)”以新建文本的方式保存接收到的AIS 原始報(bào)文和解析之后的結(jié)果,可以通過按鍵的方式選擇是否保存;“發(fā)送區(qū)”設(shè)置發(fā)送目的端的IP 地址和端口,進(jìn)而將解析之后的結(jié)果實(shí)時(shí)發(fā)送至安控顯示工作站。
圖2 AIS 解析軟件程序界面
為了實(shí)現(xiàn)AIS 報(bào)文接收功能,需要正確加載套接字庫(kù),創(chuàng)建套接字,綁定接收端口,啟動(dòng)接收線程等步驟,關(guān)鍵代碼為:
WSAStartup(MAKEWORD(2,2),&wsaData);// 加載套接字庫(kù)
m_RecvSocket=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,0);//創(chuàng)建套接字
bind(m_RecvSocket,(SOCKADDR*)&addrSock,sizeof(SO CKADDR));//綁定端口
WSARecvFrom(m_RecvSocket,&wsabufRcev,1,&dwread,&dwflag,(SOCKADDR*)&addr_from,&len0,NULL,NULL));//實(shí)時(shí)接收
考慮到不同計(jì)算機(jī)的IP 地址不同,利用本軟件綁定地址信息時(shí)支持配置文件讀取和手動(dòng)更改兩種方式,軟件啟動(dòng)后直接從配置文件讀取IP、端口、組播信息至“接收設(shè)置區(qū)”并進(jìn)行顯示,如果綁定端口情況臨時(shí)有變可以在“接收設(shè)置區(qū)”手動(dòng)更改,然后點(diǎn)擊“綁定”按鍵進(jìn)行最終綁定。
AIS 報(bào)文共有27 類(ID 號(hào)為1~27),不同類別的報(bào)文可以提供艦船標(biāo)識(shí)碼MMSI、經(jīng)度L、緯度B、航向COG、航速SOG、船名NAME、呼號(hào)CALL、艦船尺寸等信息。鑒于安控顯示軟件只需顯示艦船標(biāo)識(shí)碼、位置和航行狀態(tài),故僅需解析包含識(shí)別碼MMSI、經(jīng)度L、緯度B、航向COG、航速SOG 等信息的5 類報(bào)文,分別為:1 類、2 類、3 類、18 類、19 類,對(duì)于其他類型的報(bào)文不做解析,減少了數(shù)據(jù)處理量,提高了報(bào)文解析效率。
在有效性的判定上,AIS 報(bào)文采取幀頭識(shí)別的方式進(jìn)行判定,即收到的報(bào)文以“!AIVDM”“!AIVDO”“!AIVDM”等字符開頭;在報(bào)文類別(ID 號(hào))的判定上,采取提取報(bào)文數(shù)據(jù)段首字符的方式進(jìn)行判定,僅解析上面提到的5 類報(bào)文。
篩選出需要解析的報(bào)文后,按照ITU-1371-4 協(xié)議對(duì)數(shù)據(jù)段內(nèi)容進(jìn)行解析,有關(guān)報(bào)文解析的方法參考本文作者曾發(fā)表的文獻(xiàn)——一種AIS 報(bào)文解析方法,此文獻(xiàn)中論述了AIS 報(bào)文解析的詳細(xì)過程。在本文中,將此解析方法封裝成函數(shù)使用,代碼為:
bool OnDecodeAIS(char *p,int len,AisData &AisResult);
在此函數(shù)中p 為AIS 報(bào)文數(shù)據(jù)段的字符串指針,len 為數(shù)據(jù)段字符串長(zhǎng)度,AisResult 為解析之后的結(jié)果,是此函數(shù)的輸出變量,其類型為自定義AisData 結(jié)構(gòu)類型,AisData結(jié)構(gòu)定義為:
AIS 報(bào)文解碼成功后,需要按照安控顯示軟件所提供的數(shù)據(jù)接口類型進(jìn)行打包封裝,此數(shù)據(jù)接口類型為AIS_MAdd結(jié)構(gòu),要求連續(xù)方式對(duì)齊。具體代碼為:
在AIS_MAdd 結(jié)構(gòu)變量中,除了5 類艦船信息,還包含包頭、包尾和操作類別3 個(gè)變量,所以還需要對(duì)以上變量進(jìn)行賦值,具體代碼為:
通過以上方式完成解析結(jié)果的數(shù)據(jù)封包。
發(fā)送目的端的地址信息通過讀取配置文件在“發(fā)送區(qū)”窗口顯示。數(shù)據(jù)打包結(jié)束之后,構(gòu)造發(fā)送結(jié)構(gòu)變量并進(jìn)行數(shù)據(jù)發(fā)送,具體代碼為:
本程序界面的“數(shù)據(jù)接收區(qū)”實(shí)時(shí)顯示最新一條AIS 報(bào)文和解析結(jié)果,為了實(shí)現(xiàn)對(duì)整個(gè)解析過程數(shù)據(jù)的監(jiān)視,在“記錄區(qū)”增加“按鍵”實(shí)現(xiàn)記錄報(bào)文信息和解析結(jié)果,文件以時(shí)間命名,以文本方式保存。
此外,本程序還設(shè)計(jì)了“監(jiān)測(cè)區(qū)”,用于對(duì)程序運(yùn)行狀態(tài)、解析報(bào)文數(shù)量、記錄開啟情況等進(jìn)行實(shí)時(shí)監(jiān)視,極大地方便了程序操管。
本程序設(shè)計(jì)完成后,通過在機(jī)房實(shí)時(shí)接收大連旅順某海域的AIS 信息進(jìn)行了軟件測(cè)試,測(cè)試過程中首先通過“綁定”按鍵正確設(shè)置接收端口,然后通過“運(yùn)行”按鍵啟動(dòng)解析程序,程序運(yùn)行過程中依次啟動(dòng)數(shù)據(jù)記錄功能,測(cè)試結(jié)果如圖3、圖4、圖5所示。從這三個(gè)圖中可以看出,本程序不僅可以實(shí)時(shí)顯示接收?qǐng)?bào)文信息、報(bào)文解析結(jié)果,還可以對(duì)解析情況進(jìn)行實(shí)時(shí)監(jiān)視。程序運(yùn)行結(jié)束后,生成了AIS 報(bào)文記錄文件和解析結(jié)果記錄文件,文件信息如圖6、圖7所示。最后對(duì)本軟件的轉(zhuǎn)發(fā)功能進(jìn)行了測(cè)試,測(cè)試結(jié)果如圖8所示,由安控顯示軟件可知本程序可實(shí)時(shí)將AIS 解析結(jié)果發(fā)送至安控顯示軟件進(jìn)行顯示,實(shí)現(xiàn)了與安控軟件的融合,可以實(shí)時(shí)為安控顯示軟件提供海面艦船信息。
圖3 AIS 解析軟件測(cè)試結(jié)果
圖4 AIS 解析軟件測(cè)試結(jié)果“顯示區(qū)”放大圖
圖5 AIS 解析軟件測(cè)試結(jié)果“監(jiān)視區(qū)”放大圖
圖6 AIS 解析軟件原始報(bào)文記錄
圖7 AIS 解析軟件解析結(jié)果記錄
圖8 解析結(jié)果在安控顯示軟件上的顯示效果
本文基于安控顯示軟件實(shí)時(shí)顯示海上艦船信息的需求,利用MFC 平臺(tái)從界面設(shè)計(jì)、報(bào)文接收、報(bào)文判定、報(bào)文解析、報(bào)文記錄、解析結(jié)果發(fā)送等環(huán)節(jié)詳細(xì)論述了本文AIS 服務(wù)器軟件的設(shè)計(jì)流程,最后通過實(shí)際環(huán)境中的測(cè)試得出本文軟件實(shí)現(xiàn)了上述功能,可以實(shí)時(shí)為安控顯示軟件提供AIS 信息,為安控人員順利完成海上目標(biāo)飛行器安控任務(wù)提供了參考,具有一定的工程應(yīng)用價(jià)值。