function [sys,x0,str,ts] = semitrailer(t,x,u,flag) switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes(); case 1, sys=mdlDerivatives(t,x,u); case 3, sys=mdlOutputs(t,x,u); case {2,4,9}, sys=[]; otherwise error(['Unhandled flag=', num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes() sizes = simsizes; sizes.NumContStates = 4; sizes.NumDiscStates = 0; sizes.NumOutputs = 4; sizes.NumInputs = 1; sizes.DirFeedthrough = 0; sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 =[0 0 0 0]; str = []; ts = [0 0]; A=[ 0 0 1225900000 0 0 0 585900000 0 0 0 -77700000 0 0 0 0 0]; B=[89.8870 27.0807 -0.3362 0]; C=[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]; D=[0 0 0 0]; function sys=mdlDerivatives(t,x,u,A,B,C,D) sys =A*x+B*u; function sys=mdlOutputs(t,x,u,A,B,C,D) sys = C*x+D*u; function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; sys = t + sampleTime; function sys=mdlTerminate(t,x,u) sys = []; |
1 条回复