2 个 Modbus 寄存器的结果字节顺序:低字、高字。小端

问题描述 投票:0回答:1

我需要在两个连续的modbus 16位寄存器中编码32位有符号整数。 要求规定字节顺序应为little endian,低地址寄存器应为low word

tcp 流中的最终字节顺序是什么?

假设我想发送号码287.454.020。

写为“自然”十六进制数,即:

0x11223344

如果我理解正确的话,我会认为应用低词和高词会导致:

Regsiter 0:    0x3344 // low word
Register 1:    0x1122 // high word

当我现在应用小端字节顺序时,我最终得到:

Regsiter 0:    0x4433 // low word
Register 1:    0x2211 // high word

因此在 TCP 流中将是:

44 33 22 11

然而,接收者似乎期待以下命令:

33 44 11 22

但这不是大端吗?

我认为接收者期望的顺序应该被称为 Mid-Little Endian。

有人可以澄清一下吗?

endianness modbus modbus-tcp
1个回答
0
投票

然而,接收者似乎期待以下命令:

33 44 11 22

您所描述的是一种期望交换单词的设备,但单词的字节顺序保持不变。

不幸的是,像这样愚蠢的事情在 Modbus 世界中并不罕见。换个词就行了。

© www.soinside.com 2019 - 2024. All rights reserved.