Sunteți pe pagina 1din 8

Lucrarea nr.

S-FUNCTIONS N MEDIUL SIMULINK


1. Scopul lucrrii
Lucrarea prezint posibilitile de extindere a capacitii de lucru cu
mediul Simulink, folosind S-Functions i rutinele (etapele) ce formeaz o
simulare complet.
2. Aspecte teoretice
O soluie puternic oferit de Matlab pentru crearea unui algoritm propriu,
ce poate fi integrat ntr-un model Simulink, este folosirea S-Functions (System
Function), respectiv respectarea unor reguli simple impuse de mediu de
dezvoltare. Astfel, dup scrierea codului surs al algoritmului funciei, prin
respectarea rutinelor, numele funciei poate fi introdus ntr-un bloc S-Function,
existent n domeniul Nonlinear al bibliotecii Simulink, care poate fi folosit
ulterior n diferite aplicaii (Figura 8.1). Prin aceast tehnic se poate descrie,
practic orice sistem dinamic continuu, discret sau hibrid, folosind limbajul
Matlab sau C.

function [sys,x0]=S_functie(t,x,u,flag)
%functia S-Function : codul sursa in limbaj matlab
% M-file
switch(flag)

end.

Fig. 8.1. Modul de realizare a unui model Simulink S-Function


Fiecare bloc S-Function, are un vector al intrrilor, un vector al ieirilor i
unul al strilor care pot fi continue, discrete sau hibride.
58

Mediul Simulink efectueaz simularea pe diferite etape sau rutine, care


definesc comportamentul unui bloc la un moment dat. Modul n care mediul de
simulare Simulink interacioneaz cu modelele definite deja n bibliotec, pentru
a calcula stri i ieiri, trebuie cunoscut i respectat pentru a putea nelege
construcia unei S-Function. Elementul esenial care face diferenierea ntre
rutine (iniializare, calcul de stri, calcul de ieire, etc.) n timpul simulrii este
variabila numit sugestiv flag .
n tabelul 8.1 se prezint diferitele etape ale unei simulri, rutinele
corespunztoare fiecrei etape i valoarea variabilei de delimitare flag:
Tabelul 8.1 c
Etapa simulrii
Rutina S-Function
Flag
iniializare
mdlInitializeSizes
Flag=0
calcul interval timp (variabil)
mdlGetTimeOfNextVarHit
Flag=4
calculul ieirii
mdlOutputs
Flag=3
refacerea strilor discrete
mdlUpdate
Flag=2
calculul derivatelor
mdlDerivates
Flag=1
sfritul rutinelor
mdlTerminate
Flag=9
Trebuie precizat c rutina corespunztoare calcului intervalului de timp
urmtor (flag=4), se aplic doar atunci cnd s-a ales o metod de rezolvare
(integrare) cu pas variabil. nafara posibilitii de creare a funciei speciale,
folosind aceste rutine se poate vedea interactiv comportarea unui model creat n
Simulink, deoarece orice model (fie el realizat doar cu blocuri standard) este
tratat n timpul simulrii ca un S-Function (orice model creat n simulink are o SFunction ascuns).
Pentru exemplificarea unei rutine de simulare interne mediului Simulink
(de exemplu etapa de iniializare, flag=0) se creaz un model cu blocuri standard
din biblioteca de elemente. Singura deosebire (fa de schema de simulare) ce se
observ din figura 8.2 este nlocuirea generatoarelor de semnale i afioarelor cu
porturi de intrare i ieire, care este o condiie necesar pentru a putea analiza
schema de la interpretorul de comenzi Matlab asemntor mediului Simulink.

Fig. 8.2. Model ISO de ordin trei continuu pentru testare


Pentru sistemul ISO se iau valorile din relaia 8.1.

59

1
1,2 0
0


0
1 1 0
A= 2
0,1 0.2 ; B = 1 ; C =
; D = ; X 0 = (1 0 2 )
0
1 2 0
2
0
0
1

(8.1)

Dup ce un model a fost salvat (de exemplu cu numele exer), funcia ei


ascuns echivalent S-Function devine accesibil utilizatorului. Funcia poate fi
activat i interogat pentru a returna diferite informaii legate de sistemul
dinamic din modelul simulink, cu parametrul flag. Sintaxa general cu care se
poate apela funcia este:
Sys=exer(t,x,u,flag);
unde t,x,u sunt timpul, starea, comanda (intrarea n sistem);
flag este parametrul care specific rutina apelat.
Cu valoarea zero pentru flag, funcia va informa utilizatorul asupra
dimensiunilor vectorilor i a condiiilor iniiale ale sistemului, iar n locul
mrimilor de intrare n sistem se pot introduce matrici goale pentru simplificare.
Funcia urmtoare introdus la prompterul de comenzi Matlab:
[sizes,X0]=exer([],[],[],0);
returneaz vectorii:

ceea ce nseamn c sistemul are trei stri continue, 0 discrete, dou ieiri, o
intrare, 0 rdcini discontinue, 0 bucle directe de la intrare la ieire i un singur
vector pentru timpul de simulare, iar starea iniial a celor trei stri este x0.
Numrul buclelor directe de la intrare la ieire este dat de matricea D.
Observaie: Aceste apeluri de funcii sunt fcute intern de simulink n timpul
simulrii, iar interaciunea utilizatorului cu S-Function se face de obicei prin
construcia lor, scrierea codului surs i integrarea lui ntr-o schem de simulare.
2.1. Scrierea unei S-Function folosind limbajul Matlab (M-files):
O funcie de acest tip, care definete un bloc S-Function, trebuie s ofere
diferite informaii necesare (cerute) de mediul Simulink n timpul simulrii.
Matlab are n directorul toolbox\simulink\blocks un fiier ajuttor generalizat
sfuntmpl pentru realizarea unei S-Function. n lucrarea de laborator se vor

60

realiza programe i versiuni simplificate (fr a folosi funcii denumite dup


rutinele din tabelul 8.1).
Prima cerin a standardului S-Function este de a preciza iniializrile
sistemului dorit. Astfel, structura care conine dimensiunile vectorilor sistemului
va fi construit din studiul problemei i va fi iniializat cu parametri
caracteristici sistemului. Tabelul 8.2 indic elementele structurii construite i
coninutul lor:
Tabelul 8.2
c
Numrul coloanei vectorului
Descrierea coninutului
I
numrul strilor continue
II
numrul strilor discrete
III
numrul ieirilor
IV
numrul intrrilor
V
numrul buclelor directe
VI
numrul timpilor de eantionare
Se presupune c mediul Simulink va apela cu flag=0 funcia creat,
aceasta va trebui s returneze urmtoarele informaii:
sys = [3 0 2 1 1 1];
x0=[1 0 0];
adic un sistem cu trei stri continue, 2 ieiri .a.m.d; (sys reprezint un nume
generic de returnare a informaiilor) trebuie precizate valorile iniiale (sau de
pornire) pentru calculul traiectoriei de stare x0.
Urmtoarele etape constau n descrierea pe rutine (cicluri n funcie de
parametrul flag) a ntregului sistem sau chiar a unui algoritm de calcul. Aceast
descriere este foarte flexibil n funcie de ceea ce dorete s conin S-Function.
Testarea codului surs se poate face prin introducerea numelui codului surs
(funciei speciale) ntr-un bloc S-Function i conectarea acestuia la componente
de intrare i ieire (surse, afioare, osciloscoape, etc), respectiv simularea
schemei. n cazul apariiei erorilor se continu cu modificarea schemei, a codului
surs sau a parametrilor simulrii.
3. Desfurarea lucrrii
Lucrarea i propune studiul unor exemple simple pentru o mai bun
nelegere a construciei S-Function, urmnd ca eventualele dezvoltri ulterioare
i aprofundarea noiunilor s se realizeze independent.
3.1. Modelul unui sistem ISO
Se va descrie un sistem continuu de ordin 4, ISO (intrare-stare-ieire), cu
ajutorul S-Function i se va simula la diferite intrri (studiul rspunsului la intrri
standard). Caracteristicile sistemului sunt date de:
- vectorul iniial al strilor
x 0 = ( 1 0 0.1 0.1)

(8.2)

matricile de sistem
61

1
1
0
0.1
1.2 0
0

0.1 0.2
0
2
1 1 0.1
A=
;B =
;
0
1
0.5
0 1
0
1

0
.
2
0
0
0
.
2
0
0
.
8
0

1
0
0
0
0
0
0

C =
; D =

0
1
0
1
0
.
2
0
1

(8.3)

Din analiza acestor matrici se observ c sistemul are 4 stri continue, trei
intrri, dou ieiri i o bucl direct intrare-ieire (matricea D nu este nul)
rezultnd pentru apel flag=0, un vector de forma:
sys = [4 0 2 3 1 1];
Sistemul fiind dinamic, dat prin model ISO, la apelul intern al funciei de
ctre mediul Simulink cu flag=1 trebuie s returneze cu sistemul de ecuaii
difereniale. Deci:
sys=A*x+B*u;
iar la apel intern cu flag=3 s determine rspunsul sistemului, care pentru
modelul intrare-stare-ieire este:
sys=C*x+D*u;
Celelalte valori flag=2,4,9 nefiind necesare, la apelul S-Function se va
returna o matrice goal:
sys=[];
Respectnd aceste reguli codul surs detaliat pentru funcie va fi:
function [sys,x0]=ex1(t,x,u,flag)
%MATRICILE DE SISTEM
A=[-1.2 0 1 -0.1; 2 0.1 -0.2 0; -1 0 1 0.5; 0.2 0 0
0.2];
B=[0 1 0; 1 -1 0.1; 0 -1 0; 0 -0.8 0];
C=[1 0 0 0; -1 0.2 0 -1];
D=[0 0 0;0 1 0];
%rutinele ]n functie de valoarea flag
if flag ==1
sys=A*x+B*u; % calculul derivatelor
elseif flag ==3
sys=C*x+D*u; % calculul iesirilor
elseif flag ==0
%initializare dimensiunilor
62

sys = [4 0 2 3 1 1];
%starea initiala
x0 = [-1 0 0.1 0.1]';
else
sys=[]; % 2,4,9 flag-uri nefolosite
end
Testarea S-Function se va face cu schem Simulink din figura 8.3.

Fig. 8.3. Testarea S-Function cu numele ex1 n scheme Simulink


Se constat c pentru intrare treapt amplitudinea este de 0.5, dup un
timp de 2 sec., iar pentru sinus se obine o amplitudine de 1 i o frecven de 5
rad/sec. Introducerea multiplexoarelor i demultiplexpoarelor este necesar
pentru a grupa mai multe valori scalare ntr-un vector de intrare (Figura 8.4).

Fig. 8.4. Rspunsurile sistemului ISO descris cu ajutorul S-Function


3.2. Modelul unui ecuaii
Se cere studiul unor ecuaii de forma (ecuaia Van der Pol).
y = y (1 y 2 ) y

(8.4)

Ecuaia anterioar este echivalent cu sistemul de ecuaii difereniale 8.5.


63


x1 = x1 (1 x 22 ) x 2

x 2 = x1

(8.5)

Schema Simulink de testare, n care s-a introdus i componenta de timp


pentru axa Ox, a celor dou grafice este cea din figura 8.5, iar traiectoriile strilor
x(1), x(2) sunt prezentate n figura 8.6.
Timpul de simulare este fixat la 25 secunde i dimensiunea minim i
maxim a axelor Oy este parametrizat la valorile 6, +6.

Fig. 8.5. Schema de test pentru ecuaia Van der Pol (S-Function ex2)

Fig. 8.6. Traiectoriile strilor ecuaiei Van der Pol


Respectnd aceleai reguli, codul surs necesar implementrii ecuaiei
Van der Pol, cu meniunea introducerii celor dou ieiri pentru a analiza cele
dou cele dou stri x(1), x(2) este urmtorul:
function [sys,x0]=ex2(t,x,u,flag)
%rutinele in functie de valoarea flag
64

if flag ==1
sys(1)=x(1).*(1-x(2).^2)-x(2); % calculul
derivatelor
sys(2)=x(1);
elseif flag==3
sys(1)=x(1);
sys(2)=x(2);
elseif flag ==0
%initializare dimensiunilor
sys = [2 0 2 0 0 0];
%starea initiala
x0 = [0.25 0.25]';
else
sys=[]; % 2,4,9 flaguri nefolosite
end
4. Tem
a) S se studieze principiul de construcie a unei S-Function i rutinele
standard din exemplul Matlab sfuntmpl.m din directorul toolbox\simulink\
blocks.
b) S se descrie un sistem ISO cu S-Function care s conin trei stri,
dou intrri i o ieire.
c) S se realizeze exemplele de la punctele 3.1 i 3.2 cu ajutorul
componentelor Simulink. Se vor compara rezultatele cu cele din lucrare.
d) S se refac codurile surs din lucrare folosind modelul ajuttor Matlab
sfuntmpl.m.
e) Se va rspunde la ntrebarea: Ce justificare are descrierea unui sistem
sau a unei ecuaii prin cod surs (S-Function) ?

65

S-ar putea să vă placă și

  • Masini Unelte Cu Comanda Numerica
    Masini Unelte Cu Comanda Numerica
    Document57 pagini
    Masini Unelte Cu Comanda Numerica
    Alina Ali
    80% (10)
  • Evalriscuri Ptsite
    Evalriscuri Ptsite
    Document233 pagini
    Evalriscuri Ptsite
    stirbuson4980
    Încă nu există evaluări
  • Labor 14
    Labor 14
    Document9 pagini
    Labor 14
    stirbuson4980
    Încă nu există evaluări
  • Mod Sim Curs
    Mod Sim Curs
    Document129 pagini
    Mod Sim Curs
    Belean Cosmin
    Încă nu există evaluări
  • MPP Constructie Functionare
    MPP Constructie Functionare
    Document21 pagini
    MPP Constructie Functionare
    Gigi Tyirean
    Încă nu există evaluări
  • Masini Unelte Cu Comanda Numerica
    Masini Unelte Cu Comanda Numerica
    Document57 pagini
    Masini Unelte Cu Comanda Numerica
    Alina Ali
    80% (10)
  • Verificarea Metro Logic A Si Etalonarea Mijloacelor de Masurare
    Verificarea Metro Logic A Si Etalonarea Mijloacelor de Masurare
    Document48 pagini
    Verificarea Metro Logic A Si Etalonarea Mijloacelor de Masurare
    mbarabas
    Încă nu există evaluări
  • Labor 13
    Labor 13
    Document10 pagini
    Labor 13
    stirbuson4980
    Încă nu există evaluări
  • Labor 12
    Labor 12
    Document8 pagini
    Labor 12
    stirbuson4980
    Încă nu există evaluări
  • Labor 09
    Labor 09
    Document8 pagini
    Labor 09
    stirbuson4980
    Încă nu există evaluări
  • Labor 10
    Labor 10
    Document6 pagini
    Labor 10
    stirbuson4980
    Încă nu există evaluări
  • Labor 04
    Labor 04
    Document6 pagini
    Labor 04
    stirbuson4980
    Încă nu există evaluări
  • Labor 11
    Labor 11
    Document9 pagini
    Labor 11
    stirbuson4980
    Încă nu există evaluări
  • Labor 07
    Labor 07
    Document9 pagini
    Labor 07
    stirbuson4980
    Încă nu există evaluări
  • Labor 06
    Labor 06
    Document7 pagini
    Labor 06
    stirbuson4980
    Încă nu există evaluări
  • Labor 05
    Labor 05
    Document5 pagini
    Labor 05
    stirbuson4980
    Încă nu există evaluări
  • Labor 01
    Labor 01
    Document7 pagini
    Labor 01
    stirbuson4980
    Încă nu există evaluări
  • IndrumarLaborator IA
    IndrumarLaborator IA
    Document13 pagini
    IndrumarLaborator IA
    stirbuson4980
    Încă nu există evaluări
  • Cap
    Cap
    Document31 pagini
    Cap
    stirbuson4980
    Încă nu există evaluări
  • Labor 02
    Labor 02
    Document8 pagini
    Labor 02
    stirbuson4980
    Încă nu există evaluări
  • Labor 03
    Labor 03
    Document7 pagini
    Labor 03
    stirbuson4980
    Încă nu există evaluări
  • Copert 1
    Copert 1
    Document2 pagini
    Copert 1
    stirbuson4980
    Încă nu există evaluări
  • Proiect SCPC
    Proiect SCPC
    Document5 pagini
    Proiect SCPC
    stirbuson4980
    Încă nu există evaluări
  • Sarbatorile Primaverii Mami
    Sarbatorile Primaverii Mami
    Document11 pagini
    Sarbatorile Primaverii Mami
    stirbuson4980
    Încă nu există evaluări
  • Protectia Mediului - Raul Mures
    Protectia Mediului - Raul Mures
    Document85 pagini
    Protectia Mediului - Raul Mures
    stirbuson4980
    Încă nu există evaluări