| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente |
| sfc [2023/05/03 16:15] – [Diagnostica e allarmi] admin | sfc [2025/10/28 11:37] (versione attuale) – [Dal Grafcet al Ladder: tecnica batch] admin |
|---|
| * 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'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 è abilitata, e quindi possibile, qualunque sia il passo attivo nell'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 attivano questa particolare transizione che è abilitata, e quindi possibile, qualunque sia il passo attivo nell'automatismo |
| * il Grafcet, come ogni linguaggio 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 |
| {{::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). | Si noti come nella scelta e convergenza si abilitano due transizioni contemporaneamente con un solo passo mentre nel parallelismo 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: |
| |
| L'uso dei qualificatori può semplificare 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). |
| ===== Dal Grafcet al Ladder: tecnica batch ===== | |
| | 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 diagramma SFC al Ladder: tecnica batch ===== |
| |
| 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: | 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 ==== | ==== 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 RUN) o 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 ==== |