当前位置:首页 > 电源 > 数字电源
[导读]摘要:S-Function有两种形式,一种是M文件,另一种是C-MEX文件,前者支持功能强大的工具箱,后者支持C、C++等语言,并且在仿真上更快速有效。基于TMS320C2812的SVPWM算法在TI的CCS软件中实现,并且支持C、C++语言,这

摘要: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可以按以下步骤进行:
    首先进行环境设置。初次使用C-MEX S-Function之前,需要在MATLAB中激活,可以在命令窗口键入mex-setup,然后根据提示设置编译器。
    然后打开C-MEX S-Function文件模板,将模板另存为svpwm.c文件,然后再进行必要的设置,这样不会破坏模板,当需要其中的一些必要函数时还可以再查阅。模板中的第一行代码#define S_FUNCTION_NAME XXX是用来设置函数名的,这是调用函数时的唯一标识,这里可以将其改为#define S_FuNCTION_NAME svpwm,那么svpwm就是该函数的函数名。
    最后编译动态链接库。S-Function函数编写完成后,需要在MTLAB中进行编译生成动态链接库与Simulink链接,这样才能在模型中调用S-Function模块。注意编写的文件与生成的文件以及建立的模型都必须在同一目录下。在MATLAB的命令窗口输入mex svpwm.c,这样就会在当前目录下创建一个svpwm.dll文件。在模型中加入S-Function模块,并双击它,在sfunction name一栏填入函数名svpwm。注意这个函数名要与接口程序中设置的函数名保持一致。这样就可以在模型中使用S-Function函数模块了。

2 实现CCS中SVPWM算法移植
2.1 SVPWM算法原理简单介绍
    空间矢量调制(SVPWM)技术即是将3个互为120°的电压矢量投影到两相静止坐标系中,通过三相逆变器开关组合,合成一个空间电压矢量的方法。
    三相逆变器电路如图1所示,用Sa、Sb和Sc分别表示三组开关的通断状态。采用180°导通方式,“1”表示上桥臂导通,“0”表示下桥臂导通。这样就形成了8种开关组合状态,分别是100、110、010、011、001、101、111、000。


     每个开关序列对应一个基准电压矢量,按空间位置排列正好形成了一个六边形。其中,有6个有效电压空间矢量(V1~V6)和2个零矢量(V7、V8),选用对称的空间矢量调制序列以消除偶次谐波。具体开关状态Sa、Sb、Sc与电压矢量在两相静止坐标系中的关系以及各扇区和开关序列图如图2所示。

[!--empirenews.page--]
    无论电压矢量落在哪个扇区,都可以用相邻的两个有效电压矢量和零矢量对其合成。这里以扇区3为例,Vref=Vα+jVβ,Vx、Vy代表相邻电压矢量(即V1、V2)。Tpwm是开关周期,To、Tx、Ty分别是零矢量、Vx、Vy的作用时间。当开关周期远小于信号周期时,在一个开关周期中可以认为电压矢量是不变的,即:

    为了保证波形对称,把每个状态的作用时间一分为二,正如图2中的开关序列图所示,这样既能控制电压输出的大小,又能消除偶次谐波。
    将每个扇区中各电压矢量作用时间都计算出来,按照图2所示的对称序列分别分配给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输出波形。

[!--empirenews.page--]


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


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

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

前不久,新思科技已经正式对Ansys完成了整个收购。一家是IP和IC设计方面传统三强之一,一家是仿真与分析领域的老牌技术专家。双方的结合也是呼应整个技术潮流,为客户提供从硅片到系统的完整解决方案。而且,借助Ansys的强...

关键字: Synopsis 新思科技 Ansys 仿真 汽车 AI

在当今高度 自动化的工业生产中 ,搬运机械手应用广泛 。现对搬运机械手液压系统展开研究 ,详细阐述其结构组 成、工作流程与基本原理 ,并基于Fluidsim仿真设计系统的液压和电气回路 ,设置仿真参数并进行仿真分析 。结...

关键字: Fluidsim 搬运机械手 仿真 液压系统

针对现有静电放电测试方法 ,提出了一种基于末端装置变形的六轴机器人模型用于静电放电测试 。用两种方法对模型进行了正、逆运动学分析,通过实例验证了旋量方法计算的优势,为后续进行静电放电测试自动化控制提供了理论基础。

关键字: 机器人 正运动学 逆运动学 变形 仿真 旋量

北京 2025年6月4日 /美通社/ -- 工业仿真软件是智能制造的核心引擎,"智造强国"的核心基础设施。5月27日,北京市经济和信息化局印发《北京市人工智能赋能新型工业化行动方案(2025年)》,...

关键字: SIM 仿真 仿真软件 数字化

数字信号处理(DSP)系统开发,仿真调试是确保算法正确性与硬件可靠性的关键环节。随着DSP芯片功能复杂度的提升,传统调试手段已难以满足需求,而JTAG接口与逻辑分析仪的协同使用,通过硬件级调试与信号级分析的结合,为开发者...

关键字: DSP 仿真 JTAG

随着半导体工艺进入7nm及以下先进节点,器件尺寸的持续缩小导致可靠性问题日益凸显。其中,负偏压温度不稳定性(Negative Bias Temperature Instability, BTI)和热载流子注入(Hot C...

关键字: BTI/HCI 仿真

在嵌入式系统开发中,硬件资源的限制和测试环境的搭建常常成为开发者面临的挑战。QEMU(Quick Emulator)作为一款开源的机器模拟器和虚拟化器,能够在主机系统上模拟目标硬件环境,为嵌入式软件的仿真测试提供了强大的...

关键字: QEMU 嵌入式软件 仿真

按照19英寸标准2U机箱尺寸开展某型电子设备结构热控一体化设计。根据模块化要求完成设备主板、AC/DC电源等子模块设计并确定散热方式;基于传热基本原理完成风道设计 , 结合风道和热耗分布情况完成系统风量计算和风扇选型 。...

关键字: 强迫风冷 热设计 仿真 热测试

上海2025年2月18日 /美通社/ -- Altair(纳斯达克股票代码:ALTR)近日宣布将于 2025 年 3 月 5 日至 6 日举办Future.Industry 2025全球线上直播会议。本届盛会特邀 Goo...

关键字: FUTURE INDUSTRY 仿真 PC

上海2025年2月7日 /美通社/ -- 近期,品牌自制短剧犹如一股强劲的创意风暴,迅速在营销界掀起了巨浪。短剧以其独特的魅力赢得了广大用户与品牌方的热烈追捧。美团、麦当劳、星巴克等纷纷涉足其中,探索这一新型营...

关键字: 仿真 机器人 阿里巴巴 AI技术
关闭