首页 » 通讯 » 基于CCS与MATLAB/Simulink联合仿真平台的构建与实现_步长_函数

基于CCS与MATLAB/Simulink联合仿真平台的构建与实现_步长_函数

乖囧猫 2024-11-29 02:03:34 0

扫一扫用手机浏览

文章目录 [+]

(上海理工大学 光电信息与打算机工程学院,上海200093)

摘 要:为了快速验证电力电子掌握系统中DSP(Digital Signal Processor)掌握算法,提高掌握算法开拓效率,提出了CCS(Code Compose Studio)与MATLAB/Simulink联合仿真。
先容了CCS与MATLAB/Simulink联合仿真基本事理,给出告终合仿真平台的构建方法与联合仿真实现的方法;着重给出了CCS IDE脚本文件编写关键步骤和基于Level_2的S-Functon函数的编写关键步骤。
末了以稠浊式固态开关为例,在Simulink环境下构建了稠浊式固态开关模型,并通过联合仿真实现了稠浊式固态开关的功能,验证了方案的精确性。

基于CCS与MATLAB/Simulink联合仿真平台的构建与实现_步长_函数 基于CCS与MATLAB/Simulink联合仿真平台的构建与实现_步长_函数 通讯

中图分类号:TP391.9

基于CCS与MATLAB/Simulink联合仿真平台的构建与实现_步长_函数 基于CCS与MATLAB/Simulink联合仿真平台的构建与实现_步长_函数 通讯
(图片来自网络侵删)

文献标识码:A

DOI:10.16157/j.issn.0258-7998.2016.04.030

中文引用格式:渠博岗,易映萍. 基于CCS与MATLAB/Simulink联合仿真平台的构建与实现[J].电子技能运用,2016,42(4):106-110.

英文引用格式:Qu Bogang,Yi Yingping. Construction and implementation of co-simulation platform based on CCS and MATLAB/Simulink[J].Application of Electronic Technique,2016,42(4):106-110.

0 弁言

在当代电力电子掌握系统的开拓中,DSP芯片以其优胜的运算性能在掌握算法领域得到了越来越广泛的运用。
在对DSP的开拓过程中,每每首先利用MATLAB/Simulink等软件对掌握系统进行仿真,然后再进行程序设计,末了再将程序实行结果与仿真结果比拟并对程序进行修正,且掌握算法程序的验证与调试都须要完全的电力电子硬件系统,并有硬件电路工程师的合营才能较为顺利地进行,然而这种传统的方法效率低下,且不具有灵巧性。
基于此,提出了CCS与MATLAB/Simulink联合仿真的思想,可先在MATLAB/Simulink中搭建硬件系统,运用MATLAB/Simulink中的CCSLink工具,来实现MATLAB/Simulink与DSP开拓环境CCS的互联,从而通过CCS与MATLAB/Siumlink联合仿真来实现对掌握算法的验证和调试。
不仅可以实现仿真与程序调试的交互,而且还在硬件系统未准备就绪的情形下实现掌握算法程序的验证与调试,同样的方法不仅适用于电力电子掌握系统,还适用于其他基于DSP实现的掌握系统。
因此,CCS与MATLAB/Simulink的联合仿真不仅可以快速验证掌握算法,也可使仿真与开拓同时进行,提高开拓效率[1]。

1 MATLAB/Simulink与CCS联合仿真的基本事理

1.1 Simulink仿真事理

Simulink进行动态仿真,须要借助Simulink求解器来实现[2]。
求解器分为离散求解器和连续求解器。
Simulink对离散系统的仿真核心是对离散系统差分方程的求解,且结果精确。
而对连续系统进行仿真时,则通过对连续系统微分或偏微分方程进行求解,且解为近似解,因此Simulink的连续求解器分为定步长求解器和变步长求解器。
对付定步长求解器,不存在偏差掌握的问题,而对付变步长求解器,仿真步长会受到绝对偏差和相对偏差的掌握,只有求解偏差知足相应偏差范围,才会进行下一步仿真[3]。

然而在实际系统中,很少存在纯挚的离散系统或者连续系统,多为稠浊式系统,而连续变步长求解器可以同时知足离散系统和连续系统的求解。
连续变步长求解器先以最大步上进行求解,若该仿真区间内有离散状态更新,步长便减小到与离散状态的更新相吻合,之后再打算积分偏差以掌握求解,若求解偏差知足偏差范围,则进行下一步仿真,否则缩小韶光间隔,重复此过程进行求解仿真。

Simulink求解器虽然是Simulink进行动态仿真的核心,但求解器打算出的系统状态和仿真步长与系统模型的直接交互也非常主要。
交互的核心是事宜关照,而过零检测则用来检测系统中是否有事宜发生。
当系统在前一仿真步永劫光内发生了过零事宜,变步长求解器就会缩小仿真步长,目的是剖断事宜发生的准确韶光。
交互事理见图1。

1.2 MATLAB/Simulink与CCS联合仿真事理

DSP在对系统进行掌握时,一样平常以一定频率采集系统中的电量参数,运算后输出掌握旗子暗记
在MATLAB/Simulink与CCS进行联合仿真时,MATLAB可以将Simulink仿真模型中每一仿真步长的仿真电量参数通过CCSlink通报给CCS,再通过CCS通报给DSP板,DSP板经由运算后输出掌握旗子暗记通过CCS传输给Simulink作为下一仿真步长中仿真模型的掌握量。
如此循环直至仿真结束[4]。
仿真流程见图2。

2 MATLAB与CCS联合仿真平台的构建

2.1 MATLAB与CCS的连接接口

为了实现联合仿真,首先须要利用CCSLink工具来实现MATLAB与CCS的连接。
MATLAB/Simulink与 CCS之间的关系如图3所示,CCSLink工具供应了3种连接接口,即CCS IDE、RTDX和嵌入式工具[5]。

(1)CCS IDE:该接口许可MATLAB在命令窗口中启动和停滞目标DSP中的程序,并与目标DSP进行数据交互、监视目标DPS状态等。
用户也可以编写MATLAB程序脚本来实现CCS与MATLAB交互和剖析的自动化。

(2)RTDX(Real Time Data Exchange):该接口可实现MATLAB与目标DSP的实时数据交互。
通过打开、使能、关闭或禁止目标DSP 的RTDX通道,来实现MATLAB通过该通道向目标DSP进行操作或读取数据,且交互过程中不须要停滞目标DSP程序的实行。
RTDX连接工具只是CCS连接工具的一个子类,在创建CCS连接工具的同时创建RTDX连接工具,它们不能分别创建。

(3)嵌入式工具:该接口可在MATLAB中创建一个工具,该工具代表嵌入在目标C程序中的变量。
利用嵌入式工具可直接访问目标DSP中存储器和寄存器中的变量,即把目标C程序中的变量作为MATLAB中的一个变量来对待[4]。

2.2 CCS IDE脚本文件关键编写步骤

CCS IDE供应了ccsdsp函数和ticcs函数来建立CCS操为难刁难象,即将CCS映射为MATLAB中的一个操为难刁难象,这样就可以通过调用干系MATLAB函数来掌握CCS软件实现对DSP目标板上的程序进行在线调试。
脚本文件编写关键步骤如下[1]:

(1)仿真前需安装CCS 3.3软件及MATLAB R2009a以上版本。

(2)打开CCS3.3,在Code Coposer Studio Setup中设置所利用的目标DSP型号及仿真器型号。
若须要利用CCS的软件仿真功能,可在Platform下选择Simulator。

(3)打开MATLAB,在命令窗口输入ccsboardinfo,则会显示DSP和仿真器型号,选择与所利用相符合的DSP和仿真器型号,并记录下相应的仿真器编号Board Num与DSP编号Proc Num。

(4)利用步骤(3)得到的Board Num与Proc Num,通过ticcs建立CCS工具,并显示调试界面:

isIDEVisible=cc.visiable;

visible(cc,1);

cc=ticcs('boardnum',x,'procnum',y);

(5)在MATLAB中加载CCS工程文件夹,并在编译后加载可实行文件。
函数中须要标示出.prj与.out文件路径,示例如下:

cc.open('F:\MATLAB_CCS\F2812\SSS.prj');

cc.build;

cc.load('F:\MATLAB_CCS\F2812\SSS.out');

(6)MATLAB与CCS数据交互的设置。
MATLAB只能识别与调用CCS中的全局变量。
以是可利用函数list(cc,'globlevar')通过MATLAB的命令窗口显示出CCS所有的全局变量以便调用。
如若须要添加新的交互变量,可利用symbolInfo语句关联到tgtSymbol。
如下示例便实现了使CCS全局变量a作为交互量:

tgtSymbol=list(cc,'globlevar');

tgtSymbol.a=symbolInfo.a;

(7)MATLAB与CCS的数据交互,须要在CCS程序中设置断点,设置断点所用函数为cc.insert;且一样平常断点都设置在DSP采样或运算完成后。
当程序运行到断点处时MATLAB将数据通报给CCS,所用函数为cc.write;若变量为构造体变量,则在tgtsymble后输入构造体变量名,在number后输入构造体成员名,示例如下:

cc.insert('main.c',101,'break');

cc.write(tgtSymbol.Ua,address.DSPsig(1));

cc.write(tgtSymbol.CMD_HMI,members.SSS_start_stop,

address.DSPsig(2));

(8)由于断点一样平常都设置在DSP采样或运算完成后,以是可掌握程序运行到断点处。
此时程序停息实行,可通过CCS读取DSP更新后的掌握旗子暗记,供MATLAB下一步仿真利用,示例如下:

run(cc.'runtohalt');

DSPsum(1)=read(cc,tgtSymbol.FCS1.address,'int32',1);

(9)关闭CCS IDE,打消变量:

clear cc tgtSymbol is IdeVisiable;

end;

3 MATLAB与CCS联合仿真的实现

3.1 S-Function函数的事理

在MATLAB与CCS的联合仿真中,不仅算法设计较为繁芜,每一个仿真步须要精确定位,且每次仿真中都须要输入大量的指令,MATLAB供应的Simulink仿真模块已无法知足这些需求。
以是须要在MATLAB中以编程的办法即S-Function(System Function系统函数)来实现。

S-Function是MATLAB供应的可以让用户自定义Simulink模块的功能。
用户可通过S-Function设计出Simulink来实现算法设计,并将其嵌入到系统模型中,终极在仿真中与Simulink自带的其他模块实现对繁芜系统的仿真[6]。
MATLAB与CCS联合仿真框图如图4所示。

S-Function有两种类型,一种是基于MATLAB措辞的M文件,分为Level_1和Level_2两种。
另一种是基于C措辞,C++措辞或者FORTRAN措辞等编写的MEX文件。
S-Function函数比拟见表1。

鉴于Level_1类型的S-Function在数据处理上的局限性和MEX文件形式的S-Function在编写上较为繁芜,且编译后的后续设置也比较繁芜,文章利用了Level_2类型的S-Function。

3.2 基于Level_2的S-Function函数的关键编写步骤

Level_2的S-Function包含三部分,分别是:主函数、模块设置函数和功能子函数。
个中功能子函数为可选函数。
关键编写步骤如下[7]:

(1)主函数的定义。
主函数函数名可自定义,在调用时只需输入该M文件的文件名即可,示例如下:

function ghp_sfcn(block)

setup (block);

%end function

(2)模块设置函数的定义。
模块设置函数可对输入和输出端口数量及数据属性、采样韶光、参数输入中的参数数量与属性、注册各功能函数等进行设置,示例如下:

function setup(block)

block.NumInputPorts=1;

block.NumOutputPorts=1;

block.InputPort(1).Complexity='real';

block.OutputPort(1).Complexity='real';

……

block.SampleTimes=[1e-4 0];

……

block.NumDialogPrms = 1;

block.DialogPrmsTunable={'Nontuna};

……

block.RegBlockMethod('Start',@Start);

(3)功能子函数的定义。
功能子函数的利用必须在模块设置函数注册后才能被Simulink利用。
功能子函数的名称可自定义,无需与相应的子函数注册名相同。
以Terminate终止函数为例,示例如下:

function Terminate(block)

UDATA=get_param(block.BlockHandle,'UserData');

UDATA.fcnHandle('Terminate');

4 基于CCS与Simulink联合仿真的稠浊式固态开关

4.1 稠浊式固态开关事情事理

在当前的输配电领域中,机器式断路器仍被大规模运用。
但由于机器式断路器在通断过程中随意马虎产生涌流和电弧。
为此开拓了稠浊式固态开关,该种开关将电子开关与旁路断路器并联,合闸时电子开关先导通,在电压过零时旁路断路器合闸,随后电子开关关断,旁路断路器长期导通;当分闸时电子开关导通,在电流过零时旁路断路器分闸,随后电子开关关断。
这就实现了开通关断无涌流无电弧[8]。
图5所示为稠浊式固态开关拓扑构造。

4.2 稠浊式固态开关模型的构建

Simulink构建的稠浊式固态开关模型,一次系统模型包括三相交流电网、高压侧断路器、变压器、隔离开关、接地开关、稠浊式固态开关和阻性负载;二次系统模型包括掌握模块、电压电流检测模块、上位机模块、显示模块和开入开出模块。

掌握模块是稠浊式固态开关二次系统的核心,而个中的由S-Function函数编写的自定义模块Simulink-CCS则是实现联合仿真的核心。
掌握模块功能是将稠浊式固态开关主电路的电压、电流、开入旗子暗记及上位机模块的起停等旗子暗记通过CCSLink通报给CCS软件,CCS软件将这些旗子暗记通报给目标DSP来进行处理和实行相应算法,随后目标DSP将隔离断路器动作、接地开关动作和旁路断路器动作等开出旗子暗记和晶闸管触发等掌握旗子暗记反馈到CCS,CCSLink再读取这些旗子暗记给开出模块和掌握主电路。

4.3 联合仿真结果

图6为DSP发送给A相晶闸管触发脉冲与A相电压的波形图。
当稠浊式固态开关开通信号发出后,a触发脉冲急速发出,从图中可见开通脉冲在相电压靠近零值时给出,这就避免了合闸涌流,a脉冲一贯持续到旁路断路器可靠闭合旗子暗记发出为止。
当稠浊式固态开关关闭旗子暗记发出后,b触发脉冲立即发出,持续到旁路断路器可靠断开旗子暗记发出为止,此后晶闸管在电流过零时自然关断。
B、C相事理同A相。

图7为稠浊式固态开关启动时A、B、C三相电流波形,从图中可看出三相电流均从靠近零值开始变革,证明了开通时无涌流。

图8为稠浊式固态开关关断时A、B、C三相电流波形,从图中可看出三相均在电流过零时自然关断。

5 结论

本文针对在传统电力电子掌握系统开拓过程中,仿真与掌握算法的实现存在无交互性、开拓效率拙劣等问题,提出了基于CCS与MATLAB/Simulink联合仿真的思想,先容告终合仿真的基本事理,并给出告终合仿真平台的构建方法和联合仿真实现的方法。
着重先容了CCS IDE脚本文件编写与基于Level_2的S-Functon函数编写的关键步骤。
末了通过稠浊式固态开关在联合仿真下的研究,验证告终合仿真思想、仿真平台的构建及实现方法的精确性。
也证明告终合仿真可提高掌握算法开拓效率,在电力电子掌握系统等领域具有较高的实用代价。

参考文献

[1] YUAN S,SHEN Z.The design of MATLAB-DSP development environment for control system[C].Digital Manufacturing and Automation(ICDMA),2012 Third International Conference on.IEEE,2012:903-906.

[2] 齐鑫,秦永元,朱新颖,等.基于MATLAB/Simulink的捷联惯性导航系统仿真[J].打算机丈量与掌握,2008,16(8):1161-1163.

[3] 李谨,邓卫华.AMESim与MATLAB/Simulink联合仿真技能及运用[J].情报指挥掌握系统与仿真技能,2004,26(5):61-64.

[4] 段国强,陈月云.MATLAB赞助DSP设计的研究与实现[J].微打算机信息,2007,23(7-2):130-132.

[5] 冷斌,李学勇,刘建华.一种基于MATLAB的DSP调试及直接代码天生方法[J].当代电子技能,2008,31(20):68-70.

[6] HEIBERGER R M,BECKER R A.Design of an S function for robust regression using iteratively reweighted least squares[J].Journal of Computational and Graphical Statistics,1992,1(3):181-196.

[7] CHENG H D,CHEN Y H,SUN Y.A novel fuzzy entropy approach to image enhancement and thresholding[J].Signal Processing,1999,75(3):277-301.

[8] 王松岑,汤广福,于坤山,等.新型中压固态切换开关的研究[J].电网技能,2006,30(S2):311-315.

标签:

相关文章