S-Function 在 TMS320F2812 的 SVPWM 算法仿真
发布:2012-11-07 | 作者:-- | 来源: -- | 查看:119 次 | 用户关注:
摘要:S-Function 有两种形式,一种是 M 文件,另一种是 C-MEX 文件,前者支持功能强大的工具箱,后
者支持 C、C++等语言,并且在仿真上更快速有效。基于 TMS320C2812 的 SVPWM 算法在 TI 的 CCS 软
件中实现,并且支持 C、C++语言,这给程序通过 S-Function 移植到 MATLAB 中进行仿真提供了一种有
效途径。利用在 Simulink 中搭建的三相全桥逆变器模型与 S-Function 编写的
摘要:S-Function 有两种形式,一种是 M 文件,另一种是 C-MEX 文件,前者支持功
能强大的工具箱,后者支持 C、C++等语言,并且在仿真上更快速有效。基于
TMS320C2812 的 SVPWM 算法在 TI 的 CCS 软件中实现,并且支持 C、C++语言,这给
程序通过 S-Function 移植到 MATLAB 中进行仿真提供了一种有效途径。利用在 Simulink
中搭建的三相全桥逆变器模型与 S-Function 编写的算法模块相结合,并进行仿真,简单有
效地说明了 S-Funetion 的实际应用并验证了 SVPWM 算法的正确性。
关键词:S-Function;SVPWM;MATLAB 仿真;CCS
引言
%%% 利用 MATLAB 仿真 CCS 算法的方法在很多文章中都有介绍,归纳起来主要有两类:一
类是利用 MATLAB/Simulink 中的 S-Function 编写所需算法模块,仿真成功后将算法移植
到 CCS 中建立新的算法工程;另一类是在 MATLAB 中建立仿真模型,然后通过 CClink 的
直接代码生成法建立 CCS 工程文件。这两类方法都有各自的缺点。第一类方法只注重对算
法思想的验证,要在 CCS 中实现却要经过很复杂的算法移植过程,增加了算法实现的难度。
第二类方法避免了此类问题,而将 MATLAB 仿真模型直接生成 CCS 代码,省略了再移植
的过程,然而这种方法形成的代码具有可读性差、缺乏优化、占用资源大等缺点,使得
TMS320F2812 芯片的内存利用率大大降低。结合这两种方法的优点和弊端,本文利用 C-
MEXS-Func-tion 提出了一种全新的将 CCS 程序与 MATLAB 仿真联系起来的方法,实现了
CCS 程序到 MATLAB 仿真的简单移植。该方法高效、简单并且易于理解和实现,可以通
过 S-Function 作为接口直接使用 CCS 编写的 SVPWM 程序在 MATLAB 环境下进行仿真,
算法验证正确后不用再修改程序可直接在 CCS 中编译并下载到目标板使用。这就大大降低
了仿真与实际应用之间转化的难度,也简化了软件人员在几种编程环境中反复修改程序的
过程。
1 S-Function 程序建立方法
%%% S-Function 有两种建立方式,一种是用 M 文件来实现,另一种是用 C-MEX 来实现。前
者效率低下,但是开发速度快,可以方便调用 MATLAB 和工具箱函数;后者支持不同的编
程语言,如:C、c++、Fortran 等,运行速度快,满足实时性要求,可以实现 M 文件不能
实现的许多功能,如复数的处理等。
%%% 考虑到基于 TMS320F2812 的 SVPWM 算法仿真对实时性要求比较高,且 CCS 工程是
用 C 语言编写的,因此本文选用 C-MEX 形式来建立 S-Function 程序。在 MATLAB 的安装
根目录 matlabroot/simulink/src 下有一个用 C 语言编写的 C-MEX S-Function 文件模板:
sfuntmpl basic.c。该模板几乎包含了所有 C-MEXS-function 文件可执行的必需和可选的
回调函数的基本结构,只需要进行少许改动,就可以实现各种功能的函数。
%%% 建立 S-Function 可以按以下步骤进行: