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 ...
随机推荐
- uva1632 (区间DP)
题意:有n个宝藏,在x轴上,每个宝藏在某个时间会消失,问最少吃完所有宝藏的时间是多少,否则输出no solution 分析:区间DP,f[i][j][01]代表i到j区间内的全部吃完,停留在左/右端, ...
- codevs 1297 硬币
1297 硬币 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 我们知道即使是同一种面值的硬币, ...
- js处理时间戳
工具类 function add0(m){return m<10?'0'+m:m } function format(shijianchuo) { var time = new Date(shi ...
- java自带的jvm分析工具
http://domark.iteye.com/blog/1924302 这段时间觉得很有必要对java的内存分析工具进行熟悉,这样以后出现机器负载较高,或者反应很慢的时候,我就可以查找原因了.上 ...
- salt-minion和salt-master之间如何重新认证
salt minion 和salt master之间重新建立认证 修改了minion端的id之后 比如修改了hostname之后, minion端会将minion的id 存放在/etc/salt/mi ...
- JavaWeb对RSA的使用
由于公司的网站页面的表单提交是明文的post,虽说是https的页面,但还是有点隐患(https会不会被黑?反正明文逼格是差了点你得承认啊),所以上头吩咐我弄个RSA加密,客户端JS加密,然后服务器J ...
- scrapy-splash抓取动态数据例子七
一.介绍 本例子用scrapy-splash抓取36氪网站给定关键字抓取咨询信息. 给定关键字:个性化:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 二.网站信 ...
- 强大实用的jQuery幻灯片插件Owl Carousel
演 示 下 载 简介 Owl Carousel 是一个强大.实用但小巧的 jQuery 幻灯片插件,它具有一下特点: 兼容所有浏览器 支持响应式 支持 CSS3 过度 支持触摸事件 支持 JSON 及 ...
- [转载]抓包工具Charles乱码解决办法
FROM: http://blog.csdn.net/huanghanqian/article/details/52973651 安装 SSL 证书 Mac 端 首先去 http://www.char ...
- Razor语法(二)
I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境 ...