Какая то непонтяка, даю команду на включение таймера, а он почему то свой выход не переключает.
Вся задумка ломается.
во вложении скрин.
Какая то непонтяка, даю команду на включение таймера, а он почему то свой выход не переключает.
Вся задумка ломается.
во вложении скрин.
Первый уже три секунды как выключен. Второй вообще не вызывается при данном Y. Как меняется start из этого скриншота не узнать.
И уберите эту ерунду с 13 по 16 строчки. Есть функция LIMIT.
Может пора завязывать с программированием, не понимаете что ли что это не Ваше?
отдельно посчитайте чему равна строчка присваиваемая PT, если Y типа INT то это будет 70ms, если реал то 170ms, что Вы там хотите увидет за такой короткий промежуток времени, счетчик хотя бы поставте на передний фронт, ну по поводу LIMIT уже сказали
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
на скриншоте режим дебагера, переменная start в данном цикле перешла из 0 в 1. т.е. таймер должен сработать в этот момент, т.е. выход также должен перейти из 0 в 1, а этого почему то не происходит. PT у нас равняется 7 секундам.
Почему у него ЕТ больше РТ и как это произошло, я не понимаю, и что из этого вытекает тоже.
Фигня в 13 и 16 строчке... ну мне так удобнее, не вижу ничего зазорного...
Можно конечно извернуться без этих всех таймеров написать.... но блин если они есть... то лучше с ними
Я бы таймер вызывал бы вне проверки условий. Тогда он все время будет выполняться и контролировать момент включения/выключения выхода. И еще, лучше использовать таймер TON или TOF. Не знаю как в КДС3, а в КДС2 TP некорректно работает при PT=0.
Последний раз редактировалось amn; 10.12.2014 в 00:22.
интересно, что подразумеваете под некорректно работает РТ=0?
использую такой прием для сброса. и не замечал.
ну-ку поделитесь косяком разработчиков кдс
Последний раз редактировалось lara197a; 10.12.2014 в 00:57.
Если во время работы таймера сбросить PT в 0, то все работает. А попробуйте при PT=0 передернуть вход IN. Выход таймера Q начнет дергаться.
В смысле дергаться? если соединить с физическим выходом, то он будет включен пока на входе EN ТР будет TRUE.
И ничего не дергается.
Откуда — не имеет значения. Важно, вызываете ли вы его вообще. Можно сколько угодно менять входные переменные функционального блока, но пока вы его не вызовете, значения выходов не изменятся. То есть:А в чем разница для таймера, от куда его вызвали?А второй таймер при данных условиях у вас не вызывается ниоткуда совсем.Код:timer.IN := FALSE; (* Ничего не изменится *) timer(IN := FALSE); (* Таймер обработает FALSE, если было TRUE *)