📄 pid373.c
字号:
/*
* File : pid373.c
*
* An example of PID System,
* uk = digital_pid(ek, xk)
*
* Revised by Chou, Penchen, Aug. 23,2001
* EE Dept., Da-Yeh University.
*/
float digital_pid(float, float);
#include<dos.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX(i,j) (i>=j)?i:j
#define MIN(i,j) (i<=j)?i:j
/***************************************************************
** ==> USER CAN MODIFY THE FOLLOWING: *********
****************************************************************/
#define Ts 488e-8
#define Kp 0.16
#define Ki 5
#define Kd 0.001
#define Co_e Kp+Ts*Ki
#define Co_x -0.5*Kd/Ts
#define OUT_min -10
#define OUT_max 10
float digital_pid(float en, float xn)
{
// float Co_e=Kp+Ts*Ki, Co_x=-0.5*Kd/Ts;
float In,Inm1=0,xnm1=0,xnm2=0, output;
In=Inm1+Ts*Ki*en;
output=Co_e*en+Inm1+Co_x*(xn-xnm2);
output=MIN(output, OUT_max); /* BOUNDED OUTPUT CHECK POINTS */
output=MAX(output, OUT_min);
/* Update variables */
Inm1=In;
xnm2=xnm1; xnm1=xn;
return (output);
}
/************************************************************************
END of FUNCTIONS.
*************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -