OPC UA的监控项、订阅、和通知
MonitoredItem


- MonitorItem可以监控一个属性,一个变量或者一个事件
- 可以通过MonitorItem定义的过滤器(fiter),来决定是否产生一个通知
- Queue attribute定义了可以被缓存的通知数量,可以通过配置策略决定丢弃新消息还是最老的消息
Triggering model
- MonitoredItem服务允许某item只有在关联Item被触发时才会被触发
- 这是通过在触发对象和被触发对象间建立连接来实现的


Notification
Subscription
- 订阅包含一组由客户端分配的监控项。监控项可以生成通知,这些通知,由订阅发送给客户端
- 订阅拥有一个发布间隔,订阅的发布间隔定义了订阅执行的循环率。每次执行,订阅均试图发送一条NotificationMessages,NotificationMessages中包含了还没有报告给客户端的通知
- 订阅以回应发布请求的方式向客户端发送NotificationMessages。发布请求通常以接收顺序存储到Session中,当有通知需要发送时,在每次发布循环时,会从队列中取出相应的请求,并发送通知到客户端,如果没有待发送通知,请求则不会从队列中被删除
- 在循环的开始,如果已经存在待发送通知但还没有发布请求,服务器将会进入等待状态,一旦接收到发布请求,则立即向客户端发送通知,无需等待另外一次循环
- 订阅有一个存活计数器,保存了没有发送通知的周期循环次数,当循环次数达到用户在创建订阅时配置的预置,则会发送一条存活消息到客户端,同时从队列中取出一条发布请求,用于表示该订阅仍然处于存活状态。存活NotificationMessage中不包含通知,但包含下一条消息的序列号
- 订阅是否发布通知可以由客户端在创建时指定,也可以后续通过SetPublishMode服务设置,设置为Fasle时,订阅将停止向客户端推送通知,但是订阅会继续执行,且持续发送存活消息
- 订阅包含一个寿命计数器,保存了在没有发布请求时经历的循环次数,当达到阈值时,会删除这个订阅以及与订阅相关的监控项。在删除订阅时,会发送一条StateChangeNotification消息,并携带状态码Bad_Timeout
- Session维护了已发送通知的转发队列,只有当客户端确认消息接收后,才会从队列宗移除,服务器应当保存有两倍于发送请求数量的消息,这种能力可以由服务器的profile定义,如果转发队列满,则删除最旧的消息。当订阅被转移到另外的session时,转发队列同时也需要迁移过去
HasEventSource
HasNotifier


Alarm


- 告警如果处于活动状态(Active)则表明条件所表示的状况正在发生,如果Active=False则表明处于正常状态
- 有些告警会引入Active状态的子状态,入high level state与critical high state
- 搁置状态(Shelved)可以由操作员通过OPC UA方法设置,抑制状态(Suppressed)由服务器出于内部原因设置,告警服务器通常会实现抑制、搁置和停止服务特性,以避免操作员被告警风暴淹没,而能够专注于真正严重的告警
- 搁置、抑制和停止服务状态与Disable状态不同,它们表明告警仍然生效,并继续通过订阅分发至客户端


- 在Ack Delay期间,告警处于Unacknowledged状态,也即在此时间段内,操作员没有感知到告警,因此未进行操作
- 当操作员感知到告警,并确认后,告警进入了Acknowledged状态,此时操作员需要时间确认这个告警并作出反应,此时处于Operator Response Delay
- 之后采取行动,进入到Process Delay状态,到操作生效为止
- 之后产生效果,值向下,并在经过告警死区之后消除并转入Normal状态
- 如果不进行操作,则值继续上升并产生后果
Condition Instance
HasCondition Reference
- 如果在类型中(ObjectType/VariableType)中有HasCondition关系,其实例也要继承
- 如果类型中引用的是ConditionType,其类型实例也要指向该ConditionType
- 如果类型上不允许配置HasCondition,则可以在实例上增加
AddressSpace Sample


- HasNotifer维护了一个通知器的层次,目的端产生的事件在源端可读,由此可以在不同的通知器层次有针对性的读取事件(如只读Area1或者只读Tank Farm)
- HasEventSource用于指明事件生成的源,只有HasEventSource及其子类型所指向的目标节点上可以由HasCondition关系
- HasCondition关系表明了能够具体生成的Condition/告警
- 通常的ConditionType对象是作为对象的一部分存在的,这里的MyAlarmTypeA实际上是从ConditionType继承而来
- 某些服务器中,HasCondition的target节点可以是ConditionType


几个问题
- Event、Condition和Alarm是什么关系
- EventType是ConditionType的父类
- ConditionType是AlarmType的父类
- Event、Condition和Alarm是其实例
- Event最为泛化,主要是定义了事件的基本属性
- Condition则拥有状态
- Alarm则拥有更多可被设置的状态
- HasEventSource、HasNotifier有什么区别
- HasEventSource指明了事件产生的源
- HasNotifier是HasEventSource的子类
- HasNotifer组织的是一张通知器的网,关系的目标节点所产生的事件在源端也可以看到,可供用户定义自己查看事件的范围
- Condition只能加到HasEventSource的目标节点上
- GeneratesEvent、AlwaysGenerateEvent引用有什么区别
- GeneratesEvent表明ObjectType,VariableType可能产生事件,以及Method在调用时可能产生事件
- AlwaysGenerateEvent的起点只能是Method,且在每次调用时必然产生事件
- GeneratesEvent和AlwaysGenerateEvent的终点只能是表示EventType及其子类
参考资料
- 《OPC统一架构From马克》2.10,4.9,5.7章节
- 《OPC UA Part 3 - Address Space Model Release 1.04 Specification》4.6, 7.15, 7.16, 7.17, 7.18章节
- 《OPC UA Part 4 - Services Release 1.04 Specification》5.12, 5.13章节
- 《OPC UA Part 9 - Alarms and Conditions Release 1.04 Specification》 第4章,第5章,第6章,附录B.2节
OPC UA的监控项、订阅、和通知的更多相关文章
- 关于OPC UA Helper 命名空间中的OpcUaClient 类中的订阅函数的更改
原函数是opcUaClient.MonitorValue("ns=4;s=MAIN.d", new Action<double, Action>(MonitorTest ...
- C# 读写opc ua服务器,浏览所有节点,读写节点,读历史数据,调用方法,订阅,批量订阅操作
OPC UA简介 OPC是应用于工业通信的,在windows环境的下一种通讯技术,原有的通信技术难以满足日益复杂的环境,在可扩展性,安全性,跨平台性方面的不足日益明显,所以OPC基金会在几年前提出了面 ...
- iNeuOS工业互联平台,增加OPC UA驱动,同步和订阅方式读取数据
目 录 1. 概述... 1 2. 平台演示... 2 3. OPC UA应用效果... 2 1. 概述 最近的项目,用户需要使用OPC UA读取数据,通 ...
- C# 实现opc ua服务器的远程连接(转)
原文转自:https://www.cnblogs.com/dathlin/p/7724834.html OPC UA简介 OPC是应用于工业通信的,在windows环境的下一种通讯技术,原有的通信技术 ...
- OPC协议解析-OPC UA OPC统一架构
1 什么是OPC UA 为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA.OPC UA接口协议包含了之前的 ...
- 从 OPC 到 OPC UA
[前言]OPC是一个工业标准,所属国际组织是OPC基金会,现有会员已超过220家,包括世界上所有主要的自动化控制系统.仪器仪表及过程控制系统的公司. [经典 OPC]经典OPC规范基于微软Window ...
- OPC UA (统一架构)的优势
OPC UA OPC统一架构(OPC Unified Architecture)是OPC基金会(OPC Foundation)创建的新技术,更加安全.可靠.中性(与供应商无关),为制造现场到生产计划或 ...
- 转:OPC协议解析-OPC UA OPC统一架构
1 什么是OPC UA 为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA.OPC UA接口协议包含了之前的 ...
- SharpNodeSettings项目,可配置的数据采集,统一的工业数据网关,OPC UA服务器开发,PLC数据发布到自身内存,redis,opc ua,以及数据可视化开发
本项目隶属于 HslCommunication 项目的SDK套件,如果不清楚HslCommunication组件的话,可以先了解那个项目,源代码地址:https://github.com/dathli ...
随机推荐
- GCC,LLVM,Clang编译器对比
http://www.cnblogs.com/qoakzmxncb/archive/2013/04/18/3029105.html 在XCode中,我们经常会看到这些编译选项(如下图),有些人可能 ...
- Clover 的功能就是给资源管理器加上 Chrome 一样的标签页
官网下载地址:http://cn.ejie.me/
- js:输入字数限制
Demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- jstack_查看当前进程及所属线程执行情况
C:\Program Files\Java\jdk1.7.0_45\bin\jstack.exe 1.任务管理器:进程选择PID 2.命令行执行 cd C:\Program Fi ...
- appium+python自动化51-adb文件导入和导出(pull push)
前言 用手机连电脑的时候,有时候需要把手机(模拟器)上的文件导出到电脑上,或者把电脑的图片导入手机里做测试用,我们可以用第三方的软件管理工具直接复制粘贴,也可以直接通过adb命令导入和导出. adb ...
- [转]SSIS ConnectionManager.ConnectionString Property
本文转自:http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.connectionmanager.conne ...
- Qunit的使用
1.新建一个html页面,如下 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht ...
- Media-媒介(媒体、介质)【译】
Media-媒介(媒体.介质) 转载请注明来源:http://blog.csdn.net/lifeshow Android支持定制的媒介解码器,需要将定制的解码器接口暴露给框架. ...
- css颜色大全
本文来自:http://www.cnblogs.com/axing/archive/2011/04/09/CSS.html CSS颜色代码大全: FFFFFF #DDDDDD #AAAAAA #888 ...
- 一步一步学Spring.NET——1、Spring.NET环境准备
Spring.NET 1.3.2下载地址:http://down.51cto.com/data/861700 下载后解压 Spring.NET-1.3.2.7z:这个里面有我们须要用到的全部东西. S ...