This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8069万M:速率问题gMotorVars.MaxVel_Krpm

Guru**** 2335250 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/582886/tms320f28069m-velocity-problem-gmotorvars-maxvel_krpm

部件号:TMS320F2.8069万M

您好,

我的应用程序通过CAN接口读取操纵杆并发送速度。 项目已从标签13e修改。  电动机的最大转速为1500转/分。 当我从0-1500范围发送速度并使用时

gMotorVars.MaxVel_Krpm =_IQ ((浮点)速度/1000)

看起来都挺好的。

但例如,当应用使用0-2万的速度范围时(例如),我需要转换为最大速度1500。 我也是这样做的

浮子vel =(浮子)速度/齿轮箱;

gMotorVars.MaxVel_Krpm =_IQ ((浮点) vel)

有时电动机以双倍速度运行。 在表达式窗口中,我看到gMotorVars.Speed_Krpm显示的数字比gMotorVars.MaxVel_Krpm大2倍。

当我尝试用这个(没有转换浮点)进行转换,所以没有小数时 ,它是有效的。

浮子vel =速度/变速箱;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    vel的可能范围是什么? 您是否溢出了iQ24 (-128<-> 127.10万)的值?

    Sean
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它不应溢出。 我在图表中查看它。

    测试:

    浮子flvel;

    空行(Int16_t速度)

        fvel =(浮点)速度/6000;

        gMotorVars.MaxVel_Krpm =_IQ ((浮点) flvel);

    }

    速度为0至8000

    工作时的第二种情况

     fvel =(浮点)速度/1000;

    速度为0至1500

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果未在此调用中显式地将fvel强制转换为float类型,编译器是否抛出错误:

    gMotorVars.MaxVel_Krpm =_IQ ((浮点) flvel);

    如果不是,你能尝试通过吗?

    Sean
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    编译器中没有错误。 在调试器中,这似乎是一个错误。 我早上来工作,把float fift_IQ((float)flvel). 它很有效。
    但大约一个小时后,同样的问题又出现了。 当我终止调试器时,电机速度正常。
    我尝试断开调试器的连接,关闭CCS,所有电源都关闭,但这没有帮助。