#include <PID.h>
|
void | step (const double &X, const double &Z, const double &Ts) |
|
void | reset () |
|
void | recalc () |
|
|
double | Y |
|
double | Kc |
|
double | Ti |
|
double | Td |
|
double | vlim |
|
double | d0 |
|
double | d1 |
|
double | d2 |
|
double | sub1 |
|
double | sub2 |
|
double | sub |
|
double | prevTs |
|
|
std::ostream & | operator<< (std::ostream &os, PID &p) |
|
std::ostream & | operator<< (std::ostream &os, PID *p) |
|
ПИД Формулы выведены на основе разностных уравнений см. http://atm.h1.ru/root/theory/theory33.html
Он даёт неплохой результат и оптимальнее по расчётам (содержит только умножение, не переполняется т.к. учитывает только два последних шага)
◆ recalc()
void uniset::PID::recalc |
( |
| ) |
|
◆ reset()
void uniset::PID::reset |
( |
| ) |
|
◆ step()
void uniset::PID::step |
( |
const double & | X, |
|
|
const double & | Z, |
|
|
const double & | Ts ) |
Выполнение очередного шага расчётов
- Аргументы
-
X | - входное значение |
Z | - заданное значение |
Ts | - интервал расчёта данных, [сек] (интервал между шагами расчёта). Ts - должно быть больше нуля |
◆ Kc
пропорциональный коэффициент
◆ Td
постоянная времени дифференциала, [сек]
◆ Ti
постоянная времени интеграла, [сек]
◆ vlim
максимальное(минимальное) разрешённое значение (для любого растущего во времени коэффициента) защита от переполнения
расчётное выходное значение