liba 0.1.15
An algorithm library based on C/C++
 
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
Loading...
Searching...
No Matches
pid.h File Reference

proportional integral derivative controller More...

#include "a.h"
Include dependency graph for pid.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  a_pid
 instance structure for PID controller More...
 

Macros

#define a_pid_init(ctx)
 initialize for PID controller
 

Typedefs

typedef struct a_pid a_pid
 
typedef struct a_pid a::pid
 

Functions

void a_pid_set_kpid (a_pid *ctx, a_real kp, a_real ki, a_real kd)
 set proportional integral derivative constant for PID controller
 
a_real a_pid_run (a_pid *ctx, a_real set, a_real fdb)
 compute for PID controller
 
a_real a_pid_pos (a_pid *ctx, a_real set, a_real fdb)
 compute for positional PID controller
 
a_real a_pid_inc (a_pid *ctx, a_real set, a_real fdb)
 compute for incremental PID controller
 
void a_pid_zero (a_pid *ctx)
 zeroing for PID controller
 

Detailed Description

proportional integral derivative controller

A proportional integral derivative controller (PID controller or three-term controller) is a control loop mechanism employing feedback that is widely used in industrial control systems and a variety of other applications requiring continuously modulated control.

u(t)=Kp[e(t)+1Tie(t)dt+Tdde(t)dt]

u(k)=Kp[e(k)+TTii=0ke(i)+TdT[e(k)e(k1)]]

  • positional PID controller

    u(k)=Kpe(k)+qi=0kKie(i)+Kd[e(k)e(k1)]=(Kp+Kd)e(k)+qi=0kKie(i)+(Kd)e(k1){q=0|i=0k1Kie(i)|>E[i=0k1Kie(i)]Kke(k)>0q=1

  • incremental PID controller

    Δu(k)=Kp[e(k)e(k1)]+Kie(k)+Kd[e(k)+e(k2)2e(k1)]=(Kp+Ki+Kd)e(k)+(Kp2Ki)e(k1)+Kde(k2)

    https://en.wikipedia.org/wiki/PID_controller