Verzögerung im Datentransfer - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenkommunikation (/Forum-Datenkommunikation) +---- Thema: Verzögerung im Datentransfer (/Thread-Verzoegerung-im-Datentransfer) |
Verzögerung im Datentransfer - Doskias - 25.01.2012 15:14 Hallo Leute, mal wieder ein kleines Problem von mir. Im Anhang befindet sich mein Target-VI welches auf einem RT-System (PXI-1042 Chassis) mit einer PXI-6229 Karte und einer PXI-4472B läuft und ein schon modifiziertes Beispiel mit FIFO-Elementen, welches allerdings nicht korrekt funktioniert (tdms-Datei bleibt leer). Ich habe über die Karten Daten von verschiedenen Kanälen gelesen oder auf verschiedene Kanäle ausgegeben. Jetzt habe ich allerdings ein Timing-Problem. In der tdms-Datei und auch in den Umgebungsvariablen, welche mir über das Host-VI grafisch angezeigt werden, werden die Inputkanäle der PXI-6229 verzögert angezeigt. Der Output auf der 6229 und der Input über die 4472B werden direkt aktualisiert. Die Verzögerung liegt immer ungefähr bei 0,6 Sekunden, aber immer etwas unterschiedlich. Achso, noch zu den Funktionen der Inputkanäle: An der 4472B habe ich Beschleunigungssensoren angeschlossen. An der 6229 waren Dehnungsmessstreifen, Kräftesensoren, ein Drucksensor und mehrere Lichtschranken bzw. Geschwindigkeitssensoren im Input angeschlossen. Der Output ging an Ventile eines ESP-Moduls. Ich finde es verwirrend, warum nur der Input der einen Karte verzögert angezeigt wird (bei einem zwischen den Sensor und der Hardware geschalteten Kräfteanzeiger kamen die Daten auch unmittelbar an). Dies führt natürlich zu erheblichen Messungenauigkeiten. Nun habe ich schon mit dem NI-Support kommuniziert und mir wurde geraten, in der deterministischen Schleife FIFO-Elemente zu benutzen um das Erstellen der tdms-Datei hieraus zu entkoppeln. Nur hilft mir auch das LabVIEW-Beispiel zu diesem Thema wenig weiter, da ich es nicht auf mein VI übertragen bekomme. Hat jemand von euch ein ähnliches Problem oder immerhin einen Lösungsvorschlag (am besten mit Beispiel oder konkret am VI). Danke im Voraus. Gruß, Sören RE: Verzögerung im Datentransfer - Hook1986 - 26.01.2012 07:36 Hallo Sören, Im Prinzip kannst du deine Timed Loop entzögern, indem du es wie in dem Beispiel gezeigt machst. Die Daten werden in die Queue geschrieben und nacheinander durch die While-Loop weggeschrieben. Der Datenempfang geht dann aber schneller. Ich hoffe, dass du verstehst wie es aufgebaut werden sollte und kannst was damit anfangen. Bei Rückfragen bitte einfach nochmal melden. MfG Carsten RE: Verzögerung im Datentransfer - Doskias - 26.01.2012 12:54 Ich danke dir für die schnelle Antwort. Ich hoffe, ich habs richtig verstanden. Nach dem Datenempfang werden selbige in eine Queue geschrieben (wahrscheinlich ähnlich dem FIFO Prinzip?). Der Baustein "Element aus Queue entfernen" zieht die Elemente einzeln aus der Liste und gibt sie über "Variant nach Daten" an die tdms-Datei weiter. D.h. die Queue-Elemente "kommunizieren" untereinander ohne direkte Verbindung. Das würde dann auch mein Verständnisproblem erklären, da ich bis jetzt angenommen habe, ich müsse quasi eine Kette aus den Elementen bauen, nach dem Motto (Queue erstellen-->Element einfügen-->Element auslesen-->Queue löschen). Das würde dann eine direkte Verbindung zwischen "einfügen" und "auslesen" fordern. Habe ich das richtig verstanden? RE: Verzögerung im Datentransfer - Hook1986 - 26.01.2012 13:03 Hallo Sören, Das mit der Queue ist recht einfach. So lange noch Platz in der Queue ist, werden einfach die neuen Daten reingeschrieben und die Queue wird immer länger. Die Schleife, welche die Queue ausliest kann ruhig etwas langsamer Arbeiten. Ich habe ein ähnliches Problem bei meiner Bachelorthesis gehabt und habe damals leider nichts von Queues gewusst. Daher gingen bei mir Daten verloren, wenn ich nicht schnell genug hinterher kam. Inzwischen bin ich jedoch ein wenig schlauer und habe mir das Arbeiten mit den Queues angeeignet. Da ich leider nicht weis, wie lange du Daten aufnehmen willst/musst kann ich dir auch nicht sagen, ob es nicht doch zu einem Datenverlust kommen könnte, wenn die Queue mal Überlaufen sollte. Für kurze Messungen oder Ähnliches sollte die Lösung mittels Queue jedoch vollkommen ausreichend sein. PS: Du hast es schon richtig verstanden. Die Queue ist nichts anderes als ein FIFO. Und derjenige der reinschreibt kann ruhig schneller schreiben, als derjenige der ausliest. MfG Carsten RE: Verzögerung im Datentransfer - Doskias - 26.01.2012 13:34 Okay, ich werde wohl Messungen machen von 5-200 Sekunden. Ich denke, in dem Bereich (hauptsächlich allerdings ca. 10 Sekunden Bereich) liegen alle Messungen. Ich versuche es gerade mal mit FIFO-Elementen. Ich bin auch am Ba-Arbeit schreiben und hab mich von Stand 0 in LabVIEW eingearbeitet und jeden Tag gibts neue Bausteine, die mir die Arbeit bisher deutlich erleichtert hätten...alles nicht so einfach RE: Verzögerung im Datentransfer - Hook1986 - 26.01.2012 14:05 Hallo Sören, ich habe meine Thesis letztes Jahr geschrieben und habe mir auch alles selbst beigebracht. Ich hatte jedoch nicht an die Idee mit diesem genialen Forum gedacht. Dies ist mir erst in diesem Jahr gekommen. Ich habe aber seit letztem Jahr sehr viel in Punkto LV-Programmierung dazugelernt ... eben auch dies mit der Queue. MfG Carsten |