Установить недостоверность данных

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

    В.5!
    Коллеги, помогите!
    Как установить статус входного канала 0 (недостоверность данных)?
    Мне нужно если в канале -32768 сделать данные недостоверными, если нет — разделить на 100
    Формула вот:
    Cnl!=-32768?Cnl/100:SetStat(CnlNum,0)
    В результате получаю в канале значение 0 и статус 1 если не установлены границы.
    Есть ли выход из этого исхода?

    #35940
    manjey73
    Участник

    А попробовать во второй части ?

    SetData(CnlNum, Cnl, 0)

    #35941
    a80808
    Участник

    -32768
    Там дальше границы стоят и, видимо потом переопределяется статус(((

    #35942
    a80808
    Участник

    Убрал границы — статус в результате =1…
    А расчетные каналы городить не хочется…

    #35949
    saprin8
    Участник

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

    public double WinterWordTE(double cnlNum)
    {
    double te = 0;
    if (cnlNum < 1500)
    {
    te = cnlNum / 10;
    }
    else
    {
    te = (cnlNum - 65535) / 10;
    }
    return te;
    }
    #35952
    a80808
    Участник

    Да то то и оно, что потом статус переопределяется (((

    #35953
    manjey73
    Участник

    так если будет внешняя формула типа MyFormula(Cnl) границы же уже потом должны отрабатывать ? И по идее на недостоверные данные не должны работать.

    В качестве недостоверных данных вроде можно отправить double.NaN а не работать со статусом.

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

    Хм…попробую..
    В принципе я могу стастус что датчика нет взять из другого канала (битовая маска) и уже по результату работать.
    А вот интересно — формула из строки канала и формула из таблицы формул по времени (имеется в виду порядок) одинаково отрабатывают?

    #35956
    a80808
    Участник

    Итак:
    Cnl==-32768?double.NaN:Cnl/100

    Отлично сработало!!! Сразу недостоверность на отображении

    #35957
    manjey73
    Участник

    Одинаково. Формулы из таблицы Формул предварительно компилируются сервером и находятся в памяти, как и формулы в каналах.

    В таблице формулы могут быть куда извращеннее и время выполнения будет зависеть от этого.

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

    Не вызывайте формулы SetStat И SetData для того номера канала, в котором пишутся эти формулы.

    #35986
    a80808
    Участник

    Понял, спасибо! Запись в канал double.NaN полностью решило проблему

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