Стартовая страница › Форумы › Взаимодействие с устройствами › Измерения Pt100
- В этой теме 78 ответов, 4 участника, последнее обновление 4 года, 4 месяца назад сделано
manjey73.
-
АвторЗаписи
-
18.03.2022 в 15:28 #22481
OakimУчастникУ меня так настроено
405 ТИ Сигнал 5
406 Дорасчетный ТИ Исп.Формулу GetBit(405,0) = 1
407 Дорасчетный ТИ Исп.Формулу GetBit(405,1) = 0
408 Дорасчетный ТИ Исп.Формулу GetBit(405,2) = 1
409 Дорасчетный ТИ Исп.Формулу GetBit(405,3) = 0
410 Дорасчетный ТИ Исп.Формулу GetBit(405,4) = 1
411 Дорасчетный ТИ Исп.Формулу GetBit(405,5) = 0
412 Дорасчетный ТИ Исп.Формулу GetBit(405,6) = 0
413 Дорасчетный ТИ Исп.Формулу GetBit(405,7) = 1Откуда берутся единицы я ума не приложу.
18.03.2022 в 15:34 #22482
manjey73УчастникGetBit(Значение канала, номер бита)
Вы в качестве значение передаете 405 и получаете биты данного числа
Правильно формула выглядит так, как писал выше
GetBit(Val(405), 1) — где Val(405) = значение канала №405 и 1 = первый бит
18.03.2022 в 15:50 #22484
OakimУчастникААААААААА!!!! блин!!!
Спасибо!18.03.2022 в 16:13 #22486
a80808Участник🙂 Распространенная ошибка 🙂 Сам иногда путаюсь
18.03.2022 в 16:21 #22487
OakimУчастникУ меня новая странная проблема
Перенес формулу свою с отдельного канала с настройками
416 - Дорасчетного ТИ - Использовать формулу - ResToTemp(Val(401))непосредственно на канал который данные получал с настройками
401 - Дорасчетный ТИ - Использовать формулу - ResToTemp(Val())И ничего не получаю, почему?
18.03.2022 в 16:30 #22489
OakimУчастникЕсли пишу ResToTemp(Val(Cnl)) то получаю ошибку
Строка 549, колонка 67: error CS1502: Наиболее подходящий перегруженный метод для "Scada.Server.Engine.CalcEngine.Val(int)" имеет несколько недопустимых аргументов18.03.2022 в 16:35 #22490
a80808УчастникТ.е. вы пытаетесь пересчитать данные канала 401 и в него же поместить результат? Если я правильно понимаю, у вас получается рекурсия. Дорасчетные ТИ пересчитываются непрерывно в цикле (около 1 сек.)
18.03.2022 в 16:36 #22491
OakimУчастникРазобрался нужно было в канале указать
ResToTemp(Cnl)18.03.2022 в 16:37 #22492
OakimУчастникА чем отличаются CnlVal и Cnl?
18.03.2022 в 16:45 #22496
a80808УчастникНичем, это одно и то же. Видимо как то исторически сложилось. Михаил точнее ответит.
18.03.2022 в 17:09 #22507
OakimУчастникА как в Канале сделать логическую формулу типа:
(канал 401) И (канал 402) И (канал 403)?Val(401)&&Val(402)&&Val(403)?18.03.2022 в 17:12 #22509
MikhailМодераторVal(401) > 0 && Val(402) > 0 && Val(403) > 0 ? 1 : 0
18.03.2022 в 17:21 #22512
OakimУчастникА готовой формулы AND типа OR нет?
18.03.2022 в 17:38 #22519
MikhailМодераторВопрос не понятен.
18.03.2022 в 18:10 #22522
OakimУчастникНу для OR есть формула в справочнике
public double OR(params int[] cnlNums) { foreach (int cnlNum in cnlNums) { if (Val(cnlNum) > 0 && Stat(cnlNum) > 0) return 1; } return 0; }а для AND есть подобная? А то в настройках Канала в поле Формула ограничение на количество символов и не каждая формула туда влезет.
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.