OPC 協議認識


來源: https://blog.csdn.net/vevoliang/article/details/56015712

一、OPC

OPC是一種利用微軟的COM/DCOM技術來達成自動化控制的協定,
采用典型的C/S模式,
針對硬件設備的驅動程序由硬件廠商完成,提供統一OPC接口標准的Server程序,
軟件廠商只需按照OPC標准接口編寫Client程序就訪問Server程序進行讀寫,即可實現與硬件設備的通信。
OPC協定包括:
  1. DA(Data Access)規范:訪問數據主要采用該規范
  2. A&E(Alarm and Event)規范:基於事件,提供Client端訂閱,事件觸發后Server端主動提交回數據的數據訪問方式。
  3. HDA(History data access)規范
  4. OPC XML-DA規范

二、OPC UA

OPC UA(Unified Architecture):OPC協定的新版, 
不再拘束於COM/DCOM技術, 意味着不再像傳統的(Classic)OPC協定那樣僅支持在Windows等平台上使用,具有跨平台性, 同時OPC UA也使用了可靠的通信機制,接口簡單一致。
比如:對傳統的三種不同類型OPC服務器的訪問 - 數據訪問(DA)、報警和事件(AE)、歷史數據訪問(HDA),
要獲得一個溫度傳感器的當前值、一個高溫度事件和溫度的歷史平均值,要依次使用不同的命令執行;
而使用OPC UA,僅用一個組件就非常容易地完成了。配置和工程的時間也因此可以大大縮短。

三、OPC邏輯對象模型

包括3類對象:OPC server對象、OPC group對象、OPC item對象,每類對象都包括一系列接口。

OPC Server對象:

主要功能:
  • 創建和管理OPC Group對象;
  • 管理服務器內部的狀態信息。

OPC Group對象:

主要功能:
  • 管理OPC Group對象的內部狀態信息;
  • 創建和管理Items對象;
  • OPC服務器內部的實時數據存取服務(同步與異步方式)。
屬性:
  • name:組的名字,由客戶端自己定義。
  • active:組的激活狀態,如果為false則組內全部Item將不再從數據源取數據,在客戶端中的表現是讀取不到數據,同時寫數據也影響不到服務器端。
  • update rate:服務器向客戶端提交變化數據的更新速率(這個數值應比服務器設定的最小值大)。
  • Percent Dead band:數據死區,即能引起數據變化的最小數值百分比。

OPC Item對象:

主要功能:
  • 用來描述實時數據,代表了與服務器數據源的連接,而不是數據源。
  • 一個項不能被OPC客戶端訪問,因此在OPC規范中沒有對應於項的COM接口,所有對項的訪問都需要通過OPC Group對象來實現。
屬性:
  • name:項的名稱,在服務器對應於Item ID。
  • active:項的激活狀態。
  • value:項的數據值。
  • quality:項的品質,代表數值的可信度。
  • Timestamp:時間戳,代表數據的存取時間。
注:
1.Item的存儲類型————VARIANT(編寫程序時使用的主要也是它)
2.Item的數據類型(VARTYPE):
3.Item的Alias:項的別名,由服務器設置,避免了項名稱過長所帶來的麻煩。
4.Group類型:公共組和私有組。公共組由多個客戶共享,私有組只屬於某一OPC客戶。公共組對連接到服務器的所有客戶都有效,而私有組只能對建立它的客戶程序有效。(大多服務器未實現有公共組)
5.Item在服務器端定義,對應於硬件實際地址,客戶端連接服務器端后創建並添加OPC Group,並創建一系列OPC Item(連接到服務器端定義的Item),將邏輯上等價的一組OPC Item添加到OPC Group中才能通過組對象來對數據進行存取操作。
 
kepserver上地址的數據類型
 
數據類型

四、OPC通信:

同步通信OPC客戶端對OPC服務端進行讀取操作時,OPC客戶端必須等到OPC服務器端完成對應操作后才能返回,在此期間OPC客戶端處於一直等待的狀態。

異步通信OPC客戶端對OPC服務器端進行讀取操作時,OPC客戶端發送請求后立即返回,不用等待服務器端,當OPC服務器端完成操作后再通知客戶端程序。

訂閱需要服務器端支持OPC A&E規范,由客戶端設定數據的變化限度,如果數據源的實時數據變化超過了該限度,服務器則通過回調返回數據給客戶端。

五、OPC客戶端開發大致步驟:

  1. COM組件初始化;
  2. 創建服務器Server對象;
  3. 創建組Group對象;
  4. 創建項Item對象;
  5. 添加Item到Group中;
  6. 添加Group到Server對象中;
  7. 連接服務器(這里的順序與具體實現有關),完成相應操作;
  8. COM組件關閉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM