Vai al contenuto

Progetto di startup per connessione HMI a SlimLine

Home Forum Terminali operatore (Weintek) Progetto di startup per connessione HMI a SlimLine

Stai visualizzando 15 post - dal 1 a 15 (di 16 totali)
  • Autore
    Post
  • #34996
    Anonimo
    Inattivo

    Penso di acquistare un terminale MT6070iH, che desidero connettere tramite modbus RTU in RS232 al modulo CPU SlimLine, tenendo presente che sviluppo in linguaggio ST, potrebbe fornirmi un esempio per la parte SlimLine ed un progettino semplice per la parte HMI che esegua dei comandi elementari tipo  leggere/scrivere delle variabili di tipo BOOL e di tipo WORD.

    #36703
    Sergio Bertana
    Amministratore del forum

    Collegare un pannello touch screen allo SlimLine è semplicissimo, il protocollo modbus gestito da sistema operativo. Basta definire nel programma del pannello un nuovo dispositivo. Se la connessione è in seriale un dispositivo di tipo MODBUS RTU con parametri di comunicazione 115200, e, 8, nodo modbus 1. Se la connessione è in ethernet un dispositivo di tipo MODBUS TCP/IP (Ethernet) definendo l’indirizzo IP dello SlimLine e la porta 502 nodo modbus 1.

    Nel programma HMI basterà inserire gli oggetti grafici desiderati indicando la variabile SlimLine a cui l’oggetto fà riferimento. Ricordo che da modbus è possibile accedere alla DB100 dello SlimLine, gli indirizzi da definire negli oggetti iniziano da 40000.

    Una variabile BOOL allocata nella DB100.16, nell’oggetto sul terminale andrà definita con indirizzo tipo 0x address 40016 (Non è possibile accedere a variabili BOOL allocate prima dell’indirizzo 100.16).

    Una variabile WORD allocata nella DB100.16, nell’oggetto sul terminale andrà definita con indirizzo tipo 3x address 40008 (Gli indirizzi di allocazione delle WORD devono essere divisi per 2).

    Allego per il download un il progetto HMIStartUp con un programma SlimLine ed un programma HMI che gestisce variabili BOOL e DWORD. Ricordo che il software EasyBuilder permette la completa simulazione del funzionamento del terminale a PC, quindi è possibile aprire il progetto, collegare lo SlimLine in seriale e/o Ethernet con il PC e testare il funzionamento, oltre a poter fare test modificando il programma.

    Nel progetto HMI sono state definite le Tags in formato mnemonico, consiglio di utilizzare sempre il formato mnemonico per una più facile manutenzione del programma in caso di variazione allocazione variabili sullo SlimLine.

    #36704
    Sergio Bertana
    Amministratore del forum

    Aggiungo una nota al post precedente, come si nota dal progetto dimostrativo, le variabili presettabili da terminale sono allocate nello SlimLine a partire da DB100.2048 (Indirizzo 41024 su terminale).

    Infatti da indirizzo 2048 l’area della DB100 è tamponata, questo permette di impostare i valori da terminale e di mantenere il valore impostato anche in assenza di alimentazione.  Altra nota importante, l’architettura ARM dello SlimLine, richiede che:

    Le variabili WORD devono essere allocate ad indirizzi divisibili per 2, quindi 100.16 (40008), 100.18 (40009), ecc.

    Le variabili DWORD e REAL devono essere allocate ad indirizzi divisibili per 4, quindi 100.16 (40008),  100.20 (40010), ecc.

    #38433
    Anonimo
    Inattivo

    Ho letto i posts precedenti e anche il manuale EasyBuilder8000 User’s Manual a pag 569 (19.3 About MODBUS Address Type) ma non riesco ancora a comprendere bene l’associazione tra l’indirizzo PLC che partono dal DB100 rispetto all’indirizzamento nel HMI che partono da 40000.

    #38434
    Sergio Bertana
    Amministratore del forum

    La pagina del manuale che tu citi di cui riporto estratto indica quali sono le funzioni gestite dal protocollo Modbus, non fà riferimento agli indirizzi. Per un elenco completo delle funzioni Modbus gestite sui sistemi SlimLine ti rimando a questo topic.

    Per quanto riguarda l’indirizzamento, il protocollo Modbus prevede un indirizzamento a 16 bits quindi il range di indirizzi può variare tra 0 e 65535 (0x0000, 0xFFFF). Ora sullo SlimLine si è scelto di indirizzare da Modbus tutta l’area di memoria della DB 100 (4096 bytes) allocandola arbitrariamente all’indirizzo modbus 40000.

    Quindi se definisci da terminale la lettura di una variabile (Comando 3x 40000) il terminale andrà a leggere la variabile allocata all’indirizzo 0 della DB 100. Attenzione! siccome la memoria è allocata a byte mentre il comando modbus di lettura registri (3x) legge word (2 bytes) se definisci da terminale la lettura di una variabile (Comando 3x 40001) il terminale andrà a leggere la variabile allocata all’indirizzo 2 della DB 100 e così via.

    Nel caso di lettura coils (Comando 0x) l’indirizzamento evolve a bytes, quindi se definisci da terminale la lettura di un coil (Comando 0x 40016) il terminale andrà a leggere la variabile allocata all’indirizzo 16 della DB 100.  Se definisci da terminale la lettura di un coil (Comando 0x 40017) il terminale andrà a leggere la variabile allocata all’indirizzo 17 della DB 100. Attenzione! siccome il terminale raggruppa i coils a modulo 16 non è possibile accedere ad indirizzi coil con indirizzo inferiore a 40016.

    #38435
    Anonimo
    Inattivo

    Grazie per la rapida risposta  volevo segnalarti pero’ che i link non funzionano.

    #38436
    Sergio Bertana
    Amministratore del forum

    Grazie della segnalazione, stiamo facendo lavori sul sito web e qualche problema ogni tanto emerge. Ho sistemato i links.

    #38922
    Sergio Bertana
    Amministratore del forum

    In questo topic ho ripreso il progetto compilandolo con le ultime versioni dei programmi LogicLab e EasyBuilder Pro.

    #39718
    Marcello
    Partecipante

    Non so se nel forum venga segnalato, ma avendo trovato questo argomento segnalo una precisazione in merito al collegamento tra SlimLine e pannello operatore Weintek. La corrispondenza tra SlimLine e Weintek è la seguente:

    Bit: %MX100.16 —> %MX 40015  (ovvero indirizzo di partenza 40000+ allocazione 16 -1)
    Word: %MW100.16 –> %MW 40007 (ovvero indirizzo di partenza 40000+ allocazione 16/2 -1)

    Il -1 mi ha fatto impazzire…

    #39719
    Sergio Bertana
    Amministratore del forum

    Il protocollo Modbus ha per definizione un offset di 1 e questo crea sempre delle cattive interpretazioni, alcuni sistemi ne tengono conto (Come ad esempio lo SlimLine) e sommano 1 all’indirizzo richiesto. Altri sistemi non ne tengono conto ed allora l’indirizzo di richiesta corrisponde esattamente alla variabile.

    Nella gestione del terminale Weintek nella impostazione del protocollo Modbus persemplificare la programmazione hanno pensato ad entrambe le gestioni, come vedi dallo screenshot, è possibile selezionare il Modbus normale oppure un Modbus zero base addressing, e solo in questo devi sottrarre 1 all’indirizzo. Se scegli il Modbus normale come vedi in questo topic non occorre sottrarre 1.

    #39722
    Marcello
    Partecipante

    Selezionando ELSIST MODBUS è possibile accedere (EB8000 PRO) solo a queste opzioni:

    ELSIST MODBUS ASCII
    ELSIST MODBUS RTU
    ELSIST MODBUS TCP/IP

    Senza la possibilità di scegliere ulteriori “configurazioni”. Quindi se si utilizza il dispositivo ELSIST MODBUS questo è per definizione zero-based addressing, giusto ?

    #39723
    Sergio Bertana
    Amministratore del forum

    Il protocollo ELSIST MODBUS è ancora in fase di modifica, abbiamo dato a Weintek le specifiche ma tra le righe è scappato qualcosa, così consiglio di utilizzare il protocollo MODBUS IDA standard che funziona benissimo…

    #44174
    Giuseppe Cattaneo
    Partecipante

    Il problema del -1 persiste ancora oggi a 2 anni da questo post. Se provo ad utilizzare MODBUS IDA mi va in errore di compilazione dicendo DISPOSITIVO NON CORRETTO.

    #44173
    Giuseppe Cattaneo
    Partecipante

    Mi correggo Funziona tutto, è solo che dopo aver cambiato dispositivo, bisogna ridare tutti gli indirizzi perchè mentre scegliendo ELSIST dava già come prefisso %MX , scegliendo Modbus IDA chiede il tipo di lettura, nel mio caso 0x.

    Se si potesse sistemare l’indirizzamento scegliendo ELSIST sarebbe molto più intuitivo.

    #55834
    Fabio Romani
    Partecipante

    Ho problemi a far comunicare il simulatore HMI online in EasyBuilderPro con il PLC SlimLine su porta seriale.

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