我在Linkit MK7688上使用PyModbus,它通过MAX485连接到Arduino UNO。下面是我写线圈的代码。在
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
import logging
FORMAT = ('%(asctime)-15s %(threadName)-15s '
'%(levelname)-8s %(module)-15s:%(lineno)-8s %(message)s')
logging.basicConfig(format=FORMAT)
log = logging.getLogger()
log.setLevel(logging.DEBUG)
client = ModbusClient(method='rtu', port='/dev/ttyS1', timeout=2000, baudrate=9600)
client.debug=True
print(client)
response = client.write_coil(1, True, unit=1)
我试着在Modbus上没有任何连接。在这个设置中,我关闭了Arduino,并期望写请求没有响应。但是,在调试日志中,我看到事务已完成。这是错误的,因为我不应该收到.write_coil()
的任何响应。如果某个地方发生了回送,我如何检测它?在
感谢你的回应。在
^{pr2}$
取决于写函数。许多Modbus程序允许您指定是要执行写入操作,还是要执行回写操作。PyModbus只需将数据写入线圈,而不想读回数据。这意味着它只是在485线路上发送信息,而不检查它是否真的被写入。在
当您执行
.read_coil()
操作时,是否会出现超时错误?在另外,timeout参数以秒为单位指定。您的值
2000
表示超时33
分钟。在相关问题 更多 >
编程相关推荐