1 引言
現代工業控制系統通常以PC機為上位機,通過與現場工控設備如PLC的數據交換與處理,實現對生產過程的自動控制。對于小型控制系統,采用專門的組態軟件成本太高,用VB設計監控系統則可以降低成本,但首先要解決上">

      技術頻道

      基于OPC技術的上位機與PLC之間的通信

      基于OPC技術的上位機與PLC之間的通信

      1 引言
      現代工業控制系統通常以PC機為上位機,通過與現場工控設備如PLC的數據交換與處理,實現對生產過程的自動控制。對于小型控制系統,采用專門的組態軟件成本太高,用VB設計監控系統則可以降低成本,但首先要解決上位機與PLC之間通信問題。以往使用較多的進程間通信方式是DDE(動態數據交換)方式,隨著OPC技術的發展和普及,它已成為工業過程控制的通信標準。OPC服務器有兩類接口,其中自動化接口主要用于VB、Delphi等開發工具。本文利用羅克韋爾公司提供的OPC接口,用VB編寫了客戶端應用程序,實現了上位機與AB可編程控制器之間的數據交換。

      2 OPC技術簡介


      OPC(OLE for Process Control—用于過程控制的對象連接與嵌入)是一套以微軟對象連接與嵌入OLE、組件對象模型COM、分布式組件對象模型DCOM(Distributed COM)技術為基礎,基于Windows操作平臺,為工業應用程序之間提供高效的信息集成和交互功能的組件對象模型接口標準。OPC實際上是提供了一種機制,通過這種機制,系統能夠以服務器/客戶端標準方式從服務器獲取數據并將其傳遞給任何客戶應用程序。這樣,只要生產商開發一套遵循OPC規范的服務器與數據進行通信,其他任何客戶應用程序便能通過服務器訪問設備。

      OPC服務器有兩類接口:定制接口和自動化接口。定制接口為C++程序服務,自動化接口為VB這一類可使用自動化對象的程序服務。定制接口是服務商必須提供的,而自動化接口則是可選的,不過OPC基金會提供了一個叫做“自動化包裝器”的動態連接庫,用于在兩者間轉換。
      OPC數據存取規范規定的基本對象有三類:服務器(server)、組(group)和數據項(item)。服務器對象包含服務器的所有信息,也是組對象的容器,一個服務器對應于一個OPC server,即一種設備的驅動程序。組對象除了包含它自身信息外,還負責管理數據項。每一個數據項代表到數據源的一個連接,但它沒有提供外部接口,客戶端程序無法對數據項直接進行操作,應用程序必須依靠數據項的容器組對象來對它進行操作。

      3 通信實現
      3.1 RSLinx的配置
      RSLinx是AB可編程控制器在Windows環境下建立工廠所用通信方案的工具,它不僅提供了多種網絡驅動程序,而且提供了最快速的OPC、DDE和Custom C/C++接口。本設計中上位機與Logix5550控制器采用RS-232串口方式連接,在RSLinx中要對DF1網絡驅動程序組態,設置串口特性:COM1、波特率19200bps、一個停止位、無奇偶校驗、全雙工、BCC校驗碼。此外要使用RSLinx的OPC接口作為服務器,還要在RSLinx中對OPC進行配置。

      3.2 安裝OPC自動化接口服務
      若要用VB開發OPC應用程序,必須安裝OPC自動化接口服務,保證計算機系統目錄下有OPCDAAuto.dll。OPC基金會提供了一個叫做“自動化包裝器”的動態連接庫,從OPC基金會的網站(www.opcfoundation.org)可下載。在VB環境中,按“工程”的子菜單“引用…”后,彈出對話框,選擇其中的“RSLinx OPC Automation 2.0”項,這樣才能使用自動化接口。

      3.3 程序設計
      用VB編寫了OPC客戶端應用程序,實現了上位機與Logix5550控制器之間的通信。主要程序代碼如下:

      (1) 連接OPC服務器
      Dim WithEvents MyOPCServer As OPCServer ‘定義服務器對象變量MyOPCServer
      Dim WithEvents MyOPCGroup As OPCGroup ‘定義OPC組對象變量MyOPCGroup
      Set MyOPCServer = New OPCServer
      MyOPCServer.Connect "RSLinx OPC Server" ‘連接RSLinx 的OPC服務器

      (2) 添加OPC組對象
      Set MyOPCGroup=MyOPCServer.OPCGroups.Add("Group1")
      ‘添加OPC組對象MyOPCGroup.IsSubscribed= True
      ‘設置該組數據為后臺刷新
      MyOPCGroup.IsActive = True
      ‘設置該組為激活狀態


      MyOPCGroup.UpdateRate=1000
      ‘設置數據刷新時間為1000

      (3) 添加數據項
      Dim abItemIDs() As String
      ‘項標識符
      Dim abClientHandles() As Long
      ‘客戶端句柄
      Dim abServerHandles() As Long
      ‘服務器端句柄
      Dim abErrors() As Long
      Dim i As Long
      ItemCount=5
      Dim oOPCItem As RSLinxOPCAutomation.OPCItem
      For i = 1 To 5
      abItemIDs(i) = "[" & txtTopic & "]" & txtItem(i) ‘將Topic名和標簽名賦給項標識符
      abClientHandles(i) = i
      ‘給客戶端句柄賦值
      Next i
      MyOPCGroup.OPCItems.AddItems ItemCount, abItemIDs, abClientHandles, abServerHandles, abErrors
      ‘添加數據項操作

      (4) 同步數據讀寫
      OPC數據存取有同步方式和異步方式兩種。異步讀寫數據復雜,需要與事件結合使用,與同步相比速度慢但準確性高。同步讀寫數據簡單,直接使用OPCItem的方法即可。
      Dim One As OPCItem
      Dim Index As Long
      ‘Index為標簽順序號
      Dim OneRead As String
      Dim Xie As String
      Set One = MyOPCGroup.OPCItems(Index)
      One.Read OPCCache
      OneRead = One.Value
      ‘讀數據
      One.Write (Xie)
      ‘寫數據
      若只讀取數據,可以使用DataChange事件,當控制器中所要訪問的數據一旦發生改變時將會觸發該事件,并將該數據自動讀到TxtValue文本框。
      Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
      ‘自動刷新數據
      Dim i As Long
      For i = 1 To NumItems
      txtValue(ClientHandles(i)) = ItemValues(i)
      ‘獲取項的值
      txtTime(ClientHandles(i)) = TimeStamps(i)
      ‘獲取項的時間戳
      txtQuantity(ClientHandles(i))=GetQualityString(Qualities(i))
      ‘獲取項的品質
      Next i
      End Sub

      (5) 斷開OPC服務器
      MyOPCServer.OPCGroups.RemoveAll
      ‘移除所有OPC Group,空出資源
      Set MyOPCGroup = Nothing
      MyOPCServer.Disconnect
      ‘斷開連接

      4 結束語
      利用本文介紹的方法,在實驗室實現了上位機和PLC之間的通信,圖1是OPC客戶端設置界面。此外我們還設計了城市供水監控系統,鑒于篇幅,監控界面不再一一列出。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 久久国产精品亚洲一区二区| 秋霞日韩一区二区三区在线观看| 亚洲一区二区三区日本久久九| 少妇无码AV无码一区| V一区无码内射国产| 亚洲中文字幕无码一区二区三区| 中文字幕亚洲乱码熟女一区二区 | 波多野结衣AV一区二区三区中文| 国产精品亚洲一区二区在线观看| 人妻夜夜爽天天爽一区| 无码精品人妻一区二区三区影院| 日本一区二区在线| 精产国品一区二区三产区| 一区二区三区四区在线播放| 麻豆aⅴ精品无码一区二区| 性盈盈影院免费视频观看在线一区| 国产日韩AV免费无码一区二区三区| 久久久精品一区二区三区| 男人的天堂av亚洲一区2区 | 国精产品一区二区三区糖心 | 日韩精品区一区二区三VR| 天堂一区二区三区在线观看| 日本丰满少妇一区二区三区| 久久se精品一区二区国产| 精品在线一区二区| 精品无码AV一区二区三区不卡| 精品视频一区二区三区在线播放| 无码人妻精品一区二区三18禁| 国产伦精品一区二区三区免费迷 | 精品人妻少妇一区二区三区不卡 | 亚洲一区二区三区国产精品无码| 国产精品一区二区AV麻豆| 一区二区三区四区精品视频| 视频一区二区在线观看| 亚洲一区二区三区无码国产| 国产一区二区三区在线观看精品| 成人毛片无码一区二区| 农村乱人伦一区二区| 中文字幕av无码一区二区三区电影 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 国产成人av一区二区三区在线 |