Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы MIDI 2.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
210 Кб
Скачать
☆

Сообщения 2pc

В отсутствие сбойных ситуаций для выполнения одной сцены в протоколе 2PC используются четыре сообщения. Они показаны в таблице на рис. 2 с указанием порядка следования и стороны-отправителя.

Сначала главный контроллер посылает подчиненному устройству сообщение STANDBY ("приготовиться"). Это сообщение "разогревает" прибор и уведомляет его о том, что скоро должна быть выполнена заданная сцена. В ответ на это устройство отвечает контроллеру сообщением STANDING_BY ("наготове"), показывая свою готовность выполнить данную сцену. Для выполнения сцены главный контроллер посылает сообщение GO_2PC. Последнее сообщение серии, COMPLETE ("выполнено"), посылается прибором главному контроллеру и сообщает о том, что выполнение сцены завершено успешно. Предусмотрены также три сообщения на случай, если произошел сбой: ABORT, CANCEL и CANCELLED. Если контролируемое устройство обнаруживает сбойную (исключительную) ситуацию, то есть ситуацию, когда нормальное выполнение сцены невозможно, оно уведомляет об этом главный контроллер посредством сообщения ABORT. Для указания причины сбоя в это сообщение помещается код состояния, на основании которого главный контроллер может выбрать дальнейший вариант действий. Сообщение CANCEL посылается от контроллера к прибору и говорит о том, что предыдущее сообщение (STANDBY и/или GO_2PC) нужно отменить. В ответ на это прибор может ответить сообщением CANCELLED ("отменено"), подтверждая отмену предыдущих команд. Сообщения 2PC имеют несколько общих элементов, таких как номер секвенции (nn nn), контрольная сумма (сс), код состояния (s1 s2) и данные сцены (d1 d2 d3 d4). Эти элементы описаны далее, в соответствующих разделах. На рисунках 3-9 показана структура сообщений 2PC.

Номер секвенции

Нумерация сцен в сообщениях от контроллера к контролируемому устройству происходит в протоколе 2PC так же, как и в обычных сообщениях MSC (то есть с помощью полей Q_number, Q_list или Q_path. Кроме того, для каждого из сообщений STANDBY, GO_2PC и CANCEL главный контроллер генерирует уникальный номер (от 1 до 16383), который называется номером секвенции. Этот же номер передается в обратных сообщениях (STANDING_BY, COMLETE, CANCELLED и ABORT), и по нему главный контроллер определяет, к какой сцене относится сообщение. Таким образом, в обратных сообщениях достаточно использовать только номер секвенции, полный номер сцены передавать не нужно. Номера секвенций позволяют работать по методу 2PC простым устройствам, таким как различные детекторы и датчики. Например, детектор газа может не понимать концепцию сцен. При получении сообщения STANDBY он просто проверяет наличие газа. Если газ не обнаружен, детектор отвечает сообщением ABORT, если обнаружен — сообщением STANDING_BY. Детектор игнорирует поля типа Q_number и просто копирует номер секвенции из входящего сообщения в исходящее. Кроме того, номера секвенций облегчают отслеживание ответных сообщений от контролируемых устройств оператору главного контроллера.