Clear Filters
Clear Filters

I have an error: Error in 'nonlinear​_LQR/S-Fun​ction' while executing MATLAB S-function 'fcn_sfcn', flag = 1 (derivatives), at time 0.0." Can someone help me? This is the code:

2 views (last 30 days)
function [sys,x0,str,ts]=...
fnc_sfcn(t,x,u,flag,xinit)
switch flag
case 0
str=[]
ts=[0 0]
s=simsizes
s.NumContStates=6;
s.NumDiscStates=0;
s.NumOutputs=6;
s.NumInputs=3;
s.DirFeedthrough=0;
s.NumSampleTimes=1;
sys=simsizes(s);
x0=[xinit];
case 1
tau=u;
sys=fnc(t,x,tau)
case 3
sys=x;
case {2 4 9}
sys=[];
otherwise
error(['unhandked flag=',num2str(flag)]);
end
Function File:
function xdot= fnc(t,x,tau)
l1=1;l2=1;l3=1;m1=1;m2=1;m3=1;g=10;
xdot = zeros(6,1);
xdot(1)=x(4);
xdot(2)=x(5);
xdot(3)=x(6);
xdot(4)= 1/(l1^2*(m1+m2+m3))*[-( l1*l2*(m2+m3))*xdot(5) - (m3*l1*l3)*xdot(6) + (m1+m2+m3)*g*l1*sin(x(1)) + tau(1) - tau(2)];
xdot(5) = 1/(l2^2*(m2+m3))* [-(l1*l2*(m2+m3))*xdot(4) -( m2*l2*l3)*xdot(6) + (m2+m3)*g*l2*sin(x(2)) + tau(2) - tau(3)];
xdot(6)= 1/(m3*l3^2)*[-(m3*l1*l3)*xdot(4)- (m3*l3*l2)*xdot(5)+(m3*g*l3)*sin(x(3))+tau(3)];
end
  1 Comment
Walter Roberson
Walter Roberson on 12 Aug 2013
You do not construct x0 or str or ts for any case other than 0. That might be a problem.
Have you considered invoking the debugger?

Sign in to comment.

Answers (0)

Categories

Find more on Simulink Functions in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!