基于TMS320C2812的SVPWM算法的S-Function仿真实现
示的对称序列分别分配给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仿真的连接提供了一种简单有效的途径,大大降低了算法移植的难度,简化了程序员的软件编写流程,在实际工程中具有较为广泛的应用前景。
TMS320C2812 S-Function 相关文章:
- TMS320C2812在无刷直流电动机控制中的应用(06-27)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)