DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Paketverarbeitung: Bufferüberlauf nach 2tem Paket / Grundsätzliche Arbeitsweise

Solved!
Go to solution

Hallo,

ich habe ein paar Fragen zur Paketverarbeitung (DIAdem 11.0 bzw 11.1).

 

Folgende Aufgabenstellung:

Ich möchte während einer Messung mit 2 Hz in der Einzelwertverbeitung Ereignissgetriggert einen Abschnitt eines Signalsverlaufes bilden.Dieser Abschnitt kann 1 bis ca. 300 Einzelwerte enthalten, die genaue Anzahl kennt man vorher nicht. Danach Soll das Maximum des Abschnitts ermittelt werden. Im laufe einer Messung passiert dies mehrmals und ich möchte die ermittelten Maxima summieren.

 

Meine Lösung:

Ich sammele die Einzelwerte in einem Paket mit variabler Länge mithilfe des "Packen-" und des "Abschnittsblocks" und wende dann den "Statistikblock" darauf an. Diesen Wert überführe ich dann wieder in die Einzelwertverarbeitung mittels "Vereinzeln".

 

Problem:

Bei bestimmten Taktraten kommt es zu einem Bufferüberlauf Fehler. Ändere ich den Takt kommt es oft sporadisch oder aber nach dem 2ten Paket zu diesem Fehler.

 

Woran kann das liegen?

Wie Funktioniert die Paketabarbeitung in meinem Beispiel? Leider ist die Hilfe zu diesem Thema in DIAdem recht mager....

 

Schonmal vielen Dank !!

 

Gruß

Tobias

 

0 Kudos
Message 1 of 4
(3,659 Views)
Solution
Accepted by topic author Saibot
Hallo, An sich ist in diesem Schaltplan alles richtig. Das Problem tritt auf, weil die einzelnen Funktionen nicht so gleichzeitig arbeiten, wie man sich das vorstellt. Gerade die Paketverarbeitung ist ja dafür da Daten zu sammeln um sie später als größeres Paket schneller verarbeiten zu können. Sie läuft mit einem eigenen Takt, der über das Menü eingestellt werden kann. Der Packen-Block ist allerdings gleichzeitig ein Einzelwert-Ausgang und ein Paket-Eingang. Er läuft mit dem angedrahteten Takt und reagiert sehr empfindlich, wenn er ein Paket abschicken will. Wenn das vorige Paket noch nicht vom folgenden Block angenommen wurde meldet er einen Überlauf. Da Sie als Paketgröße 1 eingestellt haben, kann das relativ schnell passieren. In Ihrem Fall lässt sich das Problem relativ leicht lösen. Der Abschnitt-Block könnte auch mit viel größeren Paketen arbeiten. Er findet die Triggerwechsel und schneidet die ankommenden Daten in entsprechend große Stücke. Ob dabei mehr oder weniger Pakete entstehen als an seinem Eingang ist egal. Sie können also die Paketgröße in den Packen-Blöcken vergrößern und die Probleme sollten dann nicht mehr auftreten. Bei mir hat schon die Größe 2 ausgereicht. Der einzige Nachteil ist dann, dass bei einem Takt von 2 Hz eine Verzögerung von einer Sekunden auftreten kann, bis eine neue Summe berechnet und angezeigt wird.
0 Kudos
Message 2 of 4
(3,657 Views)

Hallo,

vielen Dank für die Hilfe. Die Änderung in dem Packen-Block hat zur Lösung geführt.

 

Eine Frage zum Verständnis habe ich da aber noch:

 

Angenommen ich packe 10 Werte in ein Paket, dies muss ich ja bei dem Signal als auch bei dem Controlleingang des Abschhnittsblocks so machen. Wenn jetzt der Triggerzeitpunkt im Controllpaket bei Wert 5 von 10 erfolgt, werden dann die 5 Werte im Signalpaket vor dem Trigger verworfen und nur die 5 Werte nach dem Triggerzeitpunkt mit in das neue Paket im Abschnittsblock gepackt ? Andernfalls würde meine anschließende Berechnung über das erstellte Paket verfälscht. Das war auch der Grund weshalb ich die Paketgröße beim Packen-Blockk auf 1 gesetzt habe. Ich möchte nur die Werte zusammenpacken die nacch dem Trigger kommen.

 

mfG

Tobias

0 Kudos
Message 3 of 4
(3,632 Views)
Hallo, Der Abschnitt-Block arbeitet Wert für Wert und erzeugt neue Pakete indem er die Daten entsprechend dem Triggersignal abschneidet und in neu erzeugten Paketen weiterleitet. Die neue Pakete können größer oder kleiner als die ankommenden Pakete sein. Ihre Anforderung sollte also voll erfüllt sein. Wenn größere Pakete ankommen und in mehrere neue Pakete zerlegt werden, kann pro Pakettakt immer nur ein Paket weitergeleitet werden. Wenn während dessen neue Pakete erzeugt werden, bildet sich vor dem Abschnitt ein Rückstau. Datenquellen wie der Packen-Block können dann einen Überlauf melden. Datenquellen, wie der Generator, oder das Lesen aus einem Kanal warten einfach, bis wieder Platz ist und werden auf die Geschwindigkeit abgebremst, mit der die Daten verarbeitet werden können. In den meisten Fällen ist es deshalb sinnvoll, den Pakettakt, mit dem die Paketblöcke arbeiten so einzustellen, dass er die Blöcke häufiger Aufruft als Datenpakete ankommen. Es gibt dann zwischen den Takten in denen tatsächlich Daten verarbeitet werden immer Takte in denen die Blöcke nicht arbeiten, was kaum Zeit kostet, aber die Sicherheit bietet, dass liegen gebliebene Pakete weiterverarbeitet werden. Defaultmäßig steht der Pakettakt auf 100Hz. Wenn man sicher ist, dass im System weniger Pakete pro Sekunde unterwegs sind, lässt man das einfach so. Wenn mehr Pakete entstehen können, muss man sich überlegen, ob man das Problem durch einem schnelleren Pakettakt löst (Bis 1000Hz sind möglich) oder ob man für größere Pakete sorgen muss. mit freundlichen Grüßen Ulrich Bierwisch
Message 4 of 4
(3,628 Views)