PID控制器的FPGA实现

首先,PID控制(Proportional-Integral-Derivative Control)是一种广泛应用于工业控制系统中的反馈控制算法。其核心思想是通过对控制误差的比例、积分和微分进行计算和组合,以实现对系统的精确控制。

我们分开来看PID控制的P控制,I控制和D控制。

首先需要知道几个变量的物理意义:

SV:Set Value 设定的目标值;

CV:Current Value 系统当前值;

E(t) = SV — CV;当前误差值;

U(t):待增加的值(连续);

U(x):待增加的值(离散)。

这里先给出连续状态和离散状态下的公式,在连续状态下:

在离散状态下:

上面两个式子中,三个部分分别表示P-I-D控制,Kp,Ki,Kd分别表示调试的系数,接下来看看三个控制方法,以将转速为0的电机调整到100转为例子(设定Kp,Ki,Kd都为0.5)。

(1)P控制(比例控制):,此处为100。,Kp为0.5。则有输出Y = 0 + 50等于50,将50当做CV的值,下一次引入过后,输出Y则为75,以此类推,很容易就将达到100。当然,这是理想的情况,实际上因为电路的阻抗的消耗和电机老化,不可能达到100,大概只有90,这就和我们想的不一样,会一直存在E(t) = 10。电机实际转速始终只有90,这叫稳态误差;如何来消除稳态误差呢?我们使用积分来估算误差。

(2)I控制(积分控制):当存在稳态误差的情况下,通过比例控制已经无法消除CV和SV之间的稳态误差了,此时每一个循环都会存在相同的误差E(t),但我们的目标应当是E(t)逐渐减小的,因为稳态误差的存在,会一直有一个E(t),这里引入积分控制就可以消除该稳态误差,为什么呢?之前学过的高等数学知识有讲到,积分的物理意义是一段时间内,物理量的总和。如果对之间的所有误差值E(t)进行积分,就可以表示前面所有的E(t)的和,当进入稳态误差的状态后,虽然E(t)保持不变,但此时,是不断累积的,因此,U(t)的值就会增大,从而导致输出增大,以使CV = U(t)+CV不断逼近SV的值。那么问题来了,引入积分控制之后,在进入稳态误差状态之前又会有什么样的现象呢?在前两次循环的时候,因为的累计,会导致U(t)的值很大,使得CV = U(t)+CV超过SV的值,此时的E(t) = SV – CV,E(t) < 0,又会使得的值降低,从而使CV朝着SV逼近,如下图所示:

观察上图,在进入一个较稳定的状态之前,会有一段震荡,高于目标值SV的震荡是我们不愿意看到的,因为我们的系统的最大值如果是100,目标值设置为100,上面的部分就是超出系统的性能范畴,可能引起设备故障,我们把该现象叫做超调。

       (3)D控制,即微分控制,在公式上是,当误差E(t)快速变化时,也会变大,从而使U(t)的值快速调整,以抵消误差的变化,在无人机姿态控制中,姿态误差的快速变化会导致微分项增加,控制器快速调整电机转速,抵消姿态的急剧变化,保持机身稳定。

       综上所述,理想状态下(无摩擦,无设备损坏,无电路阻抗等)比例控制可以很好的进行设备控制,但理想情况下是不存在的,积分控制可以很好的抵消各种因素导致的误差,这就是PID控制算法的厉害之处了,而积分的引入会导致,系统震荡和超调,使用微分控制可以稳定系统震荡。

在介绍完上述控制算法的基础知识过后,我们来想想如何利用FPGA实现该算法呢?根据上述公式和理解不难发现,该系统存在反馈,反馈的值需要不断的进入系统后进行循环运算。因此,使用状态机可以很好的实现该公式,装填图设计如下:根据状态图写出的状态转移代码如下图所示:

case (state)
            IDLE:              next_state = pid_start ? CALC_ERROR : IDLE;
            CALC_ERROR:        next_state = CALC_PID;
            CALC_PID:          next_state = ADD_PID;
            ADD_PID:           next_state = ADJUST_PID_VALUE;
            ADJUST_PID_VALUE:  next_state = OUTPUT_PID;
            OUTPUT_PID:        next_state = FEED_BACK;
            FEED_BACK:         next_state = (!pid_start) ? IDLE : CALC_ERROR;
endcase

仿真结果如下图所示:

从上图中可以看出,在系统稳定后,E(t),,的值都为0,系统收敛到目标值的速度较快,在10us左右,是单片机的几十倍。

疑问和技术交流欢迎联系邮件:619743936@qq.com

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值