Pull to refresh

Маршрутизируемые S7-коммуникации на примере Profinet<->Profibus в «тысячной серии» Simatic

Industrial Programming *SCADA *
Tutorial

Связи S7 лет уже много. И многие про него знают тоже много. И даже много используют. Работать с ними весьма легко - создал S7 connection, разместил, где надо, функциональные блоки PUT/GET (самый простой вариант) или BSEND/BRECEIVE, выполнил download, и все - полный превед, знай только, контролируй состояние флагов NDR и Error.

Чаще всего оба коммуникационных партнера находятся в одной сети. А что делать, если CPU находятся в разных сетях Profinet? Или, еще круче, один участник обмена подключен к некоему промежуточному узлу по Profinet, а второй - к этому же промежуточному узлу по Profibus. Например, так:

Как организовать обмен между PLC_1 и PLC_2?
Как организовать обмен между PLC_1 и PLC_2?

Необходимо организовать обмен между PLC_1 и PLC_2. Только… напрямую они никак не соединены, зато оба подключены к PLC_3, но по разнородным каналам связи. Ситуация может быть иной, например — PLC_2 подключен к интерфейсу X2 PLC_1, а PLC_3 — к интерфейсу X1 PLC_1, и требуется организовать обмен между PLC_2 и PLC_3.

Задача решается даже проще, чем можно подумать. Нет необходимости программировать PLC_3 в качестве промежуточного звена обмена — достаточно воспользоваться функцией маршрутизации пакетов S7, которая неявно присутствует в TIA Portal'е: как PG пакетов, так и пакетов обмена данными.

Отвлечемся на минуту. Как работает S7 routing для пакетов PG (то есть, для возможности подключаться к ПЛК программатором)? Достаточно создать сетевую конфигурацию устройств и выполнить для каждого CPU прогрузку. После чего функция маршрутизации работает автоматически, нет необходимости размещать PC/PG в сетевой конфигурации, как это требовалось в классическом Step 7. Предположим, программатор подключен к сети PN_IE_1 (по Industrial Ethernet), и есть необходимость подключиться к PLC_1. В этом случае при выходе в online для диагностики или download необходимо указать тип интерфейса PG: PN_IE, сам сетевой интерфейс программатора, а в качестве пути подключения: сеть PN/IE_1 (сеть, к которой подключен программатор).

Подключение к удаленному контроллеру по Profibus через Profinet
Подключение к удаленному контроллеру по Profibus через Profinet
S7 routing работает автоматически
S7 routing работает автоматически

Вернемся к первоначальной задаче — организации связи между PLC_1 и PLC_2 по сконфигурированному S7-соединения с использованием механизма PUT/GET (для упрощения задачи только читаем данные, остальное — дело техники).

  1. Открываем Devices&networks, нажимаем connections, выбираем S7 connection.

  1. Нажимаем левой кнопкой мыши на интерфейс PLC_2 и тащим линию к интерфейсу X3 (profibus) контроллера PLC_1. Нажимаем на «Add S7 routed connection».

  1. Наслаждаемся результатом на вкладке «Connections».

  1. В настройках PLC_1 разрешаем доступ по методу PUT/GET.

Функциональные блоки PUT/GET требуют дополнительного разрешения
Функциональные блоки PUT/GET требуют дополнительного разрешения
  1. Создаем на PLC_1 глобальный блок данных стандартного доступа (в настройках DB снять галочку Optimized block access в обязательном порядке!). В блоке данных создаем необходмые переменные (я создал одну… меньше не было смысла).

Только стандартный доступ, оптимизированный не допускается
Только стандартный доступ, оптимизированный не допускается
  1. Для упрощения жизни копируем созданный DB1 из PLC_1 в PLC_2.

  2. В OB1 PLC_2 создаем следующую гениальную программу:

Гениальная программа
Гениальная программа
Вкладка Configuration FB Get
Вкладка Configuration FB Get
  1. Выполняем прогрузку всех PLC, поднимаем флаг GET_DB.Req для PLC_2, радуемся, довольные собой, уходим в закат.

Блок данных контроллера PLC_1
Блок данных контроллера PLC_1
OB1 контроллера PLC_2
OB1 контроллера PLC_2

Примечание. Обмен по механизму PUT/GET возможен не только для одной «атомарной» величины, но и для структур данных тоже. Максимально допустимый объем передаваемых данных зависит от типа CPU и приведен к онлайн-справке для соответствующих коммуникационных программных блоков.

Рассмотренные выше примеры — это маршрутизация пакетов PG (для подключения программатора, то есть, Step 7) и маршрутизированные соединения для обмена информацией. Есть и третий способ — маршрутизация HMI (OP) соединений. Немного усложняем схему:

Итого видим 3 соединения на 4 устройства (вопрос того, насколько это дичь и зачем она, остается нераскрытым). Обращаю внимание, что сейчас для того, чтобы связать HMI_1 и PLC_3 требуется уже два узла-маршрутизатора. В общем случае вывести информацию на одну панель со всех трех устройств без дополнительного программирования нельзя. Применяя S7 routing — можно. Действуем аналогично, нажимаем на окне Devices & Networks кнопку «Connections», выбираем «HMI Connection».

Соединяем HMI_1 и PLC_2, соединения создается автоматически. Соединяем HMI_1 и PLC_1, а далее PLC_3, в данном случае уже появляется меню Connect to subnet, где выбираем Add S7 routed connection, точно так же, как и ранее.

Все соединения созданы.

Далее вытаскиваем на экран тэги из всех трех контроллеров, компилируем, загружаем, проверяем.

Вся сборка целиком
Вся сборка целиком
Циферки-то обновляются
Циферки-то обновляются

Обращаю внимание, что функция PG-рутинга никуда не делась. Имея физическое подключение только к сети PN_IE_2 сохраняется возможность открыть онлайн, к примеру, контроллер PLC_3.

Tags:
Hubs:
Total votes 5: ↑5 and ↓0 +5
Views 2.1K
Comments 4
Comments Comments 4