Auslesen mehrere Geräte / Allg. Aufbau? - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA) +---- Thema: Auslesen mehrere Geräte / Allg. Aufbau? (/Thread-Auslesen-mehrere-Geraete-Allg-Aufbau) |
Auslesen mehrere Geräte / Allg. Aufbau? - Timm - 03.01.2015 15:28 Hallo zusammen, mein Name ist Timm und ich bin neu hier . Da Forum hier hat mir schon öfters beim Durchlesen geholfen. Danke hierfür! Nun ich habe bereits etwas Erfahrung in LabView gesammelt, allerdings nur in kleineren, weniger komplexen Programmen. Ich habe nun die Aufgabe, im Rahmen einer Technikerarbeit mehrere Geräte auszulesen und anzusteuern: Lineareinheit über COM-Schnittstelle , eine Pumpensteurung über NI-6009, Temperatursensor über NI-6009, Auswertung eines LeCroy Oszilloskops... Daher die Frage.. wie gehe ich das am Besten an? Das Programm soll einen automatischen Messablauf haben dieser wird über eine Tabellendatei gesteuert. Dazu möchte ich gerne einen Manuellen Modus in dem die Geräte auch einzeln (wenn der Messablauf nicht aktiv ist) gesteuert bzw. ausgelesen werden können. Welche Struktur eignet sich hier am Besten? Ich habe jetzt mit einer "Event driven state Machine" eine Schleife für ein Geräte gemacht für den manuellen Modus. Wie kann ich Daten austauschen bzw der vorhanden Schleife durch eine andere sagen was zu tun ist? Ich habe gelesen das lokale Variabeln wohl nicht das beste sind.. Vllt habt ihr mir einen guten Rat Danke! Anbei ein Bild meines bisherigen Werkes RE: Auslesen mehrere Geräte / Allg. Aufbau? - GerdW - 04.01.2015 18:24 Hallo Timm, herzlich willkommen! Zitat:Lineareinheit über COM-Schnittstelle , eine Pumpensteurung über NI-6009, Temperatursensor über NI-6009, Auswertung eines LeCroy Oszilloskops...Du verwendest also (mindestens) 3 verschiedene Schnittstellen, da würde ich dir auch 3 parallel laufende Schleifen (oder subVIs) empfehlen, die jeweils eine Schnittstelle (bzw. Gerät) bedienen… Zitat:Das Programm soll einen automatischen Messablauf haben dieser wird über eine Tabellendatei gesteuert. Dazu möchte ich gerne einen Manuellen ModusEine Statemachine ist dafür perfekt! Gern auch als Kombination mit einer Eventstruktur und einer Queue als "Event-Driven Queued Message Handler"… Schau dir mal das Actor-Framework an. Ich glaube, das ist bei LV2011 auch schon dabei (bin mir aber nicht sicher). Zitat:Wie kann ich Daten austauschen bzw der vorhanden Schleife durch eine andere sagen was zu tun ist?Durch Queues… Zitat:Ich habe gelesen das lokale Variabeln wohl nicht das beste sind.Spätestens, wenn du aus Übersichtlichkeits-Gründen eigene subVIs für deine Geräte verwendest, kannst du eh keine lokalen Variablen mehr nutzen. Also: Queues, Notifier, FGVs aka ActionEngines (und auch mal die eine oder andere globale Variable)… RE: Auslesen mehrere Geräte / Allg. Aufbau? - Timm - 06.01.2015 13:53 Hallo GerdW und danke! Ja so habe ich mir das auch gedacht, dass ich für jedes Gerät eine eigene Schleife mache in der Init.. Messung.. Beenden.. alles drin ist was das Gerät eben machen soll. Und ich würde eben jede als State-Machine aufbauen. Das Aktor Framework ist bei mir in LV2011 nicht vorhanden, oder ich finde es nicht . Es ist mir leider aber immer noch nicht klar wie ich das mit den Daten am Besten mache. Mal ein paar Beispiele um es zu verdeutlichen was ich nicht kapiere: - Sagen wir ich habe eine "Master" Schleife, die einen Messablauf steuert, diese soll die Befehle an die anderen Schleifen weitergeben (Geräte) z.B. Messe Temperatur - Wiederum möchte ich dann eben die Daten (Temperatur) der Geräteschleife haben um sie zu loggen o. anzuzeigen - ist das hier sinnvoll das überhaupt in der Masterschleife zu machen? Oder in einer Extra-Schleife? - Da ich ja vllt in beide Richtungen Daten gebe, funktioniert dies mit Queues nicht oder? - Und für den manuellen Handbetrieb sozusagen würde ich dann die einzelnen Schleifen eben wie gehabt mit einer Event gesteuerten State Machine machen. Das Hauptproblem bei mir ist denke ich die Daten hin und her zu schieben and die richtige Schleife zu geben etc. Hoffe Ihr könnt mir hier weiterhelfen.. ich wills ja vernünftig aufbauen Danke! Gruß Timm RE: Auslesen mehrere Geräte / Allg. Aufbau? - Trinitatis - 06.01.2015 15:13 Hallo Timm, grundsätzlich ist der Datenaustausch innerhalb von VIs in den meisten Fällen am elegantesten über Queues oder Melder zu machen. Melder können hierbei allerdings nur 1 Datum beliebiger Form enthalten, und Queues eben mehrere. Wenn du Daten bidirektional verschicken möchtest, nimm einfach für jede Richtung eine Queue. Queues funktionieren auch drahtlos (referenziert über ihren Namen und Typ) über verschiedene VIs hinweg, sodass du deine einzelnen Aufgaben auch in Sub-VI unterteilen kannst. Gruß, Marko RE: Auslesen mehrere Geräte / Allg. Aufbau? - Timm - 27.01.2015 15:30 Hallo zusammen, vielen Dank für die Vorschläge. Ich hab jetzt mal das Programm teils mit Queues umgesetzt. Anbei ein Ausschnitt für die Ansteuerung einer DAQmx USB NI-6009... Ich kann nun über Buttons meines Reiters "Manuell" auf dem Frontpanel alles durch die Event-Gesteuerte Schleife steuern. In dieser wird in der Queue das auszuführende Element und eventuell Daten als Variant angefügt. Im Timeout Case werden diese dann abgearbeitet. Dazu hätte ich ein paar Fragen - Ist das sinnvoll so? - Die Timeout Zeit des Queue entfernen Elements könnte ich ja eig auf 0 setzen? Allgemein habt ihr Ideen? Danke schonmal! Gruß Timm RE: Auslesen mehrere Geräte / Allg. Aufbau? - GerdW - 27.01.2015 15:40 Hallo Timm, Zitat:Im Timeout Case werden diese dann abgearbeitet. Dazu hätte ich ein paar FragenDu hast den TimeOut auf 25ms gesetzt - und ebenso das TimeOut der ReadQueue-Funktion. Das passt so nicht… Das Auslesen der Queue sollte in einer parallelen Schleife erfolgen: das Konzept nennt sich dann "Queue driven state machine"… RE: Auslesen mehrere Geräte / Allg. Aufbau? - Timm - 27.01.2015 15:46 Hallo GerdW, heißt dann ich nehm das was ich gerade im Timeout-Case habe in eine extra while Schleife und in einer anderen Frage ich die Events ab? Gruß RE: Auslesen mehrere Geräte / Allg. Aufbau? - GerdW - 27.01.2015 15:47 Ja, so würde ich das machen. RE: Auslesen mehrere Geräte / Allg. Aufbau? - Timm - 27.01.2015 18:29 Quasi so? Gruß |