Перейти к содержанию

Отчет о наработке в моточасах

Для подготовки отчета о времени наработки агрегата рассмотрим пример части технологического процесса работы насосов. Тип создаваемого отчета — периодический.

В качестве активных в проект необходимо добавить следующие теги:

Тег Тип данных Описание
Насос 1
Boolean
Работа насоса 1
Насос 2
Boolean
Работа насоса 2
Насос 3
Boolean
Работа насоса 3
Начало периода
DateTime
Начало периода времени, за который требуется сформировать отчет
Конец периода
DateTime
Конец периода времени, за который требуется сформировать отчет
Время наработки Н1
Double
Время наработки насоса 1 (секунды)
Время наработки Н2
Double
Время наработки насоса 2 (секунды)
Время наработки Н3
Double
Время наработки насоса 3 (секунды)
Сброс времени наработки
Boolean
Обнуление значения времени наработки

Примечание

Перед созданием отчета необходимо:

  1. Включить архивацию для тегов "Время наработки Н1", "Время наработки Н2" и "Время наработки Н3", установив флаг "Активность" в свойстве "Сохранение в БД".
  2. Для каждого тега отключить флаг "Сохранить только в пределах шкалы".

    В новом проекте по умолчанию шкала имеет максимальное значение диапазона, равное 100. Поскольку предполагается архивировать значения, превышающие этот предел, необходимо либо отключить опцию сохранения в пределах шкалы, либо установить для неё новое максимальное значение.

  3. Заблаговременно развернуть проект на сервере, чтобы обеспечить накопление исторических данных в базе.

Пример:

Составить отчет за временной промежуток не превышающий 24 часа, ограниченный значениями тегов "Начало периода" и "Конец периода". В отчет необходимо вывести исторические данные тегов "Время наработки Н1", "Время наработки Н2" и "Время наработки Н3".

Добавим новую мнемосхему в проект. С помощью полей для ввода будем указывать начальный и конечный периоды, а также формировать отчет и выполнять сброс времени наработки.

На мнемосхеме разместите анимированные фигуры насосов из "Общей галереи". Для тегов "Начало периода" и "Конец периода" используйте компонент "Ввод даты и времени" из "Палитры компонентов". Кроме того, добавьте две "Многофункциональные кнопки" из "Общей галереи" и определите им действие:

В примере расчет моточасов наработки производится внутри "Симплайт 5". Для этого потребуется написать скрипт, который будет вычислять время работы каждого насоса в секундах. В скрипте потребуется самостоятельно добавить библиотеку для работы с временем наработки тега.

getWorkTime.lua
-- Подключение модулей
local async = require("async")
local motoHours = require("lib.motoHours")              
local tagApi = require("simplight.api.channels.sync")

-- Массив насосов
local pumps = {
    {key = "p1", name = "Насос 1", desc = "Насос 1"},
    {key = "p2", name = "Насос 2", desc = "Насос 2"},
    {key = "p3", name = "Насос 3", desc = "Насос 3"}
}

-- Таблица для хранения моточасов
local pumpWatchers = {}

for _, pump in ipairs(pumps) do
    pumpWatchers[pump.key] = motoHours.watch({
        watchTagName = pump.name,
        resetTagName = "Сброс времени наработки",
    })
end

-- Вычисление времени наработки насосов в секундах
setInterval(function()
    local t1 = math.floor(pumpWatchers.p1.getTotalWorkTime() / 1000)
    local t2 = math.floor(pumpWatchers.p2.getTotalWorkTime() / 1000)
    local t3 = math.floor(pumpWatchers.p3.getTotalWorkTime() / 1000)

-- Запись значений времени наработки в теги
tagApi.writeMany({
  values={
    { name="Время наработки Н1", value = t1, quality = 0xC0  },
    { name="Время наработки Н2", value = t2, quality = 0xC0  },
    { name="Время наработки Н3", value = t3, quality = 0xC0  },
  }})

end, 1000)
Далее создайте шаблон отчета в редакторе и добавьте источник данных.

В диалоговом окне "Создание источника данных" выберите тип "Периодический". После этого укажите имя источника и имя для всех переменных, соответствующих данному типу источника.

В словаре отчета будет добавлен источник данных "Данные" с единственной колонкой "Время". Также будут определены три переменные: "Данные_Начало", "Данные_Конец" и "Данные_Интервал".

Теперь система будет передавать в этот источник только те данные из архива, которые находятся в интервале времени от значения переменной "Данные_Начало" до значения переменной "Данные_Конец". Все остальные данные, находящиеся вне этого временного промежутка, не будут включены в источник.

Далее свяжите теги проекта "Начало периода" и "Конец периода" с соответствующими переменными источника "Данные_Начало" и "Данные_Конец". В процессе формирования отчета значения переменных "Данные_Начало" и "Данные_Конец" будут автоматически заменены на значения тегов проекта "Начало периода" и "Конец периода" соответственно. Это позволит источнику "Данные" оперировать заданным временным периодом.

В источнике добавьте три колонки, соответствующие поставленной задаче: "Время наработки Н1", "Время наработки Н2", "Время наработки Н3".

На данном этапе добавьте в источник тег времени наработки насоса 1. Для этого нажмите правой кнопкой мыши на переменной "Время наработки Н1" и выберите пункт "Добавить в источник".

В диалоговом окне добавления новой колонки выберите источник "Данные", тип обработки "Последнее значение" и назовите новую колонку "Время наработки Н1". Для данного тега в отчет будет передано значение, которое было зафиксировано последним в указанном интервале.

Выполните аналогичные действия для тегов "Время наработки Н2" и "Время наработки Н3", присвоив им соответстующие имена и тип. После выполнения всех действий структура словаря должна выглядеть следующим образом.

Чтобы изменить интервал, с которым генератор отчета будет извлекать значения из базы данных, внесите изменения в переменную "Данные_интервал". Для этого дважды нажмите левой кнопкой мыши по данной переменной в словаре. В диалоговом окне "Изменение переменной" установите значение 86400 секунд, что соответствует 24 часам. Данный интервал выбран с целью формирования в отчете только одной строки с последними архивируемыми значениями.

Примечание

Существует возможность связать переменную с целочисленным тегом проекта и отобразить ее на мнемосхеме, чтобы оператор мог выбирать не только время начала и окончания отчета, но и временной интервал.

На данном этапе добавьте заголовок к отчету. Для этого воспользуйтесь кнопкой "Секции" "Панели инструментов", либо активируйте меню "Вставить". Заголовок выводится один раз в начале отчета, перед другими бэндами.

После переноса заголовка он автоматически расположится в верхней области отчета. Теперь в зоне бэнда "Заголовок отчета" требуется разместить элемент "Текст" заголовка.

Откроется окно редактирования текста. В нем укажите название для заголовка, а также перенесите переменную "Данные конец", чтобы автоматически сформировать актуальную дату и время в шапке отчета.

Бэнд "Данные" является одним из наиболее часто используемых бэндов. Он берет данные из источника, с которым связан, и выводится столько раз, сколько строк в источнике данных. Перетащите источник "Данные" в шаблон отчета.

В диалоговом окне "Данные" установите флаги для всех колонок, а также активируйте флаг "Заголовок данных".

В колонке "Время" удалите переменную, добавленную по умолчанию и перенесите в данную ячейку переменную "Данные_Конец", чтобы выводить актуальное время для конца периода.

С помощью инструментальной панели определите требуемое форматирование для текста и всех ячеек отчета.

Если все настройки выполнены корректно, то при активировании предварительного просмотра отчета появятся значения о наработке в секундах.

Для пересчета в минуты выйдите из режима просмотра. Нажмите два раза левой кнопкой мыши на переменной "Время наработки Н1", перейдите на вкладку "Выражение" и добавьте арифметическое действие внутри фигурных скобок. Для остальных переменных проделайте аналогичные действия.

При активировании предварительного просмотра отчета после произведенного деления в значении переменной отображается избыточное количество знаков после запятой.

Чтобы изменить формат вывода значения, нажмите левой кнопкой мыши на переменной в столбце, выберите вкладку "Свойства" и в поле формат нажмите на кнопку ✏️.

В диалоговом окне "Формат" укажите количество знаков дробной части в соответствующем поле.

С помощью меню "Просмотр" повторно выполните построение отчета, чтобы убедиться, что формат задан корректно и дробная часть не отображается. После этого сформируйте отчет с мнемосхемы.