This is topic Проблема с LocalStatistic in forum SIAD/SQL. Архивирование в TRACE MODE / SIAD/SQL. Data Logging in TRACE MODE at Форум TRACE MODE: техническая поддержка.
Добрый день компания AdAstra! В очередной раз решили проверить функционирование СПАД архива, но к сожалению, не получили желаемого результата. Заявленные функции работы со СПАД архивом не работают. Скажите, пожалуйста, когда будет реализовано функционирование СПАД архива в полном заявленном объеме, так как от версии к версии полной работоспособности в СПАД архиве мы не обнаружили?
Перед нами поставлена задача, значение канала писать в архив СПАД. Выводить на экран первое (Arg_002) и поcледнее (Arg_026) значение канала за текущие, и прошедшие сутки. Интервал выборки - текущий день и предыдущий день . Для реализации извлечения данных из СПАД архива был использован канал CALL с типом вызова LocalStatistic. Настройка канала в соответствии с документацией на IDE. Запустили проект в среде исполнения TraceMode RTM 6.06.2. Значение канала инкрементируется вручную по нажатию на кнопку. Во время работы обнаружили следующие ошибки: МРВ стартовал в 10:00 (первый запуск, архив СПАД пустой), первые данные получили через 5 минут, за текущие сутки получили ожидаемые данные, а вот за предыдущие сутки, вместо нулей, получили первое и последнее значение за текущие сутки ; Проработав час, файл архива СПАД «вырос» до 2 ГБ , извлечение данных стало невозможным (значение канала изменялось редко).
Как такое может быть?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Достижение большого размера файла означает какой-то сбой при работе архива. Это может быть по различным причинам. В релизе 6.06.2 при корректной работе с архивом этого быть не должно. Остальные проблемы, возможно, вызваны этим сбоем.
1. Вы работали со старым архивом из предыдущих релизов или создавали новый?
2. Какие из заявленных функций архива не работают?
3. Можете ли Вы прислать пример на котором Вы тестировали выборки из архива?
Posted by Soyuz (Участник № / Member № 2028) on :
1 Создали новый архив (релиз 6.06.2); 2 Не работает LocalStatistic выборка за предыдущие сутки (день); 3 Можем выслать.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
3. Вышлите, пожалуйста, на hotline3@adastra.ru
Posted by Soyuz (Участник № / Member № 2028) on :
Отправили проект на адрес hotline3@adastra.ru
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Задание диапазона выборки на данный момент можно либо с помощью функции OFFSET, либо параметр >=32.
Подробнее можно почитать в разделе "Временной интервал выборки".
Остальные виды могут либо вообще не работать, либо работать не корректно, т.к. являются устаревшими.
Posted by Soyuz (Участник № / Member № 2028) on :
1 На основании чего, вы решили, что инетрвал выборки "за предыдущие сутки" являеться устаревшим? Описание этого интервала выборки присутствует в хелпе на IDE 6.06.2, а также есть возможность выбора этого интервала в среде разработке.
Как быть со старыми проектами, в которых использовались "устаревшие" инетрвалы выборки?
2 Объясните, как с помощью OFFSET или параметр >=32, задать интервал выборки за предыдущие сутки?
3 Какие еще функции устарели с выходом нового релиза 6.06.2?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Функция организации выборки через "Интервал выборки" не отменена, но является устаревшим механизмом, функционально менее гибким, чем функции выборки с новым механизмом, реализуемым при задании ПАРАМЕТР>=32. Везде в старых проектах, где эта функция применялась, она будет работать. Если записи за предыдущие сутки в архиве имеются, они будут выбраны заданием интервала "За предыдущие сутки". Но и в старых, и в новых проектах при использовании любых механизмов (и старых, и новых) при попытке задания временных границ выборки, выходящих за пределы начала архива, заказываемые границы выборки будут выравниваться таким образом, чтобы они попали в пределы временного диапазона имеющихся в архиве записей. В дальнейшем мы добавим вывод кодов ошибки при попытках реализации подобных выборок. Кстати, диагностическая переменная @q_SIAD_Q при соответствующих настройках позволит Вам отслеживать реальные временные границы в архиве и соответственно оценивать корректность осуществляемых выборок.
2. Чтобы задать произвольный временной диапазон с помощью параметров OFFSET (АППАРАТНОЕ ЗНАЧЕНИЕ) и DELTA (ARG001), надо вычислить программным путем в формате UDINT - "Конец временного диапазона" OFFSET и записать его в АППАРАТНОЕ ЗНАЧЕНИЕ канала - величину временного интервала DELTA = T_TO - T_FROM и записать его в аргумент ARG001 канала.
3. При использовании ПАРАМЕТР>=32 первые 2 аргумента канала выборки должны иметь формат DATE&TIME и границы временного интервала задаются в этих аргументах в явном виде.
Posted by Soyuz (Участник № / Member № 2028) on :
1 Если Вы говорите, что интервал "За предыдущие сутки" является полностью рабочим, но просто устаревший механизм, тогда почему данные извлекаемые из архива за предыдущие сутки не правильные (смотрите первое сообщение темы)?
2 Как Вы писали, "Но и в старых, и в новых проектах при использовании любых механизмов (и старых, и новых) при попытке задания временных границ выборки, выходящих за пределы начала архива, заказываемые границы выборки будут выравниваться таким образом, чтобы они попали в пределы временного диапазона имеющихся в архиве записей.", выравнивается нижняя и верхняя граница запроса, или только нижняя граница?
3 Объясните на примере, как задавать диапазон с помощью OFFSET, чтобы извлечь данные за прошедшие сутки. То есть, что и куда писать?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. У Вас за этот период не было данных в архиве.
2. Левая граница сдвигается на первую запись в архив. Конечная граница принимает значение либо значение "начало архива + 1 минута", либо остается той, которую Вы задали, в зависимости от того, существует ли архив на этот момент времени.
3. В аппаратное значение посылаете значение 23:59:59 предыдущих суток. Например, 20.07.2009 23:59:59 (1248119999 в формате Long).
В ARG001 посылате значение 86399.
Posted by Soyuz (Участник № / Member № 2028) on :
1. Данных не было, но по запросу за предыдущие сутки, из SIAD вместо нулей, выдаёт первое значение за текущие сутки. Так и должно быть?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Да, именно так. В следующем релизе мы уисилим диагностику и в этом случае будем выставлять признак недостоверности.