Vai al contenuto
PLC Forum


Consigli per utilizzo scheda CP341


giagino

Messaggi consigliati

ciao a tutti,

ho gentilmente bisogno consigli per capire da dove iniziare!

In ditta hanno acquistato dispositivi con cui dovrò dialogare in seriale dal mio plc serie 300. Dovrò innanzitutto utilizzare una scheda CP341 ma il problema è che per me è tutto nuovo e non ho la più pallida idea da dove iniziare! Vorrei capire quali blocchi utilizzare e la descrizione dei comandi. Mi bastano delle indicazioni su quali manuali o link utilizare per cominciare a farsi un'idea. Ho provato a cercare nel forum ma non ho trovato nulla o probabilmente non ho cercato in maniera corretta.

Grazie mille,

Gianluca

Link al commento
Condividi su altri siti


Prima di tutto dire "dialogare in seriale" è un pò poco...che tipo di protocollo usano i dispositivi con cui devi dialogare? Modbus RTU? MOdbus ASCII? protocollo proprietario? (qui potrebbero essere veri problemi) altri protocolli?

Modificato: da Lucky67
Link al commento
Condividi su altri siti

scusate per il ritardo nella risposta. Allora il dispositivo con cui andrò a comunicare (speriamo) è della mitsubishi e comunica in ASCII. La scheda utiilizzata è una CP341-1AH01-0AE0 della siemens che ho già qui con me. Correggetemi se dico eresie: mi sono stati dati i parametri per la comunicazione (2400 N 8 2 NONE) ed ho qui con me le specifiche dei comandi che andremo a scambiarci. Ho provato ad inserire la scheda suddetta nell'HW del mio progetto ed immaginavo che avessi dovuto inserire i parametri per la comunicazione. Il manuale siemens dice:

Parametrizzare il CP 341

Aprire nel SIMATIC-Manager il proprio progetto.

Richiamare nel progetto la tabella di configurazione HW Config.

Scegliere dal catalogo hardware il CP 341 con l’MLFB giusto e trascinarlo nel posto connettore previsto.

Aprire con un doppio clic sul CP 341 la maschera “Proprietà CP 341”.

Prendere nota in “Indirizzo” dell’indirizzo del modulo (nell’esempio 256 -> 100 Hex). Questo valore

sarà necessario per l’implementazione nel proprio programma utente.

Cliccare sul pulsante Parametri e scegliere il protocollo “ASCII”. Fare un doppio clic sula Busta.

Confermare le maschere di parametrizzazione tramite un clic su OK con l’impostazione di default:

9600 Bit/s, 8 bit di dati, 1 bit di stop, parità pari.

Salvare la parametrizzazione con File -> Salva e abbandonare la maschera di parametrizzazione con

File -> Esci. Cliccare nella maschera “Proprietà CP 341” su OK.

Salvare la configurazione creata con Stazione -> Salva e compila nel proprio progetto.

Problema: l'unico tastino parametri è in grigietto e non è possibile fare nulla. Immagino poi che ci siano degli SFC o altro dedicati e da utilizzare per la comunicazione dei dati.

.! Non voglio la soluzione ma delle dritte. :wacko:

Grazie in anticipo per qualsiasi suggerimento.

Gianluca

Link al commento
Condividi su altri siti

Insieme alla scheda dovresti aver ricevuto pure un DVD / CD con documentazione / software da installare nello step 7 forse.

Di solito se il tasto parametri è in grigetto manca la parte di software di parametrizzazione.

Forse lo trovi anche qui:

http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&lang=en&objid=27013524&caller=view

pigroplc

Link al commento
Condividi su altri siti

ok, la scheda la avevo già in casa, comunque mi è sembrato di vedere in giro un cd con scritto cp340/cp341 lasciato dal mio predecessore. Ora vado giù a controllare e a recuperare il cd/dvd e poi si vede.

Per ora thanks a lot!

Link al commento
Condividi su altri siti

ok, cd recuperato ed installato. Il tasto parametri ora è abilitato ed ho potuto parametrizzare la scheda. Ora monto una cpu e la cp341 così da fare poi prove ed inizio a dare un occhio al manuale che era sul cd. Ho spulciato qualcosa velocemente visto che stò portando altri lavori più urgenti. Ho visto qua e là che si parla di FB7 e FB8 oltre a SFC58 59 e altro. Ho visto che sono stati installati anche degli esempi "zXX21_01_PtP_Com_CP34x". Andrò poi a dargli un occhio.

Per ora Vi ringrazio per l'aiuto. Portate pazienza per i miei lunghi tempi tra prove e domande che Vi farò ma purtroppo qui in ditta da noi si lavora un giorno si ed un giorno no!

Saluti a tutti.

Gianluca

Link al commento
Condividi su altri siti

  • 3 months later...

Buongionro a tutti,

sono tornato a riprendere questo lavoro che avevo lasciato perdere da tempo per altre esigenze.

Tornando a noi, utilizzo per le prove una cpu 314-1AG14-0AB0 ed una CP341 RS232C 341-1AH02-0AE0,

ho installato il pacchetto di configurazione V5.1 SP12,

assemblato alimentatore, cpu e cp341 su posto connettore 4

dopo aver dato tensione il led SF della CP341 resta accso fisso

Passo alla parametrizzazione della scheda:

doppio click sulla scheda -> parametri ->

seleziono protocollo ASCII

doppio click sulla busta (protocollo)

imposto i parametri di comunicazione di default (sto' seguendo il manuale "getting started")

premo OK

poi file->salva

file->esci

premo OK

salvo e compilo

metto la cpu in STOP

carica nell'unità

infine metto la cpu in RUN ma il led SF del CP resta acceso fisso! (il manuale dice che si deve spegnere se il trasferimento è riuscito)

Provo a togliere tensione e riaccendo, la cpu si avvia in RUN mentre iCP341 accende i led SF, TXD, RXD per qualche istante, poi fanno tutti due lampeggi ed infine resta accesso fisso solo SF

Cosa ho fatto o non fatto? Sono solo all'inizio e sono già in crisi!

Ho riprovato diverse volte a ricontrollare manuale, parametrizzazione e ricaricare ma nulla da fare

.! :worthy:

Link al commento
Condividi su altri siti

a pagina 187 del manuale 09/2008 A5E02 191075-01 leggo che il led SF può risultare acceso fisso per BREAK comunicazione interrotta conil partner):

allo stato attuale non ho ancora collegato nessun partner. Potrebbe essere questo il problema?

Io ho inteso dal manuale "getting started" 09/2008 A5E02291902-01 a pagina 6 che dopo aver parametrizzato il CP il led SF dovrebbe spegnersi!

Così è riportato:

Trasferire la configurazione con la CPU in stato di funzionamento STOP mediante Sistema di destinazione > Carica nell'unità. I dati vengono ora trasferiti direttamente alla CPU e nel CP341. Se il trasferimento è riuscito, il LED SF si spegne.

Intendo male io con il fatto che il partner non serve per parametrizzare la scheda?

.!

:wallbash:

Link al commento
Condividi su altri siti

oggi ho configurato un'altra scheda CP341 (ho a disposizione una vipa 341-1AH01) che diciamo farà da partner.

Collegando la prima alla seconda scheda (dopo avere parametrizzato anche la seconda) il led SF della cp341 siemens si è spento, idem quello della cp341 vipa :thumb_yello: .

Deduzione: credo di avere interpretato male il "getting started" non mettendo subito un partner!

Ora andiamo avanti e vediamo cosa riesco a combinare!

Vi romperò ancora le scatole...sperando nel vostro aiuto..... :huh:

saluti

Link al commento
Condividi su altri siti

Scusa giagino,

devo collegare una CP341 con un PC, ho trovato questa piedinatura per il cavo:

lato CP lato PC

2-------------3

3-------------2

7-------------8

8-------------7

6-------------4

4-------------6

5-------------5

tu che piedinatura hai usato?

Grazie

Link al commento
Condividi su altri siti

non sono quello giusto a cui fare domande in quanto stò cercando di imparare/capire come funziona il tutto.

Comunque anche a me risulta così come hai segnato ed utilizzando questo cavo le 2 CP341 sembrano comunicare in quanto SF si è spento su entrambe!

i connettori sono naturalmente sub D 9 poli

Modificato: da giagino
Link al commento
Condividi su altri siti

per spedire un "telegramma" richiamo FB8, nelle parti da compilare cosa si intende per....?

REQ fronte salita per avvio ordine trasmissione

R reset ordine trasmissione

LADDR indirizzo della mia CP341 nel rack

DB_NO numero del blocco dati da trasmettere

DBB_NO numero del byte della mia stringa che trasmetto

LEN lunghezza dati da trasmettere, cioè trasmetto dalla DBB_NO per il numero di byte indicato nel LEN

è corretta la mia interpretazione? cioè punto e trasmetto dalla DB_NO.DBB_NO per il numero di byte indicato in LEN?

Esempio:

DB_NO = 20

DBB_NO = 34

LEN = 10

significa che trasmetto dalla DB20.DBB34 per 10 bytes?

Interpreto giusto o non capisco una mazza?

:wallbash:

Link al commento
Condividi su altri siti

Si giagino, tutto corretto, questa mattina ho impostato sia FB7 in ricezione che FB8 in

trasmissione e mi funziona il tutto.

LDDR lo rilevi dalla configurazione Hardware, è l'indirizzo della scheda. nel mio caso 256.

Devi poi parametrizzare la CP in modo corretto.

Per quanto riguarda il cavo di collegamento ho fatto in questo modo:

lato PLC lato PC

2-------------3

3-------------2

5-------------5

resto in ascolto se hai problemi che posso risolverti, ben volentieri

Link al commento
Condividi su altri siti

ho configurato la DBxx dove sono scitte tutte le mie stringhe:

Indirizzo-------Nome----------Tipo------------------Valore iniziale------------Commento

+0.0-----------INI3-------------STRING[16]---------'INI310&+CR+LF'--------plc->controller:INI3

+18.0---------FBON----------STRING[16]---------'FBON+CR+LF'----------plc->controller:FBON

+36.0---------FBOFF--------STRING[16]---------'FBOFF+CR+LF'--------plc->controller:FBOFF

e via dicendo. Poi immagino che prendo la DBxx.DBW0 o altro e la invio: corretto?

Domanda:

quando il dispositivo dall'altra parte mi risponde:

OK+CR+LF

lo devo appoggiare in un'altra DB e come lo interpreto nel mio codice?

di AWL capisco poco, normalmente scrivo in KOP

aiuto! :worthy: ho una gran confusione in testa

Saluti

Link al commento
Condividi su altri siti

Fulvio Persano

Ciao.

Inviato Oggi, 13:04

come diceva una famosa pubblicità....ma qui non c'è nessuno?

Come recitano le FAQ di PLC Forum:

Su PLC Forum risponde chi e quando vuole. Qui nessuno e' pagato per rispondere a qualsiasi domanda e non devi lamentarti se nessuno ti risponde. I motivi del perche' nessuno ha risposto, possono essere diversi.

Per esempio:

- nessuno conosce l'argomento

- chi conosce l'argomento non ha letto la tua domanda

- chi conosce l'argomento non ha avuto tempo di rispondere (ti ricordo che nessuno posta in PLC Forum per lavoro...)

- chi conosce l'argomento non ha voglia di scrivere (ebbene si, ogni tanto capitano giornate storte a chiunque...)

- ...[mille altri motivi]

In ogni caso, ricordati che PLC Forum non e' un callcenter, e non si deve pretendere una risposta, tantomeno immediata!

Mi sembra che l'ultima risposta risale a circa 24h fa...... :smile:

Link al commento
Condividi su altri siti

Sono arrivato.....

hai provato a creare un DB, esempio:

da DB50.DBB0 a DB50.DBB10 e trasmettere per un solo ciclo i dati verso il tuo partner ?

I dati li aggiorni con valori in esadecimale e vedi se vengono ricevuti.

La mia trasmissione avviene verso un PC dove abbiamo definito un protocollo a lunghezza fissa.

Direi di partire con cose semplici per capire.

Nella configurazione della CP definisci una lunghezza fissa di 10 Byte in ASCI.

Link al commento
Condividi su altri siti

non ho mai pensato nè che plcforum fosse un callcenter e nemmeno che tutto mi sia dovuto o che la gente lavori per me o aspetti i miei comodi!

Non intendevo né intendo offendere nessuno. So' bene che la gente normalmente lavora o almeno la gente normale!

Non intendo fare polemica né intendevo farne prima.

Argomento chiuso.

Saluti

Link al commento
Condividi su altri siti

Come compilo FB8 per lanciare una trasmissione

//-------------------------------------------

// Lancio blocco standard di trasmissione

//-------------------------------------------

CALL FB 8 , DB8

SF :='S'

REQ :=DB15.DBX4.0 // Abilitazione per la scrittura dati

R : =DB15.DBX4.1 // Interruzione dell'ordine

LADDR : =256 // Indirizzo scheda

DB_NO : =15

DBB_NO :=10

LEN : =18

R_CPU_NO:=

R_TYP :=

R_NO :=

R_OFFSET:=

R_CF_BYT:=

R_CF_BIT:=

DONE :=DB15.DBX4.2 // Trasmissione ultimata positivamente

ERROR :=DB15.DBX4.3 // Trasmissione ultimata positivamente

STATUS :=DB15.DBW2 // Informazione sull'errore

//-------------------------------------------

// Resetta flag di abilitazione della trasmissione

//-------------------------------------------

O DB15.DBX 4.2 // Trasmissione ultimata positivamente

O DB15.DBX 4.3 // Trasmissione ultimata con errore

R DB15.DBX 4.0 // Abilitazione per la scrittura dati

Link al commento
Condividi su altri siti

non ci siamo

ho caricato il programma di prova "CP 341 Protocol 3964" presente negli esempi di siemens.

vedo lampeggiare TXD sulla mia scheda

ho visto che i caratteri CR e LF corrispondono a $r e $l

inserisco la mia stringa nella DB42.DBB12 'INI311$00$R$L' ma niente da fare, il motore non si muove e quindi non risponde. Ed oltre a questo non capisco dove dovrei andare a leggere la risposta.

Premetto che il motore è collegato ad un controller con cui io mi interfaccio (o almeno dovrei) ed entrambi funzionano in quanto il mio collega di un altro reparto gli ha tranquillamente mandato e a ricevuto le stringhe tramite un pc.

Forse mi perdo in un bicchiere d'acqua.

Link al commento
Condividi su altri siti

Prova a collegare il PLC ad un PC che resta in ascolto con Hyperterminal. Dovresti riuscire a leggere quello che mandi dal PLC. Se il tuo collega manda qualcosa dal PC e l'azionamento funziona vuol dire che le 2 trasmissioni non sono uguali. Bisogna capire dove stanno le differenze, e capire cosa effettivamente spedisci te.

pigroplc

Link al commento
Condividi su altri siti

fatto con hyperterminal:

continuo a ricevere dal plc la stringa,

ӯ*rdDExample of a Point-to-Point Communication with CP341 for SIMATIC S7!

posso anche trasmettergli qualcosa?

la stringa che mi arriva è quella di prova nella DB42.DBB12

ho provato anche a modificare il testo mettendo la mia stringa INIT311&$R$L e ricaricare la DB43

se poi vado nella tabella delle variabili CP 341 Protocol 3964 e mi connetto non vedo sui singoli byte i caratteri da me impostati.

Puo' dipendere il tutto da un errato settaggio della COM? Io pensavo di no visto che comunque ricevo qualcosa e TXD lampeggia in continuazione. Io non sono molto pratico di queste cose.

Saluti

Link al commento
Condividi su altri siti

l'osservazione di pigroplc mi sembra più che corretta, tu su hyperterminal devi vedere la stringa che trasmetti, se così fosse la tua trasmissione viene gestita correttamente.

A questo punto il problema potrebbe essere dal lato motore.

Rispetti il protocollo di comunicazione ? ( il tuo controller ne deve avere uno dedicato )

Hai provato a modificare la velocità di trasmissione ?

Dal lato controller tu devi conoscere i termini di trasmissione ( bit di stop, parità ecc............)

All'interno del tuo DB42 tu puoi scrivere quello che vuoi, modificando vedi quello che scrivi su

Hyperterminal

Link al commento
Condividi su altri siti

diciamo che ora sulla CP341 lampeggia anche RXD, questo dopo aver corretto i parametri di comunicazione.

Restano comunque molti dubbi:

la stringa scritta nella DB42.DBB12 'INI311&00$r%l' e caricata nella cpu, se la modifico dopo e ricarico la DB resta sempre la stessa stringa in valore attuale. Idem, se apro tabella variabili e scrivo stringa diversa e la mando, quando vado nella db42 e mi metto online, in valore attuale vedo ancora la prima stringa caricata. Dove mi perdo?

Resta il fatto poi che dò dei comadi al motore e lui non si muove, potrei cambiare il motore ma resta il dubbio su cosa trasmetto (se metto DB42 online non vedo la stringa mandata dalla tabella variabili ma quella caricata all'inizio!)

Continuiamo a picchiarela testa ancora un pò e vediamo dove arrivo.

Modificato: da giagino
Link al commento
Condividi su altri siti

ok, ci siamo, ora invio le mie stringhe e ricevo le risposte che mi indicano i data-sheet:

devo ora capire come interpretare le stringhe. Io ricevo una stringa fatta di lettere e numeri e dovrò confrontarla con dei dati conosciuti (quelli indicati dai data-sheet) e da lì decidere la bontà o meno del pezzo controllato.

Esempio:

se ricevo NG$r$l il pezzo non è buono perchè il controllo è fallito

se ricevo MS2000=0140 la misura è stata effettuata ed ora devo controllare se rientra nelle mie tolleranze e cioè se il mio valore (gli ultimi 4 caratteri) risulta minore di 0180 allora il pezzo è buono, se superiore o uguale a 0180 allora è scarto.

Cosa fare? Devo convertire tutti i caratteri ascii in numeri interi e confrontarli per vedere se la risposta del controller è buona e poi prendo gli ultimi 4 caratteri e li confronto con le mie tolleranze?

è possibile confrontare direttamente caratteri ascii?

Grazie mille.

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