Vai al contenuto

Allocazione variabili numeriche su MODBUS

Home Forum Programmazione IEC 61131 (LogicLab) Allocazione variabili numeriche su MODBUS

Taggato: 

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

    Sto imparando pian pianino ad usare lo SlimLine,  ora devo gestire la comunicazione Modbus con un HMI. Per comodità ho deciso di dividere le variabili numeriche da quelle a bit. Ho impostato una variabile di tipo word all’indirizzo 100.100. La successiva devo metterla a 100.101? oppure 100.102(due byte)? o ancora 100.116 ?

    Se non avessi deciso di dividere le variabili, se metto una numerica dopo una variabile bit all’indirizzo 100.16, quindi a 100.17, a che indirizzo dovrei mettere la successiva numerica?

    #44194
    Sergio Bertana
    Amministratore del forum

    In questo topic e in questo, trovi informazioni utili per l’allocazione delle variabili, in linea generale (A meno di istanziare un FB ModbusSlave nel tuo progetto), tutte le variabili accesibili da Modbus devopno essere allocate nella DB100 (Address Modbus 40000).

    Per l’allocazione, le variabili BOOL utilizzano un byte di memoria, quindi le puoi allocare a partire da DB100.16 (Address Modbus 0x 40016) in avanti una per byte.

    Le variabili WORD utilizzano 2 bytes quindi se ne allochi una a DB100.100  (Address Modbus 3x 40050) la prossima sarà a DB100.102 (Attenzione sempre allocate ad indirizzi divisibili per 2).

    Le variabili DWORD utilizzano 4 bytes quindi se ne allochi una a DB100.100 (Address Modbus 3x 40050) la prossima sarà a DB100.104 (Attenzione sempre allocate ad indirizzi divisibili per 4).

    E’ ovvio che se una variabile utilizza un indirizzo di memoria non potrai allocare allo stesso indirizzo altre variabili.

    #44207
    Giuseppe Cattaneo
    Partecipante

    Ok, direi che l’informazione che mi mancava era che le variabili BOOL occupano un byte.

    #44210
    Sergio Bertana
    Amministratore del forum

    Si le variabili BOOL utilizzano comunque un byte di memoria e non le puoi allocare a DB100.0 perchè il driver Modbus del pannello HMI “ragiona” sempre a interi 16 bits. Quindi anche per acquisire una sola variabile BOOL esegue un comando Modbus 01 Read Coil Status acquisendo 16 coils con indirizzo a cavallo della variabile desiderata.

    Quindi se allochi a DB100.0 il terminale eseguirà la lettura di 16 coils nel range da -8 (39993) a +8 (40008), ma come evidente ad interrogazioni Modbus con indirizzo minore di 40000 lo SlimLine risponde con errore. Da tutta questa discussione emerge che non puoi allocare BOOL al di sotto dell’indirizzo DB100.8, noi per comodità diciamo DB100.16.

    #44219
    Giuseppe Cattaneo
    Partecipante

    Ok, grazie mille. Per sicurezza quando ho acquistato il PLC ho acquistato anche due ore di supporto remoto e mi hanno detto di contattare te. Come ci possiamo organizzare?

    #44244
    Sergio Bertana
    Amministratore del forum

    Consigliamo sempre di acquistare almeno un’ora di supporto remoto, così con TeamViewer possiamo lavorare insieme su LogicLab e partire con il “piede giusto” con la programmazione dei dispositivi. Inoltre possiamo durante il supporto fornire “pezzi” di programma già fatti che sono ottimi puntio di partenza per le proprie applicazioni.

    Per il supporto remoto occorre utilizzare la versione di TeamViewer scaricabile dal sito, la si può anche solo eseguire senza installazione. Installato il programma puoi contattarci e solitamente possiamo fare subito la sessione di supporto.

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