Команда Echo (X)
Описание
(о формате описания команд см. здесь)
| Назначение: | Возвращает информацию о состоянии DS |
| Способ отправки: | По сети (допускается широковещательная отправка, вход не требуется); через последовательный порт |
| Формат команды: | X[v], где v - необязательный параметр «версия команды» (десятичное число до 255; если не указан, принимается равным 1). Версия команды распознаётся только прошивкой V3.54+ |
| Возможные ответы (сеть): | Annn.nnn.nnn.nnn.nnn.nnn/ppppp/mseic[p]/ES/oo...o/dd...d, где |
nnn.nnn.nnn.nnn.nnn.nnn - MAC-адрес DS;
ppppp - номер порта данных DS;
m - всегда «N» (означает, что работает прошивка приложения, а не NetLoader);
s - режим программирования: «*» (нет), «S» (последовательный), «U» (внеполосный UDP), «T» (внутриполосный TCP или TCP в фазе команд);
e - состояние ошибки: «*» (ошибок не обнаружено), «E» (работа в режиме ошибки); «N» (неисправность порта Ethernet)
i - состояние IP-адреса: «*» (ещё не получен), «I» (получен по DHCP), «M» (фиксированный, задан вручную);
c - состояние соединения передачи данных: '' (закрыто), 'A' (отправка ARP *ИЛИ** [V3.54+] установка канала PPP), «O» (устанавливается), «C» (TCP-соединение установлено или закрывается), «U» (UDP-соединение установлено), «R» (сброшено удалённым хостом), «F» (ошибка входа в Link Server), «L» (выполняется вход в Link Server);
[V3.54+] p - возвращается, только если указан параметр версии команды >1: «*» (PPPoE отключён), «D» (вход PPPoE отклонён), «N» (канал PPPoE не открыт), «B» (канал PPPoE устанавливается), «P» (канал PPPoE установлен);
E - переполнение буфера Ethernet → последовательный порт: «*» (переполнения нет), «E» (обнаружено переполнение);
S - переполнение буфера последовательный порт → Ethernet: «*» (переполнения нет), «S» (обнаружено переполнение);
oo...o - имя владельца;
dd...d - имя устройства.
| Возможные ответы (последовательный порт): | Amseic[p]/ES (описание полей см. выше) |
| Впервые появилась: | Раньше «базовых» V3.14/V3.51, функциональность расширена в V3.54 |
Подробности
Основное назначение сетевой команды Echo - автообнаружение серверов устройств в сети: когда сетевой хост отправляет её в широковещательном режиме, он собирает ответы («эхо») от всех локально подключённых серверов устройств, отсюда и название команды. Ответ каждого DS содержит всю информацию (MAC-адрес и т.д.), необходимую для дальнейшего обмена с этим конкретным DS в нешироковещательном режиме.
Команда Echo возвращает следующие данные:
- MAC-адрес - самое важное поле, по которому можно однозначно идентифицировать каждый DS*! Кроме того, MAC-адрес служит ссылкой на конкретный DS (и потому должен быть известен заранее) в таких командах, как Assign IP-address (A) и Select in Broadcast Mode (W).
- Номер порта данных считывается непосредственно из настройки Port Number (PN) DS.
- Далее следуют несколько односимвольных полей-флагов, сообщающих сетевому хосту о текущем состоянии DS:
- флаг m всегда возвращает «N». Это означает, что на DS работает (данная) прошивка приложения. Когда же работает NetLoader, этот флаг показывает «L» (NetLoader тоже поддерживает команду Echo);
- флаг s показывает, выполняется ли какое-либо программирование. «S» возвращается, когда последовательный порт DS находится в режиме последовательного программирования. Если открыт сеанс сетевого программирования, возвращается «U» для сеанса внеполосного (UDP) программирования и «T» для сеансов внутриполосного (TCP) программирования или программирования в фазе команд (TCP);
- флаг e показывает, работает ли DS в режиме ошибки. Кроме того, для команды Echo, отправленной через последовательный порт, этот флаг может принимать значение «N», указывающее на аппаратную неисправность порта Ethernet;
- флаг i отражает текущее состояние IP-адреса. Он полезен при включённом DHCP (см. настройку DHCP (DH)). Пока DS пытается получить IP-адрес от сервера DHCP, флаг равен «*». После получения адреса флаг принимает значение «I». Если DHCP выключен, флаг возвращает «M» (от «manual» - вручную);
- флаг c отражает состояние соединения;
- [V3.54+] флаг p отражает состояние канала PPPoE. Этот флаг возвращается, только если указан необязательный параметр версии команды и он >1;
- флаги E и S показывают переполнение буферов маршрутизации. Оба флага сбрасываются автоматически при закрытии или прерывании соединения передачи данных. Их также можно сбросить вручную командой Reset Overflow Flags (R).
- поля oo...o и dd...d возвращают данные из настроек Owner Name (ON) и Device Name (DN). Понятные имена упрощают идентификацию конкретного DS.
Необязательный параметр версии команды появился в прошивке V3.54. Версия команды - десятичное число (до 255). Если версия не указана, она принимается равной 1. Более ранние версии прошивки не поддерживают этот параметр и просто игнорируют его (результат будет таким же, как при версии 1). Если указана версия 2 или выше, команда Echo возвращает в ответе дополнительный флаг p. Этот флаг отражает состояние канала PPPoE.
Пример 1: предположим, команда X вернула следующий ответ**:
-->DS: X
DS-->: A0.150.30.213.55.74/1001/NS*IC/*S/BigCorp/Device1
Это означает, что MAC-адрес DS - 0.150.30.213.55.74, соединения передачи данных принимаются на порту 1001, DS работает нормально, выполняется последовательное программирование. IP-адрес DS успешно получен по DHCP, TCP-соединение сейчас установлено, обнаружено переполнение буфера последовательный порт → Ethernet (в рамках текущего соединения). Имя владельца и имя устройства - «BigCorp» и «Device1» соответственно.
Пример 2: команда с параметром версии**:
-->DS: X2
DS-->: A0.150.30.213.55.74/1001/N**MU P /**/BigCorp/Device1
В этом примере DS работает нормально, не программируется, имеет фиксированный IP-адрес (DHCP выключен), у него активно UDP-«соединение» и установлен канал PPPoE.
Обратите внимание: разбирать ответ на команду Echo не следует, опираясь на необязательный параметр версии команды. Старые прошивки игнорируют этот параметр, поэтому нет гарантии, что DS вернёт расширенную информацию (флаг p). Конечно, ответ всегда можно обрабатывать с учётом версии прошивки DS, но рекомендуется просто проверять наличие дополнительного ASCII-символа перед косой чертой, отделяющей флаги mseic[p] от флагов E и S.
Несколько слов о флаге c. Состояние «A» этого флага теперь означает, что либо отправляются ARP-пакеты для обнаружения сетевого хоста назначения, ЛИБО выполняется установка канала PPPoE. Одно состояние можно использовать для двух разных процессов, потому что они никогда не нужны одновременно. Когда PPPoE включён (настройка PPPoE Mode (PP) равна 1 или 2), а хост назначения находится в другом сегменте сети, DS не нужен ARP, но нужно установить канал PPPoE (подробнее см. PPPoE). Во всех остальных случаях DS не нужен PPPoE, но нужно отправлять ARP.
При отправке через последовательный порт команда Echo возвращает ту же информацию, но без MAC-адреса, номера порта данных, имени владельца и имени устройства. Эти поля нужны только для обнаружения и идентификации DS в сети, а на стороне последовательного порта не требуются. Основное применение команды Echo через последовательный порт - запрос подключённым последовательным устройством текущего состояния соединения передачи данных и маршрутизации DS. Последовательное устройство может использовать её вместе с модемными командами (параметрами и инструкциями на стороне последовательного порта) для управления установкой и разрывом соединения передачи данных со стороны DS и контроля за ними.
Есть также команда Status (U), которая возвращает дополнительную информацию о состоянии DS.
* Каждый DS, как и любое другое Ethernet-устройство, имеет уникальный MAC-адрес, задаваемый при производстве.
** Символы обрамления, такие как IEC, STX, CR, и поле идентификатора команды не показаны