樓然苗,李光飛,陳庭勛
(浙江海洋學院公共實驗中心、網絡中心,浙江舟山 316000)
當前,電子海圖、GPS、聲納等導航器在船舶航行中得到了廣泛的應用,大大提高了船舶導航技術及航船的安全性[1]。常用的導航系統主要分PC機系統和嵌入式系統2種。PC機船舶導航系統采用基于Windows的GIS軟件(如MapInfo、MapGIS)設計,具有系統功能豐富、響應速度快、人機交互界面友好等特點,但成本較高,系統集成度差,不適合作為專業系統使用;嵌入式導航系統分為8位機和32位機,其中8位單片機應用系統由于處理器運算能力較弱,資源有限,而且在圖形用戶界面中實現較為困難,近年來已被淘汰,而32位處理器組成的嵌入式系統,由于系統集成度高、硬件成本較低并且運算性能優異,目前得到較多應用[2]。國產GPS船用導航系統綜合了GPS和電子海圖等功能,使用了32位嵌入式處理器,系統從GPS系統實時獲取船舶位置(包括經緯度與時間等)和航行信息(包括船速與航向等),在電子海圖上顯示相關導航信息,用戶通過遙控器或鍵盤操作,提供海圖漫游、海圖查詢等航行信息的查詢及管理。
圖1為GPS船用導航系統硬件體系構成框架。它主要包括以下模塊:處理器、存儲器(RAM、ROM)、擴展存儲設備(Nand Flash)、I/O 設備(鍵盤及顯示設備)、標準通信接口(UART)等。
本系統使用華邦(winbond)公司的32位嵌入式處理器,該處理器采用嵌入式ARM9處理核,采用RISC技術,主頻為75 MHz,具有強大的處理能力,可外接鍵盤和鼠標,可直接驅動VGA顯示器。處理器中有2個標準UART通訊口,一個串口用作調試接口與PC機超級終端通訊,另一個用作與GPS接收板通訊;遙控(或聲納)采用中斷實現;使用2片HY57V641620HGT-H組成4 M×32 Bit的內存空間,用于程序運行;系統外擴16 MB Nand Flash存儲器,用于存放海圖數據;512 KB Flash外擴空間,用于存儲操作系統應用程序。

圖1 GPS船用導航系統硬件構成框架Fig.1 Hardware frameword of GPS navigation system in ship
GPS船用導航系統,采用自主知識產權的控制軟件,控制功能強,不易移植,產品保密性能好。電子海圖先進行格式轉換,刪除冗余數據,進行數據壓縮、建立網絡索引后存入存儲器,在專用控制軟件上使得系統響應速度大大加快。GPS船用導航系統的軟件體系結構如圖2。自底而上包括以下三個層次:(1)硬件驅動層程序:顯示器驅動程序、遙控指令碼功能程序、Nand flash讀寫程序、MPU的初始化配置程序、串口等其它設備驅動程序;(2)文件管理系統層程序;(3)應用程序/用戶層程序。
硬件驅動層程序主要解決與對應的硬件設備操作時的控制及數據、地址傳送問題。在嵌入式電子海圖儀中主要有:Nand flash的讀寫驅動程序、ROM芯片的操作驅動程序、VGA設備的驅動程序、MPU初始化復位程序等。
文件管理層主要是建立嵌入式文件系統,以對Flash存儲器中的數據進行基于文件編號的存儲管理,同時對Flash本身的壞損單元提供有效的壞損管理機制。由于沒有通用的操作系統可移植,這里使用了DOS的FAT進行文件管理,因Nandflash的容量不大,系統用FAT16來對海圖儀中需使用的文件進行管理。
在FAT16文件管理系統程序的編制中,需要有掃描存儲器并標記壞存儲頁的程序,使能對Nand Flash存儲器進行格式化。在建立FAT16文件系統后,嵌入式應用平臺上就可使用文件來對數據進行管理,并可以調用fopen()、fwrite()、fread()、fclose()等文件管理功能函數對數據進行訪問,大大地提高了嵌入式系統的數據管理能力及數據訪問速度。

圖2 GPS船用導航系統的軟件體系結構Fig.2 Software structure of GPS navigation system in ship
嵌入式電子海圖儀中應用層程序大大小小很多,主要用以實現不同的操作及設置功能(如系統在線下載程序、GPS信息的處理與顯示程序、電子海圖的顯示刷新程序及各種功能按鍵的操作程序等)。由于采用非實時操作系統,也不太分得清應用程序與接口函數的界線,通常把嵌入式程序分成兩部分,即前臺程序和后臺程序。前臺程序通過中斷來處理事件,其結構一般為無限循環;后臺程序則掌管整個嵌入式系統軟、硬件資源的分配、管理以及任務的調度,是一個系統管理調度程序。這就是通常所說的前后臺系統。一般情況下,后臺程序也叫任務級程序,前臺程序也叫事件處理級程序。在程序運行時,后臺程序檢查每個任務是否具備運行條件,通過一定的調度算法來完成相應的操作。
國產化嵌入GPS電子海圖儀中海圖的數據使用自定義的數字矢量格式,按屬性不同分為以下三類數據:(1)點數據(標注)。表示海圖上的一個點位置,具有經緯度參數或用來說明的中文字符或英文字符、數字等,象助航標志、錨地設施、海上物標、礙航物等。(2)線數據。表示海圖上的一開放線段,有直線、折線、任意弧線。由最小點分辨率的點構成,象航道航線、等深線等。(3)面數據。表示海圖上的由一封閉線條構成的面,代表某一區域面積,像陸地、碼頭、不同水深區、灘地,都是由不同的普染(顏色)區域顯示出來。
嵌入式電子海圖儀中,電子海圖數據的格式需按點、線、面類型分類,并且按一定的規律連續存儲[3]。從第一個起始地址開始,首先要指明是點、線還是面,另外還需指明點、線或面的類型,如果是線或面數據還應指明有多少個點數據,緊接著是表示點特性的數據。不同的點因屬性不同,后面的數據結構也不盡相同。如一條表示線的組成點數據,在存儲器中的數據結構如圖3所示。
在線數據的存儲結構中,第一字節是用來區別是點還是線或面,如0表示點,1表示線,2表示面。第二個字節是標明線類型的,如0表示電纜線,1表示等深線,一共可表示256種線的類型。第3到6個字節(共32位四字節)表示組成線的點的個數,最大點個數可達232個。從第七個字節開始是連續的點的經緯度數據,每個點的經度及緯度各占四個字節,數據是按度分秒的十進制數排列得到的,如124°13′58″的經度值,在存儲器中的值是1241358(H)。
圖4是面數據的存儲結構圖,它的特征意義與線數據的結構相似。
點數據的存儲結構在嵌入式海圖系統中有幾種不同的結構,因為標征不同類別的點內容不同,因此結構也有差別。圖5是地名數據的存儲結構。前2個字節的意義與線或面一樣,因是點數據,所以第三個字節開始就是該點的經緯度數據。接著為了顯示地名時的分級控制,有一個表示顯示級別的字節,就是控制海圖顯示在不同的放大倍數下該點地名是否顯示,接著的字節是說明地名的標注。當顯示點是燈標時,第11個字節是用來表示燈標屬性,因不同的燈標圖符不同。
圖6是嵌入式電子海圖文件中的點線面數據格式例子。
在嵌入式電子海圖顯示系統中,為了提高顯示的速度,使用了顯示區域緩存技術,要顯示的數據都是以塊為單位組織的。數據塊的大小與顯示的屏幕尺寸有對應關系,如顯示器采用分辨率為800×600點,則顯示緩存塊數據的大小也必須為4:3,這樣電子海圖顯示數據的塊單位可定為經度方向120′,緯度方向為90′。當顯示一屏海圖數據時,按每點一個字節(256色顯示)計算需要的顯示緩存為480 000字節。圖7為海圖顯示緩存數據塊中的經緯度比例范圍圖。

圖3 線數據的存儲結構Fig.3 Storage sturcture of line data

圖4 面數據的存儲結構Fig.4 Storage structure of surface data
電子海圖數據的實時顯示是系統的核心程序。該程序根據給出的中心點位置(通常為GPS給出的船位點坐標)及顯示比例范圍參數,確定需要顯示的空間數據范圍,并從海圖文件中找出符合顯示范圍的數據,從海圖文件中讀出圖層分層控制信息以實現電子海圖的分層顯示控制,最后按各類實體對應的符號要素代碼繪制相應的圖形符號在內存中快速完成海圖的繪制[4-6]。電子海圖顯示流程如圖8所示。
嵌入式電子海圖顯示系統中使用了16 M字節的內存空間,電子海圖數據一般在10 MB左右,剩下4 MB中用于顯示緩存作圖的為480 KB,這是按800×600點顯示屏幕計算的。剩下的空間用于程序計算及漢字庫、文本等數據的存放。由于顯示緩存只有一塊,因此在每次顯示范圍發生變化時,都要從內存中將海圖數據重新讀算一遍,再重新進行畫圖。這在海圖移動操作中會影響刷新的速度,使用大容量位圖緩沖內存技術可提高海圖在移動或漫游時的刷新速度。圖9為GPS船用導航系統信息顯示窗口圖。

圖5 點(地名)數據的存儲結構Fig.5 Storage structure of the data

圖6 電子海圖文件中的點線面數據格式例子Fig.6 Sample of dot,line and surface data structure in electronic chat files
中央處理器:ARM RISC CPU 100M
存儲器:16M SDRAM 16M FLASH MEMORY
顯示:SVGA 800X600 256 COLOR
接收器:十二通道C/A碼單頻GPS接收板
定位精度:±20 m(2DRMS)
測速精度:0.02 M/S
捕獲時間:10S(典型值)
跟蹤動態:速度850節、加速度4 G
輸入輸出:NMEA-0183
工作溫度:-10℃ ~+50℃
存儲溫度:-40℃ ~+80℃
相對濕度:40℃時為95%
電源:DC10V ~40V
功率:3.5W
航路點:1000
標記:1000
即時船位:1000
航線:20條 每條50點

圖7 海圖顯示數據塊中的經緯度比例范圍Fig.7 The scale range of coordinates in chat display data block

圖8 嵌入式電子海圖顯示流程圖Fig.8 Embedded electronic chat display flow chat
國產化GPS電子海圖導航系統,使用嵌入式32位處理器及文件管理系統,具有海圖漫游、海圖查詢和航行信息管理等功能,具有價格低、操作方便、使用可靠等優點,已經生產應用2年多。電子海圖儀中海圖數據使用自定義數據格式,方便實現分級顯示、放大縮小等海圖操作功能,而且有利于知識產權的保護,也可大大減小文件數據的容量。有待改進的地方有:VGA分辨率不夠高(目前為800×600點)、海圖不能連續旋轉(現可作 90°旋轉)。

圖9 GPS船用導航系統信息顯示圖Fig.9 GPS navigation system in ship information display chat
[1]吳廣華,張杏谷.衛星導航[M].北京人民交通出版社,1998:1-10.
[2]賈銀山,賈傳熒,魏海平,等.基于GPS和電子海圖的船舶導航系統設計與實現[J].計算機工程,2003,29(1):194-195.
[3]葛志明,趙學俊,李 峰.長江電子航道圖顯示與信息系統[J].海洋測繪,2005,25(2):64-66.
[4]關 勁,張勇剛,李 寧,等.電子海圖快速顯示方法研究[J].中國航海,2004,61(4):57-59.
[5]王瑞華,許兆新,蔣岳志.電子海圖實時平滑旋轉實現方法研究[J].船舶工程,2004,26(6):71-74.
[6]吳 青.電子海圖系統中雷達圖象與海圖圖形疊加技術研究[J].江蘇船舶,2004,21(5):32-34.