吳 煒 顧 益
(南通航運職業技術學院,江蘇南通 226010)
機艙監測與報警系統是機艙自動化系統的重要組成部分。隨著船舶自動化技術的不斷創新及計算機的廣泛運用,機艙監測與報警系統也需要更新技術和設施。本文將以虛擬儀器技術的自動化檢測技術為核心,從基礎開始,簡析硬件和軟件設計、信號測量、報警、顯示等方面的技術,開發了滿足規范要求,功能完善,自動化水平高的機艙監測系統,系統總體運行效果穩定、可靠,集成性高,互操性強,對實現船舶機艙的數字化和網絡化管理有參考價值。
系統主要包含三個方面:一是底層傳感器與調理電路;二是底層下位機數據采集發送與顯示模塊,可以對傳感器信息轉譯成簡單、清晰的代碼;三是上位機主控主顯模塊,可以接收下位機代碼,并可實現編碼解碼、存儲、數據分析、虛擬儀表表示等功能,系統構建如圖1。
硬件部分由主服務器、監控顯示計算機、智能I/O模塊、通信電纜、專用鍵盤、打印機、傳感器、延伸報警板等組成。本系統能對包括主機、電站、滑油、燃油、鍋爐、冷卻水等的主要系統共735[1]個監測點進行監測。通過虛擬儀表技術能將數據如壓力、溫度、流量、電壓、電流、功率等形象地顯示出來。
系統的軟件部分主要由兩部分組成:一是下位機數據采集發送與顯示模塊;二是上位機數據接收與顯示模塊。
機艙中需要監測的參數很多,本文重點介紹各采樣點溫度處理,其余信號(如壓力、液位、轉速等)后續處理與溫度處理方法相同,不作贅述。本研究溫度傳感器采用DS18B20數字溫度傳感器,下位機主處理器采用STC89C52單片機。
STC89C52單片機內部有一個可編程的全雙工串行通信接口,可以同時進行數據發送和接收,通過軟件編程設置多種波特率和工作方式,不但可實現串行異步通信,還可作為同步移位寄存器使用。
為實現上位機數據采集,STC89C52單片機P3.0、P3.1端口與 MAX232的12和11端口相接[2]。
本研究使用Keil C語言進行程序開發。主程序調用了7個子程序,分別是鍵盤掃描以及按鍵處理程序、串行通信初始化程序、數碼管顯示兼串行發送數據程序、溫度轉換命令程序、讀取轉換溫度值程序、溫度值BCD碼處理程序、BCD碼刷新程序。
將各個功能程序以子程序的形式寫好,當寫主程序的時候,只需要調用子程序,然后在寄存器的分配上作一下調整,消除寄存器沖突和I/O沖突即可,將功能程序段寫成子程序的形式,除了方便調用之外,還有一個好處那就是以后寫程序的時候如果要用到,就可以直接調用這個單元功能模塊。圖2為LED顯示及串口發送子程序流程圖。
3.2.1 開發工具
C#是一種安全穩定簡單的,由C和C++衍生出來的面向對象的編程語言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程的支持成為.NET開發的首選語言。在本系統的開發語言環境中,采用C# 程序語言作為開發工具。
3.2.2 上位機與下位機之間的數據通信
在.NET Framework 2.0中提供了 Serial-Port類,該類主要實現串口數據通信等。在C#窗口編程中用到的若干個serialport、label、button公共控件來實現串口通信編程,同時使用Textbox文本控件、comboBox組合框控件配合編程,使得軟件設計的人機界面更友好,此外本設計還采用了第三方軟件VB開發的虛擬儀表組件,實現更加符合實際的可視化虛擬儀表顯示。

圖2 LED顯示及串口發送子程序流程圖
其中,serialport、comboBox用于設置串口名稱、串行通信波特率和提供編制串行通信程序方法。Button用于控制serialport的開關及串口號及波特率選擇,label用于顯示串口工況,Textbox用于編制串口通信數據在屏幕上的顯示界面,表示串口通信接收數據在屏幕上的顯示及用于輸入發送給單片機的控制命令[3]。
虛擬儀表可視化表達,相應串口數據采集后,委托的液位、溫度數據容器(文本框)獲得數值,數值變化事件觸發虛擬儀表表示的變化,程序例句如下:

系統上位機數據采集演示界面如圖3。經試驗驗證,系統上位機數據采集數值與虛擬儀表顯示能實時采集下位機數據,上位機與下位機數據能保持同步。

圖3 系統上位機數據采集演示界面
本研究方法能滿足船舶機艙監測與報警需求,監測結果能滿足實際需要,方案可行,易于工程化。
1 張 旭,李迪陽,孫建波,郭 晨.舶機艙監測報警系統[J].計算機工程與應用,2005(22):229-232.
2 曲貴波,喬爽.PC機與單片機串行通信的實現方法探討[J].交通科技與經濟,2005(3):46-47.
3 翟希述.基于Visual C#的串口通信程序設計[J].電子科技,2011(2):24-26.