Code covered by the BSD License  

Highlights from
Companion software for the book "Simulink 7.2 - Guia Pratico"

image thumbnail
from Companion software for the book "Simulink 7.2 - Guia Pratico" by Elia Matsumoto
Supplemental set of MATLAB M-files and Simulink models.

Tutorial17_SFunction_modificado(block, LI, LS)
% Tutorial17_SFunction_modificado.m:
% Level 2 M-File S-Function que implementa integral 'limitada'

%%%%%%%%%%%%% Definio funo principal %%%%%%%%%%%%%%%%%%%%%%
function Tutorial17_SFunction_modificado(block, LI, LS)
% Configura parmetros inicials:
Tutorial17_Setup(block)

% Define condiao inicial: Integral = 0
block.RegBlockMethod('InitializeConditions',@Tutorial17_InitConditions);

% Calcula a integral do sinal
block.RegBlockMethod('Outputs' ,@Tutorial17_Outputs);

% Calcula a integral limitada (utiliza a derivada)
block.RegBlockMethod('Derivatives' ,@Tutorial17_Derivatives);

%%%%%%%%%%%%% Definio das subfunes callback %%%%%%%%%%%%%%%%
% Configura parmetros inicials:
function Tutorial17_Setup(block)
block.NumDialogPrms  = 2; % Nmero de parmetros digitados
block.NumInputPorts  = 1;
block.NumOutputPorts = 1;
block.SetPreCompInpPortInfoToDynamic;
block.SetPreCompOutPortInfoToDynamic;
block.InputPort(1).Dimensions        = 1;
block.InputPort(1).DirectFeedthrough = false;
block.OutputPort(1).Dimensions       = 1;
block.SampleTimes = [0 0];
block.NumContStates = 1;

% Define condiao inicial: Integral = 0
function Tutorial17_InitConditions(block)
  block.ContStates.Data = 0;

% Calcula a integral do sinal
function Tutorial17_Outputs(block)
block.OutputPort(1).Data = block.ContStates.Data;

% Calcula a integral limitada (utiliza a derivada)
function Tutorial17_Derivatives (block)
% Define os limites a partir dos valores digitados
LimiteInferior  = block.DialogPrm(1).Data;
LimiteSuperior  = block.DialogPrm(2).Data;

% u = dado de entrada
u =  block.InputPort(1).Data;

if (block.ContStates.Data < LimiteInferior && u < 0) || ...
        (block.ContStates.Data >= LimiteSuperior && u > 0)
    block.Derivatives.Data = 0;
else
    block.Derivatives.Data = u;
end



Contact us at files@mathworks.com