Перейти к содержанию
    

Моделирование импульсных источников

Что-то я один сюда пишу...

Просто народ хочет разобраться что к чему. Меня вот интересует анализ AC с источниками, заданными нелинейными функциями - сможет ли програма их линеаризовать. Это типичная задача при анализе устойчивости импульсных источников питания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня вот интересует анализ AC с источниками, заданными нелинейными функциями - сможет ли програма их линеаризовать. Это типичная задача при анализе устойчивости импульсных источников питания.

В NL есть два метода вычисления частотной характеристики. Первый - стандартный малосигнальный. Находится рабочая точка схемы, все нелинейные элементы линеаризуются в этой точке, и находится АЧХ линейной схемы. Для импульсных схем это не подходит.

Второй метод "Sweep AC Source" - это расчет АЧХ через транзиент, специально для импульсных/ключевых/нелинейных схем. Запускается обычный расчет транзиента, а частота входного синусоидального источника меняется, например, ступеньками с начальной до конечной заданной частоты. На каждой частоте, после того как переходный процесс стабилизируется, вычисляется амплитуда/фаза выхода на этой же частоте (DFT). Естественно, все это делается автоматически, надо только задать несколько параметров.

На этой картинке - пример расчета АЧХ цифрового ФНЧ с тактовой частотой 1 kHz. На нижнем графике - сам процесс: входной сигнал с частотой, изменяющейся от 300 Hz до 1 Hz, и выходной сигнал.

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... пример расчета АЧХ цифрового ФНЧ с тактовой частотой 1 kHz...

Да, с системой первого порядка программа справилась. Надо бы ей что-нить посложнее дать. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, с системой первого порядка программа справилась. Надо бы ей что-нить посложнее дать. :)

Давайте! Я бы и сам рад посмотреть, как оно...

Вообще-то, люди считают, но примеров у меня нет.

Изменено пользователем nl5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ШИМ контроллер я могу сделать хоть сейчас....Вам что надо: компаратор с пилой нарастающей, спадающей, с треугольным стгналом, фиксированным или произвольным, со сбросом, или что-то более хитрое? Нет проблем.

Что-то вроде UC384X и TL494.

Продолжаю не понимать...:( Что такое порядок расчета моделей? У меня вся схема запихивается в одну матрицу и рассчитывается одновременно. Так как не предполагается рассчитывать много тысяч компонентов, как должен делать Spice, то с памятью нет проблем. Плюс некоторые хитрости.

Проверка синтаксиса, ну так что, проверка да и всё... Я не планирую сильно его проверять, предполагаю, что он написан не ручками, а сгенерирован другой программой. А что, с этим бывают проблемы? Поделитесь, пожалуйста.

Обычно трансляция чего бы то ни было в ту же матрицу - процесс достаточно трудоемкий. Всякие там промежуточные языки, лексические анализы и грамматические разборы и прочая гадость. Хотелось бы вкратце, без секретных подробностей узнать, как это сделано у Вас.

А что касается ручек и и синтаксиса, то могу доложить, что многие ручками прямо в PSpice пишут...

А почему вдруг сразу возник вопрос о цене? Не рановато ли? Вы же даже не пробовали еще, может вам это вовсе и не надо. Или платные программы принципиально не рассматриваются? Хорошо, могу предложить так: можете смело пробовать, невзирая на цены. К тому времени, как поймете, нужно ли оно вам, может и цены изменятся. А нет, так договоримся. А на ваших критических замечаниях глядишь, что-нибуди подправлю. В конце концов, я этим столько лет занимаюсь не за деньги, а для удовольствия.

Платность или бесплатность софта - исключительное право автора. На мой взгляд, софт - приложение к железкам, поэтому должен быть бесплатен.

Собираюсь заняться чем-то вроде этого. В настоящий момент исключительно для души... Пока разбираюсь с исходниками, чтобы вникнуть, как это сделано в этом конкретном случае.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, передаточная характеристика выход-управление vo(s)/d(s) повышающего преобразователя. Малосигнальная модель здесь:

http://focus.ti.com/lit/an/slva061/slva061.pdf

Для частотного анализа через транзиент надо менять частоту тактового генератора, оставляя при этом постоянным коэффициент заполнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то вроде UC384X и TL494.

Посмотрю описания. Если все понятно, попробую сделать.

 

 

Обычно трансляция чего бы то ни было в ту же матрицу - процесс достаточно трудоемкий. Всякие там промежуточные языки, лексические анализы и грамматические разборы и прочая гадость. Хотелось бы вкратце, без секретных подробностей узнать, как это сделано у Вас.

Есть рисунок схемы, реально: массив элементов схемы с координатами ножек и концов линий. Простым перебором всего и вся ищутся ножки компонентов соединенные между собой непосредственно, линиями или метками. Присваиваются уникальные номера узлов: получается нетлист. Если читается спайсовский текст, то он уже и есть нетлист (да, тут-то и нужен "парсинг" текста и разбор, но у меня такой опыт есть). Делается матрица размером N*N, где N - количество узлов. На самом деле не одна, и не буквально N*N, а с некоторыми хитростями (С) для экономии памяти и ускорения счета, что-то вроде "разреженной". Там все просто, даже стыдно вдаваться в детали. Есть вектор токов и напряжений, а матрица - это матрица проводимостей/импедансов. Матрица заполняется исходя из уравнений узловых потенциалов (так вроде называется?). Если что-то переключается, находится установившееся состояние итерациями, а в промежутках делается простое интегрирование методом трапеций. Это ответ на вопрос? Есть, конечно много тонкостей, о которых я не упомянул, если будут конкретные вопросы, с удовольствием отвечу.

 

На мой взгляд, софт - приложение к железкам, поэтому должен быть бесплатен.

NL это не приложение к железке, а приложение к мозгу на этапе, когда железки еще нет, а только "обдумывается". Если мозг ничего не стоит, или просто думать не хочется, то надо платить за NL :rolleyes: .

 

Собираюсь заняться чем-то вроде этого. В настоящий момент исключительно для души... Пока разбираюсь с исходниками, чтобы вникнуть, как это сделано в этом конкретном случае.

То есть, сделать компилятор из ladder картинки в PIC код? Наверное это похожая задача, только вместо матриц генерируется текст кода...

 

 

Например, передаточная характеристика выход-управление vo(s)/d(s) повышающего преобразователя. Малосигнальная модель здесь:

http://focus.ti.com/lit/an/slva061/slva061.pdf

Для частотного анализа через транзиент надо менять частоту тактового генератора, оставляя при этом постоянным коэффициент заполнения.

Отлично. Такая схема? Какие номиналы поставить?

Объясните пожалуйста подробнее какую передаточную характеристику надо считать. Я думал, что обычно тактовая частота не меняется, а есть какое-то внешнее возмущение, например питающего источника. А здесь надо менять частоту ШИМа? Коэффициент заполнения это duty cycle, типа 0.5 или вроде того? Что такое d(s) - deviation чего-то?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлично. Такая схема? Какие номиналы поставить?

Объясните пожалуйста подробнее какую передаточную характеристику надо считать. Я думал, что обычно тактовая частота не меняется, а есть какое-то внешнее возмущение, например питающего источника. А здесь надо менять частоту ШИМа? Коэффициент заполнения это duty cycle, типа 0.5 или вроде того? Что такое d(s) - deviation чего-то?

Спасибо.

Ага, это схема силовой части boostа. Для нее управляющим сигналом является коэффициент заполнения, в общем случае - функция времени, т.е. d(t). Соответственно, в частотной области - d(s). Передаточная функция выход-управления показывает, как изменение коэффициента заполнения влияет на выходное напряжение. Собс-но, это самая сложная часть для частотного анализа импульсного источника питания, поскольку все остальное (усилители, модуляторы) - это обычные аналоговые схемы.

В PSpice это делается так:

- ключевые элементы заменяются непрерывной моделью (там в статье расписано более подробно - путем усреднения на интервале коммутации);

- соответственно, никаких импульсов в схеме уже нет и d(t) - это некий сигнал, его представляют обычно в виде источника напряжения (постоянная часть "DC" соответствует коэффициенту заполнения в заданной рабочей точке, например, 0.5V --> D=0.5, а переменная "AC" - это источник сигнала для частотного анализа);

- далее PSpice линеаризует схему в заданной рабочей точке (определяемой постоянной величиной коэффициента заполнения D) и строит АЧХ-ФЧХ.

В случае NL5 (анализа через транзиент) коэффициент заполнения остается параметром импульсного сигнала, т.е., я так понимаю, для частотного анализа нужно будет менять частоту ШИМ? Но при этом коэффициент заполнения импульсов должен оставаться постоянным, поскольку он определяет рабочую точку (коэффициент преобразования входного напряжения в выходное).

Если это в NL5 реализуемо, то можно попробовать, например, такой вариант: R1=20 мОм, L1=27 мкГн, C1=4000 мкФ, R2=9 мОм, R3=6 Ом, Vin=12 В, D=0.7 (Vo примерно 36 В).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрю описания. Если все понятно, попробую сделать.

При этом подробности в виде реальной эмуляции генераторов, триггеров Шмитта, схемы старта и защиты от перенапряжений можно опустить.

Суть в том, чтобы модели позволяли моделировать работу девайса с ОС по току и по напряжению. Для большинства применений этого достаточно.

 

NL это не приложение к железке, а приложение к мозгу на этапе, когда железки еще нет, а только "обдумывается". Если мозг ничего не стоит, или просто думать не хочется, то надо платить за NL :rolleyes: .

Вот аналогии. Не затрагивая GNU движение.

Microchip - MPLAB, ATMEL - AVR Studio, Linear Technology - LTSpice, ONSemiconductor - PSpice модели + методики расчетов в виде Exel файлов, ST - VIPER soft... И т. д. и т. п.

То есть, сделать компилятор из ladder картинки в PIC код? Наверное это похожая задача, только вместо матриц генерируется текст кода...

От то ж. Только немного не так.

В общепринятом варианте из LD картинки генерируется псевдокод под архитектуру, оговоренную неким стандартом, но не жестко. Регламентирована только основная канва.

Потенциальный клиент должен иметь право выражаться либо на LD, либо на этом самом псевдокоде. В принципе, представление LD - псевдокод должно переключаться из меню "ВИД".

Далее, оговоренная ранее архитектура, эмулируется в целевом девайсе + добавляется псевдо ОС реального времени, содержащая всякие вкусности в виде отправки и приема команд и данных по одному или нескольким стандартным протоколам, часы, АЦП и прочее в виде простых команд псевдокода или блоков LD.

Ко всему прочему, все это дело должно мониториться так, как у цитируемого автора это сделано в симуляторе, но только на реальном целевом девайсе.

Так, что простым компилятором обойтись не удасться... Но для начала мне необходимо разобраться именно с ним.

Все почему-то рекомендуют построить дерево разбора для LD (на самом деле это не картинки, а закамуфлированный текст), а на его основе уже сделать генератор кода.

Поскольку Ваша и описанная мною задачи чисто внешне похожи, я и интересуюсь Вашей методикой трансляции текста нетлиста в матрицу.

Спасибо в связи с этим за описание Вашего подхода. Если можно то про

..."парсинг" текста и разбор, но у меня такой опыт есть...

поподробнее. Что курить и откуда копать? Пока нашел только это. Что можете сказать о степени необходимости этого материала?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В случае NL5 (анализа через транзиент) коэффициент заполнения остается параметром импульсного сигнала, т.е., я так понимаю, для частотного анализа нужно будет менять частоту ШИМ? Но при этом коэффициент заполнения импульсов должен оставаться постоянным, поскольку он определяет рабочую точку (коэффициент преобразования входного напряжения в выходное).

Мне кажется (я даже уверен) что меняется не частота ШИМа, а частота девиации коэффициента заполнения, при его постоянном среднем значении. То есть:

duty = duty0 + A*sin(wt)

и w это частота от которой с строится АЧХ. Надо также задать амплитуду девиации А, так как должно быть нелинейно от неё, ну это можно просто проверить. Можно считать ее очень маленькой для начала.

Так что я могу сделать ШИМ как компаратор сравнивающий пилу с напряжением, которое имеет наложенный синус небольшой амплитуды, частота которого меняется. Самое интересное наверное будет, когда частота возмущения является субгармоникой частоты ШИМа.

Сейчас попробую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне кажется (я даже уверен) что меняется не частота ШИМа, а частота девиации коэффициента заполнения, при его постоянном среднем значении. То есть:

duty = duty0 + A*sin(wt)

и w это частота от которой с строится АЧХ. Надо также задать амплитуду девиации А, так как должно быть нелинейно от неё, ну это можно просто проверить. Можно считать ее очень маленькой для начала.

Так что я могу сделать ШИМ как компаратор сравнивающий пилу с напряжением, которое имеет наложенный синус небольшой амплитуды, частота которого меняется. Самое интересное наверное будет, когда частота возмущения является субгармоникой частоты ШИМа.

Сейчас попробую.

Точно - так и должно быть. Частоту коммутации можно взять, например, 100 кГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

UC3844 очень простая, в NL элементарно делается subcircuit из имеющихся компонентов и подставляется в виде квадратика с 4...8 выводами. Постараюсь вечером сделать.

 

Вот аналогии. Не затрагивая GNU движение. Linear Technology - LTSpice,

Отлично, а на что создатель LTSpice сейчас живет? Не платит ли ему случайно LT зарплату? А денежки от продажи железок, надо думать? А кто платит за железки? Не Вы ли?

Я бы тоже так хотел, всё мороки меньше клиентов убеждать :rolleyes: . Да видно не дотянул пока...

 

От то ж. Только немного не так...Все почему-то рекомендуют построить дерево разбора для LD...я и интересуюсь Вашей методикой трансляции текста нетлиста в матрицу...Что можете сказать о степени необходимости этого материала?

Да, видно, что задача ой-ё-ёй..., со всеми эмуляциями в железе, ОС, и т.д. В этом я помочь не могу, так как этому не учился, и в общем-то даже с firmware уже совсем давно не работаю. А клепать такие вещи по-любительски "на коленке" как-то не солидно, да и неправильно. Посмотреть материалы по компиляторам, разные основополагающие "первоисточники" и чужие разработки очень полезно, только очень осторожно. По-моему, всегда есть опасность уйти в теоретические дебри, потерять связь с реальностью и вообще способность сделать реальный продукт. Как говорили: "Суха теория, мой друг..." и далее по-тексту. Пардон за лирическое отступление. В общем, не знаю как бы я мог помочь.

 

Насчет трансляции текста нетлиста, все-таки что имеется в виду: разборка текста, типа "R1 1k 0 5" и понимания, что тут есть что?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

поподробнее. Что курить и откуда копать? Пока нашел только это.

 

Вообще, это, конечно, злостный оффтоп, но попробуйте покурить классику жанра по ключевому слову yacc.

 

Можно начинать прямо отсюда http://ru.wikipedia.org/wiki/Yacc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Точно - так и должно быть. Частоту коммутации можно взять, например, 100 кГц.

Ну вот картинка, АЧХ 1...100 Hz, сделанная для амплитуды девиации 0.5, 1, и 2. Это амплитуда в вольтах синуса прложенного к компаратору ШИМа, 5V = 50% duty cycle. Пики на 50 Hz и 100 Hz - так как процесс не успевает установиться. Вверху АЧХ внизу фаза.

Похоже на что-то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот картинка симуляции fly50_5 от gyratorа (см. выше). Модель UC3844 сделана как SubCircuit и вставлена в схему в виде блока. Схема упрощена, конечно. Резисторы 0.01 Ома, как я понимаю, везде для сходимости стояли? Так я их убрал. По-моему, считает правильно, но лучше скажут знатоки. И что еще с этим можно сделать, тоже.

 

Если хозяим схемы не возражает, я бы взял ее в качестве Demo-примера.

 

Спасибо,

Алексей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...