Значения разных каналов на один тревожный.

Стартовая страница Форумы Понять, как работает ПО Значения разных каналов на один тревожный.

Просмотр 5 сообщений - с 16 по 20 (из 20 всего)
  • Автор
    Сообщения
  • #18838
    manjey73
    Участник
    public double MapAlarm(params double[] values)
    {
    double result = 0;
    if (values.Length==0)
    {
    return 0;
    }
    for (int i = 0; i < values.Length; i++)
    {
        if (values[i] > 0) return 1;
    }     
    return result;
    }

    Создать канала, на который настраивается плагин карт
    Указать в нем формулу MapAlarm(Val(100), Val(101), Val(102), Val(XXX))
    Количество каналов не важно, 100, 101, 102, ХХХ — контролируемые каналы
    Аварийное значение канала должно быть больше 0, 0 — не авария, соответственно если канал = 0 это авария, надо в нем сделать формулу, которая его инвертирует.

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

    Наверное, удобнее немного модифицировать формулу, чтобы передавать в неё номера каналов. Заодно проверить, что Stat(cnlNum) > 0 — то есть значение валидно.

    #18846
    manjey73
    Участник

    Михаил, так идея формулы в том, что у нее нет ограничения по параметрам, но вроде params может быть один только.

    Или вариант вводить MapAlarm(100, Val(100), 101, Val(101)) и в цикле через шаг работать?

    #18848
    Romiros
    Участник

    Наверное имеется ввиду что-то типа этого:

    public double MapAlarm(params int[] cnls)
    {
    double result = 0;

    for (int i = 0; i < cnls.Length; i++)
    {
    if (Stat(cnls[i]) >0 && Val(cnls[i]) > 0) return 1;
    }
    return result;
    }

    #18849
    manjey73
    Участник

    Romiros, а, понял, просто в формулу добавлять номера каналов а не их значения и проверять одновременно по статусу и значению… Не додумался сразу. Так явно лучше. 🙂

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