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.
Soluzione con FB scritta in SCL
Qui la soluzione con la FB scritta nel linguaggio testuale SCL.
Altro
File con il sorgente XML per draw.io dell'SFC e immagine PNG generata (senza contatori).