Vai al contenuto
PLC Forum


Modulo Cs1W-Scu21


ms4369

Messaggi consigliati

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 :worthy::worthy::worthy:

grazie

Link al commento
Condividi su altri siti


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

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

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

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