Programmazione multitasking o sequenziale su SlimLine
Home › Forum › Programmazione IEC 61131 (LogicLab) › Programmazione multitasking o sequenziale su SlimLine
- Questo topic ha 1 risposta, 1 partecipante ed è stato aggiornato l'ultima volta 12 anni fa da
Sergio Bertana.
-
AutorePost
-
Ottobre 31, 2013 alle 9:27 am #35442
Anonimo
OspiteSalve a tutti.Vengo dal mondo firmware su microcontrollori perciò prediligo la programmazione ST. Stò realizzando una soluzione di telecontrollo basata su SlimLine. La soluzione prevede un programma/libreria di base che gestisce il comportamento del nodo in campo e di un programma custom che realizza il controllo del campo (I/O, sensori, attuatori). Il programma custom appunto puo essere scritto e modificato dal cliente e il programma base ne controlla il corretto comportamento.
Perciò ho fatto dei test sui task e sui programmi: ho inserito dei cicli infiniti (while 1) su dei programmini di test per capire se il comportamento del sistema era multitask o sequenziale. Ho accertato che i programmi sono sequenziali e interrotti dai task fast e slow, e che quindi non è possibile rendere “indipendenti” o paralleli (tipo fork) due programmi. Inoltre il sistema va in errore dopo un certo tempo.
Cercavo dei chiarimenti su questo: quanto è questo timeout ? Un eventuale loop quanto tempo piò durare ? Se scade questa sorta di watchdog il sistema non si riabilita più ? Si deve per forza spegnere ? E’ chiaro quindi che in una struttura di questo tipo la programmazione va fatta a stati e che quindi non si devono creare cicli di attesa. Sarebbe stata comoda una sleep o delay che sospendesse l’esecuzione di quel programma. L’alternativa è stati e condizioni di passaggio di stato in SFC. Ne consigliate altre ? In merito a ciò per controllare il comportamento del programma custom senza perdere il controllo del PLC, cosa consigliate di fare ? Ringrazio per l’attenzione e la professionalità dimostrata.
Novembre 4, 2013 alle 7:08 am #37858Sergio Bertana
Amministratore del forumLa soluzione di creare delle librerie di base per la gestione delle logiche di gestione e di lasciare ad un programma custom il controllo degli I/O di campo è proprio l’approccio corretto alla programmazione dei PLC. La possibilità di creare funzioni e/o blocchi funzioni che gestiscono operazioni complesse e poi il poterli richiamare da semplici programmi ladder, permette anche all’installatore di modificare la parte di programma che si occupa dell’interfaccia di campo adeguandola alle necessità che si trovano di volta in volta sui vari impianti.
Nello SlimLine ci sono 3 livelli di priorità di escuzione (3 Tasks), Back che può essere interrotta dalla Slow che può essere interrotta dalla Fast. Naturalmente come richiesto dalla normativa l’esecuzione del programma deve concludersi in un tempo predefinito e non modificabile (ca 1 Sec) se questo non avviene, l’esecuzione viene automaticamente riavviata (Topic).
L’esecuzione del programma è ciclica, quindi per effettuare programmazioni concorrenti occorre (Come viene fatto nelle nostre FB) realizzare programmi a stati, in modo da mai arrestarne l’esecuzione. In questo topic è riportato il programma sorgente per realizzare una FB di gestione modbus ascii master in cui si vede bene la programmazione a stati, nel forum troverai moltissimi altri esempi simili.
Aggiungo un riferimento a questo topic in cui si tratta della sincronizzazione tra tasks.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.