Главная » Руководства » Маршрутизируемые S7-коммуникации в Simatic S7‑1200/1500: обмен через Profinet и Profibus без лишнего кода

Маршрутизируемые S7-коммуникации в Simatic S7‑1200/1500: обмен через Profinet и Profibus без лишнего кода

Время чтения: 15 минут
Сложность: Средняя
Применяемое ПО: TIA Portal (начиная с V13)
Оборудование: Simatic S7‑1200, S7‑1500, панели HMI, сети Profinet и Profibus


Содержание

  1. Проблема: обмен данными между контроллерами в разных сетях
  2. Что такое S7-маршрутизация (Routing)
    • Маршрутизация PG-пакетов (программатор)
    • Маршрутизация S7-соединений (обмен данными)
    • Маршрутизация HMI-соединений (визуализация)
  3. Условия для работы маршрутизации
  4. Сценарий 1: маршрутизация PG (подключение программатора к удалённому ПЛК)
  5. Сценарий 2: обмен данными между PLC_1 и PLC_2 через PLC_3 (Profinet ↔ Profibus)
    • Шаг 1. Создание маршрутизированного S7-соединения
    • Шаг 2. Разрешение PUT/GET на целевом контроллере
    • Шаг 3. Создание неоптимизированного блока данных (DB)
    • Шаг 4. Программирование функции GET на стороне клиента
    • Шаг 5. Загрузка и проверка
  6. Сценарий 3: маршрутизация HMI-соединений (одна панель — три контроллера)
    • Создание HMI-соединений с маршрутизацией
    • Привязка тегов на панели
  7. Типичные ошибки и способы их устранения
    • Оптимизированный доступ в DB
    • Не разрешён PUT/GET
    • Неправильный выбор интерфейса при создании соединения
  8. Заключение: возможности и ограничения маршрутизации

1. Проблема: обмен данными между контроллерами в разных сетях

В классических проектах S7-коммуникация (через PUT/GET, BSEND/BRECEIVE или S7-connection) настраивается между двумя контроллерами, находящимися в одной физической сети (например, оба в Profinet, оба в Profibus). Однако на практике часто встречаются конфигурации, где:

  • Контроллеры подключены к разным интерфейсам одного промежуточного ПЛК (например, PLC_1 на Profinet, PLC_2 на Profibus, а PLC_3 соединяет их).
  • Требуется организовать обмен между PLC_1 и PLC_2, но напрямую они не связаны.
  • Необходимо, чтобы одна панель HMI отображала данные с трёх контроллеров, разнесённых по разным сетям.

Классическое решение — запрограммировать промежуточный контроллер (PLC_3) как ретранслятор: принять данные от PLC_1, сохранить, переслать в PLC_2. Это требует дополнительного кода, памяти и времени разработки.

Альтернатива, предлагаемая Siemens — использовать встроенную маршрутизацию S7-пакетов. Она работает на уровне операционной системы контроллера и не требует программирования ретрансляции.

Встроенная маршрутизация S7-пакетов
Встроенная маршрутизация S7-пакетов

2. Что такое S7-маршрутизация (Routing)

S7-маршрутизация — это способность контроллера Siemens перенаправлять пакеты между своими сетевыми интерфейсами (Profinet, Profibus, MPI, Industrial Ethernet) без участия пользовательской программы.

Существует три типа маршрутизации в TIA Portal:

ТипНазначениеПример
PG‑маршрутизацияПодключение программатора (Step 7, TIA Portal) к контроллеру, находящемуся в другой подсетиPG на Profinet, PLC на Profibus
S7‑соединения (обмен данными)Прямой обмен между двумя контроллерами через один или несколько промежуточных узловPLC_1 (Profinet) ↔ PLC_2 (Profibus) через PLC_3
HMI‑маршрутизацияПодключение панели оператора к нескольким контроллерам в разных сетях через один узелHMI на Profinet, PLC_2 на Profinet, PLC_3 на Profibus

Все типы настраиваются в TIA Portal через графический редактор Networks — без написания кода ретрансляции.


3. Условия для работы маршрутизации

Чтобы маршрутизация работала, необходимо:

  1. Все устройства должны быть в одном проекте TIA Portal с корректно заданной топологией сетей.
  2. Для каждого контроллера должна быть выполнена загрузка конфигурации (Download) — при этом в контроллер записываются таблицы маршрутизации.
  3. Промежуточные контроллеры должны быть включены и иметь работающие интерфейсы.
  4. Для S7-соединений с PUT/GET необходимо разрешить доступ по PUT/GET в свойствах CPU (см. раздел 5.2).
  5. Блоки данных, участвующие в обмене, должны иметь неоптимизированный доступ (снять галочку «Optimized block access»).

4. Сценарий 1: маршрутизация PG (подключение программатора к удалённому ПЛК)

Маршрутизация PG (подключение программатора к удалённому ПЛК)
Маршрутизация PG (подключение программатора к удалённому ПЛК)

Самый простой пример. Предположим, программатор (PG) подключён к сети PN_IE_1 (Profinet), а целевой контроллер PLC_1 подключён к сети PN_IE_2 (другой Profinet) через промежуточный маршрутизатор (например, PLC_3). TIA Portal позволяет подключиться к PLC_1, не меняя физического подключения кабеля.

Маршрутизация PG (подключение программатора к удалённому ПЛК через промежуточный ПЛК)
Маршрутизация PG (подключение программатора к удалённому ПЛК через промежуточный ПЛК)

Настройка:

  1. Постройте в TIA Portal сетевую топологию: PG → сеть PN_IE_1 → PLC_3 (два интерфейса) → сеть PN_IE_2 → PLC_1.
  2. Загрузите конфигурацию во все ПЛК.
  3. В TIA Portal при попытке подключиться к PLC_1 выберите:
    • Тип интерфейса PG: PN/IE
    • Сетевой интерфейс ПК: (выберите активный адаптер)
    • Путь подключения: укажите сеть PN_IE_1 (ту, к которой физически подключен PG).
  4. TIA Portal автоматически использует маршрутизацию через PLC_3.

Никаких дополнительных действий в программе не требуется.


5. Сценарий 2: обмен данными между PLC_1 и PLC_2 через PLC_3 (Profinet ↔ Profibus)

Обмен данными между PLC_1 и PLC_2 через PLC_3 (Profinet ↔ Profibus)
Обмен данными между PLC_1 и PLC_2 через PLC_3 (Profinet ↔ Profibus)

Исходные данные:

  • PLC_1 подключён к интерфейсу Profinet (PN/IE) промежуточного контроллера PLC_3.
  • PLC_2 подключён к интерфейсу Profibus (DP) того же PLC_3.
  • Требуется настроить S7-соединение между PLC_1 и PLC_2 для чтения данных (через PUT/GET).

5.1. Шаг 1. Создание маршрутизированного S7-соединения

Создание маршрутизированного S7-соединения
Создание маршрутизированного S7-соединения
  1. Откройте Devices & Networks → вкладка Network.
  2. Нажмите кнопку Connections (или перейдите в режим редактирования соединений).
  3. Выберите тип S7 connection.
  4. Кликните левой кнопкой мыши на интерфейсе PLC_2 (например, Profinet или Profibus — тот, который физически подключён к PLC_3) и, не отпуская кнопку, перетащите линию к интерфейсу PLC_3, который ведёт к PLC_1 (например, интерфейс X3 для Profibus или X1 для Profinet).
  5. В появившемся меню выберите Add S7 routed connection.
Настройка S7 routed connection
Настройка S7 routed connection

TIA Portal автоматически создаст соединение, в котором будет указан маршрут через PLC_3.

5.2. Шаг 2. Разрешение PUT/GET на целевом контроллере

Для того чтобы PLC_1 (или PLC_2) мог использовать функции PUT/GET, необходимо в свойствах каждого участвующего CPU разрешить этот механизм.

  1. В дереве проекта выберите CPU (например, PLC_1).
  2. Откройте Properties → Protection & Security → Connection mechanisms.
  3. Поставьте галочку «Permit access with PUT/GET communication from remote partner».
  4. Повторите для PLC_2.
Разрешение PUT/GET на целевом контроллере
Разрешение PUT/GET на целевом контроллере

5.3. Шаг 3. Создание неоптимизированного блока данных (DB)

Важно: DB, к которому обращается GET/PUT, не должен иметь оптимизированный доступ.

  1. Создайте глобальный блок данных, например, DB1.
  2. Откройте его свойства → Attributes → снимите галочку Optimized block access.
  3. Создайте переменные (например, массив, структуру или просто один элемент типа REAL/INT/WORD).
  4. При желании скопируйте этот DB из PLC_1 в PLC_2 (чтобы структура совпадала).
Создание неоптимизированного блока данных (DB)
Создание неоптимизированного блока данных (DB)

5.4. Шаг 4. Программирование функции GET на стороне клиента

Допустим, PLC_2 будет читать данные из DB1 PLC_1.

В OB1 PLC_2 добавьте вызов блока GET (из библиотеки Communication → S7 Communication).

Параметры настройки:

ПараметрЗначениеПояснение
REQ(флаг, например M0.0)Подайте TRUE для непрерывного чтения
ID(идентификатор из созданного соединения)Указывается в свойствах соединения (например, W#16#1)
ADDR_1P#DB1.DBX0.0 BYTE <длина>Адрес в удалённом PLC (PLC_1)
RD_1P#DB1.DBX0.0 BYTE <длина>Адрес в локальном PLC (PLC_2)

Пример для SCL:

scl

CALL "GET" (
   REQ    := true,
   ID     := W#16#1,
   DONE   => #doneFlag,
   ERROR  => #errorFlag,
   STATUS => #statusWord,
   ADDR_1 := P#DB1.DBX0.0 INT 1,
   RD_1   := P#DB1.DBX0.0 INT 1
);

5.5. Шаг 5. Загрузка и проверка

  • Загрузите конфигурацию и программу во все три контроллера (PLC_1, PLC_2, PLC_3). Это важно, потому что таблицы маршрутизации загружаются в каждый CPU.
  • Установите флаг REQ в TRUE.
  • Наблюдайте, как значение из DB1 PLC_1 появляется в DB1 PLC_2.

6. Сценарий 3: маршрутизация HMI-соединений (одна панель — три контроллера)

Задача: панель HMI подключена к сети PN_IE_2 (Profinet), где находятся PLC_2 и PLC_3. Однако PLC_1 находится в другой сети (PN_IE_1), доступ к которой возможен только через PLC_2 или PLC_3. Требуется отображать данные на HMI со всех трёх контроллеров.

Маршрутизация HMI-соединений
Маршрутизация HMI-соединений

6.1. Создание HMI-соединений с маршрутизацией

  1. В Devices & Networks переключитесь в режим Connections.
  2. Выберите тип HMI Connection.
  3. Сначала создайте прямое соединение между HMI_1 и PLC_2 (доступно в одной сети). TIA Portal создаст его автоматически.
  4. Затем создайте соединение между HMI_1 и PLC_3. Оно тоже будет прямым (если HMI_1 и PLC_3 в одной сети).
  5. Наконец, создайте соединение между HMI_1 и PLC_1:
    • Кликните на интерфейсе HMI_1 (или на линии) и перетащите к интерфейсу PLC_1.
    • Появится меню Connect to subnet → выберите Add S7 routed connection.
    • TIA Portal предложит выбрать маршрут (например, через PLC_2 или PLC_3). Подтвердите.
Соединение между HMI_1 и PLC_3
Соединение между HMI_1 и PLC_3

В результате в таблице соединений появятся три HMI-соединения, одно из которых — маршрутизированное.

Создание HMI-соединений с маршрутизацией
Создание HMI-соединений с маршрутизацией

6.2. Привязка тегов на панели

  1. В редакторе HMI создайте теги, выбрав для каждого нужное соединение (HMI_1 ↔ PLC_1, HMI_1 ↔ PLC_2, HMI_1 ↔ PLC_3).
  2. Выведите их на экран (например, числовые поля).
  3. Загрузите проект в HMI и во все контроллеры.

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


7. Типичные ошибки и способы их устранения

7.1. Ошибка: «Optimized block access» для DB в PUT/GET

Симптом: Блок GET/PUT возвращает ошибку, данные не передаются.
Причина: Блок данных, на который указывает ADDR_1 или RD_1, имеет оптимизированный доступ.
Решение: Откройте свойства DB → снимите галочку «Optimized block access» → перекомпилируйте и загрузите DB.

7.2. Ошибка: PUT/GET не разрешён на целевом CPU

Симптом: Функция GET возвращает ошибку 0x83 (или подобную), STATUS указывает на отказ в доступе.
Решение: В свойствах CPU → Protection & Security → Connection mechanisms → включите «Permit access with PUT/GET communication from remote partner».

7.3. Ошибка: S7-соединение не устанавливается (красная линия)

Симптом: В онлайн-режиме соединение подсвечивается красным.
Причина: Не загружена конфигурация во все промежуточные контроллеры, или неверно выбран интерфейс при создании соединения.
Решение:

  • Убедитесь, что загрузка выполнена для всех узлов (PLC_1, PLC_2, PLC_3).
  • При создании соединения тяните линию от конечного устройства (PLC_2) к интерфейсу маршрутизатора (PLC_3), который ведёт к другому конечному устройству.

7.4. Ошибка: HMI не видит теги удалённого контроллера

Симптом: При попытке добавить тег из PLC_1 через маршрутизацию список переменных пуст.
Решение:

  • Проверьте, что для HMI-соединения выбран тип «Add S7 routed connection».
  • Убедитесь, что все контроллеры имеют загруженную конфигурацию и включены.
  • В свойствах HMI-соединения проверьте, что указан правильный маршрут (например, через PLC_2).

8. Заключение: возможности и ограничения маршрутизации

S7-маршрутизация — мощный механизм, позволяющий существенно упростить проекты с распределённой сетевой топологией. Она особенно полезна при модернизации, когда новые контроллеры (Profinet) добавляются к существующей Profibus-линии.

Преимущества:

  • Не требует написания кода ретрансляции.
  • Прозрачна для программиста (работает на уровне операционной системы).
  • Поддерживает все типы соединений: PG, S7, HMI.
  • Работает как для S7-1200, так и для S7-1500.

Ограничения:

  • Маршрутизация возможна только через контроллеры Siemens (S7-300, S7-400, S7-1200, S7-1500) с поддержкой нескольких интерфейсов.
  • Необходимо загружать конфигурацию во все промежуточные узлы.
  • Блоки данных для PUT/GET должны быть неоптимизированными.

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

Menu