Vai al contenuto
PLC Forum


CP1E e MX2 via MODBUS


Federico.Comiotto

Messaggi consigliati

Federico.Comiotto

Salve a tutti,

l' impiantino che sto realizzando è dotato tra le altre cose di un inverter MX2 collegato via Modbus ad un CP1E-N.

Il codice per gestire la comunicazione lo ho copiato di sana pianta da un post su un sito spagnolo (allego file .cxp) e sembra funzionare a dovere.

Il mio problema è che il suddetto codice non prevede il comando di reverse per l' inverter e non ho idea di come poterlo implementare... mi potreste aiutare?

Chapter3.cxp

Link al commento
Condividi su altri siti


Se vai nel paragrafo B-4-1, vedi che puoi usare i comandi diretti alle bobine (bit) del modbus per far partire (bobina 0001h) e per cambiare direzione (bobina 0002h), purchè la modalità sia stata impostata a 03 in A002.

Trovi una tabella con tutti i comandi al bit. Il capitolo è tutto dedicato all'interfacciamento modbus

Link al commento
Condividi su altri siti

Giusto. E' il I570-IT2-01 manuale d'uso del MX2.

Poi, fate riferimento al manuale del CP1 per la descrizione del EasyMaster (manuale W471 par. 6-3-3).

E' un argomento già trattato sul forum e in febbraio 2012 avevo già dato indicazioni. Qui trovi (nel mio secondo intervento) riferimenti ad esempi.

Link al commento
Condividi su altri siti

Federico.Comiotto

Gentilissimo Ctec...

in questi giorni purtroppo ho altre priorità, ma Lunedi mi dedicherò al problema e non mancherò di aggiornarti sugli sviluppi... o di rompere ancora per qualche consiglio :)

Link al commento
Condividi su altri siti

  • 2 weeks later...
Federico.Comiotto

Purtroppo questo Modbus mi sta facendo impazzire... e visto che sto realizzando questa macchina a "tempo perso" (che non ho), purtroppo non riesco a dedicare tutto il tempo che mi sarebbe necessario per studiare un po come si deve il problema!

Ad ogni modo... volevo innanzitutto linkare questo pdf dove viene spiegato in maniera piuttosto chiara un esempio (quello che ho usato anch'io nel mio programma) di comunicazione Modbus tra CP1E ed MX2, magari può tornare utile a qualcuno.

http://www.infoplc.net/files/descargas/omron/infoPLC_net_Chapter3.pdf

 

 

Il problema che mi affligge al momento, mi rivolgo ovviamente a te Ctec, è l' incertezza con cui l'inverter digerisce la nuova frequenza che gli invio (D321 nel mio programma).

A volte è solo in ritardo l'acquisizione del dato, ed a volte proprio non lo acquisisce.

La parte di codice che si occupa della comunicazione Modbus è sempre quella che ho postato all'inizio della discussione.

Link al commento
Condividi su altri siti

Bah, strano. Io ne mando anche 5 insieme, e rispondono prontamente.

Generalmente metto la comunicazione a 38400 8N1, e tutto va perfettamente, anche se è vero che io uso il Serial Gateway e l'Easy Modbus tipici dei CP1L e CP1L-E, e non uso mai i CP1E (troppo piccoli e lenti per le mie applicazioni). Mi son fatto per comodità delle mie FB che semplificano la scrittura del software (uso solo i comandi 3 e 10 del ModBus)

Bisognerebbe che, appena ho un po' di tempo, scrivessi una specie di tutorial su tale modalità, in verità semplice da usare.

Modificato: da Ctec
Link al commento
Condividi su altri siti

Giuseppe Signorella

Bisognerebbe che, appena ho un po' di tempo, scrivessi una specie di tutorial su tale modalità, 

 Ctec, lo metto in coda all'altro?:superlol:

Link al commento
Condividi su altri siti

Federico.Comiotto

Ok, prima di tutto proverò a smanettare ancora un po con le configurazioni della porta.

Poi pensavo di snellire la parte di codice di gestione Modbus eliminando tutti quei dati che non mi servono (corrente, temperatura, ecc.), da quello che ho capito infatti la trasmissione della D321 ora avviene ad intevalli di quasi due secondi. (fa una scansione ciclica dei nove passi di programma con un clock di 0,2 secondi).

Se proprio non ne vado fuori pensavo di inviare continuamente (ad intervalli di qualche decimo di sec) la frequenza all' inverter. Lo so che non è molto elegante come soluzione ma può funzionare?

Link al commento
Condividi su altri siti

Generalmente si fa, appunto, un polling.

Si invia il messaggio al primo slave e si attende la risposta. La si analizza (nel senso di tutto ok o c'è stato un problema), si segnala eventuale problema, si passa al successivo. E così via fino all'ultimo, poi si ricomincia.

Ricordarsi di garantire il tempo di pausa del Modbus RTU tra la fine di un messaggio e l'inizio del successivo (tempo maggiore di 3 caratteri), e di mettere un timeout di risposta decente (spesso di default è almeno 1 secondo, che è un'eternità. Se non risponde in 4-5 decimi, non risponde più...).

Link al commento
Condividi su altri siti

Federico.Comiotto

Booohh... non mi funziona! nove volte su dieci mi prende il dato correttamente, ma ogni tanto non va,nonostante mi arrivi il bit di risposta.

Mi sono arreso e sono passato al treno di impulsi, che va una meraviglia!!! :thumb_yello: (peccato solo che adesso non ho più output liberi per qualche sviluppo futuro)

Grazie comunque dei consigli che torneranno sicuramente utili, ovviamente appena potrò dedicare un po di tempo cercherò di capirci qualcosa.

Link al commento
Condividi su altri siti

Prova a postare il software definitivo fatto, che ci diamo un'occhiata. E indica anche quali registri (parametri) dell'inverter vai a manipolare.

Se ti arriva la risposta (che non sarà un bit, ma un messaggio preciso), potresti analizzare cosa ti risponde per vedere se è tutto andato bene. Io temo sia un problema di tempistica, che cioè forse invii un altro messaggio prima che la precedente transazione sia conclusa, e quindi il sistema si incasina.

Io uso (non il CP1E, in verità) i CP1 con inverter di parecchie marche diverse in modbus, sempre con successo.

Link al commento
Condividi su altri siti

  • 3 weeks later...
Federico.Comiotto

Mi scuso per il "leggero" ritardo nel rispondere.

Allego il software completo...

Per la comunicazione con l'inverter, oltre ai comandi di start e di stop, mi serve solo impostare la frequenza con D321 (le rampe di acc e dec sono parametrizzate nell' inverter stesso) e poi leggere la frequenza effettiva in D303 (per gestire un'anomaila di freq. non raggiunta).

 

Il problema è che ogni tanto l' inverter non acquisisce la nuova frequenza che gli invio e a volte non riceve nemmeno il comando di start.

Il sw è stato un po' "pastrocciato" con alcuni temporizzatori per cercare appunto di dare il tempo all'acquisizione dei dati, ma senza risultato.

Come ho gia scritto, ho ovviato al problema gestendo l'inverter con un' uscita ad impulsi del PLC, ed il tutto funziona a dovere. Infatti la macchina nel frattempo è gia stata consegnata al "cliente".

 

Filtri.cxp

Link al commento
Condividi su altri siti

Nicola Carlotto

presumo che il cavo di comunicazione sia schemato e non ci siano cause di disturbo elettromagnetico , quindi anche il cavo di uscita dell'inverter sara' schemato ed avvolto ad   un nucheo in ferrite e naturalmente i cavi precedentementi menzionati non viaggiano vicini ?

Nicola

Link al commento
Condividi su altri siti

Federico.Comiotto

il cavo di comunicazione è un cavetto schermato di 30 cm di lunghezza.

I cavi di potenza sono tre normali fili da 1,5mmq (motore da 0,25Kw), quindi non schermati e niente ferrite; inoltre corrono per 20cm in canalina assieme al cavetto di comunicazione.

Considerato che il problema si manifesta anche a motore fermo (quindi con zero corrente all'uscita dell' inverter), non credo si tratti di un problema di disturbi.

Sbaglio?

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