LabVIEWForum.de - Bei true einen Wert um +1 addieren

LabVIEWForum.de

Normale Version: Bei true einen Wert um +1 addieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo allerseits,

ich versuche seit einiger Zeit folgendes Problem zu lösen:
Jedesmal wenn ein true signalisiert wird, soll sich eine vorher eingegebener Wert um +1 erhöhen, dh.
wenn ich einen startwert von 3 habe und ich den boolschen button drücke soll mir der Wert 4 ausgegeben werden. Wenn ich den button 3mal drücke entsprechend der Wert 6 ausgegeben werden, also sich pro klick um +1 erhöhen. Bei einem false signal soll der Wert nicht tangiert werden.

Vielen Dank und beste Grüße
Oli
(30.06.2012 17:17 )Oliver84 schrieb: [ -> ]ich versuche seit einiger Zeit folgendes Problem zu lösen:

Was hast du denn bis jetzt versucht?

(30.06.2012 17:17 )Oliver84 schrieb: [ -> ]Jedesmal wenn ein true signalisiert wird, soll sich eine vorher eingegebener Wert um +1 erhöhen, dh.

Hier ein Vorschlag mit Eventstruktur:

[attachment=40483]


Beste Grüße,
NWO
Hi NWO,

vielen Dank für deine Antwort. Habe mit der selben Struktur rumprobiert, nur versucht das Problem in einer for oder while Schleife zu lösen.
Habe eben deinen Vorschlag ausprobiert, komm aber auf das gleiche ergebniss wie bei den oben genannten schleifen.
Der eingegebene Wert ändert sich nur einmal, auch wenn ich den button öfter drücke.
Ich versuche beispielsweise einen wert von 2 vorzugeben und bei x betätigungen des boolschen schalters das ergebniss 2+x zu erhalten.
Ich arbeite mich erst seit 3 wochen in Labview ein, also bitte verzeih meine "noch" Unwissenheit.

Grüße,
Oli
(01.07.2012 15:38 )Oliver84 schrieb: [ -> ]Der eingegebene Wert ändert sich nur einmal, auch wenn ich den button öfter drücke.

Dann leg doch einfach noch eine While-Schleife außenrum. dann wir der Wert bei jedem Klick auf dem Button erhöht.

(01.07.2012 15:38 )Oliver84 schrieb: [ -> ]Ich arbeite mich erst seit 3 wochen in Labview ein, also bitte verzeih meine "noch" Unwissenheit.

Zur Einarbeitung gibts natürlich noch hilfreiche Links:

(29.03.2012 21:50 )NWOmason schrieb: [ -> ]Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics

http://www.ni.com/gettingstarted/labviewbasics/

Beste Grüße,
NWO
Siehe Anhang.

P.S: Mir ist unklar was bei dem von NWO geposteten Bild noch schief gehen kann ^^

Na ja...

Der Zähler zählt beim Drücken auf den Button hoch (nur wenn der True wird) im Beispiel.
Oder, falls du ohne Event auskommen möchtest, siehe snippet


PS: Beispiel...der Timer fehlt natürlich...
Der Unterschied zwischen beiden Varianten ist: Mit Event ziehst du genau so viel CPU Zeit wie nötig und die Steuerung funktioniert trotzdem so schnell wie möglich und beliebig genau (Event triggert immer dann einen Schleifendurchlauf wenn der Button gedrückt wird).

Bei der zweiten Variante musst du noch ein Wait einbauen da du sonst einen CPU Kern voll auslastest (ungebremste While Schleife). Je nachdem wie lang du das Wait wählst sinkt dabei die CPU last, allerdings könntest du bei einem zu kurzen Wait theoretisch Ereignisse verlieren (wenn du den Button schnell genug wieder aus klickst, bevor deine Schleife durchläuft).
(02.07.2012 12:58 )Kiesch schrieb: [ -> ]Bei der zweiten Variante musst du noch ein Wait einbauen da du sonst einen CPU Kern voll auslastest (ungebremste While Schleife). Je nachdem wie lang du das Wait wählst sinkt dabei die CPU last, allerdings könntest du bei einem zu kurzen Wait theoretisch Ereignisse verlieren (wenn du den Button schnell genug wieder aus klickst, bevor deine Schleife durchläuft).

Die Gefahr, eine Wertänderung nicht mitzubekommen, ist bei genügend kurzen Zykluszeiten recht gering, und bei einer Buttonabfrage gleich 0, wenn die "Mechanical Action" auf "Latch when released" gesetzt wird Cool
Erstmal vielen Dank für eure Hilfe und Beteiligung UND ja man kann als blutiger Anfänger doch etwas falsch machen ^^ ... aber Problem gelöst. Big Grin
Ich hätte noch eine Frage rein aus Interesse: Ist es möglich die von NWO gepostete Ereignisschleife statt über ein boolsches Bedienelement, über ein boolsches anzeigeelement bzw nur über true signal zu starten?

beste Grüße und Dank,
Oli
Ja, das geht auch: Erstelle eine Property Node des Elemntes, welches das Ereignis auslösen soll. Die PropertyNode, die du dafür verwenden musst, nennt sich Value (Signaling). Funktioniert nicht nur bei boolschen Elementen, sondern auch bei (allen?) anderen.

Achte darauf, dass du die Property-Node nicht jeden Zyklus schreibst, sondern wirklich nur bei einer Wertänderung, da diese u.U. zu Laufzeitproblemen führen können. (PropertyNodes erzwingen einen Wechsel in den "UI-Thread", das kann durchaus Rechenleistung fressen)
Seiten: 1 2
Referenz-URLs