Как можно организовать таймер ?

Простейшие вопросы в области инженерной разработки
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Как можно организовать таймер ?

Сообщение Sergey Ivanov »

как сделать - не знаю, точнее знаю, но решение, как мне кажется, не совсем правильное. :vi: прилагается ( :labview: 2009).

как можно ещё реализовать эту задачу ?
Вложения
таймер.vi
(7.6 КБ) 688 скачиваний
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
grjgrj

Gold Bronze
professional
professional
Сообщения: 300
Зарегистрирован: 18 фев 2009, 14:32
Награды: 2
Версия LabVIEW: 8.5-2011
Откуда: Караганда
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение grjgrj »

Ну таймер как таймер, работает же :). А что не устраивает.
Для повышения точности можно использовать системный счетчик (для этого нужно вызывать системную dll'ку), пример есть здесь
(http://www.nf-team.org/drmad/stuff/lvmicro.htm и здесь http://www.nf-team.org/drmad/stuff/lvideman.htm)
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение Sergey Ivanov »

спасибо за ссылочки! работать работает, но интересно просто, может, это как-то более правильно и изящно, что ли :D , выполнить можно. дома буду подробненьо в ссылочках ковыряться :)
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
grjgrj

Gold Bronze
professional
professional
Сообщения: 300
Зарегистрирован: 18 фев 2009, 14:32
Награды: 2
Версия LabVIEW: 8.5-2011
Откуда: Караганда
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение grjgrj »

а в твоем примере можно умножение убрать, от него толку нет вот :vi:
Вложения
таймер.vi
(7.69 КБ) 495 скачиваний
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1217
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2018
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение Sergey Ivanov »

ну да, логично ! :D
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение mzu2006 »

Если хочется получить от таймера какую-либо приличную точность, то так делать не надо. Почему?
Причина в jitter. Смотри http://www.labviewportal.org/viewtopic.php?p=5215#p5215 и ссылки из того поста.
Я бы либо заменил цикл + wait на timed loop либо сделал бы так:
GoodTimer.png
GoodTimer.png (15.78 КБ) 8572 просмотра
Аватара пользователя
Pavel Krivozubov

Activity Bronze
professor
professor
Сообщения: 4422
Зарегистрирован: 07 фев 2008, 16:39
Награды: 3
Версия LabVIEW: 7.0 - 2013
Откуда: г. Электросталь
Благодарил (а): 24 раза
Поблагодарили: 9 раз
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение Pavel Krivozubov »

Кстати вот эта тема возможно поможет:
http://labviewportal.org/viewtopic.php? ... %80#p16238
Drachev
junior
junior
Сообщения: 56
Зарегистрирован: 30 мар 2009, 17:48
Версия LabVIEW: 8.6
Откуда: Зеленоград
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение Drachev »

Про точность-в винде 10мс. Меньше у меня не стабильно. Брал лпт порт подключал к тиристорам 100герц работало стабильно, повышал частоту - сбои. А, ну да, лох я, чего от лпт захотел. Взял через звуковуху сделал - картина таже. Осциллограф подтвердил задержки менее 10мс не стабильны. Ну и ладно подключил обратно к генератору.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение mzu2006 »

Со звуковухой, а также с платами аналоговых генераторов, можно получить сигналы с частотой сильно больше чем 100 Гц. Нужно использовать аппаратный буфер.
Drachev
junior
junior
Сообщения: 56
Зарегистрирован: 30 мар 2009, 17:48
Версия LabVIEW: 8.6
Откуда: Зеленоград
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение Drachev »

mzu2006 писал(а):Нужно использовать аппаратный буфер.
Можно пример, или по подробнее.

только на вейтах и подобных вещах много получить не смог
Drachev
junior
junior
Сообщения: 56
Зарегистрирован: 30 мар 2009, 17:48
Версия LabVIEW: 8.6
Откуда: Зеленоград
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение Drachev »

МММ подумал, покурил, вспомнил... На работе АЦП есть ЛА-И24USB http://www.rudshel.ru/show.php?dev=3 (редкостная гадость - один раз поигрался), да там буфер есть. Через звуковуху может перезаписываемый файлик wav сделать (пишет, читает, стирает, опять пишет), так не пробовал. А вот создать файлик и крутить по кругу, тут беда в моменты когда файл кончается и начинается снова (бесконечно большим его не сделать). Но про буфер лпт, я не знаю как сделать - подскажите, не усну сегодня
MrBobre
freelance
freelance
Сообщения: 21
Зарегистрирован: 18 мар 2010, 15:11
Версия LabVIEW: 12
Откуда: Казань

Re: Как можно организовать таймер ?

Сообщение MrBobre »

Drachev писал(а): На работе АЦП есть ЛА-И24USB http://www.rudshel.ru/show.php?dev=3 (редкостная гадость - один раз поигрался), да там буфер есть.
я с ЛА12 много возился. могу подкинуть :vi: с настроенными непрерывным сбором. там есть хитрость с установками. нужно указывать определенные цифры для размера блока данных что б хоть как то работало .
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение mzu2006 »

Про аппаратный буфер: рекомендую примеры к DAQmx а также help на Buffering (в категории Measurement fundamentals). Мне удавалось генерировать синусоиды с частотами синуса несколько килогерц (т.е. частота дискретизации - сотни килогерц) и это далеко не предел. Что непонятно, обращайся.

Да, это не делается
только на вейтах и подобных вещах
, для этого необходима карточка (PCI, например) с возможностью bus mastering, аппаратный буфер на карточке, таймер с генератором (на карточке или отдельно) и грамотно написанный драйвер. Есть ещё несколько более тонких настроек вроде PCI latency, которые могут помочь.

Если я правильно понял, что ты имел в виду под генерацией
только на вейтах и подобных вещах
, то так генерировать используя :labview: можно, только под real-time, FPGA, возможно, микроконтроллеры.

Про буфер LPT, не знаю. В принципе, он там есть, LPT может качать данные из памяти сам (DMA), но нету генератора, который бы тактировал выход цифровых данных с LPT. Насколько я припоминаю программирование i8255 (и его последующих версий), то можно завести сигнал, который будет тактировать выдачу информации наружу. Но для этого нужен внешний генератор.

С выдачей данных на звуковуху с приличными частотами: ну вот, хоть моё пианино http://www.labviewportal.org/viewtopic. ... 221#p11221
Drachev
junior
junior
Сообщения: 56
Зарегистрирован: 30 мар 2009, 17:48
Версия LabVIEW: 8.6
Откуда: Зеленоград
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение Drachev »

MrBobre писал(а):могу подкинуть :vi: с настроенными непрерывным сбором.
Мне не надо, спасибо.
mzu2006 писал(а): для этого необходима карточка (PCI, например) с возможностью bus mastering, аппаратный буфер на карточке, таймер с генератором (на карточке или отдельно) и грамотно написанный драйвер. Есть ещё несколько более тонких настроек вроде PCI latency, которые могут помочь.

то так генерировать используя :labview: можно, только под real-time, FPGA, возможно, микроконтроллеры.
Для всего этого нужно железо (лучше NI или самодельное), просто голого системника не хватит.

Но, отвлеклись от основной темы: я хотел сказать, что jitter, на вейте при 10мс ужасен. Таймер построенный на вейте не точен (если на вход подавать 2мс), а вот таймер с вычитанием Get Date/Time In Seconds Function - это вещь максимально точная и простая.

Генератор сделанный из лпт порта и вейтов любых(Timed Loop, Timed Sequence Structure, Wait, Wait Until Next ms Multiple) работает без jitter'а только при задании 0мс(задержки нет) или больше 10мс не так сильно заметен дребезг, в лпт втыкал подобный осциллограф http://www.labviewportal.org/ru/galerej ... tail&id=86
И странные результаты были(точных цифр и скринов не дам, давненько было): алгоритмы при задержке 0мс на Timed Loop, Timed Sequence Structure работали существенно быстрее, чем аналогичные алгоритмы при задержке 0мс на (While Loop, Flat Sequence Structure)+(Wait, Wait Until Next ms Multiple).
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Как можно организовать таймер ?

Сообщение mzu2006 »

Drachev писал(а):просто голого системника не хватит.
RT можно запустить на голом системнике.
Drachev писал(а): алгоритмы при задержке 0мс на Timed Loop, Timed Sequence Structure работали существенно быстрее, чем аналогичные алгоритмы при задержке 0мс на (While Loop, Flat Sequence Structure)+(Wait, Wait Until Next ms Multiple).
связано с тем, что Timed Loop выполняется отдельно от подсистем выполнения и с повышенным приоритетом. + все timed структуры синхронизируются специальным драйвером режима ядра.
Ответить

Вернуться в «Для чайников»