即使没有连接,也收到PyModbus RTU响应

2024-10-01 02:28:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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}$

Tags: importclientlogtrueformatloggingarduinopymodbus
1条回答
网友
1楼 · 发布于 2024-10-01 02:28:41

取决于写函数。许多Modbus程序允许您指定是要执行写入操作,还是要执行回写操作。PyModbus只需将数据写入线圈,而不想读回数据。这意味着它只是在485线路上发送信息,而不检查它是否真的被写入。在

当您执行.read_coil()操作时,是否会出现超时错误?在

另外,timeout参数以秒为单位指定。您的值2000表示超时33分钟。在

相关问题 更多 >