Gargiulo Inserito: 23 maggio 2007 Segnala Inserito: 23 maggio 2007 Buongiorno a tutti,scusate il disturbo ma ho una domanda da sottoporVi ed è la seguente: è possibile effettuare una xmt con la rcv attivata?Perchè da un plc s7 devo interrogare un driver che ha un protocollo particolare. Il driver infatti ritrasmette tutti i caratteri ricevuticontemporaneamente alla ricezione e poi terminata la ricezione del comando invia la risposta.Ora io ho programmato la modalità di ricezione senza attesa sulla partenza e con un carattere di fine messaggio ma esce dalla ricezionesolo se la attivo nella routine di interrupt sulla trasmissione terminata.Spero di essere stato chiaro.Ho cercato nel forum ma non mio sembra di avere trovato indicazioni o .... forse non ho cercato correttamente in tal caso chiedo scusa.Grazie per gli eventuali suggerimenti.Un saluto a tutti
Livio Orsini Inserita: 23 maggio 2007 Segnala Inserita: 23 maggio 2007 Dovresti legare un interrupt sia agli eventi di Rx che a quelli di Tx. Chiaramente se stai sempre in ricezione non puoi trasmettere e viceversa.Però per dare una risposta esaustiva bisognerebbe conoscere meglio i tempi di trasmissione.
Gargiulo Inserita: 23 maggio 2007 Autore Segnala Inserita: 23 maggio 2007 Grazie per la risposta,mi sono spiegato male e cerco di farlo meglio:L'interrogazione avviene con un messaggio: <REQ1:>e la risposta è del tipo: <REQ1:ZZZZZZZZZZZ,CR,LF>Quindi io ho fatto la seguente cosa:INIT: Imposto le condizioni di recezione: Baudrate, Rizezione Immediata, Carattere di fine messaggio=CRCOMANDO: con un comando temporizzato da 1 sec faccio un XMT del richiesta <REQ1:>INT_TX: Nella routine associata all'interrupt di fine trasmissione metto la RCV Buffer, 1INT_RX: Alla fine rezione del messaggio salvo il buffer ricevuto e attendo il timeri di reinvio del comando.A questo punto ho due problemi:a) A volte non riceve se riceve il messaggio che si ottiene è <:ZZZZZZZZZZZ,CR,LF> cioè ricevo da quando sono andato in ricezione.C'è qualcosa che mi sfugge ma non riesco a trovare il bandolo della matassa.Chiedo scusa e un grazie di cuore
Livio Orsini Inserita: 23 maggio 2007 Segnala Inserita: 23 maggio 2007 Vediamo se ho capito.Ricevo un comando "CMD" ed invio una stringa tipo: "CMD:abcdefg, cr,lf" e dovrei ricevere la medesima stringa a mo di eco, però sembra che perda caratteri o non vada in ricezione.Hai verificato la lunghezza del buffer di ricezione? Svuoti il buffer di ricezione?
Gargiulo Inserita: 23 maggio 2007 Autore Segnala Inserita: 23 maggio 2007 Scusami per la poca chiearezza ma è il contrario: io (PLC) invia "CMD" e come risposta dovrei avere "CMD:aqbcdf,cr,lf".Siccome porto il PLC in ricezione dopo aver trasmesso riceve solo ":aqbcdf,cr,lf" e mi perdo il riferimento al comando che ho mandato.a) Per lo svuotamento del buffer di ricezione non basta la <RCV> o devo andare a fare qualche cosa d'altro? A volte però pur trasmettendo la richiesta mi perdo la risposta. Ho notato questo perchè utilizzo un programma che monitorizza la linea seriale.Scusami ma ti ripeto quello che ho fatto: (0) dopo aver preparato i parametri di funzionamento della ricezione (1) con un timer a 1 sec mando una <XMT Buffer, 1>,(2) Nell'evento fine <TX> faccio una <RCV RxBufferm,1>Nell'evento fine <RX> copio l'RXBuffer in un'altra stringa e riabilito il timer per la richiesta e riparto dal punto (1).Cosa mai combino per bloccarlo?PS. Io arrivo dalla programmazione di micro e software ed il plc richiede una filosofia d'approccio che al momento fatico ad apprendere.Scusami/temi per l'insistenza ma se non capisco non .... dormo tranquillo.Grazie 1k.Salutoni
Livio Orsini Inserita: 24 maggio 2007 Segnala Inserita: 24 maggio 2007 Siccome porto il PLC in ricezione dopo aver trasmesso riceve solo ...Qui sta il problema! Devi lasciare sempre abilitato l'interrupt di ricezione. Quello di trasmissione lo puoi abilitare prima dell'inizio e disabilitare dopo aver trasmesso l'ultimo carattere, anche se è una cosa inutile: Quello di ricezione deve essere sempre attivo!
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora