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

旋变解码例程pmsm3_3旋变解码部分程序量过大,超出中断执行周期

如题选编解码文件resolver.c中的程序量实测过长,执行时间为20us左右,而电机控制中断周期为20K,即50us,resolver解码加上电机控制部分的程序之后,时间超出了50us,导致实际结果更新速度不够,比如我给定转速800转,但实际速度只有400转,如果我把以下旋变解码部分程序屏蔽之后,则转速恢复正常,此问题该如何解决呢?

    speed1.SinIn = _IQ15toIQ((int32)adc1.Ch3Out);

    speed1.CosIn = _IQ15toIQ((int32)adc1.Ch4Out); 

    speed1.calc(&speed1);

Joey Mao:

你好,

你可以延长中断中期,电机控制通常可以使用10K的载波频率,这样时间就会充足些;

另外,你的程序是下载到Flash中的吗?是的话可以copy程序到Ram中运行,速度要快很多,可以缩短程序运行时间

如题选编解码文件resolver.c中的程序量实测过长,执行时间为20us左右,而电机控制中断周期为20K,即50us,resolver解码加上电机控制部分的程序之后,时间超出了50us,导致实际结果更新速度不够,比如我给定转速800转,但实际速度只有400转,如果我把以下旋变解码部分程序屏蔽之后,则转速恢复正常,此问题该如何解决呢?

    speed1.SinIn = _IQ15toIQ((int32)adc1.Ch3Out);

    speed1.CosIn = _IQ15toIQ((int32)adc1.Ch4Out); 

    speed1.calc(&speed1);

lv YB:

回复 Joey Mao:

你好,如果中短周期改为10K,电机运行的时候就会有明显的低频噪音,20K的时候就很安静。我的程序现在属于调试阶段,都在RAM中运行的,除了更改中断周期,还有什么其他办法么?谢谢。

如题选编解码文件resolver.c中的程序量实测过长,执行时间为20us左右,而电机控制中断周期为20K,即50us,resolver解码加上电机控制部分的程序之后,时间超出了50us,导致实际结果更新速度不够,比如我给定转速800转,但实际速度只有400转,如果我把以下旋变解码部分程序屏蔽之后,则转速恢复正常,此问题该如何解决呢?

    speed1.SinIn = _IQ15toIQ((int32)adc1.Ch3Out);

    speed1.CosIn = _IQ15toIQ((int32)adc1.Ch4Out); 

    speed1.calc(&speed1);

Joey Mao:

回复 lv YB:

似乎只能在你的软件代码上想办法了,你的旋变解码部分怎么用时那么长?

如题选编解码文件resolver.c中的程序量实测过长,执行时间为20us左右,而电机控制中断周期为20K,即50us,resolver解码加上电机控制部分的程序之后,时间超出了50us,导致实际结果更新速度不够,比如我给定转速800转,但实际速度只有400转,如果我把以下旋变解码部分程序屏蔽之后,则转速恢复正常,此问题该如何解决呢?

    speed1.SinIn = _IQ15toIQ((int32)adc1.Ch3Out);

    speed1.CosIn = _IQ15toIQ((int32)adc1.Ch4Out); 

    speed1.calc(&speed1);

lv YB:

回复 Joey Mao:

我直接测试的就是标准TI例程pmsm3_3的旋变代码,想看一下软件解码旋变信号效果的,结果花了好久,通过打断点才弄明白是代码执行时间过长,我觉得不应该啊。

如题选编解码文件resolver.c中的程序量实测过长,执行时间为20us左右,而电机控制中断周期为20K,即50us,resolver解码加上电机控制部分的程序之后,时间超出了50us,导致实际结果更新速度不够,比如我给定转速800转,但实际速度只有400转,如果我把以下旋变解码部分程序屏蔽之后,则转速恢复正常,此问题该如何解决呢?

    speed1.SinIn = _IQ15toIQ((int32)adc1.Ch3Out);

    speed1.CosIn = _IQ15toIQ((int32)adc1.Ch4Out); 

    speed1.calc(&speed1);

tangzheng zhang:

回复 Joey Mao:

你好,请问标准的TI电机控制历程在哪里能搜到

如题选编解码文件resolver.c中的程序量实测过长,执行时间为20us左右,而电机控制中断周期为20K,即50us,resolver解码加上电机控制部分的程序之后,时间超出了50us,导致实际结果更新速度不够,比如我给定转速800转,但实际速度只有400转,如果我把以下旋变解码部分程序屏蔽之后,则转速恢复正常,此问题该如何解决呢?

    speed1.SinIn = _IQ15toIQ((int32)adc1.Ch3Out);

    speed1.CosIn = _IQ15toIQ((int32)adc1.Ch4Out); 

    speed1.calc(&speed1);

Joey Mao:

回复 tangzheng zhang:

就在官网可以下载,PMSM 3_3下载地址:

http://www.ti.com.cn/tool/cn/sprc211

http://www.ti.com.cn/tool/cn/sprc178

 

如题选编解码文件resolver.c中的程序量实测过长,执行时间为20us左右,而电机控制中断周期为20K,即50us,resolver解码加上电机控制部分的程序之后,时间超出了50us,导致实际结果更新速度不够,比如我给定转速800转,但实际速度只有400转,如果我把以下旋变解码部分程序屏蔽之后,则转速恢复正常,此问题该如何解决呢?

    speed1.SinIn = _IQ15toIQ((int32)adc1.Ch3Out);

    speed1.CosIn = _IQ15toIQ((int32)adc1.Ch4Out); 

    speed1.calc(&speed1);

liming Liu:

回复 Joey Mao:

你好!我按照你上边的链接下载了为什么是.exe文件呢!

我下载下来后安装了exe后怎么用,安装完了就找不到了!

如题选编解码文件resolver.c中的程序量实测过长,执行时间为20us左右,而电机控制中断周期为20K,即50us,resolver解码加上电机控制部分的程序之后,时间超出了50us,导致实际结果更新速度不够,比如我给定转速800转,但实际速度只有400转,如果我把以下旋变解码部分程序屏蔽之后,则转速恢复正常,此问题该如何解决呢?

    speed1.SinIn = _IQ15toIQ((int32)adc1.Ch3Out);

    speed1.CosIn = _IQ15toIQ((int32)adc1.Ch4Out); 

    speed1.calc(&speed1);

user5128243:

回复 Joey Mao:

请问下是否可以 再上传一下这两个文档啊 谢谢  官网找不到啊

赞(0)
未经允许不得转载:TI中文支持网 » 旋变解码例程pmsm3_3旋变解码部分程序量过大,超出中断执行周期
分享到: 更多 (0)