Сервер Modbus TCP для Siemens S7-1500
Modbus TCP — один из наиболее распространённых промышленных протоколов обмена данными. Он работает поверх стека TCP/IP и используется для организации взаимодействия между контроллерами, SCADA-системами и другим промышленным оборудованием.
Протокол Modbus появился ещё в 1979 году и изначально был рассчитан на последовательные интерфейсы (Modbus RTU). Позднее был адаптирован под Ethernet и получил реализацию Modbus TCP.
В этой статье рассматривается настройка Modbus TCP Server на контроллерах Siemens S7-1200 и S7-1500 с использованием стандартного функционального блока MB_SERVER.
Принцип работы Modbus TCP Server.
Modbus TCP Server в Siemens выполняет роль ведомого устройства (Slave). Он не инициирует обмен, а отвечает на запросы клиентов.
Ключевая особенность:
- сервер только обрабатывает входящие запросы;
- инициатором всегда выступает Modbus Client (Master).
Это важно учитывать при проектировании архитектуры обмена.
Настройка MB_SERVER в STEP 7.
В качестве примера используется CPU S7-1513 (прошивка 2.6). Для S7-1200 настройка выполняется аналогично.
В OB1 добавляется экземпляр функционального блока MB_SERVER:
Instructions → Communications → Others → MODBUS TCP → MB_SERVER


После добавления необходимо настроить три ключевых элемента:
- Область регистров хранения (Holding Registers),
- Параметры подключения,
- Системные переменные экземпляра блока.
Настройка Holding Registers (MB_HOLD_REG).
Для хранения данных Modbus используется область Holding Registers. Её необходимо явно задать через вход MB_HOLD_REG.
Рекомендованный способ:
На практике наиболее стабильным решением является использование глобального DB с не оптимизированным доступом.
Создание блока данных:
- создать новый Data Block;
- отключить опцию «Optimized block access»;
- создать структуру под регистры;
- указать соответствие переменных Modbus-адресам.
Важно: каждое слово структуры соответствует одному Holding Register.







Ограничение доступа к входам и выходам.
По умолчанию Modbus может получать доступ к:
- входам (%I),
- выходам (%Q),
- внутренним данным.
Это может быть нежелательно с точки зрения безопасности и архитектуры управления.
В блоке MB_SERVER доступны параметры:
- IB_Count,
- QB_Count,
- IB_Read_Count,
- QB_Read_Count.
Если установить их в 0, доступ к входам и выходам через Modbus будет полностью запрещён.
Параметры подключения (TCON_IP_v4).
Для работы MB_SERVER требуется структура подключения TCON_IP_v4.
Основные параметры:
- ID — уникальный идентификатор соединения (1–4096);
- ConnectionType — 11 (TCP);
- ActiveEstablished — FALSE (сервер не инициирует соединение);
- RemoteAddress — 0.0.0.0 (доступ разрешён всем клиентам) или конкретный IP;
- RemotePort — 0 (без ограничения);
- LocalPort — 502 (стандартный порт Modbus TCP).

Назначение интерфейса связи
Поле InterfaceID указывает, через какой сетевой интерфейс работает Modbus.
Обычно используется:
- X1 (Ethernet порт CPU).
Значение InterfaceID можно:
- получить из System Constants интерфейса,
- либо задать вручную в зависимости от конфигурации CPU.


Подключение MB_SERVER.
После настройки структуры выполняется подключение:
- MB_HOLD_REG → структура регистров;
- CONNECT → TCON_IP_v4;
- InterfaceID → сетевой интерфейс CPU.
Далее вызывается блок MB_SERVER в OB1.


Системные статусы MB_SERVER.
После загрузки программы контроллер может выдавать статус:
- 7002 — соединение устанавливается;
- другие коды указывают на ошибки или состояние обмена.
Расшифровка статусов доступна в справочной системе STEP 7.
Проверка работы через Modbus Client
После запуска сервера можно подключиться любым Modbus TCP клиентом.
Важно учитывать:
- количество запрашиваемых регистров не должно превышать заданное;
- несоответствие диапазона вызывает ошибку со стороны сервера.


Работа с Coil и дискретными сигналами:
В Modbus:
- Coils соответствуют выходам (%Q),
- Discrete Inputs соответствуют входам (%I).
При стандартной конфигурации клиент может:
- читать состояния входов и выходов,
- изменять выходные сигналы.
Ограничение управления выходами:
Для защиты логики управления рекомендуется:
- отключить доступ к QB-области через параметры блока;
- оставить управление выходами только внутри программы PLC.
После отключения записи клиент Modbus получает ошибку доступа (Illegal Data Address).
Важные особенности MB_HOLD_REG:
Типичные ошибки при настройке:
- использование оптимизированного DB (может вызвать ошибку указателя);
- неправильный размер области памяти;
- несоответствие типов данных.
Поддерживаемые варианты:
- глобальный DB с не оптимизированным доступом;
- массив WORD;
- меркерная область (M memory).
Итог:
Настройка Modbus TCP Server в Siemens S7-1200 / S7-1500 сводится к трём основным шагам:
- Настройка MB_SERVER и параметров соединения;
- Выделение области Holding Registers;
- Ограничение доступа к I/Q при необходимости.
Грамотно настроенный сервер позволяет безопасно интегрировать PLC Siemens в SCADA-системы и сторонние промышленные решения без изменения прикладной логики контроллера.