Просмотр полной версии : Потеря связи Modbus (ПЛК160-ИП320)
Здравствуйте.
Имеется оборудование OWEN:
- ПЛК160-220.А-М
- Панель ИП320
- Кабель КС2
ПЛК и панель подключены по RS-232 (115200!).
В новый проект в среде разработки CodeSys на странице «PLC Configuration» добавляю “ModBus(Master)” (подэлемент «Last error» связываю с переменной last_modbus_error) и один элемент “32bit output module”(связываю с ним переменную err81_count). После этого в главной программе пишу:
(* фиксирование последней ошибки Modbus *)
IF (last_modbus_error>0) THEN err81_count:=err81_count+1; END_IF;
Панель сконфигурирована как “Modbus Slave”, скорость - 115200, формат - 8бит, стоп-бит – 1бит, контроль четности отсутствует. В проекте один экран с выводом переменной err81_count.
После загрузки проектов в ПЛК и ИП320 оставляю подключенными только панель и контроллер. Все собрано на столе. Помехи исключены. На панели указанная переменная увеличивается! То есть постоянно возникают ошибки «81» (если не ошибаюсь, таймаут соединения). Причем видно на глаз, что иногда чаще, иногда реже. Но в достаточно большом количестве.
Как решить проблему с возникновением ошибок связи?
Очень надеюсь на вашу помощь.
Я правильно понял, что Вас удивляет, как ошибка сообщающая об проблемах со связью обрабатываемая в плк может передаваться через отсутствующую связь на панель и отображаться на экране?
Нет, это меня не удивляет. Бо'льшую часть времени ПЛК все-таки имеет связь с панелью.
Удивляет относительно большое количество ошибок связи. Снижение скорости соединения уменьшает их количество, но не решает проблемы. И это создает бо`льшие задержки при дальнейшей обработке событий и реакции на них.
Лишних модулей в секции Modbus (Master) нет?
при максимально возможной скорости период опроса какой выставлен?
Лишних модулей в секции Modbus (Master) нет?
Никаких модулей, кроме ПЛК и Панели в системе нет.
при максимально возможной скорости период опроса какой выставлен?
Параметры "RS-232[SLOT]" (CodeSys):
communication speed - 11520 (скорее всего опечатка от 115200)
parity - no parity check
data bits - 8bits
stop length - one stop bit
interface type - RS232
frame oriented - RTU
framing time ms - 0 (также пробовал 5)
visibility - no
Параметры "Universal Modbus device[VAR]":
moduleip - 10:0:0:223
max timeout - 150 (также пробовал 1500 и 5000)
tcpport - 502
netmode - serial
moduleslaveaddress - 1
work mode - by pool time (пробовал both)
polling time ms - 100 (пробовал 10 и 1000)
visibility - no
amount repeat - 0 (пробовал 5)
инеу sequence - native
При всех указанных вариантах и некоторых их комбинациях в лучшем случае были небольшие изменения в количестве ошибок. Но они оставались всегда.
Не понимаю. Интересуют ошибки обмена или нормальные опросы ?
Зачем копаться в ошибках ?
Не понимаю. Интересуют ошибки обмена или нормальные опросы ?
Зачем копаться в ошибках ?
Интересует стабильная связь по Modbus!
Это нужно для решение такой задачи:
на экране панели есть цифровое поле и две кнопки (влево и вправо). По нажатию и удержанию кнопки влево нужно постепенно уменьшать значение числового поля (например, раз в пол-секунды), по нажатию вправо - постепенно увеличивать.
Сейчас эти числа или долго не обновляются или проскакивают (скорее всего не обновляется значение на панели). И вообще реакция на нажатие кнопок несколько "заторможенная" - это еще одна проблема.
Привожу фрагмент программы:
ch_min:=1;
ch_max:=100;
ch_TP(IN := NOT ch_TP.Q, PT:= T#500ms);
IF NOT ch_TP.Q AND (pan_in_down) THEN IF (ch_enter>0) THEN ch_enter:=ch_enter-1; END_IF; END_IF;
IF NOT ch_TP.Q AND (pan_in_up) THEN IF (ch_enter<ch_max) THEN ch_enter:=ch_enter+1; END_IF; END_IF;
pan_out_10:=ch_enter;
Если вы только пробуете, то проще панель сделать мастером.
ПЛК мастер - на любителя. Типа меня :)
Интересует стабильная связь по Modbus!
Это нужно для решение такой задачи:
на экране панели есть цифровое поле и две кнопки (влево и вправо). По нажатию и удержанию кнопки влево нужно постепенно уменьшать значение числового поля (например, раз в пол-секунды), по нажатию вправо - постепенно увеличивать.
Сейчас эти числа или долго не обновляются или проскакивают (скорее всего не обновляется значение на панели). И вообще реакция на нажатие кнопок несколько "заторможенная" - это еще одна проблема.
Привожу фрагмент программы:
ch_min:=1;
ch_max:=100;
ch_TP(IN := NOT ch_TP.Q, PT:= T#500ms);
IF NOT ch_TP.Q AND (pan_in_down) THEN IF (ch_enter>0) THEN ch_enter:=ch_enter-1; END_IF; END_IF;
IF NOT ch_TP.Q AND (pan_in_up) THEN IF (ch_enter<ch_max) THEN ch_enter:=ch_enter+1; END_IF; END_IF;
pan_out_10:=ch_enter;
а чего Вы хотите, если у Вас таймер взведен на полсекунды, конечно будет тормозить. Если хотите такой метод применять, то у Вас должно быть примерно следующее, мастер ПЛК опрашивает постоянно с минимальными периодами два бита, для больше и меньше, при получении TRUE выполнить необходимое действие и записать в соответствующий бит FALSE. Чтение и запись с периодом 50мс, всяко быстрее будет, недумаю что у Вас опереаторы нажимают кнопки быстрее этого времени
Ну или кнопки настроены на реверс.
Фиксируем изменения - только читаем.
Ну или кнопки настроены на реверс.
Фиксируем изменения - только читаем.
На нажатие обоих кнопок установлено "мгновенная уст.1"
а чего Вы хотите, если у Вас таймер взведен на полсекунды, конечно будет тормозить.
Сначала были такие подозрения, но потом присмотрелся - при отпускании кнопки и пропадания бита на панели (добавил на экран элементы "состояние бита" на нажатие кнопок) счетчик может прибавить до двух единиц!!!
А вообще какие обычно задержки на передачу информации между устройствами Modbus slave и Modbus master? У меня сложилось впечатление, что с параметрами соединения, при которых получается более-менее надежная связь, их видно невооруженным глазом.
Если хотите такой метод применять, то у Вас должно быть примерно следующее, мастер ПЛК опрашивает постоянно с минимальными периодами два бита, для больше и меньше, при получении TRUE выполнить необходимое действие и записать в соответствующий бит FALSE. Чтение и запись с периодом 50мс, всяко быстрее будет, недумаю что у Вас опереаторы нажимают кнопки быстрее этого времени
Здесь проявляется проблема надежности связи. Плюс сложно становится поймать нужное значение.
Пробовал не привязываться к таймеру (время здесь не критично), а просто по каждому циклу программы прибавлял по единице, затем целочисленно делил счетчик, например, на 500 и выводил число. Тоже числа двигаются очень неравномерно и прыгают гораздо больше, чем с использованием таймера.
ну я то описывал ситуацию, когда панель устанавливает единицу, а ПЛК устанавливает в ноль, я к сожалению не могу выложить исходник, еще в прошлом году слетела винда так и не нашел следов от проекта, но проблем точно не было, таймауты ставил 40-100мс в зависимости от объема данных и работал без конфигуратора
Здесь проявляется проблема надежности связи.
Связь - надежна. Наложились ваши нелучшие настройки на несколько кривоватую логику, на мой взгляд, штатного мастера плк.
Сделайте панель мастером. Или используйте syslibcom для мастера на плк. И будет счастье в данном случае.
таймауты ставил 40-100мс ...без конфигуратора
5..10 - за глаза
5..10 - за глазая так и не смог добиться таких времен, наверное глаза не в том месте растут :)
Да.Ошибся.
2..3 - достаточно. :)
Через порт самому.
Интересует стабильная связь по Modbus!..
ch_min:=1;
ch_max:=100;
ch_TP(IN := NOT ch_TP.Q, PT:= T#500ms);
IF NOT ch_TP.Q AND (pan_in_down) THEN IF (ch_enter>0) THEN ch_enter:=ch_enter-1; END_IF; END_IF;
IF NOT ch_TP.Q AND (pan_in_up) THEN IF (ch_enter<ch_max) THEN ch_enter:=ch_enter+1; END_IF; END_IF;
pan_out_10:=ch_enter;
И причем тут связь, когда сам алогритм того ...
И причем тут связь, когда сам алогритм того ...
Если бы связь была надежная, то число обновлялось бы два раза в секунду. А сейчас бывает, что на панели число может "стоять" по несколько секунд. Или я не прав?
Перешел на интерфейс RS-485. Результат тот же.
Пробую сделать нормальное заземление для modbus.
На ПЛК заземление modbus также подключается к клемме FG?
Нигде не нашел информации - для чего нужны клеммы NC?
Понимаете сударь, если бы был нормальный алгоритм, то даже при 50% ошибках, вы в секунду получали бы 10..30 нормальных ответов.
PS
И забудьте слово связь вообще. Нет такой сущности в принципе
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot