AN004. Как отправить одни и те же данные нескольким DS

Что есть в этой рекомендации

Часто спрашивают, можно ли отправить одни и те же данные нескольким DS одновременно. Понятно, откуда возникает такая необходимость. Например, в системах RS485 часто есть главный «узел» (master), который отправляет команды нескольким подчинённым (slave). Каждое подчинённое устройство получает команду, но отвечает только одно - то, которое адресовано: кадр (пакет), отправленный главным узлом, содержит адрес адресата.

Чтобы превратить такую систему в сетевую, способ «отправить всем» нужно адаптировать к сетевой связи. Эта рекомендация объясняет, как это сделать.

Содержание:

  • Использование широковещательных UDP-пакетов для эмуляции многоточечной связи
  • Ограничения

Использование широковещательных UDP-пакетов для эмуляции многоточечной связи

Организовать многоточечную систему связи в сети TCP/IP можно только с помощью протокола UDP/IP и отправки данных в виде широковещательных UDP-пакетов. Протокол TCP по определению является протоколом «точка-точка» и не может использоваться для одновременной доставки данных нескольким узлам. UDP, напротив, может и часто используется для отправки данных нескольким узлам сети.

Чтобы один DS (назовём его «главным») отправлял данные нескольким другим DS («подчинённым») через сеть, выполните следующую настройку (показаны только «важные» изменения настроек):

  • На стороне главного DS внесите следующие изменения настроек:
  • Routing Mode (RM): 1 (server/client) или 2 (client);
  • Transport Protocol (TP): 0 (UDP);
  • Destination IP-address (DI): 255.255.255.255 - это заставит главный DS отправлять данные как широковещательные UDP-пакеты канального уровня (link-level UDP broadcasts).
  • На каждом подчинённом DS внесите следующие изменения настроек:
  • Routing Mode (RM): 0 (server);
  • Transport Protocol (TP): 0 (UDP);
  • Broadcast UDP (BU): 1 (enabled) - это заставит подчинённые DS принимать данные, отправленные в широковещательных пакетах.

То же самое можно применить, используя виртуальный последовательный порт в качестве «главного». Используйте VSP Manager и задайте свойства VSP аналогично настройке главного DS.

Ограничения

Важно понимать ограничения такой системы:

  • Ненадёжная передача данных. UDP, в отличие от TCP, не гарантирует доставку данных. Если какой-либо UDP-пакет потерян, сам протокол UDP этого не обнаружит. UDP-пакеты считаются «менее важными» (по сравнению с трафиком TCP), поэтому многие маршрутизаторы отбрасывают такие пакеты первыми при перегрузке. Итог: не стоит строить систему на допущении, что все UDP-пакеты всегда будут получены всеми подчинёнными устройствами. Обычно это не проблема, поскольку большинство многоточечных систем включают тот или иной алгоритм повторных попыток.
  • Система ограничена только локальными сегментами сети. Это второе ограничение более серьёзно. Широковещательные UDP-пакеты не маршрутизируются сетевым оборудованием, таким как маршрутизаторы, мосты и т. п. Это означает, что широковещательная UDP-рассылка возможна только внутри одного сетевого сегмента. Не рассчитывайте, например, что такая система будет работать через Интернет.