TI中文支持网
TI专业的中文技术问题搜集分享网站

请教异步电机控制例程中rampgen.c和rmp_cntl.c的作用

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

Bruce Wei:

问题1:斜坡函数,自动控制里面斜坡式的激励是很常见的。阶跃激励经过斜坡处理后送至各种控制器的输入。

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

Young Hu:

回复 Bruce Wei:

在程序中有一个base frequency,对应的是speedfref为1时的频率,按照归一化来处理的

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

ACIMFOC:

回复 Bruce Wei:

请问您能否再详细的说明一下这两个模块的作用?

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

Young Hu:

回复 ACIMFOC:

如Billy所说,RAMP_CNTL是用于斜坡激励,让速度信号的变换以斜坡的方式增加或者减小;

RAMPGEN是根据斜坡函数的输出(频率),产生对应的角度。因为是开环的,所以转子角度需要人工设置。

在ControlSuite下面有这两个模块的介绍文档,ControlSuite在TI官网能够找到下载链接

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

ACIMFOC:

回复 Young Hu:

void rampgen_calc(RAMPGEN *v){

// Compute the angle ratev->Angle += _IQmpy(v->StepAngleMax,v->Freq);

 此处,提到了StepAngleMax,

// Saturate the angle rate within (-1,1) 

if (v->Angle>_IQ(1.0)) v->Angle -= _IQ(1.0); else if (v->Angle<_IQ(-1.0)) v->Angle += _IQ(1.0);

// Compute the ramp output v->Out = _IQmpy(v->Angle,v->Gain) + v->Offset;

// Saturate the ramp output within (-1,1) if (v->Out>_IQ(1.0)) v->Out -= _IQ(1.0); else if (v->Out<_IQ(-1.0)) v->Out += _IQ(1.0);

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

ACIMFOC:

回复 ACIMFOC:

void rampgen_calc(RAMPGEN *v){

// Compute the angle ratev->Angle += _IQmpy(v->StepAngleMax,v->Freq);

 此处,提到了StepAngleMax,按照说明文档的解释,StepAngleMax=_IQ(fb*Tb),这个到处语句为何在此模块的程序中没有体现?

// Saturate the angle rate within (-1,1) 

if (v->Angle>_IQ(1.0))v->Angle -= _IQ(1.0);else if (v->Angle<_IQ(-1.0))v->Angle += _IQ(1.0);

// Compute the ramp outputv->Out = _IQmpy(v->Angle,v->Gain) + v->Offset;

// Saturate the ramp output within (-1,1) if (v->Out>_IQ(1.0))v->Out -= _IQ(1.0);else if (v->Out<_IQ(-1.0))v->Out += _IQ(1.0);

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

Bruce:

回复 ACIMFOC:

受教了

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

Limin Chen:

回复 Young Hu:

为什么数值1就对应SpeedRef?

帮忙说你下具体计算过程。

我的意思是修改了Base_FREQ,那对应输出的实际转速就发生改变了?

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

Limin Chen:

回复 Young Hu:

SpeedRef=1输入时,对应的实际的电机转速是多少,这个转速是否可以改变?

假如说可以改变,那么是通过修改了Base_FREQ的值吗?

假如说是因为改变了Base_FREQ值,那么对应的就应该是改变了寄存器里面的哪一个值?

事实上如果上述成立,那就是Base_FREQ值直接影响ePWM1、2、3的比较值输出频率,即通过改变调制波(正弦波)的频率来改变最终的速度。

不知道我的这个理解是否存在问题?

请帮忙指正!谢谢!

在异步电机控制例程中,通过输入一个SpeedRef速度参考值输入到RMP_CNTL中产生一个输出,进入RAMP_GEN产生一个变换角用于PARK和反PARK变换。

问题一:rampgen.c和rmp_cntl.c的作用及具体实现方法

问题二:速度参考值的给定与实际做开环实验时的电机运转值有何关系?

Zheng Lee:

回复 Young Hu:

你好,请问程序中的base frequency,对应的是speedfref为1时的“什么的(或者说谁的)”频率?始终不解

赞(0)
未经允许不得转载:TI中文支持网 » 请教异步电机控制例程中rampgen.c和rmp_cntl.c的作用
分享到: 更多 (0)