OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5716|回复: 2

求助ST FOC 5.4.6,移植FreeModbus,485通讯造成电机卡顿

[复制链接]

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2019-4-6
在线时间
80 小时
发表于 2021-7-13 15:49:34 | 显示全部楼层 |阅读模式
100金钱
如题,用的ST 的FOC库,加了Freertos,移植了FreeModbus-V1.6.0,板子通过USB转485模块与电脑串口助手连接。问题:电脑通过485发送数据时,电机会卡一下,项目实际运行中上位机会以最低50Hz的频率向电机板发送485信息,电机跑起来就咔哒咔哒的,声音不算大,跟小猫打呼噜的声音差不多。电机倒是也能正常转。
中断优先级如图所示,USART3和TIM7用于modbus通讯和3.5个字符。按理说USART3和TIM7优先级比其他定时器啥的都低,应该不会影响到FOC的控制吧?网上说rtos的优先级比中断的优先级要低,据我理解ST关于电机的控制都是放在了中断和定时器里(不知道对不对),那么我放在RTOS里的Modbus任务不应该会影响电机运行才对。

中断优先级

中断优先级


Freertos一共五个任务。两个系统生成的,三个自己建的。优先级如图所示。

RTOS任务优先级

RTOS任务优先级

第一个任务用于故障判断,运行正常则绿灯闪。有错误报警则红灯亮。

任务1

任务1

第二个任务用于FreeModbus轮询。

任务2

任务2

第三个任务用于ST FOC 电机API的调用。

任务3

任务3



最佳答案

查看完整内容[请看2#楼]

已解决,勾选FreeRTOS之后,原本位于中断里的电机控制的函数MC_RunMotorControlTasks()被st将放到了FreeRTOS的startMediumFrequencyTask任务里,造成电机控制优先级低于modbus中断优先级
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2019-4-6
在线时间
80 小时
 楼主| 发表于 2021-7-13 15:49:35 | 显示全部楼层
已解决,勾选FreeRTOS之后,原本位于中断里的电机控制的函数MC_RunMotorControlTasks()被st将放到了FreeRTOS的startMediumFrequencyTask任务里,造成电机控制优先级低于modbus中断优先级
回复

使用道具 举报

12

主题

3386

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8625
金钱
8625
注册时间
2020-5-11
在线时间
4056 小时
发表于 2021-7-13 16:58:31 | 显示全部楼层
在FOC的中断里让某IO翻转,或者进中断时置低\退出中断时置高;
然后示波器监测这IO,看是否受到485通讯影响.
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-8 11:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表