我是pymodbus和modbus的新手,我已经尝试了一段时间,直接添加一个float
到服务器上下文没有任何成功,我想知道您是否在如何做到这一点上有领先优势我已经尝试通过执行以下操作来使用有效负载:

builder = BinaryPayloadBuilder(endian=Endian.Little)
builder.add_32bit_float(long(69000))
payload = builder.build()

context[slave_id].setValues(register, address, payload)


但是我遇到了有关pymodbus尝试将有效负载转换为int的错误,我的代码主要是同步服务器示例中的代码。
任何帮助将是非常好的

最佳答案

builder = BinaryPayloadBuilder(endian=Endian.Little)
builder.add_32bit_float(30.3)
payload = builder.to_registers()

context[slave_id].setValues(register, address, payload)


这是正确的方法,请注意“寄存器”是起始寄存器,所有modbus寄存器均为16位宽,因此32位浮点数占用2(寄存器和寄存器+1)。

07-24 15:39