Для регистрации аварийных событий может быть использован канал CALL с типом вызова (57) EvReg (см. Атрибуты канала класса CALL ).
Первые три аргумента канала имеют следующее назначение: arg0 = TSTART, arg1 = TEND, arg2 = OFFSET. Эти аргументы не могут иметь привязок. OFFSET (32 бита) задает интервал выборки:
T_FROM = TSTART – <OFFSET.слово_0>[с]
T_TO = TEND + <OFFSET.слово_1>[с]
Если <OFFSET.слово_0>=0, T_FROM = TSTART – 60с.
Следующие P групп аргументов (P = Параметр) содержат по 3 аргумента: arg0i – сигнал аварии; arg1i – миллисекунды; arg2i – порядковый номер, присвоенный аварии. Из этих аргументов только arg0i могут иметь привязки.
Следующие аргументы создаются группами по 3 для отслеживания значений необходимых каналов (далее – сопутствующих каналов): ARG0k – привязка канала, ARG1k – значение канала до первой аварии, ARG2k – значение канала после последней аварии. ARG0k должны быть привязаны к каналам, ARG1k и ARG2k не могут иметь привязок.
По умолчанию регистратор деактивирован и EvReg.R=0. Команда активации регистратора – EvReg.In=1 (команды 17-20 также активируют регистратор – см. ниже). Если регистратор активирован, при возникновении первой по времени аварии (arg0i=1) EvReg.R=2, фиксируется время старта регистрации аварий (дата и время записываются в arg0=TSTART, миллисекунды – в arg1i) и аварии присваивается порядковый номер (в данном случае arg2i=1). Последний присвоенный порядковый номер записывается в EvReg.A.
Активация и фиксация времени старта может быть выполнена вручную по команде EvReg.In=2.
После фиксации аварии значения arg1i (число миллисекунд относительно TSTART) и arg2i не меняются при любых изменениях arg0i.
Если число обнаруженных аварий равно P, регистрация аварий автоматически завершается, EvReg.R=4, а затем EvReg.R=5. Для принудительного завершения можно использовать команду EvReg.In=3. Время завершения фиксируется в arg1 = TEND.
Если для регистратора установлен флаг Запрос времени значения, времена фиксируются по атрибутам 45 и 88 каналов, привязанных к arg0i. Если флаг не установлен или привязки нет – по собственному времени изменения.
Для деактивации регистратора нужно выполнить команду EvReg.In=0. По этой команде обнуляется EvReg.A. и arg2i.
Если регистратор находится в состоянии 5, то с помощью команд EvReg.In = 6, 7, 8 или 9 его можно перевести соответственно в состояние 6, 7, 8 или 9. Из этих состояний регистратор возвращается в состояние 5 автоматически. Если регистратор активирован командами 17, 18, 19 или 20, то он автоматически переходит из состояния 5 соответственно в состояние 6, 7, 8 или 9. В состоянии 6 в папке узла создается текстовый файл *.avt, в состоянии 7 – бинарный файл *.avb, в состоянии 8 – файл *.html (в кодировке utf-8), в состоянии 9 – файл *.xml. Эти файлы содержат отчет регистратора. Имена файлов образуются из имени канала CALL и даты и времени создания. Для отображения информации из файла *.avb в профайлер с поддержкой графических экранов встроено специальное окно (см. Профайлер с поддержкой графических экранов ). При генерации файла *.avt EvReg.R принимает значение 38, *.avb – 39, *.html – 40, *.xml – 41.
Информацию об ошибках регистратора МРВ записывает в файл tm6_log.txt (см. Файл tm6_log.txt ).
С помощью конфигурационного файла узла можно задать произвольную директорию для сохранения файлов (см. Задание параметров работы мониторов ).
Если сопутствующий канал архивируется, в отчет регистратора записывается выборка из архива по этому каналу.
Регистратор можно использовать только для выборки данных из архива – для этого его нужно принудительно активировать (EvReg.In=2) и затем принудительно остановить (EvReg.In=3).
Если для сопутствующего канала ведется индивидуальный архив, то запись в этот архив прекращается (в arg1 архива пишется большое число), если регистратор переходит в состояние 5, и возобновляется по команде EvReg.In=0.
Если в канале CALL_1.57 типа OUTPUT задана привязка к другому каналу CALL_2.57 (локальному), то в состоянии 4 аргументы CALL_1 копируются в аргументы CALL_2, после чего каналы переходят в состояние 5. Канал CALL_2 конфигурируется так же, как CALL_1 (в том числе, аргументы могут иметь привязки по указанным выше правилам).
Если в канале CALL_1.57 (INPUT, узел 1) задана привязка к каналу CALL_2.57. (узел 2), в сопутствующем канале ch (узел 1) канала CALL_1.57 задана привязка к сопутствующему каналу rem_ch (узел 2) канала CALL_2.57, и для канала rem_ch в узле 2 ведется индивидуальный архив, то при CALL_2.57.R > 3 по запросу узла 1 аргументы CALL_2.57 копируются в аргументы CALL_1.57 и, кроме того, запрашивается весь индивидуальный архив канала rem_ch и записывается в SIAD, в который архивируется ch. Если rem_ch привязан непосредственно к аргументу CALL_1.57, в выборку записывается ID канала вместо имени, а если привязка аргумента не задана, извлекаются только 2 значения (соответствующие T_FROM и T_TO).