请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
zhdzhd 提问时间:2018-9-2 13:35 /
本帖最后由 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中教的是这样的:
er4.PNG er2.PNG

任务3中要求的是这样的:
er3.PNG

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

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

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

er6.PNG

也有这样的:

er7.PNG

所以以下2个函数:


MCI_GetSTMStateMotor1();





MC_GetSTMStateMotor1();


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





收藏 评论18 发布时间:2018-9-2 13:35

举报

18个回答
子曰好人 回答时间: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 回答时间: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,困惑!
zhdzhd 回答时间:2018-9-2 15:36:12
子曰好人 发表于 2018-9-2 15:27
MCI_GetSTMStateMotor1();这应该是老版本的代码,你也看到了SDK4.3的代码就是这样写的。如果你用SDK5.0, ...

看来可能是官方资料有问题。
另外再请教一下:Timebase.c和Timebase.h是工程生成的还是软件库自带的?我没找到这两个文件。
子曰好人 回答时间:2018-9-2 15:27:01
MCI_GetSTMStateMotor1();这应该是老版本的代码,你也看到了SDK4.3的代码就是这样写的。如果你用SDK5.0,那么就用MC_GetSTMStateMotor1();函数来获取电机的状态吧。这不能算bug,只是4.3和5.0的细微差别罢了

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

子曰好人 回答时间:2018-9-2 16:38:13
是SDK软件库自带的,你可以在
  1. D:\Program Files (x86)\STMicroelectronics\MC_SDK_5.1.3\Middlewares\ST\MotorControl\Applications\Test_MotorApp\Src\Timebase.c
复制代码
这个地方找到
zhdzhd 回答时间: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 回答时间: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?

不是因为速度过零才报错,而是因为过快的调节速度导致系统过流
zhdzhd 回答时间:2018-9-2 21:47:01
子曰好人 发表于 2018-9-2 20:57
不是因为速度过零才报错,而是因为过快的调节速度导致系统过流

所以说从-3000到3000,改变加速时间,就可以FAULT_OVER。
子曰好人 回答时间:2018-9-2 22:35:41
zhdzhd-174422 发表于 2018-9-2 21:47
所以说从-3000到3000,改变加速时间,就可以FAULT_OVER。

速度从负的变成正的电流矢量方向改变了180度,电机里面的电流是有惯性的,你不能立即改变它,所以这种操作必然会报错
zhdzhd 回答时间:2018-9-2 22:48:02
那有没有办法从-3000到3000时用任务3的要求报错?而不是到0是报错?
STM1024 回答时间:2018-9-3 12:04:40
可能是版本更迭的时候没有及时更新?反正那个MotorControl Workbench的帮助文档都是5.0的,而实际的程序是5.1.2

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

zhdzhd 回答时间:2018-9-3 13:07:13
stm1024 发表于 2018-9-3 12:04
可能是版本更迭的时候没有及时更新?反正那个MotorControl Workbench的帮助文档都是5.0的,而实际的程序是5 ...

有可能,但是我的MotorControl Workbench的版本是5.2.0.18503
12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版