Вход

Просмотр полной версии : Инверсия выходного сигнала



Kofe
15.12.2023, 16:42
Добрый день!

Подскажите пожалуйста как можно инвертировать выходной сигнал с ПИД регулятора? ПИД управляет воздушными заслонками, условие такое, что при открытии одной другая закрывается и наоборот. Тоесть если на выходе у одной заслонки 8В (80%), то на другой 2В (20%), если у одной 5В (50%), то у другой тоже 5В (50%). Конечно можно реализовать это в тупую прописав 100 условий например если 0, то 100, если 1, то 99 и тд., но это не лучший вариант. Есть ли возможность инвертировать сигнал типа REAL или WORD?

ПЛК110 CoDeSys 2.3

kondor3000
15.12.2023, 16:47
Добрый день!

Подскажите пожалуйста как можно инвертировать выходной сигнал с ПИД регулятора? ПИД управляет воздушными заслонками, условие такое, что при открытии одной другая закрывается и наоборот. Тоесть если на выходе у одной заслонки 8В (80%), то на другой 2В (20%), если у одной 5В (50%), то у другой тоже 5В (50%). Конечно можно реализовать это в тупую прописав 100 условий например если 0, то 100, если 1, то 99 и тд., но это не лучший вариант. Есть ли возможность инвертировать сигнал типа REAL или WORD?

ПЛК110 CoDeSys 2.3

Самый простой вариант на выходе, вычесть выходной сигнал из 100, например 100%-80%=20%.

krollcbas
15.12.2023, 18:14
Потребуется такая функция:


FUNCTION LINEAR : REAL
VAR_INPUT
VALUE:REAL;
X1:REAL;
X2:REAL;
Y1:REAL;
Y2:REAL;
END_VAR
VAR
RESULT:REAL;
END_VAR

IF X2-X1 = 0 THEN RESULT:=0; END_IF;
IF X2-X1 <>0 THEN
RESULT := Y1+(VALUE-X1)*((Y2-Y1)/(X2-X1));
END_IF;
LINEAR := RESULT;



72403

Kofe
15.12.2023, 18:46
Самый простой вариант на выходе, вычесть выходной сигнал из 100, например 100%-80%=20%.

Спасибо, попробую данный вариант

Kofe
15.12.2023, 18:46
Потребуется такая функция:


72403

Спасибо, попробую данный вариант