Power Electronics
http://valvol.ru/

Цифровые алгоритмы регулирования
http://valvol.ru/topic2594.html
Страница 1 из 3

Автор:  BBR [ 29-05, 17:09 ]
Заголовок сообщения:  Цифровые алгоритмы регулирования

Пытаюсь сделать функцию, зависящую от своего предыдущего значения. Нечто типа F(x[i])=a*x[i]+b*F(x[i-1])
Для запоминания предыдущего значения пытаюсь использовать samplehold. Для примера организую вычисления по счетчику - новое значение функции вычисляется на falling enge, запоминается - на raising edge.
Вычисления делаю в источнике напряжения:

AoldValue value .... oldValue .... samplehold
Bvalue value 0 V=F(....V(oldValue))

Лыжи не едут :(
Срабатывает ровно один цикл: на первом такте samplehold выдает 0, функция отрабатывает, подает на in+ сэмплхолда новое значение, но он его уже не захватывает :(

Что я делаю не так?
Модель: https://drive.google.com/file/d/0B6Dj2R ... sp=sharing

ЗЫ: предположил что собака порылась в том, что "...devices supply no timestep information to the simulation engine by default. That is, they don't look when they are about to change state and make sure there's a timestep close to either side of the state change. The instance parameter tripdt can be set to stipulate a maximum timestep size the simulator takes across state changes."
Добавил сэмплходу tripdt=1n, не помогло :(

Автор:  valvol [ 30-05, 00:54 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

BBR писал(а):
Пытаюсь сделать функцию, зависящую от своего предыдущего значения. Нечто типа F(x[i])=a*x[i]+b*F(x[i-1])

Нечто подобное было сделано в модели цифрового потенциометра при помощи интегрирования и цифрового автомата.

Автор:  BBR [ 30-05, 10:46 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

valvol писал(а):
BBR писал(а):
Пытаюсь сделать функцию, зависящую от своего предыдущего значения. Нечто типа F(x[i])=a*x[i]+b*F(x[i-1])

Нечто подобное было сделано в модели цифрового потенциометра при помощи интегрирования и цифрового автомата.


Конечный автомат - наше все :)
Я - ИТшнег, конечным автоматом я могу описать условно все. Уже распробовал! :crazy:
Модель X9312 видел когда примеры использования автомата искал. Отличный пример, очень помог.

Свою задачу я решил. Попутно выяснил несколько любопытных вещей:
1. Если таки сделать "кольцевую зависимость" как я хотел, то в момент когда защелка начинает выдавать новое значение, LTspice честно пытается посчитать переходный процесс: новое значение на выходе сразу вызывает пересчет функции, ее выход поступает на открытый вход защелки, модифицируя выход и - рекурсия. Результирующее значение улетает в мегагигавольты, а дельта времени падает в 1e-17s, на чем LTspice безобразие прекращает сообщением об ошибке :) Лечится промежуточным захватом результата, получается композиция из двух защелок.

2. Если бы у samplehold работал параметр td, то жизнь бы упростилась: можно было бы выдавать результат с задержкой после захвата значения на входе, тогда этой рекурсии бы не возникало. Но td игнорируется :(

3. Почему не работает высланный мной пример - я пока так и не понял. Целевая схема заработала. Видимо дело в "чудесах", которые свойственны цифровым компонентам LTspice: если не сглаживать им фронты, то переходные процессы могут занимать пикосекунды и очень сильно зависят от дискретности времени. Поэтому если не озаботиться сглаживанием фронтов и/или tripdt/tripdv, то все очень нестабильно: компоненты запросто пропускают фронты сигнала, открываются в неожиданное время и все такое. Видимо высланный пример не работает из-за подобной поломки синхронизации.

Автор:  valvol [ 30-05, 15:17 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

BBR писал(а):
3. Почему не работает высланный мной пример...

Резистор с выхода лучше убрать. Похоже он подгружает схему выборки

Автор:  BBR [ 30-05, 23:43 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

Предварительно доделал то, что затевал: соорудил дискретный PID-контроллер. Работает.
Годной моделью это пока считать конечно нельзя, это прототип: у контроллера недоделан reset, у компоненты для хранения текущего значения сигнала reset есть, но есть потенциальные косяки в синхронизации reset и clock.
Доделаю потом, по мере применения в основной модели, для которой он мне понадобился.

Если интересно, рабочий прототип вот:
https://drive.google.com/drive/folders/0B6Dj2R2zsTSrWTlyQ1BOYkdnc0U?usp=sharing

Как и ожидалось, в режиме PI работает отлично, в режиме PID - осцилляции. Видимо без деривэйтива обойдусь, одним PI.

Изображение

Автор:  BBR [ 04-06, 17:28 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

Валентин, подскажите плз.

Балуюсь PID - все работает ОК, как в книжках написано. Есть одно сомнение.

Текущая моя задача - модель PFM buck. Ton фиксировн по условиям, в зависимости от дьюти (D) меняется Toff.
Я пробовал два варианта управления:
1. повесить PID на управление D: время цикла T вычисляется как Ton/D
2. повесить PID на управление длительностью Toff, при этом T=Ton+Toff

Вариант 1 как-то сходу не заработал, я на него забил и пока больше не возвращался к нему.
Вариант 2 как-то сразу заработал, по Ziegler-Nichols method я достаточно быстро подогнал параметры и удовлетворился.

Однако, во множестве статей упоминается управление именно коэффициентом D, а не прямое управление длительностью периода. Т.е. ровно то, что у меня работать не захотело (хотя я не сильно и пытался). Правда чуть менее чем все статьи эти - про PWM. А у меня PFM.

Вопрос: как лучше поступать, чем правильней рулить - временем периода или отношением?

Автор:  valvol [ 04-06, 22:03 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

Вариант 1 должен работать. Возможно какие-то проблемы в конкретной реализации. Трудно что-то сказать в отсутствии модели.

Автор:  BBR [ 04-06, 23:38 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

Видимо мне надо было больше поковыряться с параметрами: размерность приращения D во много раз меньше размерности ошибки. В случае с управлением временем цикла я как-то почти сразу попал в нужный размер коэффициента Kc и потом по методике без затруднений все настроил. А в случае с дьюти надо было видимо дольше масштаб искать....

ОК, попробую. Но любопытство осталось: а что из этих двух вариантов эффективней?
"Зависит от ситуации, попробуй и сам узнаешь", да? :D

Автор:  valvol [ 05-06, 01:36 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

BBR писал(а):
ОК, попробую. Но любопытство осталось: а что из этих двух вариантов эффективней?

Первый вариант линейный, второй нет. В результате, для второго варианта, параметры настройки регулятора будут зависеть от управляющего воздействия (toff).

Автор:  BBR [ 05-06, 20:46 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

Хочу поделиться.

Натолкнулся на UCC28881. Buck/Flyback. Алгоритм - помесь PFC и Bang-Bang. Ton управляется прямым контролем тока через ключ и обратнопрпорционально длительности Ton в некоторых пределах меняется Toff. И все это сверху маскируется bang-bang-ом, контроллирующим выходное напряжение. Внешне - просто как плинтус!

Начал модель алгоритма (не чипа, чип целиком смоделирую потом). Ниасилил сделать регулятор D: у чипа параметры подогнаны под его мощность и частоту, я стал делать модель под гораздо большую частоту и мощность, не смог в итоге отладить алгоритм под свои параметры. НО! В итоге я сделал еще проще чем у них. И эффективней :)

PFC на основе PWM, маскируемого Bang-Bang-ом:
1. Фиксированный PWM с D=0.5; частота - 400кГц; Ton(min)=240n
2. Два компаратора - один на ток, второй - на Vout. выходы компараторов OR-ятся и отрубают PWM.
И в общем-то это все!

Моя модель имеет параметры: 360->12V, 20A. Индуктор 16u. Два транзистора, deadtime=140n. Максимальная частота PFC около 130k, минимальная около 9.8k.
Играючи справляется с бросками входного напряжения и нагрузки. Спокойно переживает SC в нагрузке (защиту пока не сделал), open loop, отключение входного напряжения.

Симуляция лучше всего считается с Integration Method = Gear, с остальными двумя - изрядно тупит.

Вероятный косяк: при малых нагрузках через индуктор в конце цикла разряда начинает течь обратный ток. Судя по модели это ничему не мешает, транзисторы нормально переключаются, даже выбросы в этом режиме минимальны. Но смутно я подозреваю что это косяк и надо с ним побороться. Именно чтобы такого эффекта не было, у Тексасовцев и сделано управление D...

Автор:  valvol [ 06-06, 20:51 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

BBR писал(а):
Вероятный косяк: при малых нагрузках через индуктор в конце цикла разряда начинает течь обратный ток. Судя по модели это ничему не мешает, транзисторы нормально переключаются, даже выбросы в этом режиме минимальны. Но смутно я подозреваю что это косяк и надо с ним побороться. Именно чтобы такого эффекта не было, у Тексасовцев и сделано управление D...

Это не косяк, а следствие использования синхронного выпрямителя на M2. Если вместо последнего использовать диод, то ситуация вернется в привычное русло.

Автор:  BBR [ 07-06, 08:33 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

Ага, спасибо!

Я вчера "в литературах" это прочитал и устыдился - мог бы догадаться и сам :blush:
Причем, во всех статьях это подают как штатную "багофичу" синхронного SMPS, которая плоха только лишними потерями на проводимость во время обратного тока. "Сильно сэкономили за счет Rds(on), но немножко обратно потеряли если DCM".

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

Автор:  valvol [ 07-06, 11:15 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

BBR писал(а):
В практической реализации это конечно дополнительная логика.

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

Автор:  igorka [ 07-06, 21:18 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

BBR писал(а):
Балуюсь PID - все работает ОК, как в книжках написано.

На чем реализовали управление?

Автор:  valvol [ 08-06, 00:19 ]
Заголовок сообщения:  Re: Моделирование в SwCAD/LTspice для начинающих

Похоже имеются какие-то проблемы с алгоритмом управления или настройками регулятора, который становится неустойчивым, если ток нагрузки ниже некоторого порога.
К сожалению, для более детального изучения представленной модели пока нет времени.
Не плохо было бы узнать общие требования к проекту. Если это блок питания, то входное и выходное напряжения, ток нагрузки, требования по стабильности, допустимой выходной пульсации и т.п.
Какие аппаратные средства предполагается использовать (цифровой ПИД регулятор или UCC28881)?

Страница 1 из 3 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/