Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Как использовать формулы ?
- В этой теме 86 ответов, 12 участников, последнее обновление 5 лет, 5 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
25.09.2018 в 09:40 #10290
Romiros
УчастникStat() > 0 ? — это и есть проверка на инициализацию. Если статус = 0, то канал получит значение канала 603, если статус > 0, то будет вычисляться разница.
25.09.2018 в 09:41 #10291
manjey73УчастникПопробую на пальцах.
1. Применять минутные тики Scada неправильно. Почему ? — да просто нарастание(убывание) изменения сигнала может начаться между минутными тиками, например в середине и за 30 сек могут почти достигнуть максимума, о котором требуется сообщить. Например у вас порог 200 единиц, за 30 сек набрали 180, минутным тиком Scada вы сделали сброс, а за следующие 15 сек еще прибавилось 100 единиц.
Итого у вас было за 45 сек 180+100=280 единиц, но мы их успешно просрали.Только применение таймера, не привязанного к минутным тикам Scada необходимо применять.
2. Далее от задачи нужно делать формулу счетчика. Если требуется следить только за понижением, то счетчик на уменьшение, если вообще изменения то счетчик по абсолютному значению и импульсам изменения с каким-то шагом, чтобы уйти от дребезга и т.д. Что там у автора задачи в голове непонятно.
Но основная проблема это не стоит привязываться к минутным тикам Scada.
-
Ответ изменён 7 лет, 10 месяцев назад пользователем
manjey73.
25.09.2018 в 09:47 #10293
manjey73УчастникПредставьте, что ваш сигнал колеблется
-5, +1, -3, +2, -7, +3, -10, +1, -100, +20, -50, +13 и т.д.в итоге он уменьшился достаточно сильно, но за какое время ? между минутами Scada (в течении минуты) или в течении 10 секунд ?
Не знаю, может нужна какая-то формула минимума и максимума со сбросом по таймеру. Так было бы правильнее. И в настройках устанавливать время расчета.
Или скользящее окно с выставленным временем.-
Ответ изменён 7 лет, 10 месяцев назад пользователем
manjey73.
25.09.2018 в 10:46 #10295Romiros
УчастникДа согласен. По идее нужен градиент
dV/dt. Изменение канала на 200 за 60 секунд. Соответственно если за 30 секунд упадет на 100 — это тоже должно считаться сработкой.
Если нужен градиент, простыми формулами не обойтись.
Походу мне тоже такая штука нужна 🙂25.09.2018 в 11:47 #10296
pistoletovУчастникСмотрю не так просто все оказалось,нужна производная функции. Изменение приращения за время.
Немного подробнее расскажу о задаче реальной, возможно это натолкнет на мысли как решить ее в рамках имеющихся возможностей рапиды.
Вакуумная печь. Нагреватель. Датчик давления. Термодатчик. В печи лежит образец.
По мере нагрева с заданной скоростью может происходить интенсивное газообразование в печи и резкое падение давления. В таком случае нужно снизить мощность и подождать пока вакуумные насосы откачают все из печи потом продолжить нагрев.
прикладываю график температуры и давления в печи так возможно визуально понятней будет. Задача экспериментальная. И звучит так — при достаточно резком снижении давления…. https://ibb.co/fsWSe9-
Ответ изменён 7 лет, 10 месяцев назад пользователем
pistoletov.
-
Ответ изменён 7 лет, 10 месяцев назад пользователем
Mikhail.
25.09.2018 в 11:53 #10298
pistoletovУчастникStat() > 0 ? — это и есть проверка на инициализацию. Если статус = 0, то канал получит значение канала 603, если статус > 0, то будет вычисляться разница
в документации описано так: Stat() int Текущий статус входного канала вычисляемой формулы
Но 0 у нас может быть и если значени не изменилось в течении минуты например идут данные 1000 1000 1000 1000 1000 тогда разница 0 и наш канал примет значение 1000. Или я что-то неправильно понял.25.09.2018 в 11:53 #10299
manjey73Участникpistoletov картинки не видно но смысл понятен.
нужно только понять следующее, что данные с датчика давления поступают со скоростью опроса модуля ввода и скорости им опроса аналогового входа.
давление у вас резко понижается, когда происходит работа. При работе давление может быть разным ? нет такого, что когда работа нормальная то давление какое-то строго определенное ?
25.09.2018 в 12:04 #10300
pistoletovУчастниккартинка
Может так видна картинка будет. Да данные поступают со скоростью опроса модуля. Временные интервалы анализа падения давления минута вполне подходит. Давление нет, строго опрделенным не бывает. Неизвестно какая примесь и как сильно может дать выброс.25.09.2018 в 12:26 #10301
manjey73Участникмне кажется надо скрестить таймер с записью начального значения измеряемого сигнала в начале старта таймера и сбрасывать таймер если значение не изменилось на Y единиц за время таймера.
Раздельно использовать формулы будет неправильно, так как будут давать погрешность.
Либо если делать раздельные формулы то надо продумать последовательность каналов. Scada выполняет формулы последовательно как в LAD языке для ПЛК.
25.09.2018 в 12:29 #10302Romiros
УчастникНо 0 у нас может быть и если значени не изменилось в течении минуты например идут данные 1000 1000 1000 1000 1000 тогда разница 0 и наш канал примет значение 1000. Или я что-то неправильно понял.
Не путайте статус и значение канала.
Если значение не меняется дельта будет 0, а у Вас устава на 200.
Мне кажется вы не разобрались просто. Покажите скрин администратора с формулами. Или распишите каждый канал.
Думаю в Вашем случае достаточно той формулы, что мы предложили выше, т.к. достаточно контролировать раз в минуту и в одном направлении.-
Ответ изменён 7 лет, 10 месяцев назад пользователем
Romiros.
25.09.2018 в 12:47 #10304
pistoletovУчастникДобро. Завтра запустят печку и попробую так. Да я статус и значение действительно попутал. А где глянуть какое значение может статус принимать? 0 при инициализации а какие еще значения у него могут быть? Минутные тики меня вполне устраивают. Там не такая адски высокая скорость реакции нужны. Да и значением цифры падения можно это дело корректировать. Упало резко тормозим нагрев…оно и дальше падать будет. Это как задача с кипящим молоком чем раньше увидели пену и быстрей прикрутили-))) Само падение при сильно критических ситуациях это минут 5-10 быстрее не бывало еще
-
Ответ изменён 7 лет, 10 месяцев назад пользователем
pistoletov.
25.09.2018 в 12:58 #10306Romiros
УчастникДа процесс довольно инерционный.
Статусы смотрите в Администраторе, справочник Типы событий25.09.2018 в 13:33 #10307Romiros
Участникmanjey мне кажется минутные тики использовать всё-таки нужно. Нам нужно иметь какую-то привязку. Для минутного градиента отталкиваться от значения за прошлую минуту.
А дальше в дорасчетном канале получать значение и текущее время и значения в минутном ТИ и его время и вычислять приращение.
Мне кажется уже что-то подобное обсуждалось на форуме.25.09.2018 в 15:10 #10308
manjey73УчастникПривязка таймер. Если использовать минутные тики, то у вас будет работать в диапазоне от 1 минуты до 2 минут или не будет работать вовсе, если минутные тики Scada будут успевать сбрасывать.
Например каждую минуту у вас падение на 180 единиц, а уставка 200 и что в итоге ?
да ничего не отключится просто, зато за 5 минут упадет на 180*5=900 единиц…Есть еще другой момент, это ваши действия при снижении давления.
Отключение нагрева
Запрет нагрева
Продувка (или что там у вас)
Продувка выполнена
Разрешение нагрева
Включение нагреваПо сути вам надо составить алгоритм работы установки если правильно понимаю.
То есть кроме отключения нагрева еще должны быть действия с запрещающими и разрешающими сигналами.
А то вы выключите, а через пару-тройку циклов начнете опять нагрев включать и так и будете дергать печку…25.09.2018 в 15:13 #10310
pistoletovУчастникScada Admin
Верно ли в формуле для 609 канала указать вместо val() val(610) и это будет значение
val (601) минуту назад? как на картинке
Буду признателен на ссылку по подобной проблеме-
Ответ изменён 7 лет, 10 месяцев назад пользователем
pistoletov.
-
Ответ изменён 7 лет, 10 месяцев назад пользователем
pistoletov.
-
Ответ изменён 7 лет, 10 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.