Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: Кто то доставал до дна производительности STM32F1 ?

Ср окт 02, 2019 08:35:26

jcxz, а как вы, не имея кольцевого буфера, будете выбрасывать ненужные значения? Вот собрали сумму из N значений. Берем N-е, это означает, что 0-е надо выбросить. А откуда мы знаем, чему оно равно, если не запомнили в массиве?
Неужто так сложно разобраться с ПИД-регулированием в частности и числовым интегрированием в общем?
По-хорошему, производную тоже надо считать хотя бы по пяти точкам!

Для ПИ-регулятора тоже нужно интегрирующее звено. Т.е. тоже без кольцевого буфера не обойтись! И если ваш ПИ-регулятор работал без буфера, вы явно что-то делали неправильно!!!

Re: Кто то доставал до дна производительности STM32F1 ?

Ср окт 02, 2019 08:58:00

jcxz, а как вы, не имея кольцевого буфера, будете выбрасывать ненужные значения? Вот собрали сумму из N значений. Берем N-е, это означает, что 0-е надо выбросить.
Куда что-то "выбрасывать" для ПИД-а? И зачем???
Можете выражаться математическим языком, а не языком бабки с базара?
Если речь о нахождении суммы значений некоего массива на каждом шаге, где на каждый шаг добавляется одно значение и одно - удаляется, то на кой на каждый такой шаг суммировать все значения массива??? Ведь эта сумма уже вычислена на предыдущих шагах! Зачем каждый шаг старую сумму пересчитывать? Чтобы такты потратить?
Достаточно к предыдущей сумме прибавить самое новое значение и вычесть самое старое. Это всего две операции. От длины массива никак не зависящие.

Неужто так сложно разобраться с ПИД-регулированием в частности и числовым интегрированием в общем?

Вот именно - неужто так сложно? Разберитесь уж наконец-то! :))

Для ПИ-регулятора тоже нужно интегрирующее звено. Т.е. тоже без кольцевого буфера не обойтись! И если ваш ПИ-регулятор работал без буфера, вы явно что-то делали неправильно!!!
Ну да - уже и для махания ногами многим требуется 200МГц - иначе никак не обойтись. И для ПИД-а нужен целый комп с кольцевым буфером в прицепе. Печалька.

PS: И они называют себя программистами? (c) :)) :cry:

Re: Кто то доставал до дна производительности STM32F1 ?

Ср окт 02, 2019 22:10:02

Во дискуссия то разгорелась, однако )) Код я не нашел - он остался на старой работе, но, в принципе работа с кольцевым буфером организована так, как Eddy_Em описал.

Re: Кто то доставал до дна производительности STM32F1 ?

Ср окт 02, 2019 23:35:31

jcxz, что за жесточайшая темнота? Просто нет слов...

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 05:36:05

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

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 08:39:47

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

Бред-то какой!
А средне как считается? Как среднее за все время работы? Ну-ну...

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 09:30:10

Я понимаю, трудно признать, что всю жизнь ерундой занимался :)

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 09:42:21

VladislavS, ну так признайте. Пора давно!

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 09:47:53

Можешь огрызаться сколько угодно, сути дела это не поменяет.

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 10:19:48

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

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 11:00:53

Вы что, прикалываетесь? Если есть буфер, то вычитай самое старое значение и прибавляй новое - вот тебе и сумма. Если нет буфера, то вычитай среднее значение и прибавляй новое - будет практически то же самое.
Ну хоть есть хоть один человек понимающий очевидные вещи. А то уже начал думать, что видимо зря вообще тут зарегился. Думал - это форум пускай не программистов, но хоть пытающихся ими стать.... :dont_know:
...тратящих 3 мс на элементарную операцию. :)))

Добавлено after 1 minute 22 seconds:
Можешь огрызаться сколько угодно, сути дела это не поменяет.
Не тратьте время. По стилю и уровню видно - это школопет.

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 12:12:28

jcxz, А счего Вы взяли ,что это форум программистов ? На этом форуме собрались люди разных уровней. Цель - ПОМОГАТЬ ДРУГ ДРУГУ , а не заставлять ВСЕХ становиться программистами.

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 13:04:10

Ну хоть есть хоть один человек понимающий очевидные вещи.

О, вас уже двое. Совершенно не разбирающихся в вопросе и лепящих отсебятину. Веселые люди...
Простой пример. Пусть функция принимает 6 значений: 1, 15, 20, 21, 25, 40. Мы считаем интеграл по пяти последним значениям. В этом случае на числе 25 сумма будет равна 82, а среднее — 16. ОК, считаем по алгоритму здорового человека для 40: прибавляем 40 и вычитаем 1, получаем интеграл == 121, среднее == 24. Считаем по алгоритму больного: 82 - 16 + 40 = 106, а среднее по алгоритму больного: 106/5=21!
Круто, да? У больного человека получился интеграл на 15 меньше действительности, а среднее — на 3 меньше действительности! В процентах-то посчитать сможете, или вы только третий класс средней школы осилить смогли?

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 13:30:51

6 значений? Ну-ну. 3 мс суммировать? Ага-ага. Возьми 64 значения и прочувствуй разницу.

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 14:00:56

Eddy_Em, вообще-то, если речь о ПИД регулировании, то интегрирующую составляющую часто вообще не ограничивают, а суммируют от царя Гороха, даже не пытаясь хранить уже просуммированные слагаемые. По времени (точнее, по количеству хранимых значений) ограничивают дифференцирующую составляющую, но там речь, обычно всего о 2-4 значениях. Редко больше.
Надо же понимать, что ПИД регулирование оперирует не показаниями датчика, а отклонениями показаний датчика от заданной величины. И эти значения могут быть как положительными, так и отрицательными.

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 14:10:53

Если оно делается "от балды", зачем это называть ПИД-регулятором? Назовите "отбалдорегулятором" ☺

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 14:17:04

6 значений? Ну-ну. 3 мс суммировать? Ага-ага. Возьми 64 значения и прочувствуй разницу.

Да хоть 1024. Ничего не изменится. Патамушта вся проблема не в гладком сигнале, а в переходных процессах. В буфере вообще может оказаться всего пара значений, которые перекосят выходной сигнал.
По сути в Вашем кривом упрощении имеет место быть попытка скрестить КИХ с экспоненциальным фильтром, то есть рекурсивным фильтром первого порядка.
Учите матчасть, а не несите пургу.
Какой смысл в КИХ высокого порядка, если поверх него ПАРАЛЛЕЛЬНО работает БИХ первого?
:)))
Я уже не говорю о применении оконной функции, где В ПРИНЦИПЕ нужно каждый раз считать фильтр заново...

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 14:25:21

КРАМ, а не фиг ставить большой коэффициент для дифференцирующей составляющей, тогда она из-за влияния интегрирующей и пропорциональной составляющей просто не сможет сильно повлиять на выходной сигнал.
В некоторых случаях, действительно имеет смысл в предварительной фильтрации значений невязки, вот тогда делают буфер на 3-7 значений невязки и применяют к нему медианную фильтрацию, которая эффективно сглаживает помехи, но не влияет на дифферецирующую составляющую. Само собой, на вход принимают уже отфильтрованную невязку для всех трех составляющих.

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 14:30:38

Зачем-почему - определяется назначением регулятора. А значит и его параметрами.
Высокий порядок имеет смысл для прецизионных систем. То есть фокусы с простейшей рекурсией не прокатят.

Re: Кто то доставал до дна производительности STM32F1 ?

Чт окт 03, 2019 14:38:37

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