Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich will eine Pumpensteuerung über LabVIEW machen. Die Steuerung sollte über Digitalausgänge meiner DAQ Karte realisiert werden.
(Digital I/O in LabVIEW über DAQ zu programmieren ist kein Problem.)
Wie die Pumpen gesteuert werden, hängen von den Daten ab, die (anhand der selben Messkarte über DAQ) erfasst werden. Diese sind Analogwerte (Beispielweise Druck und Temperatur) und sind bereits auch realisiert worden.
Mein Problem ist wie ich diese 2 Aufgaben zusammenbringe. Ich nenne ein kurze Beispiel:
Die Wassertemperatur wird anhand DAQ AI erfasst und bearbeitet. Wenn diese einen bestimmten Wert überschreitet, sollte anhand der Digital Output der Karte eine Pumpe geschaltet werden (entspricht High pegel).
Wie kann ich die Informationen die ich von AI bekomme, für die Steuerung der DO benutzen? (Locale Vari..,?)
Normal habe ich in meinem Programm eine DAQ Messschleife, wo die Kanäle konfiguriert werden und die daten gelesen werden. Für die entgültige Auswertung hab ich eine 2.Schleife, wobei die Daten per Queues in die 2.Schleife fliessen.
wäre dankbar für jeden Tipp,
Grüße,
Prince.
Coming together is a beginning, keeping together is progress, working together is success.
Anzeige
30.08.2010, 14:51 (Dieser Beitrag wurde zuletzt bearbeitet: 30.08.2010 14:52 von Matze.)
lokale Variablen sollte man vermeiden, wo es nur geht.
Über die Queue kommunizierst du ja bereits zwischen beiden Schleifen.
Du könntest die Erfassungin in der ersten Schleife machen, wie bisher.
Wenn die Messdaten per Queue in die 2. Schleife kommen, kannst du diese dort auswerten (Werte vergleichen) und ggf. die digitalen Ausgänge ansteuern.
Oder was ist nun genau das Problem?
Theoretisch kannst du das auch mit einer Schleife lösen.
' schrieb:Du könntest die Erfassungin in der ersten Schleife machen, wie bisher.
Wenn die Messdaten per Queue in die 2. Schleife kommen, kannst du diese dort auswerten (Werte vergleichen) und ggf. die digitalen Ausgänge ansteuern.
Oder was ist nun genau das Problem?
Theoretisch kannst du das auch mit einer Schleife lösen.
kann ich den Task für Digital I/O praktisch in die 2.Schleife erst öffnen, oder sollen alle DAQ Kanäle in der ersten schleife geöffnet bzw geschlossen werden?
hmm..ich habe eine ziemlich große datenmege. Mit nur einer Schleife ist irgedwann schluß mit der LV.Resources und CPU-Leistung.
Grüße,
Coming together is a beginning, keeping together is progress, working together is success.
30.08.2010, 15:01 (Dieser Beitrag wurde zuletzt bearbeitet: 30.08.2010 15:01 von Matze.)
Gut, das kommt auf den Anwendungsfll an. Ich ging davon aus, dass sich die Temperaturwerte nicht schnell ändern.
Beispiel (sind eigene SubVIs, aber dennoch sollte das Prinzip klar werden):
Aber mit der Queue, die du nutzt, geht das doch auch.
Sonst solltest du deine Problemstellung noch etwas präzisieren (Hardware, Abtastrate, ...).
Grüße
30.08.2010, 15:05 (Dieser Beitrag wurde zuletzt bearbeitet: 30.08.2010 15:06 von jg.)
Der DO-Task kann doch vollkommen unabhängig in einer eigenen Schleife laufen, gerne auch Queue-gesteuert.
Ich würde zu Programmstart die DO-Tasks initialisieren und immer mitlaufen lassen, bzw. besser gesagt, nach Initialisierung wartet deine DO-Loop auf neue Events, die sie per Queue bekommt. Wenn dann was zu tun ist - was du in deiner Datenverarbeitungsschleife feststellst - dann löst du das entsprechende DO-Event per Queue aus.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!