Решил проблему следующим образом, за идею спасибо xenonci.
1. Передача данных из контроллера во внутренние переменные каждую секунду
2. Макрос, который преобразует переменные float в int, сохраняя точность 2 знака после запятой (формула на картинке ниже), выполняется циклично
3. Создана выборка, привязанная к переменным int, создается новая ежедневно
4. Окно с трендами, с некоторыми нюансами: оси выполнены в виде картинки, так как значения в выборке умноженные на 100.
5. Для корректного отображения значений на линии наблюдения, в поле вывода применены следующие настройки
Выводы:
+: раньше длина выборки была 24 слова, теперь 12. Процессору проще работать с int чем с float.
-: для успокоения пришлось увеличить частоту выборки до 5 секунд. При бэкапе выборки, данные умноженные на 100.
Главное: панель не зависает
Первоначально пытался сделать без предварительного копирования тегов из контроллера во внутреннюю память во float, используя скрипт, который сразу в int переделывал, но почему-то иногда значения в int были равны 0, отказался от этого.
Проблема с зависанием возникает при относительно большом объеме выборки, проблему можно было бы решить делая ее меньшего размера, но тогда не удастся удобно просматривать тренды за предыдущие даты.
mrstrong7 писал(а):Добрый день.
Если создать выборку с именем файла %Y%m%d%H и автоматическим его созданием при изменении имени, т.е выборка будет создаваться каждый час, то функция FindEventLogIndex, работает некорректно.
Создал следующие выборки:
2016120700.dtl
2016120701.dtl
2016120702.dtl
2016120703.dtl
2016120903.dtl
2016120904.dtl
2016120905.dtl
2016121105.dtl
2016121106.dtl
2016121107.dtl
2016121108.dtl
result =FindEventLogIndex(2016, 12, 11, index), index=0, ожидаю 0
result =FindEventLogIndex(2016, 12, 10, index), index=-1, ожидаю -1
result =FindEventLogIndex(2016, 12, 9, index), index=1, ожидаю 4, вместо необходимой отображается 2016121107.dtl
result =FindEventLogIndex(2016, 12, 8, index), index=-1, ожидаю -1
result =FindEventLogIndex(2016, 12, 7, index), index=2, ожидаю 7, вместо необходимой отображается 2016121106.dtl
result =FindEventLogIndex(2016, 12, 6, index), index=-1, ожидаю -1
Причем, если вывести "управление журналом" в поле ввода/вывода и вручную вводить туда значения index, то выборка 2016121108.dtl соответствует 0, а выборка 2016120700.dtl соответствует 10.
Каким образом отображать данные из разных выборок в "график журналов" если выборка создается не каждый день, а например каждый час (также нужно учесть, что панель может быть отключена в некоторые дни)?
Спасибо.
На что был получен ответ
den_po писал(а):К сожалению, решения для вашего случая нет и не планируется.
mrstrong7 писал(а):den_po писал(а):К сожалению, решения для вашего случая нет и не планируется.
Это бы решило проблему с зависанием трендов. Можно было бы делать выборки меньшего размера, что привело бы к решению проблемы с зависанием трендов. Но какой смысл делать их чаще, если посмотреть накопленные данные в удобном виде на панели невозможно. Может следовало бы запланировать решение данного вопроса или сделать так чтобы тренды работали должным образом?
den_po писал(а):mrstrong7 писал(а):den_po писал(а):К сожалению, решения для вашего случая нет и не планируется.
Это бы решило проблему с зависанием трендов. Можно было бы делать выборки меньшего размера, что привело бы к решению проблемы с зависанием трендов. Но какой смысл делать их чаще, если посмотреть накопленные данные в удобном виде на панели невозможно. Может следовало бы запланировать решение данного вопроса или сделать так чтобы тренды работали должным образом?
А вот по зависанию обещали подумать, как можно побороть.
Ждать решения проблемы производителем времени нет, пришлось делать данным способом. Решил написать, вдруг кому-то пригодится.