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

news/2024/11/24 14:03:57/

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

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

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

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

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

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

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

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

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

(这里是结束)


http://www.ppmy.cn/news/1353723.html

相关文章

SP1:基于Plonky3构建的zkVM

1. 引言 SP1为SuccictLab开源的,基于Plonky3构建的zkVM。 开源代码见: https://github.com/succinctlabs/sp1(Rust) 当前暂未实现onchain-verifier,但会采用标准的STARK->SNARK verifier。 SP1 zkVM基于的指令…

【杂谈】裁我?我是研发,我是研发啊!

闲谈 这两年互联网是越来越不太平了,前有国外互联网裁员的妖风四起,后来寒气又传到国内,让我们这群打工人叫苦连天。最近有部电影蛮火的,叫《年会不能停》,感觉跟我前司很相似,不过好像由于今年业绩不太行…

OpenAI首个文生视频模型亮相,你觉得咋样?

2月16日凌晨,OpenAI再次扔出一枚深水炸弹,发布了首个文生视频模型Sora。据介绍,Sora可以直接输出长达60秒的视频,并且包含高度细致的背景、复杂的多角度镜头,以及富有情感的多个角色。 目前官网上已经更新了48个视频d…

云计算基础-快照与克隆

快照及克隆 什么是快照 快照是数据存储的某一时刻的状态记录,也就是把虚拟机当前的状态保存下来(快照不是备份,快照保存的是状态,备份保存的是副本) 快照优点 速度快,占用空间小 快照工作原理 在了解快照原理前,…

autojs通过正则表达式获取带有数字的text内容

视频连接 视频连接 参考 参考 var ctextMatches(/\d/).findOne()console.log("当前金币"c.text()) // 获取当前金币UiSelector.textMatches(reg) reg {string} | {Regex} 要满足的正则表达式。 为当前选择器附加控件"text需要满足正则表达式reg"的条件。 …

python系统学习Day2

section3 python Foudamentals part one:data types and variables 数据类型:整数、浮点数、字符串、布尔值、空值 #整型,没有大小限制 >>>9 / 3 #3.0 >>>10 // 3 #3 地板除 >>>10 % 3 #1 取余#浮点型&#xff…

ubuntu22.04安装jenkins并配置

准备 更新系统 sudo apt update sudo apt upgrade环境准备 jdk 安装 sudo apt install openjdk-11-jdk验证 java -versiongit ubuntu配置git maven ubuntu配置maven 部署 添加 Jenkins 存储库 导入Jenkins存储库的GPG密钥 wget -q -O - https://pkg.jenkins.io/de…

【c++】vector的增删查改

1.先定义一个类对象vector 为了防止和库里面发生冲突&#xff0c;定义一个命名空间&#xff0c;将类对象放在命名空间 里面 #include<iostream> using namespace std; namespace zjw {class vector {public:private:}; }2.定义变量&#xff0c;需要一个迭代器&#xff…