Vai al contenuto
PLC Forum


Modbus Comunicazione Con Dcs


Messaggi consigliati

Inserito:

Salve a tutti,

mi trovo a singapore per un test con un cliente Arabo presso Yokogawa ed ho un grosso problema, non riesco a far comunicare la CPU via MODBUS ne con il DCS del cliente ne con il mio PC (usando modbus poll)...nel senso che non mi da errore di comunicazione, ma non riesco ne a leggere ne a scrivere nei registri della CPU.

Premetto che il programma non l'ho fatto io, però il vendor mi ha assicurato di averlo testato (ci credo poco), nel programma sono presenti codici di proprietà di Siemens (MBUS_SLAVE, MBUS1, MBUS2, MBUS3).

Di seguito la configurazione MBUS_INT:

EN = SM0.0

MODE= 1

ADDR = 1

BAUD = 9600

PARITY = 2

DELAY = 2

MAX IQ = 128

MAX AQ = 128

MAX HOLD = 32

HOLDST = &VB100

DONE = M10.1

ERROR = MB11

Nel main program ho la funzione MBUS_SLAVE:

EN = SM0.0

DONE = M10.2

ERROR = M12

Non capisco perchè non va...potreste aiutarmi magari facendomi un semplice programma con 2 in e 2 out...giusto per far vedere al cliente che "quasi va".

Grazie :unsure:


Inserita: (modificato)

proprietà di Siemens (MBUS_SLAVE, MBUS1, MBUS2, MBUS3).

tra i blocchi di biblioteca deve essere presente anche MBUS_INIT oltre a quelli elencati

la comunicazione e' impostata con parita' pari (2) e cosi' deve essere il DCS/modbus poll.

con l'impostazione fatta le corrispondenze tra simatic e modbus sono:

uscita A0.0           00001
uscita A0.1           00002
ingresso E0.0        10001
ingresso E0.1        10002
ingr. an AEW0       30001
ingr. an AEW1       30002
mem VV100         40001
mem VW102        40002

Modificato: da rguaresc
Inserita:

Ciao,

c'è anche la biblioteca MBUS_INIT non capisco perchè non funziona...il problema è che mi da "read and write error"...all'inizio mi dava "time out error", ho risolto facendomi prestare un convertitore serio RS232-RS485...sono in difficoltà, non so se dire al cliente che torno in Italia risolvo e poi ritorno oppure risolveremo tutto durante lo startup...cosa mi consigliate?!?! :unsure:

Inserita:

Ho un altro dilemma, il MBUS_INIT ed il MBUS_SLAVE vengono messi sempre ON tramite SM0.0...leggendo il manuale dice che il MBUS_INIT deve essere inizializzato solo il primo ciclo da SM0.1 e il MBUS_SALVE sempre ON tramite SM0.0...potrebbe essere questo il problema??? Anzi, spero sia questo il problema...nel programma "resetto" le varie uscite tramite SM0.1 al primo ciclo, presumo come partenza del sistema...attendo news, è due giorni che dormo 5 ore per capire come risolvere...saluti. :)

Inserita: (modificato)

il MBUS_INIT ed il MBUS_SLAVE vengono messi sempre ON tramite SM0.0 si esatto, il MBUS_INIT va eseguito solo una volta con Mode=1 per impostare la porta in modbus oppure con Mode=0 per ripristinare il protocollo PPI. Se la porta e' permanentemente dedicata al modbus va bene avviare il MBUS_INIT con SM0.0.

il MBUS_SLAVE va invece eseguito ad ogni scansione, quindi con SM0.0

Modificato: da rguaresc
Inserita:

va bene avviare il MBUS_INIT con SM0.0.

errore! micorreggo: avviare con SM0.1 per eseguirlo solo all'avviamento della CPU.

La comunicazione modbus e' lenta a 9600 bps se confrontata col ciclo di scansione della cpu. Se si avvia ad ogni scansione il MDBUS_INIT questo resetta continuamente i registri di comunicazione e impedisce al messaggio modbus di arrivare al richiedente, per cui chiama MODBUS_INIT con SM0.1

Inserita:

In questo caso sono in un mare di M...ho una CPU con due porte (6ES7216-2AD23-0XB0), 0 per modbus ed 1 per pannello oppure PPI, potrebbe essere il connettore? Ne sto usando uno per profibus, se non ricordo male il modello è 6ES7 972-0CA50-0XA0...mah?!?! Sono sempre più perplesso...aiutooo!!! :unsure:

Inserita: (modificato)

La mia risposta precedente(#7) non credo sia corretta...c'è stato un misunderstanding Singapore-Italia...il connettore va bene???

Ti prego dimmi che ho appena letto una buona notizia...non è corretto utilizzare SM0.0 ma devo usare SM0.1 la comunicazione MODBUS è in effetti 9600...domani vado in Yokogawa e sistemo il programma...ho due cinesi, due coreani, un indiano ed un arabo col fiato sul collo...ogni 20 minuti mi chiedono "is it running? No? Why?"...un incubo...grazie mille! Spero e prego in bene!

Modificato: da zecchigiu
Inserita:

Il connettore per profibus va bene, ma alla velocita' di 9600 bps va bene tutto. Quando e' innestato, col tester, puoi misurare la tensione DC tra i due fili del doppino: la tensione e' di circa 1 V

La comunicazione modbus avviene per telegrammi: quando il master chiede il valore di un registro la cpu preleva il dato e lo trasmette tramite le funzioni di MDBUS_SLAVE. La trasmissione a un bit per volta dura relativamente molto tenendo conto che e' a 9600 bps, dura, cioe' il tempo di diverse scansioni di programma da parte della cpu ed e' asincrona rispetto al ciclo della cpu.

Il modulo MDBUS_INIT inizializza i registri per il modbus mettendo a zero i contatori, gli indici per avere uno stato iniziale. Se la cpu esegue un INIT ad ogni scansione interrompe il tentativo di dare una risposta all'interrogazione che fai e che non puo' mai completarsi. Quindi la procedura MDBUS_INIT va fatta una volta sola (SM0.1 = prima scansione) e dopo la chiamata ciclica MBUS_SLAVE organizzera' le risposta alle interrogazini esterne.

Il cavo multimaster RS232-PPI Siemens va bene, devi mettere a 0 gli switch dal 4 in poi per disattivare il funzionamento PPI

Inserita:

Ecco, sono uno str...ho portato il cavo USB per comodità...non ho parole...però come ti dicevo ho un convertitore USB->RS232->RS485, collego A1-B1 e via...spero funzioni...domani ti faccio sapere, sei stato di grande anzi grandissimo aiuto...saluti, dormo speranzoso! :)

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