Главная » Без рубрики » Сервер Modbus TCP для Siemens S7-1500

Сервер 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

В OB1 добавляется экземпляр функционального блока MB_SERVER
Для начала разместим в OB1 экземпляр функционального блока MB_SERVER (Instructions → Communications → Others → MODBUS TCP)
Экземпляр функционального блока MB_SERVER
Экземпляр функционального блока MB_SERVER

После добавления необходимо настроить три ключевых элемента:

  1. Область регистров хранения (Holding Registers),
  2. Параметры подключения,
  3. Системные переменные экземпляра блока.

Настройка Holding Registers (MB_HOLD_REG).

Для хранения данных Modbus используется область Holding Registers. Её необходимо явно задать через вход MB_HOLD_REG.

Рекомендованный способ:

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

Создание блока данных:

  • создать новый Data Block;
  • отключить опцию «Optimized block access»;
  • создать структуру под регистры;
  • указать соответствие переменных Modbus-адресам.

Важно: каждое слово структуры соответствует одному Holding Register.

Добавляем глобальный блок данных с «неоптимизированным» доступом
Добавляем глобальный блок данных с «неоптимизированным» доступом.
Выбрать «Data block»
Выбрать «Data block»
Вызвать свойства добавленного блока данных
Вызвать свойства добавленного блока данных
Найти в атрибутах блока галочку «Оптимизированный доступ», снять ее
Найти в атрибутах блока галочку «Оптимизированный доступ», снять ее.
Открыть в редакторе блок данных и создать в нем отдельную структуру
Открыть в редакторе блок данных и создать в нем отдельную структуру.
Заполнить поля этой структуры
Заполнить поля этой структуры.
Подать созданную структуру на вход MB_HOLD_REG
Подать созданную структуру на вход MB_HOLD_REG.

Ограничение доступа к входам и выходам.

По умолчанию 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).
Добавление структуры типа TCON_IP_v4
Добавление структуры типа TCON_IP_v4

Назначение интерфейса связи

Поле InterfaceID указывает, через какой сетевой интерфейс работает Modbus.

Обычно используется:

  • X1 (Ethernet порт CPU).

Значение InterfaceID можно:

  • получить из System Constants интерфейса,
  • либо задать вручную в зависимости от конфигурации CPU.
Идентификаторы интерфейсов уже созданы в Step 7 автоматически, необходимо лишь найти нужную переменную
Идентификаторы интерфейсов уже созданы в Step 7 автоматически, необходимо лишь найти нужную переменную.
Можно так же подсмотреть название нужной переменной, зайдя в аппаратную конфигурацию, выбрав нужный интерфейс и вкладку System Constants этого интерфейса
Можно так же посмотреть название нужной переменной, зайдя в аппаратную конфигурацию, выбрав нужный интерфейс и вкладку System Constants этого интерфейса.

Подключение MB_SERVER.

После настройки структуры выполняется подключение:

  • MB_HOLD_REG → структура регистров;
  • CONNECT → TCON_IP_v4;
  • InterfaceID → сетевой интерфейс CPU.

Далее вызывается блок MB_SERVER в OB1.

Далее подаем на вход CONNECT заполненную структуру и получаем следующую программу
Далее подаем на вход CONNECT заполненную структуру и получаем следующую программу:
Компилируем программу, загружаем ее в контроллер и выходим Online:
Компилируем программу, загружаем ее в контроллер и выходим Online:

Системные статусы MB_SERVER.

После загрузки программы контроллер может выдавать статус:

  • 7002 — соединение устанавливается;
  • другие коды указывают на ошибки или состояние обмена.

Расшифровка статусов доступна в справочной системе STEP 7.


Проверка работы через Modbus Client

После запуска сервера можно подключиться любым Modbus TCP клиентом.

Важно учитывать:

  • количество запрашиваемых регистров не должно превышать заданное;
  • несоответствие диапазона вызывает ошибку со стороны сервера.
Дадим переменным ненулевые значения
Дадим переменным ненулевые значения:
В качестве Modbus-клиента можно использовать любой проверенный софт.
В качестве Modbus-клиента можно использовать любой проверенный софт.

Работа с 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 сводится к трём основным шагам:

  1. Настройка MB_SERVER и параметров соединения;
  2. Выделение области Holding Registers;
  3. Ограничение доступа к I/Q при необходимости.

Грамотно настроенный сервер позволяет безопасно интегрировать PLC Siemens в SCADA-системы и сторонние промышленные решения без изменения прикладной логики контроллера.

Menu