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

Просмотр 15 сообщений - с 46 по 60 (из 87 всего)
  • Автор
    Сообщения
  • #10290
    Romiros
    Участник

    Stat() > 0 ? — это и есть проверка на инициализацию. Если статус = 0, то канал получит значение канала 603, если статус > 0, то будет вычисляться разница.

    #10291
    manjey73
    Участник

    Попробую на пальцах.
    1. Применять минутные тики Scada неправильно. Почему ? — да просто нарастание(убывание) изменения сигнала может начаться между минутными тиками, например в середине и за 30 сек могут почти достигнуть максимума, о котором требуется сообщить. Например у вас порог 200 единиц, за 30 сек набрали 180, минутным тиком Scada вы сделали сброс, а за следующие 15 сек еще прибавилось 100 единиц.
    Итого у вас было за 45 сек 180+100=280 единиц, но мы их успешно просрали.

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

    2. Далее от задачи нужно делать формулу счетчика. Если требуется следить только за понижением, то счетчик на уменьшение, если вообще изменения то счетчик по абсолютному значению и импульсам изменения с каким-то шагом, чтобы уйти от дребезга и т.д. Что там у автора задачи в голове непонятно.

    Но основная проблема это не стоит привязываться к минутным тикам Scada.

    • Этот ответ был изменен 3 года назад от manjey73.
    #10293
    manjey73
    Участник

    Представьте, что ваш сигнал колеблется
    -5, +1, -3, +2, -7, +3, -10, +1, -100, +20, -50, +13 и т.д.

    в итоге он уменьшился достаточно сильно, но за какое время ? между минутами Scada (в течении минуты) или в течении 10 секунд ?

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

    • Этот ответ был изменен 3 года назад от manjey73.
    #10295
    Romiros
    Участник

    Да согласен. По идее нужен градиент
    dV/dt. Изменение канала на 200 за 60 секунд. Соответственно если за 30 секунд упадет на 100 — это тоже должно считаться сработкой.
    Если нужен градиент, простыми формулами не обойтись.
    Походу мне тоже такая штука нужна 🙂

    #10296
    pistoletov
    Участник

    Смотрю не так просто все оказалось,нужна производная функции. Изменение приращения за время.
    Немного подробнее расскажу о задаче реальной, возможно это натолкнет на мысли как решить ее в рамках имеющихся возможностей рапиды.
    Вакуумная печь. Нагреватель. Датчик давления. Термодатчик. В печи лежит образец.
    По мере нагрева с заданной скоростью может происходить интенсивное газообразование в печи и резкое падение давления. В таком случае нужно снизить мощность и подождать пока вакуумные насосы откачают все из печи потом продолжить нагрев.
    прикладываю график температуры и давления в печи так возможно визуально понятней будет. Задача экспериментальная. И звучит так — при достаточно резком снижении давления…. https://ibb.co/fsWSe9

    • Этот ответ был изменен 3 года назад от pistoletov.
    • Этот ответ был изменен 3 года назад от Mikhail.
    #10298
    pistoletov
    Участник

    Stat() > 0 ? — это и есть проверка на инициализацию. Если статус = 0, то канал получит значение канала 603, если статус > 0, то будет вычисляться разница

    в документации описано так: Stat() int Текущий статус входного канала вычисляемой формулы
    Но 0 у нас может быть и если значени не изменилось в течении минуты например идут данные 1000 1000 1000 1000 1000 тогда разница 0 и наш канал примет значение 1000. Или я что-то неправильно понял.

    #10299
    manjey73
    Участник

    pistoletov картинки не видно но смысл понятен.

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

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

    #10300
    pistoletov
    Участник

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

    #10301
    manjey73
    Участник

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

    Раздельно использовать формулы будет неправильно, так как будут давать погрешность.

    Либо если делать раздельные формулы то надо продумать последовательность каналов. Scada выполняет формулы последовательно как в LAD языке для ПЛК.

    #10302
    Romiros
    Участник

    Но 0 у нас может быть и если значени не изменилось в течении минуты например идут данные 1000 1000 1000 1000 1000 тогда разница 0 и наш канал примет значение 1000. Или я что-то неправильно понял.

    Не путайте статус и значение канала.
    Если значение не меняется дельта будет 0, а у Вас устава на 200.
    Мне кажется вы не разобрались просто. Покажите скрин администратора с формулами. Или распишите каждый канал.
    Думаю в Вашем случае достаточно той формулы, что мы предложили выше, т.к. достаточно контролировать раз в минуту и в одном направлении.

    • Этот ответ был изменен 3 года назад от Romiros.
    #10304
    pistoletov
    Участник

    Добро. Завтра запустят печку и попробую так. Да я статус и значение действительно попутал. А где глянуть какое значение может статус принимать? 0 при инициализации а какие еще значения у него могут быть? Минутные тики меня вполне устраивают. Там не такая адски высокая скорость реакции нужны. Да и значением цифры падения можно это дело корректировать. Упало резко тормозим нагрев…оно и дальше падать будет. Это как задача с кипящим молоком чем раньше увидели пену и быстрей прикрутили-))) Само падение при сильно критических ситуациях это минут 5-10 быстрее не бывало еще

    • Этот ответ был изменен 3 года назад от pistoletov.
    #10306
    Romiros
    Участник

    Да процесс довольно инерционный.
    Статусы смотрите в Администраторе, справочник Типы событий

    #10307
    Romiros
    Участник

    manjey мне кажется минутные тики использовать всё-таки нужно. Нам нужно иметь какую-то привязку. Для минутного градиента отталкиваться от значения за прошлую минуту.
    А дальше в дорасчетном канале получать значение и текущее время и значения в минутном ТИ и его время и вычислять приращение.
    Мне кажется уже что-то подобное обсуждалось на форуме.

    #10308
    manjey73
    Участник

    Привязка таймер. Если использовать минутные тики, то у вас будет работать в диапазоне от 1 минуты до 2 минут или не будет работать вовсе, если минутные тики Scada будут успевать сбрасывать.
    Например каждую минуту у вас падение на 180 единиц, а уставка 200 и что в итоге ?
    да ничего не отключится просто, зато за 5 минут упадет на 180*5=900 единиц…

    Есть еще другой момент, это ваши действия при снижении давления.

    Отключение нагрева
    Запрет нагрева
    Продувка (или что там у вас)
    Продувка выполнена
    Разрешение нагрева
    Включение нагрева

    По сути вам надо составить алгоритм работы установки если правильно понимаю.
    То есть кроме отключения нагрева еще должны быть действия с запрещающими и разрешающими сигналами.
    А то вы выключите, а через пару-тройку циклов начнете опять нагрев включать и так и будете дергать печку…

    • Этот ответ был изменен 3 года назад от manjey73.
    • Этот ответ был изменен 3 года назад от manjey73.
    #10310
    pistoletov
    Участник

    Scada Admin
    Верно ли в формуле для 609 канала указать вместо val() val(610) и это будет значение
    val (601) минуту назад? как на картинке
    Буду признателен на ссылку по подобной проблеме

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