Конфликт в формулах

Помечено: 

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

    Добрый день! помогите разобраться в ситуации.
    У меня есть 2 задачи — включение и выключение насоса. Пытаюсь реализовать это с помощью формул вот такого плана:

    public double Nasos_1_ON()
    {
    return Val(292)>0&&Val(291)>0&&Val(120)==0 ? 1 : 0;
    }
    и

    public double NasosOFF()
    {
    return (Val(291)==0||Val(292)==0)&&Val(120)==0 ? 1 : 0;
    }

    Каналы 291 и 292 — это поплавки. Положим, что значения каналов 292 и 120 всегда равны 0. в обычном режиме работы так и есть. Для каждой формулы заведён отдельный канал, и созданы триггеры на значения этого канала в модуле автоматического управления. Но почему-то включение насоса происходит корректно (когда Val(291)>0), а вот выключения не происходит (Когда Val(291)==0). В чём тут может быть несостыковка? Вроде бы формулы простые, и логика ясна.

    #2183
    djbond07
    Участник

    Эту проблему я решил. Совсем забыл, что канал 291 у меня принимает значение -1:1, для реализации функции подсчёта количества переключений.

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

    Чтобы не ошибиться, лучше писать <= 0 вместо ==

    #2195
    djbond07
    Участник

    Согласен, лучше разделить операции на <=0 и >0, тогда уже не будет промежуточных значений.

    #2198
    manjey73
    Участник

    Да что-то странный счетчик получился с прохождением через ноль от -1.
    Может просто тики считать ?

    #2203
    djbond07
    Участник

    manjey73, канал типа «Кол-во переключений» считает только тогда, когда значение проходит через «0». То есть переключение 0-1 тут не будет подсчитываться. По совету Михаила я произвёл преобразование входного канала, чтобы заработал счётчик.

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

    Пока работает так, как работает 🙂 Возможно, изменим в будущем, чтобы считались переключения 0-1.

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