利用S-Function实现传递函数_第1页
利用S-Function实现传递函数_第2页
利用S-Function实现传递函数_第3页
利用S-Function实现传递函数_第4页
利用S-Function实现传递函数_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Byali2016-5-3利用S-Function实现传递函数利用S-Function实现传递函数1.引言1.1、MATLAB函数命令介绍2.1.1 MATLABtf函数命令:2.1.2 MATLABss函数命令:2.1.3 MATLABtf2ss函数命令:2.2、实例仿真3.2.1 假设工业过程某传递函数:3.2.2 修改S-Function模板参数:4.2.3 仿真结果1.0引言自然界大多数的过程都可以看做是一个系统,一般来说系统都会有输入和输出,而传递函数就是输入到输出的一个转换方式,比如,对于一个罐体来说,流量是输入,液位是输出,则从流量转换到Byali2016-5-3液位的过程就是传

2、递函数的本质,可以通过求解方程式,来确定传递函数的数学形式,也可以通过实验法来辨识这个数学模型。S-Function的功能就不多说了,总之,其功能之强大,属MATLAB/Simulink开发者必学之内容。这篇短文讲述的就是如何利用S-Function实现传递函数:我们知道S-Function有自己的模板,而我们要做的就是更改模板代码中的某些参数就行了,考虑到这些参数和状态方程的关系密切,因此,本文的思路就是首先将传递函数转为系统状态方程,然后再对参数进行修改。1、MATLAB函数命令介绍1.1 MATLABtf函数命令:建立传递函数:例1:s=tf('s');H=s/(sA2+

3、2*s+10);例2:h=tf(10,1210);1.2 MATLABss函数命令:建立状态空间模型连续模型:sys=ss(a,b,c,d)createsastate-spacemodelobjectrepresentingthecontinuous-timestate-spacemodelx=Ax+Bhj=Cx+ForamodelwithNxstates,Nyoutputs,andNuinputs:aisanNx-by-Nxreal-orcomplex-valuedmatrix.bisanNx-by-Nureal-orcomplex-valuedmatrix.cisanNy-by-Nxrea

4、l-orcomplex-valuedmatrix.disanNy-by-Nureal-orcomplex-valuedmatrix.TosetD=0,setdtothescalar0(zero),regardlessofthedimension.离散模型:sys=ss(a,b,c,d,Ts)createsthediscrete-timemodel+1|=Ax凡+Bun+-ZhinwithsampletimeTs(inseconds).SetTs=-1orTs=toleavethesampletimeunspecified.1.3 MATLABtf2ss函数命令:将传递函数模型转化为状态空间模型

5、,单输入单输出系统转换如下:-誓-生:七&Cisf-D4因的产一+次的Ht0怙利用该命令不仅可以转换SISO系统也可以转换MIMO系统,如下MISO系统也可以:2s+J+2sJ+0.45+1Byali2016-5-3den=023;121;num=10.41;A,B,C,D=tf2ss(den,num)结果:A=-0.4000-1.00001.00000B=10C=2.00003.00001.60000D=012、实例仿真2.1假设工业过程某传递函数:L5s2+5S+1den=1.5;num=151;A,B,C,D=tf2ss(den,num)结果:a=x1x2x1-5-1x210b=

6、u1x11x20c=x1x2y101.5u1%0SIZES,X0,STR,TSInitialization,returnsystemsizesinSYS,%initialstateinX0,stateorderingstrings%inSTR,andsampletimesinTS.%1DXReturncontinuousstatederivativesinSYS.%2DSUpdatediscretestatesSYS=X(n+1)%3YReturnoutputsinSYS.%4TNEXTReturnnexttimehitforvariablestepsample%timeinSYS.%5Res

7、ervedforfuture(rootfinding).%9Termination,performanycleanupSYS=.y10所以有:2.2修改S-Function模板参数:从结果可以看出,系统有两个状态,没有离散状态,输入1个,输出1种采用时间,打开模板,复制代码。functionsys,x0,str,ts,simStateCompliance=sfuntmpl(t,x,u,flag)函数名:sfuntmpl】%SFUNTMPLGeneralMATLABS-FunctionTemplate%WithMATLABS-functions,youcandefineyouownordinar

8、ydifferential%equations(ODEs),discretesystemequations,and/orjustabout%anytypeofalgorithmtobeusedwithinaSimulinkblockdiagram.%ThegeneralformofanMATLABS-functionsyntaxis:%SYS,X0,STR,TS,SIMSTATECOMPLIANCE=SFUNC(T,X,U,FLAG,P1,,Pn)%WhatisreturnedbySFUNCatagivenpointintime,T,dependsonthe%valueoftheFLAG,th

9、ecurrentstatevector,X,andthecurrent%inputvector,U.%FLAGRESULTDESCRIPTIONByali2016-5-3个,无直通反馈,-【一个主函数,需修改原%Thestatevectors,XandX0consistsofcontinuousstatesfollowed%bydiscretestates.%Optionalparameters,P1,PncanbeprovidedtotheS-functionand%usedduringanyFLAGoperation.%WhenSFUNCiscalledwithFLAG=0,thefoll

10、owinginformationByali2016-5-3%shouldbereturned:%SYS(1)=Numberofcontinuousstates.%SYS(2)=Numberofdiscretestates.%SYS(3)=Numberofoutputs.%SYS(4)=Numberofinputs.%AnyofthefirstfourelementsinSYScanbespecified%as-1indicatingthattheyaredynamicallysized.The%actuallengthforallotherflagswillbeequaltothe%lengt

11、hoftheinput,U.%SYS(5)=Reservedforrootfinding.Mustbezero.%SYS(6)=Directfeedthroughflag(1=yes,0=no).Thes-function%hasdirectfeedthroughifUisusedduringtheFLAG=3%call.Settingthisto0isakintomakingapromisethat%UwillnotbeusedduringFLAG=3.Ifyoubreakthepromise%thenunpredictableresultswilloccur.%SYS(7)=Numbero

12、fsampletimes.ThisisthenumberofrowsinTS.%X0=Initialstateconditionsorifnostates.%STR=Stateorderingstringswhichisgenerallyspecifiedas.%TS=Anm-by-2matrixcontainingthesampletime%(period,offset)information.Wherem=numberofsample%times.Theorderingofthesampletimesmustbe:%TS=00,:Continuoussampletime.%01,:Cont

13、inuous,butfixedinminorstep%sampletime.%PERIODOFFSET,:Discretesampletimewhere%PERIOD>0&OFFSET<PERIOD.%-20;:Variablestepdiscretesampletime%whereFLAG=4isusedtogettimeof%nexthit.%Therecanbemorethanonesampletimeproviding%theyareorderedsuchthattheyaremonotonically%increasing.Onlytheneededsamplet

14、imesshouldbe%specifiedinTS.Whenspecifyingmorethanone%sampletime,youmustcheckforsamplehitsexplicitlyby%seeingif%abs(round(T-OFFSET)/PERIOD)-(T-OFFSET)/PERIOD)%iswithinaspecifiedtolerance,generally1e-8.This%toleranceisdependentuponyourmodel'ssamplingtimesByali2016-5-3%andsimulationtime.%Youcanalso

15、specifythatthesampletimeoftheS-function%isinheritedfromthedrivingblock.Forfunctionswhich%changeduringminorsteps,thisisdoneby%specifyingSYS=1andTS=-10.Forfunctionswhich%areheldduringminorsteps,thisisdonebyspecifying%SYS(7)=1andTS=-11.%SIMSTATECOMPLIANCE=Specificeshowtohandlethisblockwhensavingand%res

16、toringthecompletesimulationstateofthe%model.Theallowedvaluesare:'DefaultSimState',%'HasNoSimState'or'DisallowSimState'.Ifthisvalue%isnotspeficified,thentheblock'scompliancewith%simStatefeatureissetto'UknownSimState'.%Copyright1990-2010TheMathWorks,Inc.%$Revision:1

17、.18.2.5$%ThefollowingoutlinesthegeneralstructureofanS-function.%switchflag,%Initialization%case0,sys,x0,str,ts,simStateCompliance=mdlInitializeSizes;%Derivatives%case 1,sys=mdlDerivatives(t,x,u);%Update%case 2, sys=mdlUpdate(t,x,u);%Outputs%Byali2016-5-3%case 3, sys=mdlOutputs(t,x,u);%GetTimeOfNextV

18、arHit%case 4,sys=mdlGetTimeOfNextVarHit(t,x,u);%Terminate%case9,sys=mdlTerminate(t,x,u);%Unexpectedflags%otherwiseDAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag);end%endsfuntmpl%=%mdllnitializeSizes%Returnthesizes,initialconditions,andsampletimesfortheS-function.%=%functionsys,x

19、0,str,ts,simStateCompliance=mdlInitializeSizes%callsimsizesforasizesstructure,f川itinandconvertittoa%sizesarray.%Notethatinthisexample,thevaluesarehardcoded.Thisisnota%recommendedpracticeasthecharacteristicsoftheblockaretypically%definedbytheS-functionparameters.%sizes=simsizes;【不要更改】sizes.NumContSta

20、tes=2;【包括x1和x2两个连续状态】Byali2016-5-3sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=1;sizes.DirFeedthrough=0;sizes.NumSampleTimes=1;多个】【一个采用周期时间,可有【无离散状态】【一个输入u】y】【y和u无关】%atleastonesampletimeisneededsys=simsizes(sizes);【不要更改】%initializetheinitialconditions%x0=0;0;【初始状态均为0】%strisalwaysanemptym

21、atrix%str=;系统预留参数,不要更改】%initializethearrayofsampletimes%ts=00;【采样时间和偏移量,都为0说明为连续无偏移】%SpecifytheblocksimStateCompliance.Theallowedvaluesare:%'UnknownSimState',<Thedefaultsetting;warnandassumeDefaultSimState%'DefaultSimState',<Samesimstateasabuilt-inblock%'HasNoSimState',

22、<Nosimstate%'DisallowSimState'<ErroroutwhensavingorrestoringthemodelsimstatesimStateCompliance='UnknownSimState'%endmdlInitializeSizes%=%mdlDerivatives%Returnthederivativesforthecontinuousstates.%=%functionsys=mdlDerivatives(t,x,u)【求导,输出为状态x的导数】sys=-5-1;10*x+1;0*u;%endmdlDerivativesByali2016-5-3%=%mdlUpdate%Handlediscretestateupdates,sampletimehits,andmajortimestep%requirements.%=%functionsys=mdlUpdate(t,x,u)【离散情况下的x(n+1)】sys二口;%endmdlUpdate%=%mdlOutputs%Returntheblockoutput

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论