Newsgroup: it.comp.os.dibattiti
Titolo: Velocità di lettura da porta seriale e S.O.

ciao a tutti,
vi scrivo per un piccolo consiglio.
Ho scritto una piccola applicazione i C# che tramite il protocollo 
ModBus va a interrogare un plc, su questo è presente un contatore che si 
incrementa ogni 100msec,nonostate tutte le ottimizzazione che ho 
realizzato non riesco a interrogare il plc più velocemente di 280msec 
perdendo ovviamente dei valori nella lettura.
Per l'applicazione che devo realizzare questa velocità è più che 
sufficente ma mi chiedevo per riuscire ad effettuare una lettura minore 
di 100msec è determinate il S.O. ?
Ovviamente ho provato anche altre applicazioni ma tutte quello che ho 
visto non vanno meglio della mia ed è per quello che ho pensato al S.O.
Pareri ? O detto vaccate ?
Grazie a tutti.

 determinate il S.O. ?
1) Uhm .. fai un buffer nel plc, e salvi i dati ogni 100ms ..
    Ogni secondo dal pc esegui la lettura e ne leggi 10.
2) Aumenta la velocità di trasmissione/ricezione.

*FeDe* ha scritto:

Grazie, ma la mia curiosità era legata al fatto se il limite era dovuto 
a Windows, l'ho provato su Windows XP e Windows Vista a 64bit.
Le impostazione di velicità della seriale sono 19200baud.

LoZerbino ha scritto:

in generale un s.o. operativo ha dell'overhead per le commutazione tra 
user e kernel space. Certo è che devi leggere con una frequenza di 10 
HZ, che è bassa.
A meno che... Quanti dati devi leggere al colpo? Perché se cerchi di far 
passare troppi dati su una porta che non ha un bitrate adeguato non c'è 
verso...

 Windows, l'ho provato su Windows XP e Windows Vista a 64bit.
E' piu probabile che dipenda dal tempo che impiega il plc a rispondere alla 
tua interrogazione.
generalmente si tratta di qualche millisecondo.
Poi devi valutare quanti byte trasmetti/ricevi (conta anche i bit di 
diagnostica ecc ..)
Secondo le tue impostazioni hai 19200 bps che dovrebbe significare 19200 
bit/s.
Generalmente le porte seriali sono cmq dotate di un buffer interno, sia in 
trasmissione che in ricezione, quindi non č che perdi i caratteri che ricevi 
se usi Vista!
Prova a impostare la velocitŕ di comunicazione a 38400 e vedi se i tempi 
dimezzano, poi metti a 9600 e vedi se raddoppiano ...

 verso...
Grazie, ma per adesso mi limito a leggere 7 registri, 7 word in realtà

 
Per le velocità provo ma il plc è impostato per la comunicazione a 19200 
e non posso cambiarlo, per il buffer in realtà il protocollo modbus 
funziona a query, chiedo e aspetto la risposta quindi non credo che il 
buffer possa essere d'aiuto, invece interessante un ipotesi che non 
avevo considerato sulla velocità di risposta del plc, visto che non l'ho 
programmato io provo a chiedere a chi l'hai fatto.
Grazie molte.

 l'hai fatto.
Dubito che ti saprà rispondere ...
Bisognerebbe vedere con che priorità il plc gestisce la porta seriale, poi 
di solito i plc mettono dei ritardi alla risposta (impostabili) ..
L'unico modo che hai di valutarlo è appunto cambiando la velocità di 
trasmissione da 19200 a 9600 .. 4800 ecc .. e vedere se ci trovi una qualche 
linearità .. 

 
Molte grazie :)

> qualche linearità ..
Quel che penso è che se effettivamente il tempo raddoppia ogni volta che 
dimezzi la velocità, significa che il tempo che impiega l'OS a elaborare 
l'informazione che arriva nella porta seriale è praticamente nullo!
Facci sapere i risultati delle tue verifiche
ciao 

 
Ciao, purtroppo modificando la velocità di connessione non si ottiene 
alcun risultato, nel senso che il PLC comunica a 19200 se cambi la 
velocità di connessione dal PC ottieni solo errori di comunicazione.
Grazie.

 velocità di connessione dal PC ottieni solo errori di comunicazione.
Scusa, non ho capito .. l'hai cambiata solo nel pc ?
LA devi cambiare sia nel plc ch nel pc! A patto che tu abbia i sorgenti del 
sw plc ... 

 
Infatti è questo il problema, il programmatore del plc lo vedo mercoledi 
quindi non sono riuscito a far nulla.