foc学习笔记4——速度环和位置环

本文介绍了串级PID在电机控制中的应用,特别是速度环和位置环的设置。作者强调了将位置环输出作为速度环目标、速度环输出作为电流环目标的正确串级方式,并指出不同环之间的频率应合理配置,以确保控制效果。此外,还讨论了去除某些环可能带来的控制效果变化和调参的经验分享。
摘要由CSDN通过智能技术生成

foc学习笔记4——速度环和位置环

PID的资料网上有很多,包括原理以及调试,相信大家对于PID都有着自己的理解,因此这里就不多介绍了。本节只讲一些针对电机的关键东西,避免新手朋友因为歧义而发生错误。

加上速度环和位置环的foc框图

在这里插入图片描述

什么叫串级PID

​ 这里先看一个我自己用的PID代码:

struct PID_Type{
    float32_t kp;			//P、I、D各自参数
    float32_t ki;
    float32_t kd;

    float32_t target;		//PID给定目标值
    float32_t value;		//由传感器之类的采集到的值
    float32_t error;		//目标减去测量值得到的误差

    float32_t errSum;		//积分项的累加和
    float32_t errSumMax;	//积分限幅
    
    float32_t lastErr;		//保存上一次的误差
    float32_t errDt;		//计算误差的增量
        
    float32_t result;		//最终计算结果
};

float32_t PIDGetResult(struct PID_Type *pid, float32_t valMax)
{
    pid->error = pid->target - pid->value;
    
    pid->errSum += pid->error * pid->ki;
    
    if(pid->errSum > pid->errSumMax)
        pid->errSum = pid->errSumMax;
    else if(pid->errSum < -pid->errSumMax)
        pid->errSum = -pid->errSumMax;
    
    pid->errDt = pid->error - pid->lastErr;
    pid->lastErr = pid->error;
    
    pid->result = pid->kp * pid->error + pid->errSum + pid->kd * pid->errDt;
    
    if(pid->result > valMax)
        pid->result = valMax;
    else if(pid->result < -valMax)
        pid->result = -valMax;
    
    return pid->result;
}

槽点比较多,知道意思就好。

​ 不知道有没有人对于串级PID的理解是这样的(我之前也有过困惑):

iqTarget = speedPID.result + positionPID.result;

iq目标等于速度环PID运算结果加上位置环PID运算结果。

​ 甚至是这样的:

uqTarget = iqPID.result + speedPID.result + positionPID.result;

uq给定值等于三环PID的运算结果。

这样是不对的!!!这不叫串级PID,应该叫并联PID!!!

​ 下面简单地展示一下串级PID到底是什么形式:

void CascadePID(float32_t target)
{
    positionPID.target = target;
    
    speedPID.target = PIDGetResult(&positionPID, aa);
    
    idPID.target = 0;
    iqPID.target = PIDGetResult(&speedPID, bb);
    
    udTarget = PIDGetResult(&idPID, cc);
    uqTarget = PIDGetResult(&iqPID, cc);
}

位置环的输出赋给速度环的目标,然后速度环的输出赋给iq电流环的目标,最终id、iq电流环的输出赋给ud、uq目标。本质就是外环的输出等于内环的输入,而最外环的输入则是人为给定的。

​ 我们还可以改变代码中aa、bb、cc的值来控制内环的最大输出。

补充说明

​ 有人可能要问了,能不能不要这种位置环->速度环->电流环->uq的形式,去掉速度环改成位置环->电流环->uq的形式,或者去掉电流环改成位置环->速度环->uq的形式。其实这样也是可以的,就是控制效果可能会差一些,PID会更难调一点,各位自行掂量吧。但别搞出什么速度环->电流环->位置环->uq的形式。

​ 再说一下三环的计算频率。电流环的频率是可以等于foc的运算频率的,而foc的运算频率最高能达到mos管的开关频率,高于开关频率就没有意义了。如果只是自己做着玩,我建议mos管开关频率高于16KHz,否则会很吵。所以如果你的单片机算的过来的话,foc运算频率就等于开关频率。如果算不过来STM32的高级定时器有个重复计数寄存器,可以输出几个pwm才产生一次中断,或者也可以在中断函数里软件计数。那么电流环以及foc的运算频率就定下来了,而速度环和位置环的频率要低于电流环频率几倍。比如开关频率是16k,foc运算频率和电流环频率也是16k,那么速度环和位置环的频率可以取2k甚至更低。速度环和位置环的频率可以一样也可以不一样,总之内环的频率不要比外环频率还低。

​ 最后关于调参或者参数整定这块,说实话本人没什么经验,基本就是瞎试然后看效果,各位自己琢磨吧。提一点就是电流环PI项就够了,速度环也只要PI项,位置环P项就够了也可以加一点D。

参考资料

视频:硬石相关章节

### 回答1: PMSM无感FOC控制是一种传统的控制方法,主要用于三相永磁同步电机的控制。该控制方法采用双闭控制结构,在速度环和电流之间分别设置了PI控制器,使电机达到精准控制。这种控制方法使用空间向量调制技术,结合三相电流反馈和三相电压反馈,实现电机的无感控制。 此外,PMSM无感FOC控制还使用了传统SVM技术,采用SVPWM波形,通过控制器的输出,使各相电流按照一定的规律变化,实现控制目标。 在标准FOC控制中,需要使用位置传感器来获取电机的位置信息,但PMSM无感FOC控制则使用基于传统的SVM技术来预测电机的位置信息。因此,不需要使用位置传感器即可实现对电机的控制,大大降低了系统成本。 总的来说,PMSM无感FOC控制是一种成熟的控制方法,在永磁同步电机控制中得到了广泛应用。在实际应用中,需要考虑控制器的参数与电机参数的匹配,以及实时性和稳定性等问题。 ### 回答2: PMSM无感FOC(无感测控制技术)是一种高精度、高效率的电机控制技术,在工业控制领域中应用很广泛。相较于其他传统的电机控制技术,PMSM无感FOC具有以下优点: 首先,在控制效果方面,PMSM无感FOC可以实现高精度的转速控制和位置控制,具有响应速度快、控制精度高的特点。其次,在节能方面,由于无感FOC控制技术可以减小电机的逆磁电动势,并通过控制直流电流的大小和方向来控制电机运行状态,从而达到更好的节能效果。此外,PMSM无感FOC还具有抗干扰性强、控制性能稳定等优点。 对于传统SME控制过程中存在的一些问题,PMSM无感FOC采用了一种更加先进的控制方法。它主要是通过异步滤波器解决了转子位置和速度的估算问题。PMSM无感FOC还采用了PID控制算法,能够有效地改善系统的响应速度和控制精度。在实际使用过程中,PMSM无感FOC控制技术已经被广泛应用于家电、工业领域等多个方面,为工业应用提供了更加高效、稳定的电机控制方案。 ### 回答3: PMSM无感FOC控制是一种新型的电机控制方法,目前广泛应用于工业和家用电机系统中。传统的FOC控制方法需要使用霍尔传感器或编码器等硬件传感器来获取电机转子位置信息,但这些传感器会增加系统的复杂度和成本。相比之下,PMSM无感FOC控制方法通过算法来估算电机转子位置和速度,避免了传感器的使用,从而降低了系统的成本和故障率。 在PMSM无感FOC控制中,传统的滑模观测器(SME)已经不能满足要求,因为它对参数敏感,噪声容易干扰,不易消除不确定性,导致控制精度不高,反应缓慢。为了解决这些问题,研究人员开发了传统滑模观测器的改进版——新型滑模观测器(SMO)。这种观测器采用了自适应观测器方法来估算电机参数,同时利用滑动模式控制来消除不确定性,提高控制精度和鲁棒性。 另外,PMSM无感FOC控制还需要使用支持向量机(SVM)算法来实现空间矢量调制(SVM)控制。SVM是一种基于统计学习理论的分类算法,它能够将多维特征空间映射到高维特征空间,从而更好地进行分类。在PMSM无感FOC控制中,SVM算法用来确定电机的磁场方向和转子速度,从而实现调制控制。 总之,PMSM无感FOC控制方法是一种高效、可靠、成本低的电机控制方法,相比传统FOC控制方法具有更好的控制精度和鲁棒性。它需要使用新型滑模观测器和SVM算法来实现,可以广泛应用于各种电机系统中,具有极高的应用前景。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值