PDA

Просмотр полной версии : Дублирование ПЛК (PLC Redundancy)



murdemon
19.02.2015, 13:00
Есть у кого идеи? Два ПЛК 1 - мастер 2- слейв оба завязаны на одну шину 485 с модулями IO. Мастер все время передает (tcp/ip) образ и состояние программы на слейв, как только мастер падает .. допуcтим размыкает сигнал на входе слевай.. слейв начинает работу? Такое возможно.... Есть какие методы в Codesys3 как сериализовать образ процесса?

Scream
19.02.2015, 13:12
Я один тут почти ничего не понял?
тут:
tcp\ip
rs485
codesys3
"слейв начинает работу?"

Прям чертоги разума какието....

Может вам надо запилить одну и туже программу во все плк, вот вам и будет "сериализовать образ процесса".

melky
19.02.2015, 13:28
Две одинаковых проги в каждом и по падению просто управление от второго.

Что с датчиками делать будете ?
Что если упадет просто связь ? - надо на физический вход ПЛК 2 сигнал засылать
Что если отвалится модуль ввода вывода ?
И таких что там....

Scream нормальная система резервирования, просто у некоторых производителей она реализована в спец контроллерах, тот же Сименс с буквочкой H если не ошибаюсь.

Алексей Александрович
19.02.2015, 16:23
Добавлю бензина в огонь.
А управляющие сигналы? И как два мастера в сети?
На сколько знаю подобные системы имеют третьего, арбитражного. Но это такая замороченная система.... В копеечку выльется.

murdemon
19.02.2015, 16:30
Да есть такие системы.. у сименс да и Codesys тоже.. только эта приблуда должна быть поддержана в рантайме.. у нас на овен такого точно нет..
1) датчики ... что с ними они как подключены к модулям которые висят на rs485 так и подключены а кто их спрашиваем Мастер или Раб не важно..
2) да надо помимо связи по tcp/ip еще сигнал железный с выхода мастера на слев и на оборот...
3) если модуль отвалится то все аларм и все такое программа в ошибку не важно на мастере или слеве....

тут самая фишка что для процесса отказ одного плк не должен быть заметен... по этому при отказе мастера на слеве (программы у них одинаковые, а данные внутренний необходимо синхронизировать, данные с датчиков сами подхватятся) программа должна работать с теми же данными что были до этого на мастере...

Вот и вопрос можно ли как то CodesysV3 вытащить данные MainProcess из памяти ПЛК что то на подобии CmpApp.AppRestoreRetainsFromFile функции или просто скопировать инстанс(отображение приложения в памяти ПЛК) CmpApp.APPLICATION ?

Алексей Александрович
19.02.2015, 17:03
Вы что разрабатываете? У вас половина сигналов должна быть дублирована а остальные переключатся с одного на второй. И + арбитражный который тоже может упасть. Знакомые делали для ..... Это дико дорогая идея.

murdemon
19.02.2015, 17:09
что за схема с арбитражным... (такое только в космонавтике как я понимаю).. можно поподробнее? (обычно 1 мастер, 1 слейв и на сименсе и у других производителей)

ASo
19.02.2015, 17:52
Это и в энергетике и много где еще. Могу дать ссылки, но тут такие запрещены.

Алексей Александрович
19.02.2015, 18:05
Просто арбитражный анализирует входы и выходы обоих. Работает только один не арбитражный. Но если один вышел за пределы то переключает на другой. Остается вопрос с арбитражным.(а вот тут реализация?) Самая примитивная схема. Есть и более навороченные. АSo прав. Эта схема где только нет.
Поправлюсь работают оба но управляет только один, а орбитражный сравнивает их сигналы.

capzap
19.02.2015, 18:55
Да есть такие системы.. у сименс да и Codesys тоже.. только эта приблуда должна быть поддержана в рантайме.. у нас на овен такого точно нет..
1) датчики ... что с ними они как подключены к модулям которые висят на rs485 так и подключены а кто их спрашиваем Мастер или Раб не важно..
2) да надо помимо связи по tcp/ip еще сигнал железный с выхода мастера на слев и на оборот...
3) если модуль отвалится то все аларм и все такое программа в ошибку не важно на мастере или слеве....

тут самая фишка что для процесса отказ одного плк не должен быть заметен... по этому при отказе мастера на слеве (программы у них одинаковые, а данные внутренний необходимо синхронизировать, данные с датчиков сами подхватятся) программа должна работать с теми же данными что были до этого на мастере...

Вот и вопрос можно ли как то CodesysV3 вытащить данные MainProcess из памяти ПЛК что то на подобии CmpApp.AppRestoreRetainsFromFile функции или просто скопировать инстанс(отображение приложения в памяти ПЛК) CmpApp.APPLICATION ?

А Вы ради интереса, попробуйте на мастере сделать ADR(экземпляр функционального блока) и sizeof к нему, отправить на слейв этот набор байт и развернуть динамически это поу в слейве, состояние процесса должно сохранится, сам не попробую, в командировке

amn
20.02.2015, 19:00
А если для этого использовать сетевые переменные. По событию (решить с каким интервалом) передавать данные пачкой от мастера к слэйву. Если слэйв не получил данные в течении определенного времени, становится мастером и начинает сам посылать данные другому контроллеру. Среди данных должна быть переменная, которая все время меняется, чтобы узнать момент прекращения передачи данных.

Sergey666
21.02.2015, 01:23
Если реализовать обмен по 485 с модулями интеллектуально-навороченно , используя сислибком , при этом основной рабочий мастер ведет обмен с модулями , резервный на этой шине "слушает" и "подсматривает" ответы , т.е получает данные от модулей в онлайн режиме , при этом в резервном та-же прога сидит основная .
При условии отсутствия запросов со стороны основного мастера включается резервный . Но! При этом и основной должен опрос вести "интеллектуально" , дабы не лезть в обмен .
В общем как-то так можно , даже почти "безобрывно" , но... кода много будет и как-бы так сказать , не повлияет ли усложнение и излишняя "интеллектуальность" системы на ее надежность общую ?

Валенок
21.02.2015, 02:31
Основной чотко работает и все видит.
И резервный сидит и всё видит, включая основного.
И оба они видютъ - модуль помер и у него нет резерва.
Оператору гарантируется соединение с основным или резервным чтобы узнать хорошие новости. Чем не повышение надежности ?

Малышев Олег
21.02.2015, 08:41
Схема реданданси.

ПЛК1 --------контрольная шина -------ПЛК2
(мастер) ================= (в горячем резерве)
------------шина управления ----------------
|......................................|
Модуль1....................... Модуль N


Если очень хочется можно такую схему реализовать и на ПЛК ОВЕН

Ну к примеру так -
ПЛК100 -----к.ш. - например ethernet --------------ПЛК100

----------ш.у - 485 - протокол ОВЕН -----------
(мастер)-------------------------------------------(горячий резерв)
ОВЕН Мастер(активный)-----------------------Овен Мастер(не активен)
ОВЕН Прослушка сети(не активный)--------Овен Прослушка сети( активен)

к.ш. ну например на Modbus TCP - с обоих сторон по мастер слейву.

При отпадании мастера слейв оперативно переключается

Цимус протокола ОВЕН в том что есть функция прослушивания сети. На модбасе в силу ограничения протокола это реализовать не возможно.

И да! Эта функция забавная - !!!ИМХО!!! но S400 HSF (2 головы) по цене что то безумное.

P.S. Прошу прощения но форматирование не так отображается как хотел.
P.S.2 И да, ПЛК может быть больше чем 2, но! Алгоритм выбора мастера при слете усложняется
P.S.3 И еще - самое слабое звено - контрольная шина.При ее умирании - пипец системе. Для надежной работы ОБЯЗАТЕЛЬНО предусмотреть механическую защиту. Вплоть до вклеивания суперклеем разъемов Ethernet. Что бы потом только выкусить и снова обжать ethernet.

murdemon
22.02.2015, 13:12
OK с дублированием самого ПЛК все вроде более или имение понятно ... На счет дублирования линии связи с модулями по 485... Допустим на ПЛК есть 2а 485 .. так же все модули на одной шине и подключены к обоим портам 485 на ПЛК один из портов главный, второй запасной... (при обрыве между любыми из модулей лини 485... система должна работать) те Мастер порт опрашивает и если модуль не отвечает он говорит подчиненому порту попробуй теперь ты вести опрос этого модуля... По идее так должно работать? (только вопрос в конечных резисторах на концах где произошел обрыв... может есть какие специальные хардверные девайсы которые если видят что сопротивление линии меньше сколько то ом подключают оконечное на линии в месте соединения)