定位技術是物流信息化的重要信息基礎,是實施物流信息化控制的主要信息依據。物流的定位方案與技術的選擇對提高現代物流配送管理效率,減少運營成本具有重要的影響。物流終端定位要求較高的定位精度,能提供全天候連續不間斷的定位信息支持,能滿足復雜地形條件的定位需求。 本文針對當前物流行業終端定位功能的需求進行分析,針對當前定位技術現狀,提出相適應的物流終端定位功能實現方案,并在基于嵌入式Linux和ARM9硬件核心的物流信息化終端平臺上對終端定位功能進行了初步的實現。 系統實現方案 移動定位技術的現狀分析 目前,移動定位技術已經非常成熟,較廣的應用主要可以分為兩大類,一類是GPS等利用衛星進行后方交匯的定位技術;另一類是利用移動通信網技術提供位置服務的定位技術。常用的有:基于Cell-ID的定位技術;基于AFLT(Advanced Forward Link Trilateration)的定位技術;GPS定位技術;GPS輔助定位技術(A-GPS)等。 GPS是當前在物流信息化中研究最廣泛的定位技術之一,但是,當GPS終端在建筑密集的地方或在隧道等定位信號難以接收的地理位置時,往往不易獲取有效的定位信息。而且,GPS定位功能無法滿足倉儲等高精度定位需求的場合,還需要進行相應的補充與完善。 本系統實現方案 基于現有網絡建設的總體情況及物流管理過程中對定位數據的需求分析,并綜合考慮各種定位技術的發展現狀及技術成熟度、實現成本等因素,擬在物流配送網絡中采用GPS輔助定位系統(GPS+Cell-ID+RFID+圖形道路匹配相結合)的定位技術。其主要考慮如下: 1)充分利用現有硬件資源。GPS、GSM、RFID模塊為本物流信息終端課題已擬定的硬件平臺,除GPS專為定位功能服務外,GSM和RFID模塊同時具有通信和標簽信息采集的功能。在不擴充硬件資源的前提下,最大限度地提高定位功能的服務質量。 2)Cell-ID定位。確保終端在GPS定位失去信號的情況下,保持最低限度的定位信息的提供。Cell-ID方式在城市及人口密集區域能提供相對高的精度,與GPS在城市高層建筑、林蔭道、地下隧道等遮蔽情況下性能的降低有較好的互補。由于GSM相對于CDMA具有更小的小區半徑,因此具有相對高的Cell-ID定位精度。在本方案中擬采用GSM的CELLID定位方式。 3)RFID定位。通過讀取用于標識地理坐標的標簽數據來獲取定位信息。其定位精度僅取決于標簽存儲定位信息的精確性,理論上可以達到任意高精度。可用于倉庫、碼頭等需要高精度定位信息的場所,來提供定位信息和其它輔助功能。 4)圖形道路匹配。當前物流運輸主要是利用汽車等運輸工具在固定的路線上進行,當路線基本確定的情況下,可通過圖形道路匹配對定位信息進行適當糾正。但是,這一般適用于道路不太密集的區域或路線固定的情況,可在本方案中作為可選功能模塊提供,適用于鐵路、高速公路等道路信息明確的場合,尤其適用于鐵路運輸。 軟硬件系統設計原理 系統硬件開發板CPU采用的是三星公司的內部集成ARM920T處理器核的S3C2410芯片。GPS模塊提供衛星定位信號;GSM/GPRS模塊提供通信與CELLID定位信息獲取;RFIDS模塊提供標簽信息采集和RFID定位功能。終端通過GSM/GPRS通信網絡與物流信息控制中心建立聯系,提交相關數據采集信息和接收物流信息控制中心指令。 系統軟件采用嵌入式Linux操作系統,移植QT/Embedded 3.3.4和SQLITE數據庫,采用QT嵌入式編程實現相應功能。 軟件系統設計 本文的軟件系統設計主要以S3C2410平臺為核心,將從GPS模塊、GSM/GPRS模塊、RFID模塊提取的定位信息進行相應分析處理,完成物流信息終端導航定位功能。 宿主機開發環境建立 由于目標平臺資源所限,需要搭建交叉編譯環境,本系統開發過程中采用的平臺如下: 宿主機:RED HAT 9.0; QT/Embedded 3.3.4;SQLITE 2.8.16;cross-2.95.3. tar.bz2 目標機:Linux Kernel 2.4.18;QT/Embedded 3.3.4;SQLITE 2.8.16 為了正確交叉編譯QT/Embedded,需要確保UUID、ZLIB、JPEG、GIF、PNG、SQLITE等QT中所需要的頭文件 、庫文件在交叉編譯前正確安裝,并移植相應的庫文件至目標機中。在交叉編譯QT/Embedded 3.3.4前正確設置環境變量,本系統QT/Embedded 3.3.4交叉編譯選項為:./configure -embedded arm -shared -debug -no-cups -thread -plugin-sql-sqlite -no-ipv6 -qt-mouse-Linuxtp,可根據實際情況進行相應裁減。 軟件關鍵技術分析 1)GPS定位信息提取 目前常用的GPS-OEM模塊均支持NMEA-0183的數據格式。NMEA-0183是以語句來發送數據的,每條語句都相對獨立并有完整意義。語句包含若干由ASCII文本字符組成的字段, 每條語句都以“$”開頭,以回車換行結束,數據包含在字段中,字段之間由逗號分 隔。每條語句的第一個字段表明語句的意義,在標準語句中,“$”后的兩位字符為“talkerID”,表示發送數據的設備,如GP表示GPS;接著的三位字符為“sentenceID”,表示了該語句的類型,如GGA,RMC等。語句中每個字段的含義隨語句類型而定,語句的最后一個字段是檢驗和(checksum),由“*”和兩位十六進制數字及回車換行符組成,檢驗和是“$”和“*”之間所有字符的邏輯異或運算結果,用于檢驗和確認數據的傳輸是否正確。 對于終端導航而言,“$GPRMC”幀格式可以滿足大部分需求,其幀長相對較短,便于信息處理。因此,在本系統中,選取“$GPRMC”幀進行定位信息提取。系統通過RS232串口從GPS-OEM模塊中接收定位數據,從接收數據中的“$GPRMC”幀提取時間、經緯度、速度、方位角等定位導航信息。其程序模塊主體結構如下: …… //判斷是否為$GPRMC幀頭,并進行標記 if(Data[ i]=='$' && Data[ i+3]=='R') …… //判斷是否為幀尾,幀尾以換行字符表示,數值為10 '\n' if(Data[ ]==10 && SectionID==13) { …… id_check=m*16+n; //得到檢驗數據的INT型 if(chk_result!=id_check) //比較異或運算結果與檢驗數據是否一致 …… i f( Data[ i]=='*' && SectionID==12 ) //異或運算結果 …… //對$至*之間的字符進行異或運算,得到結果chk_result for( ; Data[n]!='*"; n++) chk_result^=Data[n]; //判斷逗號,區分識別數據,并判別*號,區分校驗數據 if(Data[ i]==','||(Data[ i]=='*' && SectionID==12) ) SectionID++; else { switch(SectionID) { case 1: //提取時間 m_sTime[a++]=Data[ i]; break; case 2: //接收判別有效性數據A為有效,V為無效 …… case 3: //提取緯度 ……//提取經度、速度、方位角、校驗數據等其它信息 2)Linux串口通信編程 嵌入式Linux操作系統使用接口標準POSIX的termios接口來控制串口的行為。在Linux系統中,串口等設備被當作文件進行處理,其程序模塊主體實現如下: int fd=open("/dev/ttyS1",O_RDWRIO_NOCTTY);//打開串口 …… new_options.c_cflag &="PARENB;//無奇偶校驗 new_options.c_cflag &="CSIZE;//不隱藏數據位 new_options.c_cflag &="CSTOP8;//無停止位 new_options.c_cflag |=CS8;//8位數據位 cfsetispeed(&new_options,B4800);//設置波特率4800bit/s cfsetospeed(&new_options,B4800); tcflush(fd,TCIOFLUSH); tcsetattr(fd,TCSANOW,&new_options);//設置新的設備方式 完成串口設置后,就可以使用read( )、write( )函數對串口進行操作。需注意的是,串口默認是阻塞型的,當沒有數據到達時,將會阻塞掛起,這時可以通過多線程編程、串口超時設定或使用select輪詢等方式進行調整控制。本系統主要采用多線程編程實現對串口阻塞的調控,使用的是QT的Qthread類,也可以直接使用Linux自身的多線程函數進行操作。 3)QT/Embedded編程 Qt/Embedded是著名的Qt庫開發商TrollTech正在進行的基于framebuffer的面向嵌入式系統的Qt版本。因其面向對象、跨平臺和界面設計方便美觀而得到廣泛應用。 本設計采用QT/Embedded 3.3.4版本,它支持SQLITE數據庫驅動,便于數據庫操作與編程。設計主要使用了QTE的畫布模塊、SQL模塊和網絡模塊。畫布模塊中,QCanvas庫是一個高度優化的二維繪圖庫,與其它畫布模塊結合使用,能很方便地實現導航地圖的顯示、縮放、漫游以及鷹眼等功能。而SQL模塊和網絡模塊能很方便地實現數據庫編程和網絡通信功能,極大地縮短了程序的開發周期,提高了開發效率。 初步實現 定位誤差主要取決于GPS-OEM模塊的定位精度,實驗顯示本系統能初步滿足物流信息終端對定位功能的需求。 結束語 本文提出了一套基于嵌入式Linux系統的物流信息化終端定位功能的設計方案,并對其進行了初步實現。實驗證明:系統定位數據精確、界面友好、系統可擴展性強,較好地完成了物流信息化終端定位功能。本系統可用于物流終端定位導航,也可適用于其它需要定位導航服務的場合,具有較普遍的適用價值和參考價值。 |