Серверы OPC UA могут возвращать исторические данные как совокупность некоторых функций, выполняемых в истории данных в определенные периоды. При запросе обработанных данных с помощью readProcessed вы указываете Агрегат для использования и Агрегатный интервал времени для выполнения этой Агрегатной функции. Затем сервер выполняет агрегатную функцию для каждого определенного периода агрегатного интервала, возвращая одно значение, связанное со всеми данными в этом интервале. Например, «Maximum» Aggregate Function возвращает максимальное значение в Aggregate Interval; Функция Range Aggregate Function возвращает разность между самым высоким и самым низким значениями в статистическом интервале.
Агрегаты 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) в интервале с неверным кодом. |
PercentGood | Извлеките процент данных (от 0 до 100) в интервале, который имеет хороший код состояния. |
Range | Извлеките разницу между Minimum и Maximum значения по интервалу. |
Range2 | Извлеките разницу между Minimum2 и Maximum2 значения по интервалу. |
StandardDeviationPopulation | Извлеките стандартное отклонение для интервала для полного заполнения (n), которое включает простые граничные значения. |
StandardDeviationSample | Извлеките стандартное отклонение для интервала для выборки совокупности (n-1). |
Start | Извлеките значение в начале интервала с помощью интерполированных граничных значений. |
StartBound | Извлеките значение в начале интервала с помощью функции «Простые граничные значения». |
TimeAverage | Извлеките средневзвешенные по времени данные за интервал с помощью интерполированных граничных значений. |
TimeAverage2 | Извлеките средневзвешенные по времени данные за интервал с помощью функции «Простые граничные значения». |
Total | Извлеките общее значение (интеграл времени) данных за интервал с помощью интерполированных граничных значений. |
Total2 | Извлеките общее значение (интеграл времени) данных за интервал с помощью функции «Простые граничные значения». |
VariancePopulation | Извлеките отклонение для интервала, рассчитанное StandardDeviationPopulation который включает простые граничные значения. |
VarianceSample | Извлеките отклонение для интервала, рассчитанное StandardDeviationSample. |
WorstQuality | Извлеките наихудший код состояния данных в интервале. |
WorstQuality2 | Извлеките наихудший код состояния данных в интервале, включая простые граничные значения. |