文獻標識碼: A
文章編號: 0258-7998(2013)10-0022-03
節(jié)能減排是當今的一個熱點,,LNG(液化天然氣)由于其高效節(jié)能,、污染小的特點越來越受到重視。許多船舶廠開始將傳統(tǒng)的柴油船改造成柴油和LNG雙燃料船,。為了更好地對雙燃料船進行燃料管理,,特別是當需要分析雙燃料船的節(jié)能比以及了解船舶的燃料安全狀態(tài)時,就需要對船舶的燃料使用情況和安全狀態(tài)進行及時的獲取和監(jiān)控,。
傳統(tǒng)的船舶燃料管理依賴于人工,,無法自動和實時地對船舶的燃料信息進行采集和監(jiān)管,而且船岸通信往往依賴于船舶的衛(wèi)星通信系統(tǒng),,一般以郵件的方式進行數(shù)據(jù)交換,,信息交互缺乏靈活性。
ARM作為嵌入式的主流核心架構(gòu),,具有高速度,、高精度和智能化等優(yōu)點,逐漸取代了單片機技術(shù),,占據(jù)了絕大部分市場,。在工業(yè)控制、移動設備,、智能儀表,、信息家電和網(wǎng)絡通信等領域有廣泛的應用[1-3],。3G網(wǎng)絡由于其高帶寬和網(wǎng)絡接入靈活的特點,越來越廣泛地應用于工業(yè)數(shù)據(jù)傳輸中[4],。本文基于ARM嵌入式終端和3G傳輸網(wǎng)絡,,設計了一個船舶燃料管理系統(tǒng),并在新式雙燃料船上成功應用,。本文重點介紹系統(tǒng)船舶端的軟硬件設計,。
1 系統(tǒng)總體介紹
1.1 系統(tǒng)結(jié)構(gòu)
船舶燃料管理系統(tǒng)分為監(jiān)控中心端和船舶端,監(jiān)控中心端可以對在江面作業(yè)的多條船舶進行管理,。
船舶端包含ARM11嵌入式終端,、網(wǎng)絡硬盤錄像機和3G路由器,監(jiān)控中心端包含VPN服務器和監(jiān)控主機,,其中監(jiān)控主機連接本地數(shù)據(jù)庫,。系統(tǒng)的主要功能是利用ARM終端進行燃料信息的采集和發(fā)送,監(jiān)控中心端接收顯示船舶端發(fā)送來的船舶燃料信息,,并將信息存儲于數(shù)據(jù)庫以便后續(xù)的分析處理,,同時,監(jiān)控中心能夠瀏覽船舶現(xiàn)場的視頻信息,。
1.2 系統(tǒng)通信方案
系統(tǒng)采用VPN與電信3G網(wǎng)絡相結(jié)合的通信方案,。通過在監(jiān)控中心端搭建VPN服務器,就可以讓船舶端遠程連接到監(jiān)控中心的內(nèi)部網(wǎng)絡,,同時也保證了傳輸數(shù)據(jù)的安全性,。船舶端傳送的每路監(jiān)控視頻的碼率為32 kb/s~2 048 kb/s,傳送的燃料數(shù)據(jù)信息碼率相對較低,??紤]到傳輸數(shù)據(jù)量的大小,本系統(tǒng)采用電信3G網(wǎng)絡作為視頻和燃料數(shù)據(jù)的傳輸網(wǎng)絡,,其最大上行速率達1.8 Mb/s,,在對視頻的畫質(zhì)要求不是特別高的情況下,可以滿足船舶燃料數(shù)據(jù)和1~4路船舶現(xiàn)場視頻的傳輸帶寬要求,。
2 系統(tǒng)硬件設計
ARM終端以S3C6410處理器為硬件基礎,,移植嵌入式Linux系統(tǒng)為軟件平臺,利用終端的RS232口對燃油和LNG二次儀表進行讀取,,通過ARM終端的與船舶報警繼電器相連的GPIO口的狀態(tài)來獲取燃料的安全狀態(tài),,并通過3G路由器內(nèi)置的GPS傳感器來獲得船舶的位置信息,最后將采集的數(shù)據(jù)信息通過3G網(wǎng)絡打包發(fā)送到監(jiān)控中心,。
根據(jù)船舶的燃料儀表設計,,有一個LNG儀表和2個燃油儀表要讀取,儀表接口為RS485接口,。本設計通過RS485轉(zhuǎn)RS232連接線將儀表與ARM終端進行連接,,將ARM終端的3個GPIO口分別連接船舶上的火災,、燃油和LNG異常報警繼電器,,通過GPIO口的電平狀態(tài)來判定報警繼電器的開關狀態(tài),,從而確定是否有報警被觸發(fā)。船舶端軟硬件架構(gòu)和硬件框圖分別如圖1和圖2所示,。
將架設在船舶上的網(wǎng)絡硬盤錄像機作為視頻服務器,,采集并存儲船舶上攝像頭的視頻信息,這樣,,監(jiān)控中心就可以通過訪問視頻服務器來實時預覽或回放船舶端的現(xiàn)場視頻,。
3 系統(tǒng)軟件設計
船舶ARM終端需要完成的具體功能包括船舶的瞬時和累計柴油消耗量、瞬時和累計LNG消耗量,、燃料和火災的報警狀態(tài),、GPS位置信息的采集,將采集的信息打包發(fā)送,,以及接收和處理監(jiān)控中心端發(fā)送來的指令等,。在采集信息和打包發(fā)送數(shù)據(jù)的同時,有可能需要接收和處理監(jiān)控中心端的指令,。由于系統(tǒng)功能的多任務性,,軟件采用了基于多線程的設計方式,將各個功能分線程來實現(xiàn),。船舶ARM終端軟件采用QT2.2[5]進行設計,,并運行于嵌入式Linux系統(tǒng)上。
3.1 配置表
配置表位于ARM終端文件系統(tǒng)中,,主要用于保存船舶的設備信息和網(wǎng)絡配置信息等,。ARM終端初始化時,軟件會從配置表里讀取船舶的基本信息(如船名,、ID號,、各串口的波特率)以及ARM終端的網(wǎng)絡信息(如本機IP地址、監(jiān)控中心端IP地址等),。
利用ARM終端配置telnet服務器,,監(jiān)控中心端可以通過telnet方式遠程登錄ARM終端來修改配置表,從而修改船舶端的配置,。這樣的方式為系統(tǒng)調(diào)試和維護提供了極大的靈活性和便利性,。
3.2 讀取LNG儀表和燃油儀表
本設計通過RS485接口連接多個LNG儀表和燃油表,通過設置不同的儀表地址來區(qū)分不同的儀表,。
ARM終端軟件通過串口讀取儀表數(shù)據(jù),。軟件中串口以非阻塞、可讀寫方式打開,。如果是以阻塞方式打開,,當讀取出現(xiàn)故障時會導致讀取線程卡死,。為了正確讀取數(shù)據(jù),必須保證ARM終端的串口屬性與儀表串口的屬性一致,,因此需要設置終端串口的屬性,,如數(shù)據(jù)位、奇偶校驗位,、停止位和串口波特率等,,串口屬性可以在配置表中讀取。串口打開后定時地發(fā)送和讀取串口數(shù)據(jù),,從而實現(xiàn)對儀表燃料信息的讀取,。
3.2.1 讀取LNG儀表
LNG儀表與ARM終端之間的通信以ASCII碼的十六進制方式來實現(xiàn)。讀取累計耗量和瞬時耗量的命令如表1所示,,其中#為定界符,;AA代表儀表的地址,地址為01~99,。儀表設置的地址必須與讀取命令中的儀表地址一致,。
以讀取累計值為例,將儀表的地址設為01,,則讀取命令為#01,。將命令加上2位校驗核來防止誤碼,再加上結(jié)束符(回車符),,最后從串口發(fā)送出去,。命令發(fā)送后,地址為01的儀表會返回所讀取的值,,將返回值進行校驗后去除校驗核和結(jié)束符,,再進行碼值轉(zhuǎn)換后得到實際要讀取的值。讀取完成后,,將讀取出來的值顯示到嵌入式終端屏幕上并放入發(fā)送數(shù)據(jù)包的相應位置中進行打包,。讀取LNG儀表串口的流程如圖3所示。
3.2.2 讀取燃油儀表
燃油儀表采用Modbus通信協(xié)議進行通信,,通過讀取儀表的寄存器來獲得累計耗量和瞬時耗量,。燃油儀表中的累計流量值和瞬時流量值存放在01~06共6個保持寄存器中,Modbus協(xié)議相應的讀取保持寄存器的命令格式如表2所示,。將2塊燃油儀表的地址設置成不同值進行區(qū)分,。發(fā)送命令前將待發(fā)送的命令數(shù)據(jù)進行CRC運算,將得出的2 B的CRC校驗碼加到發(fā)送命令的末尾一并發(fā)送出去,。儀表會對發(fā)送命令進行校驗并丟棄校驗有誤的命令,。將儀表返回值進行CRC校驗以確定返回值的正確性。最后將返回的累計耗量和瞬時耗量顯示到終端屏幕上并放入發(fā)送數(shù)據(jù)包的相應位置中,。讀取燃油儀表串口的流程與LNG儀表類似,。
3.3 讀取報警信息
報警線程通過讀取ARM終端3個GPIO口的狀態(tài)來判定報警繼電器的開關狀態(tài),,3個繼電器的開關狀態(tài)分別代表了燃油、火災,、LNG的告警狀態(tài),。
設計中將這3個GPIO口的操作接口編譯為一個驅(qū)動模塊,并在Linux系統(tǒng)啟動時將驅(qū)動模塊加載進內(nèi)核,,這樣就可以將這3個GPIO口當作一個設備來操作,。將GPIO口設置為CFG_IN方式,,通過讀取GPIO口的pin值就可以判斷相應繼電器的開合狀態(tài),。
正常狀態(tài)下,繼電器處于斷開狀態(tài),,如果有告警發(fā)生,,則相應的繼電器會被觸發(fā)閉合,對應的GPIO口電平會被拉高,,pin值變?yōu)榉?,。相應的報警號會被置位并寫入發(fā)送數(shù)據(jù)包中。由于有3個報警需要讀取,,每個報警的正常和異常狀態(tài)可以分別用0和1表示,,所以用0~7這8個報警號就可以表示各種報警組合狀態(tài)。
3.4 讀取GPS信息
系統(tǒng)采用的3G路由器內(nèi)置GPS模塊,,它能獲取船舶所在位置的經(jīng)緯度信息和精確的UTC時間信息,,并能通過網(wǎng)口輸出。ARM終端軟件通過UDP方式來獲取3G路由器輸出的GPS信息,,將信息中的經(jīng)度,、緯度和UTC時間解析出來,并將UTC時間轉(zhuǎn)換為北京時間,,最后放入發(fā)送數(shù)據(jù)包中,。
3.5 燃料數(shù)據(jù)傳輸
當燃料數(shù)據(jù)采集好以后,就可以將其打包發(fā)送到監(jiān)控中心,。燃料數(shù)據(jù)的發(fā)送格式為:船名/船舶ID號/瞬時LNG流量/瞬時燃油流量/累計LNG耗量/累計燃油耗量/報警號/日期時間/經(jīng)度/緯度/$,,用“/”作為兩個數(shù)據(jù)之間的分隔符,用“$”作為一個數(shù)據(jù)包的結(jié)束符,。各分量用字符串表示,。
船舶端與監(jiān)控中心端之間通過TCP方式進行數(shù)據(jù)傳輸。船舶端接收監(jiān)控中心發(fā)送的命令,,并據(jù)此確認采集發(fā)送燃料信息的間隔時間,。為確保網(wǎng)絡連通的穩(wěn)定性,船舶端每隔5 min向監(jiān)控中心發(fā)送一個特定的連接標志信息“@”,,當連續(xù)3次發(fā)送連接標志信息或燃料信息失敗時,,軟件就重新連接監(jiān)控中心,。船舶端與監(jiān)控中心數(shù)據(jù)傳輸?shù)牧鞒倘鐖D4所示。
3.6 看門狗線程
船舶內(nèi)工作環(huán)境復雜,,可能會對設備的正常運行造成影響,。為確保ARM終端設備始終處于運行狀態(tài),系統(tǒng)利用終端S3C6410處理器內(nèi)部的看門狗對嵌入式終端的運行狀態(tài)進行檢測,。通過軟件開啟看門狗并設置喂狗超時時間為15 s,,一旦看門狗在喂狗超時時間內(nèi)沒有收到喂狗信號,就復位重啟ARM終端設備,,這樣就保證了船舶端的ARM終端始終處于運行狀態(tài),。
4 系統(tǒng)測試
在監(jiān)控中心搭建VPN服務器,并在電信3G網(wǎng)絡環(huán)境下對系統(tǒng)進行測試,。
首先配置好船舶端3G路由器并連入3G網(wǎng)絡,,將船舶ARM終端的數(shù)據(jù)接收地址設置為監(jiān)控主機的IP并連接3G路由器,當ARM終端軟件連接上監(jiān)控主機的管理軟件后即可進行數(shù)據(jù)傳輸,。通過監(jiān)控端軟件連接船舶的網(wǎng)絡硬盤錄像機,,還可以瀏覽船舶上的4路現(xiàn)場視頻。在視頻格式為CIF格式,、視頻幀率為25 f/s的條件下進行測試,,畫質(zhì)清晰流暢,能達到較好的監(jiān)控效果,。圖5為監(jiān)控端軟件中的船舶燃料信息,。
本文針對船舶管理中心對江面作業(yè)的雙燃料船的燃料管理需要,設計了一個船舶燃料管理系統(tǒng),,采用ARM實現(xiàn)了對雙燃料船的燃料使用情況和燃料安全狀態(tài)的采集,。通過結(jié)合3G網(wǎng)絡和VPN技術(shù),解決了船舶中心與船舶遠距離通信的問題,,并通過船舶端的視頻服務器實現(xiàn)了對船舶現(xiàn)場情況的監(jiān)控,。測試表明,系統(tǒng)穩(wěn)定可靠,,達到了預期效果,。本系統(tǒng)還可以在集成度和功能擴展方面做進一步的改進與提升。
參考文獻
[1] 王勇,,張浩,,彭道剛,等.ARM平臺在多功能數(shù)據(jù)采集系統(tǒng)中的設計與實現(xiàn)[J].自動化儀表,,2010,,31(1):13-16.
[2] 張華,吳欣,王大星.基于ARM7的SD卡讀寫控制在數(shù)據(jù)采集系統(tǒng)中的應用[J].電子技術(shù)應用,,2009,,35(7):38-41.
[3] 張芳,許學忠,,梁建斌,,等.基于ARM的嵌入式直升機目標識別系統(tǒng)[J].電子技術(shù)應用,2009,,35(4):31-32.
[4] 李建文,,章堅武.基于CDMA2000-VPDN的視頻監(jiān)控系統(tǒng)設計[J].單片機與嵌入式系統(tǒng)應用,2011(8):62-65.
[5] 賀青,,李鵬飛.基于Qt的電腦橫機上位機的設計[J].微型機與應用,,2012,31(19):16-19.