FOC专题--什么是开环转?

这篇具有很好参考价值的文章主要介绍了FOC专题--什么是开环转?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在调试foc的时候,在学习闭环之前,往往先要进行电机开环旋转,以验证SVPWM算法的正确性。那么常说的开环旋转是什么意思呢?
首先就要先看下电流闭环的情况
FOC专题--什么是开环转?
电流环就是通过采样电机三相电流,进行clarke变换和park变换后,变成Id和Iq,然后和给定的目标Id_ref和Iq_ref进行比较,通过PI计算后得到Vd和Vq。
到这一步就是闭环做的事,后面再进行的反park变换和SVPWM计算,这两个过程是闭环和开环都会做的事。
也就是说,开环做的事就是下面这个红框范围的事情。
FOC专题--什么是开环转?
这里需要注意这个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过程中遇到的困扰。文章来源地址https://www.toymoban.com/news/detail-502954.html

到了这里,关于FOC专题--什么是开环转?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包