Переопределение статусов каналов

Стартовая страница Форумы Понять, как работает ПО Формулы Переопределение статусов каналов

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

    Добрый день, помогите с формулой. Хочу поменять стандартные статусы у канала (норма, завышение, аварийное завышение.)
    Почему то не срабатывает условие, а срабатывает «else return st»;

    public int CalcStat()
    {
     int st = CnlStat; 
     if (st == 13)
      return 102;
     else if (st == 14)
      return 103;
     else if (st == 15)
      return 104;
     else return st;
    }
    #35170
    manjey73
    Участник

    А где вы статус в формулу подаете? у вас всегда оно 1 если канал в работе. CnlStat

    #35173
    Evgeniy58
    Участник

    Вызываю формулу во входной формуле канале
    https://skrinshoter.ru/sSKyU8QGj7m

    #35174
    manjey73
    Участник

    Еще раз. CalcStat() — а внутри CnlStat — Переданный Серверу статус канала до расчёта

    Статус передается Коммуникатором, если там связь ОК и все хорошо, то CnlStat у вас = 1. Откуда ему взяться 13, 15 или еще чем-то ?

    Вам статус надо поменять в зависимости от значения канала? тогда и формула будет иной.
    То есть все эти ИФы до одного места. Это произойдет только тогда, когда Коммуникатор передаст в качестве статуса значения 13,14 или 15 но не раньше.

    • Ответ изменён 1 год, 8 месяцев назад пользователем manjey73.
    • Ответ изменён 1 год, 8 месяцев назад пользователем manjey73.
    #35177
    manjey73
    Участник

    А, статусы 13,14 и 15 это к лимитам относятся, это уже потом Сервер на них меняет, но надо лимиты настраивать и включать.
    Но до расчета по идее все равно будет = 1 вот то самое CnlStat, так как он от Коммуникатора прилетает.

    Скорее вам в формуле надо применять Stat(), то есть уже то, что посчитал Сервер, и уже после этого менять на свои.
    Честно, с Лимитами особо не игрался.

    Должно быть что-то вроде такого

    if (CnlStat == 1 && Stat() == 13) То есть что данные достоверны и их статус согласно лимитам такой-то, тогда меняем на свой.

    • Ответ изменён 1 год, 8 месяцев назад пользователем manjey73.
    #35179
    Mikhail
    Модератор

    Добрый день.
    Верно, Коммуникатор передаёт данные на Сервер со статусом 1. Статусы 13, 14 и 15 присваиваются после вычисления по формуле, если формула не меняла статус сама.

    #35198
    Evgeniy58
    Участник

    Спасибо за помощь, теперь я понял что встроенные границы — это по факту уже встроенные формулы и переопределять их нет никакого смысла. Переделал собственную формулу в которой расставил собственные границы в зависимости от значений канала.

    public int CalcStat()
    {
      
     if (Val() > 0 && Val() < 65)
      return 102;
     else if (Val() >= 65 && Val() <= 70)
      return 103;
     else if (Val() > 70 && Val() <= 75)
      return 104;
     else if (Val() > 75 && Val() <= 80)
      return 105;
     else if (Val() > 80 && Val() <= 85)
      return 106;
     else if (Val() > 85)
      return 107;
     else
      return Stat();
    }
Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Для ответа в этой теме необходимо авторизоваться.