python中的modbus通信协议

时间:2015-08-31 12:07:40

标签: python-2.7 modbus

我正在尝试构建一个使用raspberry pi和modbus rtu读取实时数据的记录器。所以我能够读取实时值,即每秒数据。但我只能在有限的时间内阅读它,比如半小时左右。但我希望全年都能读取传入的数据。发生了什么事情是在它读取一段时间后出现通信错误或modbus rtu错误,例如值错误r I / O错误。代码不会进一步执行,因此停止读取数据。在这种情况下可能涉及的错误是什么?什么是可能发生的编码错误,这些错误不允许我24小时读取数据?请帮忙!

1 个答案:

答案 0 :(得分:2)

您应该将读取数据的部分代码包装到“try-except”块中。然后您的程序可以打印错误消息而不是崩溃。

我在MinimalModbus Python库的文档中写过这篇文章:https://minimalmodbus.readthedocs.org/en/master/usage.html#handling-communication-errors

例如,而不是使用:

print(instrument.read_register(4143))

使用:

try:
    print(instrument.read_register(4143))
except IOError:
    print("Failed to read from instrument")
except ValueError:
    print("Instrument response is invalid")

您可以在Python教程中阅读有关例外的更多信息:Handling Exceptions