LabVIEWForum.de - Task auch während laufender Anwendung ändern?

LabVIEWForum.de

Normale Version: Task auch während laufender Anwendung ändern?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

Ich möchte eine Universal Messdatenerfassungs Anwendung für meine Arbeitsstelle erstellen.

Diese soll Automatisch Ausgeführt werden.

In der Automatischen Ausführung, soll ein Task (der im NI-MAX erstellt wurde) manuell ausgewählt werden.
Und erst wenn ich den Task Starte über den DAQmx, soll die Messdatenerfassung starten.

Stoppe ich den DAQmx Task, soll es auch möglich sein, einen anderen Task auszuwählen und dann eine neue Messdatenerfassung zu starten,
ohne das die Anwendung neu gestartet werden muss.
Das heißt, die Hardware muss auch wieder frei gegeben werden.

Ich möchte in der Anwendung, Menü und Symbolleiste ausblenden.

Normalerweise muss man ja den Task vor der While-Schleife definieren.
Was dann aber kollidiert mit der Änderung des Task, während der Automatischen Ausführung.

Jeder Task aus NI-MAX kann unterschiedliche Geräte, Kanäle, Skalierungen usw besitzen.

Ich will mir selber die Arbeit damit erleichtern, und nicht für jede neue Prüfung eine neue Anwendung programmieren.

Als kleine Info, wir besitzen nur USB-6008, USB-6211 und cDaq-9184 mit unterschiedlichen Modulen.

Ich hoffe, ich konnte das einigermaßen gut erklären und mir kann jemand helfen.
Hallo erzengelsamuel,

Zitat:Ich möchte in der Anwendung, Menü und Symbolleiste ausblenden.
Das kann man in VI Eigenschaften -> Fenstererscheinungsbild einstellen.

Ich würde Dir die Queue Verarbeitung empfehlen. Da kannst Du in den einzelnen While Schleifen alles unabhängig voneinander programmieren.

Gruß
Freddy
Hallo samael,

Zitat:Normalerweise muss man ja den Task vor der While-Schleife definieren. Was dann aber kollidiert mit der Änderung des Task, während der Automatischen Ausführung.
Da kommt das Konzept "Statemachine" wieder ins Spiel: du brauchst 3 States "DAQmx init", "DAQmx messen", "DAQmx freigeben"…

Zitat:Jeder Task aus NI-MAX kann unterschiedliche Geräte, Kanäle, Skalierungen usw besitzen.
Ich will mir selber die Arbeit damit erleichtern, und nicht für jede neue Prüfung eine neue Anwendung programmieren.
Als kleine Info, wir besitzen nur USB-6008, USB-6211 und cDaq-9184 mit unterschiedlichen Modulen.
Und da fangen evtl. die Probleme an:
Was machst du, wenn du hinterher verschiedene Modi für DAQmxRead/Write benutzen musst (z.B. AI, AO, Counter, DIO, Bridges, etc.)?
Die sind nicht notwendigerweise "kompatibel" zueinander…
Was machst du, wenn eine Hardware "hardware-timing" beim Sampling erlaubt, eine andere (wie z.B. die einfache USB6008) nicht?

- Ein anderer Ansatz könnte OOP sein: für jedes Gerät/Modul eine eigene Klasse, die alle von einer Elternklasse erben…
- Oder ohne OOP, aber mit einer eigenen Schleife pro verfügbarem Device: so habe ich das an unseren Prüfständen umgesetzt. Über eine Config-Datei kann dann der User definieren, welcher Messkanal auf welchem Gerät gemessen werden soll…
Danke erst einmal für die Antworten.

wie die Leisten ausgeblendet werden, weis ich.

AO, Counter, DIO, Bridges, etc. ist egal, geht nur über AI wo die Kanäle, Skalierung, Sample Rate und Hz aus dem NI-MAX Task genommen werden sollen.
Die Aufzeichnung der Daten regel ich intern, wie viel in Datei geschrieben werden soll.
Für eine Abschaltung nutze ich maximal 1 DigitalOut den ich, wenn benötigt, direkt über den Hardware-Kanal anspreche, wenn verfügbar.

Ich versuche das mal genauer zu erklären.

Ich starte die exe, die auch sofort automatisch ausgeführt wird.
Danach Task über DAQ I/O Element auswählen und dann mit Booleschen Objekt, die Erfassung starten.
Stoppe ich die Aufzeichnung, über das selbe Boolesche Objekt, kann ich einen neuen Task auswählen und gleich Starten.

Normalerweise, Start der exe, task auswählen und dann über die leiste auf ausführen.

Hoffe das Hilft mehr, für eine genauere Erklärung.

Für Screenshots, VI bsp, links wäre ich sehr dankbar.
Hallo samael,

Zitat:Ich starte die exe, die auch sofort automatisch ausgeführt wird.
Danach Task über DAQ I/O Element auswählen und dann mit Booleschen Objekt, die Erfassung starten.
Stoppe ich die Aufzeichnung, über das selbe Boolesche Objekt, kann ich einen neuen Task auswählen und gleich Starten.
Wo ist jetzt das Problem?
Mit der oben empfohlenen Statemachine benötigst du nur genau 3 States…
(17.01.2018 17:47 )GerdW schrieb: [ -> ]Hallo samael,

Zitat:Ich starte die exe, die auch sofort automatisch ausgeführt wird.
Danach Task über DAQ I/O Element auswählen und dann mit Booleschen Objekt, die Erfassung starten.
Stoppe ich die Aufzeichnung, über das selbe Boolesche Objekt, kann ich einen neuen Task auswählen und gleich Starten.
Wo ist jetzt das Problem?
Mit der oben empfohlenen Statemachine benötigst du nur genau 3 States…

Sorry, überlesen
Danke noch einmal für die Hilfe.

Die Statemachine funktioniert wunderbar.

Ich werde morgen mal die VI anhängen, damit alle was von haben. Big Grin
So, hab mal die Funktionierende DAQmx AI State Machine, angehangen.

noch verbesserungswürdig. aber funktioniert im Grunde.

[attachment=58654]
Referenz-URLs