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

六、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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版