Vai al contenuto
PLC Forum


Weintwk e Eaton easy


Messaggi consigliati

Inserito:

Buongiorno a tutti. Prima di niziare con la richiesta chiedo scusa per la domanda forse banale ma non essendo un programmatore professionista a volte mi blocco su ostacoli probabilmente banali.

Veniamo alla richiesta. Fino ad oggi ho sempre utilizzato con i pannelli Weintek il LOGO della Siemens e per farlo comunicare con il pannello operatore utilizzo la tabella variabili presente nel software. Adesso voglio imparare a gestire anche il sistema EASY E4 dellla EATON e mi sono trovato davanti a questo problema. La weintek non ha sviluppato un driver specifico per il PLC della EATON quindi devo utilizzare il protocollo MODBUS TCP/IP. Nel software ( Easy Soft 8 ) non trovo una tabella nella quale venga dato un indice delle variabili utilizzate, però è presente un comando che permette di esportare un file con l'indice delle variabili. Faccio un esempio.

Ipotizzo di voler attivare una uscita con un ritardo impostabile rispetto all'attivazione dell'ingresso. I blocchi presenti nel programma sonno i seguenti.

Ingresso I01, Merker M01, Entrambi i blocchi entrano in un modulo OR la cui uscita abilita il temporizzatore ritardato all'eccitazione. L'uscita del temporizzatore attiva l'uscita Q01. Sull'ingresso paramtri del timer ho messo un merker word MW01 per poter impostare il tempo di ritardo attivazione uscita. Il risultato del file generato è il seguente.

Name                        Type                           Address
M001_M016[1..16]    BIT                            R1001.0
MW001                      WORD                      R1001
I01                              BIT                           MI1
Q01                            BIT                           M1
RTC_EASY[0..5]        WORD                     R5000

 

Nella guida della EATON vengono riportati i seguenti parametri per utilizzare il protocollo MODBUS

Ingressi 0X02 da I1 a I128

Uscite 0X01 da Q1 a Q128

Merker 0X02 da M1001 a M1512

Merker word 0X04 da MW1001 a MW1512

Sul pannello Weintek imposto i seguenti parametri

Protocollo di comunicazione Modbus TCP/IP zero addressing

Pulsante virtuale con indirizzo 0x2 - 1001 (M001)

Lampada uscita Q01 indirizzo 0x single bit - 1

Se premo il pulsante virtuale abbinato a M001 la lampada si accende.

Per utilizzare il merker word credo sia giusto usare un campo di tipo immissione numero ma quando apro la sceda dove impostare l'indirizzo trovo solo indirizzi di tipo 3X , 4X , 5X, 6X.

Come posso impostare il valore 0X4 - 1001 per poi poter inserire un valore numerico nel relativo campo?

Ho anche il dubbio di non aver male interpretato la tabella degli indirizzi visto che quella della EATON non combacia con quella del protocollo MODBUS standard.

 

Scusatemi per la lungaggine ma vorrei dare il maggior numero di informazioni possibile a chi mi vorrà rispondere.

 

Grazie

 

 

 

 

 


Inserita:

Prova a postare la mappatura. O il manuale relativo. Per le definizioni delle aree della mappa sono:

0x...  Lettura/scrittura singole uscite (discrete coil)

1x...  Lettura singoli ingressi (discrete input)

3x...  Lettura registri ingressi (input register, insieme di 16 ingressi)

4x...  Lettura/scrittura multi registri holding (multiple register, ogni registro sono 16 bit)

6x...  Lettura/scrittura singolo registro holding (single register, ogni registro sono 16 bit)

Ogni mappatura corrisponderà a un comando (due distinti nel caso di lettura/scrittura)

Nella mappatura originale Modbus, quel numero prima della x definisce la prima cifra della mappa (per esempio, 4x123 corrisponde al registro 40123). Occhio che alcuni server hanno indirizzo registro a partire da 1, altri a partire da 0

 

Inserita:

Grazie per la risposta ti chiedo però se possibile di rispondermi con degli esempi. Ti allego alcune immagini con parte degli indirizzi del plc. Se possibile mi dici che indirizzo inseriresti per ogni oggetto del display. Considera che utilizzo una comunicazione Modbus TCP zero addressing.

 

Esempio 1 voglio leggere e scrivere un valore numerico sul merker word 1 (0X6  1001). Cosa scrivi nell'indirizzo del campo numerico del display? Abiliti oppure no la spunta su leggi/ scrivi diversi indirizzi?

 

Esempio 2 Voglio attivare una uscita se attivo un merker bit  (0x5   1001). Cosa scrivo nell'indirizzo dell'oggetto Imposta bit?

 

Ti chiedo scusa ma non ho mai usato ul protocollo modbus e mi mancano le basi. Mi serve qualche indicazione per capire come ragionare.

Grazie

Pietro

 

Cattura2.JPG.c1ee33903b0252cafdc557b47f7d93e5.JPGCattura3.JPG.79cc3fde6765ddc26c5560b2a3429f82.JPGCattura2.JPG.c1ee33903b0252cafdc557b47f7d93e5.JPGCattura3.JPG.79cc3fde6765ddc26c5560b2a3429f82.JPGCattura4.thumb.JPG.bc91f775e47636ff39b00decacf75812.JPGCattura4.thumb.JPG.bc91f775e47636ff39b00decacf75812.JPG

Inserita:

Ho visto adesso che il plc utilizza il formato little-endian. Non so dirti se questo è importante.

Inserita: (modificato)

Buongiorno a tutti avevo posto una domanda simile in una altra sezione ma mi rendo conto che questa è la sezione corretta quindi rifaccio la domanda cercando di essere più chiaro.

Devo interfacciare un controllo EATON easy E4 con un pannello Weintwk mediante comunicazione modbus TCP. Nel pannello ho utilizzato la configurazione Modbus TCP zero addressing ( non è detto che sia la più corretta quindi accetto suggerimenti) e ho inserito l'indirizzo IP e la porta di comunicazione per collegarmi al PLC. La comunicazione avviene e qualche comando di base sono riuscito a farlo funzionare ho però difficoltà a capire come impostare gli indirizzi del PLC negli oggetti del display.

Esempio

Indirizzo PLC ingresso I1 per leggere lo stato dell'ingresso con una lampada bit che codice funzione e indirizzo inserisco?

Indirizzo PLC uscita Q1  per leggere lo stato dell'uscita con una lampada bit che codice funzione e indirizzo inserisco?

Indirizzo PLC Merker bit M1  per leggere lo stato del merker con una lampada bit che codice funzione e indirizzo inserisco? Per modificare lo stato 0/1 del merker con un pulsante imposta Bit  che codice funzione e indirizzo inserisco?

Indirizzo PLC Merker Word MW1  per leggere il valore del merker con un campo numerico che codice funzione e indirizzo inserisco? Per scrivere invece nel Merker un valore diverso che codice funzione e indirizzo inserisco?

Non mi è chiaro se devo utilizzare la tabella dei TAG oppure inserire i valori direttamente nei campi degli oggetti

 

Considerando che sia il Merker Word che Bit hanno lo stesso indirizzo come li identifico in modo univoco. Perdonatemi ma è evidente che mi mancano le basi e mi serve qualche spunto per cominciare a capirci qualcosa.

Allego alcune parti del manuale del PLC

Cattura1.JPG.12ff5010990c636af62101537b67c12e.JPGCattura2.JPG.dd60f1d4c2a823e4e841b54509980be3.JPGCattura3.JPG.d6e12012755b7c945c84632c06597425.JPGCattura2.JPG.dd60f1d4c2a823e4e841b54509980be3.JPGCattura4.thumb.JPG.4e13867fb6a0af32835ce217ed2e7461.JPG

Modificato: da Smanettone15
Inserita:
  Il 27/02/2025 alle 07:44 , Smanettone15 ha scritto:

Indirizzo PLC ingresso I1 per leggere lo stato dell'ingresso con una lampada bit che codice funzione e indirizzo inserisco?

Expand  

Innanzi tutto, non devi specificare il codice funzione. Il pannello deciderà la funzione adatta a seconda dell'uso del registro. Per esempio, definito un registro a bit, potrai leggerlo automaticamente se lo metti come indicatore, oppure verrà scritto se messo come pulsante.

Dalla mappa postata, l'ingresso I1 è mappato nel registro 1 degli input (scriverai 1x0001). 

Per l'uscita Q1, l'indirizzo è 0x0001.

Per Merker bit M1 (odio la parola Merker, per me è Memoria), è mappato in 1001, per cui per leggere o scrivere userai 0x01001 (vedi la mia precedente risposta nell'altra discussione).

Per Merker Word MW1, è mappato in 1001, per cui per leggere o scrivere la word userai 4x01001.

Come vedi, non si specifica mai il codice funzione, ci pensa il pannello, mentre userai il tipo di indirizzo specificato per l'operazione come specificato nella tabella che ti appare nelle Proprietà Dispositivo che si apre in Impostazioni Parametri di Sistema facendo doppio click (o Impostazioni) sul dispositivo da interrogare.

 

Il discorso se usare il "based zero" è un po' complicato da spiegare. E' dovuto al fatto che per ottenere l'indirizzo reale di un registro modbus, originalmente al valore doveva essere tolto 1 (per esempio, se volevo leggere il registro 40012, il protocollo avrebbe inviato la richiesta con indirizzo 0011). Questo perché ciascuna area cominciava sempre con 1 e finiva con 9999.

Poi il sistema è stato espanso in modo da gestire tutti i valori contenuti in una word a 16 bit che compone l'indirizzo del registro (da 0 a 65535). Per questo, ora non viene quasi mai indicata l'area del registro (il primo numero, quale 4xxxx), e si può partire direttamente da 0.

Te lo noterai perché altrimenti dovrai correggere (togliendo 1) dall'indirizzo. Per esempio, se leggi l'ingresso I2 e te lo vedi nel bit 1, dovrai togliere 1 dall'indirizzo.

 

Inserita:

Smanettone 15, hai fatto un'operazione non permessa dal regolamewnte perchè è causa di confusione e disguidi!

Avevi già aperto una discussione sul medesimo argomento ed hai anche ricevuto risposte.

Non reiterare questo comportamento!

 

Ora le due discussioni sono riunite; non aprirene di nuove su questo argomento.

 

 

Inserita:

Grazie Ctec.

Dopo alcuni tentativi sono riuscito a far dialogare Display e plc. Quello che non comprendo è questo.

Con un pulsante imposta bit metto a 1 il merker M1 il quale attiva il relè temporizzato che attiva l'uscita Q1. Il tempo di ritardo è memorizzato su MW1 (campo numerico). Come test imposto MW1 a 2.000 in modo da avere un ritardo di 2 secondi. Appena attivo M1 il valore visualizzato nel campo numerico diventa 2.001 appna si attiva Q1 il valore visualizzato diventa 2.003. Se nel programma e nella maschera del display  cambio da MW1 a MW2 il problema non si manifesta. Suggerimenti????

Inserita:

Secondo me le aree M1 e mw1 sono nella stessa area di memoria e quindi tu imposti 2000 e poi impostando a 1 il primo bit aggiunge 1. Devi usare delle memorie non sovrapposte

Smanettone15
Inserita:
  Il 01/03/2025 alle 08:20 , 84paolo ha scritto:

Secondo me le aree M1 e mw1 sono nella stessa area di memoria e quindi tu imposti 2000 e poi impostando a 1 il primo bit aggiunge 1. Devi usare delle memorie non sovrapposte

Expand  

Hai perfettamente ragione. Non mi ero accorto di questo problema. Con il sistema utilizzato fino a ieri non dovevo preoccuparmi di verificare le aree di memoria utilizzate dai merker. Il sistema le assegnava in automatico. Leggendo il manuale di questo plc invece mi sono reso conto dell'errore.

Ringrazio tutti per le informazioni date. Adesso mi diverto con questo nuovo giocattolo

 

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...