Для получения дифференциальных срезов локальных архивов используются каналы класса CALL с типами вызова (25) DifSnap и (34) DifSnapSums (см. Выборка и обработка данных SIAD ).
После успешного завершения выборки CALL.DifSnap.In=0 и CALL.DifSnap.b14=1 (см. описание атрибута (46, QE) в разделе Атрибуты каналов, отображаемые профайлером ).
Атрибут (92, I2) анализируется только в том случае, если значение младшего полубайта атрибута Параметр равно 0.
(92, I2) = 0
Байт 0 значения канала DifSnap задает номер архива, байт 1 – тип обработки, аргументы arg0 и arg1 – времена срезов.
Если Параметр = 0 и тип обработки = 0, то последующие пары аргументов используются следующим образом: к первому привязывается архивируемый канал, во второй записывается разность между значениями срезов по этому каналу (дифференциальный срез, VALarg1 – VALarg0).
Если Параметр = 0 и тип обработки = 2, то последующие аргументы используются группами по 3: к первому привязывается архивируемый канал, во второй записывается срез по этому каналу на время arg0, в третий – срез на время arg1.
Если Параметр = 0 и тип обработки = 4, то последующие аргументы используются группами по 4: к первому привязывается архивируемый канал, во второй записывается срез по каналу на время arg0, в третий – срез на время arg1, в четвертый – дифференциальный срез.
Если Параметр = 0, тип обработки = 1, 3, 5 или 7, и архивируемый канал привязан к аргументу с номером k, то срез на время arg0 по этому каналу записывается в аргумент с номером k, увеличенным соответственно на 1, 2, 3 или 4.
Если Параметр = 1, в аппаратное значение канала DifSnap записывается сумма дифференциальных срезов (для типов обработки 0 и 4) или сумма последних срезов по каналам (для типов обработки 1, 3, 5 и 7).
(92, I2) <> 0
Конфигурация CALL.DifSnap:
arg0 и arg1 задают диапазон (T_FROM, T_TO) (см. Временной интервал выборки );
атрибут (92, I2) задает число извлекаемых срезов в диапазоне (T_FROM, T_TO);
байт 0 значения CALL.DifSnap задает номер архива;
байт 1 значения CALL.DifSnap задает тип обработки срезов:
9 – без обработки;
11 – первый срез вычитается из всех остальных;
13 – из каждого среза вычитается предыдущий;
15 – аналог 13, но первая точка – это значение первого среза;
В случае N интервалов вычисляется (N+1) значение для типов обработки 9 и 15 и N значений для типов обработки 11 и 13 (в последнем случае первый срез не записывается).
начиная с arg2, аргументы задаются парами:
к первому привязывается атрибут (0,R) или (9,Q) канала, чьи значения должны быть извлечены из архива;
ко второму привязывается канал CALL.ChGroupReq или CALL.TVC, в аргументы которого записываются обработанные срезы по каналу, привязанному к первому аргументу (см. Запись вектора в CALL.ChGroupReq и CALL.TVC ). Для формирования значений кривой в канале CALL.TVC ко второму аргументу может быть привязан один из атрибутов CALL.TVC.142, CALL.TVC.143 и т.д.
после требуемого количества пар в канале CALL.DifSnap может быть создан один аргумент типа OUTPUT. К этому аргументу должен быть привязан канал CALL.ChGroupReq или CALL.TVC, в аргументы которого записываются суммы всех обработанных срезов на одно и то же время (если к аргументу CALL.DifSnap привязан атрибут (9,Q) архивируемого канала, срезы по этому каналу вычитаются).
Начиная с релиза 6.07, рекомендуется использовать каналы CALL.Sum вместо CALL.DifSnapSums.
Значение канала DifSnapSums задает номер архива, его аргументы arg0 и arg1 – времена срезов. В зависимости от значения атрибута Параметр, в канале DifSnapSums могут вычисляться следующие характеристики:
sS – сумма дифференциальных срезов привязанного канала DifSnap;
aS – сумма дифференциальных срезов привязанного канала DifSnap, при этом если аргумент канала DifSnap привязан к атрибуту Q архивируемого канала, то дифференциальный срез по этому каналу вычитается из суммы;
qS – сумма дифференциальных срезов по всем каналам, привязанным к DifSnap через Q;
_qS – сумма дифференциальных срезов по всем каналам, за исключением привязанных через Q;
nS – сумма отрицательных дифференциальных срезов канала DifSnap;
pS – сумма неотрицательных дифференциальных срезов канала DifSnap.
Если атрибут Параметр канала DifSnapSums равен 0, последующие пары аргументов используются следующим образом: к первому привязывается канал DifSnap, во второй записывается aS этого канала. При отработке канала DifSnapSums отрабатываются привязанные каналы DifSnap. После отработки канал DifSnapSums принимает значение 0.
Если атрибут Параметр канала DifSnapSums равен 1-6, последующие аргументы используются группами по 3 (во всех случаях к первому аргументу группы привязывается канал DifSnap; привязанные каналы DifSnap отрабатываются при отработке канала DifSnapSums):
Параметр=1 – во второй аргумент группы записывается aS, в третий – _qS канала DifSnap;
Параметр=2 – во второй аргумент группы записывается aS, в третий – величина 100*aS/_qS:
Параметр=3 – во второй аргумент группы записывается _qS, в третий – qS канала DifSnap;
Параметр=4 – во второй аргумент группы записывается sS, в третий – pS канала DifSnap;
Параметр=5 – во второй аргумент группы записывается sS, в третий – величина 100*sS/pS;
Параметр=6 – во второй аргумент группы записывается pS, в третий – nS канала DifSnap.
К аргументам канала DifSnapSums могут быть привязаны каналы DifSnap только с типом обработки 0.