相關(guān)鏈接: 中國(guó)安全網(wǎng) 中國(guó)質(zhì)量網(wǎng) 中國(guó)論文網(wǎng) 中國(guó)資訊網(wǎng)
摘 要 本文介紹了利用VB的多種通信手段實(shí)現(xiàn)分布式監(jiān)控系統(tǒng)的多種通信功能,對(duì)每一種通信手段給出其原理和應(yīng)用實(shí)例。
關(guān)鍵詞 VB 通信 串行口 控件 DDE API
The Communication Design of Distributed Control System Based on VBAbstract: This article introduces the realization of many communication functions of Distributed Control System with the application on lots of communication methods of VB.
Key Words: VB, Communication, Serial Port, Control Box, DDE, API
1. 概論分布式監(jiān)控系統(tǒng)已在工業(yè)領(lǐng)域得到廣泛應(yīng)用,許多企業(yè)對(duì)于中小規(guī)模的設(shè)備,如中小型熱電廠和水電站,出于硬件軟件投資利潤(rùn)率和性能價(jià)格比的考慮,常常是自行開發(fā)或參與開發(fā)本企業(yè)的監(jiān)控系統(tǒng)。而許多企業(yè)在成套引進(jìn)大型DCS系統(tǒng)后,也常因?qū)嶋H情況而需要自行開發(fā)或改進(jìn)其監(jiān)控系統(tǒng)。
分布式監(jiān)控系統(tǒng)以微機(jī)為基礎(chǔ),用數(shù)據(jù)通信將微機(jī)連在一起實(shí)現(xiàn)數(shù)據(jù)共享,從而對(duì)工業(yè)過(guò)程進(jìn)行集中監(jiān)視管理和分散控制。因此,分布式監(jiān)控系統(tǒng)中通信的設(shè)計(jì)與實(shí)現(xiàn)是至關(guān)重要的環(huán)節(jié)。Visual Basic開發(fā)語(yǔ)言具有簡(jiǎn)潔明了、編程效率高、開發(fā)周期短的特點(diǎn),利用VB中的多種通信手段,可實(shí)現(xiàn)分布式監(jiān)控系統(tǒng)的多種通信功能。
2. 與下位機(jī)的通信分布式監(jiān)控系統(tǒng)的數(shù)據(jù)采集站可直接與現(xiàn)場(chǎng)帶有標(biāo)準(zhǔn)RS—232C接口的智能儀表、PLC和單片機(jī)等鏈接,并可通過(guò)擴(kuò)展控制卡形成一個(gè)數(shù)據(jù)采集子網(wǎng),以高速準(zhǔn)確地獲取數(shù)據(jù)。VB的MSCOMM通信控件具有完善的串口數(shù)據(jù)發(fā)送和接受功能,利用它可以屏蔽對(duì)硬件的操作,簡(jiǎn)易快捷地進(jìn)行串行通信編程。
本文的實(shí)例為上位機(jī)與OMRON 200HG系列PLC的1:N鏈接通信。帶有RS—485接口通信板的PLC直接掛在RS—485總線上,上位機(jī)通過(guò)RS—232C /RS—485轉(zhuǎn)換器與總線相連,這樣即構(gòu)成數(shù)據(jù)采集子網(wǎng),甚至可以是一個(gè)獨(dú)立的小型分布式監(jiān)控系統(tǒng)。其它儀器儀表設(shè)備,只要是標(biāo)準(zhǔn)串口都可以類似方式直接或間接與上位機(jī)鏈接。
關(guān)于VB的MSCOMM控件可參考相關(guān)資料。本例通信程序摘要如下:
(1) 初始化程序
Mscomm1.Commport=2 ’ 選擇COM2
Mscomm1.Settings=”9600,N,8,2” ’ 設(shè)置通信參數(shù)
Mscomm1.Inputlen=0 ’ 讀入接收緩沖區(qū)全部字符
Mscomm1.OutbufferSize=256 ’ 設(shè)置發(fā)送緩沖區(qū)大小
Mscomm1.InbufferSize=512 ’ 設(shè)置接收緩沖區(qū)大小
Mscomm1.PortOpen=True ’打開COM2
(2) 發(fā)送命令程序
比如讀取節(jié)點(diǎn)號(hào)03的PLC中IR000到IR009的內(nèi)容,并放到tag1字符串變量中,此時(shí)有:
Dim Command, node, begin, number as string
Dim Answerlen as integer
node=”03” ’節(jié)點(diǎn)號(hào)
Command=”RR” ’命令為讀IR區(qū)
begin=”0000” ’從IR000開始
number=10 ’讀取長(zhǎng)度
Answerlen=51 ’計(jì)算接收字符串長(zhǎng)度
進(jìn)行命令發(fā)送和接收應(yīng)答處理:
Dim FCS, I as integer
Dim s ,f as string
s=”@”+node+Commad+begin+number
FCS=0
For i=1 to Len(s)
FCS=FCS xor Asc(Mid$(s,i,1) ) ’幀校驗(yàn)碼FCS
Next i
f=Hex$(FCS)
If Len(f)=1 Then f=”0”+f
Commfrm.MSComm1.Output=s + f + ”*” + CHR$(13) ’命令幀發(fā)送
Do
Dummy=DoEvents()
Loop Untill Commfrm.MSComm1.InbufferCount >= Answerlen ’等待應(yīng)答幀
Do tag1= Commfrm.MSComm1.Input
Loop Untill Commfrm.MSComm1.InbufferCount=0 ’讀完應(yīng)答幀
上述程序具有相當(dāng)?shù)耐ㄓ眯裕瑢?duì)于其它設(shè)備不同的只是各自的數(shù)據(jù)幀格式,因而只需做相應(yīng)少量修改即可。
3. 節(jié)點(diǎn)自身的“通信”節(jié)點(diǎn)自身的“通信”是一種形象的說(shuō)法,嚴(yán)格說(shuō)來(lái)應(yīng)是VB應(yīng)用程序利用DDE技術(shù)與本節(jié)點(diǎn)其它Windows應(yīng)用程序進(jìn)行數(shù)據(jù)交換。DDE(Dynamic Data Exchange)即動(dòng)態(tài)數(shù)據(jù)交換,它是Windows支持的三種內(nèi)部通信機(jī)制之一,是應(yīng)用程序間通過(guò)共享內(nèi)存進(jìn)行進(jìn)程間通信的一種形式。應(yīng)用程序間進(jìn)行數(shù)據(jù)交換稱為“會(huì)話”(Conversation),申請(qǐng)會(huì)話端叫客戶(Client),響應(yīng)申請(qǐng)端叫服務(wù)器(Server)。一旦客戶與服務(wù)器間建立起DDE所需的數(shù)據(jù)鏈路就可自動(dòng)進(jìn)行數(shù)據(jù)交換。
在監(jiān)控系統(tǒng)開發(fā)中,工控組態(tài)軟件以其功能強(qiáng)大、使用方便等特點(diǎn)得到廣泛應(yīng)用,但在處理復(fù)雜數(shù)據(jù)時(shí)其計(jì)算功能受到一定限制,而VB可以較好地彌補(bǔ)這一不足,并且還能承擔(dān)數(shù)據(jù)采集、報(bào)表打印等功能。這就需要在VB應(yīng)用程序與組態(tài)軟件應(yīng)用程序間進(jìn)行動(dòng)態(tài)數(shù)據(jù)交換。
VB中只有TextBox、PictureBox、Label和Form可以與其它應(yīng)用程序進(jìn)行動(dòng)態(tài)數(shù)據(jù)交換,控件用于DDE的屬性項(xiàng)有LinkTopic(連接主題)、LinkItem(連接項(xiàng))、LinkMode(連接模式)和LinkTimeout(連接等待時(shí)間)。
這里以本實(shí)驗(yàn)室的小型分布式監(jiān)控實(shí)驗(yàn)系統(tǒng)為例,介紹一個(gè)VB應(yīng)用程序與組態(tài)王5.0應(yīng)用程序間實(shí)現(xiàn)DDE的實(shí)例。
3.1 VB作為Server,組態(tài)王作為Client
當(dāng)有些參數(shù)需要從VB應(yīng)用程序傳輸?shù)浇M態(tài)王應(yīng)用程序,如VB從PLC采集水位值參數(shù)至程序Ser.vbp的Text1,再將數(shù)據(jù)動(dòng)態(tài)傳遞給組態(tài)王的I/O變量