LabVIEWForum.de - Schaltung mit DAQ realisieren

LabVIEWForum.de

Normale Version: Schaltung mit DAQ realisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
Hallo Lifter,

Zitat:Wenn ich jetzt ein sub VI zur ansteuerung der netzteile erstellen möchte muss ich ja im anschlussfeld zunächst strom und spannung nach links zu den eingängen legen,
Korrekt.

Zitat:rechts aber einen ausgang setzen, der mit dem frontpanel verknüpft ist.
Wieso?

Zitat:Aber der Ausgang des Sub VI`S soll doch direkt an die Netzteile gegeben werden.
Ja, dann mach das doch: schreibe die passenden Werte auf einen DAQmx-AO-Task!

Zitat:jetzt wird je nach netzteil und stromwert (maßgeblich für das zuschalten der jeweiligen shunts in den kreis) eine bestimmte schalttopologie zugeschaltet, also über DO`s ein paar Relais angesteuert.
Genau. Ein DAQmx-DO-Task, der gleich mehrere Kanäle (=Relais) schalten kann...

Zitat:Hierfür bräuchte ich doch schon wieder eine Case Struktur?
Ja: Wenn Netzteil1 Dann Schalte Relais xyz Sonst Relais XYZ

Zitat:Geht Case Struktur in Case Struktur?
Wozu brauchst du das hier? Ich dachte, du willst eines nach dem anderen machen?

P.S.: Überprüfe mal deine Tastatur, die Shift-Taste scheint defekt zu sein...
ok, also mehrere aneinander gereite case strukturen umgeben mit einer while schleife.


Ich habe jetzt mal die richtigen parameter gesetzt um von den vom Anwender eingegebenen Werten auf die umgerechneten Spannungswerte zur Ansteuerung der Netzteile zu kommen.


Ich dachte mir in den jeweiligen Cases setze ich dann zusätzlich noch eine Enum Konstante, im ersten bereich Netzteil 1, dann Netzteil 2, anschließend Netzteil 3.


Problem ist, wenn ich damit an den Selektor der nächsten Case Struktur gehe das ich das nicht als Auswahl /selektor verwenden kann. Da gibs dann nur sowas wie 1 (Bed. erfüllt) und 0 (standard). Ich würde gerne verschiedene Cases für Netzteil 1, 2 oder 3 machen, das ist aber so scheinbar nicht möglich?

Andersherum könnte ich das ja auch mit einem Sub VI erreichen, nur komme ich mit der Erstellung nicht ganz zurecht. Übergeben werden ja die Enum konstante und die beiden umgerechneten Werte. Je nach Netzteil und Stromwert kommt es zu einer anderen Schaltopologie. Das ist nicht nur abhängig von der Enum Konstante (Netzteil 1,2 oder 3), sondern auch von dem Stromwert, da je nach Stromwert ein anderer Shunt zugeschaltet wird.

In dem Sub VI müsste ich dann sowas setzen wie if Enum 1 and Strom <1,5 A ==> Ansteuerung Netzteil 1 + Zuschalten verschiedener DO`s OR If Enum 1 and 1,5 A <Strom < 2A ==> Ansteuerung Netzteil 1 + Zuschalten verschiedener anderer DO`s. Wie Würde man sowas am einfachsten in LV integrieren?


Dann noch eine Kurze frage zum Selektoranschluss generell... Wenn ich von der DBL eingabe über ein I32 Baustein auf einen Integer wert komme, dann wird ja bis 2,5 der Case bis 2 A ausgeführt und ab 2,6 der Case für 3..bis zum nächsten Wert.

Wie erreiche ich das der die zahlen direkt rundet, also bei einer Eingabe von über 2A (zum beispiel 2,05 A) direkt in den Case ab 3A schaltet?



Danke.

Anbei ein kleines Bildchen zur Thematik.
Hallo Lifter,

Zitat:Problem ist, wenn ich damit an den Selektor der nächsten Case Struktur gehe das ich das nicht als Auswahl /selektor verwenden kann. Da gibs dann nur sowas wie 1 (Bed. erfüllt) und 0 (standard). Ich würde gerne verschiedene Cases für Netzteil 1, 2 oder 3 machen, das ist aber so scheinbar nicht möglich?
Doch, das ist möglich - wenn man es richtig macht und aufmerksam ist...
Ist dir der rote Punkt am Tunnel aufgefallen, an den du dein Enum "Netzteil1" angeschlossen hast? Dieser Punkt hat einen Namen (CoercionDot) und eine Bedeutung!
Wahrscheinlich hast du in jedem Case der ersten Case-Struktur ein neues Enum mit jeweils einem Eintrag angelegt. Du musst aber in jedem Case das selbe Enum mit 3 Einträgen verwenden, von denen du jeweils den passenden auswählst! Wenn du das gemacht hast, erscheinen bei der zweiten Case-Struktur auch die 3 Auswahlmöglichkeiten des Enums!

Bist du schon mal die Einsteigerkurse zu LabVIEW durchgegangen? Hast du dir die Beispiel-VIs angeschaut? Ich bin mir sicher, dass dort auch die Nutzung von Enums gezeigt wird...

Zitat:Wie erreiche ich das der die zahlen direkt rundet
Es gibt da eine Palette mit "numerischen" Funktionen, da sind 3 verschiedene Rundungsfunktionen drauf. Hat was mit grundlegender Mathematik zu tun. Doh...
ja, habe sogar einen grundlagenkurs gemacht, war relativ viel, diese feinheiten weiss man nichtmehr so...


Wie geht denn das genau? ich hab jetzt nur ein enum mit 3 Möglichkeiten, aber an den anderen case anschließen kann ich es noch immer nicht, sodass ich dann dort meine einzelenen zustände stehen hab.


Ja das mit dem aufrunden ist ja einfach, wusste ich nicht. bin grad dabei das ganze zu verstehen.


Eine einfache, übersichtliche Möglichkeit um den Start Button da mit einzubinden gibt es nicht oder? Sodass der Case erst gesetzt werden kann, wenn die sachen eingestellt worden sind (eingabe in die beiden felder) UND der start knopf gedrückt wird?
Ist Deine Shift-Taste kaputt?

Gruß Markus

(22.10.2013 13:27 )Lifter schrieb: [ -> ]ja, habe sogar einen grundlagenkurs gemacht, war relativ viel, diese feinheiten weiss man nichtmehr so...


Wie geht denn das genau? ich hab jetzt nur ein enum mit 3 Möglichkeiten, aber an den anderen case anschließen kann ich es noch immer nicht, sodass ich dann dort meine einzelenen zustände stehen hab.


Ja das mit dem aufrunden ist ja einfach, wusste ich nicht. bin grad dabei das ganze zu verstehen.


Eine einfache, übersichtliche Möglichkeit um den Start Button da mit einzubinden gibt es nicht oder? Sodass der Case erst gesetzt werden kann, wenn die sachen eingestellt worden sind (eingabe in die beiden felder) UND der start knopf gedrückt wird?
NEIN geht aber schneller so, habs mir so angewöhnt. Wusste nicht das das so schlimm ist, versuche es dann mal zu ändern.
Also ich habe dann jetzt mal einen Programmablaufplan erstellt und möchte eigentlich mit einer while schleife arbeiten, in der dann die einzelnen zustände über cases gesetzt werden.


Kann man so auch etwa 6 oder 7 cases aneinander reihen? Die Cases werden ja dann von links nach rechts durchlaufen, wenn am Selektoranschluss immer eine bedingung vom case vorher ansteht, oder?


Ich möchte nun im zweiten case mittels DAQ Assistenten ein paar AO`s und DO`s setzen. Nur wie bekomme ich an den DAQ Bedingungen dran?


Ich möchte bei dem Vergleich größer bzw. kleiner 1,875 verschiedene DO`s setzen, leider ist am DAQ Assistent Baustein kein auswahlanschluss vorhanden.


Ich habe zudem in den Unterlagen gelesen, das der DAQ Assistent nicht immer die erste Wahl ist? Kann ich meine gesamte Schaltung nicht auch so realsieren?



Anbei habe ich mal ein Bild eingefügt.
Hallo lifter,

Zitat:einen Programmablaufplan erstellt
Schön...

Zitat:Kann man so auch etwa 6 oder 7 cases aneinander reihen? Die Cases werden ja dann von links nach rechts durchlaufen, wenn am Selektoranschluss immer eine bedingung vom case vorher ansteht, oder?
Könnte man, wird aber schnell unübersichtlich.
Besser ist eine Statemachine mit nur einer Case-Struktur...

Zitat:ich möchte bei dem Vergleich größer bzw. kleiner 1,875 verschiedene DO`s setzen, leider ist am DAQ Assistent Baustein kein auswahlanschluss vorhanden.
Der DAQ-Assi erwartet "Daten" - welche das sind, entscheidest du vorher. Also: Vergleich durchführen und je nach Vergleichsergebnis passende Daten an den DAQ-Assi weiterleiten. Zum Auswählen der DO-Daten bietet sich ein Select-Baustein oder auch eine Case-Struktur an...

Zitat:Ich habe zudem in den Unterlagen gelesen, das der DAQ Assistent nicht immer die erste Wahl ist? Kann ich meine gesamte Schaltung nicht auch so realsieren?
Der DAQ-Assi ist ganz "nett", aber kein Allheilmittel. Wie bei (fast) allen ExpressVI wirst du früher oder später an Limitierungen dieser ExpressVIs stoßen...
mal expliziet jetzt:


Ich möchte im zweiten case nach dem vergleich, kleiner oder gleich 1,875 zwei DO`s setzen, wobei einer der beiden DO`s im späteren Programmablauf wieder abfallen soll.


Geht das mit nur einem DAQ Assistenten?


Problem ist das der EIngang von dem DAQ Assistenten ein 1 D Array ist (boolsch), beim vergleich habe ich entweder true oder falsch (auch boolsch) aber kein array. Was müsste ich da zwischen schalten?


Das Problem habe ich nochmal auf dem Screenshot dargestellt.


Ich wollte gleichzeitig auch noch einen AO Setzen, kann ich das auch in dem selben DAQ Assistenten machen oder brauch ich dazu einen neuen?



Danke.
Hallo Lifter,

haben wir nicht schon mal über den Einsatz der Select-Funktion gesprochen? So z.B.:
[attachment=46976]
(Ich habe hier kein DAQmx installiert, deshalb die Array-Funktion anstelle des DAQ-Assi...)

Zitat:Geht das mit nur einem DAQ Assistenten?
Nein, man kann auch normale DAQmx-Funktionen verwenden. Beispiele gibt es im ExampleFinder...

Zitat:Ich wollte gleichzeitig auch noch einen AO Setzen, kann ich das auch in dem selben DAQ Assistenten machen oder brauch ich dazu einen neuen?
Nein, du musst einen anderen DAQmx-Task erstellen - und deshalb einen anderen DAQ-Assi benutzen. Oder, wie von mir nun schon mehrfach vorgeschlagen, die "normalen" DAQmx-Funktionen nutzen...

Zitat:Ich möchte im zweiten case nach dem vergleich, kleiner oder gleich 1,875 zwei DO`s setzen, wobei einer der beiden DO`s im späteren Programmablauf wieder abfallen soll.
Das mit dem "DO setzen" siehst du oben im Bild: einfach eines von zwei Arrays auswählen und das dann ausgeben. Wenn jetzt die zeitliche Verzögerung ins Spiel kommt: Hatte ich schon mal eine Statemachine vorgeschlagen? Hier z.B. die 3 States "DO anhand Bedingung setzen", "Warten", "DO (zurück)setzen"...
Seiten: 1 2 3 4 5
Referenz-URLs