一台双轴伺服驱动器:一块 TMS320F280049C LaunchPad 带两块三相 GaN 逆变器板,一颗 MCU 同时驱动两台电机。24V 输入,每相 7Arms,PWM 载波 10kHz,电流环带宽做到 5kHz。
两轴各跑一套电流环,三个 ADC 要覆盖两台电机的相电流与母线电压。设计里把 FOC 与电流调节算法拆到 CPU、CLA、TMU 上并行处理,两轴的运算挤在同一个载波周期里;带宽与相位裕度由 SFRA 在线测控制环频率响应验出来。
一次电流环里两轴各跑四段,保护链全程并行
这套设计给出的延迟值是 2.02μs——从相电流采样到 PWM 更新,F28004x 上每个电机跑完这一段的时间。传统控制方案里,这段延迟通常是一个完整采样周期,控制动作要等到下一个周期才生效;快速电流环要求在同一个载波周期内把它跑完,目标压到 2μs 以内。
采样到 PWM 更新的延迟落在哪一拍
延迟变长,逆变器能加到电机上的最大电压会下降,电机电流的变化率受限,控制器性能跟着下降。10kHz 载波下把这段延迟压到 2μs 量级,电流环带宽可以做到 5kHz、相位裕度 45°,扭矩响应和电机的转速范围都跟着上去。
这个 2.02μs 属于这块板子在这套配置下的整条电流链,主频只影响其中一段。
一、这 2.02μs 由五段拼起来
一颗 F280049C 上的双轴快速电流环信号链
按一次电流环的时间顺序拆:
① 采样触发。 载波周期里由 ePWM 事件启动 ADC 转换。三相电流经逆变器板上 5mΩ 的串联取样电阻进来,0.1% 精度的相电流采样;F280049C 上三个 12 位 ADC 接相电流与母线电压。采样时刻与载波的相对位置,决定后面所有计算拿到的是哪一时刻的电流值。
② 转换完成与交接。 转换结束,结果进结果寄存器,控制律运算要被唤醒。这套设计把 FOC 与电流调节拆到 CLA 和 TMU 上与主 CPU 并行,CLA 响应外设触发、与主 CPU 同时执行,不占主 CPU 的中断入口。从转换结束到运算真正开始,中间还有结果搬运、触发响应这两段。
③ 运算。 电流调节器在 CLA 上跑,关键代码放 Flash 还是零等待 RAM、中断怎么嵌套、DMA 和总线谁在占用,都会改变这一段的时间。五段里只有这一段在“算”,主频影响的是这里。
④ 比较值装载。 算出来的比较值与周期值写进影子寄存器,在下一个装载点统一生效,跟载波对齐。写进去不等于立刻输出,装载时点决定这一拍的控制量落在哪个周期。
⑤ 硬件保护。 窗口比较器持续监视相电流,越限直接把 PWM 引脚封住,不经过 CPU。这一条与运算并行存在,功率级过流时起作用的是硬件路径,软件判断不在这条链上。
一次电流环的五段:四个工位沿导轨依次动作,硬件保护全程并行
五段里,四段是硬件链的时序,一段是指令执行。这条链跑顺了才有那 2.02μs,也才有 5kHz 的带宽。换掉 C2000,参数表可以一项项对齐,甚至每项数值更高,但这五段每一段都由这颗芯片的外设链决定,换一颗料就得重新确认一遍。
二、换料之后,失效的是这条结论
换一颗料,2.02μs 这个数字就不能再沿用,要在台架上重新测一遍。
它属于那块板子:
① 触发事件在载波的哪个位置发出;
② ADC 转换多久;
③ CLA 什么时候被唤醒;
④ 比较值在哪个装载点生效;
⑤ 比较器输出走哪条路径封锁 PWM——每一段都绑在 F280049C 的硬件链上。
换料之后,即使电流环代码一行不改地编译通过,这些时刻也全部变了。
延迟变长的后果会顺着一条链传下去:延迟变长 → 可用电压下降 → 电流变化率受限 → 带宽与相位裕度跟着下降。台架上要交的,是这条链逐环重新跑过一遍的记录,不是一张新的参数对照表。
三、五环重测清单
电流环重测按环推进,拆出的五段就是这五环。第二列是换料后要先确认的机制,第三列是确认完仍要上板记录的量。
实测项只写动作与要记录的量。数值门限、采样次数、分位数由项目自己的验收规范给定;哪一环的机制查不到,就把这一环整段排进台架,不用相邻环节替代。
| 环 | 换料后先确认什么 | 台架上要记录什么 |
|---|---|---|
| 采样触发 | 触发事件由谁发起、能否与载波对齐、触发到采样保持的通路 | ① 触发事件到采样完成的时序 ② 触发源与采样通道的对应关系 ③ 通信或另一轴中断并发时这条时序的变化 |
| 转换完成与交接 | 结果寄存器映射、转换结束到运算被唤醒的路径、结果搬运方式 | ① 转换结束到结果可读取的时延 ② 结果寄存器更新时点 ③ 搬运完成与运算启动的相对时点 |
| 运算 | 关键代码可放在哪类存储器、中断与触发的响应方式、总线主有哪些 | ① 关键代码放进指定存储器后的最坏执行时间 ② 中断进入与退出开销 ③ 其他总线主占用时执行时间的变化 |
| 比较值装载 | 缓冲与双缓冲寄存器是否存在、装载由哪个事件使能、生效点怎么定 | ① 比较值写入后的实际生效时点 ② 生效时点与载波的对齐 ③ 连续两个周期内输出波形的变化 |
| 硬件保护 | 比较器输出接到哪里、封锁 PWM 引脚的路径是否依赖软件 | ① 保护事件到 PWM 引脚封锁的链路时间 ② 比较器检测、寄存器访问、输出禁止各段的实际耗时 ③ 封锁后引脚电平保持状态 |
四、两种换法,改动层数不同,五环一个不少
走迁移路线,保住板子与大部分代码(从 F28004x 器件族迁到 G32R501)。
| 项目 | 迁到 G32R501 后 | 对五环清单的影响 |
|---|---|---|
| 寄存器位域 | 改名 | 逐模块都有明确对应,前几环沿用原来的对应关系 |
| 库函数传参 | 调整 | 同上 |
| 工程文件与工具链 | 跟着换 | 同上 |
| 板子与大部分代码 | 不动,沿用 | 五环仍要逐环上板复测 |
| IQmath 数学库跑分 | 只说明运算性能 | 清单里每一行的实测项都不减 |
瑞萨 RA8T2(R7KA8T2JFLCAB#BC1)这边是事件直连、GPT32 缓冲与双缓冲寄存器、POEG 输出禁止、高速比较器,给到的是机制与给定条件下的分段值:
| 给到的量 | 条件里不含什么 | 对应清单里哪一环 |
|---|---|---|
| POEG 输出禁止时间 | 比较器检测时间 | 硬件保护 |
| 寄存器设置一项 | 寄存器访问时间 | 硬件保护 |
| 访问周期表 | DMA 等总线主并发的情形 | 运算 |
| GPT32 缓冲与双缓冲寄存器 | 装载后与载波对齐的实际时点 | 比较值装载 |
这几处不含的部分,就是必须上板测的部分。缓冲寄存器配好了,装载后与载波对齐的实际时点仍要在板上记。
同一厂商跨代换料也一样。从 F2837x/2807x 换到 F28P65x,PCB、GPIO 与模拟复用、应用代码、EABI 格式都要逐项改。管脚对得上,链路时序仍要重新核。
两条路线的差别在改动层数:迁移路线改寄存器命名、库函数与工程文件,先跑采样触发与硬件保护两环;重搭路线连工具链一起换,先跑比较值装载与运算两环。五环的清单本身不变,也不因为哪条路线少几行改动就少几行实测。
本篇基准取 F280049CPZS。TI 更新一代的 F28P65x、极海另发的 G32R502 属另外两条产品线,不进这张清单。
五、清单怎么排进项目
按环推进:先把第二列的机制逐环确认下来,第三列剩下的项按台架工时排进去。三种常见场景可以先跑不同的两环——
| 场景 | 先跑哪两环 | 原因 |
|---|---|---|
| 存量板保供 | 采样触发、硬件保护 | 板子与功率级不动,触发链和保护路径的时序变化直接影响原来的验收结论 |
| 新项目重做 | 比较值装载、运算 | 缓冲机制与代码放置要重新配置,这两环决定电流环能不能跑进目标带宽 |
| 换 SDK 与工具链 | 运算、转换完成与交接 | SDK 自带的中断与 DMA 配置会改变搬运与执行时间,这两环的记录值先变 |
具体数值以板上的记录为准。
收尾
C2000 换料交付时,交的是五环逐环的上板记录;参数表单独归档。五环的时序值不随代码一起迁移,要逐环重新测。
61