S-Function error: Output returned by S-Function 'Hi_plant_sfcn' in 'Untitled/S-Function' During flag=3 call must be a real vector of length 1

Asked

Viewed 18 times

0

S-Function brings the following message:

"Output returned by S-Function 'Hi_plant_sfcn' in 'Untitled/S-Function' During flag=3 call must be a real vector of length 1"

my code:

    function [sys,x0,str,ts] = sfcn(t,x,u,flag)
%{
Despacha a bandeira. A função de troca controla as chamadas para
rotinas da S-Function em cada estágio de simulação. 
%}
A = [-72 -8100;1 0];
B = [1;0];
C = [0 2.4e8];
D = 0;
switch flag,
case 0
    [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D); % Inicialização
case 1,
%Calcula as derivadas do estado de variáveis contínuas    
    sys=mdlDerivatives(t,x,u,A,B) 
case 3
    sys = mdlOutputs(t,x,u,C,D); % Calculo das saídas 
case {2, 4, 9 }          % Sinalizações não usadas
                         % 2:discrete
                         % 4:calctimeHit
                         % 9:termination
    sys = []; 
otherwise
    error(['Unhandled flag = ',num2str(flag)]); % Error handling
end;

function [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D)
str=[];                    % Sem ordenação de estado
ts = [0 0];                   % Tempo de amostra herdado
s = simsizes;
    s.NumContStates=    length(A);  % Número de estados continuos
    s.NumDiscStates=    0;  % Número de estados discretos
    s.NumOutputs=       1;  % Número de saídas 
    s.NumInputs=        1;  % Número de entradas
    s.DirFeedthrough=   0;  % Sinalizar para feedthrough direto
    s.NumSampleTimes=   1;  % Número de amostras de tempo
sys = simsizes(s);
x0 = [0 0];

function sys=mdlDerivatives(t,x,u,A,B)
sys = A*x + B*u;

function sys=mdlOutputs(t,x,u,C,D)
sys = C*x + D*u;

S-Function in Simulink:

inserir a descrição da imagem aqui

If anyone knows what’s wrong with that code and why it carries that message, I’d appreciate it.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.