微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Modus TCP 字节到标准数据类型

如何解决Modus TCP 字节到标准数据类型

我非常了解 Modbus 及其相关领域。我需要实现节点 js 应用程序,该应用程序应该通过 TCP 连接从 Modbus 寄存器读取数据并将其转换为可读格式,例如整数、浮点数、时间、字符、字符串。我正在使用 Modbus 串行 npm 包。我以某种方式实现了对话部分,但不知道它是对还是错。请根据您的反馈提出建议。

假设每个寄存器都有 2 个字节的信息 & 字节数据看起来像 所以整数,字符 - 1 字节 浮点数 - 2 字节 用 3 个字节分配的时间(假设存储将在 UNIX 时间戳中,甚至请建议是否有其他更好的处理方式)

注册持有价值 缓冲数据(字节) 转化价值 数据类型
97 缓冲区 00 61 97 整数
100 缓冲区 00 64 d 字符
[565,598] 缓冲器 02 35 02 56 1.32984502248624 浮动
[1,1,1] 缓冲区 00 01 00 01 00 01 2106-02-08 00:40:33 3333 时间

解决方法

Modbus 没有定义数据类型的发送方式,它只定义了一个或多个 16 位字和位的发送。

因为这些寄存器被解释为有符号或无符号整数,或者两个连续的寄存器被解释为浮点数,甚至更少,因为 3 个寄存器被解释为时间,那么协议的每个实现都按照它认为最好的方式进行。

因此,当发送浮点数时,有时首先发送最重要的字,有时则相反。在这种情况下,Modbus 客户端应准备反转字。

在传输时间的情况下,可能会更加复杂。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?