Vai al contenuto

Lettura variabili di tipo REAL da PLC SlimLine

Home Forum Terminali operatore (Weintek) Lettura variabili di tipo REAL da PLC SlimLine

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Autore
    Post
  • #35336
    Paolo
    Partecipante

    Buongiorno, sono nuovo del mondo dei PLC. Sto realizzando un sistema di controllo temperatura, gestione pompe di calore e allarmi con un PLC SlimLine ARM7 full RS485, modulo espansione analogico 10 ingressi, modulo espansione con uscite a relè e terminale MT6050i.

    Sul PLC eseguo la lettura delle temperature tramite gli appositi blocchi funzione ed in uscita ho già il valore in gradi centigradi con quattro cifre dopo il punto. A ciascun valore di temperatura assegno una variabile mappata ad esempio TEMP1 %MD100.16. Sul programma del terminale inserisco una finestra di visualizzazione numerica e punto alla variabile X3 40008 ma visualizzo solo asterischi.

    Le domande sono due: Come posso approssimare la temperatura ad una sola cifra dopo il punto ? Perché non riesco a leggere le temperature ? Ho il dubbio che ci siano degli errori nella assegnazione del tipo di variabili oppure è un limite del bus ? La connessione utilizzata tra PLC e HMI é RS232.

    #37590
    Sergio Bertana
    Amministratore del forum

    Il terminale Weintek può acquisire anche le variabili REAL dal PLC senza alcun problema, il formato delle variabili REAL sia sul pannello che sui sistemi SlimLine segue lo standard IEEE 754-1985 in singola precisione a 32 bit (Vedi post). La rappresentazione in memoria sui sistemi SlilLine è in Little-Endian ed è direttamente acquisita dal terminale.

    Il fatto che leggi asterischi è perchè il valore della variabile è fuori dal range di visualizzazione dell’oggetto, probabilmente non hai settato correttamente il formato numerico della variabile. Essendo una variabile a virgola mobile devi definire il tipo 32-bit Float (Screenshot). Come vedi nella stessa finestra di impostazione puoi definire anche il numero di cifre intere e decimali che deve avere il numero visualizzato.

    Ho realizzato un piccolo progetto (PLC e terminale) che esegue l’acquisizione di un valore analogico 0-10 Volt e lo visualizza sul terminale (Download progetto). Nel progetto la variabile REAL è allocata alo stesso indirizzo MD 100.16 che tu hai citato e quindi l’indirizzo da definire sul pannello è 40008.

    Ricordo che le variabili REAL vanno sempre allocate in memoria ad indirizzi divisibili per 4, quindi MD 100.16, MD 100.20, MD 100.24, ecc.

    #54773
    Fabio Romani
    Partecipante

    Avrei bisogno di un esempio per visualizzare un valore analogico 0-10 sul terminale weintek MT8051iP da un PLC SimLine settato con indirizzo auto e possibile dichiarare la variabile REAL lasciando l’indirizzo su auto?

    #54776
    Sergio Bertana
    Amministratore del forum

    L’esempio del post precedente al tuo fà già esattamente quello che hai chiesto.

    Per poter visulizzare variabili sul pannello HMI devi dichiarare la variabili globale mappandola nella DB100 all’indirizzo che preferisci.

    Ricorda che le variabili a 2 bytes INT, UINT, WORD devono sempre essere allocate ad indirizzi divisibili per 2 (Esempio DB100.2, DB100.8, DB100.100, ecc…).

    Le variabili a 4 bytes DINT, UDINT, DWORD devono sempre essere allocate ad indirizzi divisibili per 4 (Esempio DB100.4, DB100.8, DB100.256, ecc…).

    Sul terminale HMI devi indirizzare la variabile usando l’indirizzo di allocazione diviso per 2 sommato a 40000. Se ad esempio la variabile è allocata a DB100.256 sul terminale dovrai indicare indirizzo 40128.

    Guarda questo topic dove trovi un esempio di progetto PLC e HMI.

    #54956
    Edi
    Partecipante

    Volevo un informazione su una prova che sto facendo, ovvero: vorrei visualizzare il valore di un potenziometro collegato sull’ingresso analogico A00 del modulo di espansione dello SlimLine MPS046B sul programma EasyBuilderPro.

    Sul programma SlimLine nelle variabili globali ho messo MD 100.16 come valore REAL, mentre su EasyBuilderPro ho messo un oggetto numerico con indirizzo 3x 40008.

    Quando avvio la simulazione, sul software dello SlimLine si vede chiaramente la variazione di tensione in modalità “watch”, invece su EasyBuilderPro rimane fisso sullo 0.00 eppure non mi esce il messaggio “PLC no response” quindi credo che i due dispositivi comunichino.

    #54964
    Sergio Bertana
    Amministratore del forum

    Ma hai provato il progetto che  trovi qualche post prima del tuo, fà esattamente quello che cerchi di fare tu.

    Dove è l’errore… quello che hai scritto mi sembra tutto corretto ma i  dubbi sono:

    Che tipo di protocollo hai impostato, perchè se usi lo ZeroAddressing hai un errore sull’offset.

    Hai mica modificato l’endianness di lettura, le variabili REAL usano 2 words e quindi è importante avere l’endianness corretto. Si imposta nella definizione del protocollo. Ti consiglio di provare prima con una variabile UINT che essendo a 16 bits non ha problemi di endianness.

    Nella definizione della variabile sul pannello hai definito che è una variabile float ed hai definito il suo range di valori.

     

    #58007
    Marcooo
    Partecipante

    Nell’utilizzare Easybuilder Pro sto riscontrando alcuni problemi. Compilo il progetto, lo scarico su HMI e nel visualizzarlo, continua a comparirmi la scritta “Device no response”.

    Penso che il problema sia dovuto all’ oggetto numerico, perché ho due pagine, in una ci sono solo pulsanti e funziona, se invece passo all’altra pagina, dedicata alla visualizzazione di temperature, mi compare la scritta. Gli oggetti numerici vanno indirizzati RW o LW?

    C’è un blocco dedicato solo alla lettura di numeri ?

    #58013
    Sergio Bertana
    Amministratore del forum

    Mi parli di RW ed LW, ma questi sono i riferimenti alle variabili interne al pannello, quando leggi variabili dal PLC devi fare riferimento alla sintassi del PLC che stai utilizzando.

    Se usi un nostro sistema SlimLine con protocollo Elsist modbus per le variabili numeriche devi utilizzare il tipo MW se variabili a 16 bits o MDW se variabili a 32 bits (Screenshot). Il protocollo Modbus agisce sulle variabili allocate nella DB100 e come indirizzo devi usare l’indirizzo di allocazione diviso per 2 cui sommi 40000.

    Poi cosa intendi per blocco dedicato solo alla lettura di numeri,  l’oggetto Numeric fà proprio questo.

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