LabView:Wert hoch&runterzählen < Regelungstechnik < Ingenieurwiss. < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:34 So 17.04.2016 | Autor: | Boje |
Aufgabe | Erstellen Sie ein Programm, welches einen Wert zwischen zwei, durch Schieberegler festgelegte, Grenzen, hoch- und runterzählt. |
Hallo,
das soll mit LabView realisiert werden. Leider habe ich nicht viel Ahnung von LabView und trotz mehrer Stunden arbeit, habe ich diese Aufgabe bis jetzt leider nicht vollständig lösen können.
Der Wert wird nicht zwischen den Grenzen hoch- und runtergezählt, sondern die Grenzen sind der Wert.
Irgendwie stehe ich da gerade total auf dem Schlauch.
Hier mal das Blockdiagramm. Die drei Elemente außerhalb der Schleife können ignoriert werden.
Ich benutze LabView 2015.
Hat vielleicht jemand einen Tipp?
[Dateianhang nicht öffentlich]
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
Hallo!
Ehrlich gesagt, das da macht überhaupt gar keinen Sinn.
Du hast offensichtlich zwei Schieberegler, die zu einem Element zusammengefasst sind, daher kommt da ein Array an Werten 'raus. ich würde hier erstmal mit zwei getrennten Schiebereglern anfangen.
Die Werte aus den Schiebereglern werden mit einer Zufallszahl (Würfel) verglichen, und je nach Ergebnis sind die beiden LEDs (grün) dann an oder aus.
Bei jedem While-Schleifendurchlauf (grauer Rahmen) passiert das erneut, so daß die LEDs schön flimmern dürften.
Die variable i (blau) zählt die Schleifendurchläufe hoch, und wenn diese mit dem Wert des Drehrehlers übereinstimmt, stoppt das ganze Programm. Gleichzeitig legt der Drehregler fest, wie lange ein Schleifendurchlauf mindestens dauert (in Millisekunden)
Der Wert von i wird drei mal aus der Schleife heraus geführt, und dabei automatisch in ein Array umgewandelt. (nach 10 Durchläufen bekommst du also ein Array mit den Werten 0...9)
Alles in allem habe ich nicht den Eindruck, daß du über all zu viel Grundwissen zu LabView verfügst. Es gibt aber viele tutorials bei Youtube & Co, die du dir mal anschauen kannst.
Zum Problem:
Du benötigst zunächst zwei einfache Schieberegler, in deren Eigenschaften du einstellst, daß sie ganzahlige Werte liefern sollen - die Umrandung wird dadurch blau statt orange. Die Schieberegler gehören nicht in die Schleife, denn sie sollen nicht während des Durchlaufs verändert werden.
Innerhalb der Schleife könntest du den Wert aus dem Schieberegler für die untere Grenze mit dem Wert von i addieren, und würdest so eine aufsteigende Zahlenfolge erhalten. Aus dem Vergleich mit der oberen Grenze kannst du dir dann die Stopp-Bedingung basteln.
Und die Zahlenfolge kannst du wie gehabt aus der Schleife heraus führen, und bekommst dann ein Array, in dem alle Zahlen drin stehen.
Wenn du das machst, hast du nur den Teil mit dem Hochzählen. Je nachdem, ob anschließend noch runter gezählt werden soll, oder ob über einen Knopf gesteuert werden soll, ob hoch oder runter gezählt werden soll, gibt es andere Vorgehensweisen.
In dem Zusammenhang solltest du dir auch die IF-Schleife angucken, die hat einen kreuzartig schraffierten Rand und erlaubt es, unterschiedliche Dinge zu machen, je nachdem, was an ihrem Fragezeichen dran hängt.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:04 Di 19.04.2016 | Autor: | Boje |
Hallo,
vielen Dank für deine Antwort.
> Alles in allem habe ich nicht den Eindruck, daß du über
> all zu viel Grundwissen zu LabView verfügst. Es gibt >aber viele tutorials bei Youtube & Co, die du dir mal >anschauen kannst.
Da hast du recht. Wir hatten eine kurze Einführung und haben direkt diese Aufgabe erhalten. Das war's.
> Zum Problem:
>
> Du benötigst zunächst zwei einfache Schieberegler, in
> deren Eigenschaften du einstellst, daß sie ganzahlige
> Werte liefern sollen - die Umrandung wird dadurch blau
> statt orange. Die Schieberegler gehören nicht in die
> Schleife, denn sie sollen nicht während des Durchlaufs
> verändert werden.
Laut Aufgabenstellung soll es ein Schieberegler mit zwei Pfeilen / Cursor sein. Die LEDs sollen anzeigen in welche Richtung (hoch/runter) gerade gezählt wird.
In einer Tabelle (denke mal ein Array) sollen die Werte Gesamtdurchläufe, Zählwert und Digitalpegel angezeigt werden.
Zusätzlich soll die Hysterese eines Rechtecksignals einstellbar sein. Aber damit befasse ich mich erst, wenn das mit dem Zählen funktioniert.
> Innerhalb der Schleife könntest du den Wert aus dem
> Schieberegler für die untere Grenze mit dem Wert von i
> addieren, und würdest so eine aufsteigende Zahlenfolge
> erhalten. Aus dem Vergleich mit der oberen Grenze kannst > du dir dann die Stopp-Bedingung basteln.
So bald der Wert die obere Grenze erreicht, soll er wieder runtergezählt werden bis zur unteren Grenze, anschließend wieder hoch, usw.
Welchen Diagramm-Typ nimmt dafür eigentlich, Waveform Graph oder Chart?
Werde mich mal ranmachen deine Tipps umzusetzen :)
|
|
|
|
|
Hallo!
> Laut Aufgabenstellung soll es ein Schieberegler mit zwei
> Pfeilen / Cursor sein.
Ah, OK. Dann hast du das richtig gemacht. Du bekommst also ein Array mit zwei Werten zurück, das dann in zwei einzelne Werte aufgesplittet wird. Ich rate dir weiterhin, den Regler so einzustellen, daß er ganze Zahlen liefert, so daß die Drähte nach dem Splitter blau werden.
> Die LEDs sollen anzeigen in welche
> Richtung (hoch/runter) gerade gezählt wird.
> In einer Tabelle (denke mal ein Array) sollen die Werte
> Gesamtdurchläufe, Zählwert und Digitalpegel angezeigt
> werden.
> So bald der Wert die obere Grenze erreicht, soll er wieder
> runtergezählt werden bis zur unteren Grenze, anschließend
> wieder hoch, usw.
Dann würde ich so vorgehen:
Du brauchst in der Schleife einen boolschen Wert (grün), der angibt, ob grade hoch oder runter gezählt werden soll, und ggf. geändert werden muß. Deshalb muß dieser Wert von einem Schleifendurchlauf an den nächsten weiter gegeben werden.
Dazu erzeuge links neben der Schleife eine boolsche Konstante mit dem Wert True, die du in die Schleife rein verdrahtest. Das Problem: Bei jedem Schleifendurchlauf hat man immer den Wert True, und kann ihn nicht ändern. Rechtsklick auf das Rechteck im Rahmen der Schleife, und den Typ auf... Schleifenvariable oder so ähnlich ändern. Dann erscheint auf exakt gleicher Höhe rechts noch ein Rechteck, und beide Rechtecke tragen einen Pfeil hoch und einen runter. wird innerhalb der Schleife ein Wert an das rechte Rechteck gedrahtet, so kommt dieser Wert beim nächsten Durchlauf links wieder raus.
Damit kannst du die Info, ob hoch oder runter gezählt wird, in den nächsten Durchlauf. Beim allerersten Durchlauf ist der Wert True, von der Konstanten.
Das gleiche machst du mit dem Minimal-Wert vom Schieberegler. Denn das ist der erste Wert, die folgenden entstehen durch Addieren oder Subtrahieren von 1.
Du brauchst einen IF-Rahmen in der Schleife, der den Wert entweder um 1 reduziert oder erhöht - abhängig von dem boolschen Wert. Altenativ gibt es ein dreieckiges Symbol, das nach rechts zeigt. Es bekommt zwei Werte (+1 und -1 in dem Fall) und einen boolschen Wert, und gibt je nachdem +1 oder -1 raus, was zu dem Zählwert hinzu addiert wird.
Und dann brauchst du noch IF-Rahmen, um zu prüfen, ob der höchste/kleinste Wert erreicht wurde, und ob die Zählrichtung daher umgekehrt werden muß, oder nicht. (Das Resultat wird entsprechend an die grüne Ausgangs-Box am rechten Rand gedrahtet, s.o.)
> Zusätzlich soll die Hysterese eines Rechtecksignals
> einstellbar sein. Aber damit befasse ich mich erst, wenn
> das mit dem Zählen funktioniert.
Hmmm, keine Ahnung, was genau da jetzt gemeint ist. Aber ja, mach das ganze Schritt für Schritt.
> Welchen Diagramm-Typ nimmt dafür eigentlich, Waveform
> Graph oder Chart?
Das eine nimmt xy-Werte entgegen, das andere nur y-Werte sowie ggf Startpunkt und Abstand der x-Werte. Manche von den Dingern nehmen auch einzelne Zahlen an, und pflegen intern eine Liste mit allen Zahlen.
Ich kanns dir aber nicht genau sagen, das ganze ist ein Weilchen her bei mir.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:08 So 24.04.2016 | Autor: | Boje |
Vielen Dank für deine ausführliche Antwort und die Tipps! Hatte die Tage leider nicht allzu viel Zeit, aber nächste Woche will ich es fertig machen, hoffentlich funktioniert es :)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:03 Mo 25.04.2016 | Autor: | Boje |
Habe mich heute mal rangemacht. Allerdings komme ich bis zu dieser Fehlermeldung leider nicht weiter.
Auch habe ich nicht wirlich Konfigurationsmöglichenkeiten für den Tunnel. Eigentlich nur "Use Default If Unwired" und "Create" hilt mir auch nicht weiter.
Programmieren möchte ich, wenn die obere Grenze ist kleiner gleich untere grenze +1, nichts machen (TRUE und als steigenden Graph ausgeben), falls FALSE von oberer Grenze -1 bis gilt = untere Grenze. Dann wieder von vorne.
[Dateianhang nicht öffentlich]
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|