Cum funcționează stateflow

Flowflow - Simulink

Ce este o mașină de stat finită?

O mașină de stat finită (FSM) este o variantă a unui sistem bazat pe evenimente (reactive). Sistemul condus de eveniment trece de la o stare (mod) la alt stat prescris în cazul în care condiția care determină schimbarea este adevărată.







De exemplu, puteți utiliza o mașină de stat finită pentru a descrie transmisia automată a unei mașini. Transferul are un număr de state: parcare, neutru, mișcare, inversă, etc. Sistemul tranzițiile de la un stat la altul, atunci când conducătorul auto se deplasează maneta de la o poziție la alta, de exemplu, din poziția de parcare în poziția neutră ...

Reprezentările mașinii de stat finite (FSM)

În mod tradițional, designerii au folosit tabelele de adevăr pentru a reprezenta relația dintre intrările, ieșirile și stările FSM. Tabelul rezultat descrie logica comportamentului sistemului. O altă abordare a proiectării sistemelor bazate pe evenimente este de a modela comportamentul unui sistem, descriind-o în termeni de tranziții de stat. Tranziția stării la faza activă este determinată de apariția evenimentelor în prezența anumitor condiții. Diagramele de tranziție de stat (STD) și diagramele cu bule reprezintă reprezentări grafice bazate pe această abordare.

Stateflow utilizează versiunea sistemului de desemnare a automatelor finite propus de David Harel [D. Harel: Diagrame de stare un formalism vizual pentru sisteme complexe“(Diagrame de stare: un formalism vizual pentru sisteme complexe). Știința de Informatică Programare 8. 1987, paginile 231-274] Utilizarea Stateflow (stare - stare, debit - debit), creați Stateflow diagrama diagrama Stateflow -. Reprezentarea grafică a unei mașini de stare finită, unde stările și tranzițiile formează blocurile de construcție de bază ale sistemului pot fi, de asemenea, de streaming (non-state) diagramă folosind Stateflow Stateflow face blocuri pe care le transforma în modelul Simulink blocuri totalitatea Stateflow în ... Modele Simulink - Mașini de stat a.

Sistemul de notație definește un set de obiecte și reguli care controlează relațiile dintre aceste obiecte. Sistemul de notare Stateflow oferă posibilitatea de a proiecta un proiect în deplină concordanță cu diagrama fluxului de stat.

Sistemul de notare stateflow constă din:

  • Un set de obiecte grafice
  • Set de obiecte grafice (text)
  • Anumite relații între aceste obiecte

Semantica descrie modul în care sistemul de notare este interpretat și implementat. Diagrama fluxului de stare completat ilustrează modul în care se comportă sistemul. Diagrama fluxului de stare conține pașii asociați cu tranzițiile și stările. Semantica descrie secvența în care aceste acțiuni au loc în timpul executării diagramei Stateflow.

Cunoașterea semanticii este deosebit de importantă pentru furnizarea soluțiilor corecte de proiectare pentru diagramele Stateflow la generarea codului obiect. Utilizarea diferită a sistemului de notare duce la o ordine diferită de execuție a codului generat.

Modelul Simulink și mașina de stat

Mașina stateflow este o colecție de blocuri Stateflow în modelul Simulink. Modelul Simulink și mașina Stateflow funcționează împreună. Rularea simulării începe automat executarea simultană a părților Simulink și Stateflow ale modelului.

Modelul Simulink poate consta, unități suplimentare de instrumente și kituri blocuri Stateflow (diagrame Stateflow) Simulink combinații de blocuri. Stateflow diagramă (Stateflow grafic) este format dintr-un set de grafice (stări, tranziții compuse (noduri), compuși cronologice) și non-grafice (date evenimente, coduri de program) ale obiectelor.

Există o corespondență unu-la-unu între modelul Simulink și mașina Stateflow. Fiecare bloc Stateflow din modelul Simulink este reprezentat în Stateflow ca o diagramă separată (diagramă Flow State). Fiecare mașină Stateflow are o ierarhie de obiecte proprii. Masina stateflow este cel mai înalt nivel din ierarhia Flowflow. Mai jos, în ierarhia obiectului mașinii Stateflow este o combinație de obiecte grafice și non-grafice. Dicționarul de date este arhiva pentru toate obiectele Stateflow.

Cum funcționează stateflow

Definirea interfeței Stateflow

Fiecare bloc Stateflow corespunde unei singure diagrame Stateflow. Blocul Stateflow se leagă de modelul Simulink utilizând interfața. Folosind interfața, blocul Stateflow se conectează la sursele provenite de la modelul Simulink (date, evenimente, cod de utilizator).

Fluxurile de stat sunt determinate de evenimente. Evenimentele pot fi localizate într-un bloc Stateflow sau pot fi transferate către și dinspre un model Simulink și surse de cod exterioare lui Simulink. Datele pot fi, de asemenea, locale la blocul Stateflow sau pot curge către și dinspre modelul Simulink și sursele de cod exterioare Simulink.

Trebuie să definiți o interfață pentru fiecare bloc Stateflow. Definiția interfeței pentru un bloc Stateflow poate include unele sau toate aceste sarcini:

  • Definiția metodei de modificare a blocului Stateflow
  • Definiția evenimentelor Output to Simulink (Events to Simulink)
  • Adăugarea și definirea evenimentelor non-locale și a datelor non-locale în cadrul diagramei Stateflow
  • Definirea relațiilor cu orice surse externe

În exemplul discutat mai devreme modelul Simulink Simulink este format din blocul - sursa sinusoidală (sinus), Unitatea Simulink - Receptor Domeniu de aplicare (osciloscop), și un singur bloc numit Stateflow On_off.

Cum funcționează stateflow

Obiectele fluxului de stare din diagramă

Următorul este un exemplu de diagramă Stateflow în care sunt folosite principalele componente grafice. În plus, aceste componente grafice sunt descrise în detaliu, precum și unele obiecte non-grafice și conexiunile dintre ele.

Cum funcționează stateflow

Statul descrie modul de funcționare al evenimentului. Tranzițiile dinamice ale statelor de la activitate la inactivitate se bazează pe evenimente și condiții. Fiecare stat are un părinte. Într-o diagramă Stateflow constând dintr-o singură stare, părintele statului este direct o diagramă Stateflow (numită și rădăcina diagramei Stateflow). Puteți plasa state în alte state de cel mai înalt nivel. În imagine, StateA1 este descendent în ierarhie în ceea ce privește statul A.

De asemenea, statul are o cronologie. Cronologia oferă mijloace eficiente de a întemeia acțiunea viitoare asupra acțiunii anterioare.

Statele au etichete care pot identifica acțiunile efectuate într-o secvență pe baza tipului de acțiune. Tipurile de acțiuni sunt intrarea, timpul, ieșirea și numele evenimentului (în cazul unui eveniment numit _).

În exemplul de transmisie automată, transmisia poate fi în stare neutră sau pornită. Cele două stări ale acestui sistem sunt neutre și angajate.

Flowul de stat oferă două tipuri de stări: un tip de paralel (AND) și un tip de stat exclusiv (OR). Paralelismul este reprezentat de stările AND (paralele). Transmisia automată este un exemplu de stare exclusivă (OR). Stările excepționale (OR) sunt folosite pentru a descrie modurile care se exclud reciproc. Sistemul este fie în stare neutră, fie în starea de pornire la fiecare punct de timp.







Luați în considerare din nou transmisia automată. Clutch_bound (transferul declanșat) este un eveniment care este necesar pentru a face trecerea de la poziția neutră la starea "on".

Cum funcționează stateflow

Evenimentele controlează executarea diagramei Stateflow, dar sunt obiecte non-grafice și, prin urmare, nu sunt reprezentate direct în diagrama Stateflow. Trebuie definite toate evenimentele care sunt relevante pentru schema Flowflow. Apariția unui eveniment determină modificarea stării de stare (activ - inactivă) din diagrama de stare. Un eveniment ofensator poate declanșa o tranziție și apoi apare sau poate declanșa o acțiune și apoi este executată. Evenimentele apar în ordine descrescătoare, începând cu părintele evenimentului din ierarhie.

Evenimentele sunt create și modificate folosind Stateflow Explorer (Stateflow Explorer). Evenimentele pot fi create la orice nivel al ierarhiei. Un eveniment are o proprietate precum vizibilitatea. Vizibilitatea determină dacă este un eveniment

  • Local pentru diagrama fluxului de stat
  • Este inclusă în diagrama Stateflow din modelul Simulink
  • Ieși din diagrama de stare în modelul Simulink
  • Exportați la codul extern aflat în diagrama Stateflow și modelul Simulink
  • Importat din codul sursă extern la Stateflow și Simulink

Obiectele de date sunt folosite pentru a stoca valorile numerice pentru a fi utilizate în diagrama de stare. Acestea sunt obiecte non-grafice și, prin urmare, nu sunt reprezentate direct în diagrama Stateflow.

Datele sunt create și modificate în Flowflow Explorer. Ele pot fi create la orice nivel al ierarhiei. Datele au o proprietate precum vizibilitatea. Vizibilitatea definește una dintre următoarele pentru obiectele de date:

  • Fiți locali la diagrama Stateflow
  • Introduceți diagrama Stateflow din modelul Simulink
  • Ieșiți din diagrama Stateflow din modelul Simulink
  • Fiți date temporare
  • Fii specific în spațiul de lucru MATLAB
  • Fii constanți
  • Exportați la codul extern al diagramei Stateflow și al modelului Simulin
  • Importat din codul sursă extern la Stateflow și Simulink

Ierarhia face posibilă organizarea unor sisteme complexe, care definesc strămoșul și structura obiectelor descendente. Un proiect construit ierarhic reduce de obicei numărul de tranziții și conduce la diagrame clare și inteligibile. Flowflow-ul de stat suportă organizarea ierarhică pentru ambele diagrame și stări. Diagramele pot exista în cadrul altor diagrame. O diagramă care există într-o altă diagramă se numește subdiagramă.

În mod similar, statele pot exista în alte state. Flowflow-ul de stat reprezintă o ierarhie a statelor cu super-staturi și substații. De exemplu, această diagramă Stateflow are un superstat care conține două substații.

Cum funcționează stateflow

Superstatul angajat (transfer inclus) conține substațiile primul și al doilea. Superstatul este un strămoș în ierarhie față de prima și a doua stare. Când apare evenimentul ambreiaj, sistemul se deplasează de la starea neutră la superstat "on". Tranzițiile din interiorul superstatului sunt omise în mod deliberat în acest exemplu pentru simplitate.

Condiția este o expresie booleană care specifică faptul că tranziția are loc dacă expresia specificată este adevărată. În diagrama de stare a diagramei [condiție1], aceasta reprezintă o expresie booleană care trebuie să fie adevărată, astfel încât să apară tranziția.

În transmisia automată, trecerea de la prima viteză la cea de-a doua are loc dacă condiția Boolean [speed> prag] este adevărată.

Cum funcționează stateflow

Conexiuni cronologice (joncțiunea istorică)

În transmisia automată, cronologia indică faptul că atunci când ambreiajul provoacă pornirea trecerii de la neutru la super-starea, activarea ultimei viteze (prima sau a doua viteză) activă.

Cum funcționează stateflow

Acțiunile sunt rezultatul executării oricărei părți a diagramei Stateflow. Acțiunea poate fi efectuată ca urmare a unei tranziții de la o stare la alta. Acțiunea poate fi, de asemenea, o reacție la un stat. În figură, segmentul de tranziție de la StateA1b la conexiune este marcat de condiția func1 () a condiției 1, iar segmentul de tranziție de la conexiunea la StateA1c este marcat de acțiunea de tranziție func2 (). Semantica acțiunilor va fi luată în considerare ulterior.

O tranziție care se termină într-o stare poate avea o acțiune de condiție și o acțiune de tranziție, după cum este discutat mai jos. Cu toate acestea, tranzițiile care se termină în legături pot avea numai acțiuni de condiție (nu sunt permise tranzițiile).

Cum funcționează stateflow

Statele pot avea acțiunile de intrare, ieșire și de eveniment _ nume (în cazul unui eveniment numit _). De exemplu,

Limba de acțiune definește tipurile de acțiuni pe care le puteți utiliza și sistemele de notare asociate. Acțiunea poate fi o chemare la o funcție, apariția unui eveniment, atribuirea unei anumite valori unei variabile și așa mai departe.

Flowflow-ul de stat susține paradigmele modelării mașinii de stat finite Moore și Miles. În modelele Miles, modelele sunt asociate cu tranziții, în timp ce în modelul Moore ele sunt asociate cu state. Flowflow-ul de stat susține acțiunile de stat, acțiunile de tranziție și acțiunile condiționate.

Un sistem cu concurrency are două sau mai multe stări care pot fi active în același timp. Acțiunile fiecărei stări paralele sunt în esență independente de celelalte state. În Figura 2-1, StateA2a și StateA2b sunt state paralele (AND). State2 are o descompunere paralelă (I) a statului.

De exemplu, această diagramă de stare are o descompunere paralelă paralelă.

Cum funcționează stateflow

Transmisia, încălzirea și luminile sunt subsisteme paralele într-o mașină. Ele există în paralel și sunt fizic independente una de cealaltă. Există multe alte componente paralele în mașină, de exemplu subsistemul de frânare și subsistemul de curățare a parbrizului.

Reprezentați paralelismul în Stateflow, dând o descompunere paralelă (AND). Stările paralele (AND) sunt afișate de liniile întrerupte în jurul zonelor.

Tranziții prestabilite

Tranzițiile implicite determină care dintre câteva stări exclusive (OR) ar trebui să fie active atunci când există o ambiguitate între două sau mai multe stări exclusive (OR) la același nivel din ierarhie.

De exemplu, în Figura 2-1, tranziția implicită la StateA1 rezolvă ambiguitatea care există cu privire la care dintre substațiile, StateA1 sau StateA2, trebuie să fie activă atunci când statul superstate A devine activ. În acest caz, când StateA este activă, este implicit și statul StateA1.

În următorul subsistem Lights, tranziția implicită la substatul Lights.Off (Lighting.Off) indică faptul că atunci când Superstatul Lights devine activ, substatul Lights.Off devine activ în mod implicit.

Cum funcționează stateflow

Fiți atenți! Conexiunile cronologice suprascriu tranzițiile implicite în superstatele cu descompuneri exclusive (OR).

Fiți atenți! În stări paralele (AND), tranzițiile implicite trebuie să fie întotdeauna prezente pentru a indica care dintre stările lor exclusive (OR) sunt active când starea paralelă devine activă.

Conexiuni Junction

Conexiunile sunt puncte de decizie în sistem. O conexiune este un obiect grafic care simplifică reprezentările schematice Stateflow și facilitează generarea unui cod eficient. Conexiunile oferă modalități alternative de reprezentare a comportamentului dorit al sistemului. În diagrama de flux de mai sus, conexiunea este folosită ca punct de decizie pentru cele două segmente de tranziție care se termină în StateA1c.

Următorul exemplu arată cum se utilizează conexiunile (afișate ca cercuri) pentru construcția if.

Cum funcționează stateflow

Acest fragment este executat după cum urmează:

  1. Dacă condiția [c1] este adevărată, acțiunea condițională a1 este executată și are loc o tranziție necondiționată la prima conexiune (superioară).
  2. Flowflow determină ce ramură a conexiunii de conectare de vârf trebuie selectată (numai una poate fi selectată). Legăturile cu condițiile au prioritate față de conexiunile fără condiții, adică tranziția cu condiția [c2] este considerată prima.
  3. Dacă condiția [c2] este adevărată, acțiunea lui a2 este îndeplinită și are loc trecerea la conexiunea inferioară. Deoarece nu există nicio tranziție care să iasă din această conexiune, diagrama este finalizată.
  4. Dacă condiția [c2] este falsă, are loc un salt necondiționat pe partea dreaptă a segmentelor (nu are o condiție).
  5. Dacă condiția [c3] este adevărată, acțiunea condițională a3 este executată și are loc o tranziție la conexiunea inferioară. Diagrama este completă.
  6. Dacă condiția [c3] este falsă, execuția se termină pe unitatea intermediară.

Știați că modelarea intuitivă este procesul de creare a unui model bazat pe intuiție, idei și experiență de viață.

ȘTIRI ALE FORUMULUI
Cavalerii teoriei eterului







Articole similare

Trimiteți-le prietenilor: