1
Ошибки / Артефакты функции ArchiveValueByTime
« : 02 Декабря 2024, 01:57:47 »
Здравствуйте.
Значение функции ArchiveValueByTime отличается от значения из архива при одинаковой временной метке.
Тест:
- генерация возрастающей последовательности с периодом 1 секунда;
- запись в таблицу до 32 последних пар значений-времени последовательности по команде (т.е. последних реально записанных в БД);
- по клику на строке таблицы вызывается функция с параметром времени из этой строки, результат записывается в последний столбец этой строки, теперь можно сравнить значения из архива и функции.
Управление:
- кнопка "ОСТАНОВИТЬ ЗАПИСЬ"/"ПРОДОЛЖИТЬ" - останов/продолжение счета последовательности (запись в архив по изменению переменной);
- кнопка "ЗАПОЛНИТЬ ТАБЛИЦУ" - запись в таблицу;
- кнопка "ВЫЧИСЛИТЬ ФУНКЦИЮ" - вычислить функцию по всем строкам;
- параметр "Сдвиг, сек" [-20..20] - сдвиг значения параметра функции.
Собственно тестирование:
- предварительно желательно очистить таблицы проекта и контролировать таблицу трендов средствами БД.
- запустить проект и подождать пока значение последовательности достигнет значения больше 32 (ожидаемая запись буферов), заполнить таблицу;
- вычислить функцию и/или одиночное вычисление/перевычисление функции по ЛКМ на строке;
- изменяя значение параметра "Сдвиг" можно добиться совпадения значений функции со значениями из таблицы. (магическое значение параметра равно -9). Магическое значение сохраняется и для последовательности с периодом 2 секунды.
Ещё есть предположение, что последнее значение (уже архивированное или в буфере) не требует сдвига.
Значение функции ArchiveValueByTime отличается от значения из архива при одинаковой временной метке.
Тест:
- генерация возрастающей последовательности с периодом 1 секунда;
- запись в таблицу до 32 последних пар значений-времени последовательности по команде (т.е. последних реально записанных в БД);
- по клику на строке таблицы вызывается функция с параметром времени из этой строки, результат записывается в последний столбец этой строки, теперь можно сравнить значения из архива и функции.
Управление:
- кнопка "ОСТАНОВИТЬ ЗАПИСЬ"/"ПРОДОЛЖИТЬ" - останов/продолжение счета последовательности (запись в архив по изменению переменной);
- кнопка "ЗАПОЛНИТЬ ТАБЛИЦУ" - запись в таблицу;
- кнопка "ВЫЧИСЛИТЬ ФУНКЦИЮ" - вычислить функцию по всем строкам;
- параметр "Сдвиг, сек" [-20..20] - сдвиг значения параметра функции.
Собственно тестирование:
- предварительно желательно очистить таблицы проекта и контролировать таблицу трендов средствами БД.
- запустить проект и подождать пока значение последовательности достигнет значения больше 32 (ожидаемая запись буферов), заполнить таблицу;
- вычислить функцию и/или одиночное вычисление/перевычисление функции по ЛКМ на строке;
- изменяя значение параметра "Сдвиг" можно добиться совпадения значений функции со значениями из таблицы. (магическое значение параметра равно -9). Магическое значение сохраняется и для последовательности с периодом 2 секунды.
Ещё есть предположение, что последнее значение (уже архивированное или в буфере) не требует сдвига.