jcxz, а как вы, не имея кольцевого буфера, будете выбрасывать ненужные значения? Вот собрали сумму из N значений. Берем N-е, это означает, что 0-е надо выбросить. А откуда мы знаем, чему оно равно, если не запомнили в массиве? Неужто так сложно разобраться с ПИД-регулированием в частности и числовым интегрированием в общем? По-хорошему, производную тоже надо считать хотя бы по пяти точкам!
Для ПИ-регулятора тоже нужно интегрирующее звено. Т.е. тоже без кольцевого буфера не обойтись! И если ваш ПИ-регулятор работал без буфера, вы явно что-то делали неправильно!!!
jcxz, а как вы, не имея кольцевого буфера, будете выбрасывать ненужные значения? Вот собрали сумму из N значений. Берем N-е, это означает, что 0-е надо выбросить.
Куда что-то "выбрасывать" для ПИД-а? И зачем??? Можете выражаться математическим языком, а не языком бабки с базара? Если речь о нахождении суммы значений некоего массива на каждом шаге, где на каждый шаг добавляется одно значение и одно - удаляется, то на кой на каждый такой шаг суммировать все значения массива??? Ведь эта сумма уже вычислена на предыдущих шагах! Зачем каждый шаг старую сумму пересчитывать? Чтобы такты потратить? Достаточно к предыдущей сумме прибавить самое новое значение и вычесть самое старое. Это всего две операции. От длины массива никак не зависящие.
Для ПИ-регулятора тоже нужно интегрирующее звено. Т.е. тоже без кольцевого буфера не обойтись! И если ваш ПИ-регулятор работал без буфера, вы явно что-то делали неправильно!!!
Ну да - уже и для махания ногами многим требуется 200МГц - иначе никак не обойтись. И для ПИД-а нужен целый комп с кольцевым буфером в прицепе. Печалька.
Во дискуссия то разгорелась, однако )) Код я не нашел - он остался на старой работе, но, в принципе работа с кольцевым буфером организована так, как Eddy_Em описал.
Выбор полупроводникового силового ключа зависит от его свойств, стоимости жизненного цикла преобразователя, а также цели его разработки и требований к производительности. Infineon предлагает целую линейку MOSFET и IGBT с широкой запрещенной зоной (SiC и GaN), продолжая при этом работать над их усовершенствованием.
Вы что, прикалываетесь? Если есть буфер, то вычитай самое старое значение и прибавляй новое - вот тебе и сумма. Если нет буфера, то вычитай среднее значение и прибавляй новое - будет практически то же самое.
Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.
Вы что, прикалываетесь? Если есть буфер, то вычитай самое старое значение и прибавляй новое - вот тебе и сумма. Если нет буфера, то вычитай среднее значение и прибавляй новое - будет практически то же самое.
Ну хоть есть хоть один человек понимающий очевидные вещи. А то уже начал думать, что видимо зря вообще тут зарегился. Думал - это форум пускай не программистов, но хоть пытающихся ими стать.... ...тратящих 3 мс на элементарную операцию.
jcxz, А счего Вы взяли ,что это форум программистов ? На этом форуме собрались люди разных уровней. Цель - ПОМОГАТЬ ДРУГ ДРУГУ , а не заставлять ВСЕХ становиться программистами.
Ну хоть есть хоть один человек понимающий очевидные вещи.
О, вас уже двое. Совершенно не разбирающихся в вопросе и лепящих отсебятину. Веселые люди... Простой пример. Пусть функция принимает 6 значений: 1, 15, 20, 21, 25, 40. Мы считаем интеграл по пяти последним значениям. В этом случае на числе 25 сумма будет равна 82, а среднее — 16. ОК, считаем по алгоритму здорового человека для 40: прибавляем 40 и вычитаем 1, получаем интеграл == 121, среднее == 24. Считаем по алгоритму больного: 82 - 16 + 40 = 106, а среднее по алгоритму больного: 106/5=21! Круто, да? У больного человека получился интеграл на 15 меньше действительности, а среднее — на 3 меньше действительности! В процентах-то посчитать сможете, или вы только третий класс средней школы осилить смогли?
Eddy_Em, вообще-то, если речь о ПИД регулировании, то интегрирующую составляющую часто вообще не ограничивают, а суммируют от царя Гороха, даже не пытаясь хранить уже просуммированные слагаемые. По времени (точнее, по количеству хранимых значений) ограничивают дифференцирующую составляющую, но там речь, обычно всего о 2-4 значениях. Редко больше. Надо же понимать, что ПИД регулирование оперирует не показаниями датчика, а отклонениями показаний датчика от заданной величины. И эти значения могут быть как положительными, так и отрицательными.
6 значений? Ну-ну. 3 мс суммировать? Ага-ага. Возьми 64 значения и прочувствуй разницу.
Да хоть 1024. Ничего не изменится. Патамушта вся проблема не в гладком сигнале, а в переходных процессах. В буфере вообще может оказаться всего пара значений, которые перекосят выходной сигнал. По сути в Вашем кривом упрощении имеет место быть попытка скрестить КИХ с экспоненциальным фильтром, то есть рекурсивным фильтром первого порядка. Учите матчасть, а не несите пургу. Какой смысл в КИХ высокого порядка, если поверх него ПАРАЛЛЕЛЬНО работает БИХ первого? Я уже не говорю о применении оконной функции, где В ПРИНЦИПЕ нужно каждый раз считать фильтр заново...
КРАМ, а не фиг ставить большой коэффициент для дифференцирующей составляющей, тогда она из-за влияния интегрирующей и пропорциональной составляющей просто не сможет сильно повлиять на выходной сигнал. В некоторых случаях, действительно имеет смысл в предварительной фильтрации значений невязки, вот тогда делают буфер на 3-7 значений невязки и применяют к нему медианную фильтрацию, которая эффективно сглаживает помехи, но не влияет на дифферецирующую составляющую. Само собой, на вход принимают уже отфильтрованную невязку для всех трех составляющих.
Зачем-почему - определяется назначением регулятора. А значит и его параметрами. Высокий порядок имеет смысл для прецизионных систем. То есть фокусы с простейшей рекурсией не прокатят.
КРАМ, что значит простейшая рекурсия? Которая учитывает только два значения невязки для расчета дифферецирующей составляющей? А если учитывается три или четыре значения - это уже не простейшая рекурсия из-за добавления одного-двух слагаемых? А при большем количестве прецизионности точно не получите, из-за запаздывания значения дифферецирующей составляющей относительно интегрирующей и пропорциональной. Именно для уменьшения запаздывания медианный фильтр для невязки редко делают длинее семи значений.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения