Vai al contenuto

Come sono gestiti gli I/O sullo SlimLine CODESYS

Home Forum Obsoleti SlimLine (CODESYS) Come sono gestiti gli I/O sullo SlimLine CODESYS

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35949
    Sergio Bertana
    Amministratore del forum

    Il run time CODESYS gestisce l’immagine di processo degli I/O separata per ogni task. Quindi per ogni tasks avremo un flusso di esecuzione del tipo indicato in figura:

    Acquisizione ingressi digitali utilizzati nei programs della task.
    Esecuzione di tutti i programs assegnati alla task.
    Gestione uscite digitali utilizzate nei programs della task.

    In pratica in ogni task definita, prima di eseguire il codice assegnato, sono acquisiti gli input digitali e dopo gestiti gli output digitali. Quindi è ovvio che se 2 diverse task usano gli stessi I/O (Da una o più schede di estensione) si avranno 2 acquisizioni di ingressi e due gestioni di uscite separate (Una per ogni task). Poiché il tempo impiegato per la lettura degli I/O sulle schede estensione può arrivare anche a 300 uSec, è consigliabile evitare di gestire input e output digitali in più task. Naturalmente non si ha degrado di prestazione nel caso in cui ogni task utilizzi input/output di schede diverse.

    Ora siccome si lavora ad immagine di processo (Gli I/O sono appoggiati su variabili %IX, %QX) occorre tenere presente che se la task A che usa input digitali di una scheda viene interrotto dall’esecuzione di un task B che usa gli input della stessa scheda, il task A vedrà aggiornarsi lo stato degli ingressi durante l’esecuzione dei suoi programs (Viene falsata l’immagine di processo).

    Per le uscite, se un task A modifica lo stato di un output più volte all’interno della esecuzione dei programs (Molte volte approfittando della immagine di processo si esegue il set di un ouput e poi in rami successivi il suo reset), un task B che interrompa l’esecuzione del task A e che utilizzi un output (non lo stesso) della stessa scheda, può provocare l’aggiornamento reale della uscita gestita dalla task A.

    Il consiglio che si può dare quindi è quello di eseguire tutta la logica (Gestione I/O digitali) in uno stesso task. O almeno non utilizzare gli I/O di stessi moduli di espansione in tasks diversi.

    #39392
    Sergio Bertana
    Amministratore del forum

    Per la definizione degli I/O logici in ambiente CODESYS rimando a questo topic.

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