我对pymodbus和modbus很陌生,我已经尝试了一段时间直接添加浮点数
对于没有成功的服务器上下文,我想知道您是否对如何做到这一点有任何指导。我已经尝试通过这样的操作来使用有效载荷:
builder = BinaryPayloadBuilder(endian=Endian.Little)
builder.add_32bit_float(long(69000))
payload = builder.build()
context[slave_id].setValues(register, address, payload)但是,当pymodbus试图将有效负载转换为int时出错,我的代码主要是来自同步服务器示例的代码。任何帮助都会很好
发布于 2014-09-16 08:49:34
在研究了浮点数的寄存器和分割成16位整数之后,我提出:
register = 3
slave_id = 0x00
address = 0x01
values = context[slave_id].getValues(register, address, count=2)
# Two integers to a floating point
i1 = values[0]
i2 = values[1]
f = unpack('l',pack('<HH',i1,i2))[0]
f = f+1
# Floating point to two integers
i1, i2 = unpack('<HH',pack('l',f))
print(f,i1,i2)
context[slave_id].setValues(register, address, [i1,i2])我在Endian的编码中遇到了一些问题,检查你的modbus客户端需要什么,
https://stackoverflow.com/questions/25862853
复制相似问题