Python Modbus字符串解码问题

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

我对带有字符串的pymodbus解码器有问题。例如,当我尝试读取“ abcdefg”时,pymodbus给我“ badcfehg”。字节序和字序不会改变结果。

这是我的代码:

result=client.read_holding_registers(25000,4)
decoder = BinaryPayloadDecoder.fromRegisters(result.registers,byteorder=Endian.Little,wordorder=Endian.Big)
decoder.decode_string(8)

有人可以解释为什么订单不会更改结果吗?我尝试与生成器,这是同样的问题。但是,例如32位浮点数,我就没有这个问题。

我还尝试了较旧版本的pymodbus,它的工作原理是:

decoder = BinaryPayloadDecoder.fromRegisters(registers,endian=Endian.Little)

注意:我已经阅读了以下主题:pymodbus: Issue reading String & multiple type of data from Modbus device,但是我无权访问modbus服务器。

python modbus pymodbus
1个回答
0
投票

问题是,Modbus规范未定义以什么顺序发送char字符串的两个字节,或者甚至没有以什么顺序发送32位类型的16位字。

然后,某些Modbus设备按顺序发送字节或字,而其他设备则相反。

如果正在编写Modbus客户端,则应在配置中添加该选项,以便能够反转32位数据类型中的字节和16位字的顺序。

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