Forum: PC Hard- und Software RS232 Timeout


von sim (Gast)


Lesenswert?

Hallo zusammen.

Ich habe folgendes Problem. Ich sende Daten vom PC an ein FPGA welcher 
darauf antwortet.
Beim betrachten der Signale ist aufgefallen, dass der PC nach jedem 
Frame ca. 100ms auf Antwort wartet, obwohl die Antwortzeit < 1ms ist. 
Also versuchten wir in einem Python Skript den timeout der Seriellen 
Schnittstelle auf 10ms zu setzen. Dann kommt der PC allerdings nicht 
mehr ganz mit.

Kann es sein, dass das Empfangsreister des PC nur alle 100ms abgefragt 
wird? Bracuht er also diese Pause, oder sollte er durchaus schneller 
können?

Danke
Sim

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Wie wäre es mit einem (HW-)Handshake? Nutzt ihr eine "echte" RS232 oder 
einen USB-Wandler.

von Sim (Gast)


Lesenswert?

eine echte RS232.

Gruß Sim

von Mario K. (Gast)


Lesenswert?

na was habt ihr denn nun rsr/cts oder xon/xoff
(Datenflusssteuerung )

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wie groß sind die Frames?

Ist die "echte" RS232-Schnittstelle eine der Onboard-Schnittstellen des 
PCs oder ist sie mit einer PCI/PCIe-Karte nachgerüstet?

Wie ist der Triggerlevel des Empfangs-FIFOs der Schnittstelle 
konfiguriert?

von Sim (Gast)


Lesenswert?

Es handelt sich um die onboard Schnittstelle. Es gibt keine 
Datenflusssteuerung in diesem Sinn. Es wird über einen RS232/RS485 
Pegelwandler auf eine Buspysik gesendet. Die Busarbitrierung wird anhand 
der Inhalte des Frames gemacht.

Aber die Frage war ja eigentlich auch nur, ob man beim PC eine min. 
Timeout Zeit einhalten muss.

Gruß Sim

von Sim (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Wie groß sind die Frames?

Unterschiedlich. In der Testphase ca. 30Byte. Später vielleicht 500Byte.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gut, bei der Framegröße wird das Hardwareempfangsfifo nicht mehr störend 
zum Tragen kommen.

Das von Dir beobachtete Timeoutverhalten wird daher am Programm auf dem 
PC liegen. Was läuft darauf ein Betriebssystem und was für ein Programm 
ist das?

von sim (Gast)


Lesenswert?

Ein selbst geschriebenses Skript welches Daten produziert, es läuft auf 
einem Win2000 Server System.

Gruß Sim

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Na, dann ist es ja nicht vollkommen auszuschließen, daß das Problem im 
Skript liegt.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

das Problem ist vermutlich, dass der Empfang erst am Ende des Timeouts 
stattfindet (vom Standpunkt des Skripts aus). Die serielle Software muss 
ja wissen, wann ein Frame zu Ende ist, und das ist u.U. eben nach Ablauf 
des Timeouts. Wenn die Frames durch ein bestimmtes Zeichen wie CR oder 
EOT beendet würden, bestünde dieses Problem nicht, dann würde der Frame 
unmittelbar nach Empfang dieses Zeichens übergeben.

Timeout als Frame Delimiter ist nie eine gute Idee.

Gruss Reinhard

von sim (Gast)


Lesenswert?

Leider brauche ich einen Timeout, da es sich um eine Buskommunikation 
handelt und ich mit dem FPGA einen einzelnen Host darstelle. D. h. es 
kommt nicht auf jedes Frame eine Antwort, sondern nur wenn dieses für 
das FPGA relevant ist.

Gruß Sim

von Reinhard Kern (Gast)


Lesenswert?

sim schrieb:
> Leider brauche ich einen Timeout, da es sich um eine Buskommunikation
> handelt und ich mit dem FPGA einen einzelnen Host darstelle. D. h. es
> kommt nicht auf jedes Frame eine Antwort, sondern nur wenn dieses für
> das FPGA relevant ist.
>
> Gruß Sim

Klar, das brauchst du immer, nur hat das mit dem von mir angesprochenen 
Problem garnichts zu tun, da ging es um die (möglichst schnelle) 
Frame-Ende-Erkennung. Aber wenn du dir den zeitlichen Ablauf nicht 
vorstellen kannst, vergiss es einfach.

Gruss Reinhard

von Sim (Gast)


Lesenswert?

Reinhard Kern schrieb:
> Aber wenn du dir den zeitlichen Ablauf nicht
> vorstellen kannst, vergiss es einfach.

Danke! Sehr freundlich!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.