Vai al contenuto

Programmazione multitasking o sequenziale su SlimLine

Home Forum Programmazione IEC 61131 (LogicLab) Programmazione multitasking o sequenziale su SlimLine

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35442
    Anonimo
    Ospite

    Salve 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.

    #37858
    Sergio Bertana
    Amministratore del forum

    La 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.

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.