SuperWatch 与 PID 调试(旧入口)¶
文档已合并
本页保留用于兼容旧书签。请阅读新版 SuperWatch 与 PID 调试,其中包含真实 PID 曲线、受约束自动调参流程和 FOC 变量映射。
以下内容为旧版教程,字段与流程仍可参考。
SuperWatch 直接使用本次构建的 AXF/ELF 符号解析变量,再通过调试器读取目标 RAM。它适合验证控制环、状态机和保护逻辑,不需要从 MAP 文件手工抄地址。
准备工作¶
- 在“配置 → 文件来源”填写同一次构建产生的 AXF 和 MAP。
- 在“本地设备”连接目标板。
- 点击“解析符号”,确认页面显示“符号已加载”和变量数量。
- 打开“仪表盘 → 符号表”,搜索变量名;也可以在 SuperWatch 左侧直接筛选。

AXF、MAP 与已烧录固件必须来自同一次构建。重新编译后,变量地址和 RTT 控制块地址都可能变化,不能沿用旧截图或旧配置。
RET6 示例变量¶
本章示例工程的目标是 STM32F103RET6,Keil Device 为 STM32F103RE。程序每 100 ms 更新基础演示数据,并以 10 ms 周期运行一个板上 PID 速度环仿真。以下变量已在真实目标上验证:
| 变量 | 类型 | 用途 |
|---|---|---|
g_demo_temperature_x10 |
rt_int16_t |
温度,实际值为变量除以 10 |
g_demo_motor_speed_rpm |
rt_uint16_t |
基础演示转速 |
g_pid_target_rpm |
float |
速度给定值 |
g_pid_feedback_rpm |
float |
被控对象反馈转速 |
g_pid_error_rpm |
float |
给定减反馈 |
g_pid_output_permille |
float |
控制输出,范围 0 到 1000 |
g_pid_kp/ki/kd |
float |
PID 参数 |
g_pid_integral |
float |
积分项,受限幅保护 |
g_pid_fault_flags |
rt_uint8_t |
采样周期等参数的保护标志 |
一次单点读取只能说明某个时刻的状态。例如目标为 800 rpm 时,实测反馈约 833 rpm、输出约 604,故障标志为 0;调参结论仍应依据连续曲线和阶跃响应。
SuperWatch 连续采样¶
- 在左侧搜索
g_pid_。 - 勾选
g_pid_error_rpm、g_pid_feedback_rpm和g_pid_output_permille。 - 将采样间隔设为
0.01 s,点击对应的“应用”。 - 点击“开始”,等待至少 10 秒,让目标给定值完成多个阶跃周期。
- 检查顶部状态:点数持续增长、采样频率接近 100 Hz、
transport connected,且后端丢样为 0。 - 点击“暂停”后再缩放时间轴;需要保存时使用 CSV 或 PNG。

RET6 演示程序每约 6 秒在 800 rpm 和 1200 rpm 之间切换给定值。曲线应呈现反馈的滞后、输出的阶跃变化和误差的衰减。截图中的 6400 点、约 97 Hz 和零丢样是有效采集的判据;只看到变量列表而没有点数或曲线,不算完成采集。
用 SuperWatch 调 PID¶
推荐顺序是先只读观察,再一次只改一个参数:
- 固定采样周期、负载和给定值,记录原始曲线。
- 逐步增加
Kp,观察上升时间、超调和输出是否饱和;每次改动不超过当前值的 10% 至 20%。 - 在比例响应稳定后增加
Ki,观察稳态误差和低频摆动;积分必须保留限幅。 - 只有采样噪声已验证足够低时才加入
Kd,并配合微分滤波;噪声放大时立即恢复上一组参数。 - 每组参数至少运行两个完整阶跃周期,保存 CSV、参数值和固件版本。
AI 可以根据曲线计算上升时间、超调、稳态误差和积分饱和比例,但写入参数前必须得到人工确认。建议只允许 AI 修改 g_pid_kp/ki/kd,并设置参数上下限、单次步长、最大试验时长和 g_pid_fault_flags 停止条件。g_pid_run_enable=0 或 g_pid_reset_state=1 可作为人工接管和清除积分的手段。
FOC 调试映射¶
真实 FOC 工程可按同样方法建立变量组,不应只监视最终转速:
| 环节 | 建议变量 | 主要观察项 |
|---|---|---|
| 电流环 | Id_ref、Id_fb、Iq_ref、Iq_fb |
跟踪误差、采样噪声、限幅 |
| 速度环 | speed_ref、speed_fb、speed_err |
超调、稳态误差、负载扰动 |
| 位置/角度 | theta_elec、theta_mech、观测器状态 |
角度连续性、跳变和丢同步 |
| 调制与保护 | v_d、v_q、母线电压、过流标志 |
电压饱和、母线波动、保护触发 |
先调内环,再调速度环,最后调位置环。AI 只能在电流限幅、母线电压范围、转速上限和硬件急停均已确认的条件下提出或执行小步长修改;禁止直接关闭过流、过压、堵转和失速保护来换取“更好看的曲线”。
写变量的边界¶
写入会立即改变 MCU 状态。只写明确列入调试接口的参数,不要修改 RTOS 控制块、栈、堆、DMA 缓冲、外设寄存器或未知结构体成员。每次写入都应记录原值、目标值、地址和回读结果;复位或烧录前先停止 SuperWatch。
SuperWatch 与 VOFA+¶
| 能力 | SuperWatch | VOFA+ |
|---|---|---|
| 变量来源 | AXF/ELF 符号和类型 | 地址、协议或串口点表 |
| 适用场景 | 控制环、结构体成员、AI 分析 | 已有串口数据链路和外部波形 |
| 典型证据 | RAM 连续采样、CSV、变量类型 | 串口原始帧和曲线 |
成功判据¶
- AXF/ELF 与目标固件匹配;
- 采样频率、点数和丢样状态可见;
- 关键变量曲线有实际数据;
- 调参前后使用相同测试条件;
- 原始 CSV、参数变更记录和固件版本可复现。