ST-FOC2.0库中的 circle limitation

1、限制圆的缩小比例算法

由ST的FOC控制系统框图可知,Vd,Vq是由两个PID调节器单独计算的,为了使Vd,Vq合成的电压矢量小于等于单位圆 ( 即 V d 2 + V q 2 ≤ s 16 ( 32767 ) 即\sqrt{V_{d}^{2}+V_{q}^{2}} \leq s16 (32767) Vd2+Vq2 s1632767) 防止出现矢量电压过调制,ST给出了具有物理意义很明确的计算方法,就是把矢量按比例拉回来,如下图:
在这里插入图片描述
这里需要说明下,图中的 V d ∗ V_{d}^{*} Vd V q ∗ V_{q}^{*} Vq指的是由两个PID输出的,Vd,Vq 就是把矢量按比例拉回来的。这里为什么不是拉到单位矢量圆r1上呢,因为由于电调的开关噪声,需要的PWM死区时间,当然还有控制的PWM载波频率对AD采样时间的影响,使得PWM得最大占空比不能达到100%,最大调制比不能达到1。所以MMI 要小于1。所以就要拉回来到r2上。 那么怎么拉回来呢?
在这里插入图片描述

void RevPark_Circle_Limitation(Volt_Components Stat_Volt_q_d)
{
   s32 temp;
             
   temp = Stat_Volt_q_d.qV_Component1 * Stat_Volt_q_d.qV_Component1 
             + Stat_Volt_q_d.qV_Component2 * Stat_Volt_q_d.qV_Component2;  // min value 0, max value 2*32767*32767
              
   if( temp > (u32)(( MAX_MODULE * MAX_MODULE) ) ) // (Vd^2+Vq^2) > MAX_MODULE^2
   {
		 u16 index;
								
		 temp /= (u32)(512*32768);  
		 temp -= START_INDEX ;   // min value 0, max value 127 - START_INDEX
		 index = circle_limit_table[(u8)temp];
								
		 temp = (s16)Stat_Volt_q_d.qV_Component1 * (u16)(index); 
		 Stat_Volt_q_d.qV_Component1 = (s16)(temp/32768);  
								
		 temp = (s16)Stat_Volt_q_d.qV_Component2 * (u16)(index); 
		 Stat_Volt_q_d.qV_Component2 = (s16)(temp/32768);  
   }

}

在这里插入图片描述

2、算法中的circle_limit_table的制作和 START_INDEX确定

2.1、START_INDEX的确定

由电调开关噪声,需要的PWM死区时间,和PWM的载波频率等因素影响而又要保证AD的采用时间,可以确定一个最大的调制比,这里假设为98%,在程序中有宏定义则:

#ifdef MAX_MODULATION_98_PER_CENT
#define MAX_MODULE      32111 
#endif

MAX_MODULE = 0.98 * 32767=32111,这样程序中的 MAX_MODULE 就确定了。即确定了上式中的MMI*S16_MAX。我们现在取 temp > (u32)( MAX_MODULE * MAX_MODULE)成立时temp的最小值,即temp=32111 * 32111,则 START_INDEX= 32111 * 32111/(512 * 32768)=61;

2.2、circle_limit_table的制作

我们现在取 temp > (u32)( MAX_MODULE * MAX_MODULE)成立时temp的最大值,
即 temp=32767 * 32767 * 2,则 START_INDEX= 32767 * 32767 * 2/(512*32768)=;127;
所以表格的大小为 128-61=67;这样就把 32111 * 32111 到 32767 * 32767 * 2 之间的数分成了
67份,每份 = (32767 * 32767 * 2 - 32111 * 32111 )/ 67 。那么表中的第一个元素怎么计算呢?
第一个元素 = sqrt(32111 * 32111 / (32111 * 32111 + 每份) ) * 32767;第二个元素 = sqrt(32111 * 32111 / (32111 * 32111 + 2 * 每份) ) * 32767 ; 以此类推类推就可以得到 circle_limit_table 表了。
这用excel表计算就比较快了。等下把表格上传下。

结语:通过上面制作出来的表格,可能和ST官方的有出入,如果发现上面的理解有问题的话,还请不吝指正。

  • 10
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: ST Motor FOC库中Circle Limitation功能是一种用于电机控制的功能。它主要用于限制电机运动范围,确保电机在特定圆内运动。这个功能的设计初衷是为了避免电机在运行过程中超出特定半径的范围,从而保护电机及其驱动系统。 使用Circle Limitation功能时,首先需要定义一个半径,表示电机在运动过程中所允许的最大范围。当电机开始运行时,控制算法会监测电机位置,并通过调整电机的控制信号来确保电机保持在定义的圆内。 具体而言,Circle Limitation功能通过控制电机的速度和加速度来达到限制电机运动范围的目的。一旦电机接近或超出了定义的圆半径,控制算法会减小电机的速度或加速度,使电机返回到圆内。这个过程是自动进行的,无需人为干预。 Circle Limitation功能在许多应用中都很有用,特别是在需要限制电机运动范围的场景下。比如在机器人控制中,当电机控制机器人的手臂或移动平台时,该功能可以确保机器人不会超出特定范围,从而防止机械部件的碰撞或损坏。 总之,ST Motor FOC库中Circle Limitation功能是一种用于限制电机运动范围的控制功能,通过调整电机的控制信号来确保电机保持在定义的圆内,以保护电机及其驱动系统的安全运行。 ### 回答2: ST Motor FOC库中Circle Limitation(圆限制)功能是一种用于控制电机转动的特殊功能。圆限制功能主要用于保持电机在特定范围内旋转,避免超过设定的限制范围。 Circle Limitation功能通常在机器人、无人机和电动车等应用中使用。在这些应用中,电机通常需要在特定的路径或轨迹中移动,并且不能超出规定的圆形工作区域。 使用Circle Limitation功能,我们可以在代码中指定电机的工作区域的半径和中心坐标。电机控制系统将会监测电机的位置,一旦电机越过设定的工作区域,控制系统就会采取措施将电机强制限制在工作区域内。 Circle Limitation功能通过使用电机的位置反馈来实现。电机控制系统会持续测量电机的位置,并与设定的工作区域进行比较。如果电机的位置超出了工作区域,控制系统将会调整电机的速度和/或方向,确保电机继续在限制范围内运动。 使用Circle Limitation功能,我们可以有效地控制电机在预定的圆形区域内运动。这对于需要精确控制电机的应用非常重要,因为它可以防止电机超过规定的工作区域,从而保护设备和提供更稳定的性能。 总而言之,ST Motor FOC库中Circle Limitation功能是一种用于控制电机旋转范围的特殊功能,可以保持电机在指定的工作区域内移动。它通过监测电机的位置并调整电机的速度和方向,以确保电机始终保持在限制范围内。 ### 回答3: ST Motor FOC库中Circle Limitation功能是一种电机控制功能,旨在限制电机运行时的速度。它可以通过限制电机的速度范围来保护电机和驱动器。具体来说,Circle Limitation功能可以将电机的转速限制在一个设定的范围内,防止超过设定范围导致电机受损。 Circle Limitation功能的原理是通过对电机的电流控制,来限制电机的转速。当电机的转速接近或超过限制范围时,控制算法会自动调整电机的电流控制使其保持在限制范围内。这样一来,即使在高负载或者异常情况下,电机也能保持在安全的转速范围内。 通过Circle Limitation功能,用户可以设置电机的最大和最小转速限制,以满足特定应用的需求。当电机的运行速度超过最大转速限制时,系统将自动降低电机的输出电流,从而限制电机的转速。当电机的运行速度低于最小转速限制时,系统将自动增加电机的输出电流,以提供足够的扭矩将电机带动起来。 总结来说,Circle Limitation功能是ST Motor FOC库中的一项重要功能,可以提供对电机转速的限制和保护。它通过控制电机的电流,保持电机的转速在一个设定的范围内,避免了转速过高或过低对电机和驱动器的损坏。这项功能可以根据应用需求进行设置和调整,为电机的安全和稳定运行提供保障。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值