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.8055万:SPINTAC运动问题如何在不失去控制的情况下检测位置计划的状态

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/580386/tms320f28055-spintac-motion-problem-how-can-i-detect-the-status-of-position-plan-without-lost-its-control

部件号:TMS320F2.8055万

您好,TI:

 每次尝试使用下面的代码检测位置计划或移动状态时。 整个运动配置文件崩溃,电机刚刚断开,失去控制。

gSelectedPlan = HOME;
ST_setupPosPlan_Home(stHandle);

gMotorVars.SpinTAC.PosPlanRun = ST_PLANT_START;//运行Home Plan
			
while (gMotorVars.Spinobj.PosPlanStatus !=ST_PLAN_IDLE){};//等待其完成

SCI_DataSciBlocking(0->Handplan/return,结束后返回位置

我的目的是检测状态,确保我的职位计划在发回反馈之前已完全完成。

如果我删除while循环以等待,我无法知道位置计划是否已完成。

如果我连续发送命令而不使用while ()循环等待移动完成,则所有移动都不会完成。

如果您有任何建议或想法,请告诉我! 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此代码在哪里执行? 将while循环放入ISR可能会导致您报告的问题。

    您应该能够简单地对状态执行IF测试,而不是while循环。

    在示例实验中有一些逻辑,我们使用“计划”状态来了解它是否已完成。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用ST_runPosPlan下的IF测试使位置计划正常工作,等待状态完成并发送反馈。
    是否可以使用相同的方法来ST_runPosMove?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您应该能够。  计划还会从Move获取此信息,以便计划知道是时候进入状态了。