Определение ведущего контроллера (MasterSel)

В разделе было рассмотрено ручное включение синхронизации модулей с помощью установки значения входа sync у блоков SyncMan.

Для автоматического определения ролей ведущего/ведомого контроллера можно воспользоваться готовым блоком MasterSel или написать свой алгоритм.

MasterSel предназначен для определения роли ведущего между двумя контроллерами. Блок контролирует наличие связи между контроллерами с помощью передачи пилообразного сигнала по двум линиям связи. Линии связи организуются с помощью двух блоков SyncMan в проекте, каждый из которых осуществляет связь по своему порту.

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

В проекте должно быть создано два синхронизированных модуля. Создание синхронизированных модулей было рассмотрено в разделе.

Пример реализации резервирования ПЛК с общими Мх210

Далее рассмотрен пример реализации резервированной пары контроллеров с общей корзиной модулей серии Мх210. Данную схему удобно настраивать с помощью Мастера настройки в web-конфигураторе ПЛК (см. схему 4 в Руководстве по эксплуатации).

Примечание
Настройка обмена в среде Полигон для схемы 5 (см. Руководство по эксплуатации) принципиально не отличается от рассмотренной в данном разделе.

Для организации двух линий связи между контроллерами использованы интерфейсы LAN и REDU. Для подключения отладчиком среды Полигон использован интерфейс P3.

Graphic
Структурная схема примера
Настройки интерфейсов контроллеров в примере

Контроллер

Интерфейс 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

Для организации двух линий связи следует:

  1. Добавить в проект два OPC UA-сервера – блоки OpcUAServer из библиотеки paOpcUA.

  2. Настроить OPC UA-серверы в соответствии с таблицей с помощью SQL-запросов к свойствам модуля – Пользовательское свойство 00(LAN) и Пользовательское свойство 01 (REDU). Примеры SQL-запросов приведены в разделе.

    Graphic
    Настройка OPC UA-серверов: установка локальных IP-адресов
  3. Добавить в проект два блока SyncMan (OPC UA-клиенты).

  4. Настроить блоки SyncMan в соответствии с таблицей с помощью SQL-запросов к свойствам модуля: для локальных адресов также использовать Пользовательское свойство 00 и Пользовательское свойство 01, для IP-адресов соседнего контроллера задать Пользовательское свойство 02 и Пользовательское свойство 03. В данном примере входы fnum = 0.

    Graphic
    Настройка SyncMan: установка IP адресов
  5. Согласовать номера портов, выделяемых для обмена между OPC UA-серверами и клиентами контроллеров.

    Graphic
    Свойства модуля ПЛК1
    Graphic
    Свойства модуля ПЛК2
  6. Загрузить проекты на контроллеры.

    Graphic
    Успешный обмен: OPC UA-серверы (ПЛК1)
    Graphic
    Успешный обмен: OPC UA-клиенты SyncMan (ПЛК2)
    Graphic
    Успешный обмен: OPC UA-серверы (ПЛК2)
    Graphic
    Успешный обмен: OPC UA-клиенты SyncMan (ПЛК1)

Убедившись, что настройка обмена произведена успешно, можно приступить к настройке блока выбора текущих ролей контроллеров MasterSel. Для этого следует:

  1. Добавить блок MasterSel в проект.

    Выход L_Master определяет роль контроллера: L_Master = 0 – контроллер ведомый, L_Master = 1 – контроллер ведущий.

  2. Назначить сигнал с выхода L_Master глобальной константой, так как его можно использовать в проекте много раз. Для этого в свойствах выхода L_Master следует добавить свойства Полный алиас и Глобальная константа.

  3. Можно сразу задать вход блока ready (готовность) = 1 или вывести другие сигналы из программы.

    Graphic
    Настройка MasterSel
  4. Провести скрытую связь между выходом L_Master и входами sync блоков SyncMan через блок логического НЕ – NOT из библиотеки paCore, раздел Логические, так как синхронизацию следует включать на ведомом контроллере, когда L_Master = 0.

    Для того, чтобы провести скрытую связь, нужно нажать ПКМ на вход и выбрать в контекстном меню Задать константу.

    Graphic
    Соединение блоков MasterSel с SyncMan
  5. Запустить программу на первом контроллере. Он станет ведущим по истечении времени инициализации tinit. На выход L_pila выводится диагностический сигнал контроллера. Выход conn_fault = 1, так как программа на втором контроллере еще не включена.

    Graphic
    Работа MasterSel (ПЛК1)
  6. Установить me1 = 1 – данный контроллер имеет признак ПЛК1, он будет становиться ведущим при неопределенных условиях. На данный вход можно завести сигнал с внешней кнопки или с панели оператора и т.п.

    Примечание
    На входе me1 можно задать константу при помощи SQL-запроса к пользовательскому свойству модуля и таким образом определить, какой ПЛК является главным. Примеры запросов к свойствам модуля см. в разделе.
    Graphic
    Работа MasterSel (ПЛК1): задание признака ПЛК1
  7. Запустить программу на втором контроллере. Он станет ведомым по истечении времени инициализации tinit, так как он имеет признак ПЛК2, а соседний контроллер имеет признак ПЛК1.

    Graphic
    Работа MasterSel (ПЛК2)

    На выходах R_pila_1 и R_pila_2 блока MasterSel у обоих контроллеров отобразится диагностический сигнал от соседнего контроллера. На выходе R_ready появится 1 – оба контроллера видят, что сосед готов.

    На выходе R_Master ведомого контроллера появится 1ПЛК2 видит, что сосед – ведущий контроллер.

    Graphic
    Работа MasterSel (ПЛК1)
    Graphic
    Работа MasterSel (ПЛК2)

    Входы master1 и master2 блока MasterSel отвечают за ручную смену ролей контроллеров. На них можно завести сигналы с внешних кнопок или с панели оператора и т.п.

    Для того чтобы передать роль ведущего от ПЛК1 к ПЛК2, следует подать 1 на вход master2.

    Graphic
    Работа MasterSel (ПЛК1): передача роли ведущего контроллера

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

    Graphic
    Работа MasterSel (ПЛК2): получение роли ведущего контроллера

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

Примечание
Блок MasterSel является составным, поэтому подробно логику его работы можно посмотреть на внутренних страницах. Для этого следует открыть библиотеку paSync в представлении Дерево.

Выход L_Master блока MasterSel можно вывести на внешние сигнальные лампы, панель оператора, а также на разрешающие входы протоколов обмена данными.

В следующем примере рассматривается организация обмена с модулем линейки Мх210. В данном примере используется модуль МК210-311 (схема подключения представлена на рисунке).

Для обмена данными с модулем следует:

  1. Настроить обмен с модулем по Modbus TCP.

    Подробно настройка обмена по протоколу Modbus в среде Полигон рассмотрена в документе Обмен по протоколу Modbus. Библиотека paModbus.

  2. Завести на вход enbl сигнал L_Master.

    Graphic
    Настройка обмена с модулем МК210-311

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

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

Пример реализации резервирования ПЛК с индивидуальными Мх210

Далее рассмотрен пример реализации резервированной пары контроллеров с индивидуальными корзинами модулей серии Mx210.

Примечание
Режимы работы сетевых интерфейсов контроллера можно настроить в web-интерфейсе конфигурации (см. Руководство по эксплуатации).

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

Graphic
Структурная схема примера
Настройки интерфейсов контроллеров

Контроллер

Интерфейс 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

Для организации двух линий связи следует:

  1. Добавить в проект два OPC UA-сервера – блоки OpcUAServer из библиотеки paOpcUA.

  2. Настроить OPC UA-серверы в соответствии с таблицей с помощью SQL-запросов к свойствам модуля – Пользовательское свойство 00 (P2) и Пользовательское свойство 01 (REDU). Примеры SQL-запросов приведены в разделе.

    Graphic
    Настройка OPC UA-серверов: установка локальных IP адресов
  3. Добавить в проект два блока SyncMan (OPC UA-клиенты).

  4. Настроить блоки SyncMan в соответствии с таблицей с помощью SQL-запросов к свойствам модуля: для локальных адресов также использовать Пользовательское свойство 00 и Пользовательское свойство 01, для IP адресов соседнего контроллера задать Пользовательское свойство 03 и Пользовательское свойство 04. В данном примере входы fnum = 0.

    Graphic
    Настройка SyncMan: установка IP адресов
  5. Согласовать номера портов, выделяемых для обмена между OPC UA-серверами и клиентами контроллеров.

    Graphic
    Свойства модуля ПЛК1
    Graphic
    Свойства модуля ПЛК2
  6. Загрузить проекты в контроллеры.

    Graphic
    Успешный обмен: OPC UA-серверы (ПЛК1)
    Graphic
    Успешный обмен: OPC UA-клиенты SyncMan (ПЛК2)
    Graphic
    Успешный обмен: OPC UA-серверы (ПЛК2)
    Graphic
    Успешный обмен: OPC UA-клиенты SyncMan (ПЛК1)

Убедившись, что настройка обмена произведена успешно, можно приступить к настройке блока выбора текущих ролей контроллеров MasterSel. Для этого следует:

  1. Добавить блок MasterSel в проект.

    Выход L_Master определяет роль контроллера: L_Master = 0 – контроллер ведомый, L_Master = 1 – контроллер ведущий.

  2. Назначить сигнал с выхода L_Master глобальной константой, так как его можно использовать в проекте много раз. Для этого в свойствах выхода L_Master следует добавить свойства Полный алиас и Глобальная константа.

  3. Можно сразу задать вход блока ready (готовность) = 1 или вывести другие сигналы из программы.

    Graphic
    Настройка MasterSel
  4. Провести скрытую связь между выходом L_Master и входами sync блоков SyncMan через блок логического НЕ – NOT из библиотеки paCore, раздел Логические, так как синхронизацию следует включать на ведомом контроллере, когда L_Master = 0.

    Для того, чтобы провести скрытую связь, нужно нажать ПКМ на вход и выбрать в контекстном меню Задать константу.

    Graphic
    Соединение MasterSel с SyncMan
  5. Запустить программу на первом контроллере. Он станет ведущим по истечении времени инициализации tinit. На выход L_pila выводится диагностический сигнал контроллера. Выход conn_fault = 1, так как программа на втором контроллере еще не включена.

    Graphic
    Работа MasterSel (ПЛК1)

    Установить me1 = 1 – данный контроллер имеет признак ПЛК1, он будет становиться ведущим при неопределенных условиях. На данный вход можно вывести сигнал с внешней кнопки или с панели оператора и т.п.

    Примечание
    На входе me1 можно задать константу при помощи SQL-запроса к пользовательскому свойству модуля и таким образом определить, какой ПЛК является главным. Примеры запросов к свойствам модуля см. в разделе.
    Graphic
    Работа MasterSel (ПЛК1): задание признака ПЛК1

    Запустить программу на втором контроллере. Он станет ведомым по истечении времени инициализации tinit, так как он имеет признак ПЛК2, а соседний контроллер имеет признак ПЛК1.

    Graphic
    Работа MasterSel (ПЛК2)

    На выходах R_pila_1 и R_pila_2 блока MasterSel у обоих контроллеров отобразится диагностический сигнал от соседнего контроллера. На выходе R_ready появится 1 – оба контроллера видят, что сосед готов.

    На выходе R_Master ведомого контроллера появится 1ПЛК2 видит, что сосед – ведущий контроллер.

Graphic
Работа MasterSel (ПЛК1)
Graphic
Работа MasterSel (ПЛК2)

Входы master1 и master2 блока MasterSel отвечают за ручную смену ролей контроллеров. На них можно вывести сигналы с внешних кнопок или с панели оператора и т.п.

Для того, чтобы передать роль ведущего от ПЛК1 к ПЛК2, следует подать 1 на вход master2.

Graphic
Работа MasterSel (ПЛК1): передача роли ведущего контроллера

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

Graphic
Работа MasterSel (ПЛК2): получение роли ведущего контроллера

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

Примечание
Блок MasterSel является составным, поэтому подробно логику его работы можно посмотреть на внутренних страницах. Для этого следует открыть библиотеку paSync в представлении Дерево.

Выход L_Master блока MasterSel можно вывести на внешние сигнальные лампы, панель оператора и т.д.

Далее нужно организовать обмен данными с модулями линейки Мх210. В данном примере используются модули МК210-311 (схема подключения на рисунке).

Для настройки TCP/IP-сервера в соответствии с таблицей следует использовать SQL-запрос к свойству модуля Пользовательское свойство 02 (P1).

Настроить обмен с модулями по Modbus TCP.

Подробно настройка обмена по протоколу Modbus в среде Полигон рассмотрена в документе Обмен по протоколу Modbus. Библиотека paModbus.

Graphic
Настройка обмена с модулем МК210-311

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

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