`
lovnet
  • 浏览: 6712999 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

C语言几种PID控制代码

 
阅读更多

1.增量式PID控制算法

void pid_control(void)
{
offside1=standard_speed-actual_speed;		//计算当前速度偏差
 r1=kp*(offside1-offside2);
 r2=ki*offside1;
 pid_result=(unsigned char)(r1+r2);   		//浮点数强制转换为十六进制数
 offside2=offside1;
}


2.积分分离的PID控制算法

void pid_control(void)
{
offside1=standard_speed-actual_speed;		//计算当前速度偏差
r1=kp*(offside1-offside2);
 if ( offside1<threshold )           		//对积分部分的分离计算
   r2=ki*offside1;                 		//threshold作为门限值
 else r2=0;
 pid_result=(unsigned char)(r1+r2); 	//浮点数强制转换为十六进制数
 offside2=offside1;
}


3.变速积分PID控制算法

void pid_control(void)
{
 float f;
offside1=standard_speed-actual_speed;	//计算理论速度和实际速度的偏差
 r1=kp*(offside1-offside2);          		//计算P参数部分
 if(offisde1<=threshold1)           		//速度偏差是否小于门限threshold1?
   f=1;                          			//是,标记f=1
 else if(offside1>threshold1+threshold2)	//否,再比较偏差是否超过threshold1+threshold2?
   f=0;                          			//是,标记f=0
 else f=(threshold1+threshold2-offside1)/threshold2;  //否,重新计算f
 r2=ki*offside1*f;             	//计算I参数部分
pid_result=r1+r2+r3;   			//计算出PID计算结果,D参数部分(r3)这里认为0
offside2=offside1;             	//计算出速度偏差的偏差
}


分享到:
评论

相关推荐

    增量式PID和位置式PID算法实现和PID库(51单片机+STM32+arduino完成)-电路方案

    在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点...

    详解Linux获取线程的PID(TID、LWP)的几种方式

    主要介绍了详解Linux获取线程的PID(TID、LWP)的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    基于单片机的马弗炉温度控制系统设计

    论文首先从硬件电路设计着手,阐述马弗炉恒温模式的设计方案,以STC89C51 单片机作为核心控制器件,选取...因 为窗口模式,无法进行闭环控制,特将在几种室温下的温度过冲值整理成表格, 将查表获得的加热值作为真正的

    Tcl_TK编程权威指南pdf

    exit和pid命令 环境变量 registry命令 第2部分tcl高级特性 第10章 引用问题与eval 使用list命令来构建代码 在eval内部利用concat uplevel命令 subst命令 第11章 正则表达式 何时使用正则表达式 正则...

    电子设计大赛——单主控MCU的选择.doc

    经过以上比较,我推荐以下几种CPU并作相关说明: 1. LPC2138 这个CPU比较贵,但是为了比赛准备两片也是值得的,他的RAM很大,比如你做2007年的A题 (音频信号分析仪)就非常需要这个芯片,32K的RAM,带有AD,该题的要求...

    华为编程开发规范与案例

    C语言中最大的特色就是指针。指针的使用具有很强的技巧性和灵活性,但同时也带来了很大的危险性。在XXX的代码中有如下一端对指针的灵活使用: ... ... _UC *puc_card_config_tab; ... ... Get_Config_Table( ...

    grub4dos-V0.4.6a-2017-02-04更新

    在 vbe 模式,使用 echo -rrggbb 可以显示 216 种彩色样本。 4.使用 echo -v 可以显示版本、内存信息。 5.增加 setmenu 函数,增强图形菜单编辑功能。参数: --ver-on --ver-off 版本信息打开/关闭。默认打开; ...

    C++MFC教程

    而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。 在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单...

    入门学习Linux常用必会60个命令实例详解doc/txt

    建议在/mnt里建几个/mnt/cdrom、/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX请将ext2改成vfat): 软盘 ==...

Global site tag (gtag.js) - Google Analytics