我非常了解Modbus&其相关领域。我需要实现node-js应用程序,该应用程序应该通过TCP连接从Modbus寄存器读取数据,并将其转换为可读格式,如Integer、Float、Time、Char、String。我使用的是Modbus串行npm包。我以某种方式实现了对话部分,但不知道它是正确的还是错误的。请根据您的反馈提出建议。
假设每个寄存器具有2字节的信息&字节数据看起来像So Integer,Char-1字节浮点-2字节用3个字节分配的时间(假设存储将在UNIX时间戳中,甚至请建议是否有其他更好的处理方式(
寄存器保持值 | 缓冲区数据(字节( | 转换值数据类型 | ||
---|---|---|---|---|
97 | 缓冲区00 61 | 97 | 整数 | |
100 | 缓冲区00 64 | d | 字符||
[556598] | 缓冲区02 35 02 56 | 1.32984502248624 | 浮动||
[1,1,1] | 缓冲区00 01 00 01 01 | 2106-02-08 00:40:33 3333 | 时间
Modbus没有定义数据类型的发送方式,它只定义一个或多个16位字以及位的发送。
由于这些寄存器被解释为有符号或无符号整数,或者两个连续的寄存器被解释成浮点,更少的寄存器被理解为时间,那么协议的每个实现都会按照它认为最好的方式进行。
因此,当发送float时,有时会先发送最重要的单词,有时则相反。在这种情况下,Modbus客户端应准备好反转单词。
在传输时间的情况下,它可能会更加复杂。