Sei sulla pagina 1di 28

Modellare e simulare DES

con Stateflow

Una breve introduzione alluso del blockset


Stateflow ed al suo interfacciamento con
Matlab

Stefano Di Cairano, Modellare e Simulare DES in stateflow 1

Parte I:

Fondamenti di Stateflow

Stefano Di Cairano, Modellare e Simulare DES in stateflow 2

1
Cosa Stateflow

Un blockset di simulink per progettare e simulare DES

Si interfaccia con Simulink e Matlab

Permette tramite Simulink luso di elementi continui e


discreti (modellizzazione di sistemi ibridi)

La progettazione si basa su automi ed eventi

Stefano Di Cairano, Modellare e Simulare DES in stateflow 3

Quando serve stateflow

Requisiti

Design

Implem.
Testing

V&V

Vari steps del waterfall model

C anche un generatore di codice proprietario


Stefano Di Cairano, Modellare e Simulare DES in stateflow 4

2
Elementi in Gioco

Quelli dei DES:


Stati
Transizioni
Eventi

Pi qualcosatro:
Variabili
Raggruppamenti
Reti e Sincronizzazione

Stefano Di Cairano, Modellare e Simulare DES in stateflow 5

Gli Stati in Stateflow

Per ora possiamo dire che funzionano come quelli visti in


teoria

Necessitano di un nome univoco che inizi per lettera

E necessaria una transizione iniziale (circa equivalente allo


stato iniziale nel modello teorico)

Ma dopo vedremo che in realt hanno tante possibilit


aggiuntive

Stefano Di Cairano, Modellare e Simulare DES in stateflow 6

3
Le transizioni in Stateflow

Hanno una sintassi del tipo


eventoIn,[guardia]/eventoOut,updateVar

eventoIn : levento che scatena la transizione


guardia : una condizione sulle variabili che deve essere
verificata per avere la transizione
eventoOut : evento scatenato dal sistema quando si verifica
la transizione
updateVar : aggiornamento delle variabili
A tra poco per capire cosa sono le variabili

Stefano Di Cairano, Modellare e Simulare DES in stateflow 7

Una transizione

Stefano Di Cairano, Modellare e Simulare DES in stateflow 8

4
Eventi

Devono essere definiti come variabili particolari

Noi useremo gli eventi triggered, cio levento indicato dalla


variazione del valore di un segnale

Il tipo di trigger pu essere scelto (rising, falling, either)

Gli eventi possono essere sia esterni al sistemi sia interni

Stefano Di Cairano, Modellare e Simulare DES in stateflow 9

Le Variabili

Come in un qualsiasi linguaggio di programmazione (int,


uint, double) con specifica sui bits anche gli arrays

Semanticamente non aggiungono niente

provate per a disegnare lautoma di un contatore modulo


256 (registro a 8 bit)

Senza variabili vi servono 256 stati buon lavoro!!

Stefano Di Cairano, Modellare e Simulare DES in stateflow 10

5
Progetto con le variabili

Ecco il contatore fatto con le variabili

e,[N<255]/N:=N+1
N: variabile di conteggio e output

e: evento di conteggio
counting

e,[N==255]/N:=0

Stefano Di Cairano, Modellare e Simulare DES in stateflow 11

Guidelines alluso delle variabili

Posso modellizzare tutto con un solo stato e tante variabili


(ho un programma basato sui switch-case) o con tanti stati e
nessuna variabile (automa standard). In generale:

Usare le variabili solo quando necessario e per


comportamenti ricorrenti e uniformi

Usare gli stati per evidenziare una particolare condizione del


sistema a cui sono associati certi comportamenti

Stefano Di Cairano, Modellare e Simulare DES in stateflow 12

6
Variabili e Stati in una coda

Per una coda standard ad esempio potrei avere:

A[N<k-1]/N++
Stati:
Coda vuota P[N==1]/N-- P/N--

Coda con elementi V E P


Coda piena
A/N++ A[N==k-1]/N++

Una variabile: P[N>1]/N--

Nulla in coda vuota


Incrementata via via in coda con elementi
Fissata al massimo in coda piena

Stefano Di Cairano, Modellare e Simulare DES in stateflow 13

Due parole sul Motore Interno

E una simulazione event-driven: lo stato interno viene


aggiornato quando si verifica un evento anche se ininfluente

Se una transizione non richiede eventi si verifica al primo


aggiornamento, cio al primo evento esterno

compresa la transizione iniziale

Dunque non un modello puramente asincrono

Stefano Di Cairano, Modellare e Simulare DES in stateflow 14

7
Parte II:

Design in Stateflow

Stefano Di Cairano, Modellare e Simulare DES in stateflow 15

Per Iniziare

1. Da Matlab aprite Simulink

2. Aprite un nuovo modello (vuoto)

3. Inserite il blocco chart dal blockset Stateflow

4. Aprite il blocco chart (doppio click)

5. Adesso siete in stateflow

Stefano Di Cairano, Modellare e Simulare DES in stateflow 16

8
Design dellautoma

Stati e transizioni si inseriscono da un editor grafico

abbastanza intuitivo ma non perfetto vedrete!

Associate ad ogni stato un nome e ad ogni transizione


letichetta corrispondente (la sua sintassi)

Stefano Di Cairano, Modellare e Simulare DES in stateflow 17

Unidea del Layout

Stefano Di Cairano, Modellare e Simulare DES in stateflow 18

9
Design dellautoma

N.B. : ciascuna parte delletichetta della transizione


opzionale, usatela solo se vi serve

Aggiungete sempre una transizione iniziale

Occhio alla sintassi:


Assegnamento: :=
Confronto: ==
Gli operatori di incremento (++, += ecc..) a volte danno
problemi
Stefano Di Cairano, Modellare e Simulare DES in stateflow 19

Aggiungere variabili e eventi

Potete usare il menu add per aggiungere variabili e eventi


interni o esterni

Fra interni ed esterni sintatticamente non c differenza

Gli elementi esterni per sono acquisiti tramite porte dal


modello simulink di cui lo stateflow fa parte

Quando aggiungo elementi esterni il layout top-level cambia

Stefano Di Cairano, Modellare e Simulare DES in stateflow 20

10
Layout top-level

Porta degli eventi

Stefano Di Cairano, Modellare e Simulare DES in stateflow 21

considerazioni sul layout

Per ogni input o output che inserite si crea un nuovo


ingresso di nome corrispondente

Gli eventi in output hanno la stessa grafica dei dati, ma


quando scatenate un evento. su di essi si ha un fronte

Per quanti eventi in input aggiungete si ha sempre una sola


porta

..continuate a seguire e vedremo come fare

Stefano Di Cairano, Modellare e Simulare DES in stateflow 22

11
Propriet
delle
variabili
(pannello)

Stefano Di Cairano, Modellare e Simulare DES in stateflow 23

Propriet delle Variabili


Name: nome della variabile
Scope: il range di visibilit locale input output costante
Type: int, uint, double ecc.. + specifica sui bits (8, 16)
Port: associa una porta del blocco dal punto di vista di
simulink
Units: unit di misura (per documentazione)
Limit Range: specifca i limiti (min/Max) della variabile
Array: selezionarla e settarla se si vuole creare un array
Initialize: indica da dove inizializzare la variabile e a quanto

Altre opzioni per debugger e workspace

Stefano Di Cairano, Modellare e Simulare DES in stateflow 24

12
Propriet degli Eventi (pannello)

Stefano Di Cairano, Modellare e Simulare DES in stateflow 25

Propriet degli Eventi

Name: ovvio
Scope: come per le variabili
Port: qui diventa fondamentale per lassociazione con segnali
esterni
Trigger: indica il fronte del segnale su cui ci si sincronizza
rising/falling/either

Altre opzioni per Debugger

Stefano Di Cairano, Modellare e Simulare DES in stateflow 26

13
Linking degli Eventi Esterni

Per le variabili esterne ho tante porte, per gli eventi una sola.
Come fare?

Si usa un bus: tanti segnali indicizzati su una sola linea

Si linka lindice del segnale nel bus con quello nella propriet
dellevento dandogli lo stesso indice!

Dopo vedremo il blockset del bus

Stefano Di Cairano, Modellare e Simulare DES in stateflow 27

Temporizzazione

Talvolta serve un riferimento temporale come?

Sincronizzazione su clock: si inserisce nel modello simulink


un generatore di segnale periodico a periodo significativo e ci
si sincronizza su questo

Come il clock nei calcolatori uso un segnale a onda quadra


con frequenza molto pi alta dei parametri del sistema

Stefano Di Cairano, Modellare e Simulare DES in stateflow 28

14
Eventi Esterni e Transizione Iniziale

Anche eventi singoli possono essere aggiunti dallesterno


talvolta serve

Ad esempio in un modello event-driven puro bene avere


un segnale che porta tutti gli automi presenti nello stato
iniziale contemporaneamente

Si pu usare la sincronizzazione rising su uno step molto


vicino a t=0 (e.g. t =10-3)

Linizializzazione da componenti user-defined talvolta fallisce


(Bug del simulatore??)

Stefano Di Cairano, Modellare e Simulare DES in stateflow 29

Il tool Explore

Contiene tutte le definizioni e le propriet di tutto!


Accessibile dal men toolsexplore
Usatelo per avere unidea globale del sistema e per modifiche
Stefano Di Cairano, Modellare e Simulare DES in stateflow 30

15
Debugger (pannello)

Stefano Di Cairano, Modellare e Simulare DES in stateflow 31

Il Debugger

Attivo a runtime, permette lanalisi dei runs degli automi


Breakpoints: per fermare la simulazione
Animation: per visualizzare le transizioni (..ma rallentano)
Transition inconsistency: controlla se avete creato un automa
non deterministico (funziona comunque con priorit)
State Inconsistency: segnala la mancanza di stato attivo, si
verifica quando la transizione iniziale non corrisponde allevento

per il resto, da scoprire!!!

Stefano Di Cairano, Modellare e Simulare DES in stateflow 32

16
Parte III:

Interfacciamento di Stateflow

Stefano Di Cairano, Modellare e Simulare DES in stateflow 33

Stateflow e Simulink

Stefano Di Cairano, Modellare e Simulare DES in stateflow 34

17
Le Connessioni

Stateflow si interfaccia verso blocchi Simulink e verso Matlab

Con modello di un controllore digitale

Le porte del chart permettono di acquisire i segnali di


simulink e di inviarvi i segnali elaborati

Esiste un modo per accedere variabili e funzioni Matlab nei


grafi

Stefano Di Cairano, Modellare e Simulare DES in stateflow 35

Simulink blocks

Una breve carrellata di blocchi utili

Stefano Di Cairano, Modellare e Simulare DES in stateflow 36

18
Signals

Generatori di Segnali (sources)

Onda quadra per il tempo


Step per inizializzazione

Signal builder: user defined


signals

Generatori Stocastici

Stefano Di Cairano, Modellare e Simulare DES in stateflow 37

Routing

Routing dei segnali


Routing manuale
Routing automatico
Generatore di Bus

Stefano Di Cairano, Modellare e Simulare DES in stateflow 38

19
Operators

Operatori Non-Lineari
Operatori Logici e Relazionali
Operatori Aritmetici

Stefano Di Cairano, Modellare e Simulare DES in stateflow 39

Simulink vs Matlab

Lettura da/scrittura su files .mat

Lettura da/ scrittura su variabili nel workspace


Stefano Di Cairano, Modellare e Simulare DES in stateflow 40

20
Monitors

Per analizzare i segnali

Usate il terminatore per uscite disconnesse


Stefano Di Cairano, Modellare e Simulare DES in stateflow 41

Stateflow vs Matlab

E possibile usare variabili e funzioni di Matlab direttamente


dentro Stateflow

Operatore ml: ml.chiamataFunzione, ml.nomeVariabile

Ad esempio:
e/c:=ml.randn(1) assegna a c un valore gaussiano
normale distribuito

Stefano Di Cairano, Modellare e Simulare DES in stateflow 42

21
Statistic Toolbox

Contiene pdf e cdf di tutti i processi pi comuni

Contiene i generatori di variabili distribuite secondo queste pdf

Processi di Poisson: poissrnd(L) genera numeri distribuiti


secondo Poisson L=t

Processi esponenziali: exprand(M) genera numeri distribuiti


esponenzialmente =M-1

Stefano Di Cairano, Modellare e Simulare DES in stateflow 43

Un Generatore di Eventi Stocastici

Esempio

Stefano Di Cairano, Modellare e Simulare DES in stateflow 44

22
Il problema

Vogliamo un dispositivo che genera eventi eventi casuali per


simulare i nostri sistemi

Non abbiamo un blocco che fa questo lo costruiremo


come automa

Per semplificare non costruiremo un generatore di eventi, ma


un dispositivo che genera i tempi di vita, casualmente e poi li
usa per rilasciare gli eventi al momento opportuno

Stefano Di Cairano, Modellare e Simulare DES in stateflow 45

Funzioni ed Elementi

Per generare i tempi di vita ci servono numeri casuali generati


esponenzialmente

Useremo la funzione Matlab exprnd tramite loperatore ml

Levento sar poi rilasciato quando il suo tempo di vita arriva


a zero: ci serve un meccanismo di temporizzazione

Useremo un generatore di onda quadra come clock

Stefano Di Cairano, Modellare e Simulare DES in stateflow 46

23
Generazione del tempo di vita

Il generatore crea un nuovo tempo di vita con parametro M e


azzera una variabile di conteggio

Stefano Di Cairano, Modellare e Simulare DES in stateflow 47

Attesa

Si aspetta finch non trascorso il tempo di vita


N.B. K il fattore di scala rispetto alla frequenza del clock

Stefano Di Cairano, Modellare e Simulare DES in stateflow 48

24
Lancio dellEvento
Quando trascorso
il tempo di vita si
scatena levento e si
ricarica

N.B. Levento in
uscita una
variazione del
fronte del segnale,
non un impulso

Stefano Di Cairano, Modellare e Simulare DES in stateflow 49

Transizione iniziale
Aggiungere la
transizione iniziale
con il suo evento
di inizializzazione

Attenzione: il bus
sembra
sovrascrivere gli
eventi
contemporanei

Stefano Di Cairano, Modellare e Simulare DES in stateflow 50

25
Variabili ed Eventi

Settare le variabili e gli eventi ad esempio da Explore


Occhi ai cast impliciti

Stefano Di Cairano, Modellare e Simulare DES in stateflow 51

Interfaccia Simulink

Generatori e Bus Creator


Periodo di Clock: 10-3
Step di inizializzazione 10-4 (per evitare sovrascrittura)

Stefano Di Cairano, Modellare e Simulare DES in stateflow 52

26
Interfaccia Simulink (2)

Slider Gain e costante per avere il parametro della


distribuzione esponenziale variabile on line
Per velocizzare: chiudere command window e chart

Stefano Di Cairano, Modellare e Simulare DES in stateflow 53

Simulazione

Simulazione su 200 sec. M=3 (media della distribuzione)


Ogni variazione un evento
Stefano Di Cairano, Modellare e Simulare DES in stateflow 54

27
Simulazione (2)

Simulazione su 45 sec. con un contatore degli eventi lanciati

Stefano Di Cairano, Modellare e Simulare DES in stateflow 55

Esercitazione I

Modificare il generatore di eventi in modo da essere abilitato


e disabilitato a seconda dello stato

Creare il sistema di una semplice coda di capienza 10 con


a=1 sec e p=2 sec

Formulare delle ipotesi sul raggiungimento dello stato di


coda satura e verificarle

Verificare il tempo di permanenza nello stato di coda piena

Stefano Di Cairano, Modellare e Simulare DES in stateflow 56

28

Potrebbero piacerti anche