Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Организация триггеров
- В этой теме 29 ответов, 5 участников, последнее обновление 7 лет, 2 месяца назад сделано Gagarin.
-
АвторСообщения
-
07.12.2016 в 17:28 #3772djbond07Участник
Добрый день! Нужен Ваш совет. При разработке скады часто возникает потребность в удержании сигнала в «1» после срабатывания какого-либо устройства. Проще говоря организовать RS-триггер. Как это можно сделать с помощью формул?
07.12.2016 в 21:16 #3774MikhailМодераторДобрый день!
Напишите, пожалуйста, подробнее алгоритм работы общими словами.08.12.2016 в 12:32 #3776baurУчастникпо идее такие вещи реализуется на стороне контроллера, а SCADA должен получить уже готовый результат. Реализация таких вещей на стороне SCADA тянет за собой целый пласт вопросов …
12.12.2016 в 12:16 #3798djbond07УчастникMikhail Алгоритм такой. Идёт наполнение ёмкости, после срабатывания поплавка начинается фаза очистки воды. Так вот, я хочу, чтобы при срабатывании поплавка загоралась лампочка (идёт очистка). Потом в процессе уровень меняется, уменьшается итд. В конце очистки есть действие — откачка из бака. Так вот, после того, как откачка завершилась я хочу лампочку эту погасить.
baur По идее да, но в моём случае я не использую контроллер. Только модули ввода-вывода.
12.12.2016 в 13:01 #3800manjey73УчастникЭто можно попробовать реализовать функциями, RS триггер с приоритетом сброса.
Какое у вас количество входов используется для этого ?
Попробуйте такую формулу: имя — RStrig
bool RStrig (double set, double res)
{
bool q = false;
bool s = false;
bool r = false;
if (set>0) s = true;
if (res>0) r = true;
if (s && !r) q = !q;
return q;
}В новом канале ставите «Дорасчетный ТС», ставите галочку «Использовать формулу»
и пишите RStrig(Val(SET), Val(RES))
где
SET — № канала для установки выхода
RES — № канала для сброса выходаУ сброса (RES) приоритет, если 1 то неважно что на SET
- Этот ответ был изменен 7 лет, 3 месяца назад от manjey73.
12.12.2016 в 13:04 #3802MikhailМодераторСогласен с manjey73.
А Вам только лампочка на экране нужна или ещё команда исполнительному устройству?12.12.2016 в 13:28 #3804djbond07УчастникКоманда исполнительносу устройству нужна. Но это не проблема, так как я через модуль автоматического управления посылаю команды. То есть RS-триггера в виде входного канала будет достаточно. Дальше я смогу сам реализовать и лампочку, и пуск устройств.
12.12.2016 в 13:59 #3806manjey73УчастникСмотрите чуть выше, я привел код формулы. Правда проверял на вытягивании битов, сам значения не задавал.
Вроде работает как RS триггер в CodeSys по наблюдению за поведением.
Попробуйте ручками каналы задавать, а то у меня нет возможности это сделать сейчас.хм, чуть неправильно работает, не совсем так как RS триггер, если RES никогда не равен 1, то при сбросе SET в 0 выход тоже сбрасывается в 0.
Наверное надо промежуточную переменную добавлять…bool RStrig (double val, double set, double res)
{
bool s = false;
bool r = false;
bool q = false;
if (set>0) s = true;
if (res>0) r = true;
if (val>0 && !r) q = true;
if (s && !r) q = true;
return q;
}Val — № канала самой функции
Номер канала например 10, используем формулу RStrig(Val(10), Val(SET), Val(RES))12.12.2016 в 14:18 #3809djbond07УчастникСпасибо за формулу! Буду пробовать. На самом деле я не использую каналы «Дорасчётный ТС». Михаил как-то говорил, что проще работать с дорасчётным ТИ, хоть и места больше занимает. Поэтому мне нужно будет либо написать отдельную формулу для перевода из double в bool, либо переписать эту формулу на работу с типом данных double.
12.12.2016 в 14:42 #3813manjey73УчастникМожете попробовать и на ТИ, никто же не запрещает.
bool на double переписывать не надо, все уже переписано, просто bool это внутренние переменные для работы функции
12.12.2016 в 14:53 #3815djbond07УчастникТочно, туплю немного. Попробую новую формулу, напишу получилось или нет, спасибо!
12.01.2017 в 18:01 #4017GagarinУчастникДобрый день!
Вопрос касательно RS-триггера. У меня есть модуль входов-выходов, который работает по протоколу модбас-рту. Это устройство удачно подключено к RAPID SCADA. Хочу реализовать функцию триггера для одного из входов. По конфигурации канала SET все понятно. По конфигурации входного канала с формулой — тоже. А вот с каналом RES -беда. Каким должен быть канал RES (входной канал или канал управления) в данном случае? Если это входной канал, то как им можно управлять через веб?13.01.2017 в 09:06 #4020manjey73УчастникRES это вход сброса, я исходил из алгоритма, примененного в ПЛК. То есть это тоже входной канал, например физическая кнопка. На счет канала управления, чтобы управлять через WEB надо подумать. Если я правильно понимаю, то вы хотите кнопкой на экране сбрасывать RS триггер ?
p.s. я заводил тему http://forum.rapidscada.ru/?topic=функции-формулы-для-rapid-scada
там последние версии формул.
На счет управления через WEB попробую как можно использовать…13.01.2017 в 10:12 #4025manjey73УчастникДа, возможно сделать сброс RS триггера из Web. Чуть позже выложу формулу, пока тестирую, сейчас сделал на команду «Откл — Вкл» а надо сделать только на Вкл с автоматическим сбросом
13.01.2017 в 10:13 #4026MikhailМодераторДописал в указанную manjey73 тему формулы для установки входного канала по команде. Формула CnlValGet устанавливаются для входного канала, а формула CnlValSet для канала управления.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.