2015-08-31 2 views
1

Я пытаюсь создать регистратор, который считывает данные в реальном времени с использованием малины pi и modbus rtu. поэтому я могу считывать значения реального времени, то есть каждый второй данные. Но я могу прочитать это только на ограниченное время, скажем, полчаса или около того. Но я хочу читать входящие данные весь день, весь год. что происходит, после того, как оно читается некоторое время, и возникает ошибка связи или ошибка modbus rtu, такая как ошибка ошибки ввода-вывода r. код больше не выполняется и, следовательно, перестает считывать данные. какие ошибки могут быть задействованы в таких случаях? каковы все ошибки кодирования, которые могут возникнуть, что не позволяет мне читать данные в течение 24 часов? пожалуйста помоги!Протокол связи modbus в python

ответ

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.

+0

Я могу исключить ошибки ввода-вывода с вышеуказанной структурой, но не ошибки значения .. то есть ошибка контрольной суммы .. он продолжает выскакивать, и все потоки не работают из-за него .. как я могу устранить ошибку значения? –

+0

Я обновил ответ и рассмотрел эти ошибки. Пожалуйста, примите ответ, если он вам поможет. – jonasberg

+0

спасибо !! это сработало :) –

Смежные вопросы