PDA

Просмотр полной версии : Как в CODESYS обнулить переменные при обрыве RS-485?



ma4etos
25.10.2017, 11:57
Здравствуйте! использую аналоговый модуль МВ110-8а подключаюсь через конфигуратор к ПК - вижу все подключенные входы(датчики температуры). Отключаю кабель rs-485 вижу, что обрыв связи - все ок(данных с датчиков нет). Подключаю модуль к плк110-30 в кодесис через modbus (master)>rs-485-1>universal modbas device>real input module все ок(данные с датчика). Вопрос: в режиме работы программы при отлючении кабеля rs-485 у меня не обнуляются значения(данные с датчика), а сохраняются значения до обрыва. Понимаю, что элементарные настройки, но не могу найти...

lara197a
25.10.2017, 12:00
отслеживайте ошибку связи в конфигураторе.
по ней определяйте качество данных.
А как вы хотели получать данные без фиксации значения?
это правильно, что полученное значение фиксируется, до обновления.
Нет обновления- нет изменения.

ma4etos
25.10.2017, 12:07
отслеживайте ошибку связи в конфигураторе.
по ней определяйте качество данных.
А как вы хотели получать данные без фиксации значения?
это правильно, что полученное значение фиксируется, до обновления.
Нет обновления- нет изменения.

т.е. получается я должен для всего проекта - предусмотреть обрыв rs-485??? работать со значениями если нет ошибки?

ma4etos
25.10.2017, 16:41
Зачем ерничать? Я не сталкивался конкретно с такой ситуацией. Думал обрыв rs-485 - обрыв сигнала в плк. Лучше подскажите как решить ситуацию, у меня около 30 сигналов получилось в итоге... все завязано с нагревом емкостей, на днях отлетел провод и нагрев продолжался...

Сергей Лысов
25.10.2017, 17:25
Лучше подскажите как решить ситуацию, у меня около 30 сигналов получилось в итоге... все завязано с нагревом емкостей, на днях отлетел провод и нагрев продолжался...

В модуле Modbus Master есть переменная Last Error. Если там появилось 81 - оборвался кабель. В теле программы добавьте проверку.

lara197a
25.10.2017, 18:20
Вывод делается на основании правильного ответа слейва или его отсутствия.

dim1987
25.10.2017, 18:32
А можно простенький пример?
вдруг отвалился один модуль, а не оборвался кабель?

Сергей Лысов
25.10.2017, 18:55
вдруг отвалился один модуль, а не оборвался кабель?
Для вашей ситуации обрыв кабеля или повреждение модуля одинаковый результат - авария.

dim1987
25.10.2017, 19:11
любой модуль отвалится, а ошибка одна? и хоть как ищи причину? правильно понял?

ma4etos
25.10.2017, 19:39
любой модуль отвалится, а ошибка одна? и хоть как ищи причину? правильно понял?

я пока что понял, что ошибка одна, но, скажем так, у меня 12 модулей, мне не подходит это)))

Сергей Лысов
25.10.2017, 20:47
я пока что понял, что ошибка одна, но, скажем так, у меня 12 модулей, мне не подходит это)))

Откройте руководство по программированию контроллера. Оно находится на странице прибора внизу. Почитайте про Last Adress. Потом про Last Error. И подумайте как это может помочь вам для решения вашей задачи.

ma4etos
18.11.2017, 11:52
Возникает ошибка 81 на 4 модуле(адресе). Помогает обычный перезалив программы. Подскажите как правильно организовать рестарт на языке LD.

Алексей Терентьев
22.11.2017, 05:14
Возникает ошибка 81 на 4 модуле(адресе). Помогает обычный перезалив программы. Подскажите как правильно организовать рестарт на языке LD.

Вообще перезапуск программы контроллера это не лучший способ восстановить связь с модулями. У вас ведь процесс идет. На моих объектах этот вариант вообще недопустим. Нужно разобраться с причинами пропадания связи. Проверить контакты на 485 паре, попробовать уменьшить скорость обмена особенно, если модули не в одном шкафу.

А по вашему вопросу: сделайте бесконечный цикл с входом в него по пропаданию связи с модулем. На ST:

IF нет связи THEN
WHILE 1=1 DO ; END_WHILE
END_IF

Тогда ПЛК перезагрузится по срабатыванию сторожевого таймера. На LD не пишу, сходу подсказать не могу.

Gans
24.11.2017, 10:42
Здравствуйте.
Есть вариант по проще.

(*==============================Перезапуск ПЛКххх :-) ========================== *)
WHILE blnReset_PLCxxx DO;END_WHILE;

Где "blnReset_PLCxxx" это и есть переменная перезапуска контроллера. Переводим в True и ПЛКххх перезагружается.