徐 忠,萬(wàn)載東
(江蘇南通海事局,江蘇 南通 226004)
AIS從開(kāi)始發(fā)展到在船舶上強(qiáng)制安裝執(zhí)行,經(jīng)過(guò)了十余年的時(shí)間,目前AIS正處于實(shí)施和進(jìn)一步發(fā)展成熟的階段。1998年美國(guó)海岸警衛(wèi)隊(duì)與ROSS公司合作組建了新一代的AIS示范點(diǎn)。2000年荷蘭建設(shè)了“荷蘭內(nèi)河船舶信息顯示與監(jiān)控系統(tǒng)(INDRIS)”項(xiàng)目,該項(xiàng)目由12個(gè)AIS基站和30個(gè)AIS船站組成,此系統(tǒng)已投入運(yùn)行并且效果良好。2005年Helsinki委員會(huì)宣布波羅的海AIS海上公共交通監(jiān)控系統(tǒng)全面投入使用。中國(guó)從2005年開(kāi)始,至2010年建設(shè)了全面覆蓋中國(guó)沿海和內(nèi)河主要航道的AIS基站系統(tǒng),對(duì)我國(guó)船舶實(shí)時(shí)動(dòng)態(tài)監(jiān)控和管理及區(qū)域船舶航行安全發(fā)揮了重要作用。
為了從AIS基站或設(shè)備中獲得周?chē)皩?shí)時(shí)動(dòng)態(tài)信息,需要對(duì)接收到的AIS電文進(jìn)行解析,按照標(biāo)準(zhǔn)協(xié)議從中解析所需要的信息數(shù)據(jù)。本文研究中,采用了軟件編程解析技術(shù)。該軟件首先從AIS的串口接收數(shù)據(jù),并根據(jù) IEC 61162-1協(xié)議提取 ITURM.1371電文,然后根據(jù)ITU-RM.1371封裝電文內(nèi)容提取所需要的船舶動(dòng)靜態(tài)數(shù)據(jù),然后在PC機(jī)上顯示船舶動(dòng)靜態(tài)信息并實(shí)現(xiàn)對(duì)本船信息進(jìn)行實(shí)時(shí)更新。設(shè)計(jì)過(guò)程中,主要實(shí)現(xiàn)了兩種功能:
(1)通過(guò)串口接受數(shù)據(jù)并解碼,然后通過(guò)信息框顯示實(shí)時(shí)顯示船舶信息并通過(guò)解碼框顯示對(duì)應(yīng)的解碼信息。
(2)根據(jù)接收到的解碼信息判斷是否為本船數(shù)據(jù),并通過(guò)文本框顯示本船信息,以達(dá)到對(duì)本船實(shí)時(shí)信息的掌握和監(jiān)控。這兩個(gè)過(guò)程相輔相成,實(shí)現(xiàn)了信息的接受解碼與本船信息的動(dòng)靜態(tài)顯示,完成了設(shè)計(jì)的要求并對(duì)以后的拓展與實(shí)際應(yīng)用提供了方便。軟件編程使用.NET平臺(tái)下的c#語(yǔ)言,利用其優(yōu)越性在美化界面、結(jié)構(gòu)設(shè)計(jì)、功能實(shí)現(xiàn)等諸多方面進(jìn)行了開(kāi)發(fā)研究。在串行通信部分,采用了虛擬串口與串口調(diào)試助手,實(shí)現(xiàn)了對(duì)串口號(hào)、校驗(yàn)位、波特率、數(shù)據(jù)位、停止位的控制與AIS船舶信息語(yǔ)句的傳輸;在解析部分,通過(guò)多線(xiàn)程的方法,實(shí)現(xiàn)了數(shù)據(jù)的實(shí)時(shí)分析解碼,并將解析信息和為解析前的接收信息分條顯示在系統(tǒng)界面中。
該AIS解析軟件可實(shí)現(xiàn)有關(guān)AIS電文的實(shí)時(shí)接收,并將其解碼為明文:如船舶的靜態(tài)信息與船舶的航速、經(jīng)緯度等動(dòng)態(tài)信息。同時(shí)將本船信息顯示在信息框中,便于對(duì)本船信息進(jìn)行監(jiān)控。
AIS電文解析軟件系統(tǒng)的主要功能實(shí)現(xiàn)是通過(guò)串口設(shè)置和控制后通過(guò)串口接收AIS電文后實(shí)現(xiàn)對(duì)于電文實(shí)體部分的解析,并且通過(guò)合理規(guī)劃文本,實(shí)現(xiàn)了AIS電文和解碼信息的顯示。另外,通過(guò)本船信息顯示界面,顯示出實(shí)時(shí)更新的本船信息。通過(guò)本設(shè)計(jì)軟件,用戶(hù)可以實(shí)現(xiàn)對(duì)主要AIS船舶電文進(jìn)行解析并顯示電文和明碼信息,可以實(shí)現(xiàn)對(duì)本船信息的實(shí)時(shí)更新。本系統(tǒng)的總體架構(gòu)框圖見(jiàn)圖1。
該軟件系統(tǒng)通過(guò)主控模塊實(shí)現(xiàn)系統(tǒng)的中心調(diào)度,并通過(guò)串口模塊、顯示模塊和信息解碼模塊綜合實(shí)現(xiàn)系統(tǒng)的解碼顯示功能。AIS電文在串口模塊接收后,經(jīng)過(guò)信息解碼模塊解碼后由顯示模塊顯示,從而實(shí)現(xiàn)系統(tǒng)的綜合功能。
圖1 系統(tǒng)需求框圖
AIS電文解析軟件系統(tǒng)主要使用c#編程環(huán)境實(shí)現(xiàn)。整個(gè)系統(tǒng)包含3大模塊:串口模塊、顯示模塊和信息解碼模塊,各個(gè)模塊又包含若干函數(shù)和子函數(shù),其中核心部分為電文解析模塊及其包含的各函數(shù)和其子函數(shù)。本設(shè)計(jì)詳細(xì)框架結(jié)構(gòu)見(jiàn)圖2。
圖2 AIS電文解析軟件系統(tǒng)整體框圖
AIS電文解析軟件系統(tǒng)串口模塊實(shí)現(xiàn)串口設(shè)置和控制功能,可以對(duì)串口設(shè)置如串口號(hào)、波特率、校驗(yàn)位、數(shù)據(jù)位、停止位等參數(shù)。串口打開(kāi)后,由中心調(diào)度模塊從串口接收電文并分兩部分處理:一方面,由電文信息顯示模塊進(jìn)行分條顯示,以便于用戶(hù)分析觀(guān)察對(duì)傳過(guò)來(lái)的電文暗碼進(jìn)行分析觀(guān)察;另一方面由解碼信息顯示函數(shù)將電文拆解后提取有效信息并拼接,而后調(diào)用電文解析函數(shù)對(duì)電文的有效編碼部分進(jìn)行解析并顯示在系統(tǒng)主界面中,同時(shí)由顯示本船信息子函數(shù)對(duì)本船信息的顯示進(jìn)行實(shí)時(shí)更新和顯示。本系統(tǒng)的顯示界面同時(shí)具有清空電文信息模塊和清空解碼信息的函數(shù),可以讓用戶(hù)更方便的查看分析信息。
解碼模塊是本軟件系統(tǒng)的核心。主控模塊將解碼有效信息傳給解碼模塊后,字符串再由解碼模塊的轉(zhuǎn)二進(jìn)制函數(shù)轉(zhuǎn)換為二進(jìn)制串后由取位解析函數(shù)解析成解碼信息明文。最后由拼接模塊拼接成整體信息后由主控模塊傳給顯示界面模塊進(jìn)行顯示。
本軟件的核心是電文解析模塊,其作用是將電文的暗碼解譯為信息明文。其中運(yùn)用的是AIS協(xié)議中的電文解析協(xié)議。
為了讓解碼過(guò)程更加明了,有必要將電文解析舉出示例。以下以電文5為例進(jìn)行電文解析部分的實(shí)例解釋?zhuān)娢?以外的各電文在解析過(guò)程方面大同小異。電文與示例見(jiàn)表1。
AIS電文解析部分以字段“電文ID”為例,截取經(jīng)轉(zhuǎn)二進(jìn)制函數(shù)處理后的暗文的1~6位,即:000101,經(jīng)二進(jìn)制轉(zhuǎn)十進(jìn)制函數(shù)轉(zhuǎn)化后即得電文5的電文號(hào)。AIS電文解析信息由顯示模塊顯示在系統(tǒng)界面并最終實(shí)現(xiàn)與用戶(hù)交互。
表1 電文5示例
本軟件通過(guò)串口接收AIS電文后,實(shí)現(xiàn)了對(duì)AIS電文的解析,并且通過(guò)各顯示模塊,實(shí)現(xiàn)了AIS電文和解碼信息的分條顯示。另外,通過(guò)本船信息顯示界面,實(shí)時(shí)對(duì)本船信息進(jìn)行更新。但是在實(shí)際設(shè)備中,可能出現(xiàn)意外的電文傳輸問(wèn)題,如串口發(fā)送延時(shí)等待等。因此,本設(shè)計(jì)還要進(jìn)行容錯(cuò)處理,以使其更加適合于實(shí)際應(yīng)用。但是,本文的研究和開(kāi)發(fā)為將來(lái)的更深層研究搭建了基本框架,并且完成了AIS電文解碼系統(tǒng)的基本設(shè)計(jì)要求,對(duì)于今后AIS系統(tǒng)應(yīng)用和同類(lèi)軟件的設(shè)計(jì)開(kāi)發(fā)具有指導(dǎo)意義。
[1]黃麗卿,胡穩(wěn)才,邵哲平.AIS輸出數(shù)據(jù)包的解包技術(shù)研究[J].集美大學(xué)學(xué)報(bào),2005,(1):37 -41.
[2]催嵐波.船舶通信與導(dǎo)航[M].哈爾濱:哈爾濱工程大學(xué)出版社,2007.
[3]普瓦拉,等..NET程序設(shè)計(jì):從Java到c#[M].湖北:華中科技大學(xué),2004.
[4]徐布克,等..NET程序設(shè)計(jì)案例教程:Visual c#2008[M].北京:中國(guó)鐵道出版社,2008.
[5]周瑜明,等..NET平臺(tái)與c#面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:電子工業(yè)出版社,2010.
[6]費(fèi)拉基亞蒂,等..NET數(shù)據(jù)服務(wù)c#高級(jí)編程[M].北京:清華大學(xué)出版社,2002.
[7]周紅安,等.21條學(xué)通c#[M].北京:電子工業(yè)出版社,2009.