Vai al contenuto
PLC Forum


Modbus - Scambio Dati


Messaggi consigliati

Inserito:

Ciao a tutti,

mi trovo per la prima volta ad usare una CP341 RS232/485 in configurazione Modbus per fornire dei dati in lettura ad un DCS.

Ho configurato lo scambio dati tramite il mio DB13. Però chi sta dal'altra parte (DCS) mi chiede l'indirizzo delle variabili modbus che deve leggere.

Ho seguito molti topic in cui si parlava di modbus ma non sono riuscito a trovare qualcosa che mi aiutasse.

Forse ho sparato qualche cavolata e me ne scuso, ma non ho nessuna esperienza con il modbus.

Grazie a chi mi risponde.

Paolo


Inserita:

Nella documentazione dell'azionamento dovrebbe esserci la lista degli indirizzi Modbus di ogni parametro/ingresso/uscita accessibile via Modbus.

Inserita:

db13.dbw0 = 400001

db13.dbw2 = 400002

.....

Attenzione che probabilmente (ma comunque verifica) i byte sono invertiti

Inserita:

Ok, grazie rddiego. Nel mio caso il db è formato da una parte iniziale di bit, da una centrale di Real e da una finale ancora di bit.

Il dubbio che mi sorge è sulla sequenzialità degli indirizzi quando devo numerare le word e dopo ancora i bit.

Mi spiego meglio :

DB13.DBX0.0 -> 10001

DB13.DBX0.1 -> 10002

DB13.DBX0.2 -> 10003

DB13.DBX0.3 -> 10004

.......

DB13.DBD20 -> 70001 o 70004

DB13.DBD24 ->

.......

DB13.DBX32.0 ->

DB13.DBX32.1 ->

....

La prima Real che passo dovrebbe essere 70001 oppure considerata la quinta dall'inizio e cioè 70004 ???

Grazie

Paolo

Inserita:

ATTENZIONE!!!

il registro 700001 in modbus non esiste! Se l'hai trovato nel DCS probabilmente è il DCS stesso che si fa carico di costruire da due registri (INTERI) 4xxxxx un Floating Point a cui gli è stato assegnato l'indirizzo 7xxxxx nel DCS.

Quando nella CP341 gli hai assegnato alle funzioni 03-16 (se non ricordo male) la DB13 vuol dire che tutti i registri da 400001 in poi corrispondono alla tua DB13.DBW0 in poi.

Le word sono tutte degli interi e non esiste una lettura di doppie word o reali.

Nel tuo esempio la

DB13.DBD20 corrisponde alle words DB13.DBW20+DB13.DBW22 che in modbus saranno 400011+400012

per chiarirti di più:

DB13.DBW0 = 400001

DB13.DBW2 = 400002

DB13.DBW4 = 400003

DB13.DBW6 = 400004

DB13.DBW8 = 400005

DB13.DBW10 = 400006

DB13.DBW12 = 400007

DB13.DBW14 = 400008

DB13.DBW16 = 400009

DB13.DBW18 = 400010

DB13.DBW20 = 400011

DB13.DBW22 = 400012

DB13.DBW24 = 400013

DB13.DBW26 = 400014

DB13.DBW28 = 400015

DB13.DBW30 = 400016

DB13.DBW32 = 400017

Poi........ parliamo dei bit.....

In modbus non è possibile fare una lettura di bit di word, bisogna maskerare la word che li contiene. Potrebbe essere che sia una funzione già esistente nel DCS guardaci.

Quindi il bit0 della prima word 400001 è il risultato dell'istruzione seguente:

400001 AND 16#0001

L'indirizzo modbus 100001 corrisponde in realtà al primo bit d'ingresso E0.0 quindi non c'entra nel tuo esempio.

In sostanza i tuoi bit saranno:

DB13.DBX0.0 -> 400001 AND 16#0001

DB13.DBX0.1 -> 400001 AND 16#0002

DB13.DBX0.2 -> 400001 AND 16#0004

DB13.DBX0.3 -> 400001 AND 16#0008

Ripeto, il mascheramento probabilmente è già implementato nel tuo DCS guarda bene.

Siccome molto probabilmente i byte vengono invertiti durante la trasmissione il risultato sarà:

DB13.DBX0.0 -> 400001 AND 16#0100

DB13.DBX0.1 -> 400001 AND 16#0200

DB13.DBX0.2 -> 400001 AND 16#0400

DB13.DBX0.3 -> 400001 AND 16#0800

L'altro gruppo di bit sarà:

DB13.DBX32.0 -> 400017 AND 16#0100

DB13.DBX32.1 -> 400017 AND 16#0200

Inserita:

Ok, grazie, sei stato molto chiaro rddiego.

Domani provo (visto che sono in Cina e siamo 6 ore avanti)

A presto e grazie

Inserita:

Ciao,

allora il DCS permette la lettura di bit (probabilmente perchè fa la mascheratura dei bit come diceva rddiego).

Il problema è che la FB80 mi restituisce degli errori ma non trovo l'. della diegnostica per capire che errori sono.

E poi penso che sia sbagliata anche l'impostazione dei parametri nel protocollo della CP341.

Qualcuno ha un programma d'esempio con driver Modbus slave?

Grazie a tutti

Inserita:

In modbus si possono leggere e settare i bit (bobine). Nel driver siemens per la 341 si possono impiegare come bit solo i merker e non i bit nei DB.

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