Вход

Просмотр полной версии : Как правильно отслеживать подключение устройства ОВЕН МВ110-224.8А



Luna
22.06.2023, 11:49
Программа считывает данные с устройства ОВЕН МВ110-224.8А
Использую модуль python minimalmodbus, класс Instrument

По таймеру регулярно хочу проверять подключено ли устройство, если что-то произошло и связь пропала, программа сообщает об этом.
Вопрос, как правильно это делать.
У класса Instrument есть объект Serial (из библиотеки pyserial). При попытки использовать функцию
if myserial.serial.isOpen() is True не удается отследить ситуацию, так как если вытащить шнур из USB, то все равно возвращается True.

Поэтом сейчас сделала так:


def isWork(self):

if hasattr(self, "myserial"):
try:
self.myserial.read_register(1)
return True
except:
return False
else:
return False


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

1exan
23.06.2023, 04:46
Программа считывает данные с устройства ОВЕН МВ110-224.8А
Использую модуль python minimalmodbus, класс Instrument

По таймеру регулярно хочу проверять подключено ли устройство, если что-то произошло и связь пропала, программа сообщает об этом.
Вопрос, как правильно это делать.
У класса Instrument есть объект Serial (из библиотеки pyserial). При попытки использовать функцию
if myserial.serial.isOpen() is True не удается отследить ситуацию, так как если вытащить шнур из USB, то все равно возвращается True.

Поэтом сейчас сделала так:


def isWork(self):

if hasattr(self, "myserial"):
try:
self.myserial.read_register(1)
return True
except:
return False
else:
return False


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

Ошибки при обмене по модбас дело обычное, тем более с таким модулем как 8А. Сделайте счётчик неудачных попыток и сигнализируйте о пропадании связи при увеличении счётчика например до 10

Rask
23.06.2023, 08:21
Ошибки при обмене по модбас дело обычное, тем более с таким модулем как 8А. Сделайте счётчик неудачных попыток и сигнализируйте о пропадании связи при увеличении счётчика например до 10

За определенное время. Иначе смысла нет. Счетчик досчитает до 10 за весь день и все авария.

1exan
23.06.2023, 08:34
За определенное время. Иначе смысла нет. Счетчик досчитает до 10 за весь день и все авария.

Естественно подразумевается обнуление счётчика при удачной выполненной попытке

Luna
23.06.2023, 12:34
Спасибо, отличная идея! С деталями все понятно!