Вот вам схема трапецевидного графика, с выхода (INT) подавайте на ПИД регулятор, на вход (SP). Если будут вопросы пишите в личку.
Вид для печати
Подскажите, плиз: какое максимальное количество регистров можно записать за раз с помощью функции MODBUS - 16 Preset Multiple Registers, при использовании библиотеки modbus.lib. ?
Здравствуйте. Хочу поморгать реле с периодом в 2 сек. Дана программа ааа. В PLC_PRG кроме нее ни чего нет. Почему не работает сия конструкция:Вложение 17616
Kavoo, так вообще не пишут. Вариант 1 (Util.lib):Вариант 2 (TON):Код:VAR
blinker: BLINK := (TIMELOW := T#1s, TIMEHIGH := T#1s);
doBlink: BOOL;
a13_3: BOOL;
END_VAR
blinker(ENABLE := doBlink, OUT => a13_3);
Вариант 3 (ленивый/отладочный с некорректным первым периодом):Код:VAR
blinker: TON := (PT := T#2s);
doBlink: BOOL;
a13_3: BOOL;
END_VAR
blinker(IN := NOT blinker.Q AND doBlink);
a13_3 := blinker.ET > T#1s;
Код:VAR
doBlink: BOOL;
a13_3: BOOL;
END_VAR
a13_3 := doBlink AND TIME_TO_DWORD(TIME()) MOD 2000 > 1000;
Почему? Это ограничение среды программирования? Разве повторный вызов таймера не обнуляет его текущего состояния?
Таймер не будет считать сам по себе. Его нужно постоянно вызывать, и вы этого не делаете. Это не ограничение среды, это суть среды.
Если вставить вызов таймера после IF, моргание идет не регулярно.
Спасибо за отклик Yegor. Ваши процедуры работают. Извините меня за навязчивость, просто хочу понять почему не работает мой вариант, чтоб не нарваться в будущем. Я же вызываю их поочередно, сначала t2 потом t1. Они же должны работать независимо от остальной программы, я же объявил ааа не как функцию, а как пользовательскую программу.
То ,что таймеры должны работать независимо от остальной программы - это не я придумал, я где то вычитал в литературе по CoDeSys. Получается если таймера нужно вызывать постоянно, то их временные интервалы которые они отсчитывают в процессе работы программы, окажутся больше заданных?