Подскажите, плиз: какое максимальное количество регистров можно записать за раз с помощью функции MODBUS - 16 Preset Multiple Registers, при использовании библиотеки modbus.lib. ?
Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.
Здравствуйте. Хочу поморгать реле с периодом в 2 сек. Дана программа ааа. В PLC_PRG кроме нее ни чего нет. Почему не работает сия конструкция:Вложение 17616
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
https://www.youtube.com/@%D0%9F%D0%B...BA%D0%BE%D0%B2
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
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. Получается если таймера нужно вызывать постоянно, то их временные интервалы которые они отсчитывают в процессе работы программы, окажутся больше заданных?