m基于FPGA的PID控制器实现,包含testbench测试程序,PID整定通过matlab使用RBF网络计算
Posted 51matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了m基于FPGA的PID控制器实现,包含testbench测试程序,PID整定通过matlab使用RBF网络计算相关的知识,希望对你有一定的参考价值。
1.算法仿真效果
vivado2019.2、matlab2022a仿真结果如下:
2.算法涉及理论知识概要
PID控制器产生于1915年,PID控制律的概念最早是由LYAPIMOV提出的,到目前为止,PID控制器以及改进的PID控制器在工业控制领域里最为常见。PID控制器(比例-积分-微分控制器),由比例单元 P、积分单元 I 和微分单元 D 组成。通过Kp,Ki和Kd三个参数的设定。PID控制器主要适用于基本线性和动态特性不随时间变化的系统。图1为PID控制器的基本结构框图。
PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当控制对象不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
PID 控制器由比例单元( P )、积分单元( I )和微分单元( D )组成。其输入 e (t) 与输出 u (t) 的关系为公式1:
公式中,参数kp表示的是比例调整模块的系数,其作用是将系统的反馈误差e(t)根据参数 kp进行调节,使得调整后的控制对象的反馈误差减小。当比例系数kp取较大值的时候,那么控制器的调整速度较快,但是其抖动也较大,从而导致系统了不稳定性。当比例系数kp取较小值的时候,那么控制器调整速度较慢,但调整过程较为稳定。
参数ki表示的是积分调整模块的系数,其作用将消除系统中存在的稳态误差,当存在稳态误差的时候,通过积分调节模块进行调节,直到完全消除稳态误差为止,之后积分调节功能停止工作,积分调节模块输出一个固定值。当积分调制系数ki较小的时候,积分调节作用越强,反之,积分调节作用较弱,系统调整速度较慢。
参数kd表示的是微分调整模块的系数,其主要是对系统反馈误差的变化率进行调整,其具有超前调整功能,可以预测系统反馈误差的变化率,因此可以在反馈误差产生之间将误差消除,因此通过设置微分调整参数,可以降低PID控制器的超调量,并加快系统的调整速度。
整个PID控制器的fpga结构如下图结构所示:
3.Verilog核心程序
M=0; switch M case 0 case 1 %Only PID Control kp(k)=kp0; ki(k)=ki0; kd(k)=kd0; end du(k)=kp(k)*xc(1)+kd(k)*xc(2)+ki(k)*xc(3); u(k)=u_1+du(k); %Return of parameters x(1)=du(k); x(2)=yout(k); x(3)=y_1; u_1=u(k); y_1=yout(k); ci_3=ci_2; ci_2=ci_1; ci_1=ci; bi_3=bi_2; bi_2=bi_1; bi_1=bi; w_3=w_2; w_2=w_1; w_1=w; xc(1)=error(k)-error_1; %Calculating P xc(2)=error(k)-2*error_1+error_2; %Calculating D xc(3)=error(k); %Calculating I error_2=error_1; error_1=error(k); kp_1=kp(k); kd_1=kd(k); ki_1=ki(k); end
FPGA教程案例49控制案例1——基于FPGA的PID控制器verilog实现
--------------------------------------------------------------------------------------------------------------------------------
目录
以上是关于m基于FPGA的PID控制器实现,包含testbench测试程序,PID整定通过matlab使用RBF网络计算的主要内容,如果未能解决你的问题,请参考以下文章
FPGA教程案例96控制案例1——基于FPGA的自适应PID控制器verilog实现
基于 ARM + FPGA 的 EtherCAT 主站设计及实现