📄 tr_dem_s.m
字号:
function [ret,x0,str]=tr_dem_s(t,x,u,flag);%TR_DEM_S is the M-file description of the SIMULINK system named TR_DEM_S.% The block-diagram can be displayed by typing: TR_DEM_S.%% SYS=TR_DEM_S(T,X,U,FLAG) returns depending on FLAG certain% system values given time point, T, current state vector, X,% and input vector, U.% FLAG is used to indicate the type of output to be returned in SYS.%% Setting FLAG=1 causes TR_DEM_S to return state derivatives, FLAG=2% discrete states, FLAG=3 system outputs and FLAG=4 next sample% time. For more information and other options see SFUNC.%% Calling TR_DEM_S with a FLAG of zero:% [SIZES]=TR_DEM_S([],[],[],0), returns a vector, SIZES, which% contains the sizes of the state vector and other parameters.% SIZES(1) number of states% SIZES(2) number of discrete states% SIZES(3) number of outputs% SIZES(4) number of inputs.% For the definition of other parameters in SIZES, see SFUNC.% See also, TRIM, LINMOD, LINSIM, EULER, RK23, RK45, ADAMS, GEAR.% Note: This M-file is only used for saving graphical information;% after the model is loaded into memory an internal model% representation is used.% the system will take on the name of this mfile:sys = mfilename;new_system(sys)simver(1.2)if(0 == (nargin + nargout)) set_param(sys,'Location',[4,42,628,468]) open_system(sys)end;set_param(sys,'algorithm', 'RK-45')set_param(sys,'Start time', '0.0')set_param(sys,'Stop time', '200')set_param(sys,'Min step size', '0.0001')set_param(sys,'Max step size', '0.1')set_param(sys,'Relative error','1e-3')set_param(sys,'Return vars', '')add_block('built-in/Note',[sys,'/',['Backing up a truck using a fuzzy controller. (Kong,Kosko 1992) . Fuzzy Toolbox O.Wolkenhauer 24-April 1994',13,'Before starting simulation, run tr_dat.m for specifying controller and simulation parameters !']])set_param([sys,'/',['Backing up a truck using a fuzzy controller. (Kong,Kosko 1992) . Fuzzy Toolbox O.Wolkenhauer 24-April 1994',13,'Before starting simulation, run tr_dat.m for specifying controller and simulation parameters !']],... 'position',[286,375,287,376])add_block('built-in/Note',[sys,'/',['*) Subsystem function name: FUZZY21 und Function parameters: ''tr_dem_c'',Ts=1']])set_param([sys,'/',['*) Subsystem function name: FUZZY21 und Function parameters: ''tr_dem_c'',Ts=1']],... 'position',[257,315,258,316])add_block('built-in/S-function',[sys,'/','S-function'])set_param([sys,'/','S-function'],... 'function name','fuzzy21',... 'parameters','''tr_dem_c'',1',... 'position',[145,140,205,180])add_block('built-in/Mux',[sys,'/','Mux'])set_param([sys,'/','Mux'],... 'inputs','2',... 'position',[100,140,130,175])add_block('built-in/Gain',[sys,'/','Kx'])set_param([sys,'/','Kx'],... 'position',[50,130,70,150])add_block('built-in/Gain',[sys,'/','Kphi'])set_param([sys,'/','Kphi'],... 'position',[50,180,70,200])add_block('built-in/To Workspace',[sys,'/','To Workspace1'])set_param([sys,'/','To Workspace1'],... 'mat-name','xout',... 'position',[380,82,430,98])add_block('built-in/Note',[sys,'/','*)'])set_param([sys,'/','*)'],... 'position',[170,195,171,196])% Subsystem 'Truck Simulation'.new_system([sys,'/','Truck Simulation'])set_param([sys,'/','Truck Simulation'],'Location',[4,42,628,468])add_block('built-in/Outport',[sys,'/','Truck Simulation/out_1'])set_param([sys,'/','Truck Simulation/out_1'],... 'position',[400,80,420,100])add_block('built-in/Note',[sys,'/','Truck Simulation/theta'])set_param([sys,'/','Truck Simulation/theta'],... 'position',[70,140,71,141])add_block('built-in/Inport',[sys,'/','Truck Simulation/in_1'])set_param([sys,'/','Truck Simulation/in_1'],... 'position',[20,150,40,170])add_block('built-in/Unit Delay',[sys,'/','Truck Simulation/Unit Delay4'])set_param([sys,'/','Truck Simulation/Unit Delay4'],... 'orientation',2,... 'x0','IPHI*pi/180',... 'position',[50,65,100,85])add_block('built-in/Sum',[sys,'/','Truck Simulation/Sum2'])set_param([sys,'/','Truck Simulation/Sum2'],... 'position',[105,117,125,173])add_block('built-in/Note',[sys,'/','Truck Simulation/y-position'])set_param([sys,'/','Truck Simulation/y-position'],... 'position',[350,190,351,191])add_block('built-in/Sum',[sys,'/','Truck Simulation/Sum1'])set_param([sys,'/','Truck Simulation/Sum1'],... 'position',[295,182,315,238])add_block('built-in/Fcn',[sys,'/','Truck Simulation/Fcn1'])set_param([sys,'/','Truck Simulation/Fcn1'],... 'position',[235,185,275,205])add_block('built-in/Fcn',[sys,'/','Truck Simulation/Fcn'])set_param([sys,'/','Truck Simulation/Fcn'],... 'Expr','cos(u[1])',... 'position',[240,65,280,85])add_block('built-in/Sum',[sys,'/','Truck Simulation/Sum'])set_param([sys,'/','Truck Simulation/Sum'],... 'position',[295,64,315,111])add_block('built-in/Note',[sys,'/','Truck Simulation/x-position'])set_param([sys,'/','Truck Simulation/x-position'],... 'position',[350,65,351,66])add_block('built-in/Unit Delay',[sys,'/','Truck Simulation/Unit Delay'])set_param([sys,'/','Truck Simulation/Unit Delay'],... 'orientation',2,... 'x0','IXPOS',... 'position',[270,140,320,160])add_block('built-in/Note',[sys,'/','Truck Simulation/phi'])set_param([sys,'/','Truck Simulation/phi'],... 'position',[190,135,191,136])add_block('built-in/Gain',[sys,'/','Truck Simulation/Gain'])set_param([sys,'/','Truck Simulation/Gain'],... 'position',[195,185,215,205])add_block('built-in/Gain',[sys,'/','Truck Simulation/Gain1'])set_param([sys,'/','Truck Simulation/Gain1'],... 'position',[195,65,215,85])add_block('built-in/Fcn',[sys,'/','Truck Simulation/Fcn2'])set_param([sys,'/','Truck Simulation/Fcn2'],... 'Expr','(u[1]>=100) + (u[1]<=0)',... 'position',[445,140,485,160])add_block('built-in/Stop simulation',[sys,'/',['Truck Simulation/Stop simulation',13,'if non-zero',13,'']])set_param([sys,'/',['Truck Simulation/Stop simulation',13,'if non-zero',13,'']],... 'position',[510,134,555,166])add_block('built-in/Outport',[sys,'/','Truck Simulation/out_2'])set_param([sys,'/','Truck Simulation/out_2'],... 'Port','2',... 'position',[405,200,425,220])add_block('built-in/Note',[sys,'/','Truck Simulation/initial phi'])set_param([sys,'/','Truck Simulation/initial phi'],... 'position',[75,45,76,46])add_block('built-in/Note',[sys,'/','Truck Simulation/initial x'])set_param([sys,'/','Truck Simulation/initial x'],... 'position',[295,125,296,126])add_block('built-in/Unit Delay',[sys,'/','Truck Simulation/Unit Delay3'])set_param([sys,'/','Truck Simulation/Unit Delay3'],... 'orientation',2,... 'x0','IYPOS',... 'position',[270,265,320,285])add_block('built-in/Fcn',[sys,'/','Truck Simulation/Fcn3'])set_param([sys,'/','Truck Simulation/Fcn3'],... 'Expr','(u[1]<=0) + (u[1]>=100)',... 'position',[445,265,485,285])add_block('built-in/Stop simulation',[sys,'/',['Truck Simulation/Stop simulation',13,'if non-zero',13,'1']])set_param([sys,'/',['Truck Simulation/Stop simulation',13,'if non-zero',13,'1']],... 'position',[510,259,555,291])add_block('built-in/Note',[sys,'/','Truck Simulation/initial y'])set_param([sys,'/','Truck Simulation/initial y'],... 'position',[295,250,296,251])add_block('built-in/Note',[sys,'/','Truck Simulation/speed'])set_param([sys,'/','Truck Simulation/speed'],... 'position',[205,45,206,46])add_block('built-in/Note',[sys,'/','Truck Simulation/speed '])set_param([sys,'/','Truck Simulation/speed '],... 'position',[205,165,206,166])add_block('built-in/Note',[sys,'/','Truck Simulation/Truck and dock simulation'])set_param([sys,'/','Truck Simulation/Truck and dock simulation'],... 'position',[300,15,301,16])add_block('built-in/Gain',[sys,'/','Truck Simulation/Rad -> Deg'])set_param([sys,'/','Truck Simulation/Rad -> Deg'],... 'Gain','180/pi',... 'position',[205,310,225,330])add_block('built-in/Outport',[sys,'/','Truck Simulation/out_3'])set_param([sys,'/','Truck Simulation/out_3'],... 'Port','3',... 'position',[260,310,280,330])add_line([sys,'/','Truck Simulation'],[45,75;25,75;25,130;95,130])add_line([sys,'/','Truck Simulation'],[265,275;250,275;250,225;285,225])add_line([sys,'/','Truck Simulation'],[265,150;250,150;250,100;285,100])add_line([sys,'/','Truck Simulation'],[320,90;375,90;375,150;330,150])add_line([sys,'/','Truck Simulation'],[280,195;285,195])add_line([sys,'/','Truck Simulation'],[285,75;285,75])add_line([sys,'/','Truck Simulation'],[45,160;95,160])add_line([sys,'/','Truck Simulation'],[375,90;390,90])add_line([sys,'/','Truck Simulation'],[220,75;230,75])add_line([sys,'/','Truck Simulation'],[220,195;225,195])add_line([sys,'/','Truck Simulation'],[130,145;170,145;170,75;110,75])add_line([sys,'/','Truck Simulation'],[170,75;185,75])add_line([sys,'/','Truck Simulation'],[170,145;170,195;185,195])add_line([sys,'/','Truck Simulation'],[490,150;500,150])add_line([sys,'/','Truck Simulation'],[490,275;500,275])add_line([sys,'/','Truck Simulation'],[375,150;435,150])add_line([sys,'/','Truck Simulation'],[320,210;370,210;370,275;330,275])add_line([sys,'/','Truck Simulation'],[370,210;395,210])add_line([sys,'/','Truck Simulation'],[370,275;435,275])add_line([sys,'/','Truck Simulation'],[170,195;170,320;195,320])add_line([sys,'/','Truck Simulation'],[230,320;250,320])% Finished composite block 'Truck Simulation'.set_param([sys,'/','Truck Simulation'],... 'position',[280,132,310,188])% Subsystem 'Sampled XY Graph'.new_system([sys,'/','Sampled XY Graph'])set_param([sys,'/','Sampled XY Graph'],'Location',[0,0,274,193])add_block('built-in/Inport',[sys,'/','Sampled XY Graph/y'])set_param([sys,'/','Sampled XY Graph/y'],... 'Port','2',... 'position',[10,100,30,120])add_block('built-in/Inport',[sys,'/','Sampled XY Graph/x'])set_param([sys,'/','Sampled XY Graph/x'],... 'position',[10,30,30,50])add_block('built-in/Mux',[sys,'/','Sampled XY Graph/Mux'])set_param([sys,'/','Sampled XY Graph/Mux'],... 'inputs','2',... 'position',[100,61,130,94])add_block('built-in/S-function',[sys,'/',['Sampled XY Graph/S-function',13,'M-file which plots',13,'lines',13,'']])set_param([sys,'/',['Sampled XY Graph/S-function',13,'M-file which plots',13,'lines',13,'']],... 'function name','sfunxys',... 'parameters','ax,offset,ts',... 'position',[185,67,245,93])add_line([sys,'/','Sampled XY Graph'],[35,110;70,110;70,85;90,85])add_line([sys,'/','Sampled XY Graph'],[35,40;70,40;70,70;90,70])add_line([sys,'/','Sampled XY Graph'],[135,80;175,80])set_param([sys,'/','Sampled XY Graph'],... 'Mask Display','plot(0,0,100,100,[13,91,91,13,13],[90,90,42,42,90],[40,46,53,61,67,72,71,66,58,47,38,31,33,40],[71,74,77,79,78,72,64,58,52,51,53,57,64,71])',... 'Mask Type','XY scope.')set_param([sys,'/','Sampled XY Graph'],... 'Mask Dialogue','Sampled XY scope using graph window.\nFirst input is used as time base.\nEnter plotting ranges and sample time.|x-min|x-max|y-min|y-max|Sample time')set_param([sys,'/','Sampled XY Graph'],... 'Mask Translate','ax = [@1, @2, @3, @4]; offset=0; ts=@5;')set_param([sys,'/','Sampled XY Graph'],... 'Mask Help','This block can be used to explore limit cycles. A ''o'' is printed at sample hits. Look at the m-file sfunxy.m to see how it works.',... 'Mask Entries','0\/100\/0\/100\/2\/')% Finished composite block 'Sampled XY Graph'.set_param([sys,'/','Sampled XY Graph'],... 'Drop Shadow',4,... 'position',[390,131,420,169])add_block('built-in/To Workspace',[sys,'/','To Workspace2'])set_param([sys,'/','To Workspace2'],... 'mat-name','yout',... 'position',[380,192,430,208])add_block('built-in/To Workspace',[sys,'/','To Workspace'])set_param([sys,'/','To Workspace'],... 'mat-name','t',... 'position',[380,272,430,288])add_block('built-in/Clock',[sys,'/','Clock'])set_param([sys,'/','Clock'],... 'position',[290,270,310,290])add_block('built-in/To Workspace',[sys,'/','To Workspace3'])set_param([sys,'/','To Workspace3'],... 'mat-name','phiout',... 'position',[380,232,430,248])add_block('built-in/Note',[sys,'/','Fuzzy-Controller'])set_param([sys,'/','Fuzzy-Controller'],... 'position',[171,115,172,116])add_block('built-in/To Workspace',[sys,'/','To Workspace4'])set_param([sys,'/','To Workspace4'],... 'mat-name','thetaout',... 'position',[380,42,430,58])add_block('built-in/Gain',[sys,'/','Deg -> Rad'])set_param([sys,'/','Deg -> Rad'],... 'Gain','pi/180',... 'position',[240,150,260,170])add_block('built-in/Note',[sys,'/','After a simulation using the script tr_tplot.m from the workspace, a time plot shows the controllers behavoir.'])set_param([sys,'/','After a simulation using the script tr_tplot.m from the workspace, a time plot shows the controllers behavoir.'],... 'position',[225,10,226,11])add_line(sys,[315,280;370,280])add_line(sys,[135,160;135,160])add_line(sys,[75,140;90,150])add_line(sys,[75,190;90,165])add_line(sys,[210,160;230,160])add_line(sys,[265,160;270,160])add_line(sys,[315,140;380,140])add_line(sys,[315,160;380,160])add_line(sys,[340,140;340,90;370,90])add_line(sys,[340,90;20,90;20,140;40,140])add_line(sys,[315,180;335,180;335,240;20,240;20,190;40,190])add_line(sys,[350,160;350,200;370,200])add_line(sys,[335,240;370,240])add_line(sys,[220,160;220,50;370,50])% Return any arguments.if (nargin | nargout) % Must use feval here to access system in memory if (nargin > 3) if (flag == 0) eval(['[ret,x0,str]=',sys,'(t,x,u,flag);']) else eval(['ret =', sys,'(t,x,u,flag);']) end else [ret,x0,str] = feval(sys); endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -