Сообщение от
Валенок
Когда нужно будет - будет позно ))
С кейсом кажется жестковато. Все-таки 32 значения. Может в цикле перебрать ?
PS.
Жаль у реала мантисса 23 бита (датчиков > 23). Можно было бы:
if положение <> 0 then
alarm := expt(2, log(положение)/log(2)) <> положение;
end_if
У OSCATA есть нужная функция
1.png
Код:
FUNCTION BIT_COUNT : INT
VAR_INPUT
IN : DWORD;
END_VAR
Тело функции
WHILE in > 0 DO
IF in.0 THEN Bit_Count := Bit_Count + 1; END_IF;
in := SHR(in,1);
END_WHILE;
Добавить проверку Если BIT_COUNT( POLOGENIE) >1, то аларм