Масштабирование PID (Пропорционально-Интегральная Производная) Выход

Я реализовал функцию PID по формуле:

correction = Kp * error + Kd * (error - prevError) + kI * (sum of errors)

Что я должен сделать, чтобы сохранить мой вывод в определенном диапазоне? скажем 0-255 Если я игнорирую какое-либо значение, не находящееся в диапазоне от 0 до 255, это вызывает колебательное поведение?

1 ответ

correction = ...

correction2 = correction;
if(correction < least) {correction2 = least;}
if(correction > most) {correction2 = most;}

Затем используйте коррекцию и коррекцию2 в качестве выходных данных, где это необходимо.

Не исправляйте на основе коррекции2, а затем удивляйтесь, почему она ведет себя странным образом, когда вы достигаете грани наименьшего <-> большинства.

Другие вопросы по тегам