jcxz, а как вы, не имея кольцевого буфера, будете выбрасывать ненужные значения? Вот собрали сумму из N значений. Берем N-е, это означает, что 0-е надо выбросить. А откуда мы знаем, чему оно равно, если не запомнили в массиве? Неужто так сложно разобраться с ПИД-регулированием в частности и числовым интегрированием в общем? По-хорошему, производную тоже надо считать хотя бы по пяти точкам!
Для ПИ-регулятора тоже нужно интегрирующее звено. Т.е. тоже без кольцевого буфера не обойтись! И если ваш ПИ-регулятор работал без буфера, вы явно что-то делали неправильно!!!
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
jcxz, а как вы, не имея кольцевого буфера, будете выбрасывать ненужные значения? Вот собрали сумму из N значений. Берем N-е, это означает, что 0-е надо выбросить.
Куда что-то "выбрасывать" для ПИД-а? И зачем??? Можете выражаться математическим языком, а не языком бабки с базара? Если речь о нахождении суммы значений некоего массива на каждом шаге, где на каждый шаг добавляется одно значение и одно - удаляется, то на кой на каждый такой шаг суммировать все значения массива??? Ведь эта сумма уже вычислена на предыдущих шагах! Зачем каждый шаг старую сумму пересчитывать? Чтобы такты потратить? Достаточно к предыдущей сумме прибавить самое новое значение и вычесть самое старое. Это всего две операции. От длины массива никак не зависящие.
Для ПИ-регулятора тоже нужно интегрирующее звено. Т.е. тоже без кольцевого буфера не обойтись! И если ваш ПИ-регулятор работал без буфера, вы явно что-то делали неправильно!!!
Ну да - уже и для махания ногами многим требуется 200МГц - иначе никак не обойтись. И для ПИД-а нужен целый комп с кольцевым буфером в прицепе. Печалька.
Во дискуссия то разгорелась, однако )) Код я не нашел - он остался на старой работе, но, в принципе работа с кольцевым буфером организована так, как Eddy_Em описал.
jcxz, что за жесточайшая темнота? Просто нет слов...
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Вы что, прикалываетесь? Если есть буфер, то вычитай самое старое значение и прибавляй новое - вот тебе и сумма. Если нет буфера, то вычитай среднее значение и прибавляй новое - будет практически то же самое.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Если нет буфера, то вычитай среднее значение и прибавляй новое - будет практически то же самое.
Бред-то какой! А средне как считается? Как среднее за все время работы? Ну-ну...
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
VladislavS, умный человек умеет признавать свои ошибки. От вас что-то признания не дождемся, похоже...
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Вы что, прикалываетесь? Если есть буфер, то вычитай самое старое значение и прибавляй новое - вот тебе и сумма. Если нет буфера, то вычитай среднее значение и прибавляй новое - будет практически то же самое.
Ну хоть есть хоть один человек понимающий очевидные вещи. А то уже начал думать, что видимо зря вообще тут зарегился. Думал - это форум пускай не программистов, но хоть пытающихся ими стать.... ...тратящих 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 меньше действительности! В процентах-то посчитать сможете, или вы только третий класс средней школы осилить смогли?
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Eddy_Em, вообще-то, если речь о ПИД регулировании, то интегрирующую составляющую часто вообще не ограничивают, а суммируют от царя Гороха, даже не пытаясь хранить уже просуммированные слагаемые. По времени (точнее, по количеству хранимых значений) ограничивают дифференцирующую составляющую, но там речь, обычно всего о 2-4 значениях. Редко больше. Надо же понимать, что ПИД регулирование оперирует не показаниями датчика, а отклонениями показаний датчика от заданной величины. И эти значения могут быть как положительными, так и отрицательными.
Если оно делается "от балды", зачем это называть ПИД-регулятором? Назовите "отбалдорегулятором" ☺
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
6 значений? Ну-ну. 3 мс суммировать? Ага-ага. Возьми 64 значения и прочувствуй разницу.
Да хоть 1024. Ничего не изменится. Патамушта вся проблема не в гладком сигнале, а в переходных процессах. В буфере вообще может оказаться всего пара значений, которые перекосят выходной сигнал. По сути в Вашем кривом упрощении имеет место быть попытка скрестить КИХ с экспоненциальным фильтром, то есть рекурсивным фильтром первого порядка. Учите матчасть, а не несите пургу. Какой смысл в КИХ высокого порядка, если поверх него ПАРАЛЛЕЛЬНО работает БИХ первого?
Я уже не говорю о применении оконной функции, где В ПРИНЦИПЕ нужно каждый раз считать фильтр заново...
КРАМ, а не фиг ставить большой коэффициент для дифференцирующей составляющей, тогда она из-за влияния интегрирующей и пропорциональной составляющей просто не сможет сильно повлиять на выходной сигнал. В некоторых случаях, действительно имеет смысл в предварительной фильтрации значений невязки, вот тогда делают буфер на 3-7 значений невязки и применяют к нему медианную фильтрацию, которая эффективно сглаживает помехи, но не влияет на дифферецирующую составляющую. Само собой, на вход принимают уже отфильтрованную невязку для всех трех составляющих.
Зачем-почему - определяется назначением регулятора. А значит и его параметрами. Высокий порядок имеет смысл для прецизионных систем. То есть фокусы с простейшей рекурсией не прокатят.
КРАМ, что значит простейшая рекурсия? Которая учитывает только два значения невязки для расчета дифферецирующей составляющей? А если учитывается три или четыре значения - это уже не простейшая рекурсия из-за добавления одного-двух слагаемых? А при большем количестве прецизионности точно не получите, из-за запаздывания значения дифферецирующей составляющей относительно интегрирующей и пропорциональной. Именно для уменьшения запаздывания медианный фильтр для невязки редко делают длинее семи значений.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения