本帖最后由 zhdzhd-174422 于 2018-9-2 13:47 编辑 在做电机套件任务3时遇到了一个函数,感觉被官方资料搞的非常困惑,就是关于电机SDK 4.3和5.2 函数疑问,不知是按软件函数来做还是按任务函数来做,不知是官方资料有误还是软件有BUG? 这个函数就是: State_t MCI_GetSTMStateMotor1(void) { return MCI_GetSTMState( pMCI[M1] ); } 在STM32_PMSM_MC_SDK5.0_Training_CHN.pdf中教的是这样的: 任务3中要求的是这样的: 官方教学视频中是这样的: 而软件生成的工程文件mc_api.h中是这样的: 而我看论坛坛友们的帖子中有这样的: 也有这样的: 所以以下2个函数: MCI_GetSTMStateMotor1(); 和 MC_GetSTMStateMotor1(); 是否是功能一样的? 在软件生成的工程中,用上面MCI的会报错,改成MC后就正常。但是任务中要求用MCI的那个?我比较困惑,到底用哪个呢?谢谢! |
评分
查看全部评分
看来可能是官方资料有问题。
另外再请教一下:Timebase.c和Timebase.h是工程生成的还是软件库自带的?我没找到这两个文件。
原因找到了,5.20是不会生成这个C文件的。我安装了5.03后就会生成。不知道是啥原因!耐用5.03用的是这个MCI_GetSTMStateMotor1();
我用的5.1.3,会生成这个文件,这个文件里的函数是关于任务切换和调度的
另外我感觉任务3的动作好像是:0>-3000>3000>0>FAULT_OVER>IDLE>START>3000>RUN 流程动作的,但是看官方视频是每次到0都FAULT_OVER,困惑!
其实任务3的流程是这样的0->-3000->+3000->FAULT_OVER->0->IDLE->START->+3000->RUN,先触发故障,再停机的,其实也可以算是同时发生
也就是说只有正负切换迅速到0的时候,才会FAULT_OVER?
不是因为速度过零才报错,而是因为过快的调节速度导致系统过流