PDA

Просмотр полной версии : Как сосчитать сумму средних значений?



mib_z
27.09.2011, 13:45
Добрый день. Master Scada занимаюсь совсем не давно. Есть проект в котором данные поступают с двух приборов СИ 8 и ТРМ 202. Создана формула для расчета холодопроизводительности в которой данные прибора СИ 8 перемножаются на разность показаний каналов ТРМ 202.
1.Какую функцию надо ввести, что бы Холодопроизводительность отображалась средняя за час ( с 00ч до 01ч, с 01ч до 02ч и т.д.)?
2.Как можно сложить среднечасовые данные за сутки и получить холодопотребление в сутки?

SCADAMaster
27.09.2011, 17:12
1.Какую функцию надо ввести, что бы Холодопроизводительность отображалась средняя за час ( с 00ч до 01ч, с 01ч до 02ч и т.д.)?

Для этого вам нужно воспользоваться модулем "Расчет". У него есть специальная функция - интегральное среднее AbsArchAverage( ).
Данная функция вычисляет среднее значение на определенном временном интервале.


2.Как можно сложить среднечасовые данные за сутки и получить холодопотребление в сутки?
Той же функцией. Просто введете диапазон вычисления - начало суток и конец суток. Для этого есть специальная функция - CurDay( )

mib_z
28.09.2011, 08:28
Спасибо, оказывается это так просто!

mib_z
28.09.2011, 09:19
Той же функцией. Просто введете диапазон вычисления - начало суток и конец суток. Для этого есть специальная функция - CurDay( )

Это получится среднесуточное значение, а мне надо СУММУ среднечасовых. Или я что то не понимаю?

SCADAMaster
28.09.2011, 12:14
Ну тогда реализуйте все в модуле расчет - суммируйте значения функций за каждый час, что-то вроде:
AbsArchAverage(Значение, 0 часов, 1 час)+AbsArchAverage(Значение, 1 час, 2 час)+....+AbsArchAverage(Значение, 23 часов, 0 час)

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

mib_z
29.09.2011, 15:55
Спасибо, все получилось как хотелось! А как бы еще сделать, что бы результаты модуля расчет выводились в диаграмму в виде столбиков за каждый час?

SCADAMaster
29.09.2011, 16:08
То есть вам нужно формировать и сохранять отчет со столбчатой диаграммой?
В этой теме есть документация, в том числе по редактору отчетов:
http://www.owen.ru/forum/showthread.php?t=10704
Посмотрите. Там есть возможность добавить диаграмму со столбцами.

Так можно в модуле "Тренд", в настройках пера, включить настройку "Сегменты" в режим "Ступенька".

mib_z
18.05.2012, 09:10
Ну тогда реализуйте все в модуле расчет - суммируйте значения функций за каждый час, что-то вроде:
AbsArchAverage(Значение, 0 часов, 1 час)+AbsArchAverage(Значение, 1 час, 2 час)+....+AbsArchAverage(Значение, 23 часов, 0 час)

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

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

SCADAMaster
18.05.2012, 09:21
Стояла старая версия скдады, обновили до 3.8.
Текущей является 3.4 SP1. До какой версии вы обновили (выполните Справка - О программе, и скопируйте текст из поля)?


Средние значения не стали сбрасываться на начало суток а просто изменяются за текущий час. И соответственно сумма среднечасовых значений за сутки считается не правильно.
Пришлите в техподдержку на support(собака) insat.ru небольшой проект с вашим расчетом, и более подробное описание проблемы (желательно со скриншотами).

mib_z
14.03.2013, 15:47
Считаем сумму средних значений по этой формуле: AbsArchAverage(Значение, 0 часов, 1 час)+AbsArchAverage(Значение, 1 час, 2 час)+....+AbsArchAverage(Значение, 23 часов, 0 час)
За текущие сутки средние значения с 0 до 1 складываются со со значением с 1 до 2 и т.д.
Наступают новые сутки ( к примеру 6- часов утра) средние значения с 0 до 1, с 1-2 ... 5-6 новых суток складываются со средними значениями с 6-7 ... 23-24 прошедших суток, тк средние значения прошедших суток не обнуляются.
Как сделать чтобы при наступлении новых суток значения обнулялись и счет начинался нарастающим итогом с 0 ?

И построить график посуточных значений за месяц?

SCADAMaster
14.03.2013, 19:57
Считаем сумму средних значений по этой формуле: AbsArchAverage(Значение, 0 часов, 1 час)+AbsArchAverage(Значение, 1 час, 2 час)+....+AbsArchAverage(Значение, 23 часов, 0 час)
За текущие сутки средние значения с 0 до 1 складываются со со значением с 1 до 2 и т.д.

А зачем так сложно? Почему нельзя с помощью этой же функции считать за все сутки?



И построить график посуточных значений за месяц?
Нужно в виде таблицы или графика?
Можно с помощью редактора отчетов - у него, у колонки есть способ обработки "Интеграл".

mib_z
15.03.2013, 10:22
Нам нужны среднечасовые значения и сумма среднечасовых значений за сутки.
Если данную функцию применить к суткам, мы получим среднесуточное значение.

SCADAMaster
15.03.2013, 11:44
То есть у вас 24 расчета, на каждый час, и еще один расчет который суммирует все значения?

mib_z
15.03.2013, 13:13
Да, совершенно верно.

SCADAMaster
15.03.2013, 15:06
А как вы формулу составили?
Попробуйте так сделать. Для интервала 0 часов - 1 час:
AbsArchIntegral(Переменная,CurDay( ),CurDay( )+3600, 3600 )
Для интервала с 1 часа до 2:
AbsArchIntegral(Переменная,CurDay( )+3600,CurDay( )+2*3600, 3600 )
и так далее.
В этом случае расчет будет вестись только в текущих сутках. Поэтому когда сутки закончаться, то данные за не сущесвующий интервал вычисляться не будут.

mib_z
18.03.2013, 12:39
Спасибо, все работает. Только вот с графиком за месяц не могу разобраться. На компе нет майкрософт офиса, есть только опен офис, он отчеты не хочет делать. Как можно посуточные занчения вывести за месяц в виде таблицы или графика?

SCADAMaster
18.03.2013, 12:53
А зачем вам офис?
Воспользуйтесь нашим MasterReport - он удобнее.
По работе с ним есть видеопримеры:
http://www.masterscada.ru/?additional_section_id=233
И текстовая документация:
http://www.masterscada.ru/services/support/art_step_by_step/Otchet.ZIP

kao
25.03.2013, 06:22
Чтобы завести архив среднечасовых значений переменной, применил расчёт с формулой AbsArchAverage( var,CurHour()-60*60,CurHour() ), назначил архивирование по изменению без моделирования ступеньки, но , к сожалению, архив имеет такой вид:
11:02:08.887 18/03/13 Норма 9056.998
11:00:40.040 18/03/13 Норма - останов 9056.998
11:00:39.729 18/03/13 Норма 9056.998
11:00:00.713 18/03/13 Норма 9056.998
10:59:59.713 18/03/13 Норма 9036.207
10:00:00.865 18/03/13 Норма 9036.207
09:59:59.818 18/03/13 Норма 9041.794
09:00:00.657 18/03/13 Норма 9041.794
08:59:59.642 18/03/13 Норма 8765.411
Как избавиться от дублирования данных и не вести архив при старте/останове проекта?

SCADAMaster
25.03.2013, 08:31
А чем вам мешает такое дублирование?
Флаг останова не записывается если включено периодическое архивирование с периодом 0.

kao
25.03.2013, 09:38
А чем вам мешает такое дублирование?

Во-первых, архив занимает в два раза больше места. Во-вторых, он должен быть корректным, если считать среднечасовое значение, например, с 10:00 до 11:00, то оно должно быть одно, а не два (логичней). При формировании отчета среднечасовых значений по изменению мне не понадобятся дополнительные фильтры. В-третьих, на основе корректного архива "среднечасовый" можно формировать архив "суммарный суточный", на основе "суммарный суточный" - "месячный", далее "годовой".

Флаг останова не записывается если включено периодическое архивирование с периодом 0.
Если включено периодическое архивирование с периодом 0, то расчет архивируется каждую секунду.

SCADAMaster
25.03.2013, 10:11
Так вам нужно выводить среднечасовые значения в отчете?
Так вычисляйте их прямо в редакторе отчетов - обработка колонки "Интегральное среднее".

kao
25.03.2013, 11:06
Так вам нужно выводить среднечасовые значения в отчете?
Так вычисляйте их прямо в редакторе отчетов - обработка колонки "Интегральное среднее".
А на основе каких данных, по вашему мнению, формировать "месячный", или "годовой" отчёт? Архив мгновенных значений через месяц либо перезапишется, либо раздуется до огромных размеров. Поэтому мне нужно, кроме архива мгновенных значений, вести архив "среднечасовый", "месячный", возможно "годовой", и выводить в отчеты.

SCADAMaster
25.03.2013, 17:52
Во-первых, архив занимает в два раза больше места. Во-вторых, он должен быть корректным, если считать среднечасовое значение, например, с 10:00 до 11:00, то оно должно быть одно, а не два (логичней). При формировании отчета среднечасовых значений по изменению мне не понадобятся дополнительные фильтры. В-третьих, на основе корректного архива "среднечасовый" можно формировать архив "суммарный суточный", на основе "суммарный суточный" - "месячный", далее "годовой".

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