zhdzhd-174422 发表于 2018-9-2 13:35:58

六、ST电机IHM002套件实操之--疑惑

本帖最后由 zhdzhd-174422 于 2018-9-2 13:47 编辑

在做电机套件任务3时遇到了一个函数,感觉被官方资料搞的非常困惑,就是关于电机SDK 4.3和5.2 函数疑问,不知是按软件函数来做还是按任务函数来做,不知是官方资料有误还是软件有BUG?
这个函数就是:

State_tMCI_GetSTMStateMotor1(void)
{
return MCI_GetSTMState( pMCI );
}


在STM32_PMSM_MC_SDK5.0_Training_CHN.pdf中教的是这样的:


任务3中要求的是这样的:


官方教学视频中是这样的:


而软件生成的工程文件mc_api.h中是这样的:


而我看论坛坛友们的帖子中有这样的:



也有这样的:



所以以下2个函数:


MCI_GetSTMStateMotor1();





MC_GetSTMStateMotor1();


是否是功能一样的?
在软件生成的工程中,用上面MCI的会报错,改成MC后就正常。但是任务中要求用MCI的那个?我比较困惑,到底用哪个呢?谢谢!





子曰好人 发表于 2018-9-2 15:27:01

MCI_GetSTMStateMotor1();这应该是老版本的代码,你也看到了SDK4.3的代码就是这样写的。如果你用SDK5.0,那么就用MC_GetSTMStateMotor1();函数来获取电机的状态吧。这不能算bug,只是4.3和5.0的细微差别罢了

zhdzhd-174422 发表于 2018-9-2 15:36:12

子曰好人 发表于 2018-9-2 15:27
MCI_GetSTMStateMotor1();这应该是老版本的代码,你也看到了SDK4.3的代码就是这样写的。如果你用SDK5.0, ...

看来可能是官方资料有问题。
另外再请教一下:Timebase.c和Timebase.h是工程生成的还是软件库自带的?我没找到这两个文件。

子曰好人 发表于 2018-9-2 16:38:13

是SDK软件库自带的,你可以在D:\Program Files (x86)\STMicroelectronics\MC_SDK_5.1.3\Middlewares\ST\MotorControl\Applications\Test_MotorApp\Src\Timebase.c这个地方找到

zhdzhd-174422 发表于 2018-9-2 16:48:57

本帖最后由 zhdzhd-174422 于 2018-9-2 17:10 编辑

子曰好人 发表于 2018-9-2 16:38
是SDK软件库自带的,你可以在这个地方找到
原因找到了,5.20是不会生成这个C文件的。我安装了5.03后就会生成。不知道是啥原因!耐用5.03用的是这个MCI_GetSTMStateMotor1();

子曰好人 发表于 2018-9-2 18:58:39

zhdzhd-174422 发表于 2018-9-2 16:48
原因找到了,5.20是不会生成这个C文件的。我安装了5.03后就会生成。不知道是啥原因!耐用5.03用的是这个MC ...

我用的5.1.3,会生成这个文件,这个文件里的函数是关于任务切换和调度的

zhdzhd-174422 发表于 2018-9-2 19:49:33

子曰好人 发表于 2018-9-2 18:58
我用的5.1.3,会生成这个文件,这个文件里的函数是关于任务切换和调度的

另外我感觉任务3的动作好像是:0>-3000>3000>0>FAULT_OVER>IDLE>START>3000>RUN 流程动作的,但是看官方视频是每次到0都FAULT_OVER,困惑!

子曰好人 发表于 2018-9-2 20:03:23

zhdzhd-174422 发表于 2018-9-2 19:49
另外我感觉任务3的动作好像是:0>-3000>3000>0>FAULT_OVER>IDLE>START>3000>RUN 流程动作的,但是看官方 ...

其实任务3的流程是这样的0->-3000->+3000->FAULT_OVER->0->IDLE->START->+3000->RUN,先触发故障,再停机的,其实也可以算是同时发生

zhdzhd-174422 发表于 2018-9-2 20:47:48

子曰好人 发表于 2018-9-2 20:03
其实任务3的流程是这样的0->-3000->+3000->FAULT_OVER->0->IDLE->START->+3000->RUN,先触发故障,再停机 ...
也就是说只有正负切换迅速到0的时候,才会FAULT_OVER?

子曰好人 发表于 2018-9-2 20:57:22

zhdzhd-174422 发表于 2018-9-2 20:47
也就是说只有正负切换迅速到0的时候,才会FAULT_OVER?

不是因为速度过零才报错,而是因为过快的调节速度导致系统过流
页: [1] 2
查看完整版本: 六、ST电机IHM002套件实操之--疑惑