#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
максимальное(минимальное) разрешённое значение (для любого растущего во времени коэффициента) защита от переполнения
расчётное выходное значение