Vai al contenuto
PLC Forum


Cp341 (rs422) - Comunicazione Seriale - come fare?


Akira

Messaggi consigliati

Salve a tutti.

ho un piccolissimo problema.

Devo implementare una comunicazione seriale fra un S7-300 ed una macchina.

Ho pensato di utilizzare una CP341 utilizzandone le capacità di dialogo in RS422 o RS485.

Le mie domande sono: in S7 devo installare un pacchetto apposito? (nella conf. HW la trovo ma quando cerco di parametrizzarla non mi è possibile).

Come faccio ad inviare i dati? Vorrei inviare stringhe di pochi byte, mi fornireste un esempio concreto nel caso volessi utilizzare l'RS422 (non so se ci sono blocchi standard da usare e come - sono nuovo in questo ambito e non ho una cpu per fare le prove... devo implementare il tutto direttamente sull'impianto).

Posso utilizzare eventualmente la CP341 per la comunicazione diretta in RS232?

Grazie a tutti

ciao.

Link al commento
Condividi su altri siti


Le mie domande sono: in S7 devo installare un pacchetto apposito? (nella conf. HW la trovo ma quando cerco di parametrizzarla non mi è possibile).

Si fa' tutto col Simatic Manager. Se sei riuscito ad inserire l'oggetto nello apposito slot allora fai double click sull'oggetto e ti aparira' il box properties. Premi il bottone Parameter.. e ti aparira' la finestra per l'assegnazione dei parametri per la connessione PtP. Double click sul box Protocol e ti aparira' il box per l'impostazione del protocollo. Dal Tab Address ne ricavi gl'indirizzi che andrai a darli agli FB SENT - RECEIVE che controllaranno il flusso tra AG e CP. Manualistica con degli esempi, FBs, files di libreria vengono forniti con lo apposito scheda (CD).

Posso utilizzare eventualmente la CP341 per la comunicazione diretta in RS232?

Quale sigla ha la CP?

Modificato: da Savino
Link al commento
Condividi su altri siti

per il software ho dovuto installare un pacchetto opzione PtP scaricato dal sito siemens, forse con una versione più aggiornata di Simatic Manager questo pacchetto è già incluso, io uso S7 v5.2 SP3.

la sigla della CP è 6ES7 341-1CH01-0AE0.

Grazie Savino

ciao.

Link al commento
Condividi su altri siti

Ciao,

Dunque la 6ES7 341-1CH01-0AE0 e' una porta RS422/485.

Per RS232 serve la 6ES7 341-1AH00-0AE0 / 6ES7 341-1AH01-0AE0 .

Allora se il tuo partner e' una RS232 purtroppo ti serve un convertitore.

sono nuovo in questo ambito e non ho una cpu per fare le prove... devo implementare il tutto direttamente sull'impianto).

Senza un "validation" in sede la vedo dura sul campo....... vedi te. <_<

Link al commento
Condividi su altri siti

Se puoi aspettare una decina di giorni ti posso mandare qualche esempio. Ora sto partendo per una settimana di ferie (anche questa volta con notebook appresso per portare avanti lavoro arretrato :angry: ) e dove vado non c'è una connessione internet.

Se passano 10 giorni e non ricevi niente, ricordamelo con un pm.

Link al commento
Condividi su altri siti

aspetto volentieri il tuo rientro.

Nel frattempo potresti leggerti il manuale

Magari ci riesci prima. Dopotutto non e' cosi difficile.... provaci... coraggio :)

Modificato: da Savino
Link al commento
Condividi su altri siti

volevo giusto segnalare un mio dubbio :

devo inserire una CP341 in una configurazione esistente. il rack ha una espansione con una IM 361 (credo) Sender e Receiver sul rack di espansione.

La domanda è: posso aggiungere la CP341 sul rack di espansione? in configurazione hw, s7 me lo consente... ma poi è funzionante?

Link al commento
Condividi su altri siti

La domanda è: posso aggiungere la CP341 sul rack di espansione? in configurazione hw, s7 me lo consente... ma poi è funzionante?

Vedi 4.1 del manuale sopra linkato : " Luoghi di montaggio del CP341 "

La domanda è: posso aggiungere la CP341 sul rack di espansione?

Per esperienzie con CP 340 e S7314 in config. centralizzate so che tra i primi 8 slots a destra della CPU va bene, poi............. <_<

In un apliamento descentralizzato beh, non ne troverei il senso.

sotto un'altro link

Quick start

Link al commento
Condividi su altri siti

grazie savino della tua puntualità e disponibilità.

il fatto è che ho una cpu con il primo rack completamente occupato. c'è un rack di espansione che ha posti liberi per ulteriori schede. avevo pensato di metteri li la scheda del CP341, se fosse completamente permesso... in S7 in conf.HW me lo lascia fare...

se non fosse possibile ho il problema di dover spostare delle schede dal rack principale e portarle sul secondario... devo modificare la conf. HW.

il problema sono i cablaggi interni al quadro... dato che i due rack sono distanti circa 1 metro e tutti i cavi non posso raggiungere quella distanza.

Mi chiedevo se fosse possibile "aggiungere" al rack secondario la CP341 semplicemente accodandola alle scede esistenti (tra l'altro sarebbe nei primi 8 posti ma dalla IM di espansione , credo la IM 361 Receiver.)

ecco tutto.

grazie.

Link al commento
Condividi su altri siti

Mi chiedevo se fosse possibile "aggiungere" al rack secondario la CP341 semplicemente accodandola alle scede esistenti (tra l'altro sarebbe nei primi 8 posti ma dalla IM di espansione , credo la IM 361 Receiver.)

Akira, questo layout non l'ho mai esperimentato quindi non posso darti un accertamento al 100%. Comunque, si' ti consiglierei di fare una simulazione senzaltro....

Volendo, potresti anche chiedere al pronto intervento oppure nel loro Forum ( registrazione by free )

Link al commento
Condividi su altri siti

Gabriele Corrieri

Ciao

se non erro il limite (se c'è) dovrebbe essere nell'impiego dell' IM365, espansione per singolo rack, ma mi pare che sia sparita pure quel limite.

Prendete queste informazioni con le pinze.

Ciao

Link al commento
Condividi su altri siti

rieccomi qui.

ho effettivamente installato la CP341 sul rack principale del plc al posto connettore n.3, ho importato nel mio progetto i blocchi di comunicazione dalla libreria PtP fornita con il cd della scheda. Ho creato i blocchi DB di istanza. Ho configurato la scheda per comunicare in RS422 con protocollo ASCII, 9600baud, 1 bit stop, nessuna parita' (richiesto dal partner di comunicazione). Tutto come da manuale.

Ho cablato i connettori lato CP341. Dall'altra parte un partner che comunica in RS232... nessun problema ho utilizzato un convertitore RS422 -> RS232.

Ho fatto alcune prove e... TUTTO FUNZIONA (o meglio in parte).

I dati viaggiano in un senso e nell'altro.

Il problema è che i bit di DONE, di ERROR e la parola di STATUS del blocco di SEND restano SEMPRE a zero! I dati viaggiano fino a destinazione. Se stacco un connettore (o sulla CP341 o sul convertitore o sul partner finale) la CP non se ne accorge... o meglio se stacco il connettore che collega la CP al convertitore sulla CP si accende il led di fault, ma nessuna segnalazione mi è data nel programma utente. Se invece stacco il connettore lato partner (fra convertitore e partner finale) non succede nulla... è come se non l'avessi staccato.

La stessa cosa avviene nel blocco di RCV. Se arrivano i dati ho le informazioni sulle lunghezze ma le informazioni di stato di ricezione non si muovono da zero.

Trattandosi di una applicazione "delicata" devo eseguire delle azioni se le comunicazioni con il partner non vanno a buon fine.

Ho letto e riletto il manuale ma non ho trovato nulla che mi possa aiutare.

Qualcuno sa dirmi qualcosa?

Grazie

p.s.: rispondo a Gabriele: infatti hai ragione con l'impiego della IM365 la scheda CP341 puo' essere tranquillamente montata sul rack di espansione purchè si rispetti la regola di posizione nei primi 8 posti connettori...

ciao.

Modificato: da Akira
Link al commento
Condividi su altri siti

Il problema è che i bit di DONE, di ERROR e la parola di STATUS del blocco di SEND restano SEMPRE a zero! I dati viaggiano fino a destinazione. Se stacco un connettore (o sulla CP341 o sul convertitore o sul partner finale) la CP non se ne accorge... o meglio se stacco il connettore che collega la CP al convertitore sulla CP si accende il led di fault, ma nessuna segnalazione mi è data nel programma utente. Se invece stacco il connettore lato partner (fra convertitore e partner finale) non succede nulla... è come se non l'avessi staccato.

Ciao Akira,

Dunque, premesso che ho fatto esperienze con CP340-20mA TTY e non 422/485 ( penso non dovrebbero esserci grosse differenze comunque) ....... ci provo ad aiutarti.Per quanto riguarda il problema nello scollegamento HW, lascialo sospesso per il momento. Supponiamo che controllerai la validita' dei telegrammi da SW soltanto. Se dal lato PLC-CP, il blocco "Receive" non riconosce la fine della trasmissione del pacchetto di dati, potrebbe darsi che non hai parametrizzato bene la CP, indicando la lunghezza del telegramma in bytes ( se hai scelto trasmissione a lunghezza fissa) oppure settando i parametri di fine trasmissione( se hai scelto a lunghezza variabile) e quindi la CP continua a girare aspettando a punto la fine del telegramma.

Dal lato PC, la routine di recezione controlla il arrivo dei dati di fine telegramma anche,(Xon/Xoff oppure da te diterminati) se questi non arrivano dentro un certo periodo di tempo, segnala l'anomalia.

Modificato: da Savino
Link al commento
Condividi su altri siti

Akira, ho riletto tuo post ancora....

...si accende il led di fault, ma nessuna segnalazione mi è data nel programma utente

Allora SF accesso, STATUS nella funzione RECEIVE e SEND sempre a zero. <_<

Dunque, la CP sembra bloccata .... ma tu dici che riesci a vedere dei bytes di dati tanto dal lato PLC che PC,

Quindi confermi l'accensioni dei leds verdi TXD e RXD tanto quando la CP e' in trasmissione che quando e' in ricezione giusto ?

Link al commento
Condividi su altri siti

Grazie Savino per la tua disponibilità.

Allora il CP invia e riceve correttamente i dati.

I led indicati da te si accendono e lampeggiano in corrispondenza dell'invio e della ricezione.

ciao

Link al commento
Condividi su altri siti

Allora il CP invia e riceve correttamente i dati.

I led indicati da te si accendono e lampeggiano in corrispondenza dell'invio e della ricezione.

Benissimo.

Allora nel box Protocollo...

Tab ASCII cosa ha indicato come "Riconoscimento della fine di un telegramma ricevuto"

Tab trasmissione, controllo del flusso dei dati

Tab ricezione....

Tab l'interfaccia, cosa per il tipo di funzionamento e preimpostazione della linea di ricezione. ??

Poi, pressumo che avrai controllato bene di non avere appoggiato merkers gia' utilizate da qualche parte, come I/O per li FBs (REQ, R, DONE, ERROR, EN_R, NDR....)

La word assegnata per STATUS in SEND deve essere diversa di quella di RECEIVE.

Valore di LEN ?

Modificato: da Savino
Link al commento
Condividi su altri siti

Ciao,

allora riporto quanto settato come impostazioni sulla CP341

PROTOCOLLO ASCII: Riconoscimento fine telegramma ricevuto: a scadenza del tempo (impostato a 4ms come da default)

Settaggi del protocollo: 9600 baud - 8 bit - 1 bit di stop e nessuna parità

Trasmissione: nessun controllo di flusso

Ricezione: come da default, 422 a 4 fili come da default.

grazie.

Link al commento
Condividi su altri siti

Ciao Akira,

Dunque, se il RxD cade per un scollegamento del cavo quando il blocco RECEIVE sta ricevendo i dati, senza permettere di ragiungere la fine del telegramma , il gruppo allarme LED SF(rosso) insieme al led RXD(verde) restano sempre accessi.

Poi, per leggere direttamente il buffer di diagnostica del CP, dovresti andare in HW configurazione, segnalare lo slot con il CP sul rack, vai sulla barra del menu, PLC, informazione modulo, allora entri ON LINE con il CP, selezioni il Tab buffer diagnostica.... sul buffer devi trovare una lista con gli eventi piu' recenti ..... dai una guardata alla pag.8.22 del manuale, "informazione di diagnostica in esadecimale".

Per quanto riguarda lo scollegamento del cavo, beh analizza un attimo tuo layout. Ma il convertitore da che lato e' posizionato ? Lunghezza del cavo ?

CP341      PC RS232
2  RxD <-  TxD
3  TxD ->  RxD
7  RTS ->  CTS 
8  CTS <-  RTS
6  DSR <-  DTR
4  DTR ->  DSR
5  GND <-> GND

Con 9600 fino< 50 metri

RS422
CP341        PC 422
2  T(A) - -> R(A) 4
9  T(B) + -> R(B) 11
4  R(A) - <- T(A) 2
11 R(B) + <- T(B) 9
8  GND  <->  GND  8

cavi > 50 metri : Resistenza di 330 ohm tra 4 e 11 della CP.
Con 9600 fino a 600 metri.

Su questo tipo di collegamento a 4 fili, potrebbe risultare conveniente un controllo ridondante SW piuttosto.

Link al commento
Condividi su altri siti

Ciao Savino.

grazie dell'aiuto.

Allora il collegamento è:

CP341 -> convertitore RS422/RS232 -> dispositivo

lato CP ho seguito esattamente lo schema indicato da te:

RS422
CP341        PC 422
2  T(A) - -> R(A) 4
9  T(B) + -> R(B) 11
4  R(A) - <- T(A) 2
11 R(B) + <- T(B) 9
8  GND  <->  GND  8

mentre lato dispositivo ho seguito il classico collegamento DCE (convertitore) / DTE (dispositivo).

Le lunghezze dei cavi sono nell'ordine dei 20-30 metri lato RS422 e appena 20 cm lato RS232.

I dati viaggiano tranquillamente in entrambi i sensi, solo che non ho i bit di done del SEND e nessuna segnalazione di errore nella word di STATUS nel caso in cui la trasmissione non vada a buon fine.

ho fatto vari tentativi, ma nulla!

grazie

ciao.

Modificato: da Gabriele Corrieri
Link al commento
Condividi su altri siti

se stacco il connettore che collega la CP al convertitore sulla CP si accende il led di fault, ma nessuna segnalazione mi è data nel programma utente. Se invece stacco il connettore lato partner (fra convertitore e partner finale) non succede nulla... è come se non l'avessi staccato.
Le lunghezze dei cavi sono nell'ordine dei 20-30 metri lato RS422 e appena 20 cm lato RS232.

Il fatto che il led SF non si accenda quando stacchi il connettore lato partner, potrebbe essere che il convertitore non li lo consente... e' una ipotesi..... ma il fatto che gli eventi non ti vengono segnalati in STATUS e' senzaltro innammissibile.

Sul post precedente ti avevo indicato la procedura di leggere informazione direttamente nel buffer di diagnostica del CP. Dovresti trovare la lista dei recenti eventi codificata in esadecimale, per forza....provaci.

I dati viaggiano tranquillamente in entrambi i sensi

Questo e gia' qualcosa di buono ma non e' finita li'. Ti devi programmare una "validation procedure" in modo di esserci sicuri di non avere bugs imprevisti. Non so creati una API sul PC che ogni un diterminato clock, scrive e legge in CP.... la lasci girare in loop....

Secondo me, impostarei dei telegrammi con lunghezza fissa ( 250 bytes) lasciando gli ultimi bytes per fare il controllo della ridondanza dei telegrammi.

Ciao.

Modificato: da Savino
Link al commento
Condividi su altri siti

  • 2 years later...

Nel mio impianto per la camera da letto purtroppo avendo fatto fare al corrugato delle brutte curve, non sono riuscito a fare passare i fili da 2,5 ed ho quindi cablato sia la luce della camera (classica deviata da 3 punti) che le prese (tutte da 10A) a fianco della testata letto e quella dove andrà attaccata la TV con cordina da 1,5.

Il montante che parte dal centralino è invece da 2,5 ed è lungo circa 6 Mt. e lo protegge un MT da 10A

Pensate possa andare bene ?

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