<del id="dhfrq"></del>

    1. <tr id="dhfrq"></tr>
      成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
      現在位置:范文先生網>理工論文>計算機論文>基于VB的分布式監控系統通信設計

      基于VB的分布式監控系統通信設計

      時間:2023-02-20 22:36:20 計算機論文 我要投稿

      基于VB的分布式監控系統通信設計

      摘  要  本文介紹了利用VB的多種通信手段實現分布式監控系統的多種通信功能,對每一種通信手段給出其原理和應用實例。
      關鍵詞  VB  通信  串行口  控件  DDE  API
      The Communication Design of Distributed Control System Based on VB
      Abstract:  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. 概論
      分布式監控系統已在工業領域得到廣泛應用,許多企業對于中小規模的設備,如中小型熱電廠和水電站,出于硬件軟件投資利潤率和性能價格比的考慮,常常是自行開發或參與開發本企業的監控系統。而許多企業在成套引進大型DCS系統后,也常因實際情況而需要自行開發或改進其監控系統。
      分布式監控系統以微機為基礎,用數據通信將微機連在一起實現數據共享,從而對工業過程進行集中監視管理和分散控制。因此,分布式監控系統中通信的設計與實現是至關重要的環節。Visual Basic開發語言具有簡潔明了、編程效率高、開發周期短的特點,利用VB中的多種通信手段,可實現分布式監控系統的多種通信功能。
      2. 與下位機的通信
      分布式監控系統的數據采集站可直接與現場帶有標準RS-232C接口的智能儀表、PLC和單片機等鏈接,并可通過擴展控制卡形成一個數據采集子網,以高速準確地獲取數據。VB的MSCOMM通信控件具有完善的串口數據發送和接受功能,利用它可以屏蔽對硬件的操作,簡易快捷地進行串行通信編程。
      本文的實例為上位機與OMRON 200HG系列PLC的1:N鏈接通信。帶有RS-485接口通信板的PLC直接掛在RS-485總線上,上位機通過RS-232C /RS-485轉換器與總線相連,這樣即構成數據采集子網,甚至可以是一個獨立的小型分布式監控系統。其它儀器儀表設備,只要是標準串口都可以類似方式直接或間接與上位機鏈接。
      關于VB的MSCOMM控件可參考相關資料。本例通信程序摘要如下:
      (1) 初始化程序
      Mscomm1.Commport=2           ' 選擇COM2
      Mscomm1.Settings="9600,N,8,2"   ' 設置通信參數
      Mscomm1.Inputlen=0             ' 讀入接收緩沖區全部字符  
      Mscomm1.OutbufferSize=256      ' 設置發送緩沖區大小
      Mscomm1.InbufferSize=512       ' 設置接收緩沖區大小
      Mscomm1.PortOpen=True          '打開COM2
      (2) 發送命令程序
      比如讀取節點號03的PLC中IR000到IR009的內容,并放到tag1字符串變量中,此時有:
      Dim Command, node, begin, number as string
      Dim Answerlen as integer
      node="03"            '節點號
      Command="RR"       '命令為讀IR區
      begin="0000"          '從IR000開始
      number=10              '讀取長度
      Answerlen=51           '計算接收字符串長度
      進行命令發送和接收應答處理:
      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) )      '幀校驗碼FCS
      Next i
      f=Hex$(FCS)
      If  Len(f)=1  Then  f="0"+f
      Commfrm.MSComm1.Output=s + f + "*" + CHR$(13)   '命令幀發送
      Do
      Dummy=DoEvents()
      Loop Untill Commfrm.MSComm1.InbufferCount >= Answerlen   '等待應答幀
      Do tag1= Commfrm.MSComm1.Input
      Loop Un

      till Commfrm.MSComm1.InbufferCount=0  '讀完應答幀
      上述程序具有相當的通用性,對于其它設備不同的只是各自的數據幀格式,因而只需做相應少量修改即可。
      3. 節點自身的"通信"
      節點自身的"通信"是一種形象的說法,嚴格說來應是VB應用程序利用DDE技術與本節點其它Windows應用程序進行數據交換。DDE(Dynamic Data Exchange)即動態數據交換,它是Windows支持的三種內部通信機制之一,是應用程序間通過共享內存進行進程間通信的一種形式。應用程序間進行數據交換稱為"會話"(Conversation),申請會話端叫客戶(Client),響應申請端叫服務器(Server)。一旦客戶與服務器間建立起DDE所需的數據鏈路就可自動進行數據交換。
      在監控系統開發中,工控組態軟件以其功能強大、使用方便等特點得到廣泛應用,但在處理復雜數據時其計算功能受到一定限制,而VB可以較好地彌補這一不足,并且還能承擔數據采集、報表打印等功能。這就需要在VB應用程序與組態軟件應用程序間進行動態數據交換。
      VB中只有TextBox、PictureBox、Label和Form可以與其它應用程序進行動態數據交換,控件用于DDE的屬性項有LinkTopic(連接主題)、LinkItem(連接項)、LinkMode(連接模式)和LinkTimeout(連接等待時間)。
      這里以本實驗室的小型分布式監控實驗系統為例,介紹一個VB應用程序與組態王5.0應用程序間實現DDE的實例。
      3.1 VB作為Server,組態王作為Client
      當有些參數需要從VB應用程序傳輸到組態王應用程序,如VB從PLC采集水位值參數至程序Ser.vbp的Text1,再將數據動態傳遞給組態王的I/O變量SW,這時VB作為Server,組態王作為Client。
      VB程序Ser.vbp 中屬性設置如下(Form1為Text1所在窗體):
      Form1.LinkTopic = "water"      數據交換的話題
      Form1.LinkMode = 1           作為服務器
      組態王的設置如下:
      新建一個名為vbdde的DDE設備,服務程序名Ser,話題名water,數據交換方式為標準WINDOWS項目交換。新建一個名為SW的I/O變量,連接設備設為vbdde,項目名設為Text1。
      3.2 組態王作為Server,VB作為Client
      當有些參數需要從組態王傳輸到VB,如為了提高變頻器電壓以提升泵速,可在組態王應用程序中改變I/O變量BS值并動態傳遞給VB的Text2,VB接收到數據后經處理再傳遞給PLC相應繼電器區。這時組態王作為Server,VB作為Client。
      組態王設置如下:
      新建一個名為BS的I/O變量,連接設備設為已建立的vbdde設備,項目名設為bengsu。
      VB程序Ser.vbp中設置如下:
      Text2.LinkTopic = "view|tagname"
      Text2.LinkItem = "bengsu"
      Text2.LinkMode = 1
      TextBox控件有無連接、自動式連接、被動式連接和通知式連接四種連接模式,可依據實際情況靈活運用。
      4. 網絡通信
      VB6.0與舊版本相比較,最明顯的特點是增加了強大的網絡功能,將其用于分布式監控系統中可以輕松地實現遠程通信。VB的WINSOCK控件有效屏蔽了對WINDOWS套接字的低層操作,可方便地建立起網絡中任意兩個具有唯一IP地址節點間的連接,并通過UDP或TCP協議進行數據交換,可用于創建Client/Server應用程序。
      本文舉分布式監控系統中節點間通信的實例,其中節點A(IP地址202.114.102.134)作為服務器負責某一區域的數據采集與處理,程序內有一名為TCPServer的Winsock控件;節點B(IP地址202.114.102.135)是同級或上一級的某一節點,作為客戶機,其程序內有一名為TCPClient的Winsock控件。
      節點A服務器核心程序如下:
      (1)初始化程序
      tcpserver(0).RemoteHostIP = 202.114.102.135
      tcpserver(0).LocalPort = 1001   'tcpserver(0)專用于偵聽
      tcpserver(0).Listen
      (2)發送數據程序
      tcpserver(Index).SendData Text1.Text
      (3)處理客戶機連接請求程序
      Private Sub TCPServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
      Load tcpserver(Index)
      tcpserver(Index).Accept requestID
      End Sub
      (4)客戶機數據到達處理程序
      Private Sub TCPServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
      Dim RD As String
      tcpserver(Index).GetData RD, vbString
      txtRD.text=RD
      tcpserver(Index).SendData RD
      End Sub
      (5)關閉連接程序
      Private Sub TCPServer_Close(Index As Integer)
      tcpserver(Index).Close
      Unload tcpserver(Index)
      End Sub
      以上程序著重說明Winsock控件的主要屬性、方法和事件,如要實現多進程(多個客戶程序同時運行),可應用創建控件數組來代表已連接的控件實例的方法處理。
      節點B客戶機核心程序如下:
      Private ConnectFlag As Boolean               '設置判斷是否連接標志

      (1)初始化程序
      TCPClient.RemoteHost IP= 202.114.102.134     '遠程計算機IP地址
      TCPClient.RemotePort = 1001                 '遠程計算機端口
      ConnectFlag = False    
      (2)申請連接程序
      If  Not ConnectFlag Then
      TCPClient.Close
      TCPClient.Connect
      Do
        DoEvents
      Loop Until TCPClient.State = sckConnected
      ConnectFlag = True
      End Sub
      (3)數據到達處理程序
      Private Sub TCPClient_DataArrival(ByVal bytesTotal As Long)
      Dim RD As String
      TCPClient.GetData RD, vbString
      txtRD.text = RD
      End Sub
      (4)發送數據程序
      TCPClient.SendData txtSD.Text
      (5)關閉連接程序
      Private Sub TCPClient_Close()
      TCPClient.Close
      Do
        DoEvents
      Loop Until TCPClient.State = sckClosed
      ConnectFlag = False
      End Sub
      5. 遠程通信
      當監控系統的一些重要信息,如嚴重事故,需要及時通知有關部門即實現遠程通信時,可以利用網絡中某一連接至Internet的帶有MODEM的節點,通過MODEM自動撥打電話,將信息及時地送達有關部門。
      應用VB的MSCOMM控件可實現這一功能,基本方法與下位機通信類似。這里介紹調用API函數直接寫I/O端口,使用設備控制塊DCB的方法撥打電話并掛起MODEM。
      首先利用VB的API Viewer瀏覽器在module1模塊中聲明對以下函數、數據類型和常量的引用:
      CreateFile 函數
      CloseHandle 函數
      BuildCommDCB 函數
      SetCommState 函數
      DCB數據類型      
      GENERIC_READ常量
      GENERIC_WRITE 常量
      OPEN_EXISTING 常量
      (1) MODEM設置子程序
      Public Function ModemSetup( ) As Boolean
      Dim lResult As Long
      Dim lCommHandle As Long
      Dim DCB_Comm As DCB
      Dim tDCBConfig As String
      ModemSetup = True
      '指定lCommHandle為通信源對象的句柄
      lCommHandle = CreateFile(COM2,GENERIC_READ Or GENERIC_WRITE, _
          0&, 0&, OPEN_EXISTING, 0&, 0&)
      '構造DCB對象的初始化字符串
      tDCBConfig = "baud=9600" & "parity=NONE" & "data=8" & "stops=1"
      '用初始化字符串指定DCB對象的規范
      lResult = BuildCommDCB(tDCBConfig, DCB_Comm)
      '根據指定DCB對象的規范來設定通信設備
      lResult = SetCommState(lCommHandle, DCB_Comm)
      lResult = CloseHandle(lCommHandle)
      End Function
      (2)發送數據子程序
      Public Function ModemSD(tComm As String, tModemSend As String) 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)
      本例重在說明基本原理,沒有加入錯誤捕獲陷阱及通信異常處理。
      6. 結束語
      本文介紹了應用VB開發分布式監控系統的各種通信功能的基本原理和實例。通過以上實例可以看出,用VB開發通信程序簡潔明了,編程效率高,可維護性好,尤其適用于自行開發中小型分布式監控系統。
      參考文獻
      1. 俞旭明等,Visual Basic 6.0網絡開發技術,人民郵電出版社,1999
      2. 陶文偉等,InTouch和VB之間的動態數據交換,電腦與信息技術,1999,(6)
      3. C200HX/C200HG/C200HE編程手冊,日本歐姆龍公司,1997

      【基于VB的分布式監控系統通信設計】相關文章:

      基于VB的分布式監控系統通信設計08-06

      基于SMS通信的直放站監控系統設計08-06

      基于MPI網絡的自來水廠分布式監控系統08-06

      基于DSP芯片的分級分布式管理系統設計08-06

      分布式發電機勵磁監控系統的設計08-06

      基于FPGA的總線型LVDS通信系統設計08-06

      基于通信器S1503的門禁系統的設計08-06

      基于CAN總線的EV電控系統通信的設計與開發08-06

      基于Winodws CE的嵌入式網絡監控系統的設計與實現08-06

      主站蜘蛛池模板: 中文字幕第一页亚洲精品| 日韩精品久久一区二区三| 中文字幕亚洲无线码A| 色综合中文字幕色综合激情| 无码日韩做暖暖大全免费不卡| 老司机亚洲精品一区二区| 日本成熟少妇激情视频免费看| av天堂亚洲天堂亚洲天堂| 国产成人精品亚洲日本在线观看| 高清美女视频一区二区三区| 久久国产福利播放| 成人无码潮喷在线观看| av新版天堂在线观看| 欧美大bbbb流白水| 18国产午夜福利一二区| 国产AV老师黑色丝袜美腿| 亚洲av色在线播放一区| 天天做日日做天天添天天欢公交车 | 欧美做受视频播放| 国产成人高清精品亚洲| 国产偷自一区二区三区在线| 久久高清超碰AV热热久久| 亚洲欧美牲交| 72种姿势欧美久久久久大黄蕉| 麻豆国产成人AV在线播放| 国产亚洲一区二区三区成人| 欧美精品亚洲精品日韩专 | 亚洲人成网网址在线看| 精品粉嫩国产一区二区三区| 91久久偷偷做嫩草影院免费看| 久久99国产精品尤物| 国产精品一二三区久久狼| 狠狠爱五月丁香亚洲综| 日韩高清在线亚洲专区不卡 | 国产不卡在线一区二区| 亚洲sm另类一区二区三区| 国产精品亚洲二区在线播放| 日韩人妻少妇一区二区三区| 亚洲国产精品一区二区视频| 精品无码成人片一区二区| 乱码精品一区二区亚洲区|