Организация триггеров

Просмотр 15 сообщений - с 1 по 15 (из 30 всего)
  • Автор
    Сообщения
  • #3772
    djbond07
    Участник

    Добрый день! Нужен Ваш совет. При разработке скады часто возникает потребность в удержании сигнала в «1» после срабатывания какого-либо устройства. Проще говоря организовать RS-триггер. Как это можно сделать с помощью формул?

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

    Добрый день!
    Напишите, пожалуйста, подробнее алгоритм работы общими словами.

    #3776
    baur
    Участник

    по идее такие вещи реализуется на стороне контроллера, а SCADA должен получить уже готовый результат. Реализация таких вещей на стороне SCADA тянет за собой целый пласт вопросов …

    #3798
    djbond07
    Участник

    Mikhail Алгоритм такой. Идёт наполнение ёмкости, после срабатывания поплавка начинается фаза очистки воды. Так вот, я хочу, чтобы при срабатывании поплавка загоралась лампочка (идёт очистка). Потом в процессе уровень меняется, уменьшается итд. В конце очистки есть действие — откачка из бака. Так вот, после того, как откачка завершилась я хочу лампочку эту погасить.

    baur По идее да, но в моём случае я не использую контроллер. Только модули ввода-вывода.

    #3800
    manjey73
    Участник

    Это можно попробовать реализовать функциями, 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.
    #3802
    Mikhail
    Модератор

    Согласен с manjey73.
    А Вам только лампочка на экране нужна или ещё команда исполнительному устройству?

    #3804
    djbond07
    Участник

    Команда исполнительносу устройству нужна. Но это не проблема, так как я через модуль автоматического управления посылаю команды. То есть RS-триггера в виде входного канала будет достаточно. Дальше я смогу сам реализовать и лампочку, и пуск устройств.

    #3806
    manjey73
    Участник

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

    Вроде работает как 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))

    • Этот ответ был изменен 7 лет, 3 месяца назад от manjey73.
    • Этот ответ был изменен 7 лет, 3 месяца назад от manjey73.
    • Этот ответ был изменен 7 лет, 3 месяца назад от manjey73.
    #3809
    djbond07
    Участник

    Спасибо за формулу! Буду пробовать. На самом деле я не использую каналы «Дорасчётный ТС». Михаил как-то говорил, что проще работать с дорасчётным ТИ, хоть и места больше занимает. Поэтому мне нужно будет либо написать отдельную формулу для перевода из double в bool, либо переписать эту формулу на работу с типом данных double.

    • Этот ответ был изменен 7 лет, 3 месяца назад от djbond07.
    • Этот ответ был изменен 7 лет, 3 месяца назад от djbond07.
    #3813
    manjey73
    Участник

    Можете попробовать и на ТИ, никто же не запрещает.

    bool на double переписывать не надо, все уже переписано, просто bool это внутренние переменные для работы функции

    #3815
    djbond07
    Участник

    Точно, туплю немного. Попробую новую формулу, напишу получилось или нет, спасибо!

    #4017
    Gagarin
    Участник

    Добрый день!
    Вопрос касательно RS-триггера. У меня есть модуль входов-выходов, который работает по протоколу модбас-рту. Это устройство удачно подключено к RAPID SCADA. Хочу реализовать функцию триггера для одного из входов. По конфигурации канала SET все понятно. По конфигурации входного канала с формулой — тоже. А вот с каналом RES -беда. Каким должен быть канал RES (входной канал или канал управления) в данном случае? Если это входной канал, то как им можно управлять через веб?

    #4020
    manjey73
    Участник

    RES это вход сброса, я исходил из алгоритма, примененного в ПЛК. То есть это тоже входной канал, например физическая кнопка. На счет канала управления, чтобы управлять через WEB надо подумать. Если я правильно понимаю, то вы хотите кнопкой на экране сбрасывать RS триггер ?

    p.s. я заводил тему http://forum.rapidscada.ru/?topic=функции-формулы-для-rapid-scada

    там последние версии формул.
    На счет управления через WEB попробую как можно использовать…

    #4025
    manjey73
    Участник

    Да, возможно сделать сброс RS триггера из Web. Чуть позже выложу формулу, пока тестирую, сейчас сделал на команду «Откл — Вкл» а надо сделать только на Вкл с автоматическим сбросом

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

    Дописал в указанную manjey73 тему формулы для установки входного канала по команде. Формула CnlValGet устанавливаются для входного канала, а формула CnlValSet для канала управления.

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