Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedenteProssima revisioneEntrambe le parti successive la revisione |
linea_1 [2018/05/02 23:17] – [Soluzione SFC] admin | linea_1 [2020/01/11 07:36] – [Indirizzamento] admin |
---|
|S5|I0.4|finecorsa 30cm NO| | |S5|I0.4|finecorsa 30cm NO| |
|S6|I0.5|pulsante reset conteggi NO| | |S6|I0.5|pulsante reset conteggi NO| |
|B1|I0.6|fotocellula conteggio totale| | |B1|I0.6|fotocellula conteggio totale (1 = ostacolo)| |
|B2|I0.7|fotocellula conteggio 80cm| | |B2|I0.7|fotocellula conteggio 80cm (1 = ostacolo)| |
|B3|I1.0|fotocellula conteggio 50cm| | |B3|I1.0|fotocellula conteggio 50cm (1 = ostacolo)| |
|B4|I1.1|fotocellula conteggio 30cm| | |B4|I1.1|fotocellula conteggio 30cm (1 = ostacolo)| |
|Q1((Il testo usa la Q per contattori al posto della K))|Q0.0|contattore motore nastro 1| | |Q1((Il testo usa la Q per contattori al posto della K))|Q0.0|contattore motore nastro 1| |
|Q2|Q0.1|espulsore 80cm| | |Q2|Q0.1|espulsore 80cm| |
| |
===== SFC ===== | ===== SFC ===== |
| |
| |
| |
{{::sfc_esercizio_sistemi_quarta.png|SFC smistamento pacchi}} | {{::sfc_esercizio_sistemi_quarta.png|SFC smistamento pacchi}} |
* 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) | * 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 | * i diagrammi SFC per gli altri due nastri secondari non sono rappresentati |
| |
| FIXME soluzione nascosta |
| |
===== Soluzione non SFC ===== | ===== Soluzione non SFC ===== |
| |
===== Soluzione SFC ===== | ===== Soluzione SFC ===== |
| |
| |
In {{ ::esercizio-sistemi-sfc.zip |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 {{ ::esercizio-sistemi-sfc.zip |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 {{ ::esercizio-sistemi-fb.zip |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. | in {{ ::esercizio-sistemi-fb.zip |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. |
| |