Strumenti Utente

Strumenti Sito


linea_1

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
linea_1 [2018/05/02 23:17] – [Soluzione SFC] adminlinea_1 [2024/02/23 07:21] (versione attuale) – [SFC] admin
Linea 16: Linea 16:
 |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|
Linea 27: Linea 27:
 |Q6|Q0.5|contattore motore nastro 50cm| |Q6|Q0.5|contattore motore nastro 50cm|
 |Q7|Q0.6|contattore motore nastro 30cm| |Q7|Q0.6|contattore motore nastro 30cm|
 +
  
 ===== SFC ===== ===== SFC =====
  
-{{::sfc_esercizio_sistemi_quarta.png|SFC smistamento pacchi}}+ 
 +{{::linea_smistamento.png|SFC smistamento}} 
 + 
  
 Osservazioni: Osservazioni:
   * il reset dei contatori non si vede nell'SFC   * 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)   * 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; l'indicazione di B1 specifica quale segnale fa incrementare il contatore (lo stato non cambia)+  * 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)   * 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
 +
  
 ===== Soluzione non SFC ===== ===== Soluzione non SFC =====
  
 In {{ ::esercizio-sistemi.zip |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 {{ ::esercizio-sistemi.zip |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 ===== ===== 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.
Linea 50: Linea 58:
  
 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.
 +
 +===== Soluzione con FB scritta in SCL =====
 +
 +{{ ::smistamento_scatole_scl.zip |Qui}} la soluzione con la FB scritta nel linguaggio testuale SCL.
 +
 +===== Altro =====
 +
 +{{ ::es-sistemi.zip |File}} con il sorgente XML per draw.io dell'SFC e immagine PNG generata (senza contatori).
 +
  
linea_1.1525303066.txt.gz · Ultima modifica: 2020/07/03 15:58 (modifica esterna)