在异步电机控制例程中,通过输入一个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时的“什么的(或者说谁的)”频率?始终不解
TI中文支持网



