📄 pensim_s.m
字号:
% Subsystem ['Limited ',13,'Integrator'].new_system([sys,'/',['Limited ',13,'Integrator']])set_param([sys,'/',['Limited ',13,'Integrator']],'Location',[0,0,791,233])add_block('built-in/Saturation',[sys,'/',['Limited ',13,'Integrator/Saturation']])set_param([sys,'/',['Limited ',13,'Integrator/Saturation']],... 'Lower Limit','lb',... 'Upper Limit','ub',... 'position',[630,121,675,149])add_block('built-in/Fcn',[sys,'/',['Limited ',13,'Integrator/Fcn']])set_param([sys,'/',['Limited ',13,'Integrator/Fcn']],... 'Expr','u[2]*((((u[1]>lb)+(u[2]>=0))>0) * (((u[1]<ub)+(u[2]<=0))>0))',... 'position',[150,116,520,154])add_block('built-in/Inport',[sys,'/',['Limited ',13,'Integrator/In_1']])set_param([sys,'/',['Limited ',13,'Integrator/In_1']],... 'position',[20,130,40,150])add_block('built-in/Outport',[sys,'/',['Limited ',13,'Integrator/Out_1']])set_param([sys,'/',['Limited ',13,'Integrator/Out_1']],... 'position',[720,125,740,145])add_block('built-in/Integrator',[sys,'/',['Limited ',13,'Integrator/Integrator']])set_param([sys,'/',['Limited ',13,'Integrator/Integrator']],... 'Initial','xi',... 'position',[540,126,585,144])add_block('built-in/Mux',[sys,'/',['Limited ',13,'Integrator/Mux']])set_param([sys,'/',['Limited ',13,'Integrator/Mux']],... 'inputs','2',... 'position',[85,116,115,149])add_line([sys,'/',['Limited ',13,'Integrator']],[680,135;710,135])add_line([sys,'/',['Limited ',13,'Integrator']],[45,140;75,140])add_line([sys,'/',['Limited ',13,'Integrator']],[120,135;140,135])add_line([sys,'/',['Limited ',13,'Integrator']],[525,135;530,135])add_line([sys,'/',['Limited ',13,'Integrator']],[590,135;620,135])add_line([sys,'/',['Limited ',13,'Integrator']],[600,135;600,35;55,35;55,125;75,125])set_param([sys,'/',['Limited ',13,'Integrator']],... 'Mask Display','plot(-1,-0.2,3.5,1.2,[0.05,1,2,2.9],[0,0,1,1]); 1/s ',... 'Mask Type','Limited integrator.')set_param([sys,'/',['Limited ',13,'Integrator']],... 'Mask Dialogue','Limited integrator|Lower bound:|Upper bound:|Initial condition',... 'Mask Translate','lb = @1; ub = @2; xi = @3;')set_param([sys,'/',['Limited ',13,'Integrator']],... 'Mask Help','Implements a limited integrator with \nan expression of the form:\n\nif(x<=lb and u<0) or (x>=ub and u>0)\n\txdot=0\nelse\n\txdot=u.',... 'Mask Entries','-5\/5\/0\/')% Finished composite block ['Limited ',13,'Integrator'].set_param([sys,'/',['Limited ',13,'Integrator']],... 'position',[250,148,285,182])add_block('built-in/Sum',[sys,'/','Sum2'])set_param([sys,'/','Sum2'],... 'hide name',0,... 'inputs','-+',... 'position',[140,155,160,175])add_block('built-in/Gain',[sys,'/',['Integral',13,'gain']])set_param([sys,'/',['Integral',13,'gain']],... 'Gain','0.06',... 'position',[185,147,230,183])% Subsystem 'More Info'.new_system([sys,'/','More Info'])set_param([sys,'/','More Info'],'Location',[233,85,693,328])add_block('built-in/Note',[sys,'/',['More Info/This system simulates a cart carying an inverted pendulum',13,'and displays an animation.']])set_param([sys,'/',['More Info/This system simulates a cart carying an inverted pendulum',13,'and displays an animation.']],... 'position',[205,30,206,31])add_block('built-in/Note',[sys,'/',['More Info/The animation is created using Matlab''s Handle Graphics.',13,'The animation block is just a masked S-function.']])set_param([sys,'/',['More Info/The animation is created using Matlab''s Handle Graphics.',13,'The animation block is just a masked S-function.']],... 'position',[205,80,206,81])add_block('built-in/Note',[sys,'/',['More Info/For more information on what the S_function does,',13,'use type pendan.c, type pend0, and type pendsets.']])set_param([sys,'/',['More Info/For more information on what the S_function does,',13,'use type pendan.c, type pend0, and type pendsets.']],... 'position',[200,155,201,156])set_param([sys,'/','More Info'],... 'Mask Display','?')% Finished composite block 'More Info'.set_param([sys,'/','More Info'],... 'hide name',0,... 'Drop Shadow',4,... 'position',[430,20,457,45])add_block('built-in/Gain',[sys,'/','Proportional gain'])set_param([sys,'/','Proportional gain'],... 'Gain','-9.4',... 'position',[200,92,245,128])add_block('built-in/Transfer Fcn',[sys,'/','Feedforward gain'])set_param([sys,'/','Feedforward gain'],... 'Numerator','[7.12 0]',... 'Denominator','[1 2]',... 'position',[190,217,245,253])add_block('built-in/Mux',[sys,'/','Mux'])set_param([sys,'/','Mux'],... 'inputs','3',... 'position',[550,64,580,96])add_block('built-in/To Workspace',[sys,'/','To Workspace1'])set_param([sys,'/','To Workspace1'],... 'mat-name','t',... 'position',[655,137,705,153])add_block('built-in/Clock',[sys,'/','Clock'])set_param([sys,'/','Clock'],... 'position',[600,135,620,155])add_block('built-in/To Workspace',[sys,'/','To Workspace'])set_param([sys,'/','To Workspace'],... 'mat-name','y',... 'position',[655,70,710,90])add_block('built-in/Saturation',[sys,'/','Saturation'])set_param([sys,'/','Saturation'],... 'hide name',0,... 'Lower Limit','-10',... 'Upper Limit','10',... 'position',[405,160,430,180])add_block('built-in/Sum',[sys,'/','Sum1'])set_param([sys,'/','Sum1'],... 'inputs','+++',... 'position',[305,139,325,191])add_block('built-in/Sum',[sys,'/','Sum'])set_param([sys,'/','Sum'],... 'inputs','+-',... 'position',[365,143,385,192])add_block('built-in/Note',[sys,'/',['Start simulation to simulate system .',13,'',13,'']])set_param([sys,'/',['Start simulation to simulate system .',13,'',13,'']],... 'position',[400,340,401,341])add_block('built-in/Step Fcn',[sys,'/','Step Fcn'])set_param([sys,'/','Step Fcn'],... 'Time','0',... 'After','-8',... 'position',[305,90,325,110])add_block('built-in/Derivative',[sys,'/','Derivative'])set_param([sys,'/','Derivative'],... 'position',[685,285,715,305])% Subsystem 'Graph Scope'.new_system([sys,'/','Graph Scope'])set_param([sys,'/','Graph Scope'],'Location',[0,0,274,193])add_block('built-in/Inport',[sys,'/','Graph Scope/x'])set_param([sys,'/','Graph Scope/x'],... 'position',[65,55,85,75])add_block('built-in/S-function',[sys,'/',['Graph Scope/S-function',13,'M-file which plots',13,'lines',13,'']])set_param([sys,'/',['Graph Scope/S-function',13,'M-file which plots',13,'lines',13,'']],... 'function name','sfuny',... 'parameters','ax, color',... 'position',[130,55,180,75])add_line([sys,'/','Graph Scope'],[90,65;120,65])set_param([sys,'/','Graph Scope'],... 'Mask Display','plot(0,0,100,100,[90,10,10,10,90,90,10],[65,65,90,40,40,90,90],[90,78,69,54,40,31,25,10],[77,60,48,46,56,75,81,84])',... 'Mask Type','Graph scope.')set_param([sys,'/','Graph Scope'],... 'Mask Dialogue','Graph scope using MATLAB graph window.\nEnter plotting ranges and line type.|Time range:|y-min:|y-max:|Line type (rgbw-:*):',... 'Mask Translate','color = @4; ax = [0, @1, @2, @3];')set_param([sys,'/','Graph Scope'],... 'Mask Help','This block plots to the MATLAB graph window and can be used as an improved version of the Scope block. Look at the m-file sfuny.m to see how it works.',... 'Mask Entries','20\/-10\/10\/''y-''\/')% Finished composite block 'Graph Scope'.set_param([sys,'/','Graph Scope'],... 'Drop Shadow',4,... 'position',[585,276,615,314])add_line(sys,[485,180;535,180;535,230;590,230])add_line(sys,[485,155;555,155;555,205;590,205])add_line(sys,[635,220;650,220])add_line(sys,[485,155;485,80;125,80;125,160;130,160])add_line(sys,[110,170;130,170])add_line(sys,[60,165;75,165])add_line(sys,[65,225;65,175;75,175])add_line(sys,[110,170;110,235;180,235])add_line(sys,[390,170;395,170])add_line(sys,[165,165;165,110;190,110])add_line(sys,[235,165;240,165])add_line(sys,[165,165;175,165])add_line(sys,[110,170;110,70;540,70])add_line(sys,[500,155;500,80;540,80])add_line(sys,[520,180;520,90;540,90])add_line(sys,[625,145;645,145])add_line(sys,[585,80;645,80])add_line(sys,[290,165;295,165])add_line(sys,[250,110;280,110;295,150])add_line(sys,[250,235;280,235;295,180])add_line(sys,[730,220;745,220;745,265;350,265;350,180;355,180])add_line(sys,[330,165;355,155])add_line(sys,[435,170;440,170])add_line(sys,[110,235;110,295;575,295])% 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 + -