#include<>
float Kp; //PID 调节的比例常数
float Ti; //PID 调节的积分常数
float T; //采样周期
float Td; //PID 调节的微分时间常数
float a0;
float a1;
float a2;
float ek; //偏差 e[k]
float ek1; //偏差 e[k-1]
float ek2; //偏差 e[k-2]
float uk; //u[k]
int uk1; //对 uk 四舍五入求整
int adjust; //最终输出的调整量
//变量初始化,根据实际情况初始化
Kp=0.8;
Ti=;
T=;
Td=;
a0=Kp*(1+T/Ti+Td/T);
a1=-Kp*(1+2*Td/T);
a2=Kp*Td/T;
// Ki=KpT/Ti=0.8,微分系数 Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数
ek=0;
ek1=0;
ek2=0;
uk=0;
uk1=0;
adjust=0;
int pid(float ek)//ek必然是k时刻的误差电脑需要输出uk。。
{
if(gabs(ek)<ee) //ee 为误差的阀值,小于这个数值的时候,不做 PID 调整,避免误差较小时频繁调节引起震荡。 ee 的值可自己设
{
adjust=0;
}
//上面这个可以理解
else
{
uk=a0*ek+a1*ek1+a2*ek2;//这个就是辣个公式,uk与
ek2=ek1;
ek1=ek;
uk1=(int)uk;
if(uk>0)
{
if(uk-uk1>=0.5)
{
uk1=uk1+1;
}
}
if(uk<0)
{
if(uk1-uk>=0.5)
{
uk1=uk1-1;
}
}
adjust=uk1;
}
return adjust;
}
float gabs(float ek)//明显就是求绝对值。。
{
if(ek<0)
{
ek=0-ek;
}
return ek;
}
void main()
{
}
PID.zip_c语言项目
版权申诉
46 浏览量
2022-09-24
07:01:52
上传
评论
收藏 23KB ZIP 举报
周楷雯
- 粉丝: 78
- 资源: 1万+
最新资源
- 基于matlab实现车牌识别程序,和论文,自己做的,做毕业设计的可以看看 .rar
- Windows系统下安装与配置Neo4j的步骤
- 基于matlab实现潮流计算和最优潮流计算的程序1,对毕业设计有一定用处.rar
- 基于大数据学习资源推荐系统的设计与实现(部署视频)-kaic.mp4
- 哈工大形式语言和自动机2022期末含答案
- Windows系统下安装与配置Neo4j的步骤
- 哈希算法(Hash Algorithm)是一种将任意长度的二进制数据映射为较短的、固定长度的二进制值的函数.txt
- Windows系统下安装与配置Neo4j的步骤
- 在二叉树或更复杂的树形结构中,先序输出叶结点.txt
- 列出所有祖先结点的概念通常与树形结构或图论中的节点相关.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0