Передача данных с одного ПЛК на несколько Alpha.Server одновременно
Разбираем, почему при классической настройке один Alpha.Server может забрать весь поток данных с ПЛК, и как правильно организовать параллельный сбор: через изоляцию сетей, шлюз данных или Alpha.AccessPoint.
Почему возникает потеря потока данных
При классической настройке проекта в Alpha.DevStudio все серверы и ПЛК часто объединяются в одну общую логическую сеть через элемент Сеть Ethernet. Такая схема выглядит простой, но на практике может привести к потере данных на части серверов.
Причина в ограничениях конкретных контроллеров. Аппаратная и программная архитектура некоторых ПЛК устроена так, что по одному физическому коммуникационному порту они способны передавать строго один поток данных одному получателю.
Ключевой риск: первый подключившийся Alpha.Server забирает на себя поток данных, а второй и последующие серверы данные не получают.
Для решения этой задачи в Альфа платформе предусмотрено несколько архитектурных и программных механизмов. Выбор подхода зависит от возможностей ПЛК, сетевой топологии и того, кто именно должен получать данные: серверы ввода-вывода или клиентские АРМы операторов.
Три способа организации обмена
Изоляция сетей
Подходит, когда нужно организовать прямой параллельный опрос ПЛК несколькими Alpha.Server и контроллер способен работать с такой логической схемой.
Шлюз данных
Используется, если ПЛК не стоит нагружать несколькими прямыми подключениями или компоненты находятся в разных физических сетях.
Alpha.AccessPoint
Оптимален для клиентских АРМов операторов, когда не требуется устанавливать полноценный Alpha.Server на каждое рабочее место.
Способ 1: изоляция сетей и дублирование адаптеров
Чтобы обойти аппаратное ограничение ПЛК и обеспечить параллельный сбор данных напрямую, применяется разделение потоков через дублирование сетей и адаптеров.
В Alpha.DevStudio логические адаптеры с одинаковым IP-адресом, подключенные к разным сетям, не вызывают конфликтов при компиляции. За счет этого для каждого сервера-получателя создается собственный выделенный логический канал связи до одного и того же физического ПЛК.
Обмен данными в примере настраивается через коммуникационные модули Опросчик Modbus TCP со стороны сервера и Станция Modbus TCP со стороны ПЛК.
Шаг 1. Создание независимых сетей в Alpha.Domain
Вместо единой сети необходимо создать отдельные изолированные маршруты для каждого АРМа.
- Перейдите в узел проекта Alpha.Domain и добавьте несколько независимых элементов Сеть Ethernet, например Ethernet1 и Ethernet2.
- В узле первого АРМа, ARM1, настройте сетевой адаптер и подключите его строго к сети Ethernet1.
- В узле второго АРМа, ARM2, настройте адаптер и подключите его строго к сети Ethernet2.
Шаг 2. Настройка адаптеров на стороне ПЛК
Далее нужно сымитировать наличие нескольких независимых интерфейсов у самого контроллера.
- Перейдите в конфигурацию узла ПЛК, модуль ЦП, и добавьте несколько элементов Адаптер Ethernet, например Eth1 и Eth2.
- Подключите адаптер Eth1 к сети Ethernet1, а Eth2 — к Ethernet2.
- В свойствах всех адаптеров укажите одинаковый IP-адрес физического ПЛК, например 172.16.145.57.
Важно: одинаковые IP-адреса допустимы именно потому, что Eth1 и Eth2 подключены к разным изолированным сетям. В такой конфигурации Alpha.DevStudio пропустит проект при компиляции без ошибки конфликта IP.

Схема топологии в Alpha.Domain
В проекте контроллер N1 связывается с изолированными сетями Ethernet1 и Ethernet2 через отдельные логические адаптеры.
Шаг 3. Привязка логических станций к адаптерам
- Перейдите в элемент Приложение внутри контроллера.
- Добавьте общую Карту адресов Modbus, на которую будут ссылаться станции.
- Создайте несколько логических станций Станция Modbus TCP, например ModbusTcpSlave_503 и ModbusTcpSlave_504.
- В свойствах станций укажите единую карту адресов.
- Привяжите первую станцию к адаптеру Eth1, а вторую станцию — к адаптеру Eth2.

Окно конфигурации модуля ЦП
В конфигурации модуля ЦП станции Modbus графически привязываются к адаптерам Eth1 и Eth2.
Результат настройки
После компиляции проекта в обработчике опроса Опросчик Modbus TCP на ARM1 будет доступна только станция ModbusTcpSlave_503, а на ARM2 — только Modуль ModbusTcpSlave_504.
Каждый Alpha.Server установит собственную независимую сессию с контроллером, что позволяет избежать ситуации, когда один сервер забирает весь поток данных.
Способ 2: использование шлюза данных
Если ПЛК аппаратно слаб, не способен поддерживать изолированные логические сессии или компоненты расположены в разных физических сетях, прямое подключение нескольких серверов к контроллеру не рекомендуется.
В этом случае используется паттерн маршрутизации через шлюз. На компьютер, подключенный к сети ПЛК, добавляется Alpha.Server, который выступает в роли шлюза данных, или Proxy.
Источник данных
ПЛК передает один поток данных на главный Alpha.Server, подключенный к сети контроллера.
Шлюз данных
Промежуточный Alpha.Server принимает поток от ПЛК и становится точкой маршрутизации.
Получатели данных
Остальные серверы настраиваются на опрос не ПЛК, а промежуточного Alpha.Server.
Для настройки в Alpha.DevStudio серверам-получателям добавляется логический адаптер и ссылка на приложение источника. В качестве шлюза выбирается промежуточный Alpha.Server.
Практический смысл шлюза: ПЛК обслуживает только одно подключение, а распределение данных между получателями берет на себя серверный уровень.
Способ 3: применение Alpha.AccessPoint
Если под несколькими серверами фактически подразумеваются клиентские АРМы операторов, установка полноценного Alpha.Server на каждый АРМ с прямым опросом ПЛК является избыточной и архитектурно неоптимальной.
Для таких задач в Альфа платформе предусмотрен компонент Alpha.AccessPoint. Он выполняет роль сервера приложений и межуровневого транспорта, ограничивая нагрузку от множества клиентов при прямых подключениях к серверам ввода-вывода.
Схема реализации
- На нижнем уровне устанавливается один Alpha.Server или резервируемая пара Alpha.Server, которые опрашивают ПЛК.
- На АРМах операторов устанавливаются компоненты Alpha.AccessPoint.
- Alpha.AccessPoint подключается к Alpha.Server по внутреннему протоколу на базе TCP/IP — Alpha.Link.
- Компонент объединяет адресное пространство серверов и предоставляет единую точку доступа для клиентских приложений Alpha.HMI и Alpha.Trends.
Подробнее компонент описан в документации: «Альфа платформа (ред. 26) > Alpha.AccessPoint».
Категоризация данных и защита ПЛК
Независимо от выбранного способа Alpha.DevStudio предоставляет дополнительные инструменты защиты контроллеров от перегрузок и разделения потоков.
Логическое разделение потоков
Потоки данных можно разделять не только по разным физическим серверам, но и логически внутри одного соединения. Механизм категоризации позволяет распределить параметры одного ПЛК, например «Давление» и «Температура», по разным группам.
Для этого к сигналам добавляется атрибут Категория данных. После этого группы можно направлять через разные логические адаптеры — коммуникационные модули, которые выступают в роли опросчиков или клиентов.
Такой подход позволяет назначать разные периоды опроса, реже считывать некритичные параметры и снижать нагрузку на ПЛК.
Подробности приведены в документации: «Alpha.DevStudio 4.1 (ред. 2. Предварительная) > Руководство пользователя > Разработка проекта > Разделение потоков данных».
Настройка очередей в Modbus TCP Master
При работе с ПЛК важно корректно настроить параметры опросчика Modbus TCP Master на сервере.
Одновременные запросы
Параметр определяет число запросов на чтение или запись к устройству по одному каналу. Значение по умолчанию — 5. Снижение параметра помогает защитить слабый ПЛК от DDoS-эффекта со стороны сервера.
Очередь приема данных
Максимальный размер очереди защищает сервер. При достижении лимита, по умолчанию 100 000 значений, опрос станций приостанавливается для обработки накопленного буфера.
Таймаут ответа
Время ожидания ответа от станции по умолчанию составляет 1000 мс. Если ПЛК не успевает отвечать, этот таймаут следует увеличить.
Вывод
Передача данных с одного ПЛК на несколько Alpha.Server требует учета ограничений контроллера и правильного выбора архитектуры обмена.
Если ПЛК допускает логическое разделение сессий, можно использовать изоляцию сетей и дублирование адаптеров. Если контроллер слабый или сеть сложная, надежнее применить шлюз данных. Для клиентских АРМов операторов оптимальным решением обычно становится Alpha.AccessPoint.
Главный принцип: не увеличивать нагрузку на ПЛК без необходимости. Потоки данных лучше разделять на уровне архитектуры Alpha.DevStudio, шлюзов и клиентского доступа, а параметры Modbus TCP Master настраивать с учетом производительности контроллера.
FAQ
Почему второй Alpha.Server не получает данные от ПЛК?
Чаще всего причина в ограничении ПЛК: по одному физическому коммуникационному порту он может передавать один поток данных одному получателю. Первый подключившийся сервер забирает поток на себя.
Можно ли использовать одинаковый IP-адрес ПЛК в нескольких адаптерах?
Да, если логические адаптеры подключены к разным изолированным сетям в Alpha.DevStudio. В такой конфигурации одинаковые IP-адреса не вызывают конфликта при компиляции.
Когда лучше использовать шлюз данных?
Шлюз данных подходит, когда ПЛК аппаратно слаб, не поддерживает несколько логических сессий или серверы находятся в разных физических сетях. В этом случае ПЛК опрашивает один Alpha.Server, а остальные получают данные через него.
Чем Alpha.AccessPoint отличается от установки Alpha.Server на каждый АРМ?
Alpha.AccessPoint предназначен для клиентских АРМов и снижает нагрузку от множества подключений. Он предоставляет единую точку доступа к адресному пространству серверов без прямого опроса ПЛК каждым рабочим местом.
Какие параметры Modbus TCP Master важны для защиты ПЛК?
Важно настроить максимальное количество одновременных запросов, размер очереди приема данных и время ожидания ответа от станции. Эти параметры помогают снизить нагрузку на ПЛК и стабилизировать обмен.

