日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

當(dāng)前位置:機(jī)電之家首頁(yè) >> PLC技術(shù)>> PLC文案資料 >> PLC論文 >> 基于VB的分布式監(jiān)控系統(tǒng)通信設(shè)計(jì)探討
基于VB的分布式監(jiān)控系統(tǒng)通信設(shè)計(jì)探討

摘 要:本文介紹了利用VB的多種通信手段實(shí)現(xiàn)分布式監(jiān)控系統(tǒng)的多種通信功能,對(duì)每一種通信手段給出其原理和應(yīng)用實(shí)例。

一、概論

分布式監(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)的多種通信功能。

二、與下位機(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.bbbbblen=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 bbbbbb

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 bbbbbb

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.bbbbb

Loop Untill Commfrm.MSComm1.InbufferCount=0 '讀完應(yīng)答幀

上述程序具有相當(dāng)?shù)耐ㄓ眯裕瑢?duì)于其它設(shè)備不同的只是各自的數(shù)據(jù)幀格式,因而只需做相應(yīng)少量修改即可。

三、節(jié)點(diǎn)自身的"通信"

節(jié)點(diǎn)自身的"通信"是一種形象的說(shuō)法,嚴(yán)格說(shuō)來(lái)應(yīng)是VB應(yīng)用程序利用DDE技術(shù)與本節(jié)點(diǎn)其它bbbbbbs應(yīng)用程序進(jìn)行數(shù)據(jù)交換。DDE(Dynamic Data Exchange)即動(dòng)態(tài)數(shù)據(jù)交換,它是bbbbbbs支持的三種內(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和bbbb可以與其它應(yīng)用程序進(jìn)行動(dòng)態(tài)數(shù)據(jù)交換,控件用于DDE的屬性項(xiàng)有bbbbTopic(連接主題)、bbbbItem(連接項(xiàng))、bbbbMode(連接模式)和bbbbTimeout(連接等待時(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í)例。

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變量SW,這時(shí)VB作為Server,組態(tài)王作為Client。

VB程序Ser.vbp 中屬性設(shè)置如下(bbbb1為Text1所在窗體):

bbbb1.bbbbTopic = "water" 數(shù)據(jù)交換的話題

bbbb1.bbbbMode = 1 作為服務(wù)器

組態(tài)王的設(shè)置如下:

新建一個(gè)名為vbdde的DDE設(shè)備,服務(wù)程序名Ser,話題名water,數(shù)據(jù)交換方式為標(biāo)準(zhǔn)bbbbbbS項(xiàng)目交換。新建一個(gè)名為SW的I/O變量,連接設(shè)備設(shè)為vbdde,項(xiàng)目名設(shè)為Text1。

2、組態(tài)王作為Server,VB作為Client

當(dāng)有些參數(shù)需要從組態(tài)王傳輸?shù)絍B,如為了提高變頻器電壓以提升泵速,可在組態(tài)王應(yīng)用程序中改變I/O變量BS值并動(dòng)態(tài)傳遞給VB的Text2,VB接收到數(shù)據(jù)后經(jīng)處理再傳遞給PLC相應(yīng)繼電器區(qū)。這時(shí)組態(tài)王作為Server,VB作為Client。

組態(tài)王設(shè)置如下:

新建一個(gè)名為BS的I/O變量,連接設(shè)備設(shè)為已建立的vbdde設(shè)備,項(xiàng)目名設(shè)為bengsu。

VB程序Ser.vbp中設(shè)置如下:

Text2.bbbbTopic = "view|tagname"

Text2.bbbbItem = "bengsu"

Text2.bbbbMode = 1

TextBox控件有無(wú)連接、自動(dòng)式連接、被動(dòng)式連接和通知式連接四種連接模式,可依據(jù)實(shí)際情況靈活運(yùn)用。

四、網(wǎng)絡(luò)通信

VB6.0與舊版本相比較,最明顯的特點(diǎn)是增加了強(qiáng)大的網(wǎng)絡(luò)功能,將其用于分布式監(jiān)控系統(tǒng)中可以輕松地實(shí)現(xiàn)遠(yuǎn)程通信。VB的WINSOCK控件有效屏蔽了對(duì)bbbbbbS套接字的低層操作,可方便地建立起網(wǎng)絡(luò)中任意兩個(gè)具有唯一IP地址節(jié)點(diǎn)間的連接,并通過(guò)UDP或TCP協(xié)議進(jìn)行數(shù)據(jù)交換,可用于創(chuàng)建Client/Server應(yīng)用程序。

本文舉分布式監(jiān)控系統(tǒng)中節(jié)點(diǎn)間通信的實(shí)例,其中節(jié)點(diǎn)A(IP地址202.114.102.134)作為服務(wù)器負(fù)責(zé)某一區(qū)域的數(shù)據(jù)采集與處理,程序內(nèi)有一名為TCPServer的Winsock控件;節(jié)點(diǎn)B(IP地址202.114.102.135)是同級(jí)或上一級(jí)的某一節(jié)點(diǎn),作為客戶機(jī),其程序內(nèi)有一名為TCPClient的Winsock控件。

節(jié)點(diǎn)A服務(wù)器核心程序如下:

(1)初始化程序

tcpserver(0).RemoteHostIP = 202.114.102.135

tcpserver(0).LocalPort = 1001 'tcpserver(0)專用于偵聽

tcpserver(0).Listen

(2)發(fā)送數(shù)據(jù)程序

tcpserver(Index).SendData Text1.Text

(3)處理客戶機(jī)連接請(qǐng)求程序

Private Sub TCPServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)

Load tcpserver(Index)

tcpserver(Index).Accept requestID

End Sub

(4)客戶機(jī)數(shù)據(jù)到達(dá)處理程序

Private Sub TCPServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)

Dim RD As bbbbbb

tcpserver(Index).GetData RD, vbbbbbbb

txtRD.text=RD

tcpserver(Index).SendData RD

End Sub

(5)關(guān)閉連接程序

Private Sub TCPServer_Close(Index As Integer)

tcpserver(Index).Close

Unload tcpserver(Index)

End Sub

以上程序著重說(shuō)明Winsock控件的主要屬性、方法和事件,如要實(shí)現(xiàn)多進(jìn)程(多個(gè)客戶程序同時(shí)運(yùn)行),可應(yīng)用創(chuàng)建控件數(shù)組來(lái)代表已連接的控件實(shí)例的方法處理。

節(jié)點(diǎn)B客戶機(jī)核心程序如下:

Private ConnectFlag As Boolean '設(shè)置判斷是否連接標(biāo)志

(1)初始化程序

TCPClient.RemoteHost IP= 202.114.102.134 '遠(yuǎn)程計(jì)算機(jī)IP地址

TCPClient.RemotePort = 1001 '遠(yuǎn)程計(jì)算機(jī)端口

ConnectFlag = False

(2)申請(qǐng)連接程序

If Not ConnectFlag Then

TCPClient.Close

TCPClient.Connect

Do

DoEvents

Loop Until TCPClient.State = sckConnected

ConnectFlag = True

End Sub

(3)數(shù)據(jù)到達(dá)處理程序

Private Sub TCPClient_DataArrival(ByVal bytesTotal As Long)

Dim RD As bbbbbb

TCPClient.GetData RD, vbbbbbbb

txtRD.text = RD

End Sub

(4)發(fā)送數(shù)據(jù)程序

TCPClient.SendData txtSD.Text

(5)關(guān)閉連接程序

Private Sub TCPClient_Close()

TCPClient.Close

Do

DoEvents

Loop Until TCPClient.State = sckClosed

ConnectFlag = False

End Sub

五、遠(yuǎn)程通信

當(dāng)監(jiān)控系統(tǒng)的一些重要信息,如嚴(yán)重事故,需要及時(shí)通知有關(guān)部門即實(shí)現(xiàn)遠(yuǎn)程通信時(shí),可以利用網(wǎng)絡(luò)中某一連接至Internet的帶有MODEM的節(jié)點(diǎn),通過(guò)MODEM自動(dòng)撥打電話,將信息及時(shí)地送達(dá)有關(guān)部門。

應(yīng)用VB的MSCOMM控件可實(shí)現(xiàn)這一功能,基本方法與下位機(jī)通信類似。這里介紹調(diào)用API函數(shù)直接寫I/O端口,使用設(shè)備控制塊DCB的方法撥打電話并掛起MODEM。

首先利用VB的API Viewer瀏覽器在module1模塊中聲明對(duì)以下函數(shù)、數(shù)據(jù)類型和常量的引用:

CreateFile 函數(shù)

CloseHandle 函數(shù)

BuildCommDCB 函數(shù)

SetCommState 函數(shù)

DCB數(shù)據(jù)類型

GENERIC_READ常量

GENERIC_WRITE 常量

OPEN_EXISTING 常量

(1)MODEM設(shè)置子程序

Public Function ModemSetup( ) As Boolean

Dim lResult As Long

Dim lCommHandle As Long

Dim DCB_Comm As DCB

Dim tDCBConfig As bbbbbb

ModemSetup = True '指定lCommHandle為通信源對(duì)象的句柄

lCommHandle = CreateFile(COM2,GENERIC_READ or GENERIC_WRITE, _ 0&, 0&, OPEN_EXISTING, 0&, 0&)

'構(gòu)造DCB對(duì)象的初始化字符串

tDCBConfig = "baud=9600" & "parity=NONE" & "data=8" & "stops=1"'用初始化字符串指定DCB對(duì)象的規(guī)范

lResult = BuildCommDCB(tDCBConfig, DCB_Comm) '根據(jù)指定DCB對(duì)象的規(guī)范來(lái)設(shè)定通信設(shè)備

lResult = SetCommState(lCommHandle, DCB_Comm)

lResult = CloseHandle(lCommHandle) End Function

(2)發(fā)送數(shù)據(jù)子程序

Public Function ModemSD(tComm As bbbbbb, tModemSend As bbbbbb) As Boolean

Dim nModem As Integer

ModemSS = True

nModem = FreeFile

Open tComm For Output As nModem

Print #nModem, tModemSend

Close #nModem End Function

(3)主程序

ModemSetup

ModemSS(COM2, "ATDT" &"02767802169"& vbCr)

ModemSS(COM2, "ATDT" & txt1.Text & vbCr)

ModemSS(COM2, "ATH" & vbCr)

本例重在說(shuō)明基本原理,沒(méi)有加入錯(cuò)誤捕獲陷阱及通信異常處理。

六、結(jié)束語(yǔ)

本文介紹了應(yīng)用VB開發(fā)分布式監(jiān)控系統(tǒng)的各種通信功能的基本原理和實(shí)例。通過(guò)以上實(shí)例可以看出,用VB開發(fā)通信程序簡(jiǎn)潔明了,編程效率高,可維護(hù)性好,尤其適用于自行開發(fā)中小型分布式監(jiān)控系統(tǒng)。

作者:未知 點(diǎn)擊:384次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:基于VB的分布式監(jiān)控系統(tǒng)通信設(shè)計(jì)探討
* 由于無(wú)法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《基于VB的分布式監(jiān)控系統(tǒng)通信設(shè)計(jì)探討》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
電子樣本

SN系列樣冊(cè)
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個(gè)人求購(gòu)

孫晉文 【求購(gòu)】  排氣閥  2025-12-30
馬經(jīng)理 【求購(gòu)】  信號(hào)集成端...  2025-12-30
李總 【求購(gòu)】  電動(dòng)升降車  2025-12-30
于蓬 【求購(gòu)】  HPV-S...  2025-12-29
張俊杰 【求購(gòu)】  縫紉線自動(dòng)...  2025-12-25
易賽群 【求購(gòu)】  NANOC...  2025-12-25
張經(jīng)理 【求購(gòu)】  浪涌保護(hù)器  2025-12-25
陳蓮 【求購(gòu)】  日本住友閥  2025-12-24
VIP公司推薦