Это ближе к телу. Делал похожим способом на ПЛК с Codesys. Вот и думал перейти на ПР. Погрешность + - 10 мс не имеет значения.
Это ближе к телу. Делал похожим способом на ПЛК с Codesys. Вот и думал перейти на ПР. Погрешность + - 10 мс не имеет значения.
Период следования импульсов от 300 мсек
Тогда и ST в руки.
Массив bool, два индекса на запись и на чтение, тактирование при помощи BLINK и RTrig.
Столь простые вещи не буду делать - неинтересно, и подозреваю, что исходная задача решается не через звено чистого запаздывания.
Последний раз редактировалось FPavel; 16.01.2025 в 21:16.
Так это же проще пареной репы, вот когда-то очень давно кому-то помогал на форуме, в смысле, делал задержку почти на 2000 тактов:
Задержка на 1984 такта.owle
Задержку можно настраивать!
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
На вход CLK подать выход связки BLINK+RTrig с полным периодом 10 мс (5+5 мс).Код:A: array [0..999] of bool; // буфер на 1000 * 10 мс = 10 с InIndx: udint; OutIndx: udint; if CLK then // если на тактовом входе true - выполнить пересчёт A[InIndx] := In; OutIndx := InIndx + 123; // 123 * 10 ms = 1 s 23 ms - задержка при такте 10 ms if OutIndx > 999 then OutIndx := OutIndx - 1000; //минус длина массива end_if Out := A[OutIndx]; // значение выхода InIndx := InIndx + 1; if InIndx > 999 then InIndx := InIndx - 1000; //минус длина массива end_if end_if
Мне не нужено масштабирование входного импульса, просто по восходящему фронту выдать импульс с задержкой
Немогу понять как работает выше проведённый код. Что такое In и Out. Типа состояние входа и выхода?
Сначала идёт блок Blink, а затем Rtrig?
Типа змейки, которая непрерывно бегает и ловит вход
℅-/
Гениально
Последний раз редактировалось Антон_Б; 16.01.2025 в 22:20.
Преобразуем Ваш импульс в целое число: целое умножаем, делим,,, записываем полученное в таймер ТР или TOF - так может?
Антон_Б почему змейки? Blink дает половину выставленного периода 1 а половину 0, если время Th, Tl равны. А для работы вашего или иного макроса нужен импульс, а не удержание 1 Н-ное время. вот RTrig и дает этот самый импульс, длительностью в 1 цикл программы.