上次讲了使用system generator开发FPGA控制算法的基本原理以及一些心得;接下来把电机控制里面较为核心的SVPWM算法使用system generator做了实现,在此把开发过程、遇到的问题及解决方法分享一下;最后用示波器将管脚上测得的SVPWM脉冲采集了上来。
1. 为什么要使用FPGA实现
在全控型电力电子开关器件出现以后,为了改善交流电动机变压变频调速系统的性能,科技工作者在20世纪80年代开发出了应用脉宽调制(PWM)技术的变压变频器,由于它的优良的技术性能,当今国内外生成的变压变频器几乎都已采用这项技术。目前在逆变器控制领域广泛使用DSP来实现SVPWM的调制算法,具有硬件简单、灵活性好等特点。但是PWM波的产生需要定时的采样与计算,从而使得控制系统的实时性低,CPU的利用率不高。由于DSP采用串行的数据处理机制,在对数据量大、速度要求高,高实时性和高可靠性的底层信号进行处理时并无优势可言,而这恰恰是FPGA的强相。由于FPGA采用数据并发执行的处理方式,使得其在高速大规模的数据处理方面有着无可替代的优势,随着FPGA工艺和设计水平的不断提高,其在数字系统中扮演的角色也从逻辑胶合者提升到处理器的核心。FPGA在工业控制中的应用早在十年前就已经出现,随着FPGA芯片价格的不断降低,其在工业领域的应用正在飞速发展,采用FPGA来实现SVPWM调制算法也将层出不穷
2. 系统任务分析及实现
SVPWM调制算法相对比较复杂,在完成系统控制任务时,要根据需要对任务进行模块划分,从而逐个实现,最终完成一个完整的控制系统。首先分析了系统的主要任务,然后给出各项任务的具体实现策略,具体包括扇区判别、基本矢量作用时间计算、波形产生、死区产生四个模块。其基本原理如图1所示。
通常在矢量控制的系统中,根据控制策略进行适当的坐标变换,可以给出两相静止坐标系即αβ坐标系电压空间矢量的分量uα、uβ,同时还要给定调制周期Ts以及直流侧电压值Ud,这时就可以进行SVPWM的控制。具体的流程为:
根据uα、uβ判断参考电压矢量所在的扇区,从而选择合适的矢量
确定基本电压矢量的作用时间
理想PWM波的产生
死区时间的添加 |