Что вообще пытается решить PID? Проще говоря, PID — это способ ответить на вопрос: какую «силу» нужно применить, чтобы достичь целевого состояния из одного состояния?
Несколько примеров:
- Отрегулируйте мощность переменного тока для достижения нужной температуры.
- Нажмите на газ или тормоз, чтобы достичь скорости.
- Отрегулируйте скорость вращения двигателя дрона, чтобы достичь определенной скорости вращения.
Некоторые концепции:
- «Сила»: выходной сигнал системы ПИД, также известный как сумма ПИД, это буквально три компонента П/И/Д, сложенные вместе.
- Целевое состояние: заданное значение
Несколько фактов:
- Это итеративный алгоритм, нам нужно постоянно переоценивать выходные данные в зависимости от текущего состояния.
- Чем выше частота, тем более плавным будет управляющий сигнал (с учетом ограничений на компонент исполнения сигнала — исполнительный механизм)
Ниже представлена блок-схема ПИД-алгоритма
Ниже представлена простая реализация алгоритма.
const dt = time - this._prevTime;
const error = setpoint - measurement;
this._i += error * dt;
const p = this.kp * error;
const i = this.ki * this._i;
const d = this.kd * (measurement - this._prevMeasurement) / dt;
const f = this.kf * (command - this._prevCommand) / dt;
this._prevCommand = command;
this._prevTime = time;
return (p + i + d + f);