Vai al contenuto
PLC Forum


Lettura Dati Inverter Tramite Blocco Mb_Master


Andrea.V

Messaggi consigliati

Sera a tutti ( e buone feste anche se in ritardo :) )

Avrei un problema da sottoporvi...ho 3 motori collegati a inverter di cui devo leggerne rispettivamente Assorbimento di corrente e Frequenza. Premesso che è la primissima volta che mi occupo di comunicazione , mi metto sotto e cerco di capire come funziona il blocco MB_MASTER . Vi allego l'immagine del mio blocco ancora da completare .

Ora , la mia domanda è : è possibile con questo singolo blocco andare a leggere i 2 dati che desidero ? Oppure ne serve un altro e ogni blocco deve avere il DATA_ADDR diverso per poter accedere con uno alla corrente e con l'altro alla frequenza? ( Ammesso di aver compreso bene l'utilizzo della voce DATA_ADDR )

Spero di essere stato chiaro. Per ulteriori spiegazioni sono disponibile. Grazie a tutti in anticipo e aspetto una vostra risposta .


Mi sono dimenticato di una cosa : Il DATA_LEN è a 2 perchè pensavo servisse per il numero di letture che volevo ottenere dal blocco. Probabilmente sto sbagliando e vorrei capire il perchè :)

post-196077-0-58814000-1389108048_thumb.

Link al commento
Condividi su altri siti


Ciao, non conosco il blocco di cui parli, ma ne ho usato uno simile con un plc di altra marca e credo che comunque sia simile...

Se vuoi leggere entrambi i dati, devi necessariamente utilizzare due blocchetti con ognuno l'indirizzo del dato che ti serve.

Nell'immagine che hai allegato, ti manca l'indirizzo del dato che vuoi leggere (DATA_ADDR) che è l'indirizzo modbus a cui si riferisce ad esempio la corrente.

In DATA_LEN devi mettere la lunghezza del dato (1 o 2 word). Immagino che poi il risultato verrà scritto in DATA_PTR.

MB_ADDR immagino sia l'indirizzo del nodo modbus del'inverter che devi interogare.

MODE, non ne ho idea.

Link al commento
Condividi su altri siti

Giuseppe Signorella

Ciao Andrea.

I parametri di configurazione del modulo modbus Master sono spiegati bene nel manuale.

In ogni caso (vado a mente), quindi potrebbe esserci qualche discrepanza:

MB_ADDR è l'indirizzo dello slave, (Ogni tuo inverter dovrà avere un indirizzo univo che lo identifica all'interno della rete). Questo parametro lo devi settare all'interno del tuo inverter come specificato nel suo manuale.

MODE identifica l'operazione che vuoi eseguire (0,1,2,11, 80,81). Ad esempio, 0=lettura; 1 e 2= scrittura; ecc.

DATA_ADDR è l'indirizzo del primo registro su cui vuoi operare.

DATA_LEN è il numero di registri CONSECUTIVI che vuoi leggere o scrivere. Su questo ci sarebbe un pò da dire, in quanto tutto dipende dal codice funzione che vuoi eseguire. (Anche da quello che permette il tuo inverter)

Se i dati che vuoi leggere dal tuo inverter, (frequenza e potenza), sono pressappoco vicini come registri, ad esempio 40011 e 40022, puoi leggerti direttamente 10 registri contemporaneamente ed poi lavorarti solo quei due che a te interessano.

Ti rimando ad un piccolo tutorial presente nella sezione didattica:

http://www.plcforum.it/portale/didattica.php?read_all=122

Fa riferimento alla comunicazione modbus tcp, ma cambia poco rispetto a quella RTU.

Ciao

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

Ah ok va bene grazie mille per gli aiuti :smile: Darò un'occhiata allora e ci studierò sopra

Modificato: da Andrea.V
Link al commento
Condividi su altri siti

Avrei ora un'altra domanda : ora ho sistemato il blocchetto e ho trovato i vari DATA_ADDR riferiti alla corrente e alla frequenza...ora , se il mio DATA_LEN è uguale a 1 , io andrò a leggere quei dati sulla prima Word che parte dal puntatore del DATA_PTR ? Ovviamente un blocco è riferito alla corrente e uno alla frequenza quindi word diverse

Link al commento
Condividi su altri siti

Giuseppe Signorella

se il mio DATA_LEN è uguale a 1 , io andrò a leggere quei dati sulla prima Word che parte dal puntatore del DATA_PTR ?

No!

Se DATA_LEN è pari ad 1, andrai a leggere solo il primo registro dell'inverter remoto. (Quindi leggerai un solo registro).

DATA_PTR, è l'allocazione di memoria nel quale il plc andrà a scrivere i dati ricevuti.

Ovviamente esso deve essere in grado di contenere tutti i dati ricevuti. Tanto per ritornare all'esempio del precedente post, se tu devi leggere dieci registri di tipo word, ti creerai un DB contenente una variabile di tipo array di dieci elementi con dati di tipo word oppure int ecc.

Link al commento
Condividi su altri siti

Ciao

L'impostazione DATA_LEN indica il numero di word da leggere dall'inverter , ammesso che le tue 2 word siano vicine 40011 e 40012 con DATA_LEN 2 le legerai entrambe , devi preparare un Db in cui scrivere le 2 word e assegnarlo in DATA_PTR.

altrimenti se leword sono lontane usi più blocchi MB_MASTER creando come rischiesta un controllo sequenziale e tenendo presente che la lettura è seriale dunque un blocco alla volta , nei manuali e negli esempi sono spiegati olto bene. Tieni conto che i tempi si allungano al numero di letture che devi efettuare comunque se non hai necessità di elaborazioni veloci , con 3 inverter il problema non sussiste.

P.S. mi raccomando le resistenze di terminazione del BUS.

spero di esserti stato utile

Modificato: da Frank681
Link al commento
Condividi su altri siti

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...