<pre id="q5244"><progress id="q5244"><tt id="q5244"></tt></progress></pre>

<big id="q5244"><nobr id="q5244"></nobr></big>

        1. <th id="q5244"><video id="q5244"></video></th>

          基于VB的MCGS與渦輪流量計通信實現

          摘要: 針對目前 MCGS 組態軟件與智能化儀器儀表通信時存在的問題,基于對象鏈接與嵌入( Object Linking and Em-bedding,OLE) 技術,研究了 MCGS 與 Visual Basic( VB) 數據交換的方法,實現了 MCGS 與渦輪流量計的實時通信,間接擴展了 MCGS 的驅動程序。目前該方法已應用于實際項目中,運行結果表明,基于 VB 的 MCGS 和流量計通信具有良好的實時性、穩定性和可靠性。

          0、引言:
            計算機測控系統通常需要上位計算機與工業現場各種儀器儀表進行通信,及時了解現場儀器儀表的運行情況,實現對現場狀態的實時監控[1]。
            MCGS 組態軟件作為工業過程控制和實時監測領域的通用計算機系統軟件,由于其具有功能完善、操作簡便、可視性好、可維護性強、采用開放式結構可與廣泛的數據源交換數據等特點而得到越來越廣泛的應用。MCGS 為數據采集和控制提供了底層設備驅動程序,允許它直接與大多數智能設備進行通信。然而,MCGS 提供的設備驅動程序主要是針對目前市場上一些主流控制器或其他智能設備,在實際應用中,或因為所用設備的特殊性,或因為實際工程需要,其設備驅動功能總會有些不盡人意[2],甚至沒有提供某種智能設備的驅動程序,這給用戶使用該軟件實現與某些智能設備通信帶來諸多不便
            為了解決上述問題,常用的方法有 2 種: 向廠家購買 MCGS開發工具包,按照 MCGS 提供的規范設備驅動程序接口,用戶根據自己的需求開發設備驅動程序; 采用 MCGS 提供的OLE 技術,用戶利用其他支持 OLE 技術的通用軟件諸如 VB、VC、Delphi 等開發應用程序操作 MCGS 中的對象,利用這些通用軟件提供的數據通訊和處理功能編寫數據通訊程序并嵌入到 MCGS 監控系統中,實現數據交換。
            VB 是一款簡單、易用的可視化編程語言,開發者可以方便地使用其提供的組件快速建立應用程序。利用 VB 支持的 OLE技術可以方便地開發出 Windows 環境下的 OLE 通信程序。因此文中給出了一種基于 VB 和 OLE 技術的上位計算機與流量計通信方法,解決了 MCGS 與流量計通信時存在的問題,實現了 MCGS 對流量計的實時監控。

          1、系統的基本結構:
            基于 MCGS 和 VB 的渦輪流量計實時監控系統主要由工控機、RS - 232 通信電纜、RS - 485 /RS - 232 適配器、流量計、打印機、投影儀等組成。

            系統流量計選用 QWLJ 系列氣體渦輪流量計。QWLJ 系列流量計集流量傳感器、溫度傳感器、壓力傳感器和智能流量積算儀于一體,可實現流量的溫壓補償和壓縮因子修正,直接顯示標準狀態下的體積流量。多臺流量計通過 RS - 485 接口總線連接,經 RS - 485 /RS - 232 適配器連接到上位機的 COM 口。QWLJ 系列流量計支持廠家自定義通信協議和 MODBUS 通信協議,考慮到將來的擴展開發和組網通信,
          系統選用 MODBUS協議實現上位機與流量計通信,協議具體格式如表 1 和表 2 所示。上位機通過發送命令幀對流量計指定寄存器的讀寫獲得流量、壓力、溫度等信息,這里只涉及到功能碼 03( 讀取保持寄存器) 和功能碼 16( 預置多寄存器) 。

          2、系統的工作原理:
            MCGS 組態軟件與渦輪流量計的通信原理如圖 1 所示。系統通信包括 2 部分: MCGS 與 VB 程序的 OLE 通信; VB 程序通過 RS - 232 /RS - 485 與現場流量計的通信。
          表 1 上位機發送命令幀格式

          表 1 上位機發送命令幀格式
          表 2 流量計回送消息幀格式

          表 2 流量計回送消息幀格式
          圖 1 MCGS 組態軟件與渦輪流量計通信原理
          圖 1 MCGS 組態軟件與渦輪流量計通信原理

          2. 1、MCGS 與 VB 的 OLE 通信:
            實時數據庫是 MCGS 的核心,MCGS 把整個實時數據庫作為一個對象封裝起來,提供一系列的方法和屬性,外部程序通過這些方法和屬性對 MCGS 進行各種操作[2]。MCGS 運行起來后,實時數據庫對象被暴露出來,通過 OLE 自動化操作可以取得實時數據庫對象,再利用實時數據庫對象的 Set Value From-Name 方法,即可實現外部程序直接刷新 MCGS 實時數據庫[3]。以下為 MCGS 與 VB 實現 OLE 通信的部分程序。
          Dim Dat Obj As ObjectPrivate Sub Form_Load( )Timer1. Enabled = TrueTimer2. Enabled = True………………On Error Resume NextSet Dat Obj = Get Object( ,
          ”Mcgs Run. Data Centre)If Err ThenMsg Box ( " 請先啟動 MCGS 運行環境! " )EndEnd IfEnd SubPrivate Sub Timer1_Timer( )Dim msg As String,
          Value As VariantFor i = 0 To 19msg =“Dat” + Format $ ( i,
          “00”)Value = Val( Text2( i) . Text)Dat Obj. Set Value From Name msg,
          ValueNext iEnd Sub

          2. 2、VB 與流量計通信

            該系統采用一主多從通信方式,其中上位計算機作為主機,各流量計作為從機。主機采用查詢方式接收從機發送過來的數據。為了實現多機無沖突可靠通信,每臺從機必須有的地址,可以通過流量計面板的菜單模式下進行地址設置。在VB 環境下編制的通信程序,主要用到了 MSComm 控件,其提供了非常豐富的屬性和方法,已將通信的大部分底層操作封裝在控件內部,為實現 VB 與各種設備進行通信提供了一種有效徑。文中采用模塊化編程方法編寫數據通訊程序,實現 VB 與流量計間的通信。由于篇幅所限,只介紹 VB 與 1#流量計通信的主要程序模塊:
          ( 1) 程序初始化模塊。主要完成串口的選擇、波特率、數據位、校驗位設置、打開串口等工作。
          ( 2) 發送數據模塊。有手動發送和自動發送命令幀 2 種方式。手動發送方式功能主要實現預置多寄存器的值,主要是設置參數上、下限值及報警值,功能碼為 16; 自動發送方式功能主要實現讀取保持寄存器的值,主要是讀取壓力、溫度、流量等信息,功能碼為 03。自動發送方式下程序的實現采用定時觸發方式。當上位機發送完命令幀,延時等待,如在規定的時間內,流量計沒有應答,上位機重發此命令幀,
          這里設置為 3 次呼叫,若都無應答則給出報警提示。部分程序如下:Private Sub Timer2_Timer( )Dim CRCDim bt CRCHi As Byte,bt CRCLo As ByteRe Dim Receive( 8)Re Dim Send( 7)Send( 0) = 1' 設備地址Send( 1) = 3' 功能碼Send( 2) = 1' 回送累計流量低位………………CRC = Cal CRC16Fast( Send,
          6,
          bt CRCLo,
          bt CRCHi) 'modbus 校驗Send( 6) = bt CRCLoSend( 7) = bt CRCHiMSComm1. Output = SendReceive Module'接收模塊Send( 2) = 10'回送累計流量高位………………End Sub
          ( 3) 接收數據模塊。通過查詢方式來完成數據的接收,即在程序中定時查詢 MSComm 控件的 In Buffer Count 屬性是否發生變化。如果串口接收到數據,且數據緩沖區的內容等于設定的字節數時,取出完整的通訊數據幀。在數據處理過程中,首先進行 CRC 校驗,若不正確,丟棄本幀應答數據,上位機重發命令幀。否則對數據進行處理,并將處理結果與 MCGS 實時數據庫對象進行 OLE 數據交換。部分程序如下:Sub Receive Module ( )Dim Count As Integerdelay_time = 0. 2delay_start = TimerWith MSComm1DoDo EventsLoop Until . In Buffer Count = 8 Or Timer > delay_start + delay_time. Input Len = 8Receive = . InputOn Error Resume NextIf Receive( 1) = Send( 1) Then………………For Count = 0 To 8 Text1( Count) . Text = Receive( Count)Next CountEnd IfEnd With…………End Sub
          3、結束語:
            通過 MCGS 與 VB 間的 OLE 通信及 VB 與渦輪流量計間的串口通信,利用 VB 提供的強大的數據通訊和處理功能實現數據采集、處理及控制,并利用 MCGS 組態軟件豐富的圖形化來實現界面設計,將兩種方法結合起來則是一種很好的選擇。目前該方法已應用于天然氣氣化輸配監控系統中,運行結果表明,基于 VB 的 MCGS 和渦輪流量計間的通信具有良好的實時性、穩定性和可靠性。解決了 MCGS 與 QWLJ 系列渦輪流量計的通信問題,實現了 MCGS 對渦輪流量計的實時監控。

          相關新聞

          久久人人做人人玩人人妻精品

          <pre id="q5244"><progress id="q5244"><tt id="q5244"></tt></progress></pre>

          <big id="q5244"><nobr id="q5244"></nobr></big>

              1. <th id="q5244"><video id="q5244"></video></th>