Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Установить недостоверность данных
- В этой теме 11 ответов, 4 участника, последнее обновление 1 год, 6 месяцев назад сделано
a80808.
-
АвторСообщения
-
02.12.2024 в 14:49 #35939
a80808УчастникВ.5!
Коллеги, помогите!
Как установить статус входного канала 0 (недостоверность данных)?
Мне нужно если в канале -32768 сделать данные недостоверными, если нет — разделить на 100
Формула вот:
Cnl!=-32768?Cnl/100:SetStat(CnlNum,0)
В результате получаю в канале значение 0 и статус 1 если не установлены границы.
Есть ли выход из этого исхода?02.12.2024 в 14:56 #35940
manjey73УчастникА попробовать во второй части ?
SetData(CnlNum, Cnl, 0)
02.12.2024 в 15:05 #35941
a80808Участник-32768
Там дальше границы стоят и, видимо потом переопределяется статус(((02.12.2024 в 15:07 #35942
a80808УчастникУбрал границы — статус в результате =1…
А расчетные каналы городить не хочется…02.12.2024 в 15:32 #35949saprin8
УчастникСоветую формулу создать, входные в пятой версии работают еще и как расчетные. У меня проблема с отрицательными температурами и спокойно работает такая формула во входном канале. Соответственно вам нужно SetData или SetStat использовать в формуле.
public double WinterWordTE(double cnlNum) { double te = 0; if (cnlNum < 1500) { te = cnlNum / 10; } else { te = (cnlNum - 65535) / 10; } return te; }02.12.2024 в 16:01 #35952
a80808УчастникДа то то и оно, что потом статус переопределяется (((
02.12.2024 в 16:19 #35953
manjey73Участниктак если будет внешняя формула типа MyFormula(Cnl) границы же уже потом должны отрабатывать ? И по идее на недостоверные данные не должны работать.
В качестве недостоверных данных вроде можно отправить double.NaN а не работать со статусом.
-
Ответ изменён 1 год, 6 месяцев назад пользователем
manjey73.
02.12.2024 в 17:20 #35955
a80808УчастникХм…попробую..
В принципе я могу стастус что датчика нет взять из другого канала (битовая маска) и уже по результату работать.
А вот интересно — формула из строки канала и формула из таблицы формул по времени (имеется в виду порядок) одинаково отрабатывают?02.12.2024 в 17:23 #35956
a80808УчастникИтак:
Cnl==-32768?double.NaN:Cnl/100Отлично сработало!!! Сразу недостоверность на отображении
02.12.2024 в 17:53 #35957
manjey73УчастникОдинаково. Формулы из таблицы Формул предварительно компилируются сервером и находятся в памяти, как и формулы в каналах.
В таблице формулы могут быть куда извращеннее и время выполнения будет зависеть от этого.
03.12.2024 в 13:03 #35983
MikhailМодераторНе вызывайте формулы SetStat И SetData для того номера канала, в котором пишутся эти формулы.
03.12.2024 в 13:10 #35986
a80808УчастникПонял, спасибо! Запись в канал double.NaN полностью решило проблему
-
Ответ изменён 1 год, 6 месяцев назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.