В разделе было рассмотрено ручное включение синхронизации модулей с помощью установки значения входа sync у блоков SyncMan.
Для автоматического определения ролей ведущего/ведомого контроллера можно воспользоваться готовым блоком MasterSel или написать свой алгоритм.
MasterSel предназначен для определения роли ведущего между двумя контроллерами. Блок контролирует наличие связи между контроллерами с помощью передачи пилообразного сигнала по двум линиям связи. Линии связи организуются с помощью двух блоков SyncMan в проекте, каждый из которых осуществляет связь по своему порту.
Далее приводятся примеры реализации резервированной пары контроллеров на основе блока MasterSel.
В проекте должно быть создано два синхронизированных модуля. Создание синхронизированных модулей было рассмотрено в разделе.
Пример реализации резервирования ПЛК с общими Мх210
Далее рассмотрен пример реализации резервированной пары контроллеров с общей корзиной модулей серии Мх210. Данную схему удобно настраивать с помощью Мастера настройки в web-конфигураторе ПЛК (см. схему 4 в Руководстве по эксплуатации).

Для организации двух линий связи между контроллерами использованы интерфейсы LAN и REDU. Для подключения отладчиком среды Полигон использован интерфейс P3.
Настройки интерфейсов контроллеров в примере
Контроллер | Интерфейс LAN Ethernet 1…2 | Интерфейс P3 Ethernet 3 | Интерфейс REDU Ethernet 4 |
---|---|---|---|
ПЛК1 | 192.168.0.12/16 RSTP | DHCP-клиент | 192.168.10.12/24 |
ПЛК2 | 192.168.0.14/16 RSTP | DHCP-клиент | 192.168.10.14/24 |
Для организации двух линий связи следует:
Добавить в проект два OPC UA-сервера – блоки OpcUAServer из библиотеки paOpcUA.
Настроить OPC UA-серверы в соответствии с таблицей с помощью SQL-запросов к свойствам модуля – Пользовательское свойство 00(LAN) и Пользовательское свойство 01 (REDU). Примеры SQL-запросов приведены в разделе.
Настройка OPC UA-серверов: установка локальных IP-адресов Добавить в проект два блока SyncMan (OPC UA-клиенты).
Настроить блоки SyncMan в соответствии с таблицей с помощью SQL-запросов к свойствам модуля: для локальных адресов также использовать Пользовательское свойство 00 и Пользовательское свойство 01, для IP-адресов соседнего контроллера задать Пользовательское свойство 02 и Пользовательское свойство 03. В данном примере входы fnum = 0.
Настройка SyncMan: установка IP адресов Согласовать номера портов, выделяемых для обмена между OPC UA-серверами и клиентами контроллеров.
Свойства модуля ПЛК1 Свойства модуля ПЛК2 Загрузить проекты на контроллеры.
Успешный обмен: OPC UA-серверы (ПЛК1) Успешный обмен: OPC UA-клиенты SyncMan (ПЛК2) Успешный обмен: OPC UA-серверы (ПЛК2) Успешный обмен: OPC UA-клиенты SyncMan (ПЛК1)
Убедившись, что настройка обмена произведена успешно, можно приступить к настройке блока выбора текущих ролей контроллеров MasterSel. Для этого следует:
Добавить блок MasterSel в проект.
Выход L_Master определяет роль контроллера: L_Master = 0 – контроллер ведомый, L_Master = 1 – контроллер ведущий.
Назначить сигнал с выхода L_Master глобальной константой, так как его можно использовать в проекте много раз. Для этого в свойствах выхода L_Master следует добавить свойства Полный алиас и Глобальная константа.
Можно сразу задать вход блока ready (готовность) = 1 или вывести другие сигналы из программы.
Настройка MasterSel Провести скрытую связь между выходом L_Master и входами sync блоков SyncMan через блок логического НЕ – NOT из библиотеки paCore, раздел Логические, так как синхронизацию следует включать на ведомом контроллере, когда L_Master = 0.
Для того, чтобы провести скрытую связь, нужно нажать ПКМ на вход и выбрать в контекстном меню Задать константу.
Соединение блоков MasterSel с SyncMan Запустить программу на первом контроллере. Он станет ведущим по истечении времени инициализации tinit. На выход L_pila выводится диагностический сигнал контроллера. Выход conn_fault = 1, так как программа на втором контроллере еще не включена.
Работа MasterSel (ПЛК1) Установить me1 = 1 – данный контроллер имеет признак ПЛК1, он будет становиться ведущим при неопределенных условиях. На данный вход можно завести сигнал с внешней кнопки или с панели оператора и т.п.
Примечание
На входе me1 можно задать константу при помощи SQL-запроса к пользовательскому свойству модуля и таким образом определить, какой ПЛК является главным. Примеры запросов к свойствам модуля см. в разделе.Работа MasterSel (ПЛК1): задание признака ПЛК1 Запустить программу на втором контроллере. Он станет ведомым по истечении времени инициализации tinit, так как он имеет признак ПЛК2, а соседний контроллер имеет признак ПЛК1.
Работа MasterSel (ПЛК2) На выходах R_pila_1 и R_pila_2 блока MasterSel у обоих контроллеров отобразится диагностический сигнал от соседнего контроллера. На выходе R_ready появится 1 – оба контроллера видят, что сосед готов.
На выходе R_Master ведомого контроллера появится 1 – ПЛК2 видит, что сосед – ведущий контроллер.
Работа MasterSel (ПЛК1) Работа MasterSel (ПЛК2) Входы master1 и master2 блока MasterSel отвечают за ручную смену ролей контроллеров. На них можно завести сигналы с внешних кнопок или с панели оператора и т.п.
Для того чтобы передать роль ведущего от ПЛК1 к ПЛК2, следует подать 1 на вход master2.
Работа MasterSel (ПЛК1): передача роли ведущего контроллера ПЛК2 станет ведущим:
Работа MasterSel (ПЛК2): получение роли ведущего контроллера
Условия автоматической смены ролей прописаны в разделе и в справке среды на блок MasterSel.

Выход L_Master блока MasterSel можно вывести на внешние сигнальные лампы, панель оператора, а также на разрешающие входы протоколов обмена данными.
В следующем примере рассматривается организация обмена с модулем линейки Мх210. В данном примере используется модуль МК210-311 (схема подключения представлена на рисунке).
Для обмена данными с модулем следует:
Настроить обмен с модулем по Modbus TCP.
Подробно настройка обмена по протоколу Modbus в среде Полигон рассмотрена в документе Обмен по протоколу Modbus. Библиотека paModbus.
Завести на вход enbl сигнал L_Master.
Настройка обмена с модулем МК210-311
При данной настройке модуль МК210-311 будет опрашивать тот контроллер, который в данный момент является ведущим.

Пример реализации резервирования ПЛК с индивидуальными Мх210
Далее рассмотрен пример реализации резервированной пары контроллеров с индивидуальными корзинами модулей серии Mx210.

В данном примере для организации двух линий связи между контроллерами использованы интерфейсы P2 и REDU. Интерфейс P1 выделен для обмена с модулями Мх210, а интерфейс P3 – для подключения отладчиком среды Полигон.

Настройки интерфейсов контроллеров
Контроллер | Интерфейс P1 Ethernet 1 | Интерфейс P2 Ethernet 2 | Интерфейс P3 Ethernet 3 | Интерфейс REDU Ethernet 4 |
---|---|---|---|---|
ПЛК1 | 192.168.0.12/16 | 192.168.1.12/24 | DHCP-клиент | 192.168.10.12/24 |
ПЛК2 | 192.168.0.14/16 | 192.168.1.14/24 | DHCP-клиент | 192.168.10.14/24 |
Для организации двух линий связи следует:
Добавить в проект два OPC UA-сервера – блоки OpcUAServer из библиотеки paOpcUA.
Настроить OPC UA-серверы в соответствии с таблицей с помощью SQL-запросов к свойствам модуля – Пользовательское свойство 00 (P2) и Пользовательское свойство 01 (REDU). Примеры SQL-запросов приведены в разделе.
Настройка OPC UA-серверов: установка локальных IP адресов Добавить в проект два блока SyncMan (OPC UA-клиенты).
Настроить блоки SyncMan в соответствии с таблицей с помощью SQL-запросов к свойствам модуля: для локальных адресов также использовать Пользовательское свойство 00 и Пользовательское свойство 01, для IP адресов соседнего контроллера задать Пользовательское свойство 03 и Пользовательское свойство 04. В данном примере входы fnum = 0.
Настройка SyncMan: установка IP адресов Согласовать номера портов, выделяемых для обмена между OPC UA-серверами и клиентами контроллеров.
Свойства модуля ПЛК1 Свойства модуля ПЛК2 Загрузить проекты в контроллеры.
Успешный обмен: OPC UA-серверы (ПЛК1) Успешный обмен: OPC UA-клиенты SyncMan (ПЛК2) Успешный обмен: OPC UA-серверы (ПЛК2) Успешный обмен: OPC UA-клиенты SyncMan (ПЛК1)
Убедившись, что настройка обмена произведена успешно, можно приступить к настройке блока выбора текущих ролей контроллеров MasterSel. Для этого следует:
Добавить блок MasterSel в проект.
Выход L_Master определяет роль контроллера: L_Master = 0 – контроллер ведомый, L_Master = 1 – контроллер ведущий.
Назначить сигнал с выхода L_Master глобальной константой, так как его можно использовать в проекте много раз. Для этого в свойствах выхода L_Master следует добавить свойства Полный алиас и Глобальная константа.
Можно сразу задать вход блока ready (готовность) = 1 или вывести другие сигналы из программы.
Настройка MasterSel Провести скрытую связь между выходом L_Master и входами sync блоков SyncMan через блок логического НЕ – NOT из библиотеки paCore, раздел Логические, так как синхронизацию следует включать на ведомом контроллере, когда L_Master = 0.
Для того, чтобы провести скрытую связь, нужно нажать ПКМ на вход и выбрать в контекстном меню Задать константу.
Соединение MasterSel с SyncMan Запустить программу на первом контроллере. Он станет ведущим по истечении времени инициализации tinit. На выход L_pila выводится диагностический сигнал контроллера. Выход conn_fault = 1, так как программа на втором контроллере еще не включена.
Работа MasterSel (ПЛК1) Установить me1 = 1 – данный контроллер имеет признак ПЛК1, он будет становиться ведущим при неопределенных условиях. На данный вход можно вывести сигнал с внешней кнопки или с панели оператора и т.п.
Примечание
На входе me1 можно задать константу при помощи SQL-запроса к пользовательскому свойству модуля и таким образом определить, какой ПЛК является главным. Примеры запросов к свойствам модуля см. в разделе.Работа MasterSel (ПЛК1): задание признака ПЛК1 Запустить программу на втором контроллере. Он станет ведомым по истечении времени инициализации tinit, так как он имеет признак ПЛК2, а соседний контроллер имеет признак ПЛК1.
Работа MasterSel (ПЛК2) На выходах R_pila_1 и R_pila_2 блока MasterSel у обоих контроллеров отобразится диагностический сигнал от соседнего контроллера. На выходе R_ready появится 1 – оба контроллера видят, что сосед готов.
На выходе R_Master ведомого контроллера появится 1 – ПЛК2 видит, что сосед – ведущий контроллер.


Входы master1 и master2 блока MasterSel отвечают за ручную смену ролей контроллеров. На них можно вывести сигналы с внешних кнопок или с панели оператора и т.п.
Для того, чтобы передать роль ведущего от ПЛК1 к ПЛК2, следует подать 1 на вход master2.

ПЛК2 станет ведущим:

Условия автоматической смены ролей прописаны в разделе и в справке среды на блок MasterSel.

Выход L_Master блока MasterSel можно вывести на внешние сигнальные лампы, панель оператора и т.д.
Далее нужно организовать обмен данными с модулями линейки Мх210. В данном примере используются модули МК210-311 (схема подключения на рисунке).
Для настройки TCP/IP-сервера в соответствии с таблицей следует использовать SQL-запрос к свойству модуля Пользовательское свойство 02 (P1).
Настроить обмен с модулями по Modbus TCP.
Подробно настройка обмена по протоколу Modbus в среде Полигон рассмотрена в документе Обмен по протоколу Modbus. Библиотека paModbus.

При данной настройке каждый контроллер будет опрашивать свой модуль МК210-311.
