LabVIEWForum.de - Fehlermeldung bei Messunganaloger Eingänge

LabVIEWForum.de

Normale Version: Fehlermeldung bei Messunganaloger Eingänge
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

über eine PXI-6629 Karte möchte ich analoge Eingangswerte einlesen.

Dies funktioniert auch zu 95% ganz gut. Nur ab und zu bekomme ich die folgende Fehlermeldung.

[attachment=28391]


Woran kann dies liegen? Der Fehler tritt bei 50 Messungen nur 1-2 mal auf.


Die ist der Auszug, wie ich die Messung durchführen möchte. Durch den Auszug aus dem Gesamtprogramm
ist das Frontpanel etwas verschoben.
LV Version 8.5

[attachment=28392]


Vielen Dank für Hilfe.
Hallo,

was mir auffällt: Du hast 3 mal nahezu den identischen Code. Das ist immer ein Zeichen dafür, dass etwas optimiert oder in SubVIs ausgelagert werden kann. Aktuell musst du Änderungen 3 mal durchführen.

Bei dir kann es sein, dass es durch die parallele Abarbeitung zu RaceConditions kommen kann. Soll heißen: Du greifst auf einen Task zu und möchtest dann einen erstellen, der kurz davor bereits von einer anderen Schleife erstellt wurde.
Das kann sporadisch auftreten, da die Reihenfolge in deinem Code nicht fest vorgegeben ist.

Kannst du diese 3 Einlesevorgänge nicht in einem Task zusammenfassen?
Das würde Race Conditions vermeiden und eine Wartbarkeit des Codes erheblich vereinfachen.
Dann würdest du die Eingänge parallel auslesen, aber nur die Werte verarbeiten, die du tatsächlich brauchst.
So kann der von dir genannte Fehler nicht auftreten und Abtastrate etc. sind sowieso überall gleich.

Sonst musst du dafür sorgen, dass die Einlesevorgänge nacheinander ausgeführt werden.
Hallo,

die 3 Tasks sind bis auf die Eingabeparameter (Bsp. Analog-Eingangs-Nr) identisch.

Die 3 Einlesevorgänge der analogen Eingänge müssen aber parallel möglich sein, da es 3 parallele,
identische Stationen in der Anlage sind, und hierdurch eine Taktzeitersparung erreicht werden muss.
Sonst wäre dieser Vorteil wieder dahin.

Der Fehler tritt aber auch auf, wenn ich das Programm ganz neu starte, und dann nur an einer Station
Messungen durchführe. Kam mir zumindest so vor. Also wurde nur immer der gleiche Task/Messung gestartet.
Geht es nicht, mehrere Tasks gleichzeitig laufen zu lassen?
Im Gesamtprogramm gibt es noch einen weiteren Analog-Eingangstask, welcher aber ständig läuft, da diese Werte
kontinuirlich eingelesen werden müssen. Spielt der hierfür evtl auch noch eine Rolle? Obwohl sich die fehlermeldung
anhand der ausgegeben Konfiguration eigentlich nur auf den Task der 3 gleichen AI´s bezieht.

Wie kann bzw. muss ich dass Handling der einzelnen Tasks ausführen und umprogrammieren, dass diese auch ohne Probleme parallel
laufen?
Die Taktzeit ändert sich nicht.
Du kannst die 3 Erfassungen über einen einzigen Task laufen lassen. Diese 3 Werte werden dann z.B. kontinuierlich (parallel) eingelesen. Und je nach Zustand deiner State Machines kannst du dir ja die entsprechenden Werte aus dem Messdaten-Array heraus picken und verarbeiten.

Trifft ein Zustand nicht zu, ignorierst du die eingelesenen Werte einfach.

Das kommt deiner Taktzeit sogar zu gute, da ein laufendes Erstellen und Beenden eines Tasks Zeit benötigt.

Auf eine Messkarte kannst du nur über einen einzigen Task zugreifen. Mehrere Tasks, die gleichzeitig mit der selben Messkarte kommunizieren, funktionieren nicht und erzeugen den oben genannten Fehler.
Hallo,

also alle analogen Eingänge in einen Task packen, den ich davor im MAX definiere?

Dort alle Spannungen die erfasst werden sollen einfügen und mit "kontinuierlich erfassen"
aufnehmen, korrekt?
Muss dann der DAQmx Lesen Baustein mit Analog/mehrere Kanäle/Einzelne Samples definiert werden?
oder auch mehrere Samples?

Wenn ich hierzu zusätzlich analoge Ausgänge verwenden muss, kann ich die in nem anderen Task
laufen lassen? Die EA´s befinden sich aber wiederrum auf der gleichen Karte, stören die sich dann auch?
Hallo,

muss das ganze dann in etwa so aussehen?


Lv85_img[attachment=28423]


Die Werte die ich nach einem Start erhalten muss, müssen genau, z.B. 15000 sein bei Abtastrate von 1k.
Also Messung dauert entsprechend 15s, da hierbei Werte zu exakten Zeitpunkten ausgewertet wreden sollen.

Wie kann ich dies sicherstellen?
Referenz-URLs