Добрый день!

Уважаемые программисты, нет реле под рукой, такая конструкция жизнеспособна?

function_block R_c //Реверсивный счётчик.


var_input //объявление входных переменных
U : bool; //входная переменная с типом данных bool
D : bool; //входная переменная с типом данных bool
Res : bool; //входная переменная с типом данных bool
N : udint; //входная переменная для значения счетчика после сброса
end_var

var_output //объявление выходных переменных
Q : udint; //выходная переменная с типом данных udint
end_var

var //объявление локальных переменных
CounterValue : udint; //переменная для текущего значения счетчика

RTrig : bool; //переменная для определения переднего фронта на входе «U»
RTrig1 : bool; //переменная для определения переднего фронта на входе «D»
end_var

if Res then
CounterValue := N;
end_if

while U and not RTrig and not Res and CounterValue <100 do
CounterValue := (CounterValue + 1);
RTrig := U;



end_while

if not U and RTrig then
RTrig := false;
end_if

while D and not RTrig1 and not Res and CounterValue > 0 do
CounterValue := (CounterValue - 1);
RTrig1 := D;

end_while



if not D and RTrig1 then
RTrig1 := false;
end_if

Q := CounterValue ;

end_function_block