Forum: PC-Programmierung FIFO-Speicher Überlauf


von Fabian (Gast)


Lesenswert?

Hallo zusammen,
Bei einer Applikation werden Messdaten in einem FIFO-Speicher geschleift 
und dann alle 5ms an einer Steuerung geschickt.
Wie kann man sicher sein bzw feststellen dass der FIFO-Speicher nie voll 
wird?
Ich meine kann man einen Fehler bauen oder simulieren so dass der 
FIFO-Speicher voll wird? um zu prüfen ob das Programm eine entsprechende 
Fehlermeldung schickt?

Gruß F

: Verschoben durch Moderator
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Fabian schrieb:
> Wie kann man sicher sein bzw feststellen dass der FIFO-Speicher nie voll
> wird?

Indem man die Daten garantiert schneller abholt/verarbeitet als die
Quelle sie füttern kann.

von Thomas (Gast)


Lesenswert?

Wenn weniger Daten am Ziel ankommen als am Sensor generiert wurden, dann 
fehlt was ;)

Also ich weiß nicht wie der FIFO programmiert ist, aber bei meiner 
Implementation geht bei einem Überlauf der gesamte Bufferinhalt auf 
einmal verloren und er macht dann weiter als wäre nichts...

von jasch (Gast)


Lesenswert?

Fabian schrieb:
> Ich meine kann man einen Fehler bauen oder simulieren so dass der
> FIFO-Speicher voll wird? um zu prüfen ob das Programm eine entsprechende
> Fehlermeldung schickt?

Uuhhhh, wie jetzt?

Einfach keine Daten aus dem FIFO auslesen, dann wird er doch voll- und 
ueberlaufen?

Oder meintest Du was total anderes als Du schrobst?

von Fabian (Gast)


Lesenswert?

Guten Morgen

es geht um ein Prüfprogramm bei dem eine MDF(enthält Messdaten) geöffnet 
wird und bearbeitet.
Die Messdaten werden zuerst in einem FIFO geschleift und dann zur 
Steuerung geschickt. Da es auch eine Dauerprüfung gedacht muss vorher 
sichergestelt werden dass der FIFO nie überlaufen wird bzw wenn er voll 
ist dann muss das Prüfprogramm einen Fehler zurückmelden.
Meine Frage ist wie man das simulieren kann bzw extra einen Fehler bauen 
um dies zu überprüfen.
AN programm selbst kann ich nichts ändern

Gruß F

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Fabian schrieb:
> Die Messdaten werden zuerst in einem FIFO geschleift und dann zur
> Steuerung geschickt. Da es auch eine Dauerprüfung gedacht muss vorher
> sichergestelt werden dass der FIFO nie überlaufen wird bzw wenn er voll
> ist dann muss das Prüfprogramm einen Fehler zurückmelden.

Dann musst Du den Punkt "und dann zur Steuerung geschickt" halt drosseln 
bzw. anhalten.

von Fabian (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Dann musst Du den Punkt "und dann zur Steuerung geschickt" halt drosseln
> bzw. anhalten.

du meinst die Verbindung trennen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wie auch immer das bei Dir implementiert sein mag kannst nur Du wissen. 
Wenn der Teil, der dafür zuständig ist, mit der Steuerung zu 
kommunizieren, mitbekommt, daß die Steuerung keine Daten mehr 
entgegennimmt, dann ließe sich damit vermutlich das Verhalten erzielen.

von Fabian (Gast)


Lesenswert?

gibt's anderen Weg oder idee wie man einen FIFO Speicher auf Überlauf 
testen kann?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein. Gibt es nicht. Ein Fifo läuft nur dann über, wenn er schneller 
beschrieben wird, als er ausgelesen wird.

Wenn Du die Auslesegeschwindigkeit nicht ändern kannst, könntest Du 
versuchen, an der Füllgeschwindigkeit zu arbeiten, aber davon abgesehen 
gibt es keine anderen Möglichkeiten.

von Fabian (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> an der Füllgeschwindigkeit zu arbeiten, aber davon abgesehen
> gibt es keine anderen Möglichkeiten.

was meinst du denn damit

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was soll ich damit meinen? Ein Fifo wird von einer Seite befüllt und von 
einer anderen entleert.

Das schreibst Du ja auch selber:

> Bei einer Applikation werden Messdaten in einem FIFO-Speicher
> geschleift und dann alle 5ms an einer Steuerung geschickt.

Du musst also entweder seltener als alle 5ms Datensätze an die Steuerung 
weiterreichen oder mit mehr als 200 Datensätzen pro Sekunde das Fifo 
befüllen.

von Karl H. (kbuchegg)


Lesenswert?

Fabian schrieb:
> Rufus Τ. Firefly schrieb:
>> an der Füllgeschwindigkeit zu arbeiten, aber davon abgesehen
>> gibt es keine anderen Möglichkeiten.
>
> was meinst du denn damit

Wenn du testen willst, ob der Überlauf deiner Badewanne funktioniert 
gibt es nur 2 Möglichkeiten:

Entweder du vergrößerst den Wasserzulauf auf Feuerwehrschlauch-Niveau 
oder du stopfst den Abfluss zu.

Wenn du an die Badewanne selber rankommst, kannst du zusätzlich zum 
normalen Wasserzulauf auch noch eimerweise selber Wasser zuschütten. 
Aber laut deiner Aussage hast du ja diese Option nicht.

Also bleiben dir nur diese beiden Möglichkeiten.

von Fabian (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Entweder du vergrößerst den Wasserzulauf auf Feuerwehrschlauch-Niveau
> oder du stopfst den Abfluss zu.

ich kann natürlich die Verbindung zwischen Steuergerät und 
Mikrocontroller trennen und somit werden keine Daten zur Steuerung 
geschickt. Aber ich gehe davon aus dass das Programm einen 
Kommunikation-Fehler melden wird das heisst in diesem Fall kann den 
FIFO-speicher auf Überlauf nicht prüfen.

Die 2te Variante war dass ich die Datenmenge die der Speicher holen kann 
vergrößen muss. Das heisst wenn der Speicher 1mm Messwerte einliest dann 
soll ich die menge auf 200 erhöhen
Darauf habe ich leider keinen Einfluß ich weiss nur dass die MDF datei 
schrittweise eingelesen wird und zwar alle 10ms werden zB. 100 Messwerte 
eingelesen.
Die Datei liegt in einem vordefienierten Verzeichniss und wird durch 
Knopfdurck "Messung_Starten" geöffnet

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Unter diesen Rahmenbedingungen, wenn Du also weder das eine noch das 
andere beeinflussen kannst, kannst Du Deinen gewünschten 
Fifo-Überlauftest nicht durchführen.

Wasch mich, aber mach mich nicht nass.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Fabian schrieb:
> Karl Heinz Buchegger schrieb:
>> Entweder du vergrößerst den Wasserzulauf auf Feuerwehrschlauch-Niveau
>> oder du stopfst den Abfluss zu.
>
> ich kann natürlich die Verbindung zwischen Steuergerät und
> Mikrocontroller trennen und somit werden keine Daten zur Steuerung
> geschickt.

Was zu beweisen wäre.
Wenn dein µC, so wie meistens, die Daten einfach rausbläst und sich 
nicht darum kümmert ob ihm wer zuhört, dann kannst du die Verbindung 
trennen und der FIFO läuft deswegen immer noch nicht über.

Ein nicht angestecktes Kabel bedeutet nicht automatisch, dass deswegen 
keine Daten an diesem Anschluss rausgesendet werden.

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.