![]() |
Wert einlesen und mit Verzögerung vergleichen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Wert einlesen und mit Verzögerung vergleichen (/Thread-Wert-einlesen-und-mit-Verzoegerung-vergleichen) |
Wert einlesen und mit Verzögerung vergleichen - Andy_B - 08.12.2011 15:57 Hallo zusammen, da ich nichts passendes zu meinem Problem gefunden habe hier meine Frage. Ich erfasse mit DAQ kontinuierlich einen Druck, ich möchten sobald dieser Druck unter einen bestimmten Wert fällt das Programm beenden (Abschaltbedingung). Das Problem ist, das ich nicht direkt mit dem Start der Messung einen Vergleich machen kann. Da sich der Druck erst aufbauen muss, was zwar recht schnell geht aber ich brauche bestimmt eine Verzögerung von 2 Sekunden. Vom Prinzip habe ich das hinbekommen (Test Abschaltbedingung.vi ) Hier würde ich in der selben Schleife in der auch die Daten erfasst werden die Abschaltbedingung einbauen. Das Problem dabei ist dann jedoch das ich die Schleife ausbremse, da ich im ersten Durchlauf 2 Sekunden warte. In einem zweiten VI (Test Abschaltbedingung2.vi) habe ich versucht das ganze über Queue´s und Notifier zu realisieren. Da ich damit noch nicht viel gearbeitet habe, habe ich versucht ein Programm was ich gefunden habe umzubauen. Ich glaube das dies aber nicht wirklich gelungen ist. Kann ich das Problem irgendwie anders lösen. Bzw. was mache ich mit den Queue´s falsch?? Mein Ziel ist: Ich lese kontinuierlich Werte ein, möchte aber nicht das das einlesen ausgebremst wird (da ich in der selben Schleife auch noch andere Dinge mache die durchlaufen müssen). Einen der Werte muss ich nach 2 Sekunden (nach dem einschalten) mit einem fest vorgegeben Wert vergleichen. Sobald ich den Wert unterschreite muss ich ein "True" ausgeben, mit dem ich dann die Schleife beende. Lg RE: Wert einlesen und mit Verzögerung vergleichen - schrotti - 08.12.2011 17:43 Die Verzögerung ist hier nicht angebracht. Ich würde die Überwachung erst scharf schalten, wenn der Druck einen Schwellwert überschritten hat. Zweitens muss eine maximale Zeit definiert sein, in der der Druck den Schwellwert überschreiten muss. Deine Lösung mit der Queue funktioniert so auch nicht, da der Datenfluss nicht festgelegt wurde. In diesem Fall bedeutet das, dass im günstigsten Fall ein oder zwei Samples eliminiert werden. Schließlich stellt die Queue einen Puffer da. Wahrscheinlich kommst du auch ohne die Melder aus, schau dir das Beispiel an. RE: Wert einlesen und mit Verzögerung vergleichen - Andy_B - 09.12.2011 07:42 Danke, das gefällt mir sehr gut!! Eine Frage hätte ich aber noch bezüglich des abschalten. In meinem richtigen Programm verwende ich zum Starten und Stoppen des Versuchs und damit auch zum Starten und Stoppen der Messung und Überwachung jeweils einen Button (Start/Stopp). Das ganze mache ich in einer State Machine d.h. mit Start beginnt ein Motor zu drehen und kann gesteuert werden und Gleichzeitig beginnt die Datenerfassung (welche ich am Ende auch abspeichern muss). Diesen Teil der Case Struktur durchlaufe ich solange bis ich den Button Stopp drücke. Wie realisiere ich nun am besten das ich mit dem drücken von Stopp meinen Slave (der ja meine Werte überwacht) auch stoppe. Du stoppst die Slave-Schleife ja mit dem Button Stopp. Funktioniert es auch wenn ich eine Lokale Variable nutze?? |