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

【电机培训】行止有度-电机控制与启停

[复制链接]
STM1024 发布时间:2018-9-3 16:41
本帖最后由 stm1024 于 2018-9-6 17:33 编辑

任务1要求如下:
2018-09-03_161125.jpg


实现的代码,论坛中的已经有很多例子,我就不再献丑了,主要结合STM32 Motor Control SDK中的说明文档,说一下使用的注意事项。

任务1中已经把需要的函数列举出来了:
1. MC_ProgramSpeedRampMotor1
2.MC_StartMotor1和 MC_StopMotor1

1.MC_ProgramSpeedRampMotor1

先说这个尾巴1.这个控制类库支持两个电机的控制,其实这个在MotorControl Workbench的新建工程中会得到体现:
2018-09-03_161619.jpg

此外,培训的文件中也可以看到:
2018-09-06_173143.jpg

两个不同的电机可以有完全不同的参数设置,这里我们都使用电机1.
函数MC_ProgramSpeedRampMotor1原型:
void MC_ProgramSpeedRampMotor1(int16_t hFinalSpeed,  uint16_t  hDurationms) ;
作用是“Programs a speed ramp for Motor 1 for later or immediate execution. ”,即配置速度斜坡为以后或立即执行。如果电机的状态是START_RUN或者是RUN,这个函数就会立即得到执行,否则只是缓存该值,直到电机状态是START_RUN或者RUN。
hFinalSpeed:最终速度,注意这个单位是以0.1Hz为单位的,所以,如果要使用3000rpm,这个地方给定的参数应该这么计算:
先3000/60,这将得到转/秒,然后单位是0.1Hz,即提供1,则1秒转10次,所以要乘以10,最终应该是3000/60*10=3000/6
示例中的第一个参数就是这么来的,调用这个函数,需要注意提供的第一个参数必须是目标rpm/6。另外要注意的是变量的数据类型是int16_t,说明可以接受负数,其实就是电机旋向和正方向相反。不过,如果给一个正方向,然后立即给一个反方向,肯定是会在速度几乎为0的时候触发 Speed Feedback故障的,这个在前面的测试中也得到了验证。
hDurationms:由于是 speed ramp,必然有一个爬坡时间,这里就是设置该爬坡时间的,单位是毫秒。手册中提到“It is possible to set 0 to perform an instantaneous change in the speed value”,推测应该是用电机可能的最大角加速度立即提升到目标速度。

2. MC_StartMotor1和 MC_StopMotor1
显然,这两个函数是启动和停止电机的。
对于MC_StartMotor1,需要注意的是,必须在执行前调用以下函数之一:
MC_ProgramSpeedRampMotor1()
MC_ProgramTorqueRampMotor1()
MC_SetCurrentReferenceMotor1()
第一个是转速控制,第二个则是扭矩控制,最后一个功能暂不明白,似乎是把当前参考作为后续执行的参数。

停止函数则没有太多的使用限制,任何时候都可以使用。

收藏 1 评论2 发布时间:2018-9-3 16:41

举报

2个回答
子曰好人 回答时间:2018-9-3 17:12:11
本帖最后由 子曰好人 于 2018-9-3 18:13 编辑

关于楼主的帖子有一个地方有不同观点,关于报错触发点,不一定是速度接近于0的时候才产生报错,如果要看故障发生点需要通过更高频率的采样数据(DAC或者Jscope)来查看内部变量的变化情况。

void MC_SetCurrentReferenceMotor1( Curr_Components Iqdref )这个函数是直接设置dq轴电流的,其实如果把d轴电流设置为0,q轴电流设置为非零值,那么和void MC_ProgramTorqueRampMotor1( int16_t hFinalTorque, uint16_t hDurationms )这个函数的功能就几乎一样了

更新一下,刚才又看了代码注释,有一段是这样的:
  * @note A ramp cannot reverse the rotation direction if the Application is using
  * sensorless motor control techniques. If the sign of the hFinalSpeed parameter
  * differs from that of the current speed, the ramp will not complete and a Speed
  * Feedback error (#MC_SPEED_FDBK) will occur when the rotation speed is about to
  * reach 0 rpm.
  *
既然官方认为是接近零速的时候才触发报警,我也暂时认为是这样吧



STM1024 回答时间:2018-9-3 18:28:29
子曰好人 发表于 2018-9-3 17:12
关于楼主的帖子有一个地方有不同观点,关于报错触发点,不一定是速度接近于0的时候才产生报错,如果要看故 ...

可能是我理解的不是太深,或者表述的有问题,估计意思是说速度方向的变换会导致speed feedback error,就是说这只是触发speed feedback error的情况之一,至于出现这个故障的时候,原因不一定是由于方向的改变。

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版