在使用OPC 采集 工控数据时,在DA模式下。采集数据通常用到 DataChangeEventHandler这个事件。但有时会遇到一些问题,就是当数据不变化时时不会触发 DataChange 这个事件的。

比如像自控系统中的一些开关量,控制模式等变量,变化不会很频繁。

例如 现地/远程 监控点,当前为远程状态,但我上层应用系统刷新页面或者退出登陆后,就丢失了这个状态信号。这里的处理方法也很简单,因为大家都知道,opc是有 Read方法的,调用读取方法就可以了。

我这里提供一个  web 应用系统与 自控系统数据通信策略。 先上个简图:

1.实线为数据采集上报流程,对于正常触发 datachange 事件的热点数据,OPC Client接收到数据之后发送至 Rabbit 的指定交换机里,Web平台从交换机获取实时数据展示。

为什么web平台获取数据要从交换机取数据而不是队列,这里是因为 web展示需要用到交换机分发的模式,试想一下,当多个人打开 Web系统如果用队列 Queue的话,每个人都无法获取到相同的消息,甚至有的人拿不到消息,因为被消费完了。(队列消费一条少一条)

数据上报流程这样就能满足了,大部分Iot 项目主要是数据采集展示,展示实时数据的时候需要用到webSocket 接入实时数据,而不是定时刷新。

2.第二条虚线就是本文讨论的第二点,非热点数据的读取上传。

对于变化频率不高的数字量,在OPCClient很容易读取到 使用AsyncRead() 就可以。这里提供的策略是,使用rabbit的Queue接收消息,前台返回需要读取的监测点号,发送到指定队列,opc client获取到点号值 发送至opcserver请求,

请求完成后将数值返回到 平台监听 的  交换机给前端展示。

Web系统与自控系统数据通讯架构 之 OPC DA DataChangeEventHandler 非热点数据更新策略 ,的更多相关文章

  1. ASP.NET Web API路由系统:路由系统的几个核心类型

    虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分(定义在程序集System.Web.Http.dll中)已经移除 ...

  2. Android系统简介(中):系统架构

    Android的系统架构栈分为4层,从上往下分别是Applications.Application framework.Libraries  & Android Runtime.Linux  ...

  3. 基于 HTML5 WebGL 的污水处理厂泵站自控系统

    前言 一道残阳铺水中,半江瑟瑟半江红.随着城市建设的迅速发展,每年都有大量新建管网水管通水运行.城市中有大量的排水设备,形成相应的城市排水系统,排水系统由检查井.排水泵站.污水处理厂.雨水口.排放口等 ...

  4. 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 真的很感谢大家的支持,今天发表系列3 ...

  5. ASP.NET MVC , ASP.NET Web API 的路由系统与 ASP.NET 的路由系统是怎么衔接的?

      ASP.NET MVC 的路由实际上是建立在 ASP.NET 的路由系统之上的. MVC 路由注册通常是这样的: RouteTable 是一个全局路由表, 它的 Routes 静态属性是一个 Ro ...

  6. WEB项目日志分析系统思考

    一.为什么需要日志分析系统 对ETL系统中数据转换和存储操作的相关日志进行记录以及实时分析有助于我们更好的观察和监控ETL系统的相关指标(如单位时间某些操作的处理时间),发现系统中出现的缺陷和性能瓶颈 ...

  7. Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案

    Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案 1. 运行平台:跨平台 android ios pc mobile 1.1. -------------前端 界面------ ...

  8. Hadoop Web项目--Friend Find系统

    项目使用软件:Myeclipse10.0,JDK1.7,Hadoop2.6,MySQL5.6.EasyUI1.3.6.jQuery2.0,Spring4.1.3. Hibernate4.3.1,str ...

  9. 客户端技术的一点思考(数据存储用SQLite, XMPP通讯用Gloox, Web交互用LibCurl, 数据打包用Protocol Buffer, socket通讯用boost asio)

    今天看到CSDN上这么一篇< 彻底放弃没落的MFC,对新人的忠告!>, 作为一个一直在Windows上搞客户端开发的C++程序员,几年前也有过类似的隐忧(参见 落伍的感觉), 现在却有一些 ...

随机推荐

  1. oracle的 listagg() WITHIN GROUP () 行转列函数的使用

    1.使用条件查询 查询部门为20的员工列表    -- 查询部门为20的员工列表    SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO ...

  2. 执行对象Statement、PreparedStatement和CallableStatement详解

    执行对象是SQL的执行者,SQL是"安排好的任务",执行对象就是"实际工作的人". 执行对象有三种: Statement.PreparedStatement和C ...

  3. 记一次性能优化的心酸历程【Flask+Gunicorn+pytorch+多进程+线程池,一顿操作猛如虎】

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文只是记录我优化的心酸历程.无他,唯记录尔.....小伙伴们可围观,可打call,可以私信与我交流. 干货满满,建议收藏,需要用到时常看看. 小 ...

  4. 7.深入TiDB:range 范围计算优化

    本文基于 TiDB release-5.1进行分析,需要用到 Go 1.16以后的版本 我的博客地址:https://www.luozhiyun.com/archives/605 这篇文章首先会回顾一 ...

  5. CTF入门学习3->Web通信基础

    Web安全基础 01 Web通信 这个部分重点介绍浏览器与Web服务器的详细通信过程. 01-00 URL协议 只要上网访问服务器,就离不开URL. URL是什么? URL就是我们在浏览器里输入的站点 ...

  6. python中使用正则表达式处理文本(仅记录常用方法和参数)

    标准库模块 python中通过re模块使用正则表达式 import re 常用方法 生成正则表达式对象 compile(pattern[,flags]) pattern:正则表达式字符串 flags: ...

  7. mybatis源码分析二

    这次分析mybatis的xml文件 1. <?xml version="1.0" encoding="UTF-8" ?> <configura ...

  8. 描述高频题之队列&栈

    栈和队列 全文概览 基础知识 栈 栈是一种先进后出的数据结构.这里有一个非常典型的例子,就是堆叠盘子.我们在放盘子的时候,只能从下往上一个一个的放:在取的时候,只能从上往下一个一个取,不能从中间随意取 ...

  9. Git 使用,本地项目上传到GitHub远程库

    Git 使用,本地项目上传到GitHub远程库 环境 GitHub账号 点此进入github官网 git客户端工具 点此进入git下载页 本地项目上传到 GitHub 在GitHub中创建一个仓库(远 ...

  10. Perl去重fasta序列

    常规方法 #! usr/bin/perl -w use strict; my $input=shift; my %hash; open IN,"<$input"; $/=&q ...