[开发资料] 一起看看电机控制中的一些PID控制算法

[复制链接]
 楼主| 周半梅 发表于 2023-10-31 12:33 | 显示全部楼层 |阅读模式

FOC算法中的电流环,速度环都涉及到PID控制

PID又分位置式PID控制算法和增量式PID控制算法,而个人认为在电机控制中使用增量式PID效果会更好一些。下面主要介绍几种增量式PID控制算法及C代码实现。

1.1AN1078文档中的PID

PI结构框图和原理



C代码实现:

//电流环D轴PI控制

void PI_Control_D( PID_ID_TypeDef *dParm)
{
        int32_t U,Excess;
        U = (dParm->Id_Sum + dParm->Id_Kp*dParm->Id_Err)>>12;

if(U > dParm->Id_OutMax)
        {
                U = dParm->Id_OutMax;
        }

elseif(U < dParm->Id_OutMin)
        {
                U = dParm->Id_OutMin;
        }else{
                dParm->Id_Out = U;
        }
        Excess = U - dParm->Id_Out;
        dParm->Id_Sum = dParm->Id_Sum + dParm->Id_Ki*dParm->Id_Err - dParm->Id_Kc*Excess;
}1234567891011121314151617181920

1.2传统增量式PID

离散化公式:



C代码实现:

int16_t PIDControl_Q(PID_IQ_TypeDef * PID, int16_t Ref, int16_t Cur)
{
        int32_t Kp_Out, Ki_Out, PID_Out,PID_Out_Last;if(!PID->Iq_Err)
    {

PID->Iq_Err = Ref - Cur;// 初始化PID当前偏差

PID->Iq_Err_Err = PID->Iq_Err - PID->Iq_Err_Last1;// 初始化PID上次偏差和上上次偏差之差

PID->Iq_Err_Last1 = Ref - Cur;// 初始化PID上次偏差

PID->Iq_Err_Err_Last1 = PID->Iq_Err_Err;

    }else{

PID->Iq_Err_Last1 = PID->Iq_Err;// 保存PID上次偏差

PID->Iq_Err = Ref - Cur;// 计算PID当前偏差

PID->Iq_Err_Err = PID->Iq_Err - PID->Iq_Err_Last1;// 计算PID上次偏差和上上次偏差之差}

    Kp_Out = ((int32_t)PID->Iq_Kp * (int32_t)PID->Iq_Err_Err)>>12;
    Ki_Out = ((int32_t)PID->Iq_Ki * (int32_t)PID->Iq_Err)>>12;
    PID_Out = PID->Iq_Out;
    PID_Out += Kp_Out + Ki_Out;if(PID_Out > PID->Iq_OutMax)
    {
        PID_Out = PID->Iq_OutMax;// PID最高输出}

if(PID_Out < PID->Iq_OutMin)
    {
        PID_Out = PID->Iq_OutMin;// PID最低输出}

    PID->Iq_Out = PID_Out;returnPID->Iq_Out;
}

1.3back-cal PID

结构框图:



C代码实现:

/**
*  PI controller
* */static float _pi(structBackCalPID*that, float err)
{
    that->i_err = err;

    own.m_pre_out = that->i_err * own.m_kp + own.m_sum;

    that->o_out = own.m_pre_out;/*output clamp*/

if(that->o_out > own.m_out_up)
    {
        that->o_out = own.m_out_up;
    }elseif(that->o_out < own.m_out_low)
    {
        that->o_out = own.m_out_low;
    }/*back-cal dynamic Integrator clamp*/

own.m_sum += that->i_err * own.m_ki + own.m_kc * (that->o_out-own.m_pre_out);

return that->o_out;
}

上述具体的PID.c/.h文件链接:https://download.csdn.net/download/strive3/87124205

以上几种PID控制算法均可以实现电机控制中的电流环,速度环PI控制。


中国龙芯CDX 发表于 2023-11-2 08:41 | 显示全部楼层
PID参数的调试麻烦
小夏天的大西瓜 发表于 2023-11-2 16:00 | 显示全部楼层
比例(P)、积分(I)和微分(D)
小小蚂蚁举千斤 发表于 2023-11-3 14:21 | 显示全部楼层
增量式。积分分离
lzmm 发表于 2023-11-5 17:35 | 显示全部楼层
在电机控制中,PID控制算法是一种常见的控制算法
everyrobin 发表于 2023-11-5 18:01 | 显示全部楼层
存在一种被称为串级PID控制的高级控制策略。串级PID控制的典型结构为位置环+速度环+电流环,其中最外环是整个控制系统的期望值,外环PID的输出值是内环PID的期望值。
zerorobert 发表于 2023-11-5 19:49 | 显示全部楼层
PID控制算法是一种常见的控制算法,可以根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
lzmm 发表于 2023-11-5 19:59 | 显示全部楼层
PID控制器需要具有较好的鲁棒性,以应对被控对象参数变化或外部干扰等因素的影响。
nomomy 发表于 2023-11-5 20:10 | 显示全部楼层
不合适的参数可能导致系统性能不佳或不稳定。
adolphcocker 发表于 2023-11-5 20:20 | 显示全部楼层
PID控制器通常用来控制电机的转速和位置等参数。它的优点是简单、易于理解,而且能够有效地改善系统的动态特性。
benjaminka 发表于 2023-11-5 20:39 | 显示全部楼层
经典的控制理论算法,可以有效地控制电机。
rosemoore 发表于 2023-11-5 21:01 | 显示全部楼层
在电机控制中,PID控制算法是一种常用的控制方法。PID控制算法主要包括位置式PID控制算法和增量式PID控制算法。
xiaoyaodz 发表于 2023-11-5 21:10 | 显示全部楼层
在电机控制中,PID控制器被用来调节电机的速度、位置或电流等参数,以达到所需的控制效果。
51xlf 发表于 2023-11-5 21:23 | 显示全部楼层
在电机控制中,PID控制算法可以通过调节电机的电流、电压或频率等参数来实现对电机转速、转向等指标的精确控制。具体应用如下:

位置控制:通过PID控制算法调节电机的电流或电压,使电机按照预设的目标位置进行运动,从而实现定位控制。
速度控制:通过PID控制算法调节电机的频率或电流,使电机按照预设的目标速度进行运动,从而实现速度控制。
转矩控制:通过PID控制算法调节电机的电流或电压,使电机输出预设的目标转矩,从而实现转矩控制。
pl202 发表于 2023-11-5 21:35 | 显示全部楼层
在电机控制中,我们可以通过调整PID控制器的参数来实现对电机的速度、位置或转矩的控制。
earlmax 发表于 2023-11-5 21:47 | 显示全部楼层
在速度控制中,可以通过PID控制器调节电机的输入电压,以控制电机的旋转速度。在位置控制中,可以通过PID控制器调节电机的电流或电压,以控制电机的位置。在电流控制中,可以通过PID控制器调节电机的电流,以实现电流的稳定或控制电机的转矩。
sdCAD 发表于 2023-11-5 21:59 | 显示全部楼层
PID控制算法是一种广泛应用于电机控制和其他控制系统中的经典控制算法
hearstnorman323 发表于 2023-11-5 22:10 | 显示全部楼层
PID控制算法在电机控制中具有广泛的应用前景
olivem55arlowe 发表于 2023-11-5 22:17 | 显示全部楼层
PID控制算法通常会被封装成一个函数,这个函数的输入是误差,输出是控制量。通过调整比例、积分和微分的系数,可以优化控制系统的性能
averyleigh 发表于 2023-11-5 22:25 | 显示全部楼层
PID控制算法即比例、积分、微分控制算法,可以根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

149

主题

5792

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部