Сообщение Notification (J)

Описание

(о формате описания команд см. здесь)

Назначение:Сообщает об изменении состояния выводов ввода-вывода
Способ передачи:Сеть
Формат:Jsss, где sss - значение байта в диапазоне 0-255, содержащее состояние всех линий ввода-вывода DS
Впервые появилось:Раньше «базовых» версий V3.14/V3.51

Подробности

Сообщение Notification не является командой. Это сообщение, которое DS отправляет сетевому узлу, когда одна из контролируемых линий ввода-вывода DS меняет состояние (дольше 20 миллисекунд). Состояние всех линий упаковывается в один байт данных и отправляется даже тогда, когда изменилась только одна линия ввода-вывода.

Какие линии ввода-вывода контролируются, определяется текущей маской уведомлений (NB) [настройка / параметр ].

Сообщения Notification формируются только тогда, когда соединение для передачи данных установлено, и отправляются сетевому узлу, с которым установлено это соединение. Настройка Notification Destination (ND) определяет, на каком порту этого сетевого узла публикуются уведомления.

Способ отправки уведомлений (внеполосно, внутриполосно и т. д.) определяется несколькими факторами:

  • Если настройка Data Login (DL) равна 1 (включено), текущий Transport Protocol (TP) [настройка/ параметр] равен 1 (TCP), и TCP-соединение для передачи данных находится в фазе команд, то уведомления отправляются через это TCP-соединение (символ IEC не используется). Иначе...
  • Если настройка Inband (IB) равна 1 (включено), а текущий Transport Protocol (TP) равен 1 (TCP), то уведомления отправляются внутри этого TCP-соединения как внутриполосные сообщения (используется символ IEC). Иначе...
  • Уведомления отправляются как внеполосные UDP-датаграммы.

Значение в каждом сообщении Notification следует интерпретировать как набор двоичных битов, где каждая позиция соответствует определённой линии ввода-вывода DS. Позиции битов полностью совпадают с позициями в настройке Notification Bitmask (NB). Значения битов соответствуют состояниям линий ввода-вывода модулей. Состояния линий на разъёмах RS232 у последовательных серверов устройств и плат, содержащих приёмопередатчики RS232, инвертированы относительно состояний, передаваемых в сообщении notification.

Пример: допустим, отправлено следующее сообщение Notification*:

J027

Десятичное 27 в двоичном виде - 00011011. Это означает:

  • Для таких устройств, как EM100: линии P2/DSR и P5/RTS находятся в LOW; линии P0, P1, P2/DSR и P4/CTS - в HIGH;
  • Для таких устройств, как DS100: линии DSR и RTS находятся в HIGH; линии DTR и CTS - в LOW.

Сообщения Notification не являются командами, поэтому не требуют ответа от принимающей стороны.

Если DS получает сообщение Notification от другого DS, происходит следующее:

  • Если текущий Flow Control (FC) [настройка / параметр] на принимающем DS равен 0 (отключено), а текущий Serial Interface полнодуплексный, то этот DS устанавливает линию RTS в соответствии со значением бита CTS (бит 4) из сообщения Notification; иначе состояние линии RTS не меняется.
  • Если настройка DTR Mode (DT) на принимающем DS равна 0 (idle), то этот DS устанавливает линию DTR в соответствии со значением бита DSR (бит 2) из сообщения Notification; иначе состояние линии DTR не меняется.

Это означает, что сообщение Notification связывает сигналы RTS-CTS и DTR-DSR на двух взаимодействующих DS: когда входной сигнал CTS на одном конце меняет состояние, выход RTS на другом конце меняет состояние соответственно (то же для пары DTR-DSR).

* Символы инкапсуляции, такие как IEC, STX, CR, не показаны.