999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Visual C++6.0的船舶電站實(shí)時(shí)監(jiān)控系統(tǒng)研究

2008-04-24 05:06:44關(guān)紅兵,黃溫赟,史延興
中國(guó)艦船研究 2008年4期
關(guān)鍵詞:單片機(jī)系統(tǒng)

1 引 言

Visual C++6.0[1]是Microsoft公司Visual Studio系列的一個(gè)重要產(chǎn)品,是一個(gè)功能強(qiáng)大的信息可視化開(kāi)發(fā)工具。它的開(kāi)發(fā)環(huán)境包含文本編輯器(Text Editor)、資源編輯器(Resource Editor)、源代碼瀏覽器(SourceCode Browser)、C/C++編譯器(C/C++ Compiler)、調(diào)試器(Debugger)、連接器(Linker)及MSDN在線幫助系統(tǒng)等。

為了幫助編程者處理通常復(fù)雜而又繁瑣的有關(guān)Windows的工作,Visual C++ 6.0設(shè)計(jì)了一套類庫(kù)(MFC ) , 把軟件開(kāi)發(fā)平臺(tái)SDK (SoftwareDevelopment Kit)中的大多數(shù)內(nèi)容封裝成為各種類。有了MFC,編程人員可以充分發(fā)揮C++的優(yōu)勢(shì),專注于程序的特殊部分,不需重復(fù)處理Windows必須處理的復(fù)雜工作,提高了編程效率和代碼效率。MFC應(yīng)用程序向?qū)?AppWizard)和MFC類向?qū)?ClassWizard)是Visual C++ 6.0最重要的兩大開(kāi)發(fā)工具。Visual C++ 6.0應(yīng)用程序的創(chuàng)建過(guò)程如圖1所示。

圖1 Visual C++ 6.0應(yīng)用程序創(chuàng)建過(guò)程

Visual C++ 6.0作為一種通用程序開(kāi)發(fā)系統(tǒng),以其強(qiáng)大的數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)分析功能在現(xiàn)代測(cè)控領(lǐng)域中得到了廣泛的應(yīng)用。在對(duì)硬件的支持方面,Visual C++ 6.0集成了與RS-232/485、PLC和插入式數(shù)字采集設(shè)備等進(jìn)行數(shù)據(jù)通信的全部功能,利用Windows技術(shù)的優(yōu)點(diǎn),在Visual C++ 6.0開(kāi)發(fā)平臺(tái)下,設(shè)計(jì)了船舶電站實(shí)時(shí)監(jiān)控系統(tǒng)。

2 系統(tǒng)構(gòu)成

船舶電站[2]實(shí)時(shí)監(jiān)控系統(tǒng)由PC機(jī)、單片機(jī)和RS-485總線組成兩級(jí)控制模式,軟件協(xié)議采用支持RS-485網(wǎng)絡(luò)的Modbus ASCII[3]協(xié)議,數(shù)據(jù)存儲(chǔ)用ACCESS 2003[4]數(shù)據(jù)庫(kù)(圖2)。

圖2 船舶電站柴油發(fā)電機(jī)組監(jiān)控系統(tǒng)結(jié)構(gòu)框圖

由于工控機(jī)(安裝在集控室)具有實(shí)時(shí)性好、可靠性高、輸入/輸出能力和網(wǎng)絡(luò)支持能力強(qiáng)等普通計(jì)算機(jī)不可比擬的優(yōu)點(diǎn),故選用工控機(jī)作為上級(jí)監(jiān)督計(jì)算機(jī)控制系統(tǒng)SCC(Supervisory Computer Control),完成對(duì)柴油發(fā)電機(jī)組運(yùn)行狀態(tài)實(shí)時(shí)監(jiān)控和運(yùn)行參數(shù)的在線設(shè)置,遙控柴油發(fā)電機(jī)組啟動(dòng)/停止。選用“凌陽(yáng)”16位單片機(jī)u′nSPTM(安裝在主配電板內(nèi))作為底層控制級(jí),與柴油發(fā)電機(jī)組這一控制對(duì)象一起組成直接數(shù)字控制系統(tǒng)DDC( Direct Digital Control),完成對(duì)柴油發(fā)電機(jī)組的啟動(dòng)、停機(jī)、怠速運(yùn)行、故障報(bào)警、參數(shù)檢測(cè)等多種控制。利用RS-485通信網(wǎng)絡(luò)可支持多達(dá)256個(gè)接收器或發(fā)送器的特點(diǎn),使用1臺(tái)PC機(jī)運(yùn)用Visual C++ 6.0軟件即可監(jiān)控多套柴油發(fā)電機(jī)組的運(yùn)行。單片機(jī)具有價(jià)格便宜、編程容易、接口簡(jiǎn)單等優(yōu)點(diǎn),但單片機(jī)不具備人機(jī)接口界面。為了易于操作并實(shí)現(xiàn)遠(yuǎn)距離監(jiān)控船舶電站的運(yùn)行狀態(tài),本系統(tǒng)在Visual C++ 6.0集成環(huán)境下開(kāi)發(fā)界面友好的監(jiān)控軟件[5],通過(guò)單片機(jī)的硬件接口,以實(shí)時(shí)通信的方式,實(shí)現(xiàn)工控機(jī)與單片機(jī)之間的通信,完成對(duì)船舶電站的實(shí)時(shí)監(jiān)控和相關(guān)操作。

3 實(shí)時(shí)監(jiān)控系統(tǒng)的實(shí)現(xiàn)

3.1 系統(tǒng)模塊的劃分

軟件程序主要完成數(shù)據(jù)采集、分析、顯示、存儲(chǔ)、管理以及打印等功能,所以模塊劃分為串口通信模塊、預(yù)報(bào)警模塊、數(shù)據(jù)打印模塊、數(shù)據(jù)庫(kù)模塊等。各模塊關(guān)系如圖3所示,其中箭頭表示數(shù)據(jù)流向。

圖3 軟件系統(tǒng)模塊結(jié)構(gòu)示意圖

3.2 系統(tǒng)模塊軟件實(shí)現(xiàn)關(guān)系

系統(tǒng)模塊軟件實(shí)現(xiàn)關(guān)系如圖4所示,其中寬箭頭表示數(shù)據(jù)流向。

圖4 系統(tǒng)模塊實(shí)現(xiàn)關(guān)系

3.3 串口類通信

串口通信使用編寫的類CSerialPort,將SerialPort.h SerialPort.cpp兩個(gè)類文件復(fù)制到工程文件夾中,用Project-Add to Project-Files命令將上述兩個(gè)文件加入工程,并在MinitorSystem.h中將頭文件SerialPort.h說(shuō)明:#include“SerialPort.h”。CSerialPort類在串口數(shù)據(jù)到達(dá)時(shí),將數(shù)據(jù)發(fā)送到程序主窗口。

使用函數(shù)關(guān)鍵代碼如下:

1) 串口初始化函數(shù)InitPort ( );

2) 啟動(dòng)串口通信監(jiān)測(cè)線程函數(shù)StartMonitoring()來(lái)啟動(dòng)串口;

3) 接收字符函數(shù)ReceiveChar(),被CommThread()線程調(diào)用發(fā)送消息等待主線程來(lái)處理接收字符;

4) 通過(guò)串口發(fā)送字符/寫串口函數(shù)WriteToPort( ),調(diào)用WriteChar()完成發(fā)送任務(wù),和ReceiveChar()處理過(guò)程基本一致;

5) 停止監(jiān)測(cè)線程函數(shù)StopMonitoring();

6) 關(guān)閉串口函數(shù)C1osePort ( )。

相應(yīng)的串口消息處理函數(shù),要手動(dòng)添加消息處理函數(shù),步驟如下:

( 1) .h文件中添加:

// Generated message map functions

//{{AFX_MSG(MinitorSystemDlg)

afx_msg LONG OnComm(WPARAM ch, LPARAM port);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

( 2) cpp文件中添加:

BEGIN_ MESSAGE_ MAP(MinitorSystemDlg, CDialog)

//{{AFX_MSG_MAP (MinitorSystemDlg)

ON_ MESSAGE(WM_COMM_RXCHAR, OnComm)

//}}AFX_MSG_MAP

END_ MESSAGE_ MAP()

(3) LONG MinitorSystemDlg::OnComm

(WPARAM ch, LPARAM port)

{

/ /接收字符

}

3.4 數(shù)據(jù)庫(kù)模塊

ADO(ActiveX Data Object)ActiveX數(shù)據(jù)對(duì)象,是基于OLE DB的訪問(wèn)接口,它是面向?qū)ο蟮腛LE DB技術(shù)。ADO對(duì)ACCESS數(shù)據(jù)庫(kù)開(kāi)發(fā)的基本流程及它的基本步驟如下:

1) 初始化COM庫(kù)

CoInitialize(NULL)初始化OLE/COM庫(kù)環(huán)境;引入ADO庫(kù)定義文件:#import "c:program filescommon filessystemadomsado15.dll" o_namespace ename ("EOF", "adoEOF");#import包含后就可以用3個(gè)智能指針:_ConnectionPtr、_RecordsetPtr和_CommandPtr了;

2) 用Connection對(duì)象連接數(shù)據(jù)庫(kù);

3) 利用建立好的連接,利用Recordset對(duì)象執(zhí)行SQL命令,取得結(jié)果記錄集進(jìn)行查詢、處理;

4) 使用完畢后關(guān)閉連接釋放對(duì)象。

聯(lián)機(jī)調(diào)試的數(shù)據(jù)庫(kù)顯示實(shí)現(xiàn)效果如圖5所示。

圖5 歷史記錄顯示

3.5 報(bào)警模塊

程序采用聲光報(bào)警,使用多媒體實(shí)現(xiàn)聲音報(bào)警。當(dāng)滿足報(bào)警所需要的條件時(shí),界面上小燈由綠變紅,并且發(fā)出報(bào)警聲,完成報(bào)警功能。

在用VC++ 6. 0開(kāi)發(fā)多媒體應(yīng)用時(shí),必須在所有要用到多媒體函數(shù)的源程序中,包含MMSYSTEM.H頭文件,并且該文件位置應(yīng)在Windows.H頭文件的后面。另外,在連接程序時(shí)要用到WINMM.LIB引入庫(kù),在Project→Settings對(duì)話框的Link頁(yè)的Object/library modusles欄中加入WINMM.LIB,或者在源程序中加入:# pragma comment (lib, “winmm.lib”)。

本文采用把聲音文件加入到資源中,然后從資源中播放聲音的方式。VC++ 6.0支持WAVE型資源,并把聲音文件導(dǎo)入到WAVE資源中,設(shè)置聲音資源的ID為IDR_ WARN。滿足報(bào)警條件時(shí),下面的調(diào)用會(huì)輸出報(bào)警聲音:

P1aySound((LPCTSTR)IDR_WARN,AfxGetlnstanceHandle(),SND_RESOURC|SND_ASYNC)

聯(lián)機(jī)調(diào)試的實(shí)現(xiàn)效果如圖6所示。

圖6 在線預(yù)警、報(bào)警效果顯示圖

3.6 打印報(bào)表

在程序中操作Word文檔,需要先在程序中啟動(dòng)Word應(yīng)用程序,然后獲得Word文檔管理對(duì)象(Documents),通過(guò)文檔管理對(duì)象添加文檔對(duì)象(_document),由文檔對(duì)象獲得選區(qū)(Range),再通過(guò)選區(qū)向文檔中添加表格(Tables),最后通過(guò)(Selection)移動(dòng)光標(biāo)位置并向表格中插入數(shù)據(jù)。

由于記錄數(shù)據(jù)表數(shù)據(jù)項(xiàng)比較多,所以要進(jìn)行橫向預(yù)覽。聯(lián)機(jī)調(diào)試的運(yùn)行效果如圖7所示。

圖7 歷史數(shù)據(jù)打印預(yù)覽

4 結(jié) 語(yǔ)

基于VC++ 6.0的船舶電站實(shí)時(shí)監(jiān)控系統(tǒng)在船舶電站實(shí)驗(yàn)室進(jìn)行了實(shí)機(jī)調(diào)試,成功地實(shí)現(xiàn)了對(duì)2套船用柴油發(fā)電機(jī)組的現(xiàn)場(chǎng)監(jiān)控和數(shù)據(jù)的相關(guān)處理,系統(tǒng)運(yùn)行穩(wěn)定、可靠,監(jiān)控功能完善,界面友好,可視性強(qiáng)。

[1] 明日科技.Visual C++程序開(kāi)發(fā)范例寶典[M].北京:人民郵電出版社,2007.

[2] 王煥文.艦船電力系統(tǒng)及自動(dòng)裝置[M].北京:科學(xué)出版社,2004.

[3] ODICON M.Inc.Modbus Protocol Reference Guide [M].

1996.

[4] 向中凡.Access2000實(shí)用操作與技巧[M].西安:西安電子科技大學(xué)出版社,2000.

[5] 杜鴻震. 基于VC 6.0的相繼增壓柴油機(jī)試驗(yàn)臺(tái)監(jiān)控系統(tǒng)軟件設(shè)計(jì)[D].哈爾濱:哈爾濱工程大學(xué),2006.

猜你喜歡
單片機(jī)系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于PowerPC+FPGA顯示系統(tǒng)
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
電子制作(2019年9期)2019-05-30 09:42:02
半沸制皂系統(tǒng)(下)
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
主站蜘蛛池模板: 在线欧美一区| 国产青榴视频| 夜夜操天天摸| 伊人久久大线影院首页| 欧美成人国产| 久久青草免费91观看| 午夜在线不卡| 本亚洲精品网站| 欧洲亚洲一区| 欧美不卡视频在线观看| 亚洲国产成人久久精品软件| 在线观看国产网址你懂的| 国产凹凸视频在线观看| 国产成人亚洲无吗淙合青草| 亚洲va在线观看| 国产区在线看| 99国产精品免费观看视频| 国产精品网拍在线| 无码综合天天久久综合网| 亚洲欧洲美色一区二区三区| 国产专区综合另类日韩一区| 91久久偷偷做嫩草影院电| 国产精品冒白浆免费视频| 亚洲日本韩在线观看| 亚洲第一成人在线| 亚洲一级毛片在线观| 欧美亚洲一区二区三区在线| 亚瑟天堂久久一区二区影院| 97视频精品全国在线观看| 亚洲浓毛av| 亚洲人成亚洲精品| 国产欧美精品一区aⅴ影院| 久久黄色免费电影| 在线观看无码av免费不卡网站| 国产视频a| 精品久久久无码专区中文字幕| 波多野吉衣一区二区三区av| 日韩国产高清无码| 99国产在线视频| 欧美成人看片一区二区三区| 国产成本人片免费a∨短片| 国产高清自拍视频| 在线免费a视频| 国产精品无码作爱| 国产91丝袜| 成人免费午间影院在线观看| 午夜啪啪网| 国产成人无码AV在线播放动漫| 伊人久久精品亚洲午夜| 第一区免费在线观看| 亚洲天堂日本| 超级碰免费视频91| 欧美视频在线观看第一页| 色亚洲成人| 欧美a在线看| 亚洲日韩高清在线亚洲专区| 久久精品只有这里有| 亚洲男人的天堂久久精品| 色亚洲激情综合精品无码视频| 91福利在线观看视频| 视频二区亚洲精品| 亚洲成人黄色网址| 亚洲动漫h| 国产精品免费电影| 久久婷婷六月| 亚洲欧美在线综合图区| 国产欧美日韩专区发布| 国产99在线| 尤物精品国产福利网站| 亚洲日韩AV无码精品| 久久永久视频| 亚洲一区二区三区麻豆| 国产91无码福利在线| 婷婷综合在线观看丁香| 精品综合久久久久久97超人| 黄色三级网站免费| 国产亚洲欧美在线中文bt天堂 | 亚洲欧美日韩中文字幕在线| 中文字幕第4页| 国产精品专区第1页| 怡春院欧美一区二区三区免费| 特级精品毛片免费观看|