Сообщение 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, не показаны.