探讨:工业物联网,纯上报设备的数采

        事情是这样的,有一台设备是modbus-tcp协议,手工操作测量,自动发送测量结果,就这,没别的了。

        开始看起来挺简单,连接上去就等着收数据嘛,多简单!后来发现麻烦得很啊,关键的麻烦就是TCP连接断开是无法知晓的(TCP的keep-alive机制非常慢,要以小时计),所以设备如果断电(关掉),DTU(程序是我写的)是无法及时发现的,只会傻等,而设备再次打开后程序不会发现,于是客户反应没有数据。由于没有设备验证,以上也只是我的猜测。

        但是不管怎么样,此类问题还是要有个通用的防范机制的。

        首先可以把问题分为两类,或者说两个思路:

  • 用交互解决。因为这种设备其实不会离开人工操作独立运行(不按下按钮就不会测量),所以DTU独立运行的模式根本就是错的,只要通过界面操作手动连接或重连,就不会发生问题了。这个思路没什么问题,但是实际实施有问题,因为整个系统是别人设计的(展开说就不是技术问题了)。
  • 纯技术解决。想办法自动发现连接断开,比如自动重连以确认设备正常。由于手头没有设备,不知道设备有没有特别限制(比如某些设备只允许一个连接,第二个连接直接拒绝),只能先从通用角度考虑。

        然后分别分析一下具体做法。

        交互方式比较容易,就是支持用户发一个指令来重新连接,只要前端肯配合,实现是很容易的。前端不配合的话,我可以写个单独的客户端,就一个大大的按钮“重新连接”(好像不太好意思哦)。

        纯技术考虑的就是这么几个点:

  • 超时无数据自动断开重连。超时时间不好控制,因为测量是人工触发,间隔可能会很久很久,但是又可能刚好是断开重连的时候出结果,这样就会错过数据。
  • 原有连接不断开,尝试一个新连接。这就与设备特性有关了,设备会不会只支持一个连接(这种设备确实有),第二个连接会不会破坏第一个连接(猜的),会不会导致数据丢失?
  • 差不多吧,先写写看,再测测看。

(这里是结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/685146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】S2 数学基础 P4 概率论

目录 基本概率论概率论公理随机变量 多个随机变量联合概率条件概率贝叶斯定理求和法则独立性 期望与方差小结 基本概率论 机器学习本质上,就是做出预测。而概率论提供了一种量化和表达不确定性水平的方法,可以帮助我们量化对某个结果的确定性程度。 在…

状态模式:灵活管理对象状态的设计策略

状态模式:灵活管理对象状态的设计策略 在软件开发的过程中,我们经常会遇到对象根据其内部状态的改变而改变其行为的场景。传统的处理方式可能会使用大量的条件判断语句来处理不同的状态转换以及相应的行为,这不仅使得代码难以维护&#xff0…

【UI自动化测试技术】自动化测试研究:Python+Selenium+Pytest+Allure,详解UI自动化测试,iframe、窗口等控件切换(精)(五)

导言 在上一篇文章里,我们一起学习了键盘事件、鼠标事件以及其它的一些特殊情况的处理。这篇文章我们一起学习Selenium中一些特殊窗口以及iframe,如何处理。 学习目标 了解对浏览器的基本功能操作(本节重点)学习如何对弹窗进行操…

素数算法(普通求解,埃氏筛,欧拉筛)

素数算法(常规求解,埃氏筛,欧拉筛) 1. 常规求解1.1 原理解释1.2 算法实现 2 . 埃氏筛2.1 原理解释2.2 算法实现 3. 欧拉筛3.1 原理解释3.2 算法实现 1. 常规求解 1.1 原理解释 枚举法是一种简单的求解素数的方法,其基…

黑马程序员java部分笔记(持续更新)九点五:数组的动态初始化与常见问题

为什么有动态初始化呢? 当 不知道数组里几个元素的具体值时用动态初始化 动态初始化:初始化时只指定数组长度,由系统分配初始值 格式:数据类型[]数组名new 数据类型[数组长度]; 特点:在创建的时候有自己指定数组长度,…

Java的集合框架和泛型

文章目录 集合框架什么是集合框架类和接口总览 集合框架的重要性背后所涉及的数据结构以及算法什么是数据结构容器背后对应的数据结构什么是算法 包装类基本数据类型和对应的包装类装箱和拆箱自动装箱和自动拆箱 泛型什么是泛型引出泛型语法泛型类泛型的上界(没有下界)泛型方法…

心理辅导|高校心理教育辅导系统|基于Springboot的高校心理教育辅导系统设计与实现(源码+数据库+文档)

高校心理教育辅导系统目录 目录 基于Springboot的高校心理教育辅导系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、学生功能模块的实现 (1)学生登录界面 (2)留言反馈界面 (3)试卷列表界…

方式0控制流水灯循环点亮

#include<reg51.h> //包含51单片机寄存器定义的头文件 #include<intrins.h> //包含函数_nop_()定义的头文件 unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水灯控制码,该数组被定义为全局变量 sbit P17=P1^7; /*****************…

100.网游逆向分析与插件开发-网络通信封包解析-C++还原网络通信系统发送功能

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;数据包组织与发送过程逆向分析 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;ec54e9ae1ca0efe96b87d5…

C/C++如何把指针所指向的指针设为空指针?

实践出真知&#xff0c;指针对于初学的友友来说&#xff0c;头都要大了。喵喵一直遵循在实践中学&#xff0c;在学习中实践&#xff0c;相信你也会有所得&#xff01; 以下是该问题的解决方案&#xff1a; int** ptrPtr new int*; // 创建指向指针的指针 int* ptr new int;…

《动手学深度学习(PyTorch版)》笔记8.2

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

基于Springboot的社区物资交易互助平台(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的社区物资交易互助平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

深度学习||YOLO(You Only Look Once)深度学习的实时目标检测算法(YOLOv1~YOLOv5)

目录 YOLOv1: YOLOv2: YOLOv3: YOLOv4: YOLOv5: 总结: YOLO(You Only Look Once)是一系列基于深度学习的实时目标检测算法。 自从2015年首次被提出以来,YOLO系列不断发展,推出了多个版本,包括YOLOv1, YOLOv2, YOLOv3, YOLOv4, 和YOLOv5等。下面是对YOLO系列的详解…

【光学】学习记录1-几何光学的近轴理论

课程来源&#xff1a;b站资源-光学-中科大-崔宏滨老师&#xff08;感谢&#xff09;&#xff0c;本系列仅为自学笔记 【光学 中科大 崔宏滨老师 1080p高清修复&#xff08;全集&#xff09;】https://www.bilibili.com/video/BV1NG4y1C7T9?p2&vd_source7ba37b2cff2a1b783…

MATLAB计算极限和微积分

一.函数与极限 计算极限&#xff1a;lim(3*x^2/(2x1))&#xff0c;x分别趋于0和1&#xff0c;代码如下&#xff1a; syms x; limit(3*x*x/(2*x1),x,0) limit(3*x*x/(2*x1),x,1) 结果分别为0和1&#xff1a; 1.计算双侧极限 计算极限&#xff1a;lim(3*x^2/(2x1))&#xff0…

wordpress日主题模版Ripro-v5 6.4开心版

RiPro主题全新V5版本&#xff0c;&#xff08;原RiPro v2旧版已停更&#xff09;是一个优秀且功能强大、速度极快&#xff0c;易于管理、现代化的WordPress虚拟资源商城主题。支持首页模块化布局和WP原生小工具模块化首页可拖拽设置&#xff0c;让您的网站设计体验更加舒适。同…

linux进程控制【程序替换】

目录 前言&#xff1a; 1.替换原理 ​编辑 2.替换函数 2.1函数 execl 2.2函数 execv 2.3函数 execlp 2.4函数 execvp 2.5函数 execle 2.6函数 execve 2.7函数 execvpe 前言&#xff1a; 前面我们介绍了进程控制中的创建&#xff0c;退出等待&#xff0c;本章节我们将…

计算机的分类

计算机的分类 1.个人移动设备。这个比较好理解&#xff0c;比较常见的是手机&#xff0c;平板电脑。 2.桌面计算机。这类计算机范围比较广泛&#xff0c;包括低端的上网本&#xff0c;台式计算机&#xff0c;笔记本电脑和高端的工作站。核心部件都是表大规模集成电路技术的cp…

8.JS中的== 操作符的强制类型转换规则

对于 来说&#xff0c;如果对比双方的类型不一样&#xff0c;就会进行类型转换。假如对比 x 和 y 是否相同&#xff0c;就会进行如下判断流程&#xff1a; 首先会判断两者类型是否相同&#xff0c;类型相同的话就比较两者的大小&#xff1b;类型不相同的话&#xff0c;就会进…

核心篇-OSPF技术之序(下)

文章目录 一. 实验专题1.1. 实验1&#xff1a;配置OSPF特殊区域1.1.1. 实验目的1.1.2. 实验拓扑图1.1.3. 实验步骤&#xff08;1&#xff09;配置IP地址&#xff08;2&#xff09;创建环回口&#xff08;3&#xff09;查看路由表&#xff08;4&#xff09;设置Stub区域&#xf…