Режим multi-destination

Режим multi-destination позволяет обмениваться данными с несколькими серверами устройств (и подключёнными к ним последовательными устройствами) через один VSP. Чтобы понять, зачем это нужно, рассмотрим пример:

Пример

Допустим, есть многоточечная сеть RS485 (multi-drop), к которой подключено несколько последовательных терминалов (см. схему ниже). Шина RS485 подключена к COM-порту ПК через преобразователь 485-232. Прикладная программа на ПК (App.) может обращаться к каждому терминалу по отдельности, отправляя форматированную команду с «адресом узла» терминала. Все терминалы на шине получают команду, но отвечает только тот, чей адрес совпал. Это распространённый способ многоточечного обмена: ПК выступает «ведущим» (master), а терминалы - «ведомыми» (slave).

Сеть RS485 с несколькими терминалами (JPG)

Форматированная команда обычно начинается со стартового символа (в этом примере STX, ASCII-код 2), затем идёт адрес узла, передаваемый, например, двумя ASCII-символами, которые обозначают число, то есть «01», «02» и т.д. За адресными символами следуют содержимое команды и завершающий символ (например, CR, ASCII-код 13):

STXAddr1Addr2Содержимое командыCR

Допустим, эту систему нужно подключить к сети. Самый простой способ - подключить шину RS485 к DS, создать VSP на ПК и дать прикладной программе обращаться к терминалам через VSP и DS.

Сеть RS485 и DS (JPG)

Это сработает, но только если терминалы расположены близко друг к другу. Если их нужно разнести далеко, соединяющая их RS485-сеть станет очень длинной, и смысл сетевого подключения пропадёт! Гораздо лучше подключить каждый терминал к собственному DS (см. рисунок ниже). Тогда RS485-сети не будет вовсе.

Виртуальная RS485-сеть (JPG)

Проблема в том, что у каждого DS (а значит, и у каждого терминала) будет свой IP-адрес, и одному VSP придётся переключаться между этими адресами по мере необходимости. Напомним, что в исходной системе прикладная программа обращалась ко всем терминалам на шине RS485 через один COM-порт!

Решение

Режим multi-destination позволяет задать несколько DS-назначений и переключаться между ними в зависимости от исходящего потока данных, который отправляет прикладная программа на ПК. Как уже говорилось, многоточечная система RS485 почти всегда использует какую-то адресацию узлов. VSP можно настроить так, чтобы он выделял эту адресную информацию и автоматически переключался между назначениями.

VSP реагирует на две части исходящего потока данных:

  • Префиксная строка - фиксированная строка, которая сообщает VSP, что далее следует адрес узла. Префикс может быть строкой (почти) любой длины, но не может быть пустым (NULL). Для каждого VSP задаётся только одна префиксная строка.
  • Строка переключения - данные, которые непосредственно следуют за префиксом. Строка переключения своя для каждого назначения из таблицы назначений. Строки переключения также могут быть (почти) любой длины, но не могут быть пустыми.

В примере этой темы префиксная строка - это один символ с ASCII-кодом 2 (STX), а таблица назначений выглядит так:

Строка переключенияIP-адрес назначения
"01"192.168.100.40
"02"192.168.100.41
"03"192.190.0.15

Обнаружив префиксную строку в потоке, который отправляет прикладная программа, VSP начинает проверять, совпадают ли следующие данные с одной из заданных строк переключения. При совпадении VSP закрывает текущее соединение с данными (если оно есть) и переключается на новое назначение, соответствующее найденной строке переключения.

Так это отражается в журнале Port Monitor:

12/18/03 10:39:49 - COM3 (INFO): Port opened

12/18/03 10:40:04 - COM3 (INFO): Switching to 192.168.100.40:1001 ("01")...

12/18/03 10:40:04 - COM3 (INFO): Established TCP connection with node 192.168.100.40:1001

12/18/03 10:40:15 - COM3 (INFO): TCP connection closed

12/18/03 10:40:15 - COM3 (INFO): Switching to 192.168.100.41:1001 ("02")...

12/18/03 10:40:15 - COM3 (INFO): Established TCP connection with node 192.168.100.41:1001

Настройка VSP в режиме multi-destination

Чтобы перейти в режим multi-destination и создать список назначений, выберите «multi-destination» в выпадающем списке режима назначения и нажмите кнопку «Edit destination table...». Откроется диалог Edit destination table (показан на скриншоте ниже). Режим multi-destination доступен только тогда, когда режим маршрутизации - «client», а режим соединения - «on data». Режим маршрутизации «server/client» не допускается, потому что VSP должен выступать ведущим и устанавливать все соединения сам. Режим «Connect immediately» тоже не допускается, поскольку VSP должен получить строку переключения от приложения, чтобы знать, к какому назначению подключаться.

Режим multi-destination для VSP

Префиксная строка вводится в поля Prefix (ASCII) или Prefix (Hex). Эти поля синхронизированы между собой. Поле Prefix (ASCII) записывает символы по мере набора. Например, при нажатии клавиши <A> будет введён ASCII-символ 'A', а в поле Prefix (Hex) отобразится его ASCII-код в шестнадцатеричном виде - 41. Если ввести «02» (ASCII-код символа STX) в поле Prefix (Hex), в поле Prefix (ASCII) появится изображение этого символа. Специальные символы, такие как STX, можно вводить и в поле Prefix (ASCII) с помощью клавиши <CTRL> (<CTRL>+<B> для STX).

Доступные назначения вносятся в таблицу назначений кнопками Add, Edit и Delete. Кнопки Add и Edit открывают диалог Edit destination entry (см. скриншот ниже).

Диалог Edit destination entry

Поля Switch (ASCII) и Switch (Hex) используются для ввода строки переключения для конкретного назначения.

Поля Substs (ASCII) и Subst (Hex) дают дополнительную возможность, о которой ещё не говорилось. Если в них введены данные, VSP автоматически заменит строку переключения, найденную в потоке от приложения, на строку подстановки.

Например, если строка переключения - "01", а строка подстановки - "00", то произойдёт следующее (символ STX обозначен как J):

Приложение-->VSP: *J *01ABC

VSP-->DS: J 00ABC

Часть назначения в диалоге Edit destination entry похожа на ту, что показана в свойствах VSP в режиме single-destination. DS может задаваться IP-адресом или MAC-адресом, в зависимости от того, включена ли опция MAC→IP mapping. Порт назначения должен совпадать с значением настройки Port Number (DP) целевого DS. Вместо ручного ввода данных можно нажать кнопку «Select Device Server from the list...» и выбрать DS из списка.

Обработка ошибок в режиме multi-destination

  • Если после открытия VSP приложение начинает отправлять «случайные» данные без предварительной передачи префикса и строки переключения, либо данные после префикса не совпадают ни с одной строкой переключения, VSP отбрасывает эти данные до обнаружения корректных префикса и строки переключения.
  • Если после обнаружения корректных префикса и строки переключения VSP установил соединение с определённым DS, а затем получает префиксную строку, за которой не следует ни одна корректная строка переключения, VSP продолжает отправлять данные по уже существующему соединению с данными.