Как использовать формулы ?

Просмотр 15 сообщений - с 16 по 30 (из 87 всего)
  • Автор
    Сообщения
  • #2429
    Mikhail
    Модератор

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

    #2430
    Max
    Участник

    У меня получилось вызвать окно для отправки команды из табличного представления `public Dictionary<int, double> CnlValDict = new Dictionary<int, double>();

    public double CnlValGet(int cnlNum)
    {
    double val;
    return CnlValDict.TryGetValue(cnlNum, out val) ?
    val : Val(cnlNum);
    }

    public double CnlValSet(int cnlNum)
    {
    CnlValDict[cnlNum] = Cmd;
    return double.NaN;
    }` простите за такой тупой вопрос но куда это писать ? не совсем понял … я в формуле канала управления используйте CnlValSet, а в формуле входного канала CnlValGet и поставил галочку использовать формулу.

    #2431
    Max
    Участник

    а как создать CnlValDict ?

    #2432
    Max
    Участник

    Прошу прощения ) уже разобрался все работает большое спасибо ).

    #2966
    iKasper
    Участник

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

    #2976
    Mikhail
    Модератор

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

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

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

    Мы планировали решить данную задачу другим способом — разработать отчёт, который будет выводить разности для выбранных каналов за заданный период. Выходные форматы отчёта: HTML и Excel. Подойдёт ли для Вас такое решение? Правда эта работа предварительно запланирована на сентябрь-октябрь.

    #2983
    iKasper
    Участник

    Большое спасибо за оперативный ответ, любое решение лучше чем никакое.
    Т.е. я правильно понимаю, что завести значение с привязкой к каналу и вывести значение на опред. Дату\Время нельзя?

    Выходной формат HTML для отчета — это возможность в веб интерфейсе сформировать отчет или отдельная выгрузка в формате HTML как в excel?

    #2984
    Mikhail
    Модератор

    что завести значение с привязкой к каналу и вывести значение на опред. Дату\Время нельзя?

    Вопрос я не совсем понял. Но могу сказать, что пока нет формулы для входного канала, которая возьмёт значение канала за определённую дату и время. Было бы хорошо реализовать её в SCADA-Сервере, но пока этого нет.

    Выходной формат HTML для отчета — это возможность в веб интерфейсе сформировать отчет или отдельная выгрузка в формате HTML как в excel?

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

    #2987
    iKasper
    Участник

    Я имел в виду кое что другое.
    Наблюдая за веб интерфейсом с таблицей, я наблюдаю как раз в час фиксируются значения переменной по каждой переменной, предполагаю, что эти значения он берет из базы скады. Т.е. где то в базе ведется запись раз в час, как меняется значение переменной, если это так, то наверно как то можно обратиться в базу и получиться значение канала (к примеру на 9 утра вчерашнего дня)
    Подскажите как можно получить статус канала (не значение канала, а его состояние) ок или не ок, булева переменная (0,1)?

    #2989
    Mikhail
    Модератор

    Я имел ввиду, что сейчас нет соответствующей формулы, которую можно ввести в базу конфигурации через Администратор и ничего не программировать. Если Вы или в Вашей компании есть программисты, то можно получить данные из архива с помощью C# или REST API.

    Подскажите как можно получить статус канала

    В формулах базы конфигурации Stat, если нужна булева переменная, то Stat > 0

    #3201
    djbond07
    Участник

    Добрый день! Вопрос такой. Есть вх. канал типа телеизмерение. Мне нужно умножить его на 10. Обязательно ли для этого создавать дорасчётный канал и писать в нём формулу Val(x)*10? Или же можно прямо в этом канале поставить галочку «использовать формулу», и записать её туда?

    #3202
    Mikhail
    Модератор

    Добрый день!
    Я бы просто поставил галочку и написал формулу Cnl*10

    #9942
    serg4
    Участник

    Здравствуйте, а как взять разницу между текущим показанием и показанием за предыдущий час?
    Где-то есть описание команд с примерами?
    Спасибо.

    • Этот ответ был изменен 5 лет, 8 месяцев назад от serg4.
    #9944
    Mikhail
    Модератор

    Добрый день!
    Существующее описание работы формулами.

    Самый удобный способ расчёта разницы показаний — плагин Гибкий отчёт. Пример его работы по ссылке.

    #9945
    Mikhail
    Модератор

    С помощью формул можно решить данную задачу, создав несколько дополнительных входных каналов:
    1. Канал типа Часовой ТИ, который будет хранить предыдущее значение. Например, его номер 101. Формула: Val(102); Stat(102)
    2. Канал типа Часовой ТИ, который будет хранить текущее значение. Его номер будет 102, а формула: Val(100); Stat(100)
    Где 100 — это канал, который содержит значение от контроооера.
    3. Канал типа Часовой ТИ, который вычисляет разницу. Его номер 103 и формула: Val(102) — Val(101); Stat(102)

    По хорошему, нужно добавлять простые формулы для данной операции.

Просмотр 15 сообщений - с 16 по 30 (из 87 всего)
  • Вы должны авторизироваться для ответа в этой теме.