吳 煒 顧 益
(南通航運(yùn)職業(yè)技術(shù)學(xué)院,江蘇南通 226010)
機(jī)艙監(jiān)測(cè)與報(bào)警系統(tǒng)是機(jī)艙自動(dòng)化系統(tǒng)的重要組成部分。隨著船舶自動(dòng)化技術(shù)的不斷創(chuàng)新及計(jì)算機(jī)的廣泛運(yùn)用,機(jī)艙監(jiān)測(cè)與報(bào)警系統(tǒng)也需要更新技術(shù)和設(shè)施。本文將以虛擬儀器技術(shù)的自動(dòng)化檢測(cè)技術(shù)為核心,從基礎(chǔ)開(kāi)始,簡(jiǎn)析硬件和軟件設(shè)計(jì)、信號(hào)測(cè)量、報(bào)警、顯示等方面的技術(shù),開(kāi)發(fā)了滿足規(guī)范要求,功能完善,自動(dòng)化水平高的機(jī)艙監(jiān)測(cè)系統(tǒng),系統(tǒng)總體運(yùn)行效果穩(wěn)定、可靠,集成性高,互操性強(qiáng),對(duì)實(shí)現(xiàn)船舶機(jī)艙的數(shù)字化和網(wǎng)絡(luò)化管理有參考價(jià)值。
系統(tǒng)主要包含三個(gè)方面:一是底層傳感器與調(diào)理電路;二是底層下位機(jī)數(shù)據(jù)采集發(fā)送與顯示模塊,可以對(duì)傳感器信息轉(zhuǎn)譯成簡(jiǎn)單、清晰的代碼;三是上位機(jī)主控主顯模塊,可以接收下位機(jī)代碼,并可實(shí)現(xiàn)編碼解碼、存儲(chǔ)、數(shù)據(jù)分析、虛擬儀表表示等功能,系統(tǒng)構(gòu)建如圖1。
硬件部分由主服務(wù)器、監(jiān)控顯示計(jì)算機(jī)、智能I/O模塊、通信電纜、專用鍵盤(pán)、打印機(jī)、傳感器、延伸報(bào)警板等組成。本系統(tǒng)能對(duì)包括主機(jī)、電站、滑油、燃油、鍋爐、冷卻水等的主要系統(tǒng)共735[1]個(gè)監(jiān)測(cè)點(diǎn)進(jìn)行監(jiān)測(cè)。通過(guò)虛擬儀表技術(shù)能將數(shù)據(jù)如壓力、溫度、流量、電壓、電流、功率等形象地顯示出來(lái)。
系統(tǒng)的軟件部分主要由兩部分組成:一是下位機(jī)數(shù)據(jù)采集發(fā)送與顯示模塊;二是上位機(jī)數(shù)據(jù)接收與顯示模塊。
機(jī)艙中需要監(jiān)測(cè)的參數(shù)很多,本文重點(diǎn)介紹各采樣點(diǎn)溫度處理,其余信號(hào)(如壓力、液位、轉(zhuǎn)速等)后續(xù)處理與溫度處理方法相同,不作贅述。本研究溫度傳感器采用DS18B20數(shù)字溫度傳感器,下位機(jī)主處理器采用STC89C52單片機(jī)。
STC89C52單片機(jī)內(nèi)部有一個(gè)可編程的全雙工串行通信接口,可以同時(shí)進(jìn)行數(shù)據(jù)發(fā)送和接收,通過(guò)軟件編程設(shè)置多種波特率和工作方式,不但可實(shí)現(xiàn)串行異步通信,還可作為同步移位寄存器使用。
為實(shí)現(xiàn)上位機(jī)數(shù)據(jù)采集,STC89C52單片機(jī)P3.0、P3.1端口與 MAX232的12和11端口相接[2]。
本研究使用Keil C語(yǔ)言進(jìn)行程序開(kāi)發(fā)。主程序調(diào)用了7個(gè)子程序,分別是鍵盤(pán)掃描以及按鍵處理程序、串行通信初始化程序、數(shù)碼管顯示兼串行發(fā)送數(shù)據(jù)程序、溫度轉(zhuǎn)換命令程序、讀取轉(zhuǎn)換溫度值程序、溫度值BCD碼處理程序、BCD碼刷新程序。
將各個(gè)功能程序以子程序的形式寫(xiě)好,當(dāng)寫(xiě)主程序的時(shí)候,只需要調(diào)用子程序,然后在寄存器的分配上作一下調(diào)整,消除寄存器沖突和I/O沖突即可,將功能程序段寫(xiě)成子程序的形式,除了方便調(diào)用之外,還有一個(gè)好處那就是以后寫(xiě)程序的時(shí)候如果要用到,就可以直接調(diào)用這個(gè)單元功能模塊。圖2為L(zhǎng)ED顯示及串口發(fā)送子程序流程圖。
3.2.1 開(kāi)發(fā)工具
C#是一種安全穩(wěn)定簡(jiǎn)單的,由C和C++衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒(méi)有宏以及不允許多重繼承)。C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.NET開(kāi)發(fā)的首選語(yǔ)言。在本系統(tǒng)的開(kāi)發(fā)語(yǔ)言環(huán)境中,采用C# 程序語(yǔ)言作為開(kāi)發(fā)工具。
3.2.2 上位機(jī)與下位機(jī)之間的數(shù)據(jù)通信
在.NET Framework 2.0中提供了 Serial-Port類,該類主要實(shí)現(xiàn)串口數(shù)據(jù)通信等。在C#窗口編程中用到的若干個(gè)serialport、label、button公共控件來(lái)實(shí)現(xiàn)串口通信編程,同時(shí)使用Textbox文本控件、comboBox組合框控件配合編程,使得軟件設(shè)計(jì)的人機(jī)界面更友好,此外本設(shè)計(jì)還采用了第三方軟件VB開(kāi)發(fā)的虛擬儀表組件,實(shí)現(xiàn)更加符合實(shí)際的可視化虛擬儀表顯示。
圖2 LED顯示及串口發(fā)送子程序流程圖
其中,serialport、comboBox用于設(shè)置串口名稱、串行通信波特率和提供編制串行通信程序方法。Button用于控制serialport的開(kāi)關(guān)及串口號(hào)及波特率選擇,label用于顯示串口工況,Textbox用于編制串口通信數(shù)據(jù)在屏幕上的顯示界面,表示串口通信接收數(shù)據(jù)在屏幕上的顯示及用于輸入發(fā)送給單片機(jī)的控制命令[3]。
虛擬儀表可視化表達(dá),相應(yīng)串口數(shù)據(jù)采集后,委托的液位、溫度數(shù)據(jù)容器(文本框)獲得數(shù)值,數(shù)值變化事件觸發(fā)虛擬儀表表示的變化,程序例句如下:
系統(tǒng)上位機(jī)數(shù)據(jù)采集演示界面如圖3。經(jīng)試驗(yàn)驗(yàn)證,系統(tǒng)上位機(jī)數(shù)據(jù)采集數(shù)值與虛擬儀表顯示能實(shí)時(shí)采集下位機(jī)數(shù)據(jù),上位機(jī)與下位機(jī)數(shù)據(jù)能保持同步。
圖3 系統(tǒng)上位機(jī)數(shù)據(jù)采集演示界面
本研究方法能滿足船舶機(jī)艙監(jiān)測(cè)與報(bào)警需求,監(jiān)測(cè)結(jié)果能滿足實(shí)際需要,方案可行,易于工程化。
1 張 旭,李迪陽(yáng),孫建波,郭 晨.舶機(jī)艙監(jiān)測(cè)報(bào)警系統(tǒng)[J].計(jì)算機(jī)工程與應(yīng)用,2005(22):229-232.
2 曲貴波,喬爽.PC機(jī)與單片機(jī)串行通信的實(shí)現(xiàn)方法探討[J].交通科技與經(jīng)濟(jì),2005(3):46-47.
3 翟希述.基于Visual C#的串口通信程序設(shè)計(jì)[J].電子科技,2011(2):24-26.
武漢船舶職業(yè)技術(shù)學(xué)院學(xué)報(bào)2014年3期