REALIZZAZIONE DI UN SOFTWARE DI COMUNICAZIONE MULTIPROTOCOLLO PER IL
CONTROLLO DI PROCESSO IN AMBITO INDUSTRIALE
Università degli studi di Trieste
Dipartimento di Ingegneria ed Architettura
Corso di studi in Ingegneria Informatica
Laureando:Enrico PALUZZANO
Relatore:prof. Alberto BARTOLI
IntroduzioneIl lavoro presentato è stato svolto all’interno
dell’azienda SMS Concast.
SMS Concast sviluppa e produce software per l’automazione degli impianti siderurgici.
Il software presentato è il sistema di comunicazione, utilizzato dalle applicazioni, per controllare il processo produttivo dell’impianto: il suo nome è GATE.
Organizzazione aziendaleL’organizzazione degli impianti viene
strutturata su diversi livelli.Livello 1: è il livello che gestisce
l’automazione nell’impianto.Il livello 2: è il livello preposto alla gestione
del processo produttivo. (livello in cui è stato sviluppato il software prodotto)
Il livello 3: è il livello preposto alla gestione delle commesse.
Livello 2Il software sviluppato nel livello 2 svolge
svariati compiti:calcolo dei piani di taglio per gli acciai specialicontrollo della composizione chimica
dell’acciaio…
Le necessità del software di questo livello sono:Conoscere lo stato dell’impiantoComandare il processo produttivo
PLC Lo stato dell’impianto viene controllato da specifiche
apparecchiature chiamate PLC (Programmable Logic Controller)
Al loro interno sono installate le applicazioni di Livello 1 che permettono di:Scrivere in memoria i dati ricevuti dai rilevatoriLeggere dalla memoria i comandi da inviare alle
macchine tramite gli attuatoriUn’applicazione di livello 2, per controllare il processo
produttivo, deve necessariamente comunicare con i PLC.
Questa comunicazione avviene interagendo con la loro memoria interna.
Definizione del problema (I)Comunicare con i PLC presenta delle
difficoltà in quanto:Possono esser prodotti da case produttrici
differentiUtilizzano librerie proprietarie diverseNecessitano di comunicazioni robuste ed affidabili
Le applicazioni di livello 2 hanno la necessità di comunicare:Con più PLC nello stesso momentoIn maniera concorrente fra loroFrequentemente
Definizione del problema (II)Per questo è stato realizzato dall’azienda un software
intermedio tra applicazioni di livello 2 e PLC.Vantaggi:
Non impegna le applicazioni nella comunicazioneIncorpora l’utilizzo di diversi protocolliPermette di controllare lo stato delle comunicazioni
Svantaggi:Deve essere robusto
(capace di gestire correttamente i malfunzionamenti)
Deve essere affidabile(non può bloccarsi altrimenti le applicazioni non
controllano più il processo produttivo)
Specifiche richieste A fronte di una commessa è stato chiesto al
livello 2 dell’azienda di:Tradurre le applicazioni che già distribuisce, in
linguaggio C#Ridisegnare le interfacce utilizzando
WPF(Windows Presentation Foundation)Sviluppare delle nuove applicazioni
personalizzate per alcune necessità specifiche del committente
Stato dell’arteIl software presentato in questa tesi è stato
sviluppato partendo da quello correntemente utilizzato.
Il software precedente:E’ scritto in linguaggio PascalUtilizza tre tipi di librerie
Softnet AllenBradley SendReceive
Implementa il controllo da remoto
Specifiche del GATE (I)Il nuovo software, sviluppato nell’ambito del
tirocinio, presenta le seguenti specifiche:E’ scritto in linguaggio C#Ha le interfacce disegnate utilizzando WPFUtilizza la libreria proprietaria Softnet
utilizzata per comunicare con i PLC SIEMENS S7
Implementa il sistema remoto utilizzando WCF (Windows Comunication Foundation)
La comunicazione(I)Per comunicare con i PLC, le applicazioni,
comunicano con il Gate utilizzando la seguente procedura:Definiscono una connessione (Link)Accodano una richiesta (Transazione)Prelevano l’esito della richiesta
Successivamente il Gate interagisce con i PLC nel seguente modo:Carica la libreria proprietariaApre il canale di comunicazioneEsegue la richiesta tramite le funzioni della libreria
proprietaria
La comunicazione (II)La comunicazione, all’interno del Gate,
avviene tramite l’intervento di due macro entità:PlcDriverPipeObjectGATE
APPLICAZIONI
PIPEOBJECT
LINKPLC
TRANSAZIONI
PLC
PLC
PLCDRIVER
SOFTNET
SENDRECEIVE
ALLNBRADLEYALLEN-BRADLEY LINK
SOFTNET LINK
SENDRECEIVE LINK
Comportamento delle classiIl PipeObject ha il compito di:
Ricevere le richieste di connessione da parte delle applicazioni
Passarle al corretto driver in esecuzioneRicevere ed accodare le richieste di lettura o scrittura
Il PlcDriver ha il compito di:Caricare le librerie proprietarieAprire le connessioni passategli dal PipeObject, con i PLCPrelevare dal PipeObject, se accodata, una Transazione
relativa alla connessione apertaEseguire la Transazione e salvarne il risultato all’interno del
PipeObjectRilasciare le librerie proprietarie
Sviluppo di PlcDriverE’ la classe ancestrale che definisce il
comportamento generale del driver Incorpora un thread per l’esecuzione ciclica
di una funzione chiamata ExecuteQuesta funzione è stata completamente
riprogettata e sviluppataE’ la più rilevante modifica apportata al
software precedenteSi basa sull’applicazione a PlcDriver di un
modello a stati finiti
INIZIO
UNUSED
Entry / Link da servire = 0Do / Attende e inizial. driverExit / Link da servire > 0
ACTIVE
Entry / Link da servire > 0Do / Apre link, attende transazioni ed esegue transazioniExit / Links da servire = 0 oppure un link è in stato di errore per più di MaxOveralltime oppure è stata richiesta la chiusura del driver
STOPPED
Do / Finalizza il driver e rimuove i link.
FINE
RESTARTING
Do / Finalizza driver e terimina link
SIMULATION
Entry / Mod. sim. richiestaDo / Finalizza il driver e attende Exit / Mod. live richiesta
ERROR
Entry / Inizial. driver fallitaDo / Aspetta timeout
Risultati dello sviluppo:Il risultato ottenuto da questa
implementazione di PlcDriver si può riassumere in:Un comportamento più affidabile dei driverUna miglior chiarezza del codiceUn aumento delle prestazioni in alcune
situazioni
Screenshot Gate
L’applicazione di test: BoardIl Board è un’applicazione che simula il
comportamento di una normale applicazione del livello 2
Tramite il Board è possibile:Definire un Link ad un PLCLeggere dalla memoria del PLCScrivere sulla memoria del PLCLanciare delle funzioni di testControllare lo stato delle transazioni
Screenshot Board