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 ...
随机推荐
- BZOJ 4032: [HEOI2015]最短不公共子串 后缀自动机 暴力
4032: [HEOI2015]最短不公共子串 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4032 Description 在虐各种最 ...
- Hiho----有向图欧拉回路
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho破解了一道又一道难题,终于来到了最后一关.只要打开眼前的宝箱就可以通关这个游戏了. 宝箱被一种奇怪的机关锁住 ...
- Web安全开发指南--异常错误处理与日志审计
1.异常错误处理与日志审计 5.1.日志审计系统安全规则 1 日志系统能够记录特定事件的执行结果(比如 成功或失败). 确保日志系统包含如下重要日志信息: 1. 日志发生的时间: 2. 事件的严重 ...
- Web安全开发指南--数据验证
1.数据验证 4.1.输入数据验证安全规则 1 数据验证必须放在服务器端进行. 2 至少对输入数据的数据类型.数据范围和数据长度进行验证. 3 所有来自不可信数据源(比如网络.用户命令.数据库和文件系 ...
- .Net中的7Zip——Sharpcompress
虽然微软在.net 4.5中集成了对zip的解压支持,但还是比较弱.如果我们想让程序像7zip那样支持万能解压,Sharpcompress可以帮你实现这个目标,它是一个C#写的压缩/解压工具,虽然还没 ...
- s3c2440对nandflash的操作
转:http://blog.csdn.net/zhaocj/article/details/5795254 nandflash在对大容量的数据存储中发挥着重要的作用.相对于norflash,它具有一些 ...
- iOS- dispatch_semaphore和NSOperationQueue并发
并发:同一个时间内运行多个任务.又叫共行性,是指处理多个同时性活动的能力. 并行:是指两个并发的任务同时发生. 并发不一定并行,并发不一定要同时发生. 举个例子: 有两个快递分别要送到目的地,有以下两 ...
- 【Tomcat】Tomcat闪退的问题解决/Tomcat修改端口号无效
一. Tomcat闪退的问题解决 1.首先 确定JDK的环境变量配置正确 2.下载纯净的新的Tomcat 3.在bin\startup.bat文件中的第一行前面加入: SET JAVA_HOME = ...
- 一份不太简短的LaTeX教程 lshort – A short introduction to LATEX 2elshort – A short introduction to LATEX 2e
Lshort started as a translation and rationalisation of a ground-breaking German-language i ...
- jQuery中的动画与效果
1.基本效果 匹配元素从左上角开始变浓变大或缩小到左上角变淡变小 ①隐藏元素 除了可以设置匹配元素的display:none外,可以用以下函数 hide(speed,[callback]) 返回值: ...