Серверы OPC UA могут возвращать исторические данные как совокупность некоторых функций, выполняемых в истории данных в определенные периоды. Когда вы запрашиваете обработанные данные с помощью readProcessed
функция задает Агрегат, который будет использоваться, и Совокупный интервал времени, в течение которого будет выполняться эта Агрегатная функция. Затем сервер выполняет функцию Aggregate в каждом периоде заданного совокупного интервала, возвращая одно значение, сопоставленное со всеми данными в этом интервале. Для примера совокупная функция «Maximum» возвращает максимальное значение в совокупном интервале; Функция Области значений Aggregate возвращает различие между самым высоким и самым низким значением в совокупном интервале.
Агрегаты OPC UA представлены в MATLAB® вектором символов, определяющим Совокупную Функцию, или классом перечисления opc.ua.AggregateFnId. Для примера, чтобы задать, что readProcessed
операция использует Максимальную Совокупную Функцию, можно использовать любой из следующих синтаксисов:
readProcessed(UaClient,NodeList,'Maximum',...) readProcessed(UaClient,NodeList,opc.ua.AggregateFnId.Maximum,...)
Когда клиент OPC UA соединяется с сервером OPC UA, клиент AggregateFunctions
свойство хранит список совокупных функций, поддерживаемых этим сервером. Серверы не должны реализовывать каждую совокупную функцию, определенную стандартом OPC UA, но должны публиковать совокупные функции, поддерживаемые этим сервером. Используйте AggregateFunctions
свойство, чтобы убедиться, что совокупная необходимая функция поддерживается сервером. Однако обратите внимание, что сервер может реализовать эту функцию не для всех узлов Переменной на сервере. При попытке извлечь обработанные данные с сервера может возникнуть ошибка «Неподдерживаемая агрегатная функция», даже если совокупная функция сообщается как поддерживаемая сервером.
Следующие функции определяются OPC Foundation.
Функция | Описание |
---|---|
AnnotationCount | Получите количество аннотаций в интервале. |
Average | Извлеките среднее значение данных за интервал. |
Count | Получите количество необработанных значений за интервал. |
Delta | Найдите различие между Start и End значения в интервале. |
DeltaBounds | Найдите различие между StartBound и EndBound значения в интервале. |
DurationBad | Найдите общую длительность времени в интервале, в течение которого данные являются плохими. |
DurationGood | Найдите общую длительность времени в интервале, в течение которого данные хороши. |
DurationInStateNonZero | Получите время нахождения логического или числового значения в ненулевом состоянии с помощью простых ограничивающих значений. |
DurationInStateZero | Найдите время, когда логическое или числовое значение находилось в нулевом состоянии с помощью простых ограничивающих значений. |
End | Найдите значение в конце интервала с помощью Интерполированных ограничивающих значений. |
EndBound | Найдите значение в конце интервала с помощью Простых ограничивающих значений. |
Interpolative | В начале каждого интервала извлеките вычисленное значение из точек данных на любой стороне запрошенной временной метки. |
Maximum | Получите максимальное необработанное значение в интервале с временной меткой начала интервала. |
Maximum2 | Найдите максимальное значение в интервале, включая Простые Ограничительные Значения. |
MaximumActualTime | Найдите максимальное значение в интервале и временной метке максимального значения. |
MaximumActualTime2 | Получите максимальное значение с фактической временной меткой, включая Простые Ограничительные Значения. |
Minimum | Получите минимальное необработанное значение в интервале с временной меткой начала интервала. |
Minimum2 | Найдите минимальное значение в интервале, включая Простые Ограничительные Значения. |
MinimumActualTime | Найдите минимальное значение в интервале и временной метке минимального значения. |
MinimumActualTime2 | Найдите минимальное значение с фактической временной меткой, включая Простые Ограничительные Значения. |
NumberOfTransitions | Найдите количество изменений в диапазоне от нуля до ненулевого, которое испытывало логическое или числовое значение в интервале. |
PercentBad | Получите процент данных (от 0 до 100) в интервале, который имеет неправильный StatusCode. |
PercentGood | Получите процент данных (от 0 до 100) в интервале, который имеет хороший StatusCode. |
Range | Найдите различие между Minimum и Maximum значений в течение интервала. |
Range2 | Найдите различие между Minimum2 и Maximum2 значений в течение интервала. |
StandardDeviationPopulation | Найдите стандартное отклонение для интервала для полного населения (n), которое включает Простые Ограничительные Значения. |
StandardDeviationSample | Найдите стандартное отклонение для интервала для выборки населения (n-1). |
Start | Получите значение в начале интервала с помощью Интерполированных ограничивающих значений. |
StartBound | Получите значение в начале интервала с помощью Простых ограничивающих значений. |
TimeAverage | Извлеките взвешенные по времени средние данные за интервал с помощью Интерполированных ограничивающих значений. |
TimeAverage2 | Извлеките взвешенные по времени средние данные за интервал с помощью Простых Ограничительных Значений. |
Total | Найдите общую сумму (интеграл времени) данных за интервал с помощью Интерполированных Ограничительных Значений. |
Total2 | Найдите общую сумму (интеграл времени) данных за интервал с помощью Простых Ограничительных Значений. |
VariancePopulation | Найдите отклонение для интервала, рассчитанное StandardDeviationPopulation который включает в себя Простые Ограничительные Значения. |
VarianceSample | Найдите отклонение для интервала, рассчитанное StandardDeviationSample . |
WorstQuality | Получите худший код StatusCode данных в интервале. |
WorstQuality2 | Получите худший код StatusCode данных в интервале, включая Простые Ограничительные Значения. |