• Non ci sono risultati.

Modellazione di CPSs con Ptolemy PROSSIMO Progettazione, sviluppo e ottimizzazione di sistemi intelligenti multi-oggetto

N/A
N/A
Protected

Academic year: 2021

Condividi "Modellazione di CPSs con Ptolemy PROSSIMO Progettazione, sviluppo e ottimizzazione di sistemi intelligenti multi-oggetto"

Copied!
60
0
0

Testo completo

(1)

Modellazione di CPSs con Ptolemy

PROSSIMO

Progettazione, sviluppo e ottimizzazione di sistemi intelligenti multi-oggetto

Azioni Cluster “Top Down”

Progetto finanziato con fondi POR FESR 2014/2020

ASSE PRIORITARIO I “RICERCA SCIENTIFICA, SVILUPPO TECNOLOGICO E INNOVAZIONE”

(2)

Evoluzione dei sistemi

Sistemi embedded – Dispositivi integrati con risorse limitate, che controllano una o più funzioni.

M2M (Reti di sistemi embedded) – Connettività per favorire la comunicazione tra diversi sistemi embedded.

Internet of Things (IoT) – indica una rete di comunicazione che collega le “cose” con capacità di individuazione, rilevamento ed elaborazione.

Cyber-Physical System (CPS) – la generazione futura di sistemi embedded, interconnessi e dialoganti tramite l’Internet delle cose.

(3)

Cyber-Physical System

Un CPS è un sistema in cui la parte “cyber” e i processi fisici sono strettamente integrati.

I CPS descrivono sistemi embedded e reti di comunicazione che con- trollano fenomeni e processi in cui la parte cyber e la parte fisica interagiscono e si influenzano l’una con l’altra

I CPS, dunque, rappresentano l’intersezione (e non l’unione) tra fisica e cibernetica: le due componenti non si possono comprendere se separate, ma esclusivamente nella loro interazione.

(4)

Strategie per la creazione di CPS

Specifica, modellazione e analisi.

Concorrenza Interoperabilità Comunicazione

Scalabilità e complessità della gestione.

Eterogeneità Facilitare l’analisi

Comprendere i sistemi complessi Validazione e verifica.

Validazione: processo che determina se un progetto corrisponde alle necessità dell’utente,

Verifica: processo che determina se un progetto rispetta una serie di

(5)

Strumenti di sviluppo per CPS

Un buono strumento di sviluppo per CPS deve possedere:

Linguaggio espressivo Semantica formale

Interfaccia grafica intuitiva Possibilità di simulazione Estendibilità

Eterogeneità Multidominio

Libreria matematica efficace Integrabilità

(6)

Ptolemy II

Il progetto Ptolemy studia la modellizzazione, la simulazione e la progettazione di sistemi embedded simultanei, in tempo reale.

Si focalizza su modelli eterogenei e sull’unione di componenti concorrenti.

Il principio fondamentale alla base del progetto è l’uso di modelli di calcolo ben definiti che regolano l’interazione tra i componenti.

(7)

Progettazione basata sul componente

Trasparenza dei componenti Gerarchia

Modularità Riutilizzabilità

(8)

Sintassi Astratta

Porte e relazioni in nero Entità in blu

(9)

Una classe di modelli semantici : Produttore/Consumatore

Gli attori sono attivi? passivi? reattivi?

Le comunicazioni sono temporizzate? sincronizzate? con memoria?

(10)

Domini: forniscono modelli semantici per le interazioni tra componenti

CSP – thread concorrenti con rendezvous CT – modellazione a tempo continuo DE – sistemi a eventi discreti

DT – tempo discreto (guidato dal ciclo) PN – reti di processo

SDF – flusso di dati sincrono SR – sincrono/reattivo ...

Ognuno di questi domini definisce un’ontologia di componenti e una

(11)

Domini: una vista d’insieme

(12)

Modellazione a eventi discreti

Il dominio a eventi discreti (DE) in Ptolemy II modella i componenti che interagiscono con eventi discreti collocati nel tempo. Per una gestione efficiente degli eventi viene utilizzato uno schedulatore a coda e gli eventi simultanei vengono gestiti in modo sistematico e deterministico.

(13)

Modellazione a tempo continuo

Il dominio a tempo continuo (CT) in Ptolemy II modella i componenti che interagiscono con segnali di tempo continuo. Viene utilizzato un solutore Runge-Kutta ODE di dimensioni variabili, ampliato con la gestione di eventi discreti (tramite la

modellazione delle funzioni delta di Dirac).

(14)

Cosa è un Dominio?

Un Dominio è la definizione dell’interazione dei componenti e il software che supporta questa interazione.

La modellazione multi-dominio significa:

Composizione gerarchica

sono ammessi modelli eterogenei I Domini possono essere specializzati

es. abilitando la verifica

Separazione dei meccanismi di comunicazione.

(15)

Ptolemy II – il tool

Basato su Java

Molti domini implementati Modellazione multi-dominio Sintassi XML per la persistenza dei dati

Interfaccia grafica con diagram- ma a blocchi

Sistema dei tipi estensibile Generatore di codice

(16)

Terminologia di base

Modello

insieme di attori interconnessi e un direttore Attore

Porte di input e output collegate da relazioni Comunica usando i token

Quando viene lanciato produce e consuma token Direttore

Implementazione della semantica per l’interazione tra componenti

(17)

Principi del progetto Ptolemy II

(18)

Package di Ptolemy II

(19)

Classi principali di Ptolemy II

(20)

Package del Kernel

Il kernel di Ptolemy II fornisce una sintassi astratta - grafici raggruppati - che ben si adatta ad una vasta gamma di domini, che vanno dalle macchine a stati alle reti di processo.

Ecco un semplice grafico con tre entità correlate.

(21)

Classi base del Kernel

(22)

Clustering

Le entità e le porte composite in Ptolemy II forniscono un meccanismo di astrazione semplice e potente, indipendente dal dominio

(23)

Package degli Attori

Servizi

broadcast multicast bus

informazioni sulla topologia della cache

clustering

parametrizzazione assegnazione dei tipi polimorfismo

(24)

Manager e Direttori

I Direttori sono specifici del dominio. Un attore composito con un Direttore diventa opaco. Il Manager è indipendente dal dominio.

(25)

Semantica Astratta

(26)

Semantica Astratta [continua]

(27)

Semantica Astratta [continua]

(28)

Esempio: masse “appiccicose”

(29)

Masse “appiccicose”: diagramma a blocchi

(30)

Masse “appiccicose”: Simulazione

(31)

Vista gerarchica

(32)

Vista gerarchica [continua]

(33)

Vergil: l’interfaccia grafica di Ptolemy II

(34)

Panoramica dell’editor

(35)

La toolbar

(36)

Semplice modello di Ptolemy II

(37)

Anatomia di un Attore

(38)

Esempio: Hello world

(39)

Configurare un attore (es. il “Const parameter”)

Per configurare l’attore Const, fai doppio clic sull’icona dell’attore o fai clic con il pulsante destro del mouse sull’icona dell’attore Const e seleziona “Cu- stomize →Configure”. Dovresti vedere la finestra di dialogo nella figura.

Per inserire un valore, ad esempio la stringa “Hello World”, inseriscila come parametro nel campo value e fai clic sul pulsante Commit. Assicurati di includere le virgolette doppie, in modo che l’espressione venga interpretata correttamente come una stringa.

(40)

Creare una relazione

Per collegare (ad esempio come in figura) l’output dell’attore Ramp all’input degli altri due attori, abbiamo bisogno di aggiungere una relazione esplicita nel diagramma. Una relazione è rappresentata da un diamante nero, come mostrato in figura. Può essere creata facendo clic sullo sfondo e tenendo premuto il tasto Ctrl o facendo clic sul pulsante nella barra degli strumenti sul il diamante nero.

(41)

Esempio: esplorare i tipi di dato

L’attore Ramp si trova in in Sources, SequenceSources e l’attore AddSubtract si trova in Math. Impostare il parametro valore della costante su 0 e il parametro iterations del direttore su 5. L’esecuzione del modello dovrebbe dare come risultato 5 numeri tra 0 e 4, come mostrato nella figura. Questi sono i valori prodotti dall’attore Ramp, ai quali viene sottratto il valore dell’attore Const. Prova a cambiare il valore dell’attore Const e guarda come cambiano i 5 numeri in uscita.

(42)

Esempio: esplorare i tipi di dato [continua]

Se si modifica il valore dell’attore Const con la stringa “Hello World”, quando si esegue il modello, dovresti vedere una finestra di eccezione, come mostrato in figura. In questo caso, la finestra delle eccezioni ti dice che hai provato a sottrarre un valore di stringa da un valore intero, il che non ha senso. Questo è un esempio di errore di tipo.

(43)

Eterogeneità gerarchica

In Ptolemy II, la semantica di uno schema a blocchi è definita da un

“direttore”, che è un componente che viene inserito nel modello. Una

“semantica astratta” definisce

l’interazione tra i livelli della gerarchia in cui la semantica differisce.

(44)

Gerarchia: creare un attore composito

Per prima cosa apri un nuovo editor grafico e trascina in un

CompositeActor dalla libreria Utilities. Ad esempio creiamo un attore che generi rumore su di un canale di trasmissione. Innanzitutto, utilizzando il menu di scelta rapida (ottenuto facendo clic con il tasto destro sull’attore composito), seleziona “Customize → Rename” e dai un nome che si addice di più, ad esempio “Channel”, come mostrato nella figura.

(45)

Gerarchia: creare un attore composito [continua]

Usando nuovamente il menu di scelta rapida sull’attore, selezionare “Open actor” (si può utilizzare anche la combinazione Ctrl+L). Dovresti ottenere un editor vuoto, come mostrato in figura.

(46)

Gerarchia: creare un attore composito [continua]

Adesso bisogna aggiungere alcune porte all’attore composito. Si possono aggiungere selezionandole dalla toolbar oppure si può anche fare clic con il pulsante destro del mouse sullo sfondo dell’attore composito e selezionare

“Configure Ports” per modificare se una porta è un input, un output o un multiporta. Per questo esempio aggiungere una porta di input ed una porta di output.

(47)

Gerarchia: creare un attore composito [continua]

Adesso bisogna aggiungere un attore Gaussian dalla libreria Random e un attore AddSubtract e collegarli come in figura.

(48)

Gerarchia: creare un attore composito [continua]

L’attore composito nel modello (sopra) e la sua implementazione (sotto).

(49)

Gerarchia: creare un attore composito [continua]

il risultato della simulazione.

(50)

Usare le classi e le istanze degli attori

(51)

Macchine a Stati Finiti

Una macchina a stati è un sistema le cui uscite dipendono non solo dagli ingressi correnti, ma anche dallo stato corrente del sistema. Lo stato di un sistema è un riepilogo di tutto ciò che il sistema deve sapere sugli input precedenti per produrre l’output. Lo stato di un sistema può essere

rappresentato da una variabile di stato s ∈ Σ, dove Σ è l’insieme di tutti i possibili stati in cui il sistema può trovarsi. Una macchina a stati finiti (FSM) è una macchina a stati in cui Σ è un insieme finito. In Ptolemy II una FSM viene rappresentata tramite l’attore FSMActor.

(52)

Macchine a Stati Finiti [continua]

Un FSMActor è un attore composito in cui il raffinamento è costituito da stati e transizioni piuttosto che da altri attori. Ptolemy II fornisce una notazione visiva per questi stati e transizioni. In generale un FSMActor può avere un numero qualsiasi di porte di input e output. L’attore reagisce agli input e produce gli output. L’attore FSM contiene un numero finito di stati. Uno di questi stati è uno stato iniziale, che è lo stato dell’attore all’inizio dell’esecuzione del modello. Lo stato iniziale è indicato da un contorno in grassetto. Alcuni stati possono anche essere stati finali, indicati visivamente con un doppio contorno. Gli stati sono collegati da transizioni.

(53)

Macchine a Stati Finiti [continua]

L’attore FSMActor si trova in MoreLibraries→Automata. È possibile utilizzare in modo equivalente l’attore ModalModel(è un attore più generale e può fare molto di più di un FSMActor). Innanzitutto, trascina l’attore nel modello dalla libreria. Popolare l’attore con le porte di input e output facendo click con il pulsante destro del mouse e selezionando [Open Actor].

Trascina uno o più stati. Per creare transizioni tra stati, tieni premuto il tasto Ctrl e fai click e trascina il mouse da uno stato all’altro. I punti di presa sulle transizioni possono essere utilizzati per controllare la curvatura e il posizionamento delle stesse. Fare doppio clic (o click con il tasto destro e selezionare [Configure]) sulla transizione per impostare la guardia, le azioni di output e di impostazioni delle variabili immettendo il testo nella apposita finestra di dialogo. È inoltre possibile specificare un’annotazione associata alla transizione che funziona come un commento.

(54)

Macchine a Stati Finiti [continua]

Notazione visiva per una macchina a stati in Ptolemy II con due porte di ingresso, due porte di uscita, tre stati e quattro transizioni.

(55)

Macchine a Stati Finiti [continua]

Editor per l’attore FSMActor

(56)

Macchine a Stati Finiti [continua]

Finestra di dialogo per la configurazione di una transizione in una FSM.

(57)

Macchine a Stati Finiti [continua]

Esempio: Un modello di termostato con isteresi utilizzando una FSM.

(58)

Politica di esecuzione per un FSMActor

Nel metodo fire() l’attore FSMActor esegue i seguenti step:

1 legge input;

2 valuta le guardie sulle transizioni in uscita dello stato attuale;

3 sceglie una transizione la cui guardia è valuta come vera; e

4 esegue le azioni di output sulla transizione scelta, se presente.

Nel metodo postfire() l’attore FSMActor esegue i seguenti step:

5 esegue le azioni impostate della transizione scelta; e

6 cambia lo stato corrente nella destinazione della transizione scelta.

(59)

Creare un Modal Model

Un ModalModel è un attore gerarchico, come un attore composito, ma con molteplici raffinamenti anziché solo uno. Ogni raffinamento dà un comportamento.

(60)

Verifica e validazione

Quello che molte persone desiderano....

Un pulsante all’interno del modello che quando viene premuto dirà loro se il design è corretto o meno.

Riferimenti

Documenti correlati

Per quanto riguarda il WP3 “Sperimentazione e sviluppo”, esso ha avuto inizio a mese 6 ed è composto da quattro attività, tre delle quali sono ancora in corso mentre il

HW/SW co-design e monitoring (HW/SW) di sistemi Novembre 2019 Strumenti software per la modellazione di CPS Novembre 2019 Tecniche e strumenti software per l’analisi formale di

Programmare CPS 6= programmare parte cyber k programmare parte fisica Definizione (Programma ibrido).. 16

Monitoraggio a distanza e utilizzo delle piattaforme mobili per il monitoraggio puntuale in un contesto di interazione con l’essere umano (es. comandi vocali). Si vogliono gestire

Le assunzini dell’i-esimo sottocomponente devono derivare dai contratti degli altri sottocomponenti più le assunzioni della componente padre.. Obblighi

Luca Pulina, Responsabile scientifico del progetto cluster PROSSIMO realizzata per e dagli studenti. Dott.ssa Francesca Palumbo, Ricercatrice dell'Università

Tecniche e strumenti software per l’analisi formale di CPS Dicembre 2019 Strumenti software per la modellazione di CPS Dicembre 2019 HW/SW co-design e monitoring (HW/SW) di

Durante tale evento, sono state coinvolto alcune aziende del progetto cluster PROSSIMO, tra cui Athena, STAM e Lifely e Abinsula.. In particolare, Lifely è stata sponsor