本帖最后由 zyz0926 于 2025-5-21 15:55 编辑
#申请原创# #技术资源# @21小跑堂
背景介绍
主流的快速电流环的实现是通过DSP/ARM+FPGA的双芯片方案来实现的,DSP/ARM主要负责传统意义中的外环+控制函数+功能函数的计算,FPGA主要负责电流采样+位置获取+电流环计算+PWM输出等内环与伺服系统整体响应性能强相关的任务上面。而TI的FCL方案则是利用算法的简化+DSP/CLA并行处理架构+合理的时序安排+硬件支持等四个方面优势来实现的。
为了提高电流环路的速度并优化电流环路的工作范围,反馈采样和 PWM 更新之间的延迟必须尽可能小。实质上,在 PWM 载波周期内,载波峰值处会发生系统采样,并在 TPWM_update 时间点更新由控制器输出的 PWM 占空比。这样可以大幅减少传输滞后并改善带宽。但是,缺点是会失去用于计算逆变器 PWM 占空比 新值的有效 PWM 时间窗口。此时间窗口称为消隐窗口。此消隐窗口越小,直流母线电压利用率就越大,电机运行速度范围也越大。
通常,在许多载波频率为10kHz的应用中,不超过2µs的延迟是可以接受的。过去,此任务是结合使用高端FPGA、外部ADC和MCU 来实现的。但是,C2000具有相应的硬件支持(例如三角函数加速器(TMU)、CLA、 高速ADC、单周期 ADC读取和 PWM 写入),因此无需FPGA或外部ADC即可在此C2000上实现这种控制。
基于R501的高压伺服方案下快速电流环实现
TI的单芯片能实现1us的快速电流环并形成成熟案例,靠的是算法简化+DSP/CLA并行处理架构+合理的时序安排+硬件支持四个方面的优势,而极海的G32R501同样也具备这4方面的优势来实现FCL快速电流环。
1算法简化
算法简化主要是体现在电流环PID函数计算以及SVPWM的计算上。
电流环PID函数计算,主要采用了浮点计算替代定点计算以及PID简化,PID简化部分是删除掉了电流环低通滤波以及微分项kd的计算等非必要环节,从而来简化电流环执行时间。转为浮点计算加算法简化后的电流环执行时间为274cyc,转化前为830cyc,用时为定点计算简化前的35%左右。
SVPWM计算,主要是采用了零序注入的原理来替代扇区判断的原理。零序注入代码量只需要6行代码,而扇区判断需要50行左右的代码来实现。
具体原理,实现方法以及验证结果请参考输出文档《基于零序注入SVPWM方案实现说明》
实际测试结果,在240M主频下,仅仅用时27cycle左右即可计算完成SVPWM,而基于扇区判断的SVPWM函数则需要183cycle左右。
更进一步的,可以使用汇编语言来写核心代码逻辑。
2合理时序安排
主要是体现在电流采样时机,位置采样时机以及双中断触发延时的机制等时序安排上。
当前的时序图设计如图所示:
另外,采用了PWM即时更新的配置,即根据当前周期计算的PWM占空比,即时更新生效。想要即时更新,则消隐窗口必须要足够小,否则会影响到PWM输出的最小占空比。
3硬件支持
硬件支持主要是紫电加速单元的加成。实际测试,在除法计算以及三角函数计算等电机常用计算指令中的优势较为明显。
4并行处理
TI采用的是DSP+CLA并行,R501可以采用双核并行,即CPU1替代CLA使用来达到类似的效果。
基于R501的高压伺服方案下快速电流环综合测试结果
快速电流环执行时间的测试方法为:在软件内部,使用空置的GPIO引脚,在程序开始阶段对该GPIO进行电平拉低,在程序结束阶段对该GPIO进行电平拉高,硬件上电,程序运行后,通过示波器检测该GPIO硬件的实际输出,低电平的时间长度代表该段程序的实际执行时间。
对从获取电流采样开始到PWM输出结束的整个电流环执行时间进行测试,测试结果为0.76us即可完成整个电流环计算,计算性能远远高于对标竞品。
测试波形如下图:
|