Как Wizard определяет, кто открывает соединения
Когда вы нажимаете Next на шаге маски подсети и шлюза, Wizard располагает достаточными данными, чтобы определить, какая сторона линии VSP-to-DS будет отвечать за установление соединений с данными с другой стороной.
При этом Wizard определяет будущие значения настроек Routing Mode (RM) и Connection Mode (CM) у DS, а также свойств Routing Mode и Connection Mode у VSP.
В общем случае Wizard старается следовать естественному направлению потока данных между приложением и последовательным устройством. На шаге инициатора обмена данными вы уже указали, какая сторона отправляет данные первой, поэтому Wizard заставит эту сторону открывать соединение с данными с другой стороной, как только первые данные потребуется отправить с неё.
Например, если вы имеете дело с «ведомым терминалом», то первые данные всегда отправляет приложение (и VSP). Поэтому Wizard установит свойство Routing Mode у VSP в значение «client», а настройку Routing Mode (RM) у DS в значение «slave».
Строки 1-3 следующей таблицы иллюстрируют сказанное. Обратите внимание, что настройка Connection Mode (CM) всегда установлена в значение «on data». Как только первые данные получает одна сторона линии, это запускает попытку открыть соединение с данными с другой стороной:
| Какая сторона «видит» другую сторону соединения | Какая сторона отправляет первые данные | Routing Mode на VSP | Connection Mode на VSP | Routing Mode на DS | Connection Mode на DS | |
| 1 | Обе стороны видят друг друга | Приложение | Client | On data | Server | --- |
| 2 | Обе стороны видят друг друга | Последовательное устройство | Server | --- | Client (server/client) | On data |
| 3 | Обе стороны видят друг друга | Любая сторона | Server/client | On data | Server/client | On data |
| 4 | Только ПК видит DS | Приложение | Client | On data | Server | --- |
| 5 | Только ПК видит DS | Последовательное устройство | Client | Immediately | Server | --- |
| 6 | Только ПК видит DS | Любая сторона | Client | Immediately | Server | --- |
| 7 | Только DS видит ПК | Приложение | Server | --- | Client | Immediately |
| 8 | Только DS видит ПК | Последовательное устройство | Server | --- | Client | On data |
| 9 | Только DS видит ПК | Любая сторона | Server | --- | Client | Immediately |
Ситуация усложняется, когда только одна сторона соединения может «видеть» другую. Рассмотрим случай из строки 5 таблицы. Последовательное устройство должно отправить данные первым, но оно не может «увидеть» VSP. Поэтому даже когда DS получит первые данные на свой последовательный порт, он не сможет установить соединение с VSP и отправить эти данные!
Выход - заставить VSP подключаться к DS сразу после открытия VSP, то есть установить режим соединения VSP в значение «immediately». Тогда к моменту, когда DS понадобится отправить первые данные VSP, соединение уже будет установлено. Такие соединения называются «обратными» (reverse).
Отдельно стоит сказать о строке 2 таблицы, где режим маршрутизации на DS задаётся как «client» или «server/client». Wizard выбирает «client», если программирование DS выполняется способом out-of-band (вы выбрали его на шаге целевого DS Wizard). Если выбран способ inband, Wizard установит режим «server/client». Дело в том, что выбор «client» заставил бы DS отклонять все входящие соединения в будущем, и тогда программировать DS способом inband было бы невозможно!
* Так бывает, когда на шаге целевого DS вы указали, что «Device Server is not accessible from this PC», или когда на шаге маски подсети и шлюза для DS Wizard вы указали, что «PC is not accessible from this Device Server».