微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于TMS320C2812的SVPWM算法的S-Function仿真实现

基于TMS320C2812的SVPWM算法的S-Function仿真实现

时间:08-31 来源:互联网 点击:

示的对称序列分别分配给3个开关序列Sa、Sb、Sc,并转换为TMS320F2812三个比较寄存器的比较值,便可输出脉宽不同的脉冲波且基频是互为120°的正弦波。

  2.2 移植SVPWM工程为S-Function函数

  根据上述原理在CCS中建立了一个基于TMS320F2812的SVPWM算法工程,包含对DSP进行系统初始化,并初始化所需外设,如EVA、GPIO、PIE等。基本算法存于DSP28_svpwm.c文件中。具体功能配置可以参考相关书籍,篇幅所限,这里不再累述。DSP在每个上溢中断或下溢中断时调用SVPWM算法进行扇区判断、作用时间计算及比较值的确定,然后将比较值赋给EVA的3个比较值寄存器。通过与EVA的双向计数器进行比较,产生3路占空比不同的脉冲波,通过GPIO_A口的PWM1、PWM3、PWM5输出,并且DSP会自动将这3路信号进行反向,通过另外3个GFIO_A口(PWM2、PWM4、PWM6)输出。

  在MATLAB中打开之前,由模板另外存为svpwm.c文件。该文件主要用于实现对CCS程序的接口移植。函数都是在其他C文件中编写的,所以在本文件的开头包含所用到的头文件和C文件,并且将所用的头文件和C文件都与建立的模型放在同一目录下。这也是该种链接方法的关键和精髓,仿真完成后可以不需要改动CCS程序便可直接在CCS中编译使用。

  3 仿真模型与仿真结果

  在MATLAB/Simulink中搭建一个理想的三相全桥逆变器系统,用以验证SVPWM算法的正确性。模型如图3所示,其中SVPWM模块被封装成了一个子系统,以便系统进行管理和扩展。对三相电压进行采样,将得到的值送入SVPWM子系统中进行处理。

  

  这里需要将三相电压Va、Vb、Vc进行坐标系变换,变为两相静止坐标系中的电压Vα、Vβ,作为S-Function的输入参数。坐标变换也用一个子系统完成,如图4所示。在该子系统中调用C-MEX编写的S-Function进行比较值的计算,并通过produce PWM输出波形。

  

  

在系统仿真模型中,开关频率为9 kHz,直流母线电压为350 V,三相电压为给定的峰峰值159 V,频率50Hz,互差120°的正弦电压。经过10 s仿真得到的仿真结果如图5所示。

  

  

  从仿真结果中可以看出,三相全桥输出的电压波形与三相参考电压波形完全同频同相,这也验证了CCS中SVPWM算法的正确性和可行性。

  结语

  随着科学技术的日益发展,不同软件间的联系也越来越紧密,完成一项工程通常需要熟悉和掌握几种软件。作为算法仿真的必备软件,MATLAB已经提供了与其他软件建立通信的方法,但是也不可能做到面面俱到。本文利用S-Function简单有效地实现了CCS程序到MATLAB仿真的移植,并得出正确结果,为CCS程序与MATLAB仿真的连接提供了一种简单有效的途径,大大降低了算法移植的难度,简化了程序员的软件编写流程,在实际工程中具有较为广泛的应用前景。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top