LabVIEWForum.de - DAQ ansteuern in 2 State-Maschines

LabVIEWForum.de

Normale Version: DAQ ansteuern in 2 State-Maschines
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi,

ich will mich nun endgültig vom DAQ-Assistenten lösen, aber dafür bräuchte ich mal etwas Unterstützung Huh.

Als Hardware haben wir ein DAQ9174 Chassi mit einer NI 9264 AO dran.
Nun hab ich das Problem, dass ich bei 2 verschiedenen Prüfungen (die unabhängig von einander laufen.) Auf dieses Chassi zugreifen muss.

Beim Versuch ein großes Hauptprogramm zu schreiben, bin ich nun auf die Begrenzung des DAQ-Assistenten gestoßen. (Umsetzung siehe Bild.)

Zum Verlauf:
Beim Start des Programm muss mein AO mind. 1 Signal Wert bekommen mit einer Konstanten (siehe unten „Start“), genauso am Ende der Prüfung.
Während der eigentlichen Prüfung ist es ein Sinusverlauf, der erzeugt werden muss. (Mit unterschiedlichen Offsets, Amplituden und Frequenzen).
Bei einer Prüfung funktioniert es alles ganz gut, hab dazu bei „Start“ und „Ende“ den DAQ-Assistenten auf „1 Sampel on Demand“ gestellt. Und bei der Prüfung auf N Sampels mit Timming- Funktion (siehe Bild ganz außen rechts).

Sobald aber 2 Prüfungen gleichzeitig ins Spiel kommen, ist das Chassi mit den Daten der 1 Prüfung belegt und kann die andere nicht mehr ausführen. Soweit für mich auch verständlich.

Also hab ich es versucht ohne Daq Assistenten.
(Dazu ne kleine Zwischen Frage: Wenn ich es richtig verstehe, entspricht die FS des Sinussignal nichts anderes als die Frequenz, oder?)

Hab nun im Measurement & Automation Explorerer 2 Task erstellt.
Einen für den AO 0 und einen für den A0 1 und das ganze ins Programm eingebunden. (Siehe Vi)
Nun bekomme ich ständig die Fehlermeldung das die Ressource belegt (logisch, weil Sie wird ja von einem der 2 Task belegt) ist.

Alternativ hab ich versucht für die 2 AO einen Task zu erstellen, aber wie diesen Task trennen, so dass ich die 2 AO in den unterschiedlichen State-Maschinen ansteuern kann?

Und wie kann man die Puffergröße erhöhen?
Es muss doch ne Möglichkeit geben, so dass man den Task, welcher mehrere AO hat auf unterschiedliche State-Maschines zu verteilen! Oder etwa nicht?
Habe mir dein VI noch nicht anschauen können, aber werde es morgen einmal machen.

Prinzipiell würde ich die gesamte Messsequenz in eine StateMachine packen und über die Buttons die einzelnen Prüfausgänge "aktivieren", sprich die Werte dort ausgeben. Die ganzen AO, die du maximal verwendest, müssen dabei alle in einem Task liegen und du übergibst dann immer ein Array an Werten.

Näheres am Montag, sofern nicht jemand anderes bis dahin die Lösung zeigt!Smile
Sorry, aber ich werde vor Donnerstag keine Zeit finden mich der Sache anzunehmen.

Also Leute, wenn jemnd anderes mit Rat und Tat zur Seite stehen kann! Immer 'ran an die Bulletten! Big Grin
Zitat:Alternativ hab ich versucht für die 2 AO einen Task zu erstellen, aber wie diesen Task trennen, so dass ich die 2 AO in den unterschiedlichen State-Maschinen ansteuern kann?

Ist wahrscheinlich eine hier verpoehnte und sehr provisorische Loesung, aber am schnellsten geht es, wenn du einfach die zu setzenden Werte in je eine lokale Variable schreibst (z.b. in "Spannung Pruefung eins", "Spannung Pruefung zwei").
In einem weiteren parallelm Loop liest du diese beiden Variablen immer wieder aus, fuegst sie zu einem Array zusammen und schreibst deinen Output (dein Task mit den 2 AOs). Das muesste gehen. Aber ob es toll ist weiss ich nicht - ich beweifle es vom Gefuehl her. Ich bin auch nur ein AnfaengerSmile
Hallo Andinger, danke für deine Antwort, mit den lokalen Variablen hab ich mir auch schon gedacht... :-)
Das führte jedoch zu Problemen. Der Arbeitspeicher lief relativ schnell voll.
Daraufhin hab ich es mit melden ausprobiert aber aus mir noch unbekannten gründen wurde dann die eingestellte frequenz drastisch gesenkt.
Wahrscheinlich weil die Schleife auf die Daten der oberen Schleife gewartet hatte. (Oder was meint ihr?)
Hi EIS - Tobias,

hört sich gut an. Hab aber dann follgendes Problem (im Bsp. nicht gezeigt):
Die unterscheidlichen Prüfungen sollen eine bestimmte Anzahl ablaufen bzw. bis jemand ein Stopknopf drückt. (Daher dachte ich es würde sich am besten mit mehreren While-schleifen machen, wo man die Ao einzeln ansteuern kann. Oder gibt es da ne alternative Lösung?
der melder sollte eigentlich nicht warten, sondern immer den wert sofort lesen der im melder steht.
auch das mit dem lokalen variablen sollte den arbeitsspeicher nicht fuellen. du hast doch nur zwei lokale variablen, die du schreibst und liest. nicht mehr. das entspricht meines wissens nach 16 byte.
Offtopic
@Andinger::rulez:Bitte keine Beiträge im SMS-Stil (also alles klein geschrieben)! Eine Computer-Tastatur hat eine Shift-Taste!

Gruß, Jens
Sorry. Ich versuche normalerweise darauf zu achten. Manchmal vergess ich es einfach.
Seiten: 1 2
Referenz-URLs