Вопрос, почему вы бы поместили оператор CASE в оператор IF? Оператор IF должен вызывать ваши шаги?
If something then
step = 10; (* start processing *)
else
step = 0;
end_if
case step of
0:
Kill your enable or an idle state here stop state.
10: (* Start *)
step = step +1;
20:
Call FB
40: (*continue *)
step = 10;
30: (* End *)
step = 0;
else (* catch something here *)
end_case
здесь вызывается FB, который получает входные данные из кода выше.
Трудно сказать INVALID иногда, если вы не выполняете очистку all и список переменных выходит из строя, что может произойти.
Извините, что не очень помог, я увидел недействительный, и он пришел из чистого проекта и смотрит на недействительный указатель, который еще не был вызван.