Страница 1 из 1
Защита от обрыва связи modbas
Добавлено: 13 июл 2023, 10:21
oskar
Всем привет, столкнулся с тем что в модбас сессии не предусмотрена защита от обрыва связи ( нужно что бы при потери связи между мастером и слейвом слейв прекращал работу ). Это же очень важная функция, думаю многим требуется, кто как выходил из положения? Поделитесь опытом пожалуйста)
Защита от обрыва связи modbas
Добавлено: 13 июл 2023, 16:24
Evgesha
На мастере ставил blink с посылкой переменной в слэйв, на слэйве ставил таймер, если с мастера не пришла переменная, то таймер не сбрасывался и блокировал работу выходов. Если пришла переменная с мастера, то таймер обнулялся и снова отсчитывал время ожидания переменной от мастера.
Защита от обрыва связи modbas
Добавлено: 13 июл 2023, 17:01
Rovki
oskar писал(а): 13 июл 2023, 10:21
Всем привет, столкнулся с тем что в модбас сессии не предусмотрена защита от обрыва связи ( нужно что бы при потери связи между мастером и слейвом слейв прекращал работу ). Это же очень важная функция, думаю многим требуется, кто как выходил из положения? Поделитесь опытом пожалуйста)
что значит - слейв прекращает работу?
Защита от обрыва связи modbas
Добавлено: 13 июл 2023, 23:56
oskar
Я тоже делал что то подобное:
Мастер поочередно посылает слейву 1 и 0 , на слейве стоит детектор изменения числа и таймер который через заданное время если число не будет меняться запишет в переменную 1 и реле питания разомкнется. Но это какой то костыль, который мне не очень нравится, может кто то делал более изящный вариант как на промышленных устройствах. А вообще конечно жаль что эта полезная функция не реализована в родных блоках
Защита от обрыва связи modbas
Добавлено: 14 июл 2023, 09:07
ecoins
oskar писал(а): 13 июл 2023, 23:56
Мастер поочередно посылает слейву 1 и 0 , на слейве стоит детектор изменения числа и таймер который через заданное время если число не будет меняться запишет в переменную 1 и реле питания разомкнется. Но это какой то костыль, который мне не очень нравится, может кто то делал более изящный вариант как на промышленных устройствах. А вообще конечно жаль что эта полезная функция не реализована в родных блоках
Хорошее и естественное решение. Мы делаем также. И не трудоемкое. Мы выделяем для этого 16-разрядный регистр - 15 битов для битовой информации, 16-й бит для информационного меандра, который обычно связываем с мерцанием светодиода на Slave.
Относительно реализации в блоках - наверное это все же лишнее.
Просто аппаратный обрыв связи вроде реализован, а реализация watch-dog для Slave может быть по разному, в том числе и более сложным чем отслеживанием информационного меандра/
----
С уважением, Энвер.
Защита от обрыва связи modbas
Добавлено: 14 июл 2023, 10:07
Rovki
oskar писал(а): 13 июл 2023, 23:56
Я тоже делал что то подобное:
Мастер поочередно посылает слейву 1 и 0 , на слейве стоит детектор изменения числа и таймер который через заданное время если число не будет меняться запишет в переменную 1 и реле питания разомкнется. Но это какой то костыль, который мне не очень нравится, может кто то делал более изящный вариант как на промышленных устройствах. А вообще конечно жаль что эта полезная функция не реализована в родных блоках
на промышленных устройствах обрыв связи на слейве не отслеживается. Ибо обрыв провода не такое уж частое событие. Может выйти из строя и входные каскады конвертера и уарт.... Всё это лекго находится и устраняется... Лучше использовать функциональную диагностику и менять алгоритм работы и извещать пользователя .
Защита от обрыва связи modbas
Добавлено: 14 июл 2023, 16:35
oskar
Да по какой причине произошел обрыв связи это не важно, может действительно что угодно быть ( зависание мастера, случайно закрыл управляющую программу, обрыв провода и.т.д)
Ну если взять к примеру частотный преобразователь Веспер то там прекрасно работает такая защита ( это всего лишь один пример промышленного устройства с такой защитой). Вот мне интересно как она реализована там...
Защита от обрыва связи modbas
Добавлено: 15 июл 2023, 07:25
Rovki
[ref]oskar[/ref], Все зависит от задачи ,которую выполняет слейв . Если это , например регулятор температуры и задание (уставка) меняется мастером, то при обрыве регулятор должен продолжать работать- поддерживать заданную ранее температуру . А если это управление светом , то должна быть возможность ручного управления или автоматического - выключать через определенное время или по часам реального времени (вот это и есть фрагмент функциональной диагностики) . А так ,вам уже сказали- что бы сделать слейв "умным" нужно из мастера передавать постоянно меняющийся бит или число.

Не меняется бит (число) за определенное время -значит авария связи. Если у вас мастер постоянно опрашивает слейв , подайте еще Rх(slave) на другой пин и анализируйте есть ли импульсы через TOF...
Защита от обрыва связи modbas
Добавлено: 15 июл 2023, 09:55
oskar
У меня мастер даёт команды старт и стоп слеву ( движение электропривода) и если вдруг после старта пропадет связь между ними и не возможно будет вовремя подать команду стоп то это приведет к печальным последствиям ( есть конечно концевики , но мало ли).
Да у меня постоянно идёт опрос регистра и Ваше решение мне очень понравилось! Круто!
Вот если бы такое решение можно было реализовать на программном уровне было бы вообще замечательно.
Например сделать у опрашиваего регистра выход который выдает 1 при его опросе, если опроса нет то на выходе 0.