Strumenti Utente

Strumenti Sito


sfc

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
sfc [2020/04/29 07:44] – [SFC/Grafcet] adminsfc [2024/02/16 15:19] (versione attuale) – [Inizializzazione del sistema] admin
Linea 35: Linea 35:
 Gli elementi di un diagramma SFC sono: Gli elementi di un diagramma SFC sono:
   * i quadrati, che rappresentano i passi (fasi, stati, tappe) del sistema; quello con due cornici è il passo iniziale   * i quadrati, che rappresentano i passi (fasi, stati, tappe) del sistema; quello con due cornici è il passo iniziale
-  * il pallino nero - detto //token// o marcatore - che individua il passo attivo (non lo disegneremo)+  * il pallino nero - detto //token// o marcatore - che individua il passo attivo (non lo disegneremo mai)
   * i rettangoli, collegati con una linea ai quadrati, che rappresentano le azioni associate ad un passo   * i rettangoli, collegati con una linea ai quadrati, che rappresentano le azioni associate ad un passo
   * le linee, che indicano la successione tra un passo e quello successivo   * le linee, che indicano la successione tra un passo e quello successivo
Linea 57: Linea 57:
   * le condizioni che attivano le transizioni sono espressioni logico-combinatorie (si esprimono utilizzando operatori logici AND, OR, NOT) che possono essere vere o false (0 o 1)   * le condizioni che attivano le transizioni sono espressioni logico-combinatorie (si esprimono utilizzando operatori logici AND, OR, NOT) che possono essere vere o false (0 o 1)
   * l'evoluzione del sistema avviene disabilitando tutti i passi a monte e attivando tutti quelli a valle((in ogni momento dovrebbe essere attivo un solo passo per volta ma nel caso del parallelismo, quando più processi vengono eseguiti in contemporanea, bisogna immaginare che il token venda diviso in più parti e poi ricomposto))   * l'evoluzione del sistema avviene disabilitando tutti i passi a monte e attivando tutti quelli a valle((in ogni momento dovrebbe essere attivo un solo passo per volta ma nel caso del parallelismo, quando più processi vengono eseguiti in contemporanea, bisogna immaginare che il token venda diviso in più parti e poi ricomposto))
-  * eventuali situazioni di emergenza (pulsante STOP, protezioni termiche, ecc.) che alterano la normale evoluzione dell'automatismosi indicano mettendo una freccia a sinistra dello stato in cui deve essere posto il sistema specificando le condizioni che abilitano questa transizione di emergenza (abilitata e quindi possibile in qualunque passo si trovi l'automatismo) +  * eventuali situazioni di emergenza (pulsante STOP, protezioni termiche, ecc.) che alterano la normale evoluzione dell'automatismo si indicano mettendo una freccia a sinistra dello stato in cui deve essere posto il sistema in caso di emergenza e specificando le condizioni che abilitano questa particolare transizione che è abilitatae quindi possibilequalunque sia il passo attivo nell'automatismo 
-  * il Grafcet, come gli altri linguaggi di programmazione, dispone di strutture di controllo per:+  * il Grafcet, come ogni linguaggio di programmazione, dispone di strutture di controllo per:
     * la realizzazione di cicli     * la realizzazione di cicli
-    * la scelte tra più opzioni (scelta e convergenza)in questo caso si ha una diramazione tra transizioni con condizioni mutuamente esclusive +    * la scelte tra più opzioni (scelta e convergenza)in questo caso si ha una diramazione tra transizioni con condizioni mutuamente esclusive 
-    * l'esecuzione simultanea di più processi (parallelismo e sincronizzazione)in questo caso si usano i nodi diramatori e i nodi di concorrenza, indicati con due linee orizzontali parallele+    * l'esecuzione simultanea di più processi (parallelismo e sincronizzazione)in questo caso si usano i nodi diramatori e i nodi di concorrenza, indicati con due linee orizzontali parallele
  
 In figura un esempi di scelta/convergenza e di parallelismo/sincronizzazione: In figura un esempi di scelta/convergenza e di parallelismo/sincronizzazione:
  
 {{::scelta_e_parallelismo.png|Esempi di scelta/convergenza e parallelismo/sincronizzazione}} {{::scelta_e_parallelismo.png|Esempi di scelta/convergenza e parallelismo/sincronizzazione}}
 +
 +Si noti come nella scelta e convergenza si abilitano due transizioni contemporaneamente con un solo passo mentre nel parllelismo si attivano più passi contemporaneamente in seguito ad una transizione (notare anche il simbolo con la doppia linea).
 +
 +==== Altre regole ====
 +
 +La specifica dell'SFC è definita nella normativa IEC 61131-3 (l'ultima versione è del 2013). Accenniamo brevemente a qualche ulteriore elemento che si può trovare nei diagrammi.
  
 I qualificatori possono essere usati per caratterizzare un'azione. I più comuni sono: I qualificatori possono essere usati per caratterizzare un'azione. I più comuni sono:
-  * N (non stored), l'uscita è attiva finché il passo è attivo (si può omettere)+  * N (non stored), l'uscita è attiva finché il passo è attivo (è il qualificatore predefinito quindi si può omettere)
   * D (time delayed), l'azione è ritardata di un tempo prestabilito rispetto all'attivazione del passo   * D (time delayed), l'azione è ritardata di un tempo prestabilito rispetto all'attivazione del passo
   * L (time limited), l'azione si interrompe dopo un tempo prestabilito   * L (time limited), l'azione si interrompe dopo un tempo prestabilito
Linea 74: Linea 80:
   * S (set/stored), l'uscita resta attiva anche quando il passo si disattiva   * S (set/stored), l'uscita resta attiva anche quando il passo si disattiva
   * R (reset), l'uscita viene resettata quando il passo è attivo   * R (reset), l'uscita viene resettata quando il passo è attivo
-  * C (condizionato), l'uscita è attiva ma condizionata da altri segnali (adesempio finecorsa)+  * C (condizionato), l'uscita è attiva solo ma condizionata da altri segnali (ad esempio solo se il segnale di un finecorsa è anch'esso attivo)
  
-L'uso dei qualificatori semplifica la scrittura del diagramma SFC (ad esempio sostituendo la funzione svolta dai temporizzatori). +L'uso dei qualificatori può semplificare la scrittura del diagramma SFC (ad esempio sostituendo la funzione svolta dai temporizzatori).  
 + 
 +Al posto delle frecce che riportano a un passo precedente è possibili utilizzare il segno di salto, indicato con una freccia rivolta verso il basso, a monte di una transizione, con indicato il nome del passo a cui saltare. 
 + 
 +Nelle condizioni associate alle transizioni si può usare l'espressione 'PASSO.X', dove la X va interpretata come 1 se il passo indicato alla sua sinistra è attivo o 0 se non è attivo. Questo tipo di condizione permette di attivare una transizione in una sequenza se è attivo un determinato passo in un'altra sequenza. Sempre secondo le norme IEC 61131-3, che definiscono i linguaggi di programmazione standard per i PLC, si può usare l'espressione 'PASSO.T' per indicare implicitamente un timer che si attiva contestualmente al passo (vedi [[https://d1.amobbs.com/bbs_upload782111/files_31/ourdev_569653.pdf|documento dello standard 61131-3]]).
 ===== Dal Grafcet al Ladder: tecnica batch ===== ===== Dal Grafcet al Ladder: tecnica batch =====
  
-La tecnica batch (a lotti) serve ad implementare un automatismo descritto da un diagramma SFC nel linguaggio KOP/ladder. E' buona pratica ricorrere alla programmazione strutturata, creando diverse funzioni/sottoprogrammi per gestire:+La tecnica batch ("a lotti" in italiano) serve ad implementare un automatismo descritto da un diagramma SFC nel linguaggio KOP/ladder. Quando la si usa è buona pratica ricorrere anche alla programmazione strutturata, creando diverse funzioni/sottoprogrammi per gestire:
     * inizializzazione del sistema, dove si imposta il passo iniziale     * inizializzazione del sistema, dove si imposta il passo iniziale
-    * evoluzione dell'automatismo da un passo all'altro (motore del Grafcet, ciclo macchina, sequenza stati) +    * evoluzione dell'automatismo da un passo all'altro (chiamato anche motore del Grafcet, ciclo macchina, sequenza stati, ecc.
     * attivazione delle uscite in base al passo attivo     * attivazione delle uscite in base al passo attivo
     * emergenze, anomalie e allarmi     * emergenze, anomalie e allarmi
  
-La tecnica batch prevede di associare ad ogni passo della sequenza un //merker di passo// e gestire l'evoluzione del sistema settando il merker successivo e resettando quello attuale ad ogni transizione. In questo modo in ogni momento sarà attivo un solo merker e lo stato del sistema sarà sempre definito. L'evoluzione del sistema e l'attivazione delle uscite vengono gestiti separatamente; le uscite vengono attivate solo in base al merker di passo attivo in un determinato momento. Il programma, così strutturato, è più affidabile, più semplice da gestire e da modificare. Anche il debugging è facilitato perché quando il programma si blocca il passo che contiene l'errore viene messo in evidenza.+La tecnica batch prevede di associare ad ogni passo della sequenza un //merker di passo// e gestire l'evoluzione del sistema settando il merker successivo e resettando quello attuale ad ogni transizione. In questo modoin ogni momentosarà attivo un solo merker e lo stato del sistema sarà sempre definito. L'evoluzione del sistema e l'attivazione delle uscite vengono gestiti separatamente; le uscite vengono attivate solo in base al merker di passo attivo in un determinato momento. Il programma, così strutturato, è più affidabile, più semplice da gestire e da modificare. Anche il debugging è facilitato perché quando il programma si blocca il passo che contiene l'errore viene messo in evidenza.
  
 ==== Inizializzazione del sistema ==== ==== Inizializzazione del sistema ====
  
-Per l'inizializzazione dell'automatismo si può usare il merker di sistema //First Scan//attivo solo nel primo ciclo di scansione quando la CPU passa da STOP a RUN,  o un blocco organizzativo di avvio. Nel primo caso basterà scrivere una funzione che setti il merker corrispondente al passo iniziale, resettando tutti gli altri merker di passo. Di solito questa funzione si occupa anche di resettare contatori e temporizzatori e mettere la macchina in una condizione nota (di riposo o di sicurezza).+Per l'inizializzazione dell'automatismo si può usare il merker di sistema //First Scan// (attivo solo nel primo ciclo di scansione quando la CPU passa da STOP a RUNo un blocco organizzativo di avvio (OB100 viene eseguito una sola volta all'avvio prima ancora di passare in RUN). Nel primo caso basterà scrivere una funzione che setti il merker corrispondente al passo iniziale, resettando tutti gli altri merker di passo. Di solito questa funzione si occupa anche di resettare contatori e temporizzatori e mettere la macchina in una condizione nota (di riposo o di sicurezza).
  
 ==== Evoluzione del sistema ==== ==== Evoluzione del sistema ====
Linea 114: Linea 124:
 ==== Attivazione delle uscite ==== ==== Attivazione delle uscite ====
  
-L'attivazione delle uscite si realizza scrivendo un solo segmento per uscita dove:+L'attivazione delle uscite si realizza scrivendo **un solo segmento per uscita** dove:
   * le uscite vanno attivate con delle bobine semplici    * le uscite vanno attivate con delle bobine semplici 
   * le uscite si attivano mettendo in OR (parallelo) tanti contatti comandati dai merker di passo che prevedono l'attivazione dell'uscita   * le uscite si attivano mettendo in OR (parallelo) tanti contatti comandati dai merker di passo che prevedono l'attivazione dell'uscita
-  * **timer e contatori vengono trattati come uscite**+ 
 +NB: nella tecnica batch **timer e contatori vengono trattati come uscite**.
  
 Questa soluzione comanda ogni uscita in un solo punto del programma e mette in evidenzi gli stati che ne prevedono l'attivazione. Questa soluzione comanda ogni uscita in un solo punto del programma e mette in evidenzi gli stati che ne prevedono l'attivazione.
Linea 129: Linea 140:
   * rimozione di protezioni di sicurezza, ecc.   * rimozione di protezioni di sicurezza, ecc.
  
-In questo caso si prevederanno una serie di misure quali l'arresto della macchina (o il riposizionamento in uno stato di riposo/sicurezza) e la segnalazione dell'errore/anomalia/guasto. Nell'SFC si indica con una freccia (o un trattino) a sinistra il passo che deve essere abilitato in caso di emergenza. Questo segno corrisponde ad una transizione che è sempre abilitata qualunque sia il passo attivo in quel momento. Per implementare questo tipo di logica si può scrivere una funzione che controlla le varie anomalie ad ogni ciclo e in caso di guasto setti il merker di passo in cui portare il sistema in caso di guasto ed eventualmente usare usa un merker di abilitazione posto in serie a tutte le uscite che si resetta in caso di emergenza.+In questo caso si prevederanno una serie di misure quali l'arresto della macchina (o il riposizionamento in uno stato di riposo/sicurezza) e la segnalazione dell'errore/anomalia/guasto. Nell'SFC si indica con una freccia (o un trattino) a sinistra il passo che deve essere abilitato in caso di emergenza. Questo segno corrisponde ad una transizione che è sempre abilitata qualunque sia il passo attivo in quel momento (cfr. Pirraglia, //Programmare con i nuovi PLC S7-1200 e S7-1500//, pag. 235). Per implementare questo tipo di logica si può scrivere una funzione che controlla le varie anomalie ad ogni ciclo e in caso di guasto setti il merker di passo in cui portare il sistema in caso di guasto ed eventualmente usare usa un merker di abilitazione posto in serie a tutte le uscite che si resetta in caso di emergenza.
  
 ==== Un esempio ==== ==== Un esempio ====
sfc.1588146268.txt.gz · Ultima modifica: 2020/07/03 15:58 (modifica esterna)