Vai al contenuto

Selettore software 3 posizioni con funzione MUX in LogicLab

Home Forum Programmazione IEC 61131 (LogicLab) Selettore software 3 posizioni con funzione MUX in LogicLab

Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Autore
    Post
  • #35675
    Giuseppe
    Partecipante

    Salve, premesso che sono alle prime armi con LogicLab, sto cercando di creare un selettore software OFF-ON-AUTO (da comandare in seguito da HMI) per la gestione di un impianto di irrigazione OFF=sempre spento, ON=accensione manuale e AUTO=da programma oraio con temporizzazione di OFF.

    Inoltre, cercando di creare tale funzione e utilizzando la funzione MUX quando tento di simulare LogicLab va in blocco con un errore di runtime sulle library di visual C++. Dove sbaglio?

    Potrebbe avere dei problemi il mio PC(Win7) ? Potreste inviarmi degli esempi con la funzione MUX ?
    Grazie mille in anticipo per l’assistenza.

    #38532
    Sergio Bertana
    Amministratore del forum

    Il MUX fornito embedded in LogicLab ha solo due posizioni, per fare un selettore a 3 posizioni devi mettere in serie due MUX. Ma vista la funnzione propedeutica del forum e data l’estrema semplicità nel realizzare una funzione MUX, eccone il codice in ST.

    CASE (K) OF
      0: Mux3Way:=I0;
      1: Mux3Way:=I1;
      2: Mux3Way:=I2;
     ELSE
      Mux3Way:=FALSE;
     END_CASE;

    Come vedi lo statement CASE permette di creare un multiplexer a quante vie tu desideri, nel mio esempio è a 3 vie. Ecco nello screenshot il programma ladder in simulazione con la funzione MUX a 3 vie (Download programma).

    Nel mio esempio ho definito la variabile Selector di tipo UINT e l’ho allocata nella DB 100.2048 per poterla accedere dal terminale in Modbus (Nel terminale dovrai definire un registro a 16 bit con codice di accesso 3x ed indirizzo 41024). Ho scelto l’indirizzo 2048 perchè è il primo dell’area ritentiva.

    #38535
    Massimo
    Moderatore

    Confermo che con LogicLab 3.16.0.9, la MUX “standard” crea un problema con SimuLab, mentre funziona correttamente sul target reale.

    #38536
    Giuseppe
    Partecipante

    Innanzitutto Grazie Bertaser per la tempestività nel rispondere, riguardo alla funzione tutto chiaro, però come variabili di ingresso e uscita il MUX accetta solo variabili mappate, cioè I/O fisici della CPU ?

    #38537
    Sergio Bertana
    Amministratore del forum

    Hai  premesso che sei un neofita e quindi accetto la domanda, ma se vedi nel programma la funzione multiplexer che ho realizzato utilizza variabili in ingresso di tipo BOOL su cui poi nel programma in ladder aggancio gli I/O reali.

    Quindi va da sè che posso dare in ingresso alla funzione qualsiasi variabile di tipo BOOL. Ma non solo, se trasformo le variabili in ingresso ed in uscita da BOOL ad un’altro tipo (USINT, UINT, REAL, ecc) posso utilizzare la funzione multiplexer anche per multiplexare valori discreti.

    Credo che acquisire un pò di pratica in programmazione ST sia molto utile, se cerchi in rete trovi informazioni. Ti posso suggerire anche due pinne e poi un bel tuffo nei vari posts del forum dedicati all’ambiente LogicLab ed alla famiglia SlimLine dove troverai molti programmi sorgente in linguaggio ST che possono essere d’aiuto.

    #38539
    Giuseppe
    Partecipante

    Accetto molto volentieri il consiglio e userò molto il forum per apprendere il più possibile. Comunque molte e molte prove da me effettuate erano “corrette” ma usando il MUX standard su LogicLab il programma come già sapete va in crash.

    Ringrazio ancora una volta e alla prossima.

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