1. 程式人生 > >聽說看了這篇文章就徹底搞懂了什麽是OPC(上)

聽說看了這篇文章就徹底搞懂了什麽是OPC(上)

文檔 files 兩個 tool 共存 硬件 信息 更改 消息

從2000年初以來,我們就一直在使用OPC軟件互操作性標準,而那些正準備踏入和想要踏入工業自動化領域的人們卻對這些含義感到困惑。

所以在本中,我將系統地為你梳理OPC知識。

OPC首字母縮寫詞代表什麽?

技術分享圖片

問一個OPC老手,他們或許會笑,因為他們知道有很多含義!在經典的且程序化的說法是:O LE for P rocess C ontrol(用於過程控制的OLE)。OLE 或對象鏈接和嵌入是Windows的基本早期構建塊,允許應用程序在它們之間共享復雜的信息。我記得Windows 3.0的第一個演示中,人們將 Excel電子表格嵌入到 Microsoft Word文檔中,以及更新電子表格,打開Word和更新文檔的重要性。原始OPC標準源自該技術和 COM 或 Windows 組件對象模型。

從那以後,我們會聽到很多其他的一些定義,但是比較出名的是現在官方OPC基金會所給出的說法是:它的含義是O pen P latform C ommunications(開放平臺通信)。其實無論它的定義是什麽,其目標保持不變:消除自動化軟件和硬件平臺之間互操作性的障礙,為用戶提供選擇。

OPC Client(OPC客戶端)和OPC Server(OPC服務器)之間有什麽區別?

OPC客戶端請求數據,有時也想寫入數據。如果允許的話,服務器會響應客戶端的請求並提供數據或接受其寫入。最簡單的形式就是這樣。

可以將OPC服務器看作是協議轉換器,OPC服務器使用設備的專用協議與設備通信,然後使用OPC Classic和OPC UA規範定義的標準化格式提供對該數據的訪問。通常情況下,OPC服務器在OPC客戶端請求讀取或寫入數據之前不會執行任何操作。而某些OPC服務器可以配置為即使在沒有客戶端請求的情況下也可以從設備輪詢數據。這通常是為了允許OPC服務器在其內部緩存中就具有當前數據並且在客戶端請求它時就已經準備就緒(但是是以產生可能不需要的通信流量為代價。)目前許多OPC服務器為用戶提供了靈活性,可以根據應用需求來進行配置。

如果我的控制硬件供應商說他們支持OPC,那麽為什麽我還需要OPC服務器?

當硬件供應商表示他們支持OPC時,通常並不意味著他們直接將OPC服務器嵌入到他們的硬件中。他們的意思是他們擁有OPC服務器軟件,該軟件在某個基於Windows的計算機上運行,????該計算機與其硬件對話並使用一個或多個OPC標準公開數據。此外,對於某些硬件供應商,可能需要額外的許可費才能啟用此OPC服務器功能。我們經常聽到用戶對這一點感到困惑。其實只是為了在銷售時更好聽一點,才會說“我們支持OPC”,所以在此需要澄清一下供應商所說的內容。

現在,一些供應商開始利用多平臺功能,並將OPC UA服務器直接嵌入到他們的PLC中。如果你的 HMI或SCADA軟件支持OPC UA,那麽這可能會非常方便。如果你的客戶端應用程序不支持OPC UA,那麽則可以使用OPC網關應用程序來幫助你從OPC UA 連接到 DA。

技術分享圖片

OPC服務器必須在Server類計算機和操作系統上運行嗎?

OPC服務器不需要服務器類硬件或操作系統。有些供應商可能會針對其具體實施要求這樣做,但OPC標準並沒有規定這一點。OPC服務器軟件通常相當輕巧,可以輕松地與臺式PC上的其他軟件應用程序共存。你可以咨詢你的OPC服務器供應商,了解你的具體應用要求。(以Software Toolbox的產品為例,在它的每個產品網站區域都有一個規格頁面,雖然他們的OPC服務器通常不需要服務器級硬件或操作系統。)

2個OPC服務器如何相互通信?而2個OPC客戶端又如何相互通信?

在OPC世界中,通常客戶端是與服務器通信的。但是好消息是OPC服務器可以與其他OPC服務器通信,OPC客戶端也可以使用相同的方式。

為什麽兩個OPC服務器需要通信?你可以想象一下,你有PLC供應商A和PLC供應商B,並且有一個OPC服務器需要使用兩個不同的PLC供應商的特定設備協議與每個服務器進行通信。你希望將數據從PLC A移動到PLC B,這意味著2個不同的OPC服務器需要相互通信。你可以使用OPC Bridging(OPC橋)軟件應用程序執行此操作。OPC橋接軟件應用程序是OPC客戶端應用程序,可以連接到許多不同的OPC服務器,然後允許你映射兩個OPC服務器之間的數據移動,指定方向,數據轉換等。

技術分享圖片

在OPC客戶端相互通信的情況下,最常見的應用是需要交換數據的兩個不同的SCADA或HMI軟件應用程序。第一個解決方案是查看HMI或SCADA軟件是否支持OPC服務器接口以及OPC客戶端。許多人都是這樣做的,那麽如果是這樣,那麽問題就解決了兩個客戶端應用程序使用其OPC客戶端接口與彼此的OPC服務器接口進行通信。如果沒有,並且客戶端純粹是OPC DA,UA或DA和UA客戶端,那麽使用諸如 Cogent DataHub 之類的應用程序也將是解決方案。Cogent DataHub可以充當OPC服務器,其中包含你定義的標記列表,並且兩個OPC客戶端都可以讀取/寫入這些公共標記。

技術分享圖片

什麽是 OPC數據質量 和 TImestamps ?

技術分享圖片

在 OPC 之前,當你的 HMI 或 SCADA 軟件用內置驅動程序讀取數據之前,它要麽得到數據要麽沒有數據。 如果你沒有得到數據,你就無法知道最後一次獲得數據是什麽時候。 兩者之間沒有差別。

使用OPC服務器,它們可以緩存或保留從設備讀取的最後一個值。它們還會在緩存中為數據加時間戳(TImestamps),通常使用OPC服務器從設備讀取值的時間。某些設備存儲上次更改數據的時間戳,並可使用設備特定的通信協議將其傳遞給OPC服務器。如果設備支持該設備並且OPC服務器支持它,那麽則可以使用設備時間戳。(如:支持該功能的協議的設備時間戳的Software Toolbox產品包括TOP Server DNP,IEC 61850和IEC 60870驅動程序。)

OPC質量是OPC服務器告訴OPC客戶更多關於它們提供價值的一種方式。這樣做的方法是傳遞一個數字以及值和時間戳。在OPC中我們稱之為VQT或"Value,Quality,Timestamp"(“價值,質量,時間戳”)。OPC質量編號實際上是通過設置字位來確定的,這會導致產生不同的值。值192表示“良好”質量,這意味著OPC服務器最後一次輪詢設備它能夠成功獲取數據,因此OPC客戶端可以信任該值。值為0表示質量不佳,通常表示OPC服務器與其輪詢的設備之間存在通信故障。OPC服務器可以使用一系列其他值來表示質量差的原因,但目前它們並未得到廣泛實施。我之前有發過一篇關於OPC數據質量的文章<<一分鐘告訴你什麽是OPC DA質量代碼>>,感興趣的朋友可以去看看。

其實最重要的是OPC客戶端應用程序通常可以配置為更改它們在操作員屏幕或歷史數據庫中向用戶顯示值的方式,以便人們知道該值不值得信任和不值得信任原因。

關於OPC UA,OPC DA等相關內容,我會在下一篇文章中繼續詳細講解,未完待續。

聽說看了這篇文章就徹底搞懂了什麽是OPC(上)