I am describing a dynamic system with 12 states. The error originates from the Initial conditions part , I have tried both start and Initialize conditions methods . Please explain what I am doing wrong!
note : the error message indicates error in the first line after " function start(block)
Here is my code :
if true % function dynamics2(block)
setup(block);%endfunction
function setup(block)% Register number of dialog parameters
block.NumDialogPrms = 17; % Register number of input and output ports
block.NumInputPorts = 1;block.NumOutputPorts = 1;% Setup functional port properties to dynamically be inherited.
% block.SetPreCompInpPortInfoToDynamic;
% block.SetPreCompOutPortInfoToDynamic;
block.InputPort(1).Dimensions = 6;block.InputPort(1).DirectFeedthrough = false;block.OutputPort(1).Dimensions = 12;% Set block sample time to continuous
block.SampleTimes = [0 0];% Set up the continuous states.
block.NumContStates = 12;% Set the block simStateCompliance to default (i.e., same as a built-in block)
block.SimStateCompliance = 'DefaultSimState';% Register block methods
block.RegBlockMethod('InitializeConditions', @InitializeConditions);block.RegBlockMethod('Derivatives', @Derivatives);block.RegBlockMethod('Outputs', @Outputs);block.RegBlockMethod('Terminate', @Terminate);%endfunctionfunction Start(block)block.ContStates(1).Data =block.DialogPrm(6).Data; !-------------Error-------------!block.ContStates(2).Data =block.DialogPrm(7).Data;block.ContStates(3).Data =block.DialogPrm(8).Data;block.ContStates(4).Data =block.DialogPrm(9).Data;block.ContStates(5).Data =block.DialogPrm(10).Data;block.ContStates(6).Data =block.DialogPrm(11).Data;block.ContStates(7).Data =block.DialogPrm(12).Data;block.ContStates(8).Data =block.DialogPrm(13).Data;block.ContStates(9).Data =block.DialogPrm(14).Data;block.ContStates(10).Data =block.DialogPrm(15).Data;block.ContStates(11).Data =block.DialogPrm(16).Data;block.ContStates(12).Data =block.DialogPrm(17).Data;%endfunctionfunction Derivatives(block)%-----States definition---------
Pn= block.ContStates(1).Data ;Pe= block.ContStates(2).Data ;Pd= block.ContStates(3).Data ;U= block.ContStates(4).Data ;V= block.ContStates(5).Data ;W= block.ContStates(6).Data ;phi=block.ContStates(7).Data ;thi=block.ContStates(8).Data ;psi=block.ContStates(9).Data ;P= block.ContStates(10).Data;Q= block.ContStates(11).Data ;R= block.ContStates(12).Data ;%-----Inputs definition---------
Fx=block.InputPort(1).Data;Fy=block.InputPort(2).Data;Fz=block.InputPort(3).Data;l =block.InputPort(4).Data;m =block.InputPort(5).Data;n =block.InputPort(6).Data;%-----Block parameters definition---------
M =block.DialogPrm(1).Data; Ix =block.DialogPrm(2).Data; Iy =block.DialogPrm(3).Data; Iz =block.DialogPrm(4).Data; Ixz=block.DialogPrm(5).Data; %-----Constants definition---------
G=(Ix*Iz)-(Ixz^2); G1=(Ixz*(Ix-Iy+Iz))/G; G2=((Iz*(Iz-Iy))+Ixz^2)/G; G3=Iz/G; G4=Ixz/G; G5=(Iz-Ix)/Iy; G6=Ixz/Iy; G7=((Ix*(Ix-Iy))+Ixz^2)/G; G8=Ix/G;block.Derivatives(1).Data = (cos(thi)*cos(psi)*U)+(((sin(phi)*sin(thi)*cos(psi))-...(cos(phi)*sin(psi)))*V)+(((cos(phi)*sin(thi)*cos(psi))+(sin(phi)*sin(psi)))*W);block.Derivatives(2).Data = (cos(thi)*cos(psi)*U)+(((sin(phi)*sin(thi)*sin(psi))+...(cos(phi)*cos(psi)))*V)+(((cos(phi)*sin(thi)*sin(psi))-(sin(phi)*cos(psi)))*W);block.Derivatives(3).Data =(-sin(thi)*U)+((sin(phi)*cos(thi))*V)+...((cos(phi)*cos(thi))*W);block.Derivatives(4).Data=((R*V)-(Q*W))+(Fx/M);block.Derivatives(5).Data=((P*W)-(R*U))+(Fy/M);block.Derivatives(6).Data=((Q*U)-(P*V))+(Fz/M);block.Derivatives(7).Data=P+((sin(phi)*tan(thi))*Q)+((cos(phi)*tan(thi))*R);block.Derivatives(8).Data=(cos(phi)*Q)+(-sin(phi)*R);block.Derivatives(9).Data=((sin(phi)/cos(thi))*Q)+((cos(phi)/cos(thi))*R);block.Derivatives(10).Data=(G1*P*Q)-(G2*q*r)+ ((G3*l)+(G4*n));block.Derivatives(11).Data=(G5*P*R)-(G6*(P^2-R^2))+ (m/Iy);block.Derivatives(12).Data=(G7*P*Q)-(G1*q*r)+ ((G4*l)+(G8*n));%endfunctionfunction Outputs(block)% y = x
block.OutputPort(1).Data = block.ContStates(1).Data;block.OutputPort(2).Data = block.ContStates(2).Data;block.OutputPort(3).Data = block.ContStates(3).Data;block.OutputPort(4).Data = block.ContStates(4).Data;block.OutputPort(5).Data = block.ContStates(5).Data;block.OutputPort(6).Data = block.ContStates(6).Data;block.OutputPort(7).Data = block.ContStates(7).Data;block.OutputPort(8).Data = block.ContStates(8).Data;block.OutputPort(9).Data = block.ContStates(9).Data;block.OutputPort(10).Data = block.ContStates(10).Data;block.OutputPort(11).Data = block.ContStates(11).Data;block.OutputPort(12).Data = block.ContStates(12).Data;%endfunctionend
Best Answer