Modbus TCP 字节到标准数据类型
Modus TCP byte to standard data types
我非常了解 Modbus 及其相关领域。我需要实现节点 js 应用程序,它应该通过 TCP 连接从 Modbus 寄存器读取数据并将其转换为可读格式,如整数、浮点数、时间、字符、字符串。我正在使用 Modbus-serial npm 包。我以某种方式实现了对话部分,但不知道它是对还是错。请提出您的反馈意见。
假设每个寄存器有 2 个字节的信息&字节数据看起来像
所以 Integer, Char - 1 字节
浮点数 - 2 字节
分配 3 个字节的时间(假设存储在 UNIX 时间戳中,甚至请建议是否有其他更好的处理方式)
Register Holding value
Buffer data (bytes)
Converted Value
DataType
97
Buffer 00 61
97
Integer
100
Buffer 00 64
d
Char
[565,598]
Buffer 02 35 02 56
1.32984502248624
Float
[1,1,1]
Buffer 00 01 00 01 00 01
2106-02-08 00:40:33 3333
Time
Modbus 没有定义如何发送数据类型,它只定义了一个或多个 16 位字和位的发送。
由于这些寄存器被解释为有符号或无符号整数,或者两个连续的寄存器被解释为浮点数,甚至更少的 3 个寄存器被解释为时间,因此协议的每个实现都按照它认为最好的方式进行。
因此,当发送浮点数时,有时最重要的字会先发送,有时是 opposite.The Modbus 客户端应准备好在这种情况下反转这些字。
而在传输时间的情况下,它可能会更加复杂。
我非常了解 Modbus 及其相关领域。我需要实现节点 js 应用程序,它应该通过 TCP 连接从 Modbus 寄存器读取数据并将其转换为可读格式,如整数、浮点数、时间、字符、字符串。我正在使用 Modbus-serial npm 包。我以某种方式实现了对话部分,但不知道它是对还是错。请提出您的反馈意见。
假设每个寄存器有 2 个字节的信息&字节数据看起来像 所以 Integer, Char - 1 字节 浮点数 - 2 字节 分配 3 个字节的时间(假设存储在 UNIX 时间戳中,甚至请建议是否有其他更好的处理方式)
Register Holding value | Buffer data (bytes) | Converted Value | DataType |
---|---|---|---|
97 | Buffer 00 61 | 97 | Integer |
100 | Buffer 00 64 | d | Char |
[565,598] | Buffer 02 35 02 56 | 1.32984502248624 | Float |
[1,1,1] | Buffer 00 01 00 01 00 01 | 2106-02-08 00:40:33 3333 | Time |
Modbus 没有定义如何发送数据类型,它只定义了一个或多个 16 位字和位的发送。
由于这些寄存器被解释为有符号或无符号整数,或者两个连续的寄存器被解释为浮点数,甚至更少的 3 个寄存器被解释为时间,因此协议的每个实现都按照它认为最好的方式进行。
因此,当发送浮点数时,有时最重要的字会先发送,有时是 opposite.The Modbus 客户端应准备好在这种情况下反转这些字。
而在传输时间的情况下,它可能会更加复杂。