Цикл

Простейшие вопросы в области инженерной разработки
Ответить
ru522464
beginner
beginner
Сообщения: 34
Зарегистрирован: 29 сен 2008, 21:21
Версия LabVIEW: 8.5.1
Контактная информация:

Цикл

Сообщение ru522464 »

Всем привет!!!как сделать чтобы цикл зависил от времени!!! к примеру 1000 значений в массиве подавались на плату вывода за 20 секунд!!!или 100 значений массива за 20 секунд!!!значения может меняться!!!
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Цикл

Сообщение Eugen Graf »

Нужно рассчитать паузу в зависимости от количества значений.

20000 мс / 1000 Значений = 20 мс задержки в каждой итерации
Аватара пользователя
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 »

eg писал(а):Нужно рассчитать паузу в зависимости от количества значений. 20000 мс / 1000 Значений = 20 мс задержки в каждой итерации
Если нужно грубо, то пойдёт. Иначе возможны проблемы с "дрожанием". Я бы их устранял, например, через timed loop, c заведёнными извне параметрами
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Цикл

Сообщение Konstantin Sumenko »

Кстати, в задании ничего не говориться о равномерности поступаемых данных...
Аватара пользователя
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 »

Crowbar писал(а):Кстати, в задании ничего не говориться о равномерности поступаемых данных...
О равномерности не сказано ничего, это верно. Но jitter отражается не только на равномерности а и на общем времени тоже. Например ты хочешь вывести
eg писал(а):20000 мс / 1000 Значений = 20 мс задержки в каждой итерации
Задержка размером в 20мс порядка величины 1 timeslice в Windows (x86, WinXP). Т.е. 20мс задержки будут определены как 20 +-20. Что не может не отразиться на общем времени 20000 +- sqrt(1000)*20 = 20000 +- 600 ms (оценочно) - такое будет общее время.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Цикл

Сообщение Eugen Graf »

А разве Timed Loop работает надёжнее, чем Wait?
Ведь как я понимаю в обоих случаях используется один и тот же такт, тот что даёт ОС.
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Цикл

Сообщение Konstantin Sumenko »

Согласен с вышесказанным. По-моему timed loop принципиально по точности от while+wait не отличается, почему- сказал eg.
Аватара пользователя
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 »

Кстати, мы уже по второму разу похожую тему обсуждаем: http://www.labviewportal.eu/viewtopic.php?p=1070#p1070.
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 КБ) 254 скачивания
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Цикл

Сообщение Eugen Graf »

Ок, посмотрим, заценим. Лично я до сих пор не пользовался Timed Loop, т.к. не особо нужно было. Но в текущем проекте очень может пригодится более чёткий тайминг. Считай что убедил, как проверю, отпишусь.
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Цикл

Сообщение Konstantin Sumenko »

Я забыл про накопление ошибки, спасибо mzu2006.
ru522464
beginner
beginner
Сообщения: 34
Зарегистрирован: 29 сен 2008, 21:21
Версия LabVIEW: 8.5.1
Контактная информация:

Re: Цикл

Сообщение ru522464 »

Нужна помощь!!!у меня такое задание
у меня есть время нарастания время спада которые равны и есть время испытания!!!
и задаётся напряжение
к примеру
время нарастания и время спада=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 КБ) 205 скачиваний
ru522464
beginner
beginner
Сообщения: 34
Зарегистрирован: 29 сен 2008, 21:21
Версия LabVIEW: 8.5.1
Контактная информация:

Re: Цикл

Сообщение ru522464 »

нашёл хорошую документацию по timed loop и все получилось если кому интересно код программы ниже
Вложения
Новая папка (5).rar
(98.91 КБ) 254 скачивания
Ответить

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