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