|
libxr
1.0
Want to be the best embedded framework
|
通用 PID 控制器类。 Generic PID controller. More...
#include <pid.hpp>
Data Structures | |
| struct | Param |
| PID 参数结构体。 Structure holding PID parameters. More... | |
Public Member Functions | |
| template<typename P > | |
| PID (P &&p) | |
| 构造 PID 控制器。 Construct a PID controller. | |
| Scalar | Calculate (Scalar sp, Scalar fb, Scalar dt) |
| 使用反馈值计算 PID 输出。 Compute output from feedback only. | |
| Scalar | Calculate (Scalar sp, Scalar fb, Scalar fb_dot, Scalar dt) |
| 使用外部导数计算 PID 输出。 Compute output using external feedback derivative. | |
| void | SetK (Scalar k) |
| 设置全局比例系数 Set global proportional gain | |
| void | SetP (Scalar p) |
| 设置 P 项系数 Set proportional gain | |
| void | SetI (Scalar i) |
| 设置 I 项系数 Set integral gain | |
| void | SetD (Scalar d) |
| 设置 D 项系数 Set derivative gain | |
| void | SetILimit (Scalar limit) |
| 设置积分限幅 Set integral limit | |
| void | SetOutLimit (Scalar limit) |
| 设置输出限幅 Set output limit | |
| Scalar | K () const |
| 获取全局比例系数 Get global proportional gain | |
| Scalar | P () const |
| 获取 P 项系数 Get proportional gain | |
| Scalar | I () const |
| 获取 I 项系数 Get integral gain | |
| Scalar | D () const |
| 获取 D 项系数 Get derivative gain | |
| Scalar | ILimit () const |
| 获取积分限幅 Get integral limit | |
| Scalar | OutLimit () const |
| 获取输出限幅 Get output limit | |
| Scalar | LastError () const |
| 获取上一次误差 Get last error | |
| Scalar | LastFeedback () const |
| 获取上一次反馈值(未缩放)Get last feedback (raw) | |
| Scalar | LastOutput () const |
| 获取上一次输出 Get last output | |
| Scalar | LastDerivative () const |
| 获取上一次导数(k * d(fb)/dt 或 k * fb_dot)Get last derivative (scaled by k) | |
| void | Reset () |
| 重置控制器状态。 Reset all internal states. | |
| void | SetIntegralError (Scalar err) |
| 设置累计误差 Set integral error | |
| Scalar | GetIntegralError () const |
| 获取累计误差 Get integral error | |
| void | SetFeedForward (Scalar feed_forward) |
| 设置前馈项 Set feedforward | |
| Scalar | GetFeedForward () const |
| 获取前馈项 Get feedforward | |
Private Attributes | |
| Param | param_ |
| PID 参数 PID parameter set. | |
| Scalar | i_ = 0 |
| 积分状态 Integral state | |
| Scalar | last_err_ = 0 |
| 上次误差 Last error | |
| Scalar | last_fb_ = 0 |
| 上次反馈(未缩放)Last feedback (raw) | |
| Scalar | last_der_ = 0 |
| 上次导数(k 缩放)Last derivative (scaled by k) | |
| Scalar | last_out_ = 0 |
| 上次输出 Last output | |
| Scalar | feed_forward_ = 0 |
| 前馈项 Feedforward term | |
通用 PID 控制器类。 Generic PID controller.
支持周期角度处理、积分限幅与输出限幅,适用于基础控制应用。 Supports cyclic inputs, integral/output saturation. No derivative filtering.
| Scalar | 控制器标量类型,默认为 DefaultScalar。 Scalar type for internal calculations. |
|
inline |
|
inline |
使用反馈值计算 PID 输出。 Compute output from feedback only.
Define: err = (cycle ? CycleValue(sp) - fb : sp - fb) e_k = k * err fb_d_k = k * (fb - last_fb) / dt
out = p * e_k + i * ∫(e_k)dt - d * fb_d_k + feed_forward
| sp | 期望值 Setpoint |
| fb | 反馈值 Feedback |
| dt | 控制周期(秒) Time step in seconds |
Definition at line 74 of file pid.hpp.
|
inline |
使用外部导数计算 PID 输出。 Compute output using external feedback derivative.
Define: err = (cycle ? CycleValue(sp) - fb : sp - fb) e_k = k * err fb_d_k = k * fb_dot
out = p * e_k + i * ∫(e_k)dt - d * fb_d_k + feed_forward
| sp | 期望值 Setpoint |
| fb | 反馈值 Feedback |
| fb_dot | 反馈导数 Feedback rate (d(fb)/dt) |
| dt | 控制周期 Delta time |
Definition at line 189 of file pid.hpp.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
设置前馈项 Set feedforward
| feed_forward | 前馈项 Feedforward |
Definition at line 342 of file pid.hpp.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |