113 lines
6.1 KiB
Plaintext
Executable File
113 lines
6.1 KiB
Plaintext
Executable File
3.3.3.3 Il formalismo SAN, il tool Mobius e alcuni esempi di modelli sviluppati
|
|
|
|
Per definire e valutare i modelli proposti, è stato utilizzato il
|
|
flessibile e potente ambiente
|
|
di modellazione Möbius [DCC02] implementato dall'omonimo tool [CGK09]
|
|
(i cui componenti principali sono mostrati in Figura xx1),
|
|
che supporta una molteplicità di formalismi di modellazione e di
|
|
risolutori e le loro interazioni.
|
|
Il modello complessivo dell'ambiente Möbius è ottenuto mediante uno o
|
|
più sottomodelli composti gerarchicamente (come mostrato in Figure
|
|
xx1) al livello di Abstract Functional Interface (AFI) [DCCDDDSW02,DKSC02]
|
|
utilizzando operatori, come Join e Rep [SM91], basati
|
|
sulla condivisione di variabili di stato (SV) o azioni.
|
|
SV e azioni sono primitive che generalizzano a livello di AFI i posti
|
|
e le transizioni delle reti di Petri.
|
|
Ogni sottomodello può essere atomico o a sua volta composto.
|
|
Sul modello risultante vengono definite prima le variabili di
|
|
performance (che rappresentano le misure di interesse), basate su
|
|
strutture di guadagno, ed infine gli
|
|
studi da valutare in base alla variabilità dei parametri del modello.
|
|
|
|
Tutti i formalismi e i risolutori supportati da Möbius sono basati sul
|
|
linguaggio di programmazione orientato ad oggetti C++.
|
|
Pertanto, lo strumento supporta l'utilizzo del codice C++ nelle
|
|
primitive usate per i modelli,
|
|
in particolare strutture dati C++ esterne
|
|
staticamente definite al momento della compilazione ed il collegamento
|
|
di librerie C++ esterne, come mostrato in Figura xxx per le librerie
|
|
di risoluzione delle equazioni di flusso di potenza e del problema di
|
|
ottimizzazione per trovare la migliore configurazione della Smart Grid
|
|
a seguito di un cambiamento di stato.
|
|
|
|
Tra i formalismi per la definizione dei modelli atomici, è stato
|
|
scelto quello delle Stochastic Activity Network (SAN) [SM01], una
|
|
estensione stocastica delle reti di Petri basata sulle seguenti
|
|
primitive grafiche: posti semplici o estesi (rappresentati da cerchi
|
|
blu e arancioni, rispettivamente), attività temporizzate o istantanee
|
|
(barre verticali vuote o sottili), porte di input
|
|
e di output (triangoli con la punta a sinistra o a destra). In
|
|
particolare, un posto semplice rappresenta il tipo "short" del
|
|
linguaggio C++, mentre un posto esteso representa tipi di dati di base
|
|
primitivi (come "short", "float", "double") e tipi "struct" o "array"
|
|
di tipi primitivi o di posti estesi.
|
|
Il tempo al completamento di una attività è una variabile casuale
|
|
indipendente che
|
|
può avere una qualunque delle numerose distribuzioni
|
|
supportate da Möbius. Ad ogni attività può essere associato uno o più
|
|
case (piccoli cerchietti alla destra dell'attività) che rappresentano
|
|
l'incertezza probabilistica al completamento dell'attività. Infine i
|
|
gate permettono di specificare condizioni di abilitazione e regole di
|
|
completamento delle attività a cui sono connessi.
|
|
|
|
Il modello composto è ottenuto seguendo l'approccio modulare e
|
|
composizionale DARep [CDM17,CDM21] che estende Möbius con un nuovo
|
|
operatore D (basato su script Perl che modificano i file xml generati
|
|
da Möbius) per la replicazione indicizzata di
|
|
uno o più modelli atomici "template". Un template rappresenta un
|
|
componente generico del sistema modellato in cui possono essere
|
|
definite variabili di stato (SV) "dependency-aware", cioè SV che sono
|
|
condivise solo tra alcune istanze del template in base ad una
|
|
specifica topologia associata a ciascuna di esse (a
|
|
differenza di quelle "common" o "local" che sono condivise tra tutte le
|
|
istanze o solo locali a ciascuna di esse, rispettivamente).
|
|
|
|
Figura 3.13 è il template di SAN atomica MV_DS_SAN che rappresenta un
|
|
generico generatore distribuito (DG) ed il suo ambiente esterno.
|
|
In particolare
|
|
esso modella la generazione di potenza attiva e reattiva (P e Q,
|
|
tramite le porte WeatherChange e l'attività WPChange), la
|
|
previsione di potenza generata e l'errore di previsione (tramite le
|
|
porte isWPset e ForecastError, e le attività WP_NextSchedT and
|
|
WPForecastChange), l'occorrenza dei fallimenti e le conseguenti azioni
|
|
di ripristino (nella parte in basso ed in alto a destra di Figura
|
|
3.13). Il posto UpdateEState è di tipo "dependency-aware" essendo
|
|
condiviso tra ogni singola istanza di MV_DS_SAN e il sottomodello
|
|
ESTATE_SAN.
|
|
|
|
Figura 6.3 è il template di SAN atomica (con una sola istanza)
|
|
ESTATE_SAN che rappresenta i cambiamenti dello stato
|
|
elettrico dell'infrastruttura EI (mediante la risoluzione delle
|
|
equazioni di flusso di potenza) e la politica di controllo della
|
|
tensione elettrica (tramite risoluzione di un problema di ottimizzazione)
|
|
come descritta in Figura 2, condividendo posti (cioè SV) con tutte le
|
|
altre istanze di template SAN.
|
|
In dettaglio, la stima del nuovo stato è
|
|
attivata dalla porta di input inUpdate, che abilita l'attività
|
|
update non appena UpdateEState==1,
|
|
ed è effettuata dalla porta di
|
|
output NewES, che in base ai risultati delle equazioni di flusso
|
|
aggiorna i valori dei posti P, Q, V, Delta, F
|
|
(flusso di potenza sulle linee) e I (flusso di corrente sulle linee)
|
|
che rappresentano le grandezze elettriche di EI e richiede un'azione
|
|
di controllo aggiornando il valore del posto VOLT_CTRL.
|
|
I parametri elettrici sono memorizzati in place di tipo
|
|
"dependency-aware" e sono condivisi con istanze di altri template.
|
|
Altri place di tipo "dependency-aware" sono condivisi con altre
|
|
istanze di SAN template, come ad esempio DG_CTRL_P, che viene usato
|
|
dal controllo per identificare un cambiamento di potenza
|
|
generata o il fallimento (DG_CTRL_P==0) in una istanza
|
|
di MV_DS_SAN.
|
|
Le azioni di controllo, eseguite dalla porta di output VoltageCTRL,
|
|
sono attivate quando il place VOLT_CTRL==1.
|
|
Questo accade ad intervalli di tempo regolari, quando la porta di
|
|
output PromoteVoltageCTRL aggiorna il valore di VOLT_CTRL, o quando
|
|
avviene un cambiamento di stato in cui ci sono bus con il voltaggio
|
|
fuori dai limiti.
|
|
Infine, quando a seguito dell'aggiornamento di uno stato viene messo
|
|
un token nel posto Blackout, la porta di output TurnOff si
|
|
occupa delle situazioni di
|
|
blackout aggiornando opportunamente i posti (ad
|
|
esempio, ponendo a zero i valori elettrici di potenza e tensione di
|
|
tutti i carichi).
|