Я без надобности задержку на такт никогда не добавляю.
Обычно параноидальную желтизну от ОЛ игнорирую.
В данном случае переменная Сумма - энергонезависимая, из-за этого желтизны нет.
К стати Сумма - 32 бита.
Вид для печати
Прочитал заново свой ответ, понял, что не все написал.
В меню пользователя отображается (по крайней мере должен отображаться) фактический цикл. А не заданный. Т.е. заданный цикл 20мс, отображается 6-16 мс.
Это значит (должно значить) только то, что программа вызывается каждые 20мс, но выполняется быстрее (за 6-16мс). Следующий вызов программы все равно будет через 20мс. Остальное время контроллер выполняет функции ввода/вывода, и другой сервис. Если все равно осталось время - "спим".
Переменная, инкрементируемая в программе, будет инкрементироваться точно раз в 20мс.
Правда почему в программе, где отсутствуют IF ELSE изменяется время выполнения - вопрос. Возможно не правильно разделены потоки программы и обмена по порту.
1. На опрос входов/выходов выделяется время вне цикла пользовательской программы.
2. Даже если не выделяется, чтение десятка регистров - не должно существенно влиять на цикл, в котором может быть до 10 тысяч команд чтения/записи регистров.
3. В дополнение к 2: преобразование АЦП/ЦАП осуществляется вне процессорного времени, самим АЦП/ЦАП. Ну или это совсем дешманское поделие.
ЗЫ. Даже если АЦП преобразует раз в 1с, его регистры опрашиваются с каждым циклом. Просто основное время будут одни и те же значения, а раз в секунду - новые.
Добрый день, коллеги. Прошу вашей помощи. Как сделать так,чтоб сброс данных ( секунды и минуты) происходил при нажатии на I1, когда I1=0. В данный момент когда I1=1, происходит счет, когда нажимаем на I1=0, счет приостанавливается, а когда запускаем дальше I1=1, счет продолжается.Необходимо,чтоб после нажатия происходил сброс, а после повторного запуска счет начинался заново. Заранее всем спасибо за помощь. Вложение 60363Вложение 60364
Вот так
Вложение 60365
Это элементарно Ватсон)) :
Добавить F-триггер и два элемента OR на входы R счётчиков STN1 и STN2 Вложение 60367
Добавляем к минутам еще MOD 60 и минуты будут сбрасываться
Вложение 60368
Всем привет. Появилась необходимость на пр200 сделать секундомер, с точностью до сотых миллисекунд (пример 55,63 сек и т.п.)Когда срабатывает дискретный вход, включается секундомер и выключается тогда, когда срабатывает второй дискретный вход. И чтоб это время сохранялось до следующего включения секундомера, а еще лучше в архив.
Подскажите возможно ли это сделать на ПР200? Если да, то хотя бы подскажите в какую сторону копать или ссылку на мануал.
Вообщем нужен секундомер в миллисекундах и чтоб со временем, которое отсчитал секундомер, можно было работать (выполнить какие-либо вычисления, преобразовать в другой тип данных).
Вот пример секундомера
Вложение 60457
Погрешность не более 1/2 времени цикла
Правда здесь управление только от одного входа ПР, но думаю переделаете сами под Ваши условия
Второй вариант - "v13 Длительность импульса_2.owl"
Вложение 60460
ЗЫ.
Должно работать до версии 1.16 (где время цикла ВСЕГДА было целым значением мс - 1, 2, 3, 5 и т.д)
В более старших версиях не проверял
Спасибо большое
Вот нашёл вариант с управлением от двух входов
Вложение 60463
Это всё лажа, в последней версии 23.193 разница между заданием таймера ТР и измерением 100 мс,
при уменьшении времени цикла до 10 мс, считает в 10 раз медленнее. Вложение 60464
ПР в принципе не может считать точнее секунд, десятые доли под большим вопросом, какие тут миллисекунды вылавливать.
Проверил в эмуляции все 3 схемы, везде одно и тоже. Про это и написал с самого начала пост#220.
Сделал
Вложение 60465
Ведь в моем примере используется целочисленная арифметика и дискретность полученного значения равна длительности цикла!
Например если цикл будет 5 мс
Вложение 60466
Когда уменьшаете время цикла в эмуляторе, то дождитесь появления на выходе dTint установившегося значения, а только затем запускайте TP
Ведь макросу подсчета времени цикла нужно первоначальное время от включения питания 0.5 секунд
Да, в эмуляторе будет медленно, но эмулятор не считает в реальном масштабе времени
Какой-то ютуб стал не понятный, видео через одно место загружается (через какие-то шорты "Shorts")
https://youtu.be/h6u1RAdWAH0
Коллеги, подскажите. Нужен таймер обратного отсчёта, чтоб адекватно показовал оставшиеся ЧАСЫ и МИНУТЫ от первоначальной уставки... и по окончанию отсчёта выдавал Флаг окончания отсчёта. Заранее Благодарен... Может у кого есть уже готовый макрос ???
А в текущей теме разве нет таймеров, Вас устраивающих(выполняющих ваши хотелки)?
https://owen.ru/forum/showthread.php?t=33720&page=17
Две страницы назад есть часы, меняете вход счётчика на D и получаете таймер. Пару доработок и есть флаг и начальный сброс.
Вот пример таймера на 1 час, переменная PV задаёт время в секундах Вложение 61450
посмотрите такой вариант таймеров