Диагностика MODBUS

ПЛК / Децентрализованная периферия
Ответить
САМ
Дилетант
Сообщения: 24
Зарегистрирован: 20 фев 2017, 19:05

Диагностика MODBUS

Сообщение САМ »

Добрый день.

Подскажите кто в курсе как в S7 1200 реализуется диагностика MODBUS-соединения!
Сконфигурировал в проекте функцию MB_MASTER. Диагностика MODBUS с принудительным стартом от синхроимпульсов 50 мс. Все отлично работает, но если отрубить слейв (выключить ему питание), MB_MASTER просто пишет нули в буфер, а на его выходе ERROR не появляется единица, STATUS тоже ноль, как будто ничего не случилось. Хотя запросы то идут, а ответа на них нет! Как получить реакцию программы на отпадание слейва??

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Диагностика MODBUS

Сообщение Михайло »

Есть такой STATUS:
80C8 Slave timeout. Check the baud rate, parity and the connectors on the slave.
В Modbus_Comm_Load есть такая настройка, по умолчанию 0:
CABLE-BREAK USINT 0 Activate cable break detection: 0 - not activated, 1 - activated
Попробуй ее. Сам я CABLE-BREAK не нашел, есть BRK_DET.

Еще есть настройка BLOCKED_PROC_TIMEOUT в Modbus_Master, по умолчанию 3 секунды.

САМ
Дилетант
Сообщения: 24
Зарегистрирован: 20 фев 2017, 19:05

Re: Диагностика MODBUS

Сообщение САМ »

Михайло, где там приведенные Вами настройки? Нет там такого.
Вот скан сразу после выключения слейва - никакой реакции ни на "эррорах", ни в "статусах" обеих функций! А самое противное, что даже выход не обнуляется, последняя принятая посылка тупо замораживается.

Изображение

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Диагностика MODBUS

Сообщение Михайло »

Откройте датаблок Modbus_Comm_Load_DB в System blocks.

Возможно Вам следует изменить подход в управлении входом REQ, подайте на него не импульсный сигнал 50 мс, а инверсию выхода BUSY этого же блока. Так будет правильнее! Запросы будут производиться только в том случае и сразу, как только блок перестает быть занятым. В этом случае, мне кажется, блок отследит таймаут 3 секунды.
Импульсный сигнал мешает сделать это, постоянно возобновляя запросы.

САМ
Дилетант
Сообщения: 24
Зарегистрирован: 20 фев 2017, 19:05

Re: Диагностика MODBUS

Сообщение САМ »

Михайло писал(а):... подайте на него не импульсный сигнал 50 мс, а инверсию выхода BUSY этого же блока. Так будет правильнее! Запросы будут производиться только в том случае и сразу, как только блок перестает быть занятым. В этом случае, мне кажется, блок отследит таймаут 3 секунды.
Импульсный сигнал мешает сделать это, постоянно возобновляя запросы.
Пробовал сделать как Вы советовали. Ничего не меняется. Прям интересно стало! В мануале прямо не говорится о функции диагностики, но в описании слов STATUS для блока MB_MASTER четко указан случай:

80C9 Инструкция Modbus_Master привела к таймауту по одной из следующих причин:
· Инструкция ожидает ответа от модуля, который используется для коммуникаций.

а у меня нули...

Пока что склонен думать что что-то у меня с прошивкой, потому как были прецеденты - случается что в онлайн отказывается переходить из-за "несоответствия проекта и периферии", а пару раз вообще зависал ПОРТАЛ так что только CTRL+ALT+DEL его хотя бы закрыть приходилось...

САМ
Дилетант
Сообщения: 24
Зарегистрирован: 20 фев 2017, 19:05

Re: Диагностика MODBUS

Сообщение САМ »

Пока что выкрутился не совсем изящным, но вполне работоспособным методом:

В конце процедуры вставил счетчик синхроимпульсов 50 мс, который при этом сбрасывается выходом DONE MB_Master.
При этом, пока все работает нормально, счетчик постоянно сбрасывается.
Если отрубить слейв, сигнал DONE тоже перестанет появляться. Счетчик начинает расти. За счетчиком я установил компоратор, где сравниваю его с порогом 50. И тогда примерно через 3 сек после замолкания слейва у меня на выходе компоратора появляется долгожданная единица сигнала ошибки!
После возобновления ответов от слейва счетчик опять начинает обнуляться и сигнал ошибки пропадает. В принципе - то что надо!

Ответить