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)。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

steventian72

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值