Доброго времени суток!

Я только начинаю знакомсво с CoDeSys и пишу программу, связанную с диагностикой электронного блока. Работа программы заключается в подаче управляющих сигналов с ПЛК и приеме большого количества дискретных сигналов с проверкой соответвия с таблицей истинности. Получается, что при различных значениях выходных сигналов ПЛК, надо принять и проверить различные комбинации входных сигналов. Причем проверка должна проходить последовательно. При не соответсвии она прекращается, а при устранении неполадки должна возобнавиться с того же места, на котором остановилась.
Проблема заключается в следующем:
Входные каналы связаны с перемнными типа BOOL. Формально в программе я прописываю нужные таблицы истинности для этих каналов. Но получается так, что одни и те же переменные в разных местах программы на разных этапах проверки принимают противоположные значения, т.е, например, в начале x1_44=false, а где-то в середине x1_44=true и т.д. Это зацикливает программу, т.е когда проверка доходит до совпадения с определенной переменной, то происходит возврат в самое начало и опять тоже самое до первого совпадения переменных.
Я пробовал обнулять переменные перед каждым шагом проверки, но это тоже не помогает. Подскажите плиииз как мне выкрутиться из такой ситуации.
Алгоритм и проект прилагаю 1.rar