INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Variable zwischenspeichern



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!

16.01.2006, 21:58
Beitrag #1

Chriz Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Nov 2005



kA



Variable zwischenspeichern
Hi,
ich sitze hier gerade und hab ein rießiges Problem :-(

Ich habe einen kurzen Startimpuls der einen Zähler startet. Jetzt muss aber der Anfangswert des Zählwertes gespeichert werden und mit dem aktuellen Zählwert verglichen werden - und das klappt nicht.

Ich habe das ganze mit einer lokalen Variablen versucht , die in einem Case ist (auf dem Bild die Variable "Istposition" ). kommt nun mein Startimpuls, so müsste das case kurz "true" werden und der Wert sollte in der LV im Case gespeichert werden. Den gespeicherten Wert hole ich dann wieder an einer anderen Stelle im Programm aus meiner lokalen Variable. Sieht man ja im Bild.
Kurioser Weise geht das aber nicht, wenn ich es so mache, wie es auf dem Bild ist, dann wird die Variable nicht gespeichgert sondern läuft mit dem Zähler hoch und runter - wieso weis ich auch nicht!

Könnt Ihr mir da ein wenig weiterhelfen!? - wie speichert man sonst Variablen kurzzeitig in einem Programm?

Gruß Chriz

[Bild: 6651-47.jpg]


EDIT: Wenn jemand will kann ich auch das gesamte VI dem Thread anhängen, jedoch kann man es nicht ausführen solang man keine Adwin-Treiber installiert hat!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2006, 22:25
Beitrag #2

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Variable zwischenspeichern
nur aus dem bild kann ich net viel erkennen :-)
eine andere bessere moeglichkeit werte zwischenzuspeichern ist eine "Funktionale - Globale - Variable" (SubVI mit einem nicht initialisiertem Schieberegister und einer sofortigen Abbruchbedingung) ODER eine Queue
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2006, 22:31
Beitrag #3

BitRechner Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jan 2006



kA



Variable zwischenspeichern
Hallo!

Hab da eine Idee:
Vielleicht liegts einfach daran, dass der Schalter "Start Fahren" ein Schalter ist und kein Taster, also beim einmaligen Drücken steckenbleibt und damit immer den aktuellen Wert in Istzustand reinschreibt.

Anhang: Schalter-Taster und die Wirkung


Angehängte Datei(en)
Sonstige .vi  Schalter_und_Taster.vi (Größe: 16,59 KB / Downloads: 327)

LabView ist eine Programmiersprache.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2006, 22:38
Beitrag #4

Chriz Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Nov 2005



kA



Variable zwischenspeichern
Hi,
Danke für Deine Antwort, jedoch ist der Schalter als Latch deklariert, daran kann es also nicht liegen.
Ich vermute eher dass es daran liegt, dass ich nach dem auslesen der lokalen Variable direkt eine arithmetische Operation habe (im case unten) - hab irendwo gelesen dass bei Rechnungen das Ergebniss direkt wieder an die LV zurück gegeben wird - ob das stimmt weiß ich jedoch nicht

Gruß Chriz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2006, 22:47
Beitrag #5

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Variable zwischenspeichern
nein, es wird lediglich bei der addition, das ergebnis auf den "knoten" des oberen einganges geschrieben!
sprich -> es wird eine speicherallokierung gespart, die lokale variable bleibt zur gaenze unangetastet!

geh mal auf dein frontpanel element und schau nach wo du ueberall lokale variablen als instanz vom frontpanel element verwendet hast, evtl. hast irgendwo eine lokale variable mti einer struktur ueberdeckt, oder aehnlichem...

hast dir das auch schon mal im highlightmodus mit probes angesehen?!
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2006, 22:53
Beitrag #6

Chriz Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Nov 2005



kA



Variable zwischenspeichern
So,
ich hab jetzt nochmal das gesamte VI angehängt, ich hoffe mal damit kommt Ihr besser zurecht.

Nochmal zur Erklärung: Wenn ich auf start klicke, läuft eine Achse im Adwin los, darauf hin erhöht sich der Istwert. Im gleichen Moment in dem ich jetzt aber auf start klicke, soll auch das case kurz auf true gehen und diesen aktuellen Istwert als Startwert speichern. Im unteren case wird dann einfach nur nochmal der jeweilige Istwert mit dem Startwert verglichen, die addition ist die Berechnung des Zielwertes, also Startwert plus Strecke die gefahren werden soll. Dannach kommt nur noch der Vergleich und die boolsche Opperation die bestimmt, ob die Achse den Zielwert schon erreicht hat und wieder zurück muß, oder ob sie noch weiterhin vorwärts fahren muss - is aber nicht so wichtig.

Das Problem besteht nun wie bereits gesagt darin, dass die Startposition nicht gespeichert wird, sondern mit dem aktuellen Istwert verändert wird, Startposition und Istwert sind sozugagen immer gleich obwohl der Startwert im einem case gespeichert wird, welches nichtmehr true ist!

EDIT:
oh sorry freedive, Dein posting hab ich jetzt völlig übersehen!

Im Highlight erkennt man nichts, das case zum speichern des Wertes wird auch definitiv nicht true wenn ich es nicht anklicke!

Wie meinst Du das mit dem überdecken durch eine Struktur? - die Variable wird zwar noch mehrmals im VI ausgelesen, aber garantiert nicht an einem anderen Ort geschrieben, dass hab ich schon kontrolliert!


Angehängte Datei(en)
Sonstige .vi  Modul_fahren.vi (Größe: 88,47 KB / Downloads: 296)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.01.2006, 23:04
Beitrag #7

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Variable zwischenspeichern
deine boolsche variable ist auf "schaltet, wenn" und nicht auf "latch, wenn..."
aber ob das ausschlaggebend ist, ist fraglich -> sehr verwirrend dein programm :-(

UND du solltest das anzeigelement des numerischen elements istposition in die case struktur legen,d ann wird sie net immer upgedatet!
das ist der hauptgrund fuer das fehlverhalten
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2006, 23:10
Beitrag #8

BitRechner Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jan 2006



kA



Variable zwischenspeichern
Jetzt ist die Sache schon klarer:

StartFahren ist kein Latch, sondern ein Schalter. Einmal gedrückt bleibt er immer gedrückt, und generiert damit keinen Impuls.
Der wiederum würde hier sowieso nicht helfen:
StartFahren geht über ein Oder-Glied an die Case-Structure und schlägt sich damit immer durch, egal was die ungleich-Bedingung ergibt. Das heißt beide case-Strukturen werden nur im True-Modus aufgerufen, und damit bei jedem Durchlauf ausgeführt.
Außerdem: Istposition ungleich Istposition ist immer Null
(Terminal Istposition wird mit lokaler Variable Istposition verglichen).
Tipp: Versuch, den Startwert in eine eigene Variable zu speichern.
Und: Datenfluss beachten! Oben nach unten, links nach rechts. Lokale Variablen sind, was das betrifft, nicht ganz ungefährlich.

LabView ist eine Programmiersprache.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2006, 23:14
Beitrag #9

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Variable zwischenspeichern
BitRechner schrieb:Und: Datenfluss beachten! Oben nach unten, links nach rechts. Lokale Variablen sind, was das betrifft, nicht ganz ungefährlich.

nix fuer ungut bit, aber das ist wirklich mist was du da geschrieben hast!
fuer das, dass du schon sehr viel programmiert hast und einiges an ahnung bezueglich cFP hast, war das eine sehr unkluge aussage...
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2006, 23:17
Beitrag #10

Chriz Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Nov 2005



kA



Variable zwischenspeichern
Ups, dann ist das "schalten wenn.." noch vom highlight drine - ursprünglich war es aber ein lacht.

Die Istposition hab ich extra nicht ins case genommen, damit der aktuelle Wert ständig angezeigt wird (istwert eben!)

Das mit der Anzeige im case hab ich mir auch schon überlegt, hab dann mal eine eigene Anzeige ins case gelegt (Startwert) und die Variablen im Prog dementsprechend abgeändert, nützt aber nichts - auch die Variable Startwert läuft mit!?

[quote]Istposition ungleich Istposition ist immer Null


Angehängte Datei(en)
Sonstige .vi  Modul_fahren.vi (Größe: 90,09 KB / Downloads: 231)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Wert Zwischenspeichern in Subvi Labview User 6 4.997 03.08.2016 15:03
Letzter Beitrag: Lucki
  Daten zwischenspeichern??? Spearmint 15 13.250 02.04.2014 10:36
Letzter Beitrag: JoeCain
  String zwischenspeichern floeteee 7 6.365 03.03.2014 11:02
Letzter Beitrag: Kiesch
  Datensatz mit der Queue-Funktion zwischenspeichern? LV-Fred 4 5.573 17.08.2011 07:31
Letzter Beitrag: LV-Fred
  ?Globale Variable zwischenspeichern? Kirsc 6 7.056 07.07.2011 08:46
Letzter Beitrag: THL
  Wert in Array zwischenspeichern wenn größer/ungleich 0 udcno@AL 10 10.905 18.11.2010 09:20
Letzter Beitrag: M Nussbaumer

Gehe zu: