(08.08.2013 13:27 )Kiesch schrieb: Hast denn jetzt auch lesen und verarbeiten nochmal aufgeteilt in zwei Schleifen? Sprich: eine macht nur Lesen - hohe Prio - und schmeißt das in ne Queue und eine parralelel Verbraucherschleife liest aus der Queue und verarbeitet (niedrige Prio da wohl nicht so zeitkritisch wie das eigentliche Lesen).
Ja, so ist es.
So sieht das momentan mit den Schleifen aus, ob die DLL direkt oder über mehrere SubVI aufgerufen wird, macht kein Unterschied:
Oben wird die Karte über die DLL ausgelesen, unten werden die Daten verarbeitet und in Arrays geschrieben. Nicht zu sehen ist, wie die Daten gespeichert werden.
(08.08.2013 13:27 )Kiesch schrieb: Im besten Fall fällt dir dann nur die Verarbeitungsschleife aus.
Leider nicht
Auch mit verschiedenen (z.B.
über DAQ) Timern hat es keinen Unterschied gemacht.
Mit einer TimedLoop als Verbraucherschleife mit niedrigerer Priorität auf einem anderen Prozessor hat es auch nichts geholfen.
Das PXI-System war nicht im Netzwerk, die Maus nicht angeschlossen, alle nicht-Windows und nicht-NI-Dienste wurden deaktiviert, auch Superfetch wurde deaktiviert und noch immer die verlorenen Messwerte alle 528 Sekunden. Dabei gehen im Bereich von 320-650 ms nur einzelne Werte verloren, insgesamt jedoch ca. 10 pro Unterbrechung. In einem Diagramm sieht das erschreckend präzise aus:
In blau mein Messwert, eine Änderung von 1 ist OK, bei einer Änderung von 2 ging ein Wert verloren.
In rot die absolute Anzahl verlorener Werte.
Die Einheit in X-Richtung sind Minuten.
Gruß
Hähnchen
P.S. Welchen Einstellbereich und welche Auflösung hat der DAQ Taktgenerator mit einer PXI-6280 für die TimedLoop? Irgendwie finde ich dazu nix...
P.P.S. Ein weiterer Knackpunkt könnte der Timout in der Verbraucherschleife sein. Leider gibt LV keine Angabe über die Millisekunde Null. Ein kurzer Test ergab etwa die Zeit, die seit Start des PC vergangen ist. Ist der Wert des Timers bei PC-Start immer = 0? Damit hätte ich bei einer Betriebszeit unter 2^32 ms bzw. 1193 Stunden keine Probleme...