Не знаю на чем вы пишете, но в ST на ПР нет типа byte, есть udint. Попробовал вроде работает. И почему бы for не использовать?
FUNCTION myFunc: udint;
var_input
x:bool;
end_var
VAR
bCount: UDINT := 0;
END_VAR
WHILE NOT (bCount=255) DO
bCount := bCount + 1;
// IF bCount.0 THEN ......; END_IF
// IF bCount.1 THEN ......; END_IF
// IF bCount.2 THEN ......; END_IF
// IF bCount.3 THEN ......; END_IF
// IF bCount.4 THEN ......; END_IF
// IF bCount.5 THEN ......; END_IF
// IF bCount.6 THEN ......; END_IF
// IF bCount.7 THEN ......; END_IF
END_WHILE
myFunc:=bCount;
end_function
image_2022_06_02T12_52_40_960Z.png