02-16-2024, 12:59 PM
Для построения отчетов за длительные периоды в WINNUM используется блокчейн.
Длительности тегов рассчитываются в конце каждого дня для построения длительных отчетов.
Эти же значения можно использовать в динамических приложениях, что позволяет использовать данные вместо многочисленных запросов и сокращать время выполнения команд.
Так, например, для получения суммарного времени работы под нагрузкой для конкретного станка можно использовать функцию getPriorityTagDuration, в результате мы получим массив из промежутков, когда тег выполнялся с учетом приоритетности, но если временной интервал указать больше двух-трех дней, то результатом будет огромный массив и выполнятся такой запрос может достаточно долго, может даже не хватить оперативной памяти, выделенной под работу браузера и получить зависание всей страницы.
Что же делать, если нас интересует график загрузки оборудования за год? Для этого работают роботы приложений. Рассчитанное значение тегов за каждый день уже с учетом приоритетности и календаря записано роботом. Для получения этих значений достаточно воспользоваться стандартной функцией getSignal, и указать вместо сигнала адрес в структуре блокчейн.
Общая структура запроса:
•[App ID].[Tag ID].[тип расчета].[тип значения] = значение
•Типы расчета:
•Типы значений:
•PER – проценты, HOUR – часы
Пример: •17.145.SCHED_PRIO.HOUR
Еще быстрее можно посчитать значения за несколько месяцев, если нас интересуют все дни месяца:
Тогда нужно просто добавить "m", значения появляются в первый день следующего месяца, поэтому его нужно тоже захватить во временной промежуток
Разница во времени выполнения ощущается даже при построения отчета за несколько дней.
Hello World!:
- Сообщений не найдено.
Длительности тегов рассчитываются в конце каждого дня для построения длительных отчетов.
Эти же значения можно использовать в динамических приложениях, что позволяет использовать данные вместо многочисленных запросов и сокращать время выполнения команд.
Так, например, для получения суммарного времени работы под нагрузкой для конкретного станка можно использовать функцию 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!:
- Сообщений не найдено.

