 |
Corso di Automazione Manifatturiera (Parte 2 del corso di Robotica e Automazione (10cfu) o Automazione e Robotica con Laboratorio (12cfu))
|
|
Progetto sui PLC (A.A. 2025/26)
Il lavoro di programmazione da effettuare sui PLC Siemens può essere portato avanti in gruppi di più studenti (indicativamente fino ad un massimo di 5).
Traccia del progetto.
Si chiede di implementare una politica hedging point su un sistema soggetto a guasti e funzione di costo lineare g(x)=cp x+ + cmx-, con la possibilità di cambiare dal pannello HMI tutti i parametri del sistema (μ, d, qd, qu, cp e cm), nonché il valore della scorta z da mantenere. Il valore della scorta ottima deve essere calcolato e riportato sul pannello HMI.
Inserire un interruttore per poter spegnere/accendere la macchina. Quando la macchina è spenta, anche il processo di guasto/funzionamento è congelato.
Se la macchina si guasta/spegne, il pezzo in lavorazione viene scartato e quando la macchina torna attiva si comincia a lavorare un nuovo pezzo.
Partire da questa base di progetto in cui è già stato implementato in un blocco FC (StateCNG [FC1]) il processo di guasto/funzionamento della macchina. Questo blocco restituisce come output lo stato della macchina (variabile Stato), che può essere usato direttamente nel resto del programma. È già stata implementata in un altro blocco FC (TassoToTempo [FC3]) anche la funzione che permette di passare dal tasso di domanda d (in pz/s) e dal tasso massimo di produzione μ (in pz/s) ai rispettivi tempi di interarrivo tD (in ms) e di lavorazione tauL (in ms). In un blocco di startup sono anche state inizializzate alcune delle variabili usate nel seguito. Infine è già stato inserito il pannello HMI con un rettangolo (per ora inanimato) che rappresenta la macchina e un interruttore che permette di accenderla/spegnerla.
Completare la base di progetto fornita secondo le seguenti indicazioni.
- Inserire nel blocco di startup l'inizializzazione di cm = 10 e cp = 1, nonché della scorta z = 10.
- Completare il main aggiungendo:
- un segmento che descrive la dinamica degli arrivi, simile a quello presentato nel progetto ArriviAutomaticoCapLim (uno degli esempi visti a lezione e disponibili in questo file zip (circa 100Mb)), con tempo di interarrivo tD e con limite massimo negativo sul buffer pari a Cinf = -100, che rappresenta quindi anche il massimo arretrato possibile;
- un segmento che descrive le lavorazioni, dove un pezzo viene messo in lavorazione se la macchina è in funzione (cioè se Stato e ON sono veri) e se il livello del buffer è minore della scorta z impostata;
- una funzione che permette di calcolare la scorta ottima z*, che cambia quando si cambiano i parametri del sistema, la quale per convenzione va messa pari a 1000 se il sistema non è stabile (questa funzione può essere realizzata in vari modi, per esempio con un blocco FC).
- Completare il pannello HMI secondo le seguenti richieste.
- Impostare un'animazione che modifichi il colore della macchina: nera se spenta, verde se accesa e in funzione, rossa se accesa ma guasta. A tal fine si consiglia di introdurre una variabile intera statoGlobaleMacchina, da aggiornare nel main, che assume per esempio un valore 0 nel caso di macchina guasta, 1 nel caso sia accesa e in funzione e 2 se accesa ma guasta, introducendo quindi un'animazione sul rettangolo che rappresenta la macchina in base al valore di questa variabile.
- Aggiungere dei campi di I/O per leggere/modificare i valori di tutti i parametri del sistema, del contenuto x del buffer, della scorta z impostata e di quella ottima z*.
- Inserire un grafico che mostri l'andamento nel tempo del contenuto x del buffer.
- Rappresentare mediante due barre grafiche orizzontali a valle della macchina il buffer che va a immagazzinare le scorte (x>0) fino ad un massimo di 20 e gli arretrati (x<0) fino ad un massimo di 100.
Riassumendo, il pannello HMI deve apparire come riportato nelle seguenti figure, corrispondenti rispettivamente a macchina spenta, accesa in funzione, accesa e guasta. L'ultima figura è stata ottenuta impostando un valore di qd per cui il sistema risulta instabile (e infatti la scorta ottima z* che non sarebbe definita, viene posta, come richiesto, pari a 1000).
