Sunteți pe pagina 1din 15

Simularea sistemelor folosind toolbox-ului Stateflow

Stateflow este un toolbox Matlab Simulink pentru simularea mainilor cu stri


ierarhice n scopul reprezentrii comportrilor stri-discrete i evenimente discrete n
sistemele dinamice.
Diagramele Stateflow pot fi conectate la blocuri stri-continue din Simulink n
vederea modelrii sistemelor hibride dinamice, care sunt, sisteme cu stri continue i discrete.
Modelele obinute pot fi utilizate pentru investigarea comportamentului sub diferite condiii
prin simulare. Hrile de stare (statecharts) introduse de Harel sunt modele vizuale ale
sistemelor de tranziie cu stri discrete, bazate pe mainile cu stri finite ierarhice. O main
cu stri finite este o reprezentare a sistemelor conduse de evenimente (event-driven). ntr-un
sistem condus de evenimente, sistemul realizeaz o tranziie de la o stare la alta, dac
condiiile prevzute pentru schimbare sunt ndeplinite.
Reprezentarea mainilor cu stri finite se realizeaz n mod tradiional prin utilizarea
tabelelor de adevr (truth tables) n scopul reprezentrii relaiilor dintre intrrile, ieirile i
strile acestora. Tabelul descrie logica necesar descrierii comportamentului pentru sistemul
studiat. O alt modalitate de reprezentare a sistemelor conduse de evenimente este modelarea
comportamentului sistemului prin descrierea sa n termenii tranziiilor dintre stri. Starea
activ este determinat pe baza producerii evenimentelor sub anumite condiii.
Utiliznd Stateflow se pot vizualiza si modela sisteme complexe reactive, bazate pe
teoria mainilor cu stri finite. Se pot obine avantaje n operaiile de modelare, simulare i
analiza a sistemelor datorit integrrii mpreun cu mediile MATLAB i Simulink.
Un sistem reactiv este un sistem comandat prin evenimente, care interacioneaz
continuu cu mediul su, avnd intrri i ieiri. La apariia unui eveniment (stimul),
reacioneaz prin realizarea de aciuni: generarea unui semnal, schimbarea unei variabile,
tranziia ntr-o alt stare. Evenimentele pot aprea n mod neprevzut, asincron; rspunsul
unui astfel de sistem la evenimentul respectiv poate fi diferit n funcie de momentul n care
apare evenimentul respectiv. Exemple de sisteme reactive: automate bancare, sisteme cu
software incorporat (emebedded) din industria automobilelor, aviaie, sisteme de
telecomunicaii, sisteme de control industrial.
1

O tehnic folosit pentru reprezentarea sistemelor reactive este teoria mainilor cu


stri finite.
Maina cu stri finite: un sistem care este totdeauna ntr-o singur stare (numit
activ) dintr-un numr finit de stri.
Maina cu stri finite are ca i modalitate de reprezentare vizual sau limbaj de
modelare, diagrama cu stri i tranziii (diagrama Statechart).
Se permite descrierea (modelarea) sistemului, preciznd strile prin care acesta trece,
tranziiile ntre aceste stri, cauzele care determin efectuarea unor aciuni.
Un exemplu de sistem reactiv este sistemul pentru aprinderea i stingerea unui bec.
Acesta conine dou stari: ON, OFF i un eveniment: button pressed.

Stateflow reprezint o librrie a Simulink-ului, permite implementarea diagramelor de


tip Statechart prin intermediul mediului MATLAB/Simulink. Se realizeaz logica pentru
controlul modelelor sistemelor fizice (physical plant) realizate n Simulink.
Pentru a crea un o diagram Stateflow este necesar parcurgerea a apte pai, ilustrai
n figura urmtoare:

Din punct de vedere al sistemelor, este clar c nainte de a parcurge aceti pai, trebuie
s se tie : ce funcii se doresc a se descrie i ce funcii sunt mai potrivite pentru a descrie
folosind blocuri Simulink obinuite, i care pri sunt mai bine descrise folosind Stateflow .
Definirea interfeei cu Simulink - presupune determinarea modului n care diagrama
Stateflow este conectat cu alte pri ale modelului Simulink. n aceast etap se pot defini
intrri ce provin de la Simulink i ieirile diagramei.

Figura . Relatia dintre Simulink si Stateflow


Declanarea tranziiilor discrete n Stateflow este data de Data sau Evenimente din
Simulink. Tranziiile discrete n Stateflow pot provoca stri de comutaie i de a schimba
dinamica sistemului sau operaional setrile prin trimiterea de date i evenimente la Simulin
Un model Simulink poate fi compus din combinaii de blocuri Simulink, blocuri de
3

instrumente, i blocuri Stateflow (diagrame Stateflow). n Stateflow, graficul (Stateflow


diagrama) const dintr-un set de grafice (state, tranziii, intersecii conjunctiv, intersecii i
istorie) i nongraphical (evenimente, date, i int) obiecte.

Exist o coresponden unu-la-unu ntre modelul Simulink si masina Stateflow.


corespondena reprezentat n Figura 3.3. Fiecare bloc Stateflow n modelul Simulink este
reprezentat

Stateflow

de

diagram

unic

(Stateflow

diagrama).

Fiecare

masina Stateflow are ierarhie obiect propriu. Maina de Stateflow este cel mai nalt nivel n
ierarhia Stateflow.

Definirea strilor Stateflow permite definirea strilor ierarhice. n plus strile pot fi
definite ca i stri de tipul OR (secveniale) sau de tipul AND (paralele) .
Definirea aciunilor strii i variabilelor aciunile pot fi definite s se produc la
intrarea ntr-o stare, la ieirea dintr-o stare, sau atunci cnd o stare este activ. Pot fi definite
variabilele pentru stri, acestea putnd fi temporale sau permanente
Definirea tranziiilor dintre stri tranziiile creeaz ci pentru fluxul logic al
sistemului de la o stare la alta. Cnd o tranziie este realizat de la o stare A la o stare B,
starea A devine inactiv, iar starea B devine activ. Tranziiile sunt direcionate i sunt
reprezentate n diagrama Stateflow prin sgei. Este necesar adugarea unei tranzi ii pentru
fiecare direcie ntre dou stri. Protejarea unei tranziii nseamn specificarea condi iilor,
aciunilor sau evenimentelor ce permit ca o tranziie ntre dou stri s aib loc.
Declanarea diagramei Stateflow Simulink poate trezi o diagram prin
eantionarea diagramei la o perioad specific sau motenit, prin utilizarea unui semnal de
declanare (trigger), sau prin utilizarea unei diagrame Stateflow ce conduce o activitate a
alteia.
Simularea diagramei diferena esenial fa de o simulare obinuit n Simulink
este posibilitatea de setare a utilizrii debugger-ului Stateflow.

2.1. Diagramele Stateflow. Elemente componente


Un model Simulink conine mai multe blocuri Simulink (din diverse librrii) precum
i una sau mai multe diagrame Stateflow (blocuri Stateflow). La rularea simulrii se execut
6

automat ambele poriuni ale modelului.


Diagrama Stateflow poate conine dou tipuri de obiecte: grafice, care includ strile,
tranziiile i jonciunile de conectare sau istorice, respectiv non-grafice, care includ
evenimentele i datele.
Fiecare diagram Stateflow se interfaeaz cu modelul sau Simulink sau cu elemente
externe de Simulink (prin date, evenimente sau fiiere de program).
Diagrama Stateflow este comandat de evenimente. Evenimentele pot fi locale n
Stateflow sau se pot propaga ctre sau dinspre Simulink sau pot fi externe de Simulink. n
continuare se face o scurt prezentare a obiectelor care pot intra n compunerea unei diagrame
Stateflow.

Cele mai importante elemente sunt:


1. Strile reprezentate prin dreptunghiuri, descriu un mod al sistemului comandat
prin evenimente, putnd fi activ sau inactiv. Activitatea sau inactivitatea strilor se
modific n mod dinamic pe baza evenimentelor sau condiiilor. Fiecare stare are un printe.
Dac harta Stateflow are o singur stare, printele strii este chiar harta nsi, numit i
7

diagram rdcin. n figura 1, Starea A1 este un copil al strii A. O stare poate avea istoria
activitii sale nregistrat n history junction.

ON
Se pot folosi dou tipuri de stri: exclusive (OR) i paralele (AND).

OFF

Un comutator poate fi n setat ON sau OFF. Doar una dintre cele dou stri poate fi
activ la un anumit moment de timp.
O diagram cu stri paralele conine una sau mai multe stri ce pot fi active n acelai
timp. Strile paralele sunt reprezentate prin dreptunghiuri cu linie punctat. Activitatea
fiecrei stri paralele este independent de a celorlalte stri.
De exemplu, transmisia, sistemul de nclzire i sistemul de iluminare sunt subsisteme
paralele la o main. Activitatea lor este independent la acelai moment de timp.

2. Tranziiile reprezentate prin sgei sunt obiecte grafice care n majoritatea


cazurilor leag un obiect de altul. Un capt al tranziiei este ataat la obiectul surs, iar cellat
8

la obiectul destinaie. O tranziie are loc dac: starea surs este activ, toate condiiile pentru
tranziie sunt adevrate i un eveniment asociat are loc. Cnd un eveniment nu este asociat cu
tranziia, aceasta se va produce la apariia oricrui eveniment. Tranziiile de tip default
precizeaz, n cazul n care o stare devine activ i conine dou sau mai multe substri de tip
OR, care dintre aceste stri devine activ. Aceast tranziie nu are obiect surs.
O tranziie este descris printr-o etichet de forma:
event[condition]{condition_action}/transition action
Fiecare dintre elemente este opional. Semnificaiile se prezint n continuare:
-event, reprezint numele unui eveniment, care cauzeaz tranziia, dac condiia (dac exist)
este adevarat; dac evenimentul lipsete din denumire, tranziia va avea loc la apariia
oricrui eveniment;
-condition, reprezint o expresie boolean, care dac este adevarat face ca tranziia s aibe
loc; se scrie ntre paranteze ptrate [ ];
-condition action (aciunea condiiei), este executat de ndat ce condiia, dac exist, este
determinat ca adevarat, iar starea surs a tranziiei este nc activ (nainte ca tranziia
destinaie s fie determinat ca valid); dac nu exist condiie, condiia este implicit evaluat
ca adevarat; se scrie ntre paranteze acolade { }; aciunea condiiei se execut n condiiile
precizate i dac face parte din denumirea unei tranziii ntre o stare i o jonciune (punct de
ramificaie);
-transition action (aciunea tranziiei) este executat dup ce tranziia este determinat ca
valid (dac se emite evenimentul specificat, iar condiia este adevarat); momentul execuiei
este dup ce starea surs a devenit inactiv, iar starea destinaie nu este nc activ; este
precedat de caracterul /; n cazul unei tranziii care conine jonciuni, aciunea tranziiei este
efectuat doar cnd i tranziia de la jonciune la starea destinaie este valid;
3. Evenimentele sunt semnale de intrare sau semnale locale ce foreaz tranziiile s
se produc.
Evenimentele comand execuia diagramei Stateflow. Toate evenimentele care
afecteaz diagrama Stateflow trebuie definite. n urma definirii rezult i printele
evenimentului care poate fi maina, diagrama Stateflow sau o stare. Evenimentul este apoi
recunoscut n cadrul ierarhiei, se propag ncepnd cu nivelul pe care este printele, ctre
nivelele inferioare.
9

Evenimentele nu sunt obiecte grafice i, prin urmare nu sunt reprezentate direct n


harta Stateflow. Producerea evenimentelor cauzeaz statutul strilor n diagram. Emiterea
evenimentului poate provoca producerea unei tranziii sau poate provoca execuia unei
aciuni.
Evenimentele sunt emise ntr-o manier descendent pornind de la evenimentul printe.
Evenimentele sunt create i modificate folosind Model Explorer , putnd exista la orice nivel
ntr-o ierarhie. Evenimentele pot fi:
- locale hrii Stateflow
- o intrare n diagram ce provine de la un model Simulink
- o ieire din diagram ctre modelul su Simulink
- exportate ctre o destinaie extern la o diagram sau model Simulink
- importate de la un cod surs extern la o diagram sau model Simulink.
4. Date sunt obiecte care memoreaz valori numerice pentru referin n diagrama
Stateflow. Datele trebuie definite n mod asemanator cu evenimentele. Se pot crea i modifica
n Model Explorer. Datele pot fi:
- locale hrii Stateflow
- o intrare n diagram de la modelul su Simulink
- o ieire din diagram la modelul su Simulink
- date temporare nepersistente
- definite n workspace-ul Matlab
- constante
- exportate ctre o destinaie extern la o diagram sau model Simulink
- importate de la un cod surs extern la o diagram sau model Simulink
Dei nu fac parte dintre obiectele diagramei Stateflow, o mare importan o au
condiiile si aciunile. Acestea apar sub form de text n denumirile strilor sau ale
tranziiilor.
Astfel, condiiile reprezint expresii booleene. Dac o condiie are valoarea adevarat
tranziia asociat ar putea fi executat.
Aciunile

sunt declaraii Matlab asociate cu stri sau tranziii. Aciunile strii sunt

executate cnd o stare devine activ, este activ sau devine inactiv, n funcie de tipul
aciunii (aciuni de tipul entry, during sau exit). De exemplu:
10

Etichetele tranziiilor pot include: condition actions (aciuni de condiie) ce sunt


executate imediat atunci cnd condiiile de pe arc sunt adevrate i event conditions (condiii
de eveniment) ce sunt executate cnd tranziiile au loc. Aciunile pot fi executate fie ca parte
a tranziiilor de la o stare la alta, sau pe baza situaiei activitii strii. Tranziiile se termin
ntr-o stare ce poate avea condition actions (aciuni de condiie) sau transition actions (aciuni
de tranziie):

O diagram Stateflow suport aciunii ale strii, aciuni ale tranziiilor i aciuni ale
condiiilor.
Jonciunile de conectare sunt punctele de decizie din sistem. O jonciune de
conectare este un obiect grafic ce simplific reprezentarea hrii Stateflow i faciliteaz
generarea unui cod eficient. Jonciunea de conectare asigur o metod alternativ pentru
reprezentarea comportamentului dorit al sistemului. Tranziiile conectate la jonciuni sunt
numite segmente de tranziie. Tranziiile, n afara tranziiilor implicite, trebuie s mearg din
stare n stare.

2.2. Descrierea modului cum interacioneaz elementele


dintr-o diagram Stateflow

11

Funcionarea unei diagrame Stateflow se judec n funcie de evenimente. Astfel, la


apariia unui eveniment, trebuie evaluate efectele propagrii acestuia prin diagrama ncepnd
cu rdcina i continund pe nivelurile inferioare conform ierarhiei. Evaluarea efectelor
unui eveniment nseamn a vedea dac exist tranziii ntre stri, iar apoi ce acuni se
efectueaz datorit tranziiilor (dac exist) i n cadrul strilor.
Exist 3 modaliti de a stimula diagrama Stateflow:
-inherited; n acest caz, diagrama Stateflow este stimulat de ctre fronturile semnalului
provenit din Simulink i prezent la portul de intrare al diagramei (n caz ca a fost definit un
eveniment), dac nu au fost definite evenimente, stimularea se face cu pasul (conform
opiunilor solver-ului ) cu care funcioneaz modelul Simulink;
-discrete; n acest caz stimularea se face la un interval de timp (sample time) stabilit de
utilizator, care poate fi diferit de cel al modelului Simulink;
-continuous; n acest caz stimularea se face la un interval de timp identic cu marimea pasului
de functionare a schemei, conform solverului, considerndu-se inclusiv punctele
intermediare.

Evenimente i date
Interfaa cu Simulink-ul conine conexiunea fizic ntre blocul (blocurile) Simulink i
diagrama Stateflow precum i evenimentele i datele schimbate ntre diagrama Stateflow i
blocurile Simulink.
Pentru a realiza aceast interfa trebuie definit modul de stimulare a diagramei
precum i evenimentele i datele nelocale n diagrama Stateflow.

Evenimente
Caracteristica numit scope a evenimentelor permite alegerea unuia din urmtoarele
trei tipuri de evenimente:
Evenimentele locale pot fi definite oriunde n maina (sau mai jos) dar sunt vizibile
numai n printe i n descendeni.
12

Evenimentele de intrare (Input from Simulink) apar n afara diagramei (n blocuri


Simulink sau alte diagrame Stateflow) i sunt vizibile numai n diagrama Stateflow.
Indiferent de numrul evenimentelor de intrare definite ntr-o diagram, Stateflow ataeaz
acesteia un singur port de intrare pe latura de sus. De aici rezult c dac sunt mai multe
evenimente de intrare, portul trebuie comandat de un vector.
Evenimentele de ieire (Output to Simulink) apar ntr-o diagrama Stateflow i sunt
vizibile ntr-un bloc n afara diagramei. Pentru fiecare eveniment de ieire, Stateflow ataeaza
cte un port de ieire diagramei, pe latura din dreapta.
Dac evenimentul are ca printe maina, caracteristica scope mai are dou variante,
exported (se valideaz un cod de program extern pentru a declana evenimente n maina
respectiv) i imported (se valideaz maina pentru a declana evenimente ntr-un cod extern
de program) neavnd ns variantele intrare i ieire.
Caracteristica numita trigger type definete modul n care se emite un eveniment, n
funcie de semnalul respectiv.
Astfel, pentru evenimentele de intrare, aceast caracteristic precizeaz n ce condiii
(moment) semnalul conectat la portul de intrare al diagramei genereaz (emite) un eveniment,
si are 4 variante:
-front crescator;
-front descrescator;
-ambele fronturi;
Altfel spus, apariia la portul de intrare n diagram a unuia din fronturile mai sus
menionate semnific un eveniment. A patra variant este function call, care se folosete mai
mult n cazul evenimentelor de ieire.
Pentru evenimentele de ieire, aceast caracteristica stabilete n ce condiii diagrama
Stateflow emite evenimentul ctre blocul la care este conectat i are dou variante.
-function call; n acest caz blocul receptor este ntiinat chiar n momentul n care
evenimentul apare, chiar dac acest moment de timp este la mijlocul intervalului ntre doi
pai de simulare; n acest caz, diagrama se oprete din execuia aciunilor, da voie ca blocul
comandat (receptor al evenimentului) sa execute propria actiune, iar apoi diagrama continua
execuia aciunilor de unde s-a oprit; (este asemntor cu apelul unei subrutine);
13

-edges (pe front); n acest caz blocul receptor este ntiinat la nceputul urmtorului pas de
simulare de apariia evenimentului; execuia blocului comandat are loc doar dupa ce n
diagrama Stateflow s-au ncheiat aciunile legate de execuia evenimentului curent;
n concluzie, se poate spune c la portul corespunztor unui eveniment de ieire nu
este propriuzis un semnal ca i la cele de intrare. Exist o legatur, iar caracteristica trigger
type stabilete modul (momentul) cnd blocul comandat va executa .

Date
O main poate memora sau salva datele care exist n propriul spaiu de lucru. Poate
accesa i date externe, din modelul Simulink sau din aplicaii care nglobeaz maina
respectiv.
Printele datei stabilete obiectul de unde se pot accesa datele (de asemenea, i
descendenii acelui obiect pot accesa datele respective).
Ca i la evenimente caracteristica scope stabilete de unde provin datele, avnd
variantele:
-date locale, care provin i sunt accesibile numai n maina, diagrama Stateflow sau starea
respectiv;
-date de intrare (Input from Simulink), sunt accesibile n diagrama Stateflow i provin dintrun bloc Simulink sau Stateflow care face parte din modelul Simulink; pentru fiecare dat de
intrare definit, Stateflow ataeaza diagramei un port de intrare situat pe latura din stnga a
diagramei;
-date de ieire (Output to Simulink), provin din diagrama Stateflow i sunt accesibile n alt
bloc al modelului Simulink (Simulink sau Stateflow); pentru fiecare dat de ieire definit,
Stateflow ataeaza diagramei un port de ieire situat pe latura din dreapta a diagramei;
-date temporare, exist numai cnd printele lor execut o aciune, sunt nepersistente; se
folosesc de exemplu pentru implementarea buclelor de numarare, pentru variabile
intermediare, care nu mai sunt necesare dupa realizarea prelucrarii respective; de exemplu,
pentru o stare, datele temporare sunt disponible cnd starea este activa si si executa actiunile;
-date de tip parametru, care nu se modifica n timpul simularii; aceste date sunt aduse din
MATLAB sau Simulink si pot fi definite n linia de comanda MATLAB sau prin initializarea
14

sistemelor mascate din Simulink; pot fi folosite, de exemplu, pentru operatii de atribuire sau
comparare;
-constante, care si pastreaza valoarea obtinuta prin initializare;
-date exportate, respectiv importate (pentru coduri de program);
O alta caracteristica a datelor care trebuie stablita prin initializare este marimea (Data
Sizes); daca are valoarea 1 data reprezinta un scalar, daca are o valoare mai mare ca 1 (de
exemplu 10) data reprezinta un vector cu dimensiunea respectiva, iar daca este un vector (de
exemplu [2 6]) data este o matrice cu dimensiunile corespunzatoare vectorului respectiv.
De asemenea, cu exceptia celor de tip workspace si Output to Simulink pot fi
initializate, daca nu, primesc implicit valoarea 0.

15

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