Vai al contenuto
PLC Forum


Modbus Tcp/ip


sondino

Messaggi consigliati

Salve a tutti.

In un programma che sto seguendo ma che non ho implementato io direttamente, cè già una lettura in mb_client tcp. Sono 10 blocchi in cui il primo done attiva il secondo e via dicendo. Il tutto funziona correttamente. Abbiamo avuto la necessità di aggiungere un secondo dispositivo quindi è stato fatto un semplice copia incolla dei primi 10 blocchi ed è stato solo cambiato l'indirizzo IP e sostituito il connect id con 2 anzichè 1. Il blocco originale funziona mentre il secondo aggiunto non lavora. sono state fatte le prove ad invertire l'ip dei due dispositivi ed è sempre il secondo ip che non lavora.Chi ha sviluppato dice che forse l'errore è propio il copia incolla lasciando il db di istanza uguale alle letture del primo indirizzo ip. Sabato devo finire il lavoro e cambierò il db di istanza a tutti i nuovi blocchi. Funzionerà?

Grazie e buon Natale...

Modificato: da sondino
Link al commento
Condividi su altri siti


Giuseppe Signorella

Il protocollo modbus è un protocollo master-slave.

Questo significa che all'interno della rete ci deve essere un solo device chiamato master che hai il compito di interrogare tutte gli altri oggetti. Tutti gli altri device presenti nella rete devono essere degli slave che rispondono solo quando interrogati dal master.

Da quello che ho compreso il PLC esistente funziona da master. quindi nella rete non può essere presente un'altro dispositivo master in quanto si crea una conflittualità tra le interrogazioni. (Le richieste provenienti dai due master vanno in collisione).

La procedura corretta, sarebbe quella che ad effettuare le funzioni da master sia una sola delle due CPU, e poi trasferisce le informazioni alla seconda CPU.

Link al commento
Condividi su altri siti

Giuseppe Signorella

Abbiamo avuto la necessità di aggiungere un secondo dispositivo quindi è stato fatto un semplice copia incolla dei primi 10 blocchi ed è stato solo cambiato l'indirizzo IP

Da come avevi scritto avevi lasciato intendere che fosse stato aggiunto un secondo PLC. (Ho almeno io lo avevo interpretato in questo modo)

Plc ce né uno solo. I due "dispositivi" sono analizzatori di rete.

Adesso è un po più chiaro.

Inanzi tutto quale versione del TIA stai utilizzando è quale versione di firmware ha il PLC?

Non avendo visto il programma, rispondo in merito alle informazioni da te fornite.

Se i blocchi mb_client tcp che hai aggiunto, hai continuato a gestire la comunicazione seguendo la programmazione a step, quindi con il done in cascata ed in successione a quelli già esistenti (e con lo stesso connect_ID) non ci dovrebbero essere problemi, il tutto dovrebbe funzionare senza problemi, anche se effettui la lettura scrittura su uno slave con IP differente.

Se invece da quello che leggo, hai inserito i nuovi blocchi con un ID differente, devi necessariamente richiamare un altro blocco di istanza differente da quello precedente.

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

Se i blocchi mb_client tcp che hai aggiunto, hai continuato a gestire la comunicazione seguendo la programmazione a step, quindi con il done in cascata ed in successione a quelli già esistenti (e con lo stesso connect_ID) non ci dovrebbero essere problemi, il tutto dovrebbe funzionare senza problemi, anche se effettui la lettura scrittura su uno slave con IP differente.

Abbiamo provato ma non funziona, forse, anzi, sicuramente, sbagliamo qualcosa.

Domani provo con un nuovo db e connect id 1. Ti faccio sapere.

Link al commento
Condividi su altri siti

Giuseppe Signorella

Domani provo con un nuovo db e connect id 1. Ti faccio sapere.

Se cambi DB, cambia anche id.

Questo deve essere univoco per ogni istanza

Il concetto è che ogni istruzione (identificata con un ID univoco) richiama il proprio DB, quindi "un DB ed un ID".

Esempio:

Connect_ID_1 = MB_Client_DB_1

Connect_ID_2 = MB_Client_DB_2

Connect_ID_3 = MB_Client_DB_3

Connect_ID_4 = MB_Client_DB_4

Se invece utilizzi il medesimo DB, (e stesso ID) ma cambi solo indirizzo IP, devi prima disconnetterti, trasferire in nuovi parametri al blocco e poi riconnetterti.

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

Funziona! Ma daiii :thumb_yello:. Riassumendo sono 10 istruzioni MB_CLIENT sul "DB1" con connect_id 1 e IP xxx.xxx.xxx.xx1 e altre 10 istruzioni sul "DB2" con connect_id 2 e ip xxx.xxx.xxx.xx2. la prima istruzione parte con first_scan, done 20 e error 20 poi a scendere in cascata. Perfetto. Grazie. Xfile chiuso :clap: .

Modificato: da sondino
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...