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!
ja, wie erstellte ich denn dieses t-f arra? Wieso bei dem DAQ Assistenten eigeltich boolean, wenn der als Digitalausgang verwendet wird? gebe ich dann mit Spalte 1 an ob DO0 geschaltet werden soll und mit spalte 2 ob DO1 geschaltet werden soll?
kannst du als beispiel mal zeigen wie man mit so einer task umgeht? In den hilfen sind irgendwie immer mehere dargestellt und die einzelnen Operationen sind mir nicht wirklich klar.
Da ich die zeit angeben will, in der die Prüfung schon lläuft bräuchte ich später noch eine eitsbhängige
Danke.
Anzeige
28.10.2013, 15:13 (Dieser Beitrag wurde zuletzt bearbeitet: 28.10.2013 15:14 von Y-P.)
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Schaltung mit DAQ realisieren
"eitsbhängige"??? ..... und achte mal besser auf die Groß- und Kleinschreibung!
Das ist jetzt schon das dritte Mal, dass ich Dir das sage.
Gruß Markus
(28.10.2013 14:13 )Lifter schrieb: Da ich die zeit angeben will, in der die Prüfung schon lläuft bräuchte ich später noch eine eitsbhängige
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Zitat:Wieso bei dem DAQ Assistenten eigeltich boolean, wenn der als Digitalausgang verwendet wird?
Ist dir das wirklich unkar?
Ein Relais (was anderes ist ein Digitalausgang ja nicht) kann entweder offen oder zu sein (unbestromt/bestromt). Also hat man genau zwei und noch dazu boolsche Zustände: FALSE und TRUE. Da liegt es doch nahe, für DO-Tasks boolsche Elemente/Arrays zu verwenden...
Zitat:ja, wie erstellte ich denn dieses t-f arra?
Hatten wir den Hinweis auf die Grundlagenkurse nicht schon einmal?
Array-Konstante aus der Array-Palette anlegen, dann eine boolsche Konstante hineinschieben. Doh!
so ich habe mich jetzt doch dazu entschieden alles mit einer state machine zu realisieren.
ANbei tauchen ein paar Fragen auf:
-Muss ich jetzt für jeden Eingang/ausgang den ich einzeln schalten will (z.B. ein relais was nach xx sekunden wieder abfällt) eine eigene task definieren welche dann über ein schieberegister in die state machine transferiert werden muss?
-Schaltet die State Machine immer nur in einen Zustand? Die anderen Zustände sind dann nichtmehr aktiv? Wenn ich einen AO aus zustand 1 dauerhaft geschaltet haben möchte darf dieser nicht in den Case?
-Wenn ich in Case 1 eine Abfrage realisiere, Spannung und Strom passen nicht zum Netzteil etc. und möchte dann eine Fehlermeldung ausgeben und die Schleife beenden, muss ich da eine verbindung zum roten punkt in der schleife haben?
-Ich würde gern ein Sub VI zur ansteuerung der Netzteile erstellen. Doch im Anschlussfeld (auch hier im thread auf seite 2 oben) können doch nur elemente verknüft werden die sich auch im Frontpanel befinden? Wie soll da die Enum Konstante rein? Überhaupt habe ich jetzt in dem Untercase ein Enum mit 3 Zuständen eingefügt, ich sehe dieses Enum aber lediglich in einem der Cases? Wie realisier ich das das dieses Enum auch in den beiden anderen Cases auftaucht?
-Ich würde gern den Start Button mit einbinden. Erst durch den Start Button soll die schleife, bzw. der ablauf starten? muss ich da nocheinmal einen großen Case drumlegen mit true false?
Zitat:Muss ich jetzt für jeden Eingang/ausgang den ich einzeln schalten will (z.B. ein relais was nach xx sekunden wieder abfällt) eine eigene task definieren welche dann über ein schieberegister in die state machine transferiert werden muss?
Nein, ein Task reicht vollkommen aus. Du musst nur ein DAQmxWrite mit den gewünschten Daten aufrufen...
Zitat:Schaltet die State Machine immer nur in einen Zustand? Die anderen Zustände sind dann nichtmehr aktiv? Wenn ich einen AO aus zustand 1 dauerhaft geschaltet haben möchte darf dieser nicht in den Case?
Das genau ist der Zweck einer Statemachine: man definiert klare Zustände und deren Wechsel. Und man befindet sich immer nur in einem System-Zustand...
Zitat:Wenn ich in Case 1 eine Abfrage realisiere, Spannung und Strom passen nicht zum Netzteil etc. und möchte dann eine Fehlermeldung ausgeben und die Schleife beenden, muss ich da eine verbindung zum roten punkt in der schleife haben?
Welcher "rote Punkt"?
Zitat:Ich würde gern ein Sub VI zur ansteuerung der Netzteile erstellen. Doch im Anschlussfeld (auch hier im thread auf seite 2 oben) können doch nur elemente verknüft werden die sich auch im Frontpanel befinden? Wie soll da die Enum Konstante rein? Überhaupt habe ich jetzt in dem Untercase ein Enum mit 3 Zuständen eingefügt, ich sehe dieses Enum aber lediglich in einem der Cases? Wie realisier ich das das dieses Enum auch in den beiden anderen Cases auftaucht?
- Man kann so ein Enum auch kopieren und in das subVI verschieben.
- Man kann ein subVI von einem markierten Code-Abschnitt erzeugen, dann übernimmt LabVIEW automatisch das Anlegen von Controls/Indicators und der nötigen Drähte.
Hatte ich dich schon mal auf die Grundlagenkurse zu LabVIEW hingewiesen? Da wird das erläutert und gezeigt...
Zitat:Ich würde gern den Start Button mit einbinden. Erst durch den Start Button soll die schleife, bzw. der ablauf starten? muss ich da nocheinmal einen großen Case drumlegen mit true false?
Mach einen State "Warte auf START", in dem der Start-Button abgefragt wird...
mit dem roten punkt war natürlich die schleifenbedingung gemeint.
Ok, klar, immer nur ein state aktiv. Wenn ich jetzt im State 2 die Netzteile mit AO`s ansteuere, muss dieser zustand ja bis zum ende der prüfung beibehalten werden. Das schalten der AO`s wird also aus dem case hinausgeführt in die while schleife?
Das mit dem enum habe ich jetzt nicht wirklich verstanden. klar kann ich das kopieren, um das aber mit dem SUB Vi zu verknüpfen muss ich das ja auf dem frontpanel positionieren.
Reinziehen geht irgendwie auch nicht, das VI ist bei mir auch durchsichtbar dargestellt.
Zitat:Ok, klar, immer nur ein state aktiv. Wenn ich jetzt im State 2 die Netzteile mit AO`s ansteuere, muss dieser zustand ja bis zum ende der prüfung beibehalten werden. Das schalten der AO`s wird also aus dem case hinausgeführt in die while schleife?
Wenn du einen Wert auf einen AO oder DO ausgibst, dann bleibt dieser bestehen, bis du einen neuen Wert ausgibst - d.h. der Zustand bleibt doch schon erhalten. Ich weiß nicht, worauf du hinauswillst...
Zitat:Das mit dem enum habe ich jetzt nicht wirklich verstanden. klar kann ich das kopieren, um das aber mit dem SUB Vi zu verknüpfen muss ich das ja auf dem frontpanel positionieren.
Ja, das muss auf dem FP liegen. Wenn du es von einem VI ins nächste kopierst, dann ist es doch auf dem FP!? Falls du aber nur eine Enum-Konstante im BD kopiert hast: Erstell ein Control dazu...
Hatte ich dich schon einmal auf die LabVIEW-Grundlagenkurse hingewiesen? Wenn ich's recht bedenke wohl schon mehrfach...
Zitat:Reinziehen geht irgendwie auch nicht, das VI ist bei mir auch durchsichtbar dargestellt.
Ein VI wird "durchsichtig" dargestellt? Hast du etwa an der Transparenz-Einstellung rumgespielt?
so, ich habe dann mal ein paar States erstellt, u.a. den Warte auf Start State über den dann, bei gedrückten Start Button weitergeschaltet wird in den Zustand Netzteil auswählen.
Dort findet dann die Umrechnung der Spannung und Ströme in umgerechnete Spannungen zur Ansteuerung des netzteils statt.
Nun möchte ich wenn (wie im Bild zu sehen) beispielsweise Spannung und Strom auf dem Frontpanel so eingestellt werden dass Netzteil 1 angesteuert werden soll diese Enum Konstante rausführen und zusammen mit den umgerechneten Werten diese dann im Zustand Netzteil 1 nutzen um ein paar DO`s und AO`s zu setzen.
Leider weiss ich nicht ganz wie ich das realisieren soll, das Enum müsste ja aus dem Untercase in den Case Netzteil auswählen gesetzt werden.
Ich hoffe ich habe mein Problem verständlich ausgedrückt, anbei ein Bild.