Indice
Esercizio dal testo di sistemi di quarta
Indirizzamento
nome | indirizzo | descrizione |
---|---|---|
S1 | I0.0 | pulsante marcia NO |
S2 | I0.1 | pulsante arresto NC |
S3 | I0.2 | finecorsa 80cm NO |
S4 | I0.3 | finecorsa 50cm NO |
S5 | I0.4 | finecorsa 30cm NO |
S6 | I0.5 | pulsante reset conteggi NO |
B1 | I0.6 | fotocellula conteggio totale (1 = ostacolo) |
B2 | I0.7 | fotocellula conteggio 80cm (1 = ostacolo) |
B3 | I1.0 | fotocellula conteggio 50cm (1 = ostacolo) |
B4 | I1.1 | fotocellula conteggio 30cm (1 = ostacolo) |
Q11) | Q0.0 | contattore motore nastro 1 |
Q2 | Q0.1 | espulsore 80cm |
Q3 | Q0.2 | espulsore 50cm |
Q4 | Q0.3 | espulsore 30cm |
Q5 | Q0.4 | contattore motore nastro 80cm |
Q6 | Q0.5 | contattore motore nastro 50cm |
Q7 | Q0.6 | contattore motore nastro 30cm |
SFC
Osservazioni:
- il reset dei contatori non si vede nell'SFC
- visto che i tre nastri di fatto funzionano indipendentemente si possono usare tre diagrammi SFC (tre cicli distinti da inserire nel main del programma in ladder)
- il diagramma del nastro principale è molto semplice
- il diagramma dei nastri secondari prevede l'azionamento dell'espulsore per 2 secondi poi, con la fotocellula B2 l'incremento del contatore corrispondente e l'attivazione di un timer; se entro 10 secondi non arriva un nuovo pacco il nastro si ferma altrimenti si riprende dallo stato 11 (scelta o divergenza)
- i diagrammi SFC per gli altri due nastri secondari non sono rappresentati
Soluzione non SFC
In questo file zip una possibile soluzione non-SFC. Il programma gestisce il nastro principale e quello per le scatole da 80cm; per gli altri due nastri si replicano semplicemente le istruzione del nastro per le scatole grandi usando ingressi/uscite/timer/contatori opportuni.
Soluzione SFC
In questo file zip una possibile soluzione che implementa il diagramma SFC visto sopra. Il programma è più lungo della soluzione precedente ma più affidabile/robusto. Questo tipo di problema, dove lo stesso algoritmo gestisce tre nastri con diversi, si prestava all'utilizzo dei blocchi FB; definendo un solo blocco con una sua interfaccia (delle variabili locali valide solo all'interno della funzione) si poteva richiamare tre volte con tre blocchi DB distinti per gestire i tre nastri.
Soluzione SFC con FB
in questo file zip una soluzione basata su SFC dove i tre nastri trasversali vengono gestiti da un unico FB richiamato tre volte con parametri diversi. Per far questo occorre usare un blocco funzionale FB e definire un'interfaccia, cioè indicare le variabili locali dell'FB usate come ingressi e uscite del blocco. Quando il blocco viene utilizzato si collegano a ingressi e uscite così definiti le variabili globali della tabella delle variabili standard (sono parametri e argomenti della funzione). I timer e i contatori usati nella definizione dell'FB sono di tipo multi-istanza invece che singola-istanza (la scelta predefinita). In questo modo i valori di timer e contatori sono salvati direttamente nel blocco dati DB dell'istanza di FB insieme al valore delle variabili locali.
Altro
File con il sorgente XML per draw.io dell'SFC e immagine PNG generata (senza contatori).