Selettore software 3 posizioni con funzione MUX in LogicLab
Home › Forum › Programmazione IEC 61131 (LogicLab) › Selettore software 3 posizioni con funzione MUX in LogicLab
- Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 10 anni, 11 mesi fa da
Giuseppe.
-
AutorePost
-
Novembre 25, 2014 alle 8:38 pm #35675
Giuseppe
PartecipanteSalve, 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.Novembre 26, 2014 alle 9:28 am #38532Sergio Bertana
Amministratore del forumIl 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.
Novembre 26, 2014 alle 1:05 pm #38535Massimo
ModeratoreConfermo che con LogicLab 3.16.0.9, la MUX “standard” crea un problema con SimuLab, mentre funziona correttamente sul target reale.
Novembre 26, 2014 alle 1:11 pm #38536Giuseppe
PartecipanteInnanzitutto 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 ?
Novembre 26, 2014 alle 1:14 pm #38537Sergio Bertana
Amministratore del forumHai 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.
Novembre 26, 2014 alle 5:36 pm #38539Giuseppe
PartecipanteAccetto 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.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.