《物联网框架ServerSuperIO教程》- 23.动态数据接口增加缓存,提高数据输出到OPCServer和(实时)数据库的效率

简介: 22.1   概述及要解决的问题       设备驱动有DeviceDynamic接口,可以继承并增加新的实时数据属性,每次通讯完成后更新这些属性数据。原来是通过DeviceDynamic接口实体类反射的方式获得最新的实时数据,并输出到关系数据库、实时数据库和OPC Server等接口。

 22.1   概述及要解决的问题

      设备驱动有DeviceDynamic接口,可以继承并增加新的实时数据属性,每次通讯完成后更新这些属性数据。原来是通过DeviceDynamic接口实体类反射的方式获得最新的实时数据,并输出到关系数据库、实时数据库和OPC Server等接口。

     但是这种操作方式存在两个问题:1.通过反射的方式,效率不高。2.如果是一个传感器,那么定义的实时数据属性不多;如果是一个站点(可以理解为生产单位或网关层)上传的数据,可能有成千上万监测点,那么不可能在继承DeviceDynamic接口的子类中定义这么多属性。原来的操作方式如下图:


     为了解决上述问题,在DeviceDynamic接口中定义了DynamicCache属性缓存接口,以KeyValue的方式存储监测数据。也就是说如果设备驱动接收一批监测数据,可以循环放到DynamicCache缓存中,再输出到关系数据库、实时数据库和OPC Server等接口。新的操作方式如下图:


    下面介绍使用过程中注意的三个地方,设备驱动、配置输出监测点和配置参数等。

22.2  设备驱动

     可能有的网友已经写好设备驱动了,需要在此的基础上,把数据信息放到DynamicCache缓存中。如下代码:

if (cr == CommandArray.RealTimeData)
{
    Dyn dyn = (Dyn)obj;
    _deviceDyn.DynamicCache.AddOrUpdate("flow",dyn.Flow);
    _deviceDyn.DynamicCache.AddOrUpdate("signal",dyn.Signal);
}

22.3     配置输出监测点

    在根目录下打开“ServerSuperIO.Tool.exe”工具,在【标签配置】里把设备驱动里DynamicCache缓存中想要输出到关系数据库、实时数据库和OPC Server等接口对应的标准名称增加到配置项中。例如:flow和signal。如下图:

22.4     配置参数

    同样打开“ServerSuperIO.Tool.exe”工具,打开【基本配置】。

    如果想要把数据输出到OPC Server接口,先安装相应的组件,在“OPC工具和组件”目录中,最后配置如下参数:


    如果想要把数据输出到关系数据库或实时数据库,配置如下参数:


1.[连载]《C#通讯(串口和网络)框架的设计与实现》

2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍

2.应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案

3.C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)

5.ServerSuperIO开源地址:https://github.com/wxzz/ServerSuperIO

物联网&集成技术(.NET) QQ群:54256083 

下载地址:http://www.bmpj.net/thread-14-1-1.html

 

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
4月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
2月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
2月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
96 11
|
3月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
481 5
|
3月前
|
存储 缓存 监控
一次缓存引发的文件系统数据不一致问题排查与深度解析
本文详述了一次由自研分布式文件系统客户端 EFC 的缓存架构更新所引发的严重数据不一致问题的完整排查过程。
一次缓存引发的文件系统数据不一致问题排查与深度解析
|
3月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
279 0
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
112 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

相关产品

  • 物联网平台