Как сделать смещение?

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

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

Re: Как сделать смещение?

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

Разве это нельзя сделать с помощью Feedback Node или Shift Register?
VincentDelacroix
beginner
beginner
Сообщения: 10
Зарегистрирован: 11 сен 2010, 17:00
Версия LabVIEW: 8.5
Контактная информация:

Re: Как сделать смещение?

Сообщение VincentDelacroix »

Я как раз через Shift Register и делал. И все сходилось с матлабовскими результатами. Через Feedback Node, впрочем, тоже.Обратная связь - не проблема. Она уже неоднократно тестировалась и все работало правильно. Просто в данной задачи есть это смещение, которое я никак не пойму как реализовать.

А задача - управление двигателем в реальном времени. Та переходная характеристика - примерное уравнение движка.
Аватара пользователя
Eugen Graf

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

Re: Как сделать смещение?

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

Дополни массив (предназначеный для смещения) нулями в начале и обрежь на то же количество в конце. Конечно, если я правильно понял задачу.
Аватара пользователя
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 »

Задержку - да, зелёную проволочку - нет (она направлена назад и должна нести не предыдущее значение а то же самое). Можно сделать шаг по времени очень маленьким, написать прибор решающий этот диффур с переменным шагом по времени, итп но зачем изобретать simulation toolkit, в котором эта модель создаётся один к одному (внутренность simulation loop не связана правилами Dataflow)

А VI работает вроде правильно, только нужно обрезать начало + внутри в Shift register завести буфер на время сдвига
zERgFrance
beginner
beginner
Сообщения: 22
Зарегистрирован: 11 авг 2010, 18:22
Версия LabVIEW: 10
Откуда: Москва
Контактная информация:

Re: Как сделать смещение?

Сообщение zERgFrance »

Меня очень умный мужик, мой дипломный руководитель учил работать с простыми элементами, чтобы решить любую задачу. В результате вышесказанного я нифига не понял как вы тут вообще чего то сделали и получили. Сейчас напиши и я выложу свой код, который попроще (для кого то) будет. А вышепреведенные диаграмы правильны. Вся ваша путанница происходит из за слудующего:
- в еденицы времени вы ставите числа от балды;
- время равное числу 1 соответсвует период сигнала, что приводит к кратности на результирующем графике;
- включено автомасштабирование, что сбивает и поэтому вы не замечаете что амплтитуда при определенных "кратных (синфазных)" моментах возрастает к 2 и наоборот при "противофазе" падает до "0".
+++ Обратим внимание что при данной реализации одной еденице времени соответсвует 10 полных перодов сигнала, т.е. 1 перод равен 0,1++++++
Рассмотирим именно эти диаграммы:
- t= -0,095
сигнал не задержан а смещен обратно на -0,095 что фактически равно 0,1 а это 1 период гармонического колебания. Посмотрим на диаграмму. В ней 9 периодов сложились с эталоном и получилось соответственно синфазыное сложение (амплитуда возрасла с 1 до 2 едениц). А там, где согнал "котроткий" уже пропал (ограниченая длинна при формировании) его авто дополняют нули (автоматическое приравнивание длинн масивов при опредации с 2-мя и более массивами в LV) и эти нули складываются с эталоном давая гармоническийсигнал с неизменной амплитудой.

- t= 0,5
Тут проще. Пол периода сложилось в синфазе и дало возрастаниее амплитуды до 2, а половина сложилась с нулями.

- t= 0,05
Вспомним, что 0,1 соответсвует одному гармоническому колебанию, соответственно 0,05 половина одного гармонического колебания. Сдвигаем эталон на пол периода одного гармонического колебания и он в этом полупериоде складывается с нулями давая соответсвующую половину синусоидального периода. А остальная часть сигнала получается при сложении SIN эталона и смещенного на pi\2 sin что эвляется его протифазой, что в сумме дает "0".

Вот и все. И все правильно работает, мйо совет. Бростье срандартные блоки на костер сделайте генераторы сигналов как импульсных так гармонических вручную. Сделав своими руками все точно уясните. U(t)= A*sin (2pi *omega*T+FI0), Где T по теореме котельникова = i\2Fmax, Fmax=частота дескритизации равная верхней гармонике сигнала.
VincentDelacroix
beginner
beginner
Сообщения: 10
Зарегистрирован: 11 сен 2010, 17:00
Версия LabVIEW: 8.5
Контактная информация:

Re: Как сделать смещение?

Сообщение VincentDelacroix »

Вот, нашел такую Експрес :vi: - Delay Values. Сдвигает по кол-ву итераций. Неудобно, но более-менее интуитивно, с небольшой корректировкой коэффициентов задание решено, правда не так, как хотел (не люблю експрес ви). Если бы время немножко больше позволяло, попробовал бы и другие варианты, но к сожалению время поджимает.
Задержку - да, зелёную проволочку - нет (она направлена назад и должна нести не предыдущее значение а то же самое).
Обратная связь через shift register и feedback node работает 100% правильно - это проверено как посредством сравнения с матлабом, так и на реальных устройствах.
но зачем изобретать simulation toolkit
Попробовал его на виндовом лабвью (на линь так и не нашел). Для задачи управления в реальном времени он, как мне показалось, не подходит, так как он работает как матлаб - отрезками времени, сбрасывая все значения после окончания итерации. Хотя я может и не прав, ибо еще мало с ним поработал. Чуть позже попробую с этим набором разобраться получше.
Дополни массив (предназначеный для смещения) нулями в начале и обрежь на то же количество в конце. Конечно, если я правильно понял задачу.
Немножко муторно будет, как мне кажется, с определением количества необходимых элементов для замены.
А VI работает вроде правильно, только нужно обрезать начало + внутри в Shift register завести буфер на время сдвига
Я тоже начинаю так думать... Спасибо за совет. Будет время, обязательно поразбираюсь в этой схеме еще, ибо некоторые моменты мне еще не ясны (не зря же в теме для новичков))

Спасибо всем большое за советы и помощь!!! :thank:

UPD:
.....Вот и все. И все правильно работает, мйо совет. Бростье срандартные блоки на костер сделайте генераторы сигналов как импульсных так гармонических вручную. Сделав своими руками все точно уясните. U(t)= A*sin (2pi *omega*T+FI0), Где T по теореме котельникова = i\2Fmax, Fmax=частота дескритизации равная верхней гармонике сигнала.
Спасибо, что немного лучше разъяснили графики. Правда, меня в них еще волновало, что дальше график со смещением не продолжался, то есть дальше того значения, что на скринах, он не изменялся, в то время как задающий(без смещения) шел дальше.
А перейти от стандартных блоков для пока слишком сложно...
и я выложу свой код
Мне интересно. Жду)
zERgFrance
beginner
beginner
Сообщения: 22
Зарегистрирован: 11 авг 2010, 18:22
Версия LabVIEW: 10
Откуда: Москва
Контактная информация:

Re: Как сделать смещение?

Сообщение zERgFrance »

меня в них еще волновало, что дальше график со смещением не продолжался, то есть дальше того значения, что на скринах, он не изменялся, в то время как задающий(без смещения) шел дальше.
все зависит от варианта исполнения и варианта в голове. Посмотри мой код, там все понятно кто смещяется, а кто стоит.
А перейти от стандартных блоков для пока слишком сложно...
Отнюдь. Намного проще работать с нуля, чем исползьвать блоки созданные другими людьми. Помни, сколько людей столько и мнений и вариантов решения тривиальной задачи. "два + два". Кто то решает на яблоках, а кто то на спичках, впрочем кто то на пальцах. Кто то перебирает по одному, кто то по 2, кто то от пяти вычитает и т.п.
Мне интересно. Жду)
1.JPG
2.JPG
Вот мои исходники.
LV 10
SinGen+Smesh.vi
LV 10
(142.87 КБ) 129 скачиваний
LV 9
SinGen+Smesh.vi
LV 9
(142.72 КБ) 101 скачивание
LV 8
SinGen+Smesh.vi
LV 8
(144.84 КБ) 104 скачивания
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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