Преобразование протоколов Modbus

Автор Сообщение
#1 / 16.06.2018 16:07
admin

Протокол Modbus, базирующийся на архитектуре ведущий-ведомый, получил широкое распространение в промышленной автоматизации. Существует два основных формата: Modbus RTU и его модифицированная версия — Modbus TCP. Функционал обоих протоколов одинаков, основные же различия между ними заключаются в следующем:

  • Протокол Modbus RTU использует последовательные линии связи (RS-232 или RS-485), в то время как Modbus TCP работает в сетях Ethernet.
  • Пакет данных протокола Modbus TCP применяет дополнительный заголовок для TCP-соединения.

Рассмотрим несколько ситуаций, которые могут возникнуть при преобразовании протоколов Modbus.

Ситуация № 1

На рынке есть много производителей SCADA с разными возможностями поддержки драйверов Modbus. Если вы сомневаетесь, нужен ли вам специальный преобразователь протоколов или достаточно иметь сервер последовательных устройств, прежде всего необходимо определить, какой драйвер Modbus на хосте SCADA вы хотите использовать.

Существует четыре возможных варианта:

  • хост SCADA с драйвером Modbus TCP
  • хост SCADA с драйвером Modbus RTU — со встроенным последовательным портом
  • хост SCADA с драйвером Modbus RTU — без встроенного последовательного порта
  • хост SCADA с драйвером «Инкапсуляция Ethernet»

Хост SCADA с драйвером Modbus TCP

Для данного варианта необходим преобразователь протоколов. Можно воспользоваться протоколом Modbus TCP для связи с устройствами Modbus RTU через шлюз. На рынке устройств автоматизации доступно много шлюзов Modbus, которые обеспечивают подключение через Modbus TCP для ведомых устройств Modbus TCP. Когда шлюз получает запрос Modbus TCP, он преобразует пакет в Modbus RTU и немедленно посылает его к устройствам Modbus RTU.

 

Хост SCADA с драйвером Modbus RTU — со встроенным последовательным портом

Этот вариант подходит, если требуется просто подключить имеющийся хост SCADA и устройства Modbus RTU к сети Ethernet. Если хост SCADA оборудован последовательным портом, то с помощью пары шлюзов не трудно решить данную проблему. Как показано на схеме сети, шлюз может преобразовывать пакет Modbus RTU в Modbus TCP и обратно. Если встроенный последовательный порт отсутствует, такое решение не подходит и следует воспользоваться вариантом 3.

 

Хост SCADA с драйвером Modbus RTU — без встроенного последовательного порта

Если вам постоянно необходимы имеющиеся программы и устройства SCADA, но ваш хост SCADA не оснащен последовательным портом, используйте сервер последовательных устройств для создания виртуального COM-порта. Таким образом можно получить доступ к удаленным последовательным устройствам через сервер, причем функциональность будет соответствовать нативному COM-порту.

Для создания «виртуального COM-порта» сервер последовательных устройств установит драйвер виртуального COM-порта на ваш хост SCADA. Чтобы активировать этот порт, установите сервер последовательных устройств в режим виртуального COM-порта. Все данные, передаваемые через него, будут отправляться на удаленный последовательный порт сервера последовательных устройств. Поскольку с точки зрения ОС и SCADA виртуальный COM идентичен нативному, то запрос Modbus RTU можно отправить на него напрямую.

 

Хост SCADA с драйвером «Инкапсуляция Ethernet»

Если ваш хост SCADA не оснащен последовательным портом, а вы не хотите устанавливать драйвер виртуального COM-порта, то вместо этого вы можете использовать драйвер «Инкапсуляция Ethernet». Обратите внимание, что программное обеспечение SCADA должно поддерживать тип соединения «Инкапсуляция Ethernet». Применение драйверов «Инкапсуляция Ethernet» рекомендуется при наличии углубленных знаний о последовательных протоколах и протоколах TCP/IP.

Сервер последовательных устройств необходимо перевести в режим Raw Socket или туннелирования, в котором при отправке SCADA-пакетов Modbus RTU на устройства соединение между хостом и сервером последовательных устройств осуществляется через прозрачный канал TCP/IP или UDP без преобразования протокола. Сервер последовательных устройств необходимо корректно настроить, так как протокол Modbus RTU определяет конец пакета на основе пауз в передаче. Если пакет Modbus RTU будет разделен на два или более пакетов TCP/IP или UDP, вы можете столкнуться с некоторыми проблемами. Если вы не можете правильно настроить передачу пакетов между последовательными каналами и сетями Ethernet, рекомендуется вариант со шлюзом (2) или виртуальным COM-портом (3).

Хотя серверы последовательных устройств можно использовать для подключения устройств Modbus RTU к сети Ethernet, вариант со шлюзом (2) наиболее предпочтителен и удовлетворяет практически всем требованиям системы. Ваш хост должен поддерживать протокол Modbus TCP — это редко вызывает проблемы, поскольку протокол очень популярен и широко распространен. Ниже описано несколько ситуаций, в которых следует применить предложенный вариант со шлюзом:

 
1.Несколько ведущих устройств или резервирование сети

Подключение через Ethernet не только позволяет пользоваться удаленным доступом, но и реализует несколько соединений. Большинство шлюзов поддерживают до 32 соединений, то есть 32 хоста SCADA могут одновременно запрашивать данные у устройств Modbus RTU. В подобной ситуации обеспечить резервирование сети с помощью сервера последовательных устройств довольно сложно, так как многие серверы не поддерживают несколько ведущих устройств, однако применение шлюзов не вызовет никаких проблем.

 
 
2.Одно соединение для нескольких устройств Modbus RTU

Иногда для опроса нескольких устройств Modbus RTU, подключенных к разным последовательным портам, необходимо одно соединение на хосте SCADA. Шлюз представляется единственным решением, способным реализовать такой механизм маршрутизации. Шлюзы с несколькими последовательными портами можно настроить, чтобы они отправляли запрос Modbus на соответствующий последовательный порт с учетом уникальных идентификаторов ведомых устройств.

Сервер последовательных устройств не может справиться со столь сложной задачей.

 

3. Одновременный доступ к устройству со старого контроллера Modbus RTU и новой Modbus TCP SCADA

Хотя протокол Ethernet позволяет легко настроить удаленный доступ, иногда требуется сохранить существующие локальные соединения с контроллером или HMI. Проблема состоит в том, что последовательный порт на устройстве уже подключен к шлюзу, а значит, последовательный порт для подключения HMI отсутствует. Для решения этой проблемы некоторые шлюзы оборудованы функцией Serial Redirector. Эта система очень напоминает маршрутизатор, поскольку шлюз может передавать запрос между различными последовательными портами на основе идентификатора ведомого устройства.

 

Вывод

Существует много вариантов преобразования Modbus между последовательным интерфейсом и Ethernet. Хотя в этом случае можно применить такой простой способ, как прозрачная передача данных между последовательными и Ethernet-портами, при работе с промышленными протоколами, например с Modbus, специальный шлюз подходит гораздо лучше. Использование такого шлюза может потребовать солидных первоначальных инвестиций, зато обеспечивает более стабильную связь в долгосрочной перспективе, и шлюз способен распознавать пакеты Modbus для правильной обработки.

Ситуация № 2

Часто к разным последовательным портам шлюза подсоединено несколько устройств Modbus RTU, вот почему определение архитектуры подключения TCP становится довольно трудной задачей. Большинство шлюзов обеспечивает гибкие настройки подключения TCP для доступа к нескольким устройствам Modbus RTU, подсоединенным к разным последовательным портам шлюза.

  • подключение последовательного порта к уникальному TCP-порту
  • подключение последовательного порта к уникальному IP-адресу
  • использование таблицы маршрутизации
Рассмотрим их:

1.Подключение последовательного порта к уникальному TCP-порту.

Наиболее популярный метод планирования топологии шлюза. В конфигурации шлюза каждый последовательный порт будет подключен к отдельному TCP-порту.

Например, 4001 — последовательный порт 1, 4002 — последовательный порт 2 и т. д. Если вы хотите подключить устройства Modbus RTU к последовательному порту 1, установите соединение Modbus TCP с 4001. Шлюз будет передавать пакеты Modbus TCP между TCP-портом 4001 и последовательным портом 1.

В этой топологии драйвер SCADA должен создать несколько соединений Modbus TCP.

 

2. Подключение последовательного порта к уникальному IP-адресу

Этот вариант очень похож на вариант 1, но для идентификации последовательных портов шлюз использует различные IP-адреса.

Например, 192.168.2.1 — к последовательному порту 1, 192.168.2.2 — к последовательному порту 2 и т. д. Если вы хотите подключить устройства Modbus RTU к последовательному порту 1, установите соединение Modbus TCP с 502. Шлюз будет передавать пакеты Modbus TCP между 192.168.2.1:502 и последовательным портом 1. В этой топологии драйвер SCADA также должен создать несколько соединений Modbus TCP. Хотя для топологии требуется несколько IP-адресов, некоторые клиенты Modbus TCP позволяют использовать только TCP-порт 502. В таком случае вариант 1 вам не подойдет, и нужно обратиться к варианту 2.

 

3. Использование таблицы маршрутизации

В данной топологии для связи с несколькими устройствами предусмотрена маршрутизация. Чтобы запрос передавался к правильному последовательному порту, необходимо верно настроить шлюз и направление маршрутизации. Например, последовательный порт 1 обрабатывает все пакеты Modbus, которые имеют идентификаторы ведомых устройств от 1 до 10, последовательный порт 2 — идентификаторы от 11 до 20 и т. д.

Поскольку в топологии используется только одно соединение, связь будет медленнее, чем в вариантах 1 и 2. Тем не менее при наличии бюджетных и технических ограничений одно соединение может оказаться подходящим выбором, если обеспечивается достаточная производительность.

Примечание. Если вы подключите несколько устройств к одному последовательному порту или привяжете несколько последовательных портов к одному TCP-соединению, время опроса Modbus увеличится. Для повышения скорости опроса требуется больше TCP-соединений, поэтому необходимо учитывать возможности SCADA.

 

Ситуация № 3

В крупных проектах может быть несколько хостов для мониторинга за объектом либо может присутствовать резервный хост для удаленного мониторинга устройств с другой площадки. Таким образом, возникает задача обеспечения одновременного доступа нескольких ведущих устройств к устройствам Modbus RTU. Хотя шлюз может справиться с такой задачей, помните, что пропускная способность последовательного порта остается неизменной. Если через один последовательный порт поступает несколько запросов, то возможна задержка, поскольку шлюз обрабатывает первыми более ранние запросы. И если вы хотите разрешить нескольким ведущим устройствам одновременный доступ к устройству Modbus RTU, сначала необходимо подобрать подходящее время опроса.

Например, если один запрос занимает 100 мс, то пять подключений вызовут задержку не менее 100 мс × (5–1) = 400 мс перед отправкой следующего запроса. Это означает, что цикл опроса каждого хоста SCADA должен составлять 400 мс (плюс некоторый допуск).

Впрочем, описанное выше решение не является единственным. Некоторые шлюзы поддерживают режим «агента», активно и постоянно получающего данные от подключенных устройств.

Обновляющиеся данные хранятся во внутренней памяти, которая используется для ответа на запросы хоста. Хотя это решение быстрее и эффективнее, полученные сведения не будут самыми актуальными.

 

Источник: www.controlengrussia.com

Сообщения: 463