Tesi di laurea magistrale in ingegneria elettronica Tools di supporto alla configurazione e alla manutenzione degli apparati fail safe. Sviluppo di moduli di software residenti su piattaforme standard (es. Personal Computer) in grado di: interfacciarsi direttamente con schede microprocessore per la loro configurazione, generare la configurazione per le stesse ed aiutare l'utente nella manutenzione dell'impianto Relatore accademico: Chiar.moProf. Rodolfo Zunino Relatore aziendale: Ing. Giacomo Donati Candidato: Lorenzo Banderali Sistemi in tempo reale Sistemi in tempo reale (RTS): sistemi la cui correttezza dipende non solo dal risultato della computazione ma anche dal tempo in cui i risultati sono prodotti Il sistema è multitasking e cianscun task è contraddistinto dai seguenti parametri: Id Tabella delle tecniche Numero identificativo univoco del task Name Nome del task Arrival pattern Periodo del task Type Tipo di task: periodico, aperiodico, undefined Priority Priorità del task (un valore basso indica un task ad alta priorità) Usage Tempo di utilizzo della risorsa Deadline Limite di tempo massimo entro il quale il task deve essere portato a termine Obiettivo Sviluppo di un sistema software in grado di: • Analizzare se il sistema sarà schedulabile rispettando i vincoli temporali e fornendo, in caso positivo, anche un margine indicativo di sicurezza. • Cercare di rendere schedulabile il set di tasks, qualora non rispetti i vincoli temporali, o migliorarne l’affidabilità. • Mostrare in modo grafico i dati acquisiti dal dispositivo per verificare come è avvenuta schedulazione. • Generare un report facilmente esportabile e consultabile anche in modo stand-alone e da qualsiasi piattaforma. Scelta del linguaggio e dell’ambiente di sviluppo C# è il nuovo linguaggio di programmazione di Microsoft, nato e concepito per diventare il principale strumento di sviluppo per la piattaforma .NET. E’ un linguaggio di programmazione semplice ma efficace per la scrittura di applicazioni aziendali ed è un'evoluzione dei linguaggi C e C++. Utilizza numerose caratteristiche di C++ nelle aree di istruzioni, espressioni e operatori • Completo supporto dell'interoperabilità tramite i servizi COM+ 1.0 e .NET Framework con accesso basato completamente su libreria. •Affidabilità grazie alle funzionalità di Garbage Collection e type-safety. •Utilizza la libreria di runtime di .NET Framework. Fonte: MSDN Tipico scenario di utilizzo del software SchedAnalyzer Interfaccia I dati possono essere importati ed esportati in 2 formati • Formato “vtd” permette di interfacciarsi con i dispositivi (target CPU). Il formato del file è binario. Interfacciamento tramite dll • Formato “xml” garantisce la leggibilità da altre applicazioni e l’aggiunta di nuove informazioni opzionali. L’operazione di lettura avviene in modo affidabile e fault tolerant Visulizzazione & editazione E’ possibile visualizzare, modificare cancellare ed aggiungere un nuovo task attraverso un form grafico. • Controllo automatico della correttezza dei dati inseriti in base a regole (valori negativi, duplicati per campi univoci, etc...). • Valori di default intelligenti per nuovi tasks. • Ordinamento in base alle varie colonne (parametri dei tasks) • Possibilità di inserire commenti aggiuntivi per il set di tasks. Analisi di schedulabilità E’ possibile analizzare la schedulabilità del sistema ed individuare eventuali task critici al fine di ottimizzarli. • Rispetto della deadline e margine da parte dei singoli tasks • Report indicativo globale per l’intero sistema Ottimizzazione E’ possibile effettuare in modo automatico un ottimizzazione basata sulla modifica della priorità dei singoli task al fine di migliorare l’affidabilità dell’intero sistema. • Ottimizzazione tramite permutazione della priorità dei singoli tasks • Ottimizzazione tramite criterio rate monotonic: priorità maggiore per i tasks che devono essere schedulati frequentemente Ottimizzazione L’ottimizzazione basata sulla permutazione delle priorità avviene analizzando tutti i casi possibili e valutandoli attraverso l’utilizzo di una funzione di costo. La funzione di costo è parametrizzata L’esplorazione può essere effettuata in parallelo tramite multithreading E’ possibile escludere dall’ottimizzazione uno o più tasks L’esplorazione di tutti i possibili casi può richiedere molto tempo poiché la crescita è di tipo fattoriale rispetto al numero di tasks da ottimizzare. Visualizzazione degli eventi E’ possibile visualizzare come è avvenuta realmente la schedulazione dei singoli task sul dispositivo (target CPU). La finestra consente lo zoom, lo scorrimento orizzontale e verticale, il ridimensionamento, la visualizzazione delle deadline, dei “tic” ed è possibile ordinare i tasks. Generazione del report E’ possibile generare un report HTML che riporti la descrizione di tutti i tasks che caratterizzano il sistema, l’eventuale analisi e l’ottimizzazione apportata. Visualizzabile in modo stand-alone tramite comune web browser. Compatibile con tutti i S.O. Facilmente importabile anche attraverso altri applicativi (es World). Consultabile via web. Altre funzionalità • Formato dei settaggi dell’applicazione • Guida interattiva • Splashscreen • Form di “About” • Tray – icon • Pacchetto di installazione e distribuzione • Screenshot del contenuto presente nei forms Risultati ottenuti Le prove effettuate, una delle quali è riportata in tabella, evidenziano che è possibile migliorare l’affidabilità del sistema tramite una corretta ottimizzazione. Conclusioni Il tool realizzato si è rivelato utile per l’analisi a priori e a posteriori dei sistemi in tempo reale ed è attualmente utilizzato da A.S.F (Ansaldo Segnalamento Ferroviario). Ringrazio il personale di A.S.F per avermi coinvolto ed appassionato nel lavoro