function [ret,x0,str,ts,xts]=dbm01(t,x,u,flag); %DBM01 is the M-file description of the SIMULINK system named DBM01. % The block-diagram can be displayed by typing: DBM01. % % SYS=DBM01(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 DBM01 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 DBM01 with a FLAG of zero: % [SIZES]=DBM01([],[],[],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 % SIZES(5) number of roots (currently unsupported) % SIZES(6) direct feedthrough flag % SIZES(7) number of sample times % % 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.3) if (0 == (nargin + nargout)) set_param(sys,'Location',[504,42,788,560]) open_system(sys) end; set_param(sys,'algorithm', 'Euler') set_param(sys,'Start time', '0.0') set_param(sys,'Stop time', '1') set_param(sys,'Min step size', '0.0001') set_param(sys,'Max step size', '0.0001') set_param(sys,'Relative error','1e-5') set_param(sys,'Return vars', '') add_block('built-in/Sum',[sys,'/','Sum']) set_param([sys,'/','Sum'],... 'inputs','-+',... 'position',[255,455,275,475]) add_block('built-in/Integrator',[sys,'/',['W',13,'[rad//s]',13,'']]) set_param([sys,'/',['W',13,'[rad//s]',13,'']],... 'position',[345,455,365,475]) add_block('built-in/Integrator',[sys,'/',['Position',13,'[rad]']]) set_param([sys,'/',['Position',13,'[rad]']],... 'position',[400,455,420,475]) add_block('built-in/Gain',[sys,'/',['Resolver',13,'pole pairs',13,'p=NP//2']]) set_param([sys,'/',['Resolver',13,'pole pairs',13,'p=NP//2']],... 'Gain','4',... 'position',[355,557,380,583]) add_block('built-in/Gain',[sys,'/','1//2pi']) set_param([sys,'/','1//2pi'],... 'Gain','1/6.283',... 'position',[295,557,320,583]) add_block('built-in/Note',[sys,'/',['Mech',13,'turns']]) set_param([sys,'/',['Mech',13,'turns']],... 'position',[330,525,335,530]) add_block('built-in/Note',[sys,'/',['Elect',13,'turns']]) set_param([sys,'/',['Elect',13,'turns']],... 'position',[405,525,410,530]) add_block('built-in/S-Function',[sys,'/',['R//D ',13,'Resolution',13,'(12-bit)']]) set_param([sys,'/',['R//D ',13,'Resolution',13,'(12-bit)']],... 'function name','quantize',... 'parameters','q',... 'Mask Display','plot([-4,4],[0,0],[0,0],[-4,4],[-3,-2,-2,-1,-1,0,0,1,1,2,2,3,3,4]-0.5,[-3,-3,-2,-2,-1,-1,0,0,1,1,2,2,3,3])') set_param([sys,'/',['R//D ',13,'Resolution',13,'(12-bit)']],... 'Mask Type','Quantizer',... 'Mask Dialogue','Discretizes input at given interval.|Quantization interval:',... 'Mask Translate','q = @1;') set_param([sys,'/',['R//D ',13,'Resolution',13,'(12-bit)']],... 'Mask Help','Quantizes input in given intervals. ',... 'Mask Entries','0.00024414\/',... 'position',[425,557,455,583]) add_block('built-in/Gain',[sys,'/',['1//J',13,' [kgm2]']]) set_param([sys,'/',['1//J',13,' [kgm2]']],... 'Gain','1000',... 'position',[290,452,315,478]) add_block('built-in/Gain',[sys,'/',['2^16',13,'R//D Regs',13,'length',13,'']]) set_param([sys,'/',['2^16',13,'R//D Regs',13,'length',13,'']],... 'Gain','65536',... 'position',[500,557,525,583]) add_block('built-in/Unit Delay',[sys,'/','Unit Delay']) set_param([sys,'/','Unit Delay'],... 'Sample time','0.0003',... 'position',[575,547,625,563]) add_block('built-in/Sum',[sys,'/','d']) set_param([sys,'/','d'],... 'inputs','+-',... 'position',[590,475,610,495]) add_block('built-in/Zero-Order Hold',[sys,'/',['16-bit DSP',13,'ACTPOS1',13,'position ']]) set_param([sys,'/',['16-bit DSP',13,'ACTPOS1',13,'position ']],... 'Sample time','0.0003',... 'position',[510,464,545,496]) add_block('built-in/Gain',[sys,'/','VACT01']) set_param([sys,'/','VACT01'],... 'Gain','4',... 'position',[625,472,650,498]) add_block('built-in/Note',[sys,'/',['rough',13,'speed',13,'feedback',13,'']]) set_param([sys,'/',['rough',13,'speed',13,'feedback',13,'']],... 'position',[665,510,670,515]) add_block('built-in/Filter',[sys,'/','Filter']) set_param([sys,'/','Filter'],... 'Numerator','[0.5]',... 'Denominator','[1 -0.5]',... 'Sample time','0.0003',... 'position',[675,466,735,504]) add_block('built-in/Note',[sys,'/',['filtered',13,'speed',13,'feedback',13,'']]) set_param([sys,'/',['filtered',13,'speed',13,'feedback',13,'']],... 'position',[745,510,750,515]) % Subsystem ['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']. new_system([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],'Location',[272,165,909,406]) add_block('built-in/Outport',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/out_1']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/out_1']],... 'hide name',0,... 'position',[590,105,610,125]) add_block('built-in/Constant',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Constant1']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Constant1']],... 'Value','stt',... 'position',[295,149,320,171]) add_block('built-in/Clock',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Clock1']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Clock1']],... 'hide name',0,... 'position',[295,100,315,120]) add_block('built-in/Product',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Product']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Product']],... 'hide name',0,... 'position',[470,105,495,125]) add_block('built-in/Gain',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Gain']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Gain']],... 'hide name',0,... 'Gain','ht',... 'position',[540,102,565,128]) add_block('built-in/Relational Operator',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Relational',13,'operator']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Relational',13,'operator']],... 'hide name',0,... 'position',[370,102,400,133]) add_block('built-in/Sum',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Sum1']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Sum1']],... 'hide name',0,... 'inputs','+-',... 'position',[130,120,150,140]) add_block('built-in/Sum',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Sum']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Sum']],... 'hide name',0,... 'inputs','+-',... 'position',[135,35,155,55]) add_block('built-in/Sum',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Sum2']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Sum2']],... 'hide name',0,... 'inputs','+-',... 'position',[300,40,320,60]) add_block('built-in/Saturation',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Saturation']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Saturation']],... 'Lower Limit','0',... 'Upper Limit','1',... 'position',[365,40,390,60]) add_block('built-in/Constant',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Constant']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Constant']],... 'position',[25,30,45,50]) add_block('built-in/Gain',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Gain1']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Gain1']],... 'Gain','g',... 'position',[235,122,255,138]) add_block('built-in/Unit Delay',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Unit Delay']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Unit Delay']],... 'orientation',2,... 'Sample time','[Ts/2,st1]',... 'position',[145,75,195,95]) add_block('built-in/Unit Delay',[sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Unit Delay1']]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]/Unit Delay1']],... 'orientation',2,... 'Sample time','[Ts/2,st2]',... 'x0','ini',... 'position',[140,165,190,185]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[395,50;430,50;430,110;465,110]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[325,160;345,160;345,125;365,125]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[570,115;585,115]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[500,115;535,115]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[405,120;465,120]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[320,110;365,110]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[140,85;105,85;105,50;130,50]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[160,45;230,45;230,85;200,85]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[50,40;130,40]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[155,130;210,130;210,175;195,175]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[135,175;100,175;100,135;125,135]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[50,40;70,40;70,125;125,125]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[160,45;295,45]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[325,50;360,50]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[155,130;230,130]) add_line([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],[260,130;275,130;275,55;295,55]) set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],... 'Mask Display','plot(0,0,100,100,[90,75,75,60,60,35,35,20,20,10],[20,20,80,80,20,20,80,80,20,20])') set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],... 'Mask Type','Pulse Generator') set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],... 'Mask Dialogue','Pulse Generator.|Pulse period (secs):|Pulse width:|Pulse height:|Pulse start time:') set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],... 'Mask Translate','Ts=@1; du=@2; ht=@3; stt=@4; g=1; ini=ones(length(@3),1); if (Ts<2*du), g=-1; du=du-Ts/2; ini=zeros(length(@3),1); end; st1=rem(stt,Ts); st2=rem(stt+du,Ts);') set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],... 'Mask Help','Pulse generator which ensures pulse\ntransitions are hit. Provides a vector of pulses when the height is entered as a vector.\nUnmask to see how it works.') set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],... 'Mask Entries','0.25\/0.125\/250\/0\/') % Finished composite block ['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']. set_param([sys,'/',['Speed reference',13,'REF = 0.655 *',13,'* NP * nref[rpm]',13,'or 6.258 * NP *',13,'* Wref [rad//s]']],... 'position',[665,592,700,628]) add_block('built-in/Sum',[sys,'/',['Nonfilt.',13,'error']]) set_param([sys,'/',['Nonfilt.',13,'error']],... 'inputs','-+',... 'position',[800,475,820,495]) add_block('built-in/Sum',[sys,'/',['Filtered',13,'error']]) set_param([sys,'/',['Filtered',13,'error']],... 'inputs','+-',... 'position',[800,550,820,570]) add_block('built-in/Unit Delay',[sys,'/',['1//z',13,'']]) set_param([sys,'/',['1//z',13,'']],... 'Sample time','0.0003',... 'position',[835,517,885,533]) add_block('built-in/Sum',[sys,'/','Increment']) set_param([sys,'/','Increment'],... 'inputs','-+',... 'position',[905,545,925,565]) add_block('built-in/Gain',[sys,'/',['',13,'DSP',13,'internal']]) set_param([sys,'/',['',13,'DSP',13,'internal']],... 'Gain','16',... 'position',[950,542,975,568]) add_block('built-in/Gain',[sys,'/','KP GAIN']) set_param([sys,'/','KP GAIN'],... 'Gain','81.6',... 'Mask Display','81.6',... 'Mask Dialogue','eval(''slideg(0,81.6,255,0)'');',... 'position',[995,541,1045,569]) add_block('built-in/Gain',[sys,'/','KI GAIN']) set_param([sys,'/','KI GAIN'],... 'Gain','21.93',... 'Mask Display','21.93',... 'Mask Dialogue','eval(''slideg(0,21.93,255,0)'');',... 'position',[995,471,1045,499]) add_block('built-in/Note',[sys,'/',['PI Controller in incremental form',13,'']]) set_param([sys,'/',['PI Controller in incremental form',13,'']],... 'position',[905,430,910,435]) add_block('built-in/Sum',[sys,'/',['INC',13,'']]) set_param([sys,'/',['INC',13,'']],... 'position',[1065,510,1085,530]) add_block('built-in/Gain',[sys,'/',['DSP',13,'inter.']]) set_param([sys,'/',['DSP',13,'inter.']],... 'Gain','768',... 'position',[1100,507,1125,533]) add_block('built-in/Sum',[sys,'/','d1']) set_param([sys,'/','d1'],... 'position',[1150,515,1170,535]) add_block('built-in/Zero-Order Hold',[sys,'/',['OUT n',13,'']]) set_param([sys,'/',['OUT n',13,'']],... 'Sample time','0.0003',... 'position',[1185,509,1220,541]) add_block('built-in/Saturation',[sys,'/','Saturation']) set_param([sys,'/','Saturation'],... 'orientation',2,... 'Lower Limit','-2.147e9',... 'Upper Limit','2.147e9',... 'position',[1200,593,1230,617]) add_block('built-in/Unit Delay',[sys,'/',['1 // z',13,'']]) set_param([sys,'/',['1 // z',13,'']],... 'orientation',2,... 'Sample time','0.0003',... 'position',[1135,597,1185,613]) add_block('built-in/Note',[sys,'/',['Accumulated',13,'increments']]) set_param([sys,'/',['Accumulated',13,'increments']],... 'position',[1170,460,1175,465]) add_block('built-in/Gain',[sys,'/',['',13,'1.5//',13,'2^-16']]) set_param([sys,'/',['',13,'1.5//',13,'2^-16']],... 'Gain','2.288e-5',... 'position',[1265,512,1290,538]) add_block('built-in/Saturation',[sys,'/',['Saturation',13,'DAC']]) set_param([sys,'/',['Saturation',13,'DAC']],... 'Lower Limit','-32768',... 'Upper Limit','32768',... 'position',[1310,513,1340,537]) add_block('built-in/Filter',[sys,'/',['Torque ',13,'filter 1']]) set_param([sys,'/',['Torque ',13,'filter 1']],... 'Numerator','[0.5]',... 'Denominator','[1 -0.5]',... 'Sample time','0.0003',... 'position',[1360,506,1420,544]) add_block('built-in/Filter',[sys,'/',['Torque ',13,'filter 2']]) set_param([sys,'/',['Torque ',13,'filter 2']],... 'Numerator','[0.25]',... 'Denominator','[1 -0.75]',... 'Sample time','0.0003',... 'position',[1440,506,1500,544]) add_block('built-in/Gain',[sys,'/',['Relative',13,'torque ',13,'(MAX = 1)']]) set_param([sys,'/',['Relative',13,'torque ',13,'(MAX = 1)']],... 'Gain','3.051e-5',... 'position',[1520,512,1545,538]) add_block('built-in/Gain',[sys,'/',['Gain =',13,'MAXIMUM',13,'torque',13,'in [Nm]']]) set_param([sys,'/',['Gain =',13,'MAXIMUM',13,'torque',13,'in [Nm]']],... 'Gain','10',... 'position',[1585,512,1610,538]) add_block('built-in/Constant',[sys,'/',['Load ',13,'torque']]) set_param([sys,'/',['Load ',13,'torque']],... 'Value','0',... 'position',[180,415,200,435]) add_block('built-in/Note',[sys,'/',['HERE A TRANSFER FUNCTION SIMULATING CURRENT LOOP DELAY MAY BE ENTERED',13,'']]) set_param([sys,'/',['HERE A TRANSFER FUNCTION SIMULATING CURRENT LOOP DELAY MAY BE ENTERED',13,'']],... 'position',[980,720,985,725]) add_block('built-in/Note',[sys,'/',['Here R//D 4th order tf',13,'may be entered',13,'']]) set_param([sys,'/',['Here R//D 4th order tf',13,'may be entered',13,'']],... 'position',[450,410,455,415]) add_block('built-in/Scope',[sys,'/','Scope']) set_param([sys,'/','Scope'],... 'Vgain','10.000000',... 'Hgain','1.000000',... 'Vmax','20.000000',... 'Hmax','2.000000',... 'Window',[-5,15,481,574]) open_system([sys,'/','Scope']) set_param([sys,'/','Scope'],... 'position',[340,360,370,390]) add_line(sys,[280,465;285,465]) add_line(sys,[320,465;340,465]) add_line(sys,[370,465;395,465]) add_line(sys,[425,465;455,465;455,520;280,520;290,570]) add_line(sys,[325,570;350,570]) add_line(sys,[385,570;420,570]) add_line(sys,[460,570;495,570]) add_line(sys,[530,570;545,570;545,550;490,550;490,480;505,480]) add_line(sys,[550,480;585,480]) add_line(sys,[550,480;560,480;570,555]) add_line(sys,[630,555;630,525;570,525;570,490;585,490]) add_line(sys,[615,485;620,485]) add_line(sys,[655,485;670,485]) add_line(sys,[705,610;785,610;785,555;795,555]) add_line(sys,[655,485;655,450;785,450;795,480]) add_line(sys,[705,610;785,610;785,490;795,490]) add_line(sys,[740,485;775,485;775,565;795,565]) add_line(sys,[825,560;835,560;835,545;820,545;820,525;830,525]) add_line(sys,[890,525;900,550]) add_line(sys,[825,560;900,560]) add_line(sys,[930,555;945,555]) add_line(sys,[980,555;990,555]) add_line(sys,[825,485;990,485]) add_line(sys,[1050,485;1050,485;1050,515;1060,515]) add_line(sys,[1050,555;1050,555;1050,525;1060,525]) add_line(sys,[1090,520;1095,520]) add_line(sys,[1130,520;1145,520]) add_line(sys,[1175,525;1180,525]) add_line(sys,[1195,605;1190,605]) add_line(sys,[1130,605;1115,605;1115,585;1135,585;1135,530;1145,530]) add_line(sys,[1225,525;1245,525;1245,605;1235,605]) add_line(sys,[1225,525;1260,525]) add_line(sys,[1295,525;1305,525]) add_line(sys,[1345,525;1355,525]) add_line(sys,[1425,525;1435,525]) add_line(sys,[1505,525;1515,525]) add_line(sys,[1550,525;1580,525]) add_line(sys,[205,425;210,430;220,440;220,440;225,445;235,455;250,460]) add_line(sys,[1615,525;1655,525;1655,720;1085,720;630,720;295,720;230,720;230,470;250,470]) add_line(sys,[370,465;380,465;380,440;320,440;320,375;335,375]) drawnow % 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,ts,xts]=',sys,'(t,x,u,flag);']) else eval(['ret =', sys,'(t,x,u,flag);']) end else [ret,x0,str,ts,xts] = feval(sys); end else drawnow % Flash up the model and execute load callback end