function [sys,x0,str,Tarray] = sfunkont(t,x,u,flagg) %Switch-struktur for å velge relevant funksjon i S-funksjonen ut fra verdien av flagg-argumentet: switch flagg, case 0, %Initialisering [sys,x0,str,Tarray]=mdlInitializeSizes; case 1, %Beregner deriverte sys=mdlDerivatives(t,x,u); case 3, %Beregner utganger sys=mdlOutputs(t,x,u); case {2,4}, %For ubrukte eller ubehandlede flaggverdier sys = []; case 9, %Aktiviteter ved simuleringens avslutning mdlTerminate otherwise %Uventede flaggverdier error(['Unhandled flag = ',num2str(flag)]); end % end sfunkont %----------------------------------------------------------- %S-funksjonens funksjoner er som følger: %---------------------------------------------------------- function [sys,x0,str,Tarray]=mdlInitializeSizes global xinit K1 K2 K3 %%%Definerer karakteristika for systemet: sizes = simsizes; %Lager en struktur-variabel med navn sizes. %Gir verdier til feltene i strukturen sizes: %Begin sizes.NumContStates = 1; %Antall tidskontinuerlige tilstandsvariable i systemet sizes.NumDiscStates = 0; %Antall tidsdiskrete tilstandsvariable i systemet sizes.NumOutputs = 1; %Antall utgangsvariable sizes.NumInputs = 1; %Antall inngangsvariable sizes.DirFeedthrough = 1; %1 (ja) eller 0 (nei). Angir om det er direktekopling fra %inngang til utgang i systemet. Viktig å sette riktig! I dette eksempelet %er svaret ja (= 1). sizes.NumSampleTimes = 1; %Antall samplingsintervaller. Sett verdi 1 for %rent tidskontinuerlige systemer og for rent tidsdiskrete systemer. %End %%%Angir retur-argumenter for S-funksjonen: sys = simsizes(sizes); x0 = xinit; str = []; T = 0; %Verdi 0 angir tidskontinuerlig system T_offset = 0; Tarray = [T T_offset]; % end mdlInitializeSizes %---------------------------------------------------------- function sys=mdlDerivatives(t,x,u) global xinit K1 K2 K3 sys = K1*x(1) + K2*(u(1))^2; %sys angir verdien av systemets tidsderiverte. u og x er generelt arrays. % end mdlDerivatives %---------------------------------------------------------- function sys=mdlOutputs(t,x,u) global xinit K1 K2 K3 sys = x(1) + K3*u(1); %sys angir verdien av systemets utgangsvariable. % end mdlOutputs %---------------------------------------------------------- function mdlTerminate disp('Simuleringen er avsluttet!') %end mdlTerminate