PrezentareStateflow.doc

21
Simularea sistemelor folosind toolbox-ului “Stateflow” Stateflow este un toolbox Matlab – Simulink pentru simularea maşinilor cu stări ierarhice în scopul reprezentării comportărilor stări-discrete şi evenimente discrete în sistemele dinamice. Diagramele Stateflow pot fi conectate la blocuri stări- continue din Simulink în vederea modelării sistemelor hibride dinamice, care sunt, sisteme cu stări continue şi discrete. Modelele obţinute pot fi utilizate pentru investigarea comportamentului sub diferite condiţii prin simulare. Hărţile de stare (statecharts) introduse de Harel sunt modele vizuale ale sistemelor de tranziţie cu stări discrete, bazate pe maşinile cu stări finite ierarhice. O maşină cu stări finite este o reprezentare a sistemelor conduse de evenimente (event-driven) . Într- un sistem condus de evenimente, sistemul realizează o tranziţie de la o stare la alta, dacă condiţiile prevăzute pentru schimbare sunt îndeplinite. Reprezentarea maşinilor cu stări finite se realizează în mod tradiţional prin utilizarea tabelelor de adevăr (truth tables) în scopul reprezentării relaţiilor dintre intrările, ieşirile şi stările acestora. Tabelul descrie logica necesară descrierii comportamentului pentru sistemul studiat. O altă modalitate de reprezentare a sistemelor conduse de evenimente 1

description

Curs universitar stateflow. Prezentarea sistemului stateflow din Matlab Simulink.

Transcript of PrezentareStateflow.doc

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.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 StateflowDeclanarea 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 SimulinUn model Simulink poate fi compus din combinaii de blocuri Simulink, blocuri de 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 n Stateflow de o diagram unic (Stateflow diagrama). Fiecaremasina 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 tranziii pentru fiecare direcie ntre dou stri. Protejarea unei tranziii nseamn specificarea condiiilor, 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) precumi una sau mai multe diagrame Stateflow (blocuri Stateflow). La rularea simulrii se executautomat 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 diagram rdcin. n figura 1, Starea A1 este un copil al strii A. O stare poate avea istoria activitii sale nregistrat n history junction.ONSe 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 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 actionFiecare 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.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 nivelntr-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 SimulinkDei 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 adevarattranziia 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:

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 elementeledintr-o diagram Stateflow

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 idiagrama 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.

EvenimenteCaracteristica 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.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 continuaexecuia aciunilor de unde s-a oprit; (este asemntor cu apelul unei subrutine);-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 nueste propriuzis un semnal ca i la cele de intrare. Exist o legatur, iar caracteristica trigger type stabilete modul (momentul) cnd blocul comandat va executa .

DateO 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 dintr-un 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 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.