Indice

Esercizio dal testo di sistemi di quarta

Dal testo di sistemi di quarta (paragrafo 4.5 pag. 348).

Indirizzamento

nome indirizzo descrizione
S1I0.0pulsante marcia NO
S2I0.1pulsante arresto NC
S3I0.2finecorsa 80cm NO
S4I0.3finecorsa 50cm NO
S5I0.4finecorsa 30cm NO
S6I0.5pulsante reset conteggi NO
B1I0.6fotocellula conteggio totale (1 = ostacolo)
B2I0.7fotocellula conteggio 80cm (1 = ostacolo)
B3I1.0fotocellula conteggio 50cm (1 = ostacolo)
B4I1.1fotocellula conteggio 30cm (1 = ostacolo)
Q11)Q0.0contattore motore nastro 1
Q2Q0.1espulsore 80cm
Q3Q0.2espulsore 50cm
Q4Q0.3espulsore 30cm
Q5Q0.4contattore motore nastro 80cm
Q6Q0.5contattore motore nastro 50cm
Q7Q0.6contattore motore nastro 30cm

SFC

SFC smistamento

Osservazioni:

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).

1)
Il testo usa la Q per contattori al posto della K