1、 前言
本文是以筆者參與的某啤酒廠的監(jiān)控系統(tǒng)實(shí)現(xiàn)的項(xiàng)目為背景,。由于現(xiàn)場(chǎng)的PLC或單片機(jī)控制系統(tǒng)的資源,、功能有限,不能長(zhǎng)期保存數(shù)據(jù)
,,人機(jī)界面差,,因此一般采用工控機(jī)作為上位機(jī),把現(xiàn)場(chǎng)數(shù)據(jù)通過(guò)數(shù)據(jù)采集站送入上位機(jī),,這樣組成一個(gè)測(cè)控系統(tǒng),。上位機(jī)豐富的資源可以對(duì)
采集到的數(shù)據(jù)進(jìn)行分析,存盤,,運(yùn)算,、打印、報(bào)警并進(jìn)行各種相應(yīng)顯示,。上位機(jī)形象的人機(jī)界面可使操作員更直觀,,全面的了解現(xiàn)場(chǎng)的情況,。
采用Intouch、VB來(lái)實(shí)現(xiàn)上,、下兩層的通信,,簡(jiǎn)單、明了,。
?。病?系統(tǒng)結(jié)構(gòu)
筆者參與的監(jiān)控系統(tǒng)呈兩層分布式體系結(jié)構(gòu):數(shù)據(jù)采集層和監(jiān)控層,。數(shù)據(jù)采集層主要采用數(shù)據(jù)通信標(biāo)準(zhǔn)接口,;監(jiān)控層屬于局域網(wǎng),遵循局
域網(wǎng)的協(xié)議標(biāo)準(zhǔn),。數(shù)采層進(jìn)行數(shù)據(jù)的采集,、處理將數(shù)據(jù)傳遞到上一層;監(jiān)控層共享數(shù)采層傳來(lái)的數(shù)據(jù),。
該系統(tǒng)的數(shù)采層由多臺(tái)測(cè)控裝置組成,。這些測(cè)控裝置采用RS-485標(biāo)準(zhǔn)總線與數(shù)采管理站通信。在軟件方面采用VB來(lái)實(shí)現(xiàn)測(cè)控裝置
數(shù)采程序,,它主要完成上位機(jī)與測(cè)控裝置之間的數(shù)據(jù)通信和所采集數(shù)據(jù)的DDE(動(dòng)態(tài)數(shù)據(jù)交換)轉(zhuǎn)換功能,。
在工控機(jī)上的人機(jī)界面則采用監(jiān)控平臺(tái)軟件來(lái)實(shí)現(xiàn)。目前較為流行的監(jiān)控平臺(tái)軟件有Heuristics公司的ONSPEC,、Int
ellution公司的FIX和Wonderare公司的InTouch等,。InTouch監(jiān)控軟件作為一個(gè)實(shí)時(shí)的人機(jī)界面實(shí)用程序
生成器,可以產(chǎn)生在管理級(jí)別上的監(jiān)控和數(shù)據(jù)采集程序,。它具有開(kāi)發(fā)周期短,、可以生成復(fù)雜的、友好的交互式圖形界面,,組態(tài)靈活的優(yōu)點(diǎn),,是
目前工業(yè)控制領(lǐng)域中簡(jiǎn)便易用的“快速應(yīng)用程序生成器”。但它必須采用DDE的數(shù)據(jù)交換方式與DDE服務(wù)器連接來(lái)獲得數(shù)據(jù),。此時(shí)用戶編
制的運(yùn)行于數(shù)采站上的VB應(yīng)用程序充當(dāng)DDE服務(wù)器,,如圖一所示。將VB和Intouch結(jié)合起來(lái),,協(xié)同工作,,可以發(fā)揮各自優(yōu)點(diǎn)。
?。?、 系統(tǒng)DDE實(shí)現(xiàn)
該啤酒長(zhǎng)系統(tǒng)在Windows環(huán)境下以動(dòng)態(tài)數(shù)據(jù)交換機(jī)制實(shí)現(xiàn)系統(tǒng)的實(shí)時(shí)數(shù)據(jù)共享。如圖2所示:
首先,,數(shù)采層采集處理后的數(shù)據(jù)送到數(shù)采管理站,,轉(zhuǎn)換成DDE型數(shù)據(jù),;然后,借助于NETDDE機(jī)制,,數(shù)采管理站把實(shí)時(shí)數(shù)據(jù)送至工
程師站,。工程師站作為NT域控制器,再借助于NETDDE機(jī)制實(shí)現(xiàn)與其他各監(jiān)視站之間的動(dòng)態(tài)數(shù)據(jù)交換,。由于各站之間建立了“熱連接”
鏈路,,作為服務(wù)器一方總是在數(shù)據(jù)變化時(shí)主動(dòng)發(fā)送數(shù)據(jù)給客戶方。即當(dāng)數(shù)采管理站采集的數(shù)據(jù)發(fā)生變化時(shí)自動(dòng)反應(yīng)到工程師站,。在現(xiàn)場(chǎng)實(shí)時(shí)數(shù)
據(jù)的傳送上,,工程師站既作為數(shù)采管理站的客戶,又作為其它各監(jiān)視站的服務(wù)器,。
系統(tǒng)的動(dòng)態(tài)數(shù)據(jù)交換實(shí)現(xiàn)分為三個(gè)方面:
?、?采管理站的DDE數(shù)據(jù)類型的數(shù)據(jù)產(chǎn)生。
?、?監(jiān)控層應(yīng)用程序的DDE組態(tài),。
③ 構(gòu)造NETDDE應(yīng)用程序,。
?。场ⅲ?用VB 編制DDE程序VB 是開(kāi)發(fā)Windows應(yīng)用程序的一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,,他支持Windows環(huán)境下的DDE通信機(jī)制,。VB提供了動(dòng)態(tài)數(shù)據(jù)交換的Link Topic連接主題 ,Link Item連接項(xiàng) ,,Link Timeout連接等待時(shí)間 和Linkmode(連接模式)四項(xiàng)屬性,。在應(yīng)用程序編制時(shí),根據(jù)DDE原理,,把應(yīng)用程序的可執(zhí)行文件名去掉EXE后綴,,則成為DDE中的Topic。Linkmode有Manual手工 ,,Notify通知 ,和Automatic自動(dòng) 三種方式,。在這個(gè)系統(tǒng)中我們采用Automatic自動(dòng) 方式,。數(shù)采管理站的巡測(cè)數(shù)采程序的流程圖如下:
測(cè)控裝置采用RS-485接口標(biāo)準(zhǔn),因此某一時(shí)刻只能有一個(gè)站發(fā)送數(shù)據(jù),,其余站只能接口,。在該測(cè)控裝置的通信協(xié)議中,由主機(jī)以召喚方式向測(cè)控裝置發(fā)送送數(shù)命令和相應(yīng)機(jī)號(hào),,只有與主機(jī)發(fā)送的機(jī)號(hào)一致的測(cè)控裝置才允許發(fā)送數(shù)據(jù),。
此VB程序作為DDE服務(wù)器,,在VB中只有窗體可以作為服務(wù)器,在程序的初始化部分應(yīng)進(jìn)行DDE設(shè)置,,程序段如下:
?。妫铮颍恚保欤椋睿耄恚铮洌澹剑?br />
form1.linktopic=form1
在窗體上放置了mscomm控件用于控制串行端口傳輸和接受數(shù)據(jù),,為應(yīng)用程序提供串行通信功能,。
Mscomm1.comport=2
?。停螅悖铮恚恚保螅澹簦簦椋睿纾螅?#39;9600n81''設(shè)定該通信口的波特率,、奇偶校驗(yàn)、數(shù)據(jù)位,、停止位
?。停螅悖铮恚恚保椋睿穑酰簦欤澹睿剑?'使用Input將使Mscomm控件讀取接收緩'沖區(qū)中全部的內(nèi)容
Mscomm1.Portopen
窗體上的定時(shí)器控件timer1,,用于定時(shí)兩秒,,當(dāng)定時(shí)到時(shí),發(fā)送FE命令,,要求測(cè)控裝置發(fā)送數(shù)據(jù),。其程序?qū)崿F(xiàn)如下:
mscomm1.output=″fe″+chr$13 '輸出FE命令
?。恚螅悖铮恚恚保铮酰簦穑酰簦?Prime;tank″ 'tank為機(jī)號(hào)
當(dāng)數(shù)據(jù)由測(cè)控裝置送到數(shù)采站時(shí)將觸發(fā)mscomm控件的oncomm事件,,在此事件處理句柄中完成讀入數(shù)據(jù)的功能。
?。拢酰妫妫澹颍螅簦颍椋睿纾剑恚螅悖铮恚恚保椋睿穑酰?'讀入緩沖區(qū)內(nèi)容
?。桑?Bufferstring<>'ff' then
Text2.text= Bufferstring+text2.text
這樣讀入的數(shù)據(jù)就顯示在Text2文本框中,。
?。常脖O(jiān)控層應(yīng)用程序的DDE組態(tài)
監(jiān)控層應(yīng)用程序主要執(zhí)行InTouch中的WonderViewer,而InTouch正是借助DDE與其它軟件聯(lián)合工作,。
?。桑睿裕铮酰悖枋怯糜诮⑷藱C(jī)接口的一種軟件包。它包括WonderViewer和WonderMaker兩大部分,。使用InTouch軟件只需建立一個(gè)標(biāo)記名字典,,再利用WonderMaker的圖形功能把被控對(duì)象形象的畫出來(lái),在PC機(jī)上就可以把整個(gè)對(duì)象描繪出來(lái),。InTouch只需在標(biāo)記名字典中指明標(biāo)記名為DDE特性,,同時(shí)指定應(yīng)用程序的服務(wù)名和話題名,WonderViewer可自動(dòng)執(zhí)行獲取數(shù)據(jù)點(diǎn)的全部操作,。
?。桑睿裕铮酰悖杓瓤梢宰鳛榭蛻粲挚梢宰鳛榉?wù)器,。通過(guò)NETBIOS DDE的網(wǎng)絡(luò)接口,可使機(jī)制建立起3個(gè)層次,,因此監(jiān)控層應(yīng)用程序的DDE組態(tài)分為兩大部分:
?、?工程師站的DDE組態(tài)
DDE用項(xiàng)名,、主題名,、應(yīng)用程序名三個(gè)層次來(lái)標(biāo)識(shí)客戶與服務(wù)器之間傳遞的數(shù)據(jù)單位,通常表示為:應(yīng)用程序名|主題名,!項(xiàng)名,;對(duì)于客戶,應(yīng)按三個(gè)層次去連接相應(yīng)的數(shù)據(jù),。工程師站作為數(shù)采站的DDE客戶,。在InTouch的標(biāo)簽庫(kù)中,提供了DDE設(shè)置框,,使得DDE組態(tài)簡(jiǎn)便,、易行。
工程師站中的層次標(biāo)識(shí)為:\\shucai\dde1|form1text2.text 數(shù)采站的節(jié)點(diǎn),,dde1為數(shù)采站上的VB應(yīng)用程序名 ,。
② 其它各監(jiān)視站的DDE組態(tài)
這主要是建立各監(jiān)視站與工程師站的DDE 連接,。此時(shí)工程師站作為DDE服務(wù)器,,其它各監(jiān)視站作為客戶從工程師站上取數(shù)據(jù)。建立DDE連接的過(guò)程與上述類似,。
?。础?結(jié)論
?。郑率且环N優(yōu)秀的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,,采用它編制Windows環(huán)境下的上位機(jī)串行通信軟件,程序?qū)崿F(xiàn)簡(jiǎn)單,,減輕了軟件開(kāi)發(fā)的工作,。用InTouch監(jiān)控程序軟件完成復(fù)雜的圖形截面,方便快捷,。VB應(yīng)用程序一方面作為DDE服務(wù)器同InTouch進(jìn)行數(shù)據(jù)交換,,另一方面通過(guò)Windows提供的串行通信設(shè)備驅(qū)動(dòng)程序與低層的測(cè)控裝置進(jìn)行串行通信。對(duì)于用戶只與InTouch友好人機(jī)界面打交道,。實(shí)際運(yùn)行證明該通信軟件可靠,,操作方便,。
參考文獻(xiàn)
?。?、 瞿坦,數(shù)據(jù)通信及網(wǎng)絡(luò)通信,, 華中理工大學(xué)
?。病?張?chǎng)?,?jì)算機(jī)散控制系統(tǒng),,水利電力出版社