Запрос атрибутов точки данных за определенный период времени. |
Краткое описание
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 |
См. также