ms4369 Inserito: 11 febbraio 2014 Segnala Share Inserito: 11 febbraio 2014 ho installato su un plc cs1h-cpu63h la scheda seriale scu21, la utilizzo per ricevere in modalità protocollo libero, una serie di caratteri ascii. la scheda ha un buffer di 255 byte, mentre dalla seriale ne arrivano 500 byte, la scheda segnala l'overflow e non mi consente di leggere il buffer con l'istruzione RXDU(255). SE QUALCUNO HA UN SUGGERIMENTO grazie Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 11 febbraio 2014 Segnala Share Inserita: 11 febbraio 2014 Dunque, prima di tutto assicurati che la versione della SCU sia 1.2 o successiva, e che la CPU CS1 sia versione 3.0 o successiva. Se così non è, non puoi usare il no protocol. Se quanto sopra è verificato, detto n l'indirizzo base CIO del modulo SCU, e assumendo che usi la porta 1, verifica che: n+6 bit 1 = 0 (system setup normal) n+6 bit 0 = 1 (port operating) Effettua la RXDU appena il bit 6 di n+9 (Reception Completed) va a 1 (numero specificato di bytes ricevuti) e non aspettare il buffer overflow (bit 7 di n+9) Mentre arrivano i bytes, dovresti vedere incrementare la word n+10 (numero di bytes in ricezione) Verifica che il bit di A202 relativo alla porta sia a 1 per poter eseguire la RXDU. Se ti si è attivato il bit 4 di n+8, hai superato i 260 bytes nel buffer prima di eseguire la RXDU, e quindi ti si è bloccato il buffer. Devi riavviare la porta/scheda. Altro non mi viene Link al commento Condividi su altri siti More sharing options...
ms4369 Inserita: 12 febbraio 2014 Autore Segnala Share Inserita: 12 febbraio 2014 plc: cs1h-cpu63h versione 4.0, scheda cs1w-scu21 versione 1.3, scansione plc da 3,6 mS a 5,0 mS. impostazioni seriali porta a: 19200,n,8,1 Port1: Port settings - User settings Port1: Serial communications mode - No-Protocol Port1: Data length - 8 bits Port1: Stop bits - 1 bit Port1: Parity - None Port1: Baud rate - 19200bps Port1: Send delay - Default (0 ms) Port1: Send delay (user-specified) - 0 ms Port1: CTS control - No Port1: 1:N/1:1 protocol setting - 1:1 protocol Port1: Host Link compatible device mode - Default(Mode A) Port1: Host Link unit number - 0 Port1: No-Protocol Start code - 0 Port1: No-Protocol End code - A Port1: No-Protocol Start code inclusion setting - None Port1: No-Protocol End code inclusion setting - None Port1: No-Protocol Number of receive data bytes - 100 Byte Port1: 1:N NT Links maximum unit number - 0 Port1: Serial Gateway Response timeout monitoring time - 0 ms Port1: Serial Gateway send start timeout monitoring time - 0 ms Port1: Protocol macro Transmission method - Half-duplex Port1: Clearing/holding the contents of the reception buffer in fullduplex mode - Clear Port1: Link word specification data exchange timing - On-request I/O refreshing Port1: Maximum number of bytes in protocol macro send/receive data - 0 Byte Port1: Coils Area - Default(CIO) Port1: Input Registers Area - Default(CIO) Port1: Holding Registers Area - Default(DM) Port1: MODBUS-RTU Slave Address - 0 non funziona, l'istruzione RXDU probabilmente non legge in tempo. Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 12 febbraio 2014 Segnala Share Inserita: 12 febbraio 2014 Uhm... Ti ci vorrebbe una SCU22, che gestisce alte velocità ad interrupt. Da un rapido conto, a 19200baud, hai un byte (8bit+start+stop = 10bit) ogni 520us circa. Con un tempo di scansione di 4.2ms (media tra 3.6 e 5ms), riceveresti altri 8 bytes circa prima della nuova scansione in cui ti accorgi che il flag di ricezione completata a 255 bytes si è alzato. Prova a fare così, non so se funziona, ma hai visto mai... Nel software, usa il registro n+10 per vedere il numero di bytes arrivati. Quando il numero è 200 o poco più, esegui la RXDU una prima volta per leggere i primi 200 bytes, poi quando il registro ritornerà a 200, leggi gli altri 200 e infine a 100 gli ultimi 100. Questo ovviamente se nel momento in cui viene eseguita la RXDU viene svuotato in parte il buffer di ricezione, e questo proprio non rammento se succede. Non ho proprio modo di provare, mi spiace, nè mi è mai capitato di dover fare una cosa simile. Altrimenti, bisognerebbe che tu "spezzassi" il pacchetto da inviare in due frames da 250 bytes ciascuno con una pausa, che so, di 5-10ms tra i due... Link al commento Condividi su altri siti More sharing options...
ms4369 Inserita: 12 febbraio 2014 Autore Segnala Share Inserita: 12 febbraio 2014 domani provo, pero ho poche speranze..... Link al commento Condividi su altri siti More sharing options...
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