1-RU-139911-1.1

Руководство пользователя

Используемые термины и сокращения

Ведомый контроллер – контроллер, который находится в «горячем» резерве и синхронизирует данные с ведущим контроллером.

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

Определение ведущего контроллера или переключение роли ведущего между контроллерами – алгоритм выбора текущей роли контроллера: ведущий или ведомый. Может быть как автоматическим, так и ручным (по команде оператора).

ОС – операционная система.

ЛКМ (ПКМ) – левая (правая) кнопка мыши.

ПЛК – программируемый логический контроллер.

Резервирование (по ГОСТ 27.002-89) – способ обеспечения надежности объекта за счет использования дополнительных средств и (или) возможностей, избыточных по отношению к минимально необходимым для выполнения требуемых функций.

Резервирование замещением (по ГОСТ 27.002-89) или 100 % «горячее» резервирование – резервирование, при котором функции основного элемента передаются резервному только после отказа основного элемента.

Синхронизация данных – устранение различий между двумя аналогичными наборами данных контроллеров посредством обмена информацией по выделенным линиям связи.

Runtime (среда выполнения) – вычислительное окружение, необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы.

SQL (Structured Query Language) – язык программирования для хранения и обработки информации в реляционной базе данных.

Введение

Настоящее руководство описывает синхронизацию проектов и организацию резервирования для контроллеров ОВЕН, программируемых в среде Полигон. Подразумевается, что читатель обладает базовыми навыками работы с Полигон, поэтому общие вопросы (например, создание и загрузка проектов) в данном документе не рассматриваются – они подробно описаны в документах Руководство по программированию. Библиотека paCore и Быстрый старт.

Библиотека paSync содержит функциональные блоки, которые нужны для синхронизации проектов и организации резервирования в среде Полигон. Данная библиотека доступна для работы при наличии соответствующей лицензии runtime (см. описание лицензионных пакетов на странице среды разработки Полигон).

Данный документ актуален для версии среды Полигон – 1994, версии библиотеки paSync58 и выше.

Общие сведения об организации резервирования в ОВЕН ПЛК210

ОВЕН ПЛК210 с исполнительной средой Полигон поддерживают:

  • Горячее аппаратное резервирование питания контроллера – см. раздел;

  • Горячее программное резервирование приложения пользователя – см. раздел.

Аппаратное резервирование питания контроллера

В контроллерах ПЛК210 предусмотрено два порта для подключения источников питания 24 В:

  • Порт 1 – основное питание;

  • Порт 2 – резервное питание.

Если напряжение основного питания падает ниже 9 В, происходит переход на резервное питание.

При восстановлении работоспособности основного источника питания контроллер автоматически возвращается на питание от основного источника.

Примечание
Информацию о наличии питающего напряжения на портах контроллера можно получить с помощью блока 210-Power из библиотеки paOwenIO. Также блок 210-Power позволяет задать режим индикации светодиода Батарея  Graphic. Подробнее см. в документе Работа с ОВЕН ПЛК. Библиотека paOwenIO.

Программное резервирование контроллеров

Блоки из библиотеки paSync выполняют программное резервирование пользовательского приложения Полигон (см. описание библиотеки в разделе).

Библиотека paSync доступна для постоянной работы при наличии соответствующей лицензии runtime контроллера (см. описание лицензионных пакетов на странице среды разработки Полигон).

Среда разработки Полигон предоставляет следующий функционал при организации резервирования контроллеров:

  1. Дублирование (полное или частичное) пользовательских программ (модулей контроллеров в проекте Полигон) на стадии разработки.

  2. Синхронизация данных дублированных программ контроллеров во время исполнения – блоков *_sync и данных в разделе блока SyncMan из библиотеки paSync.

  3. Автоматическое переключение ролей контроллеров (ведущий/ведомый) – блок MasterSel из библиотеки paSync.

  4. Ручное переключение ролей контроллеров (ведущий/ведомый) – блок MasterSel из библиотеки paSync.

  5. Среда не ограничивает пользователя в создании собственного алгоритма переключения ролей контроллеров.

Варианты схем резервирования ОВЕН ПЛК с исполнительной средой Полигон практически не ограничены и могут модернизироваться в соответствии с требованиями конкретного автоматизируемого технологического объекта.

Примеры схем организации резервирования ОВЕН ПЛК с исполнительной средой Полигон:

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

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

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

Оба контроллера циклически выполняют пользовательское приложение.

Ведомый контроллер начинает работать в режиме OPC UA-клиента (блок SyncMan) и оформляет подписку на данные (блоки *_sync и раздел блока SyncMan) OPC UA-сервера ведущего контроллера. Ведомый контроллер синхронизирует свои данные с данными ведущего контроллера (см. пример в разделе).

Обмен диагностическими сигналами двух контроллеров можно организовать по двум изолированным интерфейсам Ethernet с помощью готового блока MasterSel (см. примеры настройки в разделе ).

Условия переключения ведущего контроллера при использовании блока MasterSel описаны в справке среды Полигон и в разделе.

Алгоритм работы резервированной пары контроллеров при использовании блока MasterSel:

Graphic
Алгоритм работы резервированной пары контроллеров при использовании блока MasterSel

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

Библиотека paSync

Библиотека paSync обеспечивает синхронизацию данных между дублированными модулями контроллеров и организацию резервирования.

Один из контроллеров выбирается ведущим – с ним синхронизируется ведомый контроллер. Синхронизация сигналов во время работы контроллеров обеспечивается для блоков с поддержкой синхронизации из библиотеки paSync, которые реализуют базовые алгоритмы аналогично блокам из библиотек paCore и paControls. Работа данных блоков описана в справке среды и в этом документе не рассматривается.

Для добавления библиотеки paSync в проект следует:

  1. Перейти в меню Окна/Проекты. В появившемся окне отобразится текущий проект и добавленные библиотеки.

    Graphic
    Добавление библиотеки
  2. Нажать кнопку Открыть и перейти в папку с файлами библиотеки, которую необходимо добавить.

  3. В выпадающем списке выбрать тип файла Библиотека Полигон 2 (*.ll2).

    Graphic
    Добавление библиотеки
  4. В окне появится файл библиотеки с расширением .ll2. Следует выбрать его и нажать Открыть.

    Graphic
    Добавление библиотеки

Добавленная библиотека отобразится в окне Проекты.

Менеджер синхронизации (SyncMan)

Блок SyncMan обеспечивает синхронизацию данных между ведущим и ведомым контроллерами. В ведомом контроллере создается подписка на изменение данных от ведущего. Обмен происходит по протоколу OPC UA.

SyncMan основан на блоке OpcUAClient из библиотеки paOpcUA. Подробнее реализация протокола OPC UA в среде Полигон описана в документе Обмен с верхним уровнем. Библиотека paOpcUA.

Данный блок можно разместить только в Фоне.

Данные, необходимые для синхронизации блоков *_sync библиотеки paSync, добавляются в подписку автоматически. Дополнительные входы/выходы, которыми необходимо обмениваться с сервером, нужно добавить в раздел Данные внутри блока SyncMan.

Примечание
Если блоки библиотеки paSync находятся внутри составных блоков, то допускается до 7 вложенностей.
Назначение входов и выходов SyncMan
ЭлементОписание
Входы
enb

Разрешение на работу блока

sync

Синхронизация:

0 – выключена;

1 – включена

Примечание

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

wait

Таймаут ожидания ответа от сервера, мс (константный)

lip

Локальный IP адрес (константный)

lprt

Локальный порт (константный)

sdr

Сетевой стек, для ПЛК ОВЕН "/" (константный)

rip

IP адрес сервера (константный)

rprt

Порт сервера (константный)

usr

Логин для доступа к серверу (константный)

psw

Пароль для доступа к серверу (константный)

prio

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

0 – отключает создание дополнительного потока (обмен идет в текущем фоновом потоке);

1…47 – приоритет потока

Примечание

Максимально возможное значение приоритета для конкретной ОС контроллера можно определить с помощью блока ThreadMan из библиотеки paCore, раздел Системные.

rst

Сброс максимальных значений временных счетчиков: выходов mwrk и mscan

fnum

Максимальное количество подмененных во время отладки входов/выходов, которое можно синхронизировать:

0 – отключает синхронизацию подмененных значений

m_rbufs

Вход для подключения блоков типа BufSupEx (циклический)

Выходы
sts

Статус работы:

0 – нет обмена;

1 – обмен;

2 – в резерве;

>2 – переходное состояние

svld

Синхронизация работает

sst

Статус сервера в соответствии со спецификацией OPC UA (см. Part 5 – 12.6 ServerState)

ssl

Дополнительный статус сервера ServiceLevel в соответствии со спецификацией OPC UA (см. Part 4 – 6.6.2.4.2 ServiceLevel)

sid

ID подписки

ssn

Номер уведомления подписки

rcnt

Количество принятых пакетов

wcnt

Количество отправленных пакетов

prio

Приоритет дополнительного потока (0 – отключен)

dsz

Количество синхронизируемых данных (входов и выходов блоков *_sync и добавленных в раздел SyncMan)

wrk

Текущее время работы одного цикла потока синхронизации, мс

mwrk

Максимальное время работы одного цикла потока синхронизации, мс

scan

Текущее время получения всех изменившихся данных (входов и выходов) от соседнего контроллера, мс

mscan

Максимальное время получения всех изменившихся данных (входов и выходов) от соседнего контроллера, мс

diag

Диагностический счетчик (используется для контроля получения всех данных и расчета времени)

fnumo

Количество синхронизируемых подмененных во время отладки входов/выходов

Graphic
Менеджер синхронизации дублированного контроллера (SyncMan)

Выходы функциональных блоков, добавленные в раздел Данные, передаются на сервер всегда в соответствии со свойствами (подробнее см. в описании блока OpcUAClient из библиотеки paOpcUA).

Входы функциональных блоков, добавленные в раздел Данные, читаются из сервера в соответствии со следующими правилами:

  1. Если у входа есть свойство ID источника/приемника, то он читается из сервера всегда при наличии связи. Такие данные используются для двустороннего обмена между ведущим и ведомым независимо от текущей роли контроллера.

  2. Если у входа нет свойства ID источника/приемника, то он читается из сервера только при включенной синхронизации (sync = 1). Такие данные используются для синхронизации вручную.

Для синхронизации параметров можно использовать блоки BufSupEx, подключенные к входам m_rbufs блока SyncMan (дополнительные входы добавляются командой Создать). Значения параметров блока BufSupEx синхронизируются только при sync = 1.

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

Блок MasterSel определяет роли ведущий/ведомый для двух контроллеров в резервированной конфигурации.

Назначение входов и выходов MasterSel
ЭлементОписание
Входы
me1

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

ready

Внешнее условие готовности контроллера (разрешение стать основным)

init

Запуск таймера на инициализацию

master1

Команда ПЛК1 стать ведущим (внутри выделяется фронт с 0 на 1)

master2

Команда ПЛК2 стать ведущим (внутри выделяется фронт с 0 на 1)

tpila

Таймер залипания пилы, мс

trecon

Таймер восстановления связи, мс

tinit

Таймер на инициализацию, мс

Выходы
L_Master

Признак ведущего:

0 – данный контроллер ведомый;

1 – данный контроллер ведущий

L_pila

Диагностика: генерируемый пилообразный сигнал этого контроллера

L_ready

Диагностика: готовность этого контроллера

L_init_over

Инициализация завершена

conn_fault

Нет связи с соседним контроллером

R_pila_1

Диагностика: пила соседнего контроллера по каналу связи 1

R_pila_2

Диагностика: пила соседнего контроллера по каналу связи 2

R_ready

Диагностика: готовность соседнего контроллера

R_master

Диагностика: соседний контроллер ведущий

После запуска программы контроллера, выход блока L_Master = 0, т.е. ПЛК является ведомым.

Любое из условий переключения в роль ведущего может сработать только после завершения инициализации (выход L_init_over = 1). Инициализация считается завершенной после окончания отсчета времени tinit от появления единицы на входе L_init (обычно сразу установлен в 1).

Контроллер может стать ведущим при одном из условий:

  • Если он ведомый и готов (L_Master = 0 и L_ready = 1), а соседний – не готов (R_ready = 0);

  • Если соседний ведущий контроллер получает команду на смену мастера (master1 или master2). Тогда этот контроллер станет ведущим, если он готов, или оба контроллера не готовы;

  • После восстановления связи между ПЛК, когда оба ведомые, и этот контроллер – ПЛК1 (вход me1 = 1);

  • При потере связи с соседним ПЛК (conn_fault = 0).

Контроллер может стать ведомым при одном из условий:

  • Если он ведущий и не готов (L_Master = 1 и L_ready = 0), а соседний – готов (R_ready = 1)

  • Если он получает команду на смену мастера (master1 или master2). Тогда другой контроллер станет ведущим, если он готов, или оба контроллера не готовы;

  • После восстановления связи между контроллерами, когда оба ведущие, и этот ПЛК – ПЛК2 (вход me1 = 0).

В иных случаях смены ролей не происходит.

Готовность контроллера (выход L_ready блока) формируется на основании двух условий по логике «И»:

  • Есть внешнее условие готовности, заводимое на вход ready;

  • Инициализация связи завершена.

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

  • Если не происходит обновления значений пилообразных сигналов ни по одной линии за заданное время (вход tpila), то фиксируется потеря связи между ПЛК (выход conn_fault = 1);

  • Наличие связи фиксируется (выход conn_fault = 0) с задержкой времени (вход trecon) после того, когда снова начинают изменяться значения передаваемых пилообразных сигналов;

  • Текущие значения пилообразного сигнала выдаются на выходы: L_pila и R_pila_1, R_pila_2, соответственно, собственный сигнал и сигналы от соседнего контроллера по двум линиям связи.

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

Выход L_Master используется в прикладной программе для задания признака ведущего у линейки ввода/вывода. Инверсия выхода задает признак необходимости синхронизации (входы sync блоков SyncMan). Другие выходы блока можно использовать для диагностики и в пользовательской логике.

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

Пример работы с блоком приведен в разделе.

Создание синхронизированных модулей

Для того, чтобы синхронизировать модули двух контроллеров, следует дублировать их места работы.

Graphic
Дерево проекта с двумя модулями

Для того, чтобы дублировать место работы одного модуля, следует:

  1. Захватить место работы мышью и перетащить на второй модуль.

  2. В выпадающем меню выбрать Добавить. Места работы (у первого и у второго модуля) подсветятся желтым.

  3. Удалить аналогичное место работы у второго модуля.

    Graphic
    Дерево проекта. Дублированные модули

Теперь все изменения в местах работы одного модуля будут дублироваться во втором модуле, и наоборот.

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

Для удобства перемещения по дублированным страницам модулей можно воспользоваться командой Показать. Вызвать ее можно в выпадающем меню при нажатии ПКМ на свободном месте страницы.

Graphic
Команда Показать

При работе с синхронизированными модулями для блоков, которые реализуют протоколы обмена (OpcUAServer и OpcUAClient из библиотеки paOpcUA, TcpIpSrA и TcpIpClA из библиотеки paCore и др.), для задания входов следует использовать SQL-запросы к соответствующим свойствам модуля.

Это необходимо для уникальных параметров контроллеров, например, для IP-адресов. Для задания параметров «соседнего» контроллера рекомендуется использовать пользовательские свойства.

Запрос IP-адреса (prop_ip):

"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"

Запрос номера порта отладчика (prop_debug_port):

<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_debug_port"</sql>

Запрос пользовательского свойства Пользовательское свойство 00 (prop_0):

<sql> SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_0"</sql

Синхронизация модулей. Менеджер синхронизации (SyncMan)

В разделе была рассмотрена синхронизация проектов на этапе разработки.Блок SyncMan из библиотеки paSync (менеджер синхронизации для синхронизирующихся блоков) выполняет синхронизацию проектов во время исполнения по протоколу OPC UA.

Синхронизация исполняемых проектов осуществляется по протоколу OPC UA.

Блок SyncMan является модифицированным блоком OPC UA-клиента (блок OpcUAClient из библиотеки paOpcUA), реализующим одну подписку к серверу.

Каждый ПЛК, программируемый в Полигон, является OPC UA-сервером, так как Отладчик среды подключается к контроллеру как OPC UA-клиент. Преднастроенный OPC UA-сервер (блок OpcUAServer из библиотеки paOpcUA) добавляется автоматически при создании модуля из шаблона Модуль с отладчиком для контроллера в месте работы Фон, программа Debug.

Подробно реализация протокола OPC UA в среде Полигон описана в документе Обмен с верхним уровнем. Библиотека paOpcUA.

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

  1. Добавить на страницу таймера любого из дублированных модулей пару блоков из библиотеки paSync. Убедиться, что на аналогичной странице второго модуля изменения дублировались.

    Graphic
    Страница модуля
    Graphic
    Страница «соседнего» модуля
  2. На любую страницу в месте работы Фон добавить блок SyncMan.

  3. На входы блока lip, lprt, rip, rprt подать SQL-запросы к свойствам модуля. Примеры SQL-запросов приведены в разделе. В данном примере вход fnum = 0.

    В данном примере блок SyncMan будет подключаться к OPC UA-серверу отладчика. При необходимости можно создать отдельный OPC UA-сервер, выделенный для синхронизации проектов.

    Graphic
    Настройка OPC UA-сервера и SyncMan

    В данном примере в качестве «соседнего» контроллера будет выступать виртуальный контроллер.

    Graphic
    Свойства модуля
    Graphic
    Свойства «соседнего» модуля
  4. Запустить программы на обоих контроллерах.

    У блоков OPC UA-серверов в обоих модулях отобразится активное подключение клиента РА – блока SyncMan.

    Graphic
    OPC UA-сервер. Подписка SyncMan «соседнего» контроллера

    После запуска входы sync блоков SyncMan в обоих модулях равны 0. Синхронизации не происходит.

  5. Задать в одном из модулей sync = 1 – данный контроллер станет ведомым. Его блоки будут синхронизироваться с соответствующими блоками ведущего контроллера.

    На выходе блока svld = 1 – синхронизация работает.

    Graphic
    SyncMan. Синхронизация включена – этот контроллер ведомый
  6. Задать триггер на странице ведущего контроллера.

    Graphic
    Изменение выходов блоков со стороны ведущего контроллера
  7. Проверить, что блок триггера на странице ведомого контроллера синхронизировался с блоком ведущего.

    Graphic
    Синхронизация блока ведомого контроллера

Если попытаться сбросить значение на выходе триггера у ведомого контроллера, подав 1 на вход r, – выход не сбросится.

Graphic
Изменение со стороны ведомого контроллера не принимается

Помимо блоков с поддержкой синхронизации можно синхронизировать отдельные входы/выходы в модулях. Для этого следует добавить необходимые входы/выходы в раздел Данные внутри блока SyncMan.

См. описание синхронизации объектов данных из раздела Данные в разделе.

Добавить объект данных в раздел можно одним из следующих способов:

  1. Открыть на одной странице блок SyncMan, на другой странице блок с входом/выходом, который необходимо добавить. Выделить вход/выход и с нажатым Ctrl перетащить его на блок SyncMan. Отпустить, выбрать команду Добавить.

  2. Открыть блок SyncMan в дереве (со страницы это проще всего сделать командой Показать в дереве), раскрыть его. Перетащить вход/выход в раздел Данные, выбрать команду Добавить.

Определение ведущего контроллера (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.