function [sys,x0] = Sfcn(t,x,u,flag) global T0 switch flag, case 0, %% Initialization % Nesse case você inicializa as variáveis globais que vc precisará % durante o case2. Esse case 0 é executado somente uma vez assim % que o arquivo simulink inicia simulação. % os itens obrigatórios desse case são os abaixo: sys, x0 e T0; %sys = [0, nº estados , nº de , nº de ,0 , 0 ] % discretos saídas entradas sys = [0 3 3 4 0 0 ]; % x0 = 0; % valor inicial dos estados (sempre zero) T0 = 1e-6; % tempo de amostragem case 2,% Update % Tudo que você calculará de maneira discreta (simulando um % microcontrolador) estará nesse case2. Esse case é executado à % cada T0. % As entradas são capturadas da seguinte forma: % entrada 1 = u(1); % entrada 2 = u(2)... e assim por diante. % Normalmente a primeira coisa a se fazer no iníci do case 2 é dar % nome às entradas: % velocidade = u(1); % Corrente_fase_a = u(2); % etc x1=u(1); %O que é obrigatório conter nesse case discreto é o código seguinte de armazenamento dos estados % Nesse caso temos três estados discretos sendo armazenados. sys = [x1 x2 x3]; case 3,% Outputs % Aqui praticamente a única coisa que vai é esse código sys=x; que % significa que na saída você está jogando o vetor x de estados... % nesse caso x é a mesma coisa que [x1 x2 x3]; sys = x; %Código padrão para que a saída sejam os estados armazenados (logo acima) case 4, % Nesse case o MAtlab determina quando será a próxima vez à entrar % na s-function. esse tempo é calculado pelo código padrão abaixo. ns = t/T0; sys = (1 + floor(ns + 1e-13*(1+ns)))*T0; % Existem outros cases.... mas para a disciplina não são usados. end