• <del id="qqie6"><sup id="qqie6"></sup></del>
  • <tfoot id="qqie6"></tfoot>
  • <ul id="qqie6"></ul>
  • 產品推薦:水表|流量計|壓力變送器|熱電偶|液位計|冷熱沖擊試驗箱|水質分析|光譜儀|試驗機|試驗箱


    儀表網>技術中心>使用指南>正文

    歡迎聯系我

    有什么可以幫您? 在線咨詢

    基于組態(tài)王和VB的智能儀表實時監(jiān)控系統

       2013年01月30日 14:51  
      摘要:針對目前組態(tài)王與智能化儀表通信時存在的問題,基于VB和動態(tài)數據交換技術DDE,研究了組態(tài)王與VB數據交換的方法,并采用VB可視化的編程方法,編寫了上位機與智能化儀表間的串口通信程序及組態(tài)軟件與VB間的OLE數據交換程序。實現了組態(tài)王與智能化儀表的實時通信,間接擴展了組態(tài)王的驅動程序庫。另外,設計完成了基于組態(tài)王和VB的智能化儀表監(jiān)控系統。運行結果表明,該系統具有良好的穩(wěn)定性、實時性,可以較好地實現工業(yè)現場的實時監(jiān)控。
      
      引言
      
      隨著科學技術的不斷發(fā)展,計算機測控技術在工業(yè)現場的各種測量及控制系統中應用越來越廣泛。通常情況下,工業(yè)現場的各種測控系統需要上位計算機與工業(yè)現場各種智能化儀表進行通信,以便及時了解現場儀表的運行情況,從而實現對現場各種狀態(tài)的實時監(jiān)控。
      
      組態(tài)王軟件作為一種的上位機監(jiān)控軟件,在許多領域的遠程監(jiān)控中都得到了廣泛的應用。然而,組態(tài)王為數據采集和控制提供的大量底層設備驅動程序,主要是針對較大規(guī)模廠商的板卡和模塊,對于較小規(guī)模廠商開發(fā)的各種智能化儀表及用戶自己設計的板卡,卻沒有現成的驅動程序提供。因此,利用組態(tài)王與智能化儀表及用戶自己設計的板卡進行通信時,往往需要用戶自己開發(fā)底層的驅動程序,給用戶的使用帶來了諸多的不便。為了解決上述問題,組態(tài)王專門提供了一種DDE技術,能夠使用戶方便地實現組態(tài)王與其它支持動態(tài)數據交換的應用程序進行數據交換。
      
      VisualBasic6.0(簡稱VB)是一款簡單、易用的可視化編程語言,可以方便地利用其提供的組件快速建立一個應用程序。因而,在各種程序開發(fā)中,VB得到了廣泛的應用,同時在VB中提供的串行通信控件MSComm,為實現上位計算機與現場各種儀表進行通信提供了一種有效途徑。另外,VB還支持DDE技術,利用該技術可以方便地開發(fā)出Windows環(huán)境下的DDE程序。
      
      本文針對目前組態(tài)王與智能化儀表通信時存在的問題,給出了一種基于VB和DDE技術的上位計算機與現場智能儀表進行通信的方法。開發(fā)了一套組態(tài)王與VB相結合的智能化儀表監(jiān)控系統,較好地實現了工業(yè)現場各種智能化設備運行狀態(tài)的實時監(jiān)控。
      
      1、系統的基本結構
      
      基于組態(tài)王和VB的智能化儀表監(jiān)控系統的結構如圖1所示。由圖1可知,該系統由上位計算機、RS2232/485通信電纜和現場各種智能化儀表構成,該系統采用的是一對多的通信鏈接形式,即現場多種智能化儀表掛接在RS2485總線上,然后再由RS2232/485轉換器轉換后,連接到上位計算機。
      
      圖1系統基本原理圖。
      
      2、系統的工作原理
      
      組態(tài)王與現場智能儀表的通信原理如圖2所示。
      
      由圖2可以看出,該系統的通信包括兩部分:組態(tài)王與VB程序的DDE通信;VB程序通過RS2232/485與現場智能儀表的通信。
      
      圖2組態(tài)王與現場智能儀表通信原理
      
      2.1組態(tài)王與VB的動態(tài)數據交換
      
      動態(tài)數據交換(DDE)是Windows平臺上的一個完整通信協議,該協議使應用程序能彼此交換數據和發(fā)送指令。組態(tài)王和VB進行DDE通信的過程中,請求發(fā)送數據的一方稱為"客戶",被請求的一方稱為"服務器".由于DDE通信時,交換雙方需實現數據或控制命令的雙向傳輸。因此,它們既是"客戶",又是"服務器".
      
      2.1.1DDE通信時組態(tài)王的設定
      
      組態(tài)王與VB之間數據交換內容是通過三個標志名來約定的:
      
     ?、賾贸绦蛎_M行DDE對話的雙方的名稱。
      
      組態(tài)王運行系統的程序名是View.
      
      ②主題。被討論的數據域。組態(tài)王主題規(guī)定為tagname.
      
      ③項目。被討論的特定數據對象。在組態(tài)王的數據詞典里,定義I/O變量的同時,也定義了項目名稱。
      
      為了建立DDE鏈接,需要在組態(tài)王的數據詞典里建立一個I/O變量,并登記服務器程序的三個標志名。
      
      本系統中應用程序名為VBDDE,話題名為form1,項目名為INCREA100,程序交換的方式為標準WindowsDDE交換。
      
      2.1.2DDE通信時VB的設定
      
      在VB編程軟件中,DDE連接主要是通過控件的屬性和方法實現的。通常情況下,DDE通信主要是通過文本框、標簽或圖片框等控件進行。
      
      如果VB作為顧客,數據交換時,則需要對上述控件的LinkTopic、LinkItem、LinkMode屬性進行如下設置:
      
      Control.LinkTopic=服務器程序名|主題名
      
      Control.LinkItem=項目名
      
      Control.LinkMode有四種選擇:0表示關閉DDE;
      
      1表示熱鏈接;2表示冷鏈接;3表示通告鏈接。
      
      其中,Control表示文本框、標簽或圖片框的名字。
      
      本系統中Control表示文本框Text1,LinkTopic設置為View|Tagname,LinkItem設置為PLC1.INCREA100,LinkMode設置為1.
      
      如果組態(tài)王作為顧客,只要把VB應用程序中提供數據窗體的LinkMode屬性設置為1,其它無需再在VB中增加任何程序。
      
      在對組態(tài)王和VB的初始設置完成后,結合VB編寫的與智能儀表的通信程序,分別按照服務器和顧客運行應用程序,即可實現組態(tài)王與VB的自動數據交換。
      
      2.2VB與智能儀表的通信
      
      本系統采用VB專業(yè)版的MSComm控件與VB模塊化編程相結合,實現了VB與智能儀表間的通信,主要程序模塊及部分程序如下:
      
     ?、俪绦虺跏蓟K。主要完成串口的選擇、波特率、幀結構設置、打開串口等串口的設置工作。
      
     ?、诎l(fā)送數據模塊。由手動發(fā)送控制命令字和自動發(fā)送控制命令字兩種方式,實現手動采集數據和自動采集數據。其中,自動發(fā)送數據方式包括一個定時器發(fā)送程序和一個定時器時間響應程序;定時器發(fā)送程序用來控制控制命令字的發(fā)送周期,定時器響應程序用來完成現場各智能化儀表地址的循環(huán)賦值及控制命令字的發(fā)送。
      
      上述模塊中定時器響應程序的部分程序如下:
      
      PrivateSubTimer1Timer
      
      Timer1.Enabled=False
      
      Text_SEND.Text=""∥清空發(fā)送文本框
      
      MSComm.OutBufferCount=0∥清除發(fā)送緩沖區(qū)數據
      
      DimOutByte(1To3)AsByte
      
      IfNotMSComm.PortOpenThen∥保證串口打開
      
      MSComm.PortOpen=True
      
      EndIf
      
      '24臺積算儀循環(huán)數據采集
      
      Ifk=1Then
      
      OutByte(1)=&HCA
      
      OutByte(2)=0
      
      OutByte(3)=1
      
      EndIf
      
      Ifk=2Then
      
      OutByte(1)=&HCA
      
      OutByte(2)=0
      
      OutByte(3)=2
      
      EndIf
      
      ??
      
      k=k+1
      
      Ifk>24Then
      
      k=1
      
      EndIf
      
      MSComm.InBufferCount=0∥清除接收緩沖區(qū)數據
      
      MSComm.OutBufferCount=0∥清除發(fā)送緩沖區(qū)數據
      
      MSComm.Output=OutByte
      
      Forj=1To3
      
      OutByteagain(j)=OutByte(j)
      
      Next
      
      Fori=1To50000000
      
      '延時Next
      
      EndSub
      
     ?、劢邮諗祿K。通過事件響應的方式來完成現場數據的接收。如果串口收到現場數據,并且使得數據緩沖區(qū)中的內容超過一個字節(jié)時,就會引發(fā)com2EvReceive事件。OnComm函數用來負責捕捉com2EvReceive事件,并且將發(fā)送緩沖區(qū)中的現場內容寫入VB的文本框進行顯示,同時與組態(tài)王進行DDE數據交換。
      
      該模塊中的OnComm函數響應程序如下:
      
      PrivateSubTimer1Timer
      
      Timer1.Enabled=False
      
      Text_SEND.Text=""∥清空發(fā)送文本框
      
      MSComm.OutBufferCount=0∥清除發(fā)送緩沖區(qū)數據
      
      DimOutByte(1To3)AsByte
      
      IfNotMSComm.PortOpenThen∥保證串口打開
      
      MSComm.PortOpen=True
      
      EndIf
      
      '24臺積算儀循環(huán)數據采集
      
      Ifk=1Then
      
      OutByte(1)=&HCA
      
      OutByte(2)=0
      
      OutByte(3)=1
      
      EndIf
      
      Ifk=2Then
      
      OutByte(1)=&HCA
      
      OutByte(2)=0
      
      OutByte(3)=2
      
      EndIf
      
      k=k+1
      
      Ifk>24Then
      
      k=1
      
      EndIf
      
      MSComm.InBufferCount=0∥清除接收緩沖區(qū)數據
      
      MSComm.OutBufferCount=0∥清除發(fā)送緩沖區(qū)數據
      
      MSComm.Output=OutByte
      
      Forj=1To3
      
      OutByteagain(j)=OutByte(j)
      
      Next
      
      Fori=1To50000000
      
      '延時Next
      
      EndSub
      
      PrivateSubTimer1Timer
      
      Timer1.Enabled=False
      
      Text_SEND.Text=""∥清空發(fā)送文本框
      
      MSComm.OutBufferCount=0∥清除發(fā)送緩沖區(qū)數據
      
      DimOutByte(1To3)AsByte
      
      IfNotMSComm.PortOpenThen∥保證串口打開
      
      MSComm.PortOpen=True
      
      EndIf
      
      '24臺積算儀循環(huán)數據采集
      
      Ifk=1Then
      
      OutByte(1)=&HCA
      
      OutByte(2)=0
      
      OutByte(3)=1
      
      EndIf
      
      Ifk=2Then
      
      OutByte(1)=&HCA
      
      OutByte(2)=0
      
      OutByte(3)=2
      
      EndIf
      
      ??
      
      k=k+1
      
      Ifk>24Then
      
      k=1
      
      EndIf
      
      MSComm.InBufferCount=0∥清除接收緩沖區(qū)數據
      
      MSComm.OutBufferCount=0∥清除發(fā)送緩沖區(qū)數據
      
      MSComm.Output=OutByte
      
      Forj=1To3
      
      OutByteagain(j)=OutByte(j)
      
      Next
      
      Fori=1To50000000
      
      '延時Next
      
      EndSub
      
     ?、苋蒎e模塊。通過增加數據采集容錯模塊,保證數據采集的實時性、準確性,提高系統工作可靠性。
      
     ?、輸祿炷K。主要利用Access數據庫,實現對計算機采集數據存儲、管理、分析及歷史數據的查詢等。
      
     ?、奁渌绦蚰K。主要完成發(fā)送、接收文本框的清空工作等。
      
      通過上述幾個模塊的協調工作,就可以較好地實現VB與智能儀表間的串行通信、數據分析及歷史數據查詢等。
      
      3、結束語
      
      通過VB與智能儀表間的串行通信及組態(tài)王與VB間的DDE通信,并利用組態(tài)王豐富的圖形和組態(tài)工藝,較好地完成了數據的實時刷新、各種曲線、報警的顯示。運行結果表明,該系統具有友好的人機界面,良好的穩(wěn)定性、可靠性,較好地解決了組態(tài)王與一般智能儀表間的實時通信問題,實現了組態(tài)王對智能化儀表的實時監(jiān)控。

    免責聲明

    • 凡本網注明“來源:儀表網”的所有作品,均為浙江興旺寶明通網絡有限公司-儀表網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:儀表網”。違反上述聲明者,本網將追究其相關法律責任。
    • 本網轉載并注明自其它來源(非儀表網)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。
    • 如涉及作品內容、版權等問題,請在作品發(fā)表之日起一周內與本網聯系,否則視為放棄相關權利。
    聯系我們

    客服熱線: 15267989561

    加盟熱線: 15267989561

    媒體合作: 0571-87759945

    投訴熱線: 0571-87759942

    關注我們
    • 下載儀表站APP

    • Ybzhan手機版

    • Ybzhan公眾號

    • Ybzhan小程序

    企業(yè)未開通此功能
    詳詢客服 : 0571-87759942
    主站蜘蛛池模板: 久久精品成人一区二区三区| 最新69堂国产成人精品视频 | 成人午夜精品视频在线观看| 8x成人在线电影| 亚洲国产日韩在线成人蜜芽| 国产成人黄网在线免| 国产成人综合美国十次| 国产成人精品999在线观看| 国产成人精品久久综合| 国产成人免费片在线观看| 国产成人19禁在线观看| 四虎成人精品免费影院| 粗大黑人巨精大战欧美成人| 欧美成人手机视频| 成人h在线播放| 国产亚洲欧美成人久久片| 青青青国产成人久久111网站| 亚洲色成人网一二三区| 国产成人免费片在线观看| 亚洲国产成人精品激情| 欧美日韩成人午夜免费| 国产成人精品久久| 久久久久99精品成人片直播| 国产成人精品亚洲精品| 成人免费视频观看无遮挡| 国产成人污污网站在线观看 | 国产免费69成人精品视频| 国产成人午夜精品影院游乐网| 久久成人国产精品| 怡红院成人影院| 亚洲人成人77777网站| 成人99国产精品| 69国产成人精品午夜福中文| 亚洲成人一级电影| 国产成人亚洲毛片| 国产成人亚洲午夜电影| 亚洲欧美成人日韩| 一级成人毛片免费观看| 色噜噜狠狠色综合成人网| 欧美成人aa久久狼窝动画| 成人午夜又粗又硬有大|