文獻標識碼: 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作為嵌入式的主流核心架構,具有高速度、高精度和智能化等優(yōu)點,逐漸取代了單片機技術,占據(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)結構
船舶燃料管理系統(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ān)控中心端搭建VPN服務器,就可以讓船舶端遠程連接到監(jiān)控中心的內部網(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,在對視頻的畫質要求不是特別高的情況下,可以滿足船舶燃料數(shù)據(jù)和1~4路船舶現(xiàn)場視頻的傳輸帶寬要求。
2 系統(tǒng)硬件設計
ARM終端以S3C6410處理器為硬件基礎,移植嵌入式Linux系統(tǒng)為軟件平臺,利用終端的RS232口對燃油和LNG二次儀表進行讀取,通過ARM終端的與船舶報警繼電器相連的GPIO口的狀態(tài)來獲取燃料的安全狀態(tài),并通過3G路由器內置的GPS傳感器來獲得船舶的位置信息,最后將采集的數(shù)據(jù)信息通過3G網(wǎng)絡打包發(fā)送到監(jiān)控中心。
根據(jù)船舶的燃料儀表設計,有一個LNG儀表和2個燃油儀表要讀取,儀表接口為RS485接口。本設計通過RS485轉RS232連接線將儀表與ARM終端進行連接,將ARM終端的3個GPIO口分別連接船舶上的火災、燃油和LNG異常報警繼電器,通過GPIO口的電平狀態(tài)來判定報警繼電器的開關狀態(tài),從而確定是否有報警被觸發(fā)。船舶端軟硬件架構和硬件框圖分別如圖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)調試和維護提供了極大的靈活性和便利性。
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位校驗核來防止誤碼,再加上結束符(回車符),最后從串口發(fā)送出去。命令發(fā)送后,地址為01的儀表會返回所讀取的值,將返回值進行校驗后去除校驗核和結束符,再進行碼值轉換后得到實際要讀取的值。讀取完成后,將讀取出來的值顯示到嵌入式終端屏幕上并放入發(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口的操作接口編譯為一個驅動模塊,并在Linux系統(tǒng)啟動時將驅動模塊加載進內核,這樣就可以將這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路由器內置GPS模塊,它能獲取船舶所在位置的經(jīng)緯度信息和精確的UTC時間信息,并能通過網(wǎng)口輸出。ARM終端軟件通過UDP方式來獲取3G路由器輸出的GPS信息,將信息中的經(jīng)度、緯度和UTC時間解析出來,并將UTC時間轉換為北京時間,最后放入發(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ā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 看門狗線程
船舶內工作環(huán)境復雜,可能會對設備的正常運行造成影響。為確保ARM終端設備始終處于運行狀態(tài),系統(tǒng)利用終端S3C6410處理器內部的看門狗對嵌入式終端的運行狀態(tài)進行檢測。通過軟件開啟看門狗并設置喂狗超時時間為15 s,一旦看門狗在喂狗超時時間內沒有收到喂狗信號,就復位重啟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的條件下進行測試,畫質清晰流暢,能達到較好的監(jiān)控效果。圖5為監(jiān)控端軟件中的船舶燃料信息。
本文針對船舶管理中心對江面作業(yè)的雙燃料船的燃料管理需要,設計了一個船舶燃料管理系統(tǒng),采用ARM實現(xiàn)了對雙燃料船的燃料使用情況和燃料安全狀態(tài)的采集。通過結合3G網(wǎng)絡和VPN技術,解決了船舶中心與船舶遠距離通信的問題,并通過船舶端的視頻服務器實現(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].電子技術應用,2009,35(7):38-41.
[3] 張芳,許學忠,梁建斌,等.基于ARM的嵌入式直升機目標識別系統(tǒng)[J].電子技術應用,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.