Hyowinner的MBD技术论坛

 找回密码
 立即注册
搜索
查看: 216|回复: 2

PMSM双采双更:PWM、ADC和ISR时序才是进阶关键

[复制链接]

132

主题

314

帖子

5372

积分

管理员

校长

Rank: 9Rank: 9Rank: 9

积分
5372
QQ
发表于 2026-9-2 08:41:39 | 显示全部楼层 |阅读模式
PMSM电机控制双采双更:别只会调 PI,先把 PWM、ADC 和 ISR 时序看懂

如果已经学过 PMSM FOC,能说出 Clarke 变换、Park 变换、PI 电流环、反 Park、SVPWM,那么恭喜你已经脱离“完全入门”。但如果电机一抖、一响、高速一上去电流就乱,你只会继续改 Kp、Ki,那其实还停留在电机控制初级阶段。

真正往工程深处走,一定会碰到采样和更新时序。所谓“双采双更”,就是这样一个分水岭:它不是一个炫技词,而是把 PWM 载波、ADC 触发、电流采样窗口、FOC 中断、角度补偿和比较寄存器装载全部串起来的闭环问题。


图1:双采双更的本质,是在一个中心对齐 PWM 周期里做两次采样和两次电压矢量更新


一、先说清楚:什么叫双采双更

以中心对齐 PWM 为例,计数器从 ZERO 数到 PRD,再从 PRD 数回 ZERO,一个完整上数和下数过程构成一个 PWM 周期。普通单采单更通常是一周期采样一次相电流,执行一次电流环,更新一次占空比。

双采双更则是在一个 PWM 周期内做两套动作:

1. 双采:在上半周期和下半周期各触发一次 ADC,得到两次电流采样。实际采样点不能简单放在 ZERO 或 PRD 边沿,而要避开开关瞬态、死区、驱动消隐、放大器恢复时间和低边采样窗口失效区。
2. 双更:每次采样后执行一次电流环计算,并在下一个有效影子寄存器装载点更新 CMPA/CMPB/CMPC 或等效的 PWM 比较值。典型装载点是 ZERO 和 PRD,具体取决于 MCU 的 ePWM/Timer 支持能力。

所以双采双更不是“ADC 多采两次然后平均一下”。如果你双采以后只是做平均,仍然一周期更新一次 PWM,那叫改善采样噪声,不叫真正提高电流环更新节奏。双采双更也不是“中断频率翻倍就完事”。如果比较寄存器只在 ZERO 装载一次,或者 ISR 算完时已经错过装载点,实际电压矢量并没有半周期更新。

二、它为什么有价值:核心是减少等效控制延迟

PMSM FOC 里最怕的不是公式不会写,而是控制器拿到的是“过去的电流”,发出去的是“未来才生效的电压”。采样延迟、ADC 转换时间、ISR 执行时间、PWM 影子寄存器等待时间加起来,就是电流环的等效延迟。

延迟在低速时看起来没那么致命,但高速时会直接变成电角度误差。电角度误差可以粗略理解为:
相位滞后 Δθ ≈ ωe × td

其中 ωe 是电角速度,td 是采样到电压矢量真正生效的延迟。比如 20 kHz PWM 时,一个 PWM 周期是 50 us。如果单采单更的等效延迟接近 50 us,而双采双更能压到 25 us 左右,那么在 1000 Hz 电角频率下,相位滞后大约可以从 18° 降到 9°。这不是纸面上的小优化,高速区 Id/Iq 串扰、弱磁电流超调、转矩脉动和噪声都会受影响。


图2:双采双更真正改善的是采样到电压更新之间的等待时间


这里要注意一个工程事实:双采双更只能降低“可被时序安排压缩的延迟”,不能消除 ADC 建立时间、采样保持时间、运放恢复时间、死区影响和功率级本身的动态。它不是魔法。它只是把原来一周期一次的闭环节奏,推进到半周期一次,让电流环在高电角频率下少背一些相位债。

三、真正落地时,要先画时序图,而不是先改代码

想实现双采双更,第一步不是把控制周期从 50 us 改成 25 us,而是画一张完整时序图。至少要标清楚这些点:

1. PWM 计数器什么时候到 ZERO、什么时候到 PRD。
2. ADC SOCA、SOCB 分别由哪个事件触发,触发后延迟多少开始采样。
3. 采样点是否落在有效矢量窗口内,是否避开开关沿和消隐时间。
4. ADC 何时转换完成,EOC 何时进 ISR。
5. ISR 最坏执行时间是多少,不是平均时间。
6. CMPA/CMPB/CMPC 影子寄存器在 ZERO 装载、PRD 装载,还是 ZERO/PRD 都装载。
7. 算出来的新 duty 到底在哪一个半周期生效。

如果这些点画不清楚,双采双更很容易变成“看起来中断跑得更勤,实际控制延迟没有变短”,甚至因为 ISR 抖动和寄存器装载错过时刻,控制质量更差。


图3:双采双更要把 ePWM、ADC、ISR、角度预测、SVPWM 和 Shadow Load 对齐


四、PI 参数不能直接照搬单采单更

这是很多人会踩的坑。双采双更以后,电流环离散执行周期从 Tpwm 变成 Tpwm/2。连续域 PI 的 Kp、Ki 可以保持同一设计目标,但离散实现里的积分增量通常包含 Ts:
integrator(k+1) = integrator(k) + Ki × Ts × error(k)

如果你把控制周期减半,却仍然沿用旧代码里固定的积分步长,积分作用可能变成原来的两倍。表现出来就是电流环更冲、限幅更频繁、抗积分饱和更难调,有时还会误以为“双采双更不稳定”。

同理,低通滤波器、速度估算滤波、观测器、死区补偿滤波、弱磁环节和限幅恢复逻辑,只要里面含有采样周期,都要重新离散化或重新标定。双采双更不是只改一个 scheduler 周期,它会影响整个控制器的离散时间假设。

五、角度补偿要跟着半周期更新

PMSM FOC 的坐标变换依赖电角度。如果电流半周期采样两次、PI 半周期算两次,但 Park 变换还拿上一周期角度,那双采双更的收益会被吃掉一大块。

更合理的做法是对角度做延迟补偿:
θuse = θmeas + ωe × td

这里 td 不是固定写死的神秘常数,而是从“角度测量时刻”到“电压矢量实际生效时刻”的总延迟。单采单更和双采双更的 td 往往不同,上半周期和下半周期也可能不同。高速弱磁场景尤其要关注这个问题,因为一点点角度滞后都会让 d/q 轴解耦变差,最后表现为电流更大但转矩没上去。

六、低边电流采样不是任何占空比都能双采

如果使用双低边或三低边分流电阻采样,ADC 只能在对应桥臂导通、采样电阻上有有效电流路径时采到可靠相电流。高调制比、小占空比、死区附近、过调制区,采样窗口可能被挤得很窄,甚至某些扇区根本没有足够窗口。

这时双采双更会把问题暴露得更明显:你需要的不只是“触发两次 ADC”,而是按 SVPWM 扇区分析每次采样能不能采到有效相电流。必要时要做相电流重构、动态调整采样点、限制最小脉宽,或者换成相线电流传感器/隔离电流采样。不要在无效窗口里采到一个带尖峰的值,再怪 PI 控制器不好。

七、死区补偿和电压限幅也要半周期一致

双采双更意味着每半个 PWM 周期都可能更新一次电压矢量。死区补偿如果仍然按一周期一次更新,或者使用滞后的相电流符号,就容易在电流过零附近引入额外抖动。工程上通常要对电流符号做一点滞环或保持策略,避免符号在噪声附近来回跳。

SVPWM 的限幅、过调制、最小脉宽、采样窗口约束也要统一考虑。很多项目里,真正限制双采双更效果的不是 PI 算法,而是“你算出来的 duty 在硬件上根本不能给”:脉宽太窄,采不到电流;边沿太近,放大器还没恢复;占空比一限幅,电流环积分又开始堆积。

八、哪些场景值得做双采双更

双采双更适合这些场景:

1. 低电感 PMSM,电流变化快,单周期更新下电流纹波和相位滞后明显。
2. 高速电机,电角频率高,几十微秒延迟已经能造成明显电角度误差。
3. 高动态伺服或电驱,对转矩响应、噪声、弱磁稳定性有较高要求。
4. MCU 的 ADC、PWM、DMA、中断和计算裕量足够,不会因为翻倍 ISR 造成实时性风险。
5. 硬件采样窗口和电流传感器拓扑支持半周期采样。

不一定值得做的场景也很明确:低速大电感风机、水泵、普通开环或低动态负载,单采单更已经够用;MCU 算力紧张、ADC 通道排布混乱、保护链路不可靠时,先把基本采样和保护做好,比盲目上双采双更更有价值。


图4:双采双更的常见坑点和验证动作


九、MBD 里应该怎么建这个东西

在 Simulink/MBD 里做双采双更,不能只把控制器 sample time 改成 Tpwm/2。建议至少建出下面这些东西:

1. 一个半周期 base rate,对应双采双更的电流环执行节奏。
2. PWM 载波和 Shadow Load 行为,明确 duty 是在 ZERO 还是 PRD 生效。
3. ADC 触发延迟、采样保持、量化、偏置、噪声和滤波。
4. 角度测量延迟和角度预测补偿。
5. ISR 计算延迟,可以先用固定延迟,再用 HIL 或实测数据替换成最坏情况。
6. 低边采样窗口有效性判断,至少在高调制比和不同扇区做测试。
7. PI、滤波器、观测器、弱磁和限幅模块的离散化参数统一从 Ts_ctrl 派生。

如果模型里 duty 一算出来就立刻作用到电机,而真实硬件要等下一个 ZERO/PRD 才装载,那仿真会过于乐观。相反,如果模型里无意加了 Rate Transition 或 Unit Delay,真实控制器并没有这个延迟,仿真又会过于悲观。MBD 的价值不在于把框图画得漂亮,而在于把这些时序假设显性化。

十、怎么验证你真的做对了

建议从四个层级验证:

1. 时序验证:用 GPIO 翻转测 ADC 触发、ISR 入口、ISR 出口、寄存器写入,确认最坏执行时间没有越过装载点。
2. 数据验证:记录 ADC 原始值、offset 后电流、dq 电流、角度、duty、限幅标志和扇区号,不要只看最终转速。
3. 扰动验证:做 Iq 阶跃、速度阶跃、母线电压扰动、负载突变和高调制比测试,看电流环是否真的更快且不过冲。
4. 边界验证:测高温、低压、高速弱磁、电流过零、死区补偿切换、最小脉宽限制和过流 Trip 注入。

如果双采双更做对,通常能看到电流相位滞后减小、Iq 跟踪更快、高速区 dq 解耦更好、转矩脉动下降。但如果只看到 CPU 负载翻倍、ADC 波形更毛、偶发尖峰更多,那就说明你只是把复杂度加上去了,时序闭环并没有真正闭合。

结论

双采双更是 PMSM 电机控制从“会让电机转”走向“会把电机控好”的一个典型进阶点。它考验的不是你会不会背 FOC 公式,而是能不能把 PWM、ADC、采样窗口、角度补偿、PI 离散化、SVPWM 限幅、死区补偿、ISR 实时性和硬件保护放在同一张时序图里分析。

不甘于只懂电机控制初级内容的人,建议下一步不要继续只刷“FOC 原理图”,而是拿一个真实 MCU 项目,把双采双更的完整链路跑通:画时序图,建 MBD 模型,生成或手写代码,上板量 GPIO 时序,记录 dq 电流和 duty,再回头修正模型。能完成这一轮闭环,电机控制理解会明显上一个台阶。

相关学习资源

1. PMSM电机控制实战
2. STM32嵌入式软件MBD开发实例
3. Simulink仿真及代码生成技术入门到精通
4. Simulink/Stateflow建模规范

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
持续学习 未来有你
基于场景 解决问题
项目合作联系微信:Hyowinners
回复

使用道具 举报

0

主题

1

帖子

18

积分

MBD实习生

Rank: 1

积分
18
发表于 2026-9-15 19:10:42 | 显示全部楼层
点赞,补充两张图,帮助理解, 分别为单采单更(不同采样时刻)和双采双更。

source: https://blog.csdn.net/weixin_71017540/article/details/149653106



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

76

主题

161

帖子

3164

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3164
发表于 2026-9-16 12:50:57 | 显示全部楼层
WWG 发表于 2026-9-15 19:10
点赞,补充两张图,帮助理解, 分别为单采单更(不同采样时刻)和双采双更。

source: https://blog.csdn.net ...

点赞!简单明了
回复

使用道具 举报

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

本版积分规则

QQ|MBD全栈技术学校|苏ICP备2025212294号-1|Hyowinner校长B站首页|手机版|小黑屋|Hyowinner的MBD技术论坛

GMT+8, 2026-10-15 22:00 , Processed in 0.106444 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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