OPC UA Specification 基礎之五 :服務集

7 服務集
7.1 General

 OPC UA 服務(Services)被劃分爲多個服務集(Service Sets)。每個服務集(Service Set)都在邏輯上定義了一組服務(Services),用以訪問服務器(Server)中指定的一些功能。服務集(Server Sets)和所對應的服務(Services)在Part 4中詳細說明。一個服務器(Server)是否支持某個服務集(Service Set),或者某個服務集(Service Set)中是否包含了某個服務(service)都是由配置文件(Profile)定義的。配置文件(Profiles)在Part 7詳細說明。

7.2 發現服務集(Discovery Service Set)

 該服務集(Service Set)定義了用於發現系統中可用的OPC UA服務器(Servers),也提供了一種方法,通過這種方法,客戶端(Clients)可以讀取用於連接服務器(Server)所必需的安全信息。發現服務(Discovery Service)由獨立的服務器(Servers)以及專用的發現服務器(Discovery Servers)實現,也有專用的發現服務器(Discovery Servers)提供允許客戶端(Clients)發現所有已註冊的OPC UA服務器(Servers)的功能。Part 12詳細介紹瞭如何利用專用的發現服務器(Discovery Servers)所提供的發現服務(Discovery Services)。

7.3安全信道服務集(SecureChnnel Service Set)
 這種服務集定義了一些服務(Services),這些服務用於打開一個通信信道,以確保和服務器(Servers)之間交換的所有消息(Messages)的完整性和保密性。Part 12描述了UA安全的基本細節。
 安全信道服務(SecureChannel Services)和其它的服務不同,通常不是由UA應用直接實現的,而是由UA應用建立的通信棧提供的。例如,一個UA服務器(Server)可能是建立在SOAP通信棧之上,允許應用之間使用WS-Secure Conversation規範建立安全信道(Secure Channel),在此情形下,UA應用只需簡單地確認每次接收消息(Message)時,WS-Secure Conversation都是激活的就可以了。Part 6詳細描述了針對不同類型的通信棧如何建立安全信道服務(SecureChannel Service)。
 一個安全信道(SecureChannel)是一個單獨的客戶端(Client)和一個單獨的服務器(Server)之間長期運行的、邏輯上的聯繫,這個通道維護了一套只有該客戶端(Client)和該服務器(Server)知道的密鑰。這個密鑰用於對在網絡上傳輸的消息(Message)進行認證和加密。安全信道服務(SecureChannel Services)允許客戶端(Client)和服務器(Server)安全地協商需要使用的密鑰。
 用於認證和加密消息(Message)的確切的算法,是在服務器(Server)的策略中描述的。這種策略可以通過發現服務及集(Discovery Service Set)被發現,客戶端(Client)在建立安全信道(SecureChannel)時,應選擇恰當的端點(endpoint),這個端點支持所需連接的服務器(Server)安全策略。
 當一個客戶端(Client)和服務器(Server)通過安全信道(SecureChannel)進行通信時,他們需要確保所有接受進來的消息(Message)都是依據安全策略被簽名或加密的。UA應用應該忽略與該安全信道的安全策略不一致的消息(Message)。
 一個安全信道(SecureChannel)是與UA應用會話分離的,然而,一個單獨的UA應用會話應該只能通過一個安全信道(SecureChannel)進行訪問。這就意味着UA應用有能力知道每個消息(Message)所對應的安全信道(SecureChannel)信息。那種雖然能提供安全信道(SecureChannel)機制,但不能允許應用知道和指定消息(Message)相關的安全信道(SecureChannel)信息的通信棧,不能用於實現安全信道服務集(SecureChannel Service Set)。
 UA應用會話(Application Session)和安全信道(SecureChannel)之間的關係如圖表 7 安全信道和會話服務所示,UA應用使用通信棧交換消息(Message)。首先,使用安全信道服務(SecureChannel Service)在兩個通信棧之間建立安全信道(SecureChannel),允許通信棧之間交換信息(Message),其次,UA應用使用會話服務集(Session Service Set)建立UA應用會話(Application Session)。

圖表 7 安全信道和會話服務

7.4 會話服務集(Session Service Set)

 會話服務集(Session Service Set)定義的服務,用於在會話(Session)上下文範圍內的,以用戶的名義,建立應用層連接的服務(Service)。

7.5節點管理服務集(NodeManagement Service Set)
 節點管理服務集(NodeManagement Service Set)允許客戶端對地址空間(AddressSpace)中的節點(Node)進行添加、修改和刪除。這些服務提供一個接口,用於對服務器(Server)進行配置。

7.6 視圖服務集(View Service Set)
 視圖(Views)是公開定義的,服務器(Server)生成的地址空間(AddressSpace)的子集。整個的地址空間(AddressSpace)是默認視圖(View)。視圖服務(View Service)可以對整個地址空間(AddressSpace)進行操作。未來版本的規範有可能也會定義一些用於生成客戶端(Client)定義的視圖(View)的服務(Services)。
視圖服務集(View Service Set)允許客戶端(Clients)通過瀏覽的方式發現視圖(View)中的節點(Nodes)。瀏覽過程允許客戶端(Clients)在層次結構中上下導航,或者沿着節點(Nodes)之間的引用(References)瀏覽導航。在這種方式下,瀏覽也允許客戶端(Clients)發現整個視圖(View)的結構。

7.7 查詢服務集(Query Service Set)
 查詢服務集(Query Service Set)允許用戶在不知道地址空間(Address Space)中的數據存儲邏輯結構以及不用瀏覽整個地址空間(Address Space)的前提下,就可以訪問地址空間。
查詢過程允許客戶端(Clients)根據客戶端(Clients)定義的過濾條件,選擇視圖(View)中的一部分節點(Nodes),所選擇的那些節點(Nodes)被稱爲結果集。
服務器(Servers)可能比較難以處理那些需要對運行時數據(runtime data)進行訪問的查詢,例如一些可能會涉及消耗大量資源的操作或導致明顯延遲的設備數據,這種情況下,服務器(Server)有必要拒絕這種查詢。

7.8 屬性服務集(Attribute Service Set)
 屬性服務集(Attribute Service Set)用於讀寫屬性(Attribute)值。屬性(Attribute)是由OPC UA定義的節點(Nodes)的基本特徵,服務器(Servers)或客戶端(Clients)不能定義屬性(Attributes)。屬性(Attribute)是地址空間(AddressSpace)中唯一被允許擁有數據值的元素。值屬性(Value Atribute)是一個特殊的屬性(Atribute),用於定義屬性(Attribute)值。

7.9 方法服務集(Method Service Set)
 方法(Methods)代表對象(Objects)的函數調用。在Part 3中詳細說明。
方法(Methods)被激活,無論是否執行成功,在結束後返回。方法(Methods)執行時間是根據它們所執行的功能而變化的。
 方法服務集(Method Service Set)定義了激活方法(Methods)的途徑。一個方法(Method)總是一個對象(Object)組成部分。通過瀏覽及查詢服務(Service),允許發現方法(Methods)。客戶端(Client)通過瀏覽方法(Methods)所屬的對象(Objects)實現對服務器(Servers)所支持的方法(Methods)的發現。
因爲方法(Methods)可以控制現場操作的一些表現行爲,所以方法(Methods)的調用需要依賴於一些環境因素。例如一個方法(Method)剛剛完成執行又被立即激活,而該方法被激活所需要滿足的條件可能還沒有恢復到允許方法(Method)再次被激活的狀態,另外,一些方法(Methods)可能支持併發調用,而其他一些方法可能僅僅支持在一個時間點只能被調用一次。

7.10 監控項目服務集(MoniteredItem Service Set)
 監控項目服務集(MoniteredItem Service Set)是客戶端(Clients)使用的,用於生成和維護監控項目(MoniteredItem)。監控項目(MoniteredItem)監控變量(Variables)、屬性(Attributes)以及事件通知器(EventNotifiers),當檢測到特定狀態時,就會產生通知(Notifications)。它們監控變量(Variables)是否有值或狀態的變化;監控屬性(Attributes)值是否變化;監控事件通知器(EventNotifiers)是否產生新的報警(Alarm)或事件(Event)報告。
 每個監控項目(MoniteredItem)都能識別被監控的項目以及用於週期性向客戶端(Client)發送通知(Notification)的訂閱(Subscription)項目。每個監控項目(MoniteredItem)也會設定用於被監控(採樣)項目的採樣頻率,設定用於變量(Variables)和事件通知器(EventNotifiers)的何時產生通知(Notification)的過濾條件。屬性(Attributes)的過濾條件是通過Part 4中說明的屬性(Attribute)定義實現的。
 監控項目(MoniteredItem)定義的採樣頻率可能會比訂閱(Subscription)的發佈頻率快,因此,監控對象(MoniteredItem)可以被設置爲將所有的通知(Notifications)進行排隊等待發布,或者只對最後一個通知(Notification)進行排隊等待發布。在後一種情況下,排隊的隊列大小等於1。
 監控項目(MoniteredItem)也定義了一種監控模式。該監控模式可以設置爲既不採樣也不報告、只採樣或者即允許採樣也允許報告。當允許採樣是,由服務器(Server)對被監控的項目進行採樣,並且對每個採樣進行評估,以決定是否需要產生通知(Notification)。如果需要產生通知(Notification),相應的通知就進入隊列進行排隊,如果允許報告,隊列會被設置爲對訂閱(Subscription)是可見的,用於完成訂閱的傳輸。
 最後,監控項目(MoniteredItem)也可以被設定爲觸發其它監控項目(MoniteredItem),使其產生報告。在這種情況下,那些產生報告的監控項目(MoniteredItems)的監控模式通常設置爲只採樣,當產生觸發的監控項目(MoniteredItem)產生通知(notification)時,用於產生報告的監控項目(MoniteredItem)所排隊的通知(Notifications)被設置爲對訂閱(Subscription)是可見的,用於完成訂閱的傳輸。

7.11 訂閱服務集(Subscription Service Set)
 訂閱服務集(Subscription Service Set)被客戶端(Client)用於生成和維護訂閱(Subscription)。訂閱(Subscription)是一種實體(entity),可以用於爲那些分配給它們的監控項目(MoniteredItem)進行週期性的發佈通知消息(NotificationMessages)。通知消息(NotificationMessages)包含一個通用的頭以及附加在後面的一系列通知。通知的格式和被監控項目的類型相關。例如變量(Variables)、屬性(Attributes)和事件通知器(EventNotifiers)。
 一旦訂閱(Subscription)被生成,訂閱的存在就和客戶端(Client)與服務器(Server)的會話無關了,這允許一個客戶端(Client)生成一個訂閱(Subscription)後,另一個客戶端(Client),可能是一個冗餘的客戶端(Client)從該訂閱處接收通知消息(NotificationMessage)。
 爲了確保不被客戶端(Client)丟棄(non-use),訂閱(Subscription)被設置爲擁有可配置的生命週期。客戶端(Client)可以週期性的更新該生命週期。如果客戶端(Client)未能更新該生命週期,當生命週期超時後,服務器(Server)會關閉該訂閱(Subscription),同時,所有和該訂閱(Subscription)相關的監控項目(MoniteredItem)也被同時關閉。
 訂閱(Subscription)擁有檢測消息(Messages)的丟失並恢復這些消息(Messages)的特性。每個通知消息(NotificationMessage)包含一個序列號,該序列號允許客戶端(Client)檢測丟失的消息(Message)。當處於一個持續活動的週期內,沒有需要發送的通知(Notifications)時,服務器(Server)發送一個保持活動狀態的消息(Message),該消息包含下一個被髮送的通知消息(NotificationMessage)的序列號。如果某個持續活動週期過期後,客戶端(Client)錯過了接收一個消息(Message),或者客戶端(Client)自己認爲錯過了一個消息(Message),它能向服務器(Server)發出一個請求,請求重新發送一個或多個消息(Messages)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章