1_Имеется такой фрагмент программы: IF I0 > 12 THEN F1 = 12 END_IF IF I0 <= 12 I0 >= 10 THEN F1 = 11 END_IF Q0 = F1 EXIT Даю на I0 13 ответ 12, даю 10 ответ 11, а если дать на I0 12 получется 12 т.е. не выполняется второе IF. почему и как быть если очень надо? 2_Если создать такой блок отдельно то первое условие никогда не выполняется.Рассуждая с точки зрения языков программирования высокого уровня все должно работать.Что за хитрость таится в IL c операторами условного перехода(может я не правильно использую переменные).В хелпе написано что максимум 254 оператора и вложенных неограничено. Если не разобратся при каких условиях они корректно работают, то такого можно наколбасить что уйдет уйма времени чтобы разобраться! 3_Пожелание.Неплохо было бы иметь что-то вроде дебагера для быстрой отладки IL программы, а то очень долгая процедура выполнять отладку в FBD возвращяться в IL и тд. Спасибо.
Posted by electropribor (Участник № / Member № 122) on :
Здесь такая фишка: во фрагменте IF I0 <= 12 I0 >= 10 THEN F1 = 11 END_IF срабатывает только условие I0 >= 10. Точнее, первое условие тоже будет проверено, т.е. выставлен флаг CMP, но при проверке второго условия это значение будет затёрто результатом второго сравнения