1) Полностью очищает папку с проектом и при следующей компиляции происходит полная "сборка проекта" с нуля - онлайн изменения при этом невозможны. Пару раз встречалась такая ситуация. Если у вас не было ошибок в коде 100% должно было бы помочь.
2) Про таймеры встречал что-то наподобие такого кода и потом люди удивлялись почему выход на таймере выдаёт TRUE. (Там было нечто похожее только IF'ов было больше человек потерялся).
VAR
x: BOOL:=TRUE;
tTON: TON;
END_VAR
IF x THEN
tTON(IN:=x, PT:=T#10s);
x:=FALSE;
END_IF
tTON();
3) Про Case по мне так не очень читабельно получилось - но тут дело каждого.
4) При опросе устройств с Modbus, нестандартными протоколами приходит ответ, который зачастую нужно разбирать и переставлять байты чтобы получить значение. Можно передавать указатель на структуру в которой хранятся нужные данные для ФБ и т.д. Уменьшает количество кода и вероятнее скорость обработки данных, но это лишь моё предположение)