Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 25

Тема: Отчет нарастающий итог

  1. #11

    По умолчанию

    Прочитать про что конкретно?
    Спасибо.

  2. #12

    По умолчанию

    Про скрипты... Ну про них вроде разобрался более-менее.
    Сейчас есть необходимость обращения к предыдущему значению параметра именно из архива. Т.к. если сохранять его в виде какой-то переменной в проекте, то с выключением программы или компьютера - оно потеряется.
    Не подскажите синтаксис обращения из скрипта к последнему/предпоследнему архивированному значению параметра?

  3. #13

    По умолчанию

    В вашем случае нет необходимости обращаться к архивному значению - можно просто сохранять значение на выходе скрипта (используя восстановление при рестарте).
    В приложении проект со двумя вариантами скриптов - подсчет по импульсу и по нарастающему итогу. Оба варианта сохраняют значения между рестартами.
    Вложения Вложения
    Спасибо.

  4. #14

    По умолчанию

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

    На ОВЕНовском OPC-сервере для приборов c интерфейсом RS-485 и протоколом ОВЕН нет передачи сигнала сброса для счетчиков СИ-8, передаётся только само значение с него. Поэтому скрипт получился такой:

    using System;
    using MasterSCADA.Script.FB;
    using FB;

    public partial class ФБ : ScriptBase
    {
    public override void Execute()
    {

    if (DCNT > DCNT_OLD)
    {Counter=Counter+(DCNT-DCNT_OLD);
    DCNT_OLD=DCNT;}

    if ((DCNT == 0) && (DCNT != DCNT_OLD))
    {DCNT_OLD=0;}

    if (DCNT1 < DCNT_OLD1)
    {DCNT_OLD1 = DCNT1;}

    }
    }


    DCNT - входная переменная, значение со счетчика
    DCNT_OLD - выходная переменная, сохраняется при рестарте
    Counter - выходная переменная, значение рассчитываемое скриптом, сохраняется при рестарте.

    Второй IF нужен для ситуации когда значение на счетчике сбросилось в ноль но ещё не прибавилось, чтобы программа дальше могла нормально работать.

    Третий - когда кто-то всё-таки сбросил счетчик пока компьютер был выключен.
    Последний раз редактировалось Ivan-DM; 29.07.2014 в 09:34.

  5. #15

    По умолчанию

    Как Вы и говорили - проект разрастается. Купили 4 MSTR100, всё работает, приложил самый маленький проект - на один счетчик (sa пароль - 123).

    Теперь от меня хотят чтобы в конце отчета, рядом с общим числом произведённой продукции за время между началом отчета и концом отчета, выводилась ещё и средняя производительность за этот указанный период в единицу времени (выбранного интервала). Т.е. если посмотреть на сам отчет, это будет - среднее арифметическое по всем строчкам отчета (разумеется кроме последней-итоговой).

    Вроде всё просто, надо поставить в итог данных дополнительный бенд для которого в качестве обработки данных будет выбрано "среднее", но тогда он будет выдавать среднее от общего накопительного итога счетчика, с которым мы собственно и имеем дело - большого числа. А надо чтоб выдавал среднее от разностей этого большого числа, которые выводятся в отчете но как это сделать стандартными средствами MasterSCADA не могу понять-найти. Есть похожий пример с расходом газа, но там такого нет. Как вывести среднее от результатов вычисления?

    То есть сейчас в отчёте всё примерно так (при выборе интервала в 1 минуту):

    00:00 - 1
    00:01 - 2
    00:02 - 2
    00:03 - 1

    Итого: 6

    А хочется так:

    00:00 - 1
    00:01 - 2
    00:02 - 2
    00:03 - 1

    Итого: 6
    Средняя производительность: 1,5 в 1 мин

    Как-то поиграться с обработкой значений - "Количество значений" не получилось, это количество значений не в отчете как я думал, в архиве MasterSCADA (примерно соответствует накопительному итогу, т.к. архивируется оно у меня по изменению, а изменяется (обычно) на 1). Может быть можно в каком-то виде получить количество генерируемых строк в отчете?
    Вложения Вложения
    Последний раз редактировалось Ivan-DM; 29.07.2014 в 12:53.

  6. #16

    По умолчанию

    Если у вас значения идут нарастающим итогом, то нужно написать в поле выражение примерно такой код:
    {((int)Last(DataИсточникДанных1,ИсточникДанных1.Чи слоИмпульсов)-(int)First(DataИсточникДанных1,ИсточникДанных1.Чис лоИмпульсов))
    /(double)Count(DataИсточникДанных1)}
    Где DataИсточникДанных1 - имя бэнда, ИсточникДанных1.ЧислоИмпульсов - ваша переменная.
    Last - получить последнее значение переменной, First - получить первое значение переменной, Count - получить количество строк.
    (double) - приведение к вещественному типу данных (если колонка имеет целый тип данных, то нужно записать (int))
    Спасибо.

  7. #17

    По умолчанию

    Больше спасибо за ответ!!

    Пробую по разному, пока слабо получается. У меня два источника данных - один периодический, для основных строк отчета, а второй - итоговый, для "Итого"/ Я правильно понял, что в вашем ответе подразумевается второй источник данных?
    Нужно ли для "Count" указывать переменную как это делается для "First/Last"? Просто "First/Last" работают хоть как-то по отдельности (даже не в составе приведённой формулы), а вот "Count" что-то никак не хочет.
    Зачем приводить к вещественному типу данных количество строк?
    Не совсем ясно что такое "имя бэнда". Смотрел в PDF-ки, судя по ним это то что написано в графе свойств "наименование" когда нажимаешь на него. У меня это либо "Данные_Архив_MasterSCADA", либо "ИтогДанных_Архив_MasterSCADA". Или может это всё-таки имя источника данных ("Архив_MasterSCADA" и "Итоговый" соответственно)?
    Влияет ли вариант обработки данных на код который необходимо будет написать в поле выражение ?
    Последний раз редактировалось Ivan-DM; 29.07.2014 в 17:21.

  8. #18

    По умолчанию

    Цитата Сообщение от Ivan-DM Посмотреть сообщение
    Пробую по разному, пока слабо получается. У меня два источника данных - один периодический, для основных строк отчета, а второй - итоговый, для "Итого"/ Я правильно понял, что в вашем ответе подразумевается второй источник данных?
    Ответ был дан в общем виде. Нужно использовать тот источник данных, который нужен для этой задачи.

    Цитата Сообщение от Ivan-DM Посмотреть сообщение
    Нужно ли для "Count" указывать переменную как это делается для "First/Last"? Просто "First/Last" работают хоть как-то по отдельности (даже не в составе приведённой формулы), а вот "Count" что-то никак не хочет.
    Нет, не нужно.
    Вы можете поле итога поочередно настроить на определение First, Last и Count - на вкладке "Выражение" будет код. Затем можно составить из трех выражений результирующее. Оно будет выглядеть примерно так, как мы написали.

    Цитата Сообщение от Ivan-DM Посмотреть сообщение
    Зачем приводить к вещественному типу данных количество строк?
    Чтобы получить на выходе ячейки вещественный тип данных.

    Цитата Сообщение от Ivan-DM Посмотреть сообщение
    Не совсем ясно что такое "имя бэнда". Смотрел в PDF-ки, судя по ним это то что написано в графе свойств "наименование" когда нажимаешь на него. У меня это либо "Данные_Архив_MasterSCADA", либо "ИтогДанных_Архив_MasterSCADA".
    имя бэнда - это его имя, которые выводится в его заголовке. В вашем случае это "Данные_Архив_MasterSCADA"

    Цитата Сообщение от Ivan-DM Посмотреть сообщение
    Влияет ли вариант обработки данных на код который необходимо будет написать в поле выражение ?
    Нет.
    Спасибо.

  9. #19

    По умолчанию

    Заработало!
    Получилось через "{Итоговый.Counter1 / Count(Данные_Архив_MasterSCADA)}" прописанный в выражении.
    Counter1 обрабатывается как "разница" и находится в итоговом отчете, поэтому выдаёт разницу между началом и концом отчета вообще, и делится на количество строчек в отчёте. Таким образом получаем среднее.

    Ещё раз спасибо за то что рассказали про "Count" и имя бэнда!

  10. #20

    По умолчанию

    А как можно считать разницу , не задавая период. Т.е надо вывести первую и последнию величину и разницу, но не выводить промежуточные значениия. Отрезок может быть равен как и дню так и году. И игнорировались нулевые значения.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Открыть отчет по имени шаблона
    от Terminat в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 06.11.2013, 16:55
  2. Отчет - почасовое среднее значение из архива
    от Alexei_MolKom в разделе Master SCADA 3
    Ответов: 11
    Последнее сообщение: 05.03.2013, 22:09
  3. Отчет в Мастерскада
    от Tola в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 03.09.2012, 21:32
  4. Как я провел лето. Отчет.
    от D_O_K в разделе Трёп (Курилка)
    Ответов: 68
    Последнее сообщение: 23.08.2011, 18:58

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •