Список форумов   Список форумов  

Время между сигналами

Всё о программировании на Labview

Модераторы: Техподдержка NI, Robert, Модератор

Время между сигналами

Сообщение Artur » Вт июн 05, 2012 1:35 pm

Добрый день!

Имеется датчик положения угла вала. Выдает цифровой сигнал от 0 до 255. Возникла проблема с тем что б замерить скорость вращения (с waveform как то проще, а вот с цифрой не понятно) т.е. для этого так понимаю нужно замерить время выдачи сигнала с 1 до 2 (к примеру) и помножить на 256, причем время желательно считывать между каждыми сигналами, для большей точности определения скорости вращения вала. Если не сложно подскажите как это реализовать, может есть готовые блоки. В обучалках и на форумах не нашёл подобной темы.
Artur
Пользователь
 
Сообщений: 13
Зарегистрирован: Пн мар 26, 2012 11:17 am

Re: Время между сигналами

Сообщение IvanLis » Вт июн 05, 2012 1:58 pm

Artur писал(а):Добрый день!

Имеется датчик положения угла вала. Выдает цифровой сигнал от 0 до 255. Возникла проблема с тем что б замерить скорость вращения (с waveform как то проще, а вот с цифрой не понятно) т.е. для этого так понимаю нужно замерить время выдачи сигнала с 1 до 2 (к примеру) и помножить на 256, причем время желательно считывать между каждыми сигналами, для большей точности определения скорости вращения вала. Если не сложно подскажите как это реализовать, может есть готовые блоки. В обучалках и на форумах не нашёл подобной темы.

у Вас изменение показаний энкодера на "1" соответствует изменению угла на (360/255) градуса или (2*Pi/255) рад
соответственно циклическую частоту можно посчитать как ds/dt (где ds-разница между текущим и предыдущим значением угла, а dt время между показаниями)
ну а как перейти от циклической частоты к нормальной, думаю проблемм нет

единственное, нужно предусмотреть ситуацию, когда переход через "0" осуществляется

----------------------
примерно так
1.png
1.png (46.43 KiB) Просмотров: 4735

Untitled 2.vi
lv2010
(14.88 KiB) Скачиваний: 112
Знание нескольких принципов освобождает от знания многих фактов!

Живу я здесь ||| LabVIEW Portal in Google+
IvanLis
Специалист LabVIEW
 
Сообщений: 497
Зарегистрирован: Пн апр 23, 2007 1:44 pm
Откуда: СССР

Re: Время между сигналами

Сообщение Artur » Вт июн 05, 2012 2:33 pm

Спасибо большое! Буду пробовать =)
Artur
Пользователь
 
Сообщений: 13
Зарегистрирован: Пн мар 26, 2012 11:17 am

Re: Время между сигналами

Сообщение Artur » Вт июл 10, 2012 10:26 am

Попытался сделать программу с приёмом реального сигнала. Но обороты почему то показывает не верно и быстроизменяется, что не приятно для глаза. Пробовал применять Mean, но тот получается тугодумистый. Если есть аналоги осреднителей подскажите. Да и как переделать что б время не задавалось, а замерялось не совсем понял. Если есть какие нибудь идеи помогите пожалуйста.
Вложения
Prog.png
Prog.png (34.71 KiB) Просмотров: 4670
Artur
Пользователь
 
Сообщений: 13
Зарегистрирован: Пн мар 26, 2012 11:17 am

Re: Время между сигналами

Сообщение IvanLis » Вт июл 10, 2012 7:39 pm

Artur писал(а):Пробовал применять Mean, но тот получается тугодумистый

попробуйте использовать Mean PtByPt
можно настроить "глубину" - количество отсчетов по которым происходит осреднение
это в принципе можно назвать скользящее среднее
Знание нескольких принципов освобождает от знания многих фактов!

Живу я здесь ||| LabVIEW Portal in Google+
IvanLis
Специалист LabVIEW
 
Сообщений: 497
Зарегистрирован: Пн апр 23, 2007 1:44 pm
Откуда: СССР

Re: Время между сигналами

Сообщение Artur » Ср июл 11, 2012 10:07 am

То что настроить можно это конечно удобно. Правда если обороты будут резко меняться, то придётся подстраивать на ходу. Спасибо попробую и его.
Artur
Пользователь
 
Сообщений: 13
Зарегистрирован: Пн мар 26, 2012 11:17 am

Re: Время между сигналами

Сообщение Artur » Вт июл 17, 2012 11:12 am

А есть ли у кого нибудь идеи на счет замера времени между сигналами? Можно даже пробовать замерять время от нуля до нуля. Только проблема с обнулением времени при прохождении с 255 на 0.
Artur
Пользователь
 
Сообщений: 13
Зарегистрирован: Пн мар 26, 2012 11:17 am

Re: Время между сигналами

Сообщение IvanLis » Вт июл 17, 2012 12:25 pm

А о какой частоте вращения идет речь?
Может Вам лучше использовать не энкодер, а например датчик хола и рассчитывать частоту вращения по импульсам в ед. времени....
Знание нескольких принципов освобождает от знания многих фактов!

Живу я здесь ||| LabVIEW Portal in Google+
IvanLis
Специалист LabVIEW
 
Сообщений: 497
Зарегистрирован: Пн апр 23, 2007 1:44 pm
Откуда: СССР

Re: Время между сигналами

Сообщение Artur » Ср июл 18, 2012 10:23 am

Планируется замерять обороты от 1000 до 6500 об/мин и причем не на стационарных позициях. Энкодер так же проще прикрепить к новому валу, чем по большей части и аргументировался его выбор.
Artur
Пользователь
 
Сообщений: 13
Зарегистрирован: Пн мар 26, 2012 11:17 am

Re: Время между сигналами

Сообщение Borjomy » Ср июл 18, 2012 11:25 am

Для нормальной реализации требуется инкрементальный энкодер и плата счетчиков (типа NI-6602). Обсчитывать скорость по датчику положения вала неправильно. При скорости вращения 6500 об/мин (а это больше 100 об/с) и времени измерения 10 мс будут потери оборотов. Фактически необходимо на базе датчика положения вала сделать датчик инкрементальный. Очень большое значение имеет точность момента съема показаний, погрешность 1мс - уже 10%.
Какие требования у вас к точности определения скорости вращения (+-об/мин)? И какое время измерения допустимо(мс,с)?
Кстати, в схеме Arturа необходимо заменить задание задержки с помощью Wait на Timer (Wait дает только задержку и с учетом времени выполнения других операций в цикле общее время цикла будет плавать. А Timer - выравнивает запуск цикла по заданной временной сетке). Но в любом случае под виндовой машиной такого рода измерения будут принципиально неточными. А вот через плату счетчиков можно сделать весьма точную систему измерения скорости, поскольку счет будет вестись аппаратно, а фиксация показания счетчиков реализуется на базе таймера с базой 80МГц.
Кстати, к этой плате счетчиков можно подключить и абсолютный датчик положения вала. Тогда используется только младший разряд датчика. Правда направление вращения тогда определить не получится.
Последний раз редактировалось Borjomy Ср июл 18, 2012 11:46 am, всего редактировалось 1 раз.
Borjomy
Пользователь
 
Сообщений: 24
Зарегистрирован: Вт ноя 22, 2011 12:16 pm

Re: Время между сигналами

Сообщение IvanLis » Ср июл 18, 2012 11:44 am

Borjomy писал(а):Кстати, в схеме Arturа необходимо заменить задание задержки с помощью Wait на Timer (Wait дает только задержку и с учетом времени выполнения других операций в цикле общее время цикла будет плавать. А Timer - выравнивает запуск цикла по заданной временной сетке).


Мне кажется наоборот....
Wait - будет более точно, т.к. учитывает задержки на обработку, а вот
Timer, он тактирует, т.е. если время ня нем установлено 1 сек, а время обработки 1.2 сек, то следующий запуск будет только через 2 сек
в то время Wait запустит его сразу, но в любом случае лучше опираться не на задержки, а считывать каждый раз время и вычислять период самому
Знание нескольких принципов освобождает от знания многих фактов!

Живу я здесь ||| LabVIEW Portal in Google+
IvanLis
Специалист LabVIEW
 
Сообщений: 497
Зарегистрирован: Пн апр 23, 2007 1:44 pm
Откуда: СССР

Re: Время между сигналами

Сообщение Borjomy » Ср июл 18, 2012 11:49 am

Если время выполнения основного кода в цикле 0.2 мс, а время Wait 10мс, то общее время цикла будет 10.2мс. В случае с Timer общее время выполнения будет 10мс. Это неоднократно проверялось. Мало того, до тех пор, пока основной код в цикле имеет время выполнения меньше Timer, общее время выполнения цикла будет равно времени, заданному через Timer, изменится только загрузка процессора. В случае с Wait время цикла будет увеличиваться.

Следует отметить также, что Timer синхронизуется по внутренней тактовой сеткой и первый запуск цикла с таймером может иметь длительность меньше заданной.
Borjomy
Пользователь
 
Сообщений: 24
Зарегистрирован: Вт ноя 22, 2011 12:16 pm

Re: Время между сигналами

Сообщение IvanLis » Чт июл 19, 2012 9:40 am

Borjomy писал(а):Если время выполнения основного кода в цикле 0.2 мс, а время Wait 10мс, то общее время цикла будет 10.2мс.


не буду спорить, на практике мне не приходилось проверять как оно работает
но на сколько помню, функция Wait учитывает время выполнения (обработки) параллельно выполняемых с ним операций
и если Вы установите эту функцию параллельно с исполняемым кодом, то время следующей операции будет определяться либо Wait либо временем обработки, что больше

это в принципе не противоречит принципу программирования - потока событий
Знание нескольких принципов освобождает от знания многих фактов!

Живу я здесь ||| LabVIEW Portal in Google+
IvanLis
Специалист LabVIEW
 
Сообщений: 497
Зарегистрирован: Пн апр 23, 2007 1:44 pm
Откуда: СССР

Re: Время между сигналами

Сообщение Artur » Чт июл 19, 2012 9:54 am

Borjomy писал(а):Какие требования у вас к точности определения скорости вращения (+-об/мин)? И какое время измерения допустимо(мс,с)?


Погрешность до 3-4%, а замерять желательно именно само время между импульсами или например осреднять от 0 до 0 и тогда. Сам процесс замера долгий и требуется отслеживать изменение скорости в процессе испытания т.е. типа аналога спидометра автомобильного получается.
Artur
Пользователь
 
Сообщений: 13
Зарегистрирован: Пн мар 26, 2012 11:17 am

Re: Время между сигналами

Сообщение Borjomy » Пт июл 20, 2012 11:44 am

Artur писал(а):Погрешность до 3-4%, а замерять желательно именно само время между импульсами или например осреднять от 0 до 0 и тогда. Сам процесс замера долгий и требуется отслеживать изменение скорости в процессе испытания т.е. типа аналога спидометра автомобильного получается.

Проблема даже не в таймере, а в том, что между моментом считывания и моментом определения числа тиков происходит неизвестное количество времени. Винда, она и есть винда, это не реалтайм. 1 оборот на скорости 1000 об/мин происходит за 60 мс, а при 6500 оборотов - за 9.2 мс. Если измерять время оборота, то чем выше частота, тем больше погрешность. Если считать количество отметок за фиксированное время, то наоборот - чем выше частота вращения, тем погрешность ниже.
Еще одна идея - организуйте непрерывный сбор показаний датчика с фиксированной частотой опроса (например, с частотой 1кС/с). Тогда у вас будет стабильное время измерения и вы гарантировано не пропустите обороты. Снимаете данные, например по 100 замеров и анализируете спокойно, пока следующий замер набирается.
Какой платой забираете сигналы?
Borjomy
Пользователь
 
Сообщений: 24
Зарегистрирован: Вт ноя 22, 2011 12:16 pm

След.

Вернуться в LabVIEW

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron