FOC专题:开环转的定义与原理解析

我们在调试foc的时候,在学习闭环之前,往往先要进行电机开环旋转,以验证SVPWM算法的正确性。那么常说的开环旋转是什么意思呢?
首先就要先看下电流闭环的情况

电流环就是通过采样电机三相电流,进行clarke变换和park变换后,变成Id和Iq,然后和给定的目标Id_ref和Iq_ref进行比较,通过PI计算后得到Vd和Vq。
到这一步就是闭环做的事,后面再进行的反park变换和SVPWM计算,这两个过程是闭环和开环都会做的事。
也就是说,开环做的事就是下面这个红框范围的事情。

这里需要注意这个theta角。这个角度的来源就决定了开环也可以分成两种,下面来介绍。

1.角度自加

这里的角度自加,就是自己定义一个θ变量,这个变量值在中断中执行自加,以模拟电机自转过程。然后将这个θ送给反park变换,再进行后面的SVPWM计算。具体实现如下参考:

/**
  * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
  */
void TIM6_DAC_IRQHandler(void)
{
  /* USER CODE BEGIN TIM6_DAC_IRQn 0 */
	TIM6->SR &= ~0x01;//清中断标志
    Angle_To_Cos_Sin(theta_test,&transf_cos_sin_test);//正余弦计算
    Park_Inverse(0,2,transf_cos_sin_test,&Voltage_alpha_beta_test.Valpha,&Voltage_alpha_beta_test.Vbeta);//反park变换
	SVPWM_Calc(Voltage_alpha_beta_test,Ud,16800);//SVPWM计算
	theta_test += 0.01745329f;//角度累加
	if(theta_test > D_PI) //D_PI即2*π
		theta_test -= D_PI;//一圈归零
  /* USER CODE END TIM6_DAC_IRQn 0 */
    HAL_TIM_IRQHandler(&htim6);
  /* USER CODE BEGIN TIM6_DAC_IRQn 1 */

  /* USER CODE END TIM6_DAC_IRQn 1 */
}

在这个中断中完成这一系列操作,电机如果可以正常旋转,则说明SVPWM算法设计正常。

1.1简单说明

//反park变换

void Park_Inverse(float vd,float vq,TRANSF_COS_SIN_DEF transf_cos_sin_def,float *valpha,float *vbeta)
{
	*valpha = vd*transf_cos_sin_def.Cos-vq*transf_cos_sin_def.Sin;

	*vbeta  = vd*transf_cos_sin_def.Sin+vq*transf_cos_sin_def.Cos;
	
	//SendFloatWave(vd,vq,theta);
	//SendFloatWave(*valpha,*vbeta,theta);
}

这个反park变换中的前两个参数: vd和vq就是上图开环过程中的输入反park变换模块的vd和vq。其中vd直接给0,vq从较小值开始给,若电机不转则慢慢增大该值。(算法部分暂时不做介绍)

1.角度通过编码器获取

如果电机接有编码器,则θ角度的值可以直接由编码器获取,而不需要在中断中进行累加。

void foc_algorithm_step(void) 
{

	Angle_To_Cos_Sin(ENC_Get_Electrical_Angle()-encoder_offset,&Transf_Cos_Sin);//读取编码器角度的函数执行花费时间较多
	/*PID Control Part*/
//	Current_PID_Calc(ID_REF,Current_Idq.Id,&Voltage_DQ.Vd,&Current_D_PID);//开环测试,需将这里屏蔽,闭环测试需要将这里打开
//	Current_PID_Calc(IQ_REF,Current_Idq.Iq,&Voltage_DQ.Vq,&Current_Q_PID);
	Park_Inverse(0,1,Transf_Cos_Sin,&Voltage_Alpha_Beta.Valpha,&Voltage_Alpha_Beta.Vbeta);//开环转测试	
	SVPWM_Calc(Voltage_Alpha_Beta,Ud,16800);

}

计算步骤和方法1中是一致的,只是角度的获取方式变了而已。

上面说的两种情况就是在foc调试时需要经过的开环调试的步骤,记录自己在调试foc过程中遇到的困扰。

物联沃分享整理
物联沃-IOTWORD物联网 » FOC专题:开环转的定义与原理解析

发表评论