PDA

Просмотр полной версии : Обрывы связи по RS-485 при отключении одного устройства от сети



Ctakah133
21.08.2020, 10:11
Доброго дня.
Столкнулся с такой проблемой:
В проекте СПК110 используются 3 - 485 ком порта, протокол ModBus RTU, СПК везде Мастер сети.
На каждом порту сидят свои группы устройств.
При физическом отключении любого устройства с первого ком порта, всё происходит штатно - авария связи только по этому устройству.
А вот при отключении любого устройства с второго или третьего ком порта - помимо аварии по этому устройству начинаются случайные обрывы связи со всеми устройствами на всех портах.

Первый порт - ПР200-4шт.
Второй порт - ПР200-2шт.
Третий порт - контролеры unitronics.

Пробовал: снижал скорости до 9600, увеличивал тайм ауты, время между фреймами ничего не помогло..

Ссылка на архив проекта:
https://yadi.sk/d/iBU3aQd9UYtqEg

GoodLuck
21.08.2020, 13:01
Была у меня подобная программа, правда, с другими слейвами, но все работает без нареканий.

Попробуйте в программе по одному добавлять устройства на порты и читайте не все регистры, а только один, например. Отследите при добавлении какого устройства у вас возникает проблема.

Ctakah133
21.08.2020, 13:03
Спасибо. Попробую.

zan.cybernetics
27.01.2021, 14:38
Подобная проблема. Конфигурация устройств через стандартные средства Codesys. На первом порту 11 устройств, на втором 10. При отключении питания одного из устройств на шине, начинаются отваливания устройств на порту другой шины.

53230.

zan.cybernetics
27.01.2021, 15:49
Причем на обеих шинах все слейвы это ПР200. Читаю три регистра, записываю один

zan.cybernetics
27.01.2021, 16:14
Когда даже по 2 слейва на шинах - ситуация аналогична.

53235

Cs-Cs
27.01.2021, 16:50
А как физически сами интерфейсы разведены от СПК?
У меня был случай, когда я взял простую копмьютерную витуху на 4 пары, чтобы с двери щита прокинуть интерфейсы внутрь, и на куске в 30 см было видно (потом, осциллографом увидел) как 19200 с одной пары наводится на 9600 на другую.

zan.cybernetics
27.01.2021, 18:23
А как физически сами интерфейсы разведены от СПК?
У меня был случай, когда я взял простую копмьютерную витуху на 4 пары, чтобы с двери щита прокинуть интерфейсы внутрь, и на куске в 30 см было видно (потом, осциллографом увидел) как 19200 с одной пары наводится на 9600 на другую.

От СПК до клеммников экранированными кабелями, а от клеммников пошли три шлейфа. Все в экране, как положено. Тут суть в том, что если хотя бы одно устройство на шине отключаешь, то отсальные устройства на этой шине опрашиваются без выпадания в ошибки, а вот устройства на других шинах рандомно выпадают по таймауту.

Cs-Cs
27.01.2021, 18:32
Нет, я с таким не сталкивался, и это для меня ново даже

zan.cybernetics
27.01.2021, 18:59
Вы сделали сеть на RS485 звездой?

не, три отдельные шины. От СПК до клеммников три кабеля. Каждый кабель на свой порт RS485. А от клеммников пошли три кабеля в поле. В общем, расключение и топология как положено)

Сергей0308
27.01.2021, 19:19
У меня тоже подобное происходит, я так подозреваю это проблемы с ОРС сервером от Инсата, он опрашивает сеть в которой несколько ТРМ200 и несколько ПР200! Стоит выключить(обесточить) любое ПР200 и данные с остальных ПР200 тоже перестают поступать, при этом ТРМ200 прекрасно опрашиваются и данные с них поступают, а с ПР200 нет, просто мистика какая-то! Отключаю в ОРС опрос обесточенного ПР200 и о чудо, данные с остальных ПР200 начинают поступать!
Вы попробуйте отключить опрос обесточенного устройства, может это решит проблему как у меня!

zan.cybernetics
28.01.2021, 12:07
Упростил задачу: на первом порту RS485 одна ПР200 и на втором порту RS485 одна ПР200. Расстояние до устройств 4 метра. Скорость обмена 115200. Кабель экранированный, экран посажен на корпуса щитов. Когда ПР200 на первой шине и ПР200 на второй шине включены, то никаких проблем с обменом не возникает.

Если отключить питание на ПР200 шины RS485-2, то ПР200 на первой шине начинает периодически вылетать по RESPONSE_TIMEOUT.

Если отключить питание на ПР200 шины RS485-1, то ПР200 на второй шине начинает вылетать по RESPONSE_TIMEOUT.

53248
53249


Скрины прилагаю. Проект чистый, т.е. только добавлены конфигурации устройств на портах.

zan.cybernetics
28.01.2021, 14:16
У меня тоже подобное происходит, я так подозреваю это проблемы с ОРС сервером от Инсата, он опрашивает сеть в которой несколько ТРМ200 и несколько ПР200! Стоит выключить(обесточить) любое ПР200 и данные с остальных ПР200 тоже перестают поступать, при этом ТРМ200 прекрасно опрашиваются и данные с них поступают, а с ПР200 нет, просто мистика какая-то! Отключаю в ОРС опрос обесточенного ПР200 и о чудо, данные с остальных ПР200 начинают поступать!
Вы попробуйте отключить опрос обесточенного устройства, может это решит проблему как у меня!

Исключение из опроса помогает) Я так подозреваю, что происходит какой-то трабл в задаче "Автоперезапуск соединения".

Сергей0308
28.01.2021, 14:23
Исключение из опроса помогает) Я так подозреваю, что происходит какой-то трабл в задаче "Автоперезапуск соединения".

Мне кажется не хватает времени периода опроса. От устройства нет ответа, мастер несколько раз повторяет опрос не отвечающего устройства и заканчивается период опроса, мастер не опросив все устройства в сети начинает новый опрос, всё повторяется! Попробуйте увеличить период опроса или уменьшить количество попыток опроса до одной!

СергейНовосиб
29.01.2021, 08:05
У меня такая же ситуация. Только у меня в много котловой системе могут быть обесточены любой котел из имеющихся. На каждом котле стоит ПР200.
Я в программе на СПК сделал отключение нужного котла с отключением из опроса ПР200. Сначала отключение в программе, потом питание шкафа котла.
Если этого не делать, то шина очень глючить, интервал опроса других ПР200 доходит до нескольких минут!!

ASo
29.01.2021, 09:22
Как вы этого добились, я имею ввиду минуты? Или у Вас не групповой опрос?

Cs-Cs
29.01.2021, 14:44
Как вы этого добились, я имею ввиду минуты? Или у Вас не групповой опрос?
Так это же особенность CodeSys v3, про которую я в Курилке ещё писал (но пока отложил дальнейшее изучение).
Там если у устройства не отвечает один канал опроса, CodeSys v3 ждёт таймаут, а потом стучится в следующий канал этого же устройства.
Поэтому если оно не отвечает, то шина встанет на ЧислоКаналов х ТаймАутУстройства времени.

СергейНовосиб
01.02.2021, 04:14
Это так и есть. Для исключения данной ситуации я и реализовал отключения нужных приборов из опроса в CodeSys v3.

Rinat
19.02.2021, 15:56
Тоже мучался с таким поведением. Но на соседние порты это не отражалось. Подскажите неопытному, как в программе автоматически отключать опрос модуля, стандартного или по шаблону который не отвечает?

Евгений Кислов
19.02.2021, 17:36
Тоже мучался с таким поведением. Но на соседние порты это не отражалось. Подскажите неопытному, как в программе автоматически отключать опрос модуля, стандартного или по шаблону который не отвечает?

См. п. 3.4 и 4.6:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v2.0.pdf

Rinat
19.02.2021, 18:52
См. п. 3.4 и 4.6:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v2.0.pdf
Да... А я Вашу поддержку на телефоне и в почте мучаю. За несколько минут получил ответ, который пару лет не смог решить и забил... Спасибо. С шаблонами вроде понятно на первый взгляд, как реализовать. А какие переменные (ошибка обмена и отключить опрос) на стандартном слейв устройстве выбрать только догадываюсь. Сможете их указать?

Евгений Кислов
19.02.2021, 19:00
Да... А я Вашу поддержку на телефоне и в почте мучаю. За несколько минут получил ответ, который пару лет не смог решить и забил... Спасибо. С шаблонами вроде понятно на первый взгляд, как реализовать. А какие переменные (ошибка обмена и отключить опрос) на стандартном слейв устройстве выбрать только догадываюсь. Сможете их указать?

xError
Enable (Рисунок 4.6.4)

Rinat
19.02.2021, 19:15
xError
Enable (Рисунок 4.6.4)
xError - понятно,
Enable - это для "Компонент Modbus TCP Slave Device", а в проекте с RS485 нет такой переменной в выпадающем списке
53564
Может xTrigger?

Евгений Кислов
19.02.2021, 19:18
xError - понятно,
Enable - это для "Компонент Modbus TCP Slave Device", а в проекте с RS485 нет такой переменной в выпадающем списке
53564
Может xTrigger?

См. стр. 58 (Рисунок 4.6.3) и далее.

Rinat
19.02.2021, 19:33
См. стр. 58 (Рисунок 4.6.3) и далее.
Объявить переменную просит
53565

Евгений Кислов
19.02.2021, 19:41
Проект ваш выложите, пожалуйста.

Rinat
19.02.2021, 19:53
https://disk.yandex.ru/d/80mfC-1kYzcFHA

Евгений Кислов
19.02.2021, 20:03
https://disk.yandex.ru/d/80mfC-1kYzcFHA

Прочитайте, пожалуйста, внимательно текст на стр. 58 и посмотрите на рис. 4.6.3 - вы не поставили нужную галочку.

53566 53567

Rinat
19.02.2021, 20:22
Спасибо, помогли.

RomAl
01.04.2021, 15:38
У меня та же проблема: На портах Сом1,2,3 по 2-3 устройства на RS485-1,2,3 (по одному ПР200 и ТВ-006 на каждом порту) и когда на одном из портов устройства отключены, начинают происходить ошибки по другим
портам (ошибка раз в 10-20сек при опросе 1 сек) и что интересно соседи по порту не сбоят. Что только не делал - ничего не помогает. Ждал что тут расскажут как это исправить или признания что это ошибка и она скоро будет исправлена. Но не дождался. Залепил эту проблему пока тем что в приложении установил из меню отключение опроса на время не работы с помощь описанного тут Enable. Но это не
совсем правильный выход: на производстве может отвалиться какое- либо устройство неожиданно по разным причинам (например просто обесточат электрики) и при этом должен нарушиться технологический процесс совсем другого оборудования на другом порту?

jujin_un
29.04.2021, 16:47
А как правильно перезапустить RS485 (Modbus Slave) в СПК107 на языке ST ?
Цикл программы t#20ms
Если контроллер STM32F745 сразу по включению питания отправляет пакет на СПК107
то у СПК зависает порт, а если подождать 5 сек, то после загрузки СПК (75 сек)
он отвечает.
Пробовал в CODESYS 3.5.14.30 и в CODESYS 3.5.16.30
в CODESYS 3.5.11 такого глюка не было, но обратно перепрошить СПК не получится ?
Нужно написать, что-то типа:

IF (Modbus_Serial_Device.xInternalError) THEN
Modbus_Serial_Device.xEnable := FALSE;
ELSE Modbus_Serial_Device.xEnable := TRUE;
END_IF;

или нужна задержка на xEnable FALSE/TRUE ?

Евгений Кислов
29.04.2021, 16:50
А как правильно перезапустить RS485 (Modbus Slave) в СПК107 на языке ST ?
Цикл программы t#20ms
Если контроллер STM32F745 сразу по включению питания отправляет пакет на СПК107
то у СПК зависает порт, а если подождать 5 сек, то после загрузки СПК (75 сек)
он отвечает.
Пробовал в CODESYS 3.5.14.30 и в CODESYS 3.5.16.30
в CODESYS 3.5.11 такого глюка не было, но обратно перепрошить СПК не получится ?
Нужно написать, что-то типа:

IF (Modbus_Serial_Device.xInternalError) THEN
Modbus_Serial_Device.xEnable := FALSE;
ELSE Modbus_Serial_Device.xEnable := TRUE;
END_IF;

или нужна задержка на xEnable FALSE/TRUE ?

Манипуляции со слэйвом не решат вашу проблему.
Какой именно пакет посылает STM32?
Выложите дамп.

jujin_un
30.04.2021, 15:13
Манипуляции со слэйвом не решат вашу проблему.
Какой именно пакет посылает STM32?
Выложите дамп.

RS485 зависает при первом включении за день, потом
если отключить питание и снова включить, зависание проявляется не всегда.

на СПК отправляется команда 0x10 с разными пакетами до 56 регистров максимум.
Упростил пакет до 1 регистра и потестирую.

Tx (STM32): 0A 10 00 16 00 01 02 00 0F 97 92
Rx (ответ СПК): 0A 10 00 16 00 01 E1 76

Евгений Кислов
30.04.2021, 18:49
RS485 зависает при первом включении за день, потом
если отключить питание и снова включить, зависание проявляется не всегда.

на СПК отправляется команда 0x10 с разными пакетами до 56 регистров максимум.
Упростил пакет до 1 регистра и потестирую.

Tx (STM32): 0A 10 00 16 00 01 02 00 0F 97 92
Rx (ответ СПК): 0A 10 00 16 00 01 E1 76

Желательно выложить дамп конкретных пакетов, отправка которых во время перезагрузки приводит к зависанию порта.

Радислав
22.06.2021, 10:46
Всем здравствовать! наткнулся на вот такой ОВЕНовский щутка (если кто сможет, помогите, техподдержка отморозилась):
итак, CS3.5/16. в пустой проект стандартным способом добавляем сом порт, в него стандартное устр-во мастер сом порт, далее слэйв устр-во (модуль аналог ввода, серия мх110..).
прописываем параметры связи с назначенным адресом, добавляем один канал без переменных (проект пустой). запускаем среду и видим, что всё хорошо, везде зеленые "колесики".
далее, таким же способом добавляем модуль дискр ввода мх110, назначаем другой адрес, добавляем в него один канал и запускаем среду....видим, что на дискр модуле периодически красный треугольник - перебои со связью.
далее, в среде отключаем 1й модуль( аналоговый), запускаем и всё работает....
поотдельности модули работают, а в паре конфликт...
продолжаем....
удаляем в среде оба слэйв устр-ва и вместо них добавляем шаблоны модулей ОВЕН ...всё работает нормально
тех поддержка ОВЕН сдулась
что не так я делал со стандартными устройствами?

Евгений Кислов
22.06.2021, 10:47
Всем здравствовать! наткнулся на вот такой ОВЕНовский щутка (если кто сможет, помогите, техподдержка отморозилась):
итак, CS3.5/16. в пустой проект стандартным способом добавляем сом порт, в него стандартное устр-во мастер сом порт, далее слэйв устр-во (модуль аналог ввода, серия мх110..).
прописываем параметры связи с назначенным адресом, добавляем один канал без переменных (проект пустой). запускаем среду и видим, что всё хорошо, везде зеленые "колесики".
далее, таким же способом добавляем модуль дискр ввода мх110, назначаем другой адрес, добавляем в него один канал и запускаем среду....видим, что на дискр модуле периодически красный треугольник - перебои со связью.
далее, в среде отключаем 1й модуль( аналоговый), запускаем и всё работает....
поотдельности модули работают, а в паре конфликт...
продолжаем....
удаляем в среде оба слэйв устр-ва и вместо них добавляем шаблоны модулей ОВЕН ...всё работает нормально
тех поддержка ОВЕН сдулась
что не так я делал со стандартными устройствами?

Добрый день.
Выложите ваш проект со стандартными устройствами.

Радислав
22.06.2021, 13:07
Добрый день.
Выложите ваш проект со стандартными устройствами.

Спасибо за отклик, файл во вложении

Евгений Кислов
22.06.2021, 13:30
Спасибо за отклик, файл во вложении

1. У вас в проекте таргет 3.5.14.32, а все остальные компоненты (в т.ч. компоненты Modbus) - версии 3.5.16.x
Так делать не стоит - приведите все к 3.5.14.x или ниже.

2. У задачи поменяйте режим Свободное выполнение на Циклический с периодом 10 мс.

Радислав
22.06.2021, 13:58
забыл написать существенный нюанс:
при подключении двух одинаковых дискретный модулей МХ110 и в среду добавлены как стандартные модбас-слэйв, всё работает нормально, при этом все прочие параметры остаются без изменений, а вот дискр и аналог конфликтуют.
благодарствую, но вопрос пока что остается загадкой (для меня)

меняли режимы цикличности и времена циклов и в задаче и в каналах - ничего не помогает
могу предоставить ссылку на гугл диск на отснятое видео

Евгений Кислов
22.06.2021, 14:03
забыл написать существенный нюанс:
при подключении двух одинаковых дискретный модулей МХ110 и в среду добавлены как стандартные модбас-слэйв, всё работает нормально, при этом все прочие параметры остаются без изменений, а вот дискр и аналог конфликтуют.
благодарствую, но вопрос пока что остается загадкой (для меня)

меняли режимы цикличности и времена циклов и в задаче и в каналах - ничего не помогает
могу предоставить ссылку на гугл диск на отснятое видео

Лучше предоставьте завтра удаленный доступ по TeamViewer - посмотрим по месту, что происходит.

Радислав
22.06.2021, 15:46
а кому предоставить-то? как с Вами связаться?

Евгений Кислов
22.06.2021, 16:24
а кому предоставить-то? как с Вами связаться?

Скайп и почта в подписи.

Радислав
23.06.2021, 08:52
Здравствуйте! отправил сообщение Вам на почту