iNeuOS工业互联网操作系统,高效采集数据配置与应用
1. 概述
2. 通讯原理
3. 参数配置
1. 概述
某生产企业世界500强的集团能源管控平台项目建设,通过专线网络实现异地厂区数据集成,每个终端能源仪表都有IP地址,总共有1000多台能源表计,总共有将过10000个数据点。在集团端部署iNeuOS工业互联网操作系统,终端能源表计采用Modbus(Slave)协议,集团平台主动网络连接终端能源表计,进行实时数据采集。结构示意,如下图:
但是,随着不断有接入的厂区能源表计,也出现一些现象:(1)设备采集数据顺序不一致;(2)数据采集不及时。
2. 通讯原理
工业领域的平台肯定是一个实时系统,使用iNeuOS进行数据采集,与其他系统不太一样,其他系统数据采集驱动一般包括IO的操作,这种方式很难应对复杂的应用场景。iNeuOS系统的数据采集驱动只负责协议驱动的解析、数据处理、触发反向控制,至于通讯机制和IO操作有专门的服务实例调度器和IO管理器来负责,这样设计的好处是:(1)适用于各种通讯应用场景,例如:4G、DTU、固定或不固定IP等等;(2)支持高并发数据交互,例如云平台建设;(3)系统更稳定、更健壮,不会因为某项异常影响其他仪表通讯。整体框架,如下图:

基于iNeuOS核心框架结合集团能源管控平台的设备数量抽象出来的通讯原理如下图:

iNeuOS包括多个服务调度实例,一个服务调度实例包括多个IO控制器,IO控制器中包括多个仪表,那么服务调度实例和IO控制器的多少是根据实际现场情况设置的,所以要提高仪表的数据采集效率,是在服务调度实例和IO控制器中进行设置,同时考虑到Modbus通讯协议机制本身是应答模式,请求数据命令与返回数据之间有间隔中断时间。
在《物联网软件架构设计与实现》书中主要就是介绍这些内容。
3. 参数配置
该项目案例提高数据采集效率,可以通过合理配置服务实例、控制模型、间隔时间和控制分组来实现。
(1) 服务实例的配置
服务实例配置原则:一个厂区配置一个服务实例、一类仪表设置一个服务实例、同一个数据采集周期配置一个服务实例等,根据现场数据采集的实际需求平衡负载配置相应的服务实例。配置如下图:

(2) 控制模型的配置
根据该案例的实际情况,每个终端能源仪表都有独立IP地址,总共有1000多台能源表计,可以考虑把控制模型设置成并发模型(Parallel)。如下图:

因为网络通讯是全双工,采用并发控制模型表示:在当前服务实例下,一次性并发向仪表发送请求命令,进行异步接收返回的数据信息。这就比每个设备轮询发送请求命令->等待数据->接收数据同步模型要更高效率。并发控制模型示意,如下图:

(3) 间隔时间的配置
一个IO控制器中至少有一台设备驱动,在并发控制模型下可以设置并发间隔(每次集中发送请求命令的间隔时间)和并发设备间隔(每个设置驱动之间发送请求命令的间隔时间)来提高仪表数据采集效率。配置如下图:

(4) 控制分组的配置
在服务实例下可以设置采集设备的逻辑分组,每一个分组独立进行数据采集的任务调度。如果每一台设备都设置不同的控制分组名称则表示一个IO控制器只负责一台设备进行数据采集,这样适合高频数据采集。配置如下图:

通过上述的配置,每台仪表采集数据的周期计算公式为:数据点采集周期时间=并发间隔+并发设备间隔*控制分组里的设备数量,如果一台设备中存在读取多个数据点的命令,那么存在一定误差,但是不会太大。
物联网&大数据技术 QQ群:54256083
物联网&大数据项目 QQ群:727664080
QQ:504547114
微信:wxzz0151
博客:https://www.cnblogs.com/lsjwq
微信公众号:iNeuOS

iNeuOS工业互联网操作系统,高效采集数据配置与应用的更多相关文章
- iNeuOS工业互联网操作系统,智慧用电测控应用案例
目 录 1. 概述... 2 2. 系统部署结构... 2 3. 用电测控终端... 3 4. 系统应用介绍... 6 1. 概述 通过物联网技 ...
- iNeuOS工业互联网操作系统下发命令给iNeuLink硬件网关,进一步修改设备参数和控制设备
目 录 1. 应用场景... 1 2. DCS数据采集... 2 3. 硬件网关的配置... 2 4. 平台端配置... 3 1. 应用场景 i ...
- iNeuOS工业互联网操作系统,脚本化实现设备运行时长和效率计算与统计
目 录 1. 概述... 2 2. 实时采集开停状态... 2 3. 增加虚拟设备... 2 4. 脚本统计和计算设备运行时长... 4 5. ...
- iNeuOS工业互联网操作系统部署在华为欧拉(openEuler)国产系统,vmware、openEuler、postgresql、netcore、nginx、ineuos一站式部署
目 录 1. 概述... 3 2. 创建虚拟机&安装华为欧拉(openEuler)系统... 4 2.1 创建新的虚拟机... 4 2.2 ...
- iNeuOS工业互联网操作系统,矿山动态产量计量系统和铁路车辆识别系统应用场景案例
目 录 1. 概述... 2 2. 平台演示... 2 3. 矿山动态产量计量系统... 2 4. 铁路车辆识别系统... 4 1. 概述 iN ...
- iNeuOS工业互联网操作系统,在线报表(Excel)开发工具
目 录 1. 概述... 2 2. 视频介绍... 2 3. 应用过程... 2 1. 概述 iNeuOS工业互联网操作系统在线报表(Excel)工具的开 ...
- iNeuOS工业互联网操作系统,设备运维业务和“低代码”表单开发工具
目 录 1. 概述... 2 2. 设备运维业务... 3 3. "低代码"表单开发工具... 6 1. 概述 iNeuOS工业互联网 ...
- 历时9个月重构iNeuOS工业互联网操作系统,打造工业领域的“Office”
目 录 1. 概述... 1 2. 整体介绍... 2 3. 主要功能简介... 5 1. 概述 历时9个月的时间,对iNeuOS工业互联网操作系统进行全 ...
- iNeuOS工业互联网操作系统,面向4个领域颁发第一批技术认证资质
为了更好的紧密合作.利益多赢和共建生态.iNeuOS工业互联网操作系统面向:仪器仪表.双碳环保.核能科学与工程和钢铁冶金领域颁发第一批技术认证资质,一共21名同志在项目实施过程中表现突出,从iNeuO ...
- iNeuOS工业互联网操作系统,三维(3D)模型在线编辑应用和实时数据统计(和值、均值、众数、方差、中位数等)
目 录 1. 概述... 1 2. 三维(3D)模型在线编辑与应用... 2 3. 实时数据统计... 4 1. 概述 此次,iNeuOS工业互联网操作系 ...
随机推荐
- javascript事件循环机制及面试题详解
javascript是单线程执行的程序,也就是它只有一条主线,所有的程序都是逐行"排队"执行,在这种情况下可能存在一些问题,比如说setTimeout.ajax等待执行的时间较长, ...
- [python]格式化字符串的几种方式
目录 方式一:C风格%操作符 方式二:内置的format函数与str类的format方法 方式三:插值格式字符串 python中有以下几种方法可以格式化字符串 方式一:C风格%操作符 这种方法偏C语言 ...
- 【RocketMQ】消息的存储总结
当Broker收到生产者的消息发送请求时,会对请求进行处理,从请求中解析发送的消息数据,接下来以单个消息的接收为例,看一下消息的接收过程. 数据校验 封装消息 首先Broker会创建一个Message ...
- 【NestJS系列】核心概念:Middleware中间件
前言 用过express与koa的同学,对中间件这个概念应该非常熟悉了,中间件可以拿到Request.Response对象和next函数. 一般来讲中间件有以下作用: 执行任何代码 对请求与响应拦截并 ...
- 关于ChatGPT的一些闲扯淡(1)
这篇写的有点迟了,前者子ChatGPT正火的时候,懒病发作一直拖延.今天对ChatGPT做一个简单的讨论,也是把学习的心得和大家分享一下. 首先什么是GPT,英文全称是Generative Pretr ...
- ELK环境部署-LogStash数据收集(二)
一.安装JAVA环境 1.解压jdk压缩包 abc@elk:~$ sudo tar -zxvf jdk-11.0.18_linux-x64_bin.tar.gz -c jdk11 2.添加环境变量 a ...
- CodeForces 1367D Task On The Board
题意 给一个字符串\(t\),和一个长度为\(m\)的数组\(b[]\),要求构造一个字符串\(s\),\(s\)中的字符都出现在\(t\)中,对于\(s[i]\)而言,对于任意\(j\),如果有\( ...
- Jquery ajax方式提交表单
Jquery ajax方式提交表单,目前用过的有两种方式: 1.引人jquery.js和jquery.easyui.min.js后,用下面的方法: $('#checkForm1').form('sub ...
- SpringCloud搭建保姆级教程
一.搭建服务注册与发现中⼼ 使⽤Spring Cloud Netflix 中的 Eureka 搭建服务注册与发现中⼼ 1.创建SpringBoot应用添加依赖 1.spring web 2.eurek ...
- Solution Set -「ABC 205」
应该是最近最水的 ABC 了吧. 「ABC 205A」kcal Link. 略 #include <bits/stdc++.h> using ll = long long; #define ...