☰
SguanFOC配套QT上位机使用教程:JustFloat串口协议实时监测电机数据完整指南
2026/10/15 15:46:34 网站建设 项目流程
  • 嵌入式
  • 硬件开发
  • 机器人

【免费下载链接】SguanFOC_Library

SguanFOC为有/无传感器的PMSM电机提供强大的磁场定向控制解决方案。库内集成了基于SVPWM的多种控制模式,支持位置环、速度环、电流环的单环/串级控制...同时针对嵌入式平台优化了数学运算,并提供高度可配置的PID和LADRC等控制器,满足从简单调速到高性能伺服的各类应用需求。

项目地址:https://gitcode.com/gh_mirrors/sg/SguanFOC_Library
点击查看免费下载

SguanFOC 为有/无传感器 PMSM 电机提供磁场定向控制(FOC)方案,其配套 QT 上位机基于自研的 JustFloat 串口协议,可以实时监测转速、电流、电压、占空比等 16 路电机数据,并支持一键下发速度、位置等控制指令。本教程面向新手,手把手教你完成上位机连接、协议解析与实时曲线调试。

一、JustFloat 串口协议是什么?

JustFloat 是 SguanFOC 库内置的轻量通信协议,核心思路只有一条:单片机直接把float数组的原始内存通过串口发出,上位机按同样的 float 结构解析,省去了传统协议里"浮点数转字符串再转回来"的开销。

上图是 SguanFOC 库文件包含关系,Sguan_printf就是负责 JustFloat 通信的模块,源码位于 Sguan_printf.c/Sguan_printf.c)。

协议有两个方向:

  • 发送方向(下位机 → 上位机):每周期打包一个结构体PRINTF_STRUCT,包含float fdata[16]共 16 路数据(v3.0.x 版本默认 12 路),外加 4 字节帧尾0x00 0x00 0x80 0x7F,方便上位机对齐解析。
  • 接收方向(上位机 → 下位机):采用Key=Value?文本指令,以?作为帧尾触发解析;下位机内部用 DJB2 哈希字典做指令映射,速度极快,并带 40 字节熔断保护,防止粘包导致系统死机。

二、连接上位机:硬件与串口配置 🖥️

以官方开源的 CH32V3 机器人关节板为例,板载 USB 串口(最高 2M 波特率),直接插上电脑即可通信:

上位机程序的下载方式:仓库中 Sguan电控上位机.txt 内附有下载链接(解压密码见文件内容),完整接口说明可查阅 Sguan使用说明书.pdf。

连接步骤只需 3 步:

  1. 下载并打开Sguan 电控上位机,选择对应 COM 口;
  2. 设置波特率,与单片机端串口初始化配置保持一致(参考工程中User_CorrespondSet对应的 UART 配置,见 UserData_Function.h/UserData_Function.h));
  3. 点击打开串口,打开"图表 Display"页签,即可看到实时曲线跳动。

💡 提示:如果你的板卡没有 USB 转串口,用任意 CH340/CP2102 转 USB 模块,接 TXD/RXD/GND 三根线同样可行。

三、实时监测:16 路电机数据怎么看 📊

上位机收到的 16 路数据由下位机的User_UserTX()函数填充(源码见 UserData_UserControl.h/UserData_UserControl.h)),默认映射关系如下:

通道数据含义单位/范围
fdata[0]状态机当前状态码-
fdata[1]目标机械转速rad/s
fdata[2]目标 Q 轴电流A
fdata[3]目标 D 轴电流A
fdata[4]实际机械转速rad/s
fdata[5]实际 Q 轴电流A
fdata[6]实际 D 轴电流A
fdata[7]实际机械角度rad
fdata[8]Q 轴电压指令V
fdata[9]D 轴电压指令V
fdata[10]母线电压实际值V
fdata[11]U 相占空比0~1
fdata[12]V 相占空比0~1
fdata[13]W 相占空比0~1
fdata[14]A 相瞬时电流A
fdata[15]当前控制模式0~18

调试时最常用的是fdata[1] 目标转速 vs fdata[4] 实际转速两条曲线——两者跟随越紧,说明速度环调得越好。想监测其他变量(如无感观测速度、编码器角度),直接在User_UserTX()里替换对应通道即可。

四、一键下发控制指令:上位机怎么控制电机 🎛️

上位机向单片机发送的指令格式统一为指令名=数值?,内置指令字典如下(源码见 Sguan_printf.c/Sguan_printf.c) 中的Cmd_Dict):

指令作用示例
MOTOR电机启停(≥0.5 启动,否则停止)MOTOR=1?
Speed设定目标机械转速 (rad/s)Speed=50.0?
Position设定目标机械角度 (rad)Position=50.0?
Id/Iq设定 D/Q 轴电流给定Iq=2.0?
Ud/Uq设定 D/Q 轴电压给定Uq=5.0?
User0~User2用户自定义指令,可任意扩展User0=3.14?

使用流程非常简单:先MOTOR=1?启动,再Speed=xx?调速。User0~User2三条自定义通道回调函数Handle_User0_Adjust等同样位于 UserData_UserControl.h/UserData_UserControl.h),可用来在线修改 PID 参数、切换控制模式等。

五、实际调试效果:无感观测 vs 编码器对比 📈

下图是上位机记录的真实调试数据:黄色为无感观测的机械速度,紫色为高精度编码器测得的机械速度,两条曲线几乎完全重合,说明 HFI 高频注入切换到 NLFO 非线性磁链观测器过程平滑:

下面这张图则展示了 HFI 切换到 SMO 滑模观测器时的速度与角度波形,可以清楚看到观测器切换点(角度为锯齿波是因为已放大 10 倍便于观察):

这类曲线记录是验证控制算法最有效的工具——速度环是否跟随、观测器切换是否平滑、电流是否异常,一图便知。

六、常见问题快速排查 ⚡

  • 上位机显示全是乱码/异常大数:波特率与单片机端不一致,或 TX 线接反(单片机 TXD 接电脑 RXD)。
  • 曲线不动:检查SguanFOC_main_Loop()是否在主循环中调用、高频中断里的发送链路(Printf_TX_Loop)是否被执行。
  • 下发指令无效:确认指令以?结尾(帧尾),且SguanFOC_Printf_Loop()已在串口接收中断中调用。
  • 想发更多通道:修改 Sguan_printf.h/Sguan_printf.h) 中的CH_COUNT即可扩容。

总结

SguanFOC 配套 QT 上位机 + JustFloat 串口协议,让 FOC 调试从"黑盒"变成"透明":16 路数据实时可视化,指令一键下发。新手只需"连线、选串口、看曲线"三步,就能开始观察转速跟随、电流波形与观测器表现;进阶用户则可以通过User_UserTX()和User0~User2通道,把它打造成自己的参数整定与数据采集平台。

更多模块说明可参考仓库根目录 README.md 与 Sguan使用说明书.pdf。

  • 嵌入式
  • 硬件开发
  • 机器人

【免费下载链接】SguanFOC_Library

SguanFOC为有/无传感器的PMSM电机提供强大的磁场定向控制解决方案。库内集成了基于SVPWM的多种控制模式,支持位置环、速度环、电流环的单环/串级控制...同时针对嵌入式平台优化了数学运算,并提供高度可配置的PID和LADRC等控制器,满足从简单调速到高性能伺服的各类应用需求。

项目地址:https://gitcode.com/gh_mirrors/sg/SguanFOC_Library
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询