Vai al contenuto

Come creare un array di I/O digitali

Home Forum Programmazione IEC 61131 (LogicLab) Come creare un array di I/O digitali

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35466
    Lauro
    Partecipante

    Ho la necessità di gestire un loop di aggiornamento su I/O digitali quindi ho cercato di realizzare un array ma non ho trovato nessun modo per raggiungere il mio obbiettivo. Avete qualche suggerimento ?

    #37929
    Sergio Bertana
    Amministratore del forum

    Gli I/O digitali sono allocati in array di dati e possono essere gestiti utilizzando direttamente le variabili. Gli I/O del modulo con indirizzo 0 sono allocati in SysDI00 e SysDO00, quelli del modulo con indirizzo 1 sono allocati in SysDI01 e SysDO01, e così via. Quindi un semplice programma che copia 8 ingressi del modulo 0 sulle sue rispettive 8 uscite può essere:

    FOR i:=0 TO 7 DO SysDO00[i]:=SysDI00[i]; END_FOR;

    Questa sintassi è molto comoda se nel loop si trattano I/O consecutivi, ma se gli I/O non sono consecutivi è preferibile utilizzare un array di puntatori a variabili BOOL:

    IArray : ARRAY[ 0..15 ] OF @BOOL;  { DE:”Input array” }
    OArray : ARRAY[ 0..15 ] OF @BOOL;  { DE:”Output array” }

    Valorizzando l’array con gli indirizzi degli I/O ed utilizzando un loop nel modo:

    IArray[0]:=ADR(%IX0.0);
    IArray[1]:=ADR(%IX0.4);
    OArray[0]:=ADR(%QX0.0);
    OArray[1]:=ADR(%QX0.7);
     
    FOR i:=0 TO 1 DO @OArray[i]:=@IArray[i]; END_FOR;

    Allego la stampa ed il programma sorgente di un esempio di utilizzo di questa tecnica.

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