Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Как использовать формулы ?
- В этой теме 86 ответов, 12 участников, последнее обновление 3 года, 1 месяц назад сделано Mikhail.
-
АвторСообщения
-
25.09.2018 в 15:17 #10313pistoletovУчастник
Алгоритм опять же экспериментальный. Технологии точной нет. Все пробы и ошибки.
Пока алгоритм такой — падение давления останов поднятия температуры и ожидание его нормализации. как нормализовалось давление (выкипели примеси) то отпускаем программный задатчик нагрева. Управляет нагревателем прибор ОВЕН ТРМ 151 в нем записаны кривые нагрева. Давление упало — поставили на паузу (он держит текущую температуру). Нормализовалось — снимаем с паузы. как-то так25.09.2018 в 15:24 #10315manjey73УчастникВот, теперь добавился еще компонент 🙂 ТРМ151 — как вы им управляете из Scada ?
В случае автоматической посылки команды на паузу потребуется Модуль автоматического управления, так как без него вы команду не отправите в автомате.Что касается Scada в ней можно построить логику работы, как писал выше, если представить последовательность каналов как в LAD языке, сверху вниз.
Только «катушки реле» не справа как в LAD языке а слева = значение канала.А так я писал формулы и AND и NOT и OR и триггеров с импульсным выходом и таймеры.
Ну либо можно написать код в одной формуле, только в качестве входных параметров задать нужные каналы.
Я сторонник все же описывать простой логикой в каналах, так как это значительно универсальнее, потом можно все применить и в других местах. Ну правда сделать формулы, которые бы работали в любом месте писать чуть сложнее, так как надо обеспечить не жесткую привязку переменных к каналам а косвенную. Типа куда формулу вставил, с теми каналами она и работает.25.09.2018 в 15:54 #10316pistoletovУчастникВот, теперь добавился еще компонент 🙂 ТРМ151 — как вы им управляете из Scada ?пока только снимаю с него данные. Модуль автоуправления и модуль телеграмма я купил.
Спасибо за советы всем. Такая картинка работает вроде как надо. Еще потестирую
Админ Скада. Прикладываю25.09.2018 в 16:24 #10317RomirosУчастникНеправильно. Важен порядок каналов. У вас 610 получит значение позже чем произойдет расчет изменения в 609, т.е. вы будете считать по старой информации — потеряете целую минуту.
И почему для вещественных значений Вы используете дискретный тип канала а не Real?- Этот ответ был изменен 5 лет, 6 месяцев назад от Romiros.
25.09.2018 в 16:34 #10319pistoletovУчастникЯ писал выше — давление меряется в условных единицах. И это целочисленное значение.
Почему же неправильно? Канал 609 возьмет текущее значение канала 603 и канала 610 (603 минуту назад).
После этого только значение канала 610 изменится или нет ( в зависимости от времени)
Новая информация у меня 603. предыдущая — 610.25.09.2018 в 17:36 #10322MikhailМодераторМне приходилось решать похожую задачу, только там был уровень жидкости, а требовалось определять скорость потока. Минутных интервалов хватало, т.к. ёмкость набирается несколько часов. Столкнулся с достаточно интересными сложностями фильтрации сигнала от датчика уровня. В общем задача решаемая с помощью формул на основе каналов минутного типа. Но более конкретно нужно экспериментировать и отлаживать. Со своей стороны могу предложить коммерческую помощь по разработке работающей формулы. Здесь на форуме готов ответить на любые вопросы, с учётом того, что отладка в функции форума не входит.
Инициализация происходит 1 раз после запуска с новым каналом. При последующих перезапусках Сервера значение канала подгружается.
25.09.2018 в 18:01 #10325RomirosУчастникКанал 609 возьмет текущее значение канала 603 и канала 610 (603 минуту назад).
После этого только значение канала 610 изменится или нет ( в зависимости от времени)
Новая информация у меня 603. предыдущая — 610.
Канал 609 посчитается раньше, чем в канал 610 придет новое значение. Разница может быть уже в 2 минуты. В вашем случае не критично.
Но по хорошему 609 должен получать значение 603, а 610 считать разницу. Каналы вычисляются в порядке возрастания.22.03.2020 в 18:58 #15412Seliverstoff.yuУчастникДоброго времени суток! Могли бы Вы подсказать как таблицу менять, если Вы это уже сделали, или поделиться ну и растолковать слегка. СпасибО!
23.03.2020 в 10:31 #15422MikhailМодераторДобрый день!
Уточните, пожалуйста, Ваш вопрос. Если он не связан с данной темой, то заведите новую тему.30.03.2020 в 17:21 #15516Seliverstoff.yuУчастникВопрос по поводу поста#2412 об редактировании содержании таблицы. лучше наверное создать отдельную тему? Думал, кто уже это сделал сможет поделиться опытом, если еще посещает форум.
30.03.2020 в 18:29 #15519MikhailМодераторДа, данная тема не подходит, лучше отдельная.
29.01.2021 в 10:42 #18184evgУчастникВсем привет, не могли бы помочь с простыми формулами?
1) Если 101 канал равен 1 И 102 канал имеет статус 15, то 103 канал будет равен 25.
2) Если 101 канал равен 1 И 102 канал имеет статус 15, то отослать почтовое уведомление.- Этот ответ был изменен 3 года, 1 месяц назад от evg.
29.01.2021 в 11:31 #18186manjey73УчастникА чтение статуса есть встроенный ? типа Val(103) ??? я просто не помню..
29.01.2021 в 12:12 #18187evgУчастникТекущий статус входного канала вычисляемой формулы
Хм,
Stat(n) int Текущий статус входного канала n; думаю как-то через это.29.01.2021 в 13:58 #18188vgУчастникgel-dev_it
1) Если 101 канал равен 1 И 102 канал имеет статус 15, то 103 канал будет равен 25.
2) Если 101 канал равен 1 И 102 канал имеет статус 15, то отослать почтовое уведомление.1) примерно так
public double GetValueChannel103(double valueCh101, int statCh102)
{
double valueCh103 = 0;
if(valueCh101 == 1 && statCh102 == 15)
{
valueCh103 = 25;
}
return valueCh103;
}Создаёте дорасчётный канал 103, используете формулу (галочка), в формулу передаёте параметры следующим образом:
GetValueChannel103(Val(101), Stat(102))Соответственно типы параметров должны соответствовать.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.