Analogmessung auf einem Kanal im Hintergrund - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Analogmessung auf einem Kanal im Hintergrund (/Thread-Analogmessung-auf-einem-Kanal-im-Hintergrund) |
Analogmessung auf einem Kanal im Hintergrund - wernerIBN - 23.02.2010 12:07 Hallo, ich benötige eine Idee zur Architektur. Ich habe eine Erzeuger-Verbraucherstruktur, mit der kann ich eine Motorsteuerung von A nach B fahren lassen. Das ist fertig und geht, nun soll folgendes hinzugefügt werden: Von einem DAQ-MX-Gerät sollen dabei die ganze Zeit Analogmesswerte auf einem Kanal mit etwa 1kHz aufgenommen und live als Graph Oszilloskopmäßig angezeigt werden. Aus dem DAQ-MX VI kommt der Datentyp Signalverlauf raus. Das würde ich gemäß dem Beispiel Acq&Graph Voltage-Int Clk-EveryN&DoneEvent.vi eventgesteuert realisieren, und einfach zusätzlich zur Erzeuger-Verbraucher-Struktur als parallelen Zweig in mein Blockdiagramm aufnehmen. Vermutlich geht das, oder ist es schlecht in einem Blockdiagramm zwei Event-Strukturen (einmal die der Erzeuger-verbraucher-Struktur, und einmal den ErfassungJedenNtenSamplesEvent) zu haben ? Nun mein Problem, dazu fällt mir nix einfaches, logisches, gutes ein: Ich möchte gerne mittendrinn, einfach per Button einschalten, die Messdaten in eine Datei laufen lassen, und per Button diese Aufzeichnung wieder ausschalten können. Und so im Laufe des Versuchs 10-20 Dateien aufnehmen um diese später auszuwerten. Mir ist nicht klar, wie ich diese Analogdaten vom Datentyp Signalverlauf mal in eine Datei mit einem bestimmten Dateinamen umlenke, und mal nicht. Würde ich das mit den TDMS-VIs machen, so müsste ich ja beim Einschalten der Aufzeichnung den File mit Namen xy.dat anlegen und öffnen, dann irgendwie mehrere Events lang die Analogdaten vom Datentyp Signalverlauf reinlaufen lassen, und dann diesen File schliessen. Und da ich mehrere Files aufnehmen will, muss das ganze mehrfach während der Messung gehen. Mein Problem ist der Punkt, wie ich diese Eventartig entstehenden Daten programmgesteuert in die Datenfiles laufen lassen kann, und das ganze mehrfach vom Benutzer wählbar. Ich hatte auch schon die Idee, die Daten aus dem Graph zu nehmen: Vor Datenaufzeichnung lösch ich den Graph, dann lass ich die Daten reinlaufen, und beim Ende der Aufzeichung lege ich die messdatendatei an, kopier alles aus dem Graph (oder einem vorgelagerten Array, falls es das für den Datentyp Signalverlaufsdaten gibt) in die Datei rein und mach dann den File zu. Das wäre dann nur eine 3stufige Sequenz. Oder gibt es für dieses Problem einen besseren Weg ? Werner Analogmessung auf einem Kanal im Hintergrund - dimitri84 - 23.02.2010 12:50 ' schrieb:Das würde ich gemäß dem Beispiel Acq&Graph Voltage-Int Clk-EveryN&DoneEvent.vi eventgesteuert realisieren, und einfach zusätzlich zur Erzeuger-Verbraucher-Struktur als parallelen Zweig in mein Blockdiagramm aufnehmen. Vermutlich geht das, oder ist es schlecht in einem Blockdiagramm zwei Event-Strukturen (einmal die der Erzeuger-verbraucher-Struktur, und einmal den ErfassungJedenNtenSamplesEvent) zu haben ?Ja, das Verwenden von mehr als einer Event-Struktur pro VI muss man unbedingt vermeiden! Zitat:Ich möchte gerne mittendrinn, einfach per Button einschalten, die Messdaten in eine Datei laufen lassen, und per Button diese Aufzeichnung wieder ausschalten können. Und so im Laufe des Versuchs 10-20 Dateien aufnehmen um diese später auszuwerten.Ich mach das so. Analogmessung auf einem Kanal im Hintergrund - wernerIBN - 23.02.2010 14:59 Zitat:Ja, das Verwenden von mehr als einer Event-Struktur pro VI muss man unbedingt vermeiden! Woher hast du die Information ? Ich habe eben meine LV6 Onlinehilfe durchsucht, aber nur gefunden, dass man keine 2 Event-Strukturen in einer Schleife verwenden soll. In meinem Testbeispiel [attachment=24616] scheint das Verwenden von 2 Eventsrukturen keine Probleme zu machen (winXP). Zitat:Ich mach das so.seh ich mir noch an, Danke ! Werner Analogmessung auf einem Kanal im Hintergrund - dimitri84 - 23.02.2010 15:05 ' schrieb:Woher hast du die Information ? Ich habe eben meine LV6 Onlinehilfe durchsucht, aber nur gefunden, dass man keine 2 Event-Strukturen in einer Schleife verwenden soll.Die Begründung dafür überlasse ich den Leuten mit dem grünen oder blauen Nicknamen. Stöber mal hier ein bisschen im Forum und du wirst sehen die einhellige Meinung ist, dass mehrere Eventstrukturen pro VI nur Ärger machen. Analogmessung auf einem Kanal im Hintergrund - wernerIBN - 23.02.2010 16:12 Hi, Zitat:Die Begründung dafür überlasse ich den Leuten mit dem grünen oder blauen Nicknamen. Stöber mal hier ein bisschen im Forum und du wirst sehen die einhellige Meinung ist, dass mehrere Eventstrukturen pro VI nur Ärger machen. ich habe in allen Forenbeiträgen nach Eventstruktur und Ereignisstruktur gesucht, und soweit alles mal fix durchgelesen, aber nix zum Thema gefunden. Gerne würde ich von den Leuten mit dem grünen oder blauen Nicknamen dazu was hören, oder kannst du mir einen Forenbeitrag dazu nennen, dass man keine 2 Event-Strukturen in einer Schleife verwenden soll ? Aber ich glaub dir schon. Dann werde ich mal alles in eine einzige Event-Struktur umändern, dazu im Erzeuger-Verbraucher Event die dynamische Ereignisregistrierung hinzufügen und die DAQ-MX Events dranverkabeln und sehen ob es läuft. Ich machte mir halt etwas Sorgen, dass die anderen Events die Messdaten-DAQ-MX events behindern könnten. Aber vermutlich werden die Events gequeued und gehen nicht verloren falls 2 Events gleichzeitig auftreten ? Darin sah ich den Vorteil der zweiten Eventstruktur nur für DAQ-MX: die hat dann nix anderes zu tun als die Messwerte in den Graphen zu schreiben - so muss nun eine Eventstruktur beides machen, Benutzerinterface und DAQ-MX. Zitat:Ich mach das so.Genial ! Ich ersetze den Button Record durch eine lokale Variable, und dann kann ichs genauso benutzen (hoff ich). Ganz toll. Werner Analogmessung auf einem Kanal im Hintergrund - Y-P - 23.02.2010 16:23 Offiziell ist es auch so, dass in einer While-Loop nur eine Event-Struktur sein soll: http://zone.ni.com/reference/en-XX/help/37...evntstrctonelp/ Allerdings zeigt die Praxis hier im Forum und auch bei NI (bei Schulungen wird das immer gepredigt), dass es häufig zu Problemen kommen kann ("Verriegelung" von FP-Elementen,...), wenn man mehr als eine Event-Struktur pro VI verwendet. Deshalb sollte pro VI nur eine Event-Struktur verwendet werden. Gruß Markus ' schrieb:Woher hast du die Information ? Ich habe eben meine LV6 Onlinehilfe durchsucht, aber nur gefunden, dass man keine 2 Event-Strukturen in einer Schleife verwenden soll. Analogmessung auf einem Kanal im Hintergrund - dimitri84 - 23.02.2010 16:26 ' schrieb:Genial ! Ich ersetze den Button Record durch eine lokale Variable, und dann kann ichs genauso benutzen (hoff ich). Ganz toll.Für geniale VIs sind ebenfalls die Leute mit den grünen/blauen Nicks zuständig. Hierbei handelt es sich um eine normale State-Machine. Analogmessung auf einem Kanal im Hintergrund - wernerIBN - 23.02.2010 16:55 Zitat:Für geniale VIs sind ebenfalls die Leute mit den grünen/blauen Nicks zuständig. Hierbei handelt es sich um eine normale State-Machine.spricht für dich. Jedenfalls ist deine Lösung eine wunderbar einfache und schlüssige Lösung für mein Problem, danke. Zitat:Allerdings zeigt die Praxis hier im Forum und auch bei NI (bei Schulungen wird das immer gepredigt), dass es häufig zu Problemen kommen kann ("Verriegelung" von FP-Elementen,...), wenn man mehr als eine Event-Struktur pro VI verwendet. Deshalb sollte pro VI nur eine Event-Struktur verwendet werden.Ok, danke für den Feedback. Ich muss allerdings nochmal genau nachhaken: pro VI nur eine Event-Struktur bedeutet vermutlich NICHT, dass du es für tolerierbar hälst, einfach 2 SUB-VIs mit je einer eigenen Eventsruktur zu machen, und die ausserhalb meiner Erzeuger-Verbraucherstruktur mit der dritten Event-Struktur zu platzieren ? Sorry für die blöde Nachfrage, aber ich will nur sichergehen... Vermutlich ist folgender Sachverhalt das, was du als empfehlenswert hälst: Deshalb sollte pro VI, inklusive weiterer Unter-VIs, nur eine Event-Struktur verwendet werden. richtig ? Werner Analogmessung auf einem Kanal im Hintergrund - jg - 23.02.2010 18:09 ' schrieb:Sorry für die blöde Nachfrage, aber ich will nur sichergehen...Nein, die Empfehlung lautet wirklich pro VI max. 1 Event-Structure. In einem SubVI darf ruhig wieder eine Event-Structure sein, wenn sinnvoll. Beispiel: z.B. ein Dialogfenster. Gruß, Jens Analogmessung auf einem Kanal im Hintergrund - Y-P - 24.02.2010 08:46 Wie Jens schon gesagt hat, ist es so, dass ein SubVI auch eine Event-Struktur haben kann. Wenn dieses SubVI aufgerufen wird, kommt es dem aufrufenden VI nicht in die Quere. Ich habe öfters mal ein Haupt-VI, welches ein SubVI aufruft, bei dem ich irgendwelche Einstellungen vornehmen möchte, irgendwas an ein Gerät schicken möchte oder wie auch immer. Dabei hat das SubVI auch z.B. auch eine Struktur wie eine "eventgesteuerte State Machine". Wenn das SubVI dann beendet wird, ist wieder die Event-Struktur des HauptVIs "scharf". Nur wenn Du innerhalb eines VIs (auf die Hierarchieebene bezogen) 2 Eventstrukturen hast kriegst Du u.U. Probleme. Im VI darüber oder darunter kannst Du ruhig wieder eine Eventstruktur verwenden. Gruß Markus |