Рейтинг темы:
  • 1 Голос(ов) - 5 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Как получить расчеты тегов за длительные периоды
#1
Для построения отчетов за длительные периоды в WINNUM используется блокчейн. 

 Длительности тегов рассчитываются в конце каждого дня для построения длительных отчетов. 
Эти же значения можно использовать в динамических приложениях, что позволяет использовать данные вместо многочисленных запросов и сокращать время выполнения команд. 

 Так, например, для получения суммарного времени работы под нагрузкой для конкретного станка можно использовать функцию getPriorityTagDuration, в результате мы получим массив из промежутков, когда тег выполнялся с учетом приоритетности, но если временной интервал указать больше двух-трех дней, то результатом будет огромный массив и выполнятся такой запрос может достаточно долго, может даже не хватить оперативной памяти, выделенной под работу браузера и получить зависание всей страницы.

 Что же делать, если нас интересует график загрузки оборудования за год? Для этого работают роботы приложений. Рассчитанное значение тегов за каждый день уже с учетом приоритетности и календаря записано роботом. Для получения этих значений достаточно воспользоваться стандартной функцией getSignal, и указать вместо сигнала адрес в структуре блокчейн.

 Общая структура запроса:
[App ID].[Tag ID].[тип расчета].[тип значения] = значение

Типы расчета:
SCHED_PRIO – с приоритетностью по календарю
SCHED_NOPRIO - без приоритетности по календарю
REG_NOPRIO - без приоритетности без календаря

Типы значений:
PER – проценты, HOUR –
часы


Пример: 17.145.SCHED_PRIO.HOUR
17 – ID приложения
145 – ID тега
SCHED_PRIO – расчет по календарю с учетом приоритетности
HOUR – результат получить в миллисекундах суммарно по всем сменам

Код:
var UUID = "GHIKFKGL-IR85-85JR-JGHUTKOL" ;// UUID - это ключ идентификатор продукта (станка)
var  tagsPriorityID = '6.1.SHED_PRIO.HOUR'; //Из приложение 6 получаем тег NC_WIP с учетом приоритетности по календарю в миллисекундах
var  dateFrom = "2022-12-12 00:00:00";
var dateTo = "2024-02-26 15:40:00";
var wipResult; // Результат за все время положим сюда

baseSdkUtils.service.WNConnectorHelper.getSignal(UUID, tagsPriorityID, false, false, dateFrom, dateTo,'',function(data){
  if (baseSdkUtils.isSuccess(data) ){
    for (var t = 0; t < data.getElementsByTagName('item').length; t++){

                  var itemT = data.getElementsByTagName('item')[t];
                        var valueT = Math.round((((parseFloat(itemT.getAttribute('value'))/3600000);      //Получаем отдельно значение в округленном виде, в часах
                        wipResult +=  valueT; // находим сумму за все время
    }
  }
});

Еще быстрее можно посчитать значения за несколько месяцев, если нас интересуют все дни месяца:
Тогда нужно просто добавить "m", значения появляются в первый день следующего месяца, поэтому его нужно тоже захватить во временной промежуток
Код:
var tagsPriorityID = '6.1.m.SHED_PRIO.HOUR';
var dateFrom = "2022-12-01 00:00:00";
var dateTo = "2024-02-01 15:40:00";

Разница во времени выполнения ощущается даже при построения отчета за несколько дней.

Hello World!:

- Сообщений не найдено.
Ответ


Перейти к сообществу:


Пользователи, просматривающие эту тему: 1 Гость(ей)