Цикл
-
- beginner
- Сообщения: 34
- Зарегистрирован: 29 сен 2008, 21:21
- Версия LabVIEW: 8.5.1
- Контактная информация:
Цикл
Всем привет!!!как сделать чтобы цикл зависил от времени!!! к примеру 1000 значений в массиве подавались на плату вывода за 20 секунд!!!или 100 значений массива за 20 секунд!!!значения может меняться!!!
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Цикл
Нужно рассчитать паузу в зависимости от количества значений.
20000 мс / 1000 Значений = 20 мс задержки в каждой итерации
20000 мс / 1000 Значений = 20 мс задержки в каждой итерации
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Цикл
Если нужно грубо, то пойдёт. Иначе возможны проблемы с "дрожанием". Я бы их устранял, например, через timed loop, c заведёнными извне параметрамиeg писал(а):Нужно рассчитать паузу в зависимости от количества значений. 20000 мс / 1000 Значений = 20 мс задержки в каждой итерации
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Цикл
О равномерности не сказано ничего, это верно. Но jitter отражается не только на равномерности а и на общем времени тоже. Например ты хочешь вывестиCrowbar писал(а):Кстати, в задании ничего не говориться о равномерности поступаемых данных...
Задержка размером в 20мс порядка величины 1 timeslice в Windows (x86, WinXP). Т.е. 20мс задержки будут определены как 20 +-20. Что не может не отразиться на общем времени 20000 +- sqrt(1000)*20 = 20000 +- 600 ms (оценочно) - такое будет общее время.eg писал(а):20000 мс / 1000 Значений = 20 мс задержки в каждой итерации
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Цикл
А разве Timed Loop работает надёжнее, чем Wait?
Ведь как я понимаю в обоих случаях используется один и тот же такт, тот что даёт ОС.
Ведь как я понимаю в обоих случаях используется один и тот же такт, тот что даёт ОС.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
Re: Цикл
Согласен с вышесказанным. По-моему timed loop принципиально по точности от while+wait не отличается, почему- сказал eg.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Цикл
Кстати, мы уже по второму разу похожую тему обсуждаем: http://www.labviewportal.eu/viewtopic.php?p=1070#p1070.
Timed Loop - это нить выполнения которая имеет механизм синхронизации с таймером. Т.е. все срабаывания этого механизма хоть и могут приходить с jitter ~+-20ms, но погрешность определения большого интервала в этом случае будет +-40ms (начало и конец). + у Timed Loop можно вытавить приоритет (т.к. это отдельная нить ОС, независимая от execution systems).
Функция Wait, каждый раз запускает (перезапускает) системный таймер и погрешность набирается за счёт этого на
каждом шаге.
Вот написал пример по мотивам обсуждения здесь (LV 8.6, только windows)
результаты выполнения:
Время выполнения Timed Loop: 19.9811 sec (чуть меньше так как последняя итерация неполная)
Время выполнения While/Wait Loop: 20.5377 sec
разница в пол-секунды. (sqrt(1000)*20 = 632 ms - оказалось не очень грубой оценкой)
Одно из подтверждений моим словам, webcast для подготовки к CLD (см одну из ссылок в предыдущем топике) где это обсуждается.
В некотором смысле да. И вот почему.eg писал(а):А разве Timed Loop работает надёжнее, чем Wait?
Timed Loop - это нить выполнения которая имеет механизм синхронизации с таймером. Т.е. все срабаывания этого механизма хоть и могут приходить с jitter ~+-20ms, но погрешность определения большого интервала в этом случае будет +-40ms (начало и конец). + у Timed Loop можно вытавить приоритет (т.к. это отдельная нить ОС, независимая от execution systems).
Функция Wait, каждый раз запускает (перезапускает) системный таймер и погрешность набирается за счёт этого на
каждом шаге.
Вот написал пример по мотивам обсуждения здесь (LV 8.6, только windows)
результаты выполнения:
Время выполнения Timed Loop: 19.9811 sec (чуть меньше так как последняя итерация неполная)
Время выполнения While/Wait Loop: 20.5377 sec
разница в пол-секунды. (sqrt(1000)*20 = 632 ms - оказалось не очень грубой оценкой)
Одно из подтверждений моим словам, webcast для подготовки к CLD (см одну из ссылок в предыдущем топике) где это обсуждается.
- Вложения
-
- JitterExamination.zip
- Пример Timed Loop против Wait
- (29.49 КБ) 255 скачиваний
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Цикл
Ок, посмотрим, заценим. Лично я до сих пор не пользовался Timed Loop, т.к. не особо нужно было. Но в текущем проекте очень может пригодится более чёткий тайминг. Считай что убедил, как проверю, отпишусь.
-
Konstantin Sumenko
- expert
- Сообщения: 1439
- Зарегистрирован: 17 июл 2008, 12:20
- Награды: 2
- Версия LabVIEW: 2010
- Откуда: Moscow
- Поблагодарили: 1 раз
- Контактная информация:
-
- beginner
- Сообщения: 34
- Зарегистрирован: 29 сен 2008, 21:21
- Версия LabVIEW: 8.5.1
- Контактная информация:
Re: Цикл
Нужна помощь!!!у меня такое задание
у меня есть время нарастания время спада которые равны и есть время испытания!!!
и задаётся напряжение
к примеру
время нарастания и время спада=10сек
время испытания=20 сек
напряжение 60в делится на 12 в итоге 5
и шаг 0.1 =10 значений
по нарастающей от 0 до 5 в увеличивается напряжение и подаётся на плату ввода вывода через 1 сек(задержка)
потом время испытания 20 сек напряжение постоянное 5в
и время убывания 10 сек убывает напряжение от 5 до 0 в и подаётся на плату ввода вывода
я использую While и задержку
если использую шаг
0,1 =10 значений то погрешность составляет 20 мс
0,01 = 100 значений погрешность составляет 800мс
0,0001 = ещё больше погрешность
как иизбавится от этой погрешности
может это возможно сделать с помощью timed structure просто я не работал ни разу с ней!!! подскажите пож-та!!!!код программы прилогаю ниже!!!и ещё просьба сохраняйте в 8.5 версии.
у меня есть время нарастания время спада которые равны и есть время испытания!!!
и задаётся напряжение
к примеру
время нарастания и время спада=10сек
время испытания=20 сек
напряжение 60в делится на 12 в итоге 5
и шаг 0.1 =10 значений
по нарастающей от 0 до 5 в увеличивается напряжение и подаётся на плату ввода вывода через 1 сек(задержка)
потом время испытания 20 сек напряжение постоянное 5в
и время убывания 10 сек убывает напряжение от 5 до 0 в и подаётся на плату ввода вывода
я использую While и задержку
если использую шаг
0,1 =10 значений то погрешность составляет 20 мс
0,01 = 100 значений погрешность составляет 800мс
0,0001 = ещё больше погрешность
как иизбавится от этой погрешности
может это возможно сделать с помощью timed structure просто я не работал ни разу с ней!!! подскажите пож-та!!!!код программы прилогаю ниже!!!и ещё просьба сохраняйте в 8.5 версии.
- Вложения
-
- Прога.rar
- (107.39 КБ) 206 скачиваний
-
- beginner
- Сообщения: 34
- Зарегистрирован: 29 сен 2008, 21:21
- Версия LabVIEW: 8.5.1
- Контактная информация:
Re: Цикл
нашёл хорошую документацию по timed loop и все получилось если кому интересно код программы ниже
- Вложения
-
- Новая папка (5).rar
- (98.91 КБ) 255 скачиваний