Обработка исключительных ситуаций
Если отменяемая сцена находится в состоянии "наготове", то акт согласования STANDBY-STANDING_BY просто забывается. Если сцена уже исполняется, прибор может выполнить одно из действий: Кроме того, в процесс может вмешаться локальный оператор и перевести прибор в режим ручного управления. Какое из этих действий будет выполнено, зависит от оборудования и обстоятельств, при которых получено сообщение CANCEL. Если выполняемая сцена приводит к какому-либо вреду, вероятно, лучший выбор в данном случае — завершить сцену. Если сцена приводит к неопределенной, ненадежной ситуации, ее следует приостановить, сбросить или выполнить в обратном порядке. Конечное решение зависит от оборудования и ситуации в шоу. Некоторые приборы всегда выполняют одно из перечисленных восстановительных действий, другие позволяют это действие запрограммировать. Поведение прибора при получении сообщения CANCEL должно быть документировано производителем. Если устройство решит завершить сцену в обычном порядке, оно должно послать как сообщение CANCELLED с кодом "в процессе завершения", так и сообщение COMPLETE. Первое из них посылается в ответ на сообщение CANCEL немедленно, второе — после фактического завершения сцены. Сцены, приостановленные сообщением CANCEL, могут продолжить выполнение после обмена STANDBY-STANDING_BY-GO_2PC. В любом случае, на сообщение CANCEL прибор должен ответить либо сообщением CANCELLED, либо сообщением ABORT. Последнее допустимо только в том случае, если в сообщении CANCEL обнаружена ошибка контрольной суммы. Если на сообщение CANCEL не получен ответ в течение двух секунд, контроллер обработает ситуацию так, будто было передано сообщение ABORT. Сообщение ABORT, как говорилось ранее, посылается контролируемым устройством в случае сбоя при выполнении команд STANDBY, GO_2PC или CANCEL. Номер секвенции в этом сообщении говорит контроллеру о том, какое из сообщений STANDBY, GO_2PC или CANCEL вызвало сбой. Код состояния показывает наиболее значимую причину сбоя, однако могут быть и дополнительные, менее важные причины. Поэтому исправления сбойной ситуации на основе одного кода состояния может быть недостаточно. Значимость кода состояния пропорциональна легкости, с которой сбойная ситуация может быть исправлена. Например, код "блокирующий переключатель не установлен" менее значим, чем "сбой в моторе". Первый сбой может быть исправлен немедленным вмешательством человека; второй, возможно, удастся исправить, только разобрав мотор. Код состояния "manual overriding in progress" ("сцена в процессе ручного управления") показывает, что локальный оператор контролируемого устройства взял на себя контроль за выполнением сцены. Некоторые устройства могут игнорировать все сообщения 2PC, пока локальный оператор использует ручное управление. Иногда сообщение ABORT не означает сбой устройства, а просто говорит о том, что ожидаемое событие все еще не произошло. Подобное поведение характерно для всевозможных датчиков и детекторов. Для таких приборов главный контроллер не передает сообщение CANCEL.
|