Vai al contenuto
PLC Forum


UTILIZZO FB CON 3 MB_MASTER INTERNI


Frank681

Messaggi consigliati

Salve

 

Sto provando a comunicare con un inverter V20 SIEMENS in RTU tramite un PLC S7 1200 cpu 1214 dc/dc/dc v3

Sto utilizzando modbus RTU poiche'non supporta USS ( solo dalla 4 in poi )

Ho gia utilizzato modbus ma mai con inverter siemens , ho strutturato il mio FB con un contatore interno che mi crei vari step scrittura

  • step 1 scrittura word comando e riferimento
  • step 2 lettura stato e velocita
  • step 3 lettura corrente
  • setp 4 fien esecuzione fb e settaggio uscita per FB sucessivo

 

il mio porblema si presenta se provo a comunicare con piu inverter, cambiando al mio fb indirizzo modbus e parametri di attivazione.

funziona tutto finche controllo un solo inverter, ma devo controllarne 6.

 

dove puo essere il problema?

 

 

 

Link al commento
Condividi su altri siti


Ma quando cerchi di comunicare con più di un drive, come ti copmporti? Fai operazioni contemporaneamente?
Se comunichi con un solo drive alla volta, funziona con tutti i nodi?

Per comunicare con 6 drive dovrai fare 6x4=24 step.
O meglio, gli step della comunicazione sono sempre 4 ma, ad ogni ciclo completo, cambi il nodo e le variabili in lettura e scrittura.

Potresti creare un array da 6 elementi, dove ogni elemento contiene una struttura con il nodo del drive, il riferimento di velocità, stato, velocità, corrente.

Ad ogni ciclo incrementi l'indice e alle funzioni colleghi le variabili dell'array puntate dall'indice.

Se per la dichiarazione dell'array usi una costante globale (da utilizzare anche nel programma), se il numero dei drive cambia ti basta modificare il valore di questa costante, ricompilare, e tutto funziona senza modificare una sola riga di programma.

Link al commento
Condividi su altri siti

Ciao Batta

 

Ho creato 2 cicliuno interno all'fb fatto di 4 passi che mi fa le scritture/letture MB

uno esterno nel main con 6 passi che mi abilita fb relatico per cui io comunico con solo un inverter per volta, sto testando il tutto nel caso che mi vada in avaria un inverter , per cui non mi risponde non vorrei che mi si bloccasse tutto, ora in sede ho solo un inverter disponibile per cui sto provandofare la scansione completa dei 6 indirizzi modbus , solo uno risponde e funziona ma con tempi di risposta ai comandi lentissimi piu di 10 secondi da quando do il comando a quando lo esegue. Mi sembre molto strano.

 

Grazie per ogni consiglio

Link al commento
Condividi su altri siti

2 ore fa, Frank681 scrisse:

solo uno risponde e funziona ma con tempi di risposta ai comandi lentissimi piu di 10 secondi da quando do il comando a quando lo esegue

Si tratta di vedere come sono gestiti gli avanzamenti dei passi. Per esempio, come gestisci il fatto che un drive non ti risponda? Hai solo un time-out di attesa della risposta o controlli anche l'eventuale errore che ti viene restituito dalla funzione di lettura/scrittura? Se salti la comunicazione con i drive che non esistono, come sono i tempi di risposta?

La comunicazione Modbus, soprattutto via seriale, come nel tuo caso, è fisiologicamente lenta, ma 10 secondi sono veramente un'enormità. Un tempo ragionevole potrebbe essere dell'ordine di 1 secondo.
Per non perdere inutilmente tempo con i drive che non ci sono, potresti prevedere, per ogni drive, un bit di abilitazione della comunicazione, e saltare tutte le operazioni per i drive non abilitati. Analogamente, potresti saltare la comunicazione per i drive che hanno dato errore, e ritentare la comunicazione con questi drive solo dopo un certo tempo.

Link al commento
Condividi su altri siti

Per i drive non presenti o con problemi nel caso di interrogazione ho uso error dell'mb_master per saltare al passo sucessivo,

i salti dei passi vengono fatti o con error o con done.

Il problema che come ora in fase di test con un solo inverter 5 inverter non presenti , la mancanza di risposta x 3 interrogazioni ogni drive mi allunga molto i tempi , vedro'come fare il salto di comunicazione per un certo tempo rilevato errore in pratica se ho capito bene devo creare un timer per ogni drive e in caso di errore di comunicazione solo dopo un certo tempo lo vado a reinterrogare.

 

Provero'

 

Grazie

Link al commento
Condividi su altri siti

Oppure memorizzi l'errore di comunicazione (con ripristino manuale) e salti la comunicazione con il drive in errore.

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