dpGetPeriod()

Запрос атрибутов точки данных за определенный период времени.

Краткое описание

int dpGetPeriod (time t1, time t2, int count, string dp1, <dyn_type1> &xa1, dyn_time &ta1 [,string dp2, <dyn_type2> &xa2, dyn_time &ta2);

Параметр

ПараметрОписание
t1Начало периода времени
t2Конец периода времени
countКоличество значений до t1 и после t2, которые также должны быть считаны.
dp1Идентификатор атрибута точки данных
xa1Целевая переменная
ta1Исходное время, принадлежащее xa1

Возвращаемое значение

dpGetPeriod() возвращает 0. В случае неудачи возвращает -1.

Ошибка

Ошибки можно вывести при помощи getLastError(). К ошибкам относятся недостающие аргументы или отсутствие точки данных.

Описание

Функция dpGetPeriod() считывает значения атрибутов точки данных dp1, dp2, … с исходным временем в интервале t1 и t2 и значениями счетчика до t1 и после t2 из базы данных, и записывает их в полевых переменных xa1, ха2, … . Соответствующие значения исходного времени хранятся в полях ta1, ta2, … Значения, возвращаемые dpGetPeriod(), всегда упорядочены в соответствии с исходным временем. В архивах значения с идентичными значениями исходного времени (также идентичными миллисекундами) упорядочены в соответствии с поступлением.Если для запроса используется псевдоним, это передается в качестве параметра в функцию внешнего запроса; функция вызывает dpQuery() и alertGetPeriod().

ЗначокПРИМЕЧАНИЕ

С помощью dpGetPeriod() могут быть получены только атрибуты config «_original», «_online», «_offline» и «_corr»! t1 не может предшествовать 1.1.1970 0:0 (UTC). 

Если не существует определения для конфигурации или атрибута, используются следующие значения по умолчанию и добавляются внутренним образом:
ФункцияПо умолчанию
dpSet*()_original.._value
dpGet()_online.._value
dpGetAsynch()_offline.._value
dpGetPeriod()_offline.._value
dpConnect()_online.._value
dpDisconnect()_online.._value
Конфигурационные элементы «_original», «_online» и «_offline» имеют одинаковые атрибуты. У конфигурационных элементов «_original» и «_online» отличаться могут только атрибуты «_value» и «_stime». В исключительных случаях конфигурационный элемент «_online» принимает заданное заменяющее значение (атрибут «_default.._value») элемента точки данных, в то время как при нормальных условиях исходным значением также является текущее значение. Корректирующие значения могут быть установлены пользователем, и, при обладании одним и тем же исходным временем, они могут заменить соответствующие исходные (или заменяющие) значения в качестве автономных значений. В противном случае конфигурационный элемент «_offline» принимает значения атрибута «_online».
Поля xa1, xa2, …, ta1, ta2 повторно инициализируются при каждом вызове, т.е. они имеют одинаковую длину.

ЗначокПРИМЕЧАНИЕ

В случае запросов dpGetPeriod к архиву значений в исторической БД с параметром «count» > 0, также включаются вводимые значения, генерируемые самим архивом (например, при запуске архива и изменении архива). Эти значения могут быть признаны установленным битом TIMEINVALID.

Запрос для сохранения

Время самой ранней записи базы данных исходного, текущего или автономного значения элемента точки данных может быть установлено с помощью конфигурационного элемента start. Значения «<dpvariable>:_start.._original», «<dpvariable>:_start.._online» и «<dpvariable>:_start.._offline» являются временем первого появления исходного, текущего и автономного значений элемента точки данных <dpvariable> в базе данных.
При установке корректирующих значений автономные значения элемента точки данных могут существовать в течение более длительного периода времени, чем исходные и текущие значения. Если значения запрашиваемого атрибута точки данных не найдены в базе данных, массивы (значение и время) остаются пустыми.

ВНИМАНИЕ

Для элемента точки данных должен быть создан конфигурационный элемент «_archive»!
ЗначокПРИМЕР
В примере получаются значения точки данных «Reservoir_1_level.C1.AVG_WT0» в промежутке между 08.09.03 и 09.09.03 и, как минимум, одно значение до и после этого периода.
main()
{
dyn_float values;   //Содержит одинарные значения
dyn_time tim1; //Содержит исходное время для значений
int ant; //если 1 —> к ошибке в dpGetPeriod()
ant = dpGetPeriod(makeTime(2003,9,8), // от 08.09.2003
makeTime(2003,9,9), //до 09.09.2003             
 1, //как минимум одно значение до 08.09.03 и после 09.09.03
«Reservoir_1_level.C1.AVG_WT0:_offline.._value» ,//Элемент точки данных
values, tim1);     //Результаты               
if ((ant== 1) || (dynlen(values) == 0)) /* При ошибке запроса или отсутствии значений */
{
DebugN(«dpGetPeriod generated an error or there are no values»);
}
else
{
int i; //переменная цикла
DebugN(«Result values:»);
for(i=1;i<=dynlen(values);i++)
DebugN(values[i],tim1[i]);
}
}

Используется для объекта

Функция точки данных, Управляющие функции ожидания

Доступность

UI, CTRL

См. также

dpGet()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *