Здравствуйте.
Rolich, прочтите что Вы спрашивали в первом сообщении данной темы и в итоговом описании задачи
в этом сообщении. До момента полного описания задачи, в данной теме шла абсолютно бесполезная переписка. Если Вы хотите получить подробный ответ, то в вопросе сразу максимально подробно описывайте задачу целиком(а не ее отдельные фрагменты), при необходимости прилагайте дополнительную информацию(скрипты, скриншоты и т.д.). Тогда можно будет сразу дать подробный и точный ответ. Это значительно сэкономит Ваше и наше время.
Для решения задачи необходимо использовать способ описанный Timothy Clement с некоторыми изменениями. В БД нужно создать свою таблицу и использовать ее в качестве источника данных в отчетах(подробнее
см. по ссылке). По сигналу Var2 записывайте время начала остановки в отдельную переменную. Если механизм простаивает нужное время (от 180 до 300 секунд), то в свою таблицу БД можно добавить новую строку с временем начала простоя(из переменной сформированной ранее), время окончания простоя и длительность простоя. По полученной таблице можно будет строить отчеты и при необходимости
вывести ее в скаду.
Возможно более простым способом будет использовать штатную
систему сообщений, т.к. при архивации сообщений доступна информация о времени возникновения сообщения, времени завершении сообщения и его продолжительности, чего достаточно для решения описанной задачи. Для этого нужно создать отдельную группу сообщений, к примеру с именем "Простои" и создать в ней сообщения по переменным, для которых требуется отслеживать остановку механизмов. При необходимости эту группу можно скрыть от пользователей
через настройку видимости групп сообщений. Затем в редакторе отчетов нужно создать новый отчет с типом "Сообщения", как это описано в руководстве
по ссылке. При создании источника в поле "Группа сообщений" необходимо выбрать нашу группу "Простои". Далее в отчете нужно оставить требуемые колонки, например Текст сообщения, Время, Завершено и Длительность. В итоге получится таблица с простоями оборудования.
Для того, чтобы в отчет попадали только простои "
в интервале от 180 до 300 секунд" нужно дважды кликнуть по бэнду данных, перейти на вкладку "Фильтры" и создать Фильтр -> Выражение:
(int)Сообщения.Длительность.TotalSeconds > 180 && (int)Сообщения.Длительность.TotalSeconds < 300
, где "Сообщения" - имя источника данных.
Для подсчета общего количества простоев нужно создать бэнд "Итог данных", разместить в нем компонент "Текст", дважды кликнуть по нему и написать выражение:
, где "DataСообщения" - имя бэнда данных, в который выводятся сообщения.