Home › Forum › Terminali operatore (Weintek) › Progetto di startup per connessione HMI a SlimLine
- Questo topic ha 15 risposte, 6 partecipanti ed è stato aggiornato l'ultima volta 4 anni, 4 mesi fa da Sergio Bertana.
-
AutorePost
-
Aprile 14, 2011 alle 9:11 am #34996AnonimoInattivo
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.
Aprile 14, 2011 alle 9:29 am #36703Sergio BertanaAmministratore del forumCollegare 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.
Aprile 14, 2011 alle 10:02 am #36704Sergio BertanaAmministratore del forumAggiungo 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.
Ottobre 2, 2014 alle 2:57 pm #38433AnonimoInattivoHo 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.
Ottobre 2, 2014 alle 3:50 pm #38434Sergio BertanaAmministratore del forumLa 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.
Ottobre 2, 2014 alle 5:33 pm #38435AnonimoInattivoGrazie per la rapida risposta volevo segnalarti pero’ che i link non funzionano.
Ottobre 3, 2014 alle 6:32 am #38436Sergio BertanaAmministratore del forumGrazie della segnalazione, stiamo facendo lavori sul sito web e qualche problema ogni tanto emerge. Ho sistemato i links.
Maggio 27, 2015 alle 12:23 pm #38922Sergio BertanaAmministratore del forumIn questo topic ho ripreso il progetto compilandolo con le ultime versioni dei programmi LogicLab e EasyBuilder Pro.
Settembre 29, 2016 alle 2:49 pm #39718MarcelloPartecipanteNon 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…
Ottobre 1, 2016 alle 6:28 am #39719Sergio BertanaAmministratore del forumIl 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.
Ottobre 3, 2016 alle 9:43 am #39722MarcelloPartecipanteSelezionando ELSIST MODBUS è possibile accedere (EB8000 PRO) solo a queste opzioni:
ELSIST MODBUS ASCII
ELSIST MODBUS RTU
ELSIST MODBUS TCP/IPSenza la possibilità di scegliere ulteriori “configurazioni”. Quindi se si utilizza il dispositivo ELSIST MODBUS questo è per definizione zero-based addressing, giusto ?
Ottobre 3, 2016 alle 3:45 pm #39723Sergio BertanaAmministratore del forumIl 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…
Giugno 4, 2018 alle 3:56 pm #44174Giuseppe CattaneoPartecipanteIl 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.
Giugno 4, 2018 alle 3:56 pm #44173Giuseppe CattaneoPartecipanteMi 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.
Giugno 8, 2020 alle 8:49 am #55834Fabio RomaniPartecipanteHo problemi a far comunicare il simulatore HMI online in EasyBuilderPro con il PLC SlimLine su porta seriale.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.