Односторонний обмен данными между контроллерами Siemens SIMATIC S7 через PUT/GET без изменения программы второго ПЛК.
Организация обмена данными между PLC Siemens S7-300, S7-400, S7-1200 и S7-1500.
В промышленных системах автоматизации нередко возникает задача организации обмена данными между двумя контроллерами семейства Siemens SIMATIC S7. Стандартно коммуникация между ПЛК строится через конфигурируемые S7-соединения, при которых оба контроллера должны быть настроены и перепрограммированы.
Однако на практике часто возникают ситуации, когда доступ к одному из контроллеров ограничен:
- отсутствует исходный проект PLC;
- оборудование работает на действующем производстве и его нельзя останавливать;
- необходимо подключить новый контроллер к уже работающей системе;
- требуется интеграция с оборудованием серии S7-300 или S7-400.
В подобных случаях используется одностороннее S7-соединение, позволяющее организовать обмен данными с удаленным контроллером без загрузки программы в него.
Что такое одностороннее S7-соединение?
В стандартной конфигурации Siemens TIA Portal или Step7 коммуникация между PLC является двусторонней.
При одностороннем соединении только один контроллер:
- инициирует подключение;
- выполняет чтение данных;
- выполняет запись данных;
- содержит конфигурацию соединения.
Удаленный PLC работает без внесения изменений в существующую программу.
Такой метод работает через системные коммуникационные инструкции:
- GET — чтение данных с удаленного PLC;
- PUT — запись данных в удаленный PLC.
Другие коммуникационные инструкции Siemens требуют настройки на обеих сторонах соединения.
Основные условия работы одностороннего соединения Siemens S7.
Для корректной работы необходимо соблюдать несколько условий:
- Соединение настраивается только на одном PLC. Конфигурация создается только в локальном контроллере, который будет инициатором соединения.
- Соединение должно быть Active. Локальный контроллер выполняет активное подключение к удаленному устройству.
- На стороне удаленного контроллера необходимо использовать системный ресурс соединения с идентификатором 03. Этот ресурс обрабатывается операционной системой CPU Siemens автоматически.
- Используются только инструкции PUT и GET.
Пример схемы обмена между двумя PLC Siemens.
Рассмотрим практический пример.
Удаленный контроллер:
В качестве удаленного устройства используется PLC семейства S7-300, известны только параметры подключения:
IP-адрес:
192.168.43.4
Доступные области памяти:
DB1.DBD0
DB1.DBD4
DB1.DBD8
Локальный контроллер:
В роли активного контроллера используется Siemens SIMATIC S7-1500, локальный PLC полностью доступен для настройки и программирования.
Создание блока данных для приема информации
Перед началом обмена необходимо создать локальный Data Block, например DB13.

Этот блок будет хранить данные, считанные с удаленного PLC. Важно учитывать, что при использовании PUT/GET блок данных должен работать в режиме стандартного доступа.

Настройка S7 Connection в TIA Portal
В проекте необходимо открыть раздел:
Devices & Networks

После этого:
- Выбрать пункт Connections
- Создать новое соединение типа:
S7 Connection


- Указать сетевой интерфейс CPU.
Например:
X1


При создании соединения система назначает параметр:
Local ID = 0x100
Этот идентификатор потребуется при вызове блока GET или PUT.
Параметры удаленного контроллера
В настройках соединения необходимо указать IP-адрес удаленного устройства:
192.168.43.4

Далее задаются параметры CPU:
Rack: 0
Slot: 2
Connection Resource: 03

Для большинства контроллеров Siemens серии S7-300 и S7-400 используются именно значения:
Rack 0 / Slot 2
Использование блока GET для чтения данных

Для чтения информации используется системный функциональный блок GET.
Основные параметры блока:
REQ
Логический сигнал запуска запроса. Команда выполняется только по положительному фронту сигнала.
ID
Идентификатор соединения.
Пример:
0x100
ADDR_1
Удаленный адрес памяти PLC, используется указатель типа ANY.
RD_1
Локальная область памяти для сохранения данных.

Также рекомендуется использовать формат ANY.
Формат указателя ANY в Siemens
Для чтения переменной REAL по адресу:
DB1.DBD0
Используется указатель:
P#DB1.DBX0.0 BYTE 4
Расшифровка:
- P# — указатель;
- DB1 — номер блока данных;
- DBX0.0 — смещение внутри блока;
- BYTE 4 — количество считываемых байтов.
Чтение одной переменной.
Если требуется считать одно значение REAL из удаленного PLC:
Удаленный адрес:
P#DB1.DBX0.0 BYTE 4
Локальный адрес:
P#DB13.DBX0.0 BYTE 4
После выполнения GET данные будут записаны в локальный Data Block.

Чтение нескольких переменных одновременно
Если необходимо считать три переменные:
DB1.DBD0
DB1.DBD4
DB1.DBD8
достаточно изменить длину блока.
Пример:
P#DB1.DBX0.0 BYTE 12
Локальный буфер:
P#DB13.DBX0.0 BYTE 12
В результате контроллер считает сразу три значения REAL.


Контроль состояния соединения
После выполнения GET рекомендуется контролировать системные выходы блока.
NDR
Новые данные успешно получены.
ERROR
Возникла ошибка передачи.
STATUS
Код состояния или код ошибки.
Следует учитывать, что эти сигналы активны только один цикл выполнения программы, поэтому обычно их сохраняют в отдельные переменные диагностики.
Использование блока PUT для записи данных.
Для передачи данных в удаленный контроллер используется инструкция PUT, принцип работы аналогичен GET.
Локальный PLC передает содержимое своей памяти в область памяти удаленного контроллера.
Пример записи значения в:
DB1.DBD0
Передаваемое значение берется из локального блока:
DB13



Особенности использования PUT и GET
При работе с инструкциями Siemens рекомендуется использовать указатели типа ANY. Практика показывает, что символьная адресация может корректно работать для GET, но вызывать ошибки при использовании PUT. Наиболее стабильный вариант — работа через абсолютные адреса памяти.
Пример:
P#DB13.DBX0.0 BYTE 4
Ограничения передачи данных.
Максимальный объем передаваемой информации зависит от модели CPU. Для контроллеров серии Siemens SIMATIC S7-300 максимальный размер одного пакета обычно ограничен 160 байтами. Точное значение зависит от конкретной модели центрального процессора.
Важное ограничение для S7-1200 и S7-1500.
Для контроллеров современных серий Siemens SIMATIC S7-1200, Siemens SIMATIC S7-1500 доступ через PUT/GET по умолчанию заблокирован. Для разрешения обмена необходимо активировать соответствующий параметр в настройках CPU:
Permit access with PUT/GET communication
Без включения этого параметра удаленный доступ к памяти контроллера будет недоступен.
Итог.
Односторонний обмен данными между PLC Siemens позволяет организовать связь между контроллерами без изменения программы второго устройства. Такой метод особенно полезен при модернизации существующих систем автоматизации, подключении нового оборудования к старым PLC и интеграции оборудования без доступа к исходному проекту. Основой реализации являются стандартные коммуникационные инструкции Siemens:
- GET — чтение данных;
- PUT — запись данных.
Метод поддерживается большинством контроллеров семейства SIMATIC S7 и широко применяется в промышленных сетях автоматизации.