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 

First Call? Funktion vs wann gibt mein Case false aus?



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!

23.01.2014, 13:59
Beitrag #1

anne Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jan 2014

10.0.1
2013
DE


Deutschland
First Call? Funktion vs wann gibt mein Case false aus?
Liebe Community,

ich habe momentan das Problem, dass mein Programm irgendwann aufhört Messergebnisse ins Excel wegzuschreiben. Das kommt mal nach 20 Min vor, manchmal aber auch erst nach 2h und die angesammelten Datenmengen sind auch vollkommen unterschiedlich. Es ignoriert sogar, wenn der Datasocket zwischendurch mal anstürzt und schreibt einfach munter weiter.

Deshalb dachte ich mir, dass evtl irgendwann dem Schreib-VI das Schreibrecht dauerhaft entzogen wird. Deshalb hänge ich euch einen Ausschnitt des VIs an, dass Schreibrecht vergibt. Da ich diesen Teil nicht selbst programmiert habe, fällt es mir momentan noch etwas schwer das alles nachzuvollziehen. Dazu hänge ich noch die Memory Latch Funktion an.

Während des kompletten ersten Schleifendurchlaufes bleibt first call true oder wird es auch während eines Schleifendurchlaufes mehrmals angesprochen? Wann wird es überhaupt false? Dieses Sub-VI wird ja dann kurze Zeit später erneut ausgeführt, da das Hauptprogramm kontinuierlich läuft, da müsste first call aber doch wieder true sein oder "weiß" das Sub-VI dass es schon einmal lief und gibt dann false aus?

Generell zerbreche ich mir etwas den Kopf darüber, wann der gelb markierte Ausgang false sein kann. So richtig Durchblick habe ich leider noch nicht und dass ich diesen first call nicht 100%ig verstanden habe, kann ich mich auch nicht sicher da durch hangeln.
Könnt ihr mir damit bitte helfen?

Vielen Dank!


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.01.2014, 14:51
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
Ich habe jetzt nicht den Nerv, mich durch deine T/F Logik auf Grund des Screenshots durchzuarbeiten, aber zur Klarstellung der Funktion "First Call?":
Diese Funktion gibt nur 1x TRUE aus, und zwar bei ihrem ersten Aufruf, solange das Programm läuft. Die Funktion "weiß" also, dass z.B. ein SubVI ein 2. Mal aufgerufen wurde.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.01.2014, 15:00
Beitrag #3

anne Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jan 2014

10.0.1
2013
DE


Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
Hallo Jens,

danke für die Antwort. Genau diese T/F-Case-Schleifen-Rückkopplungs-Logik raubt ja auch gerade mit den letzten Nerv. Macht's mir als "Neuling" nicht besonders leicht verständlich leider.

Wird die Funktion denn überhaupt mehrfach aufgerufen, wenn die Schleife einmal durchläuft? Also wenn an dem markierten Eingang ein Array mit - sagen wir mal - 2 Elementen ankommt. Dann müsste doch der first call einmal aufgerufen werden und das Ergebnis von Memory Latch am Schleifeneingang anliegen. Liegt dieser denn dann aber nicht "fest" an, auch wenn die Schleife jetzt noch die zweite/finale Iteration macht und somit erst danach über die Rückkopplung neue Eingangswerte am Memory Latch ankommen?

Ich hänge das VI auch mal an, viel mehr als im Screenshot kommt da allerdings auch nicht mehr.


Angehängte Datei(en)
10.0 .vi  MonitSWITCH_2012.01.10.vi (Größe: 35,79 KB / Downloads: 169)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.01.2014, 15:25
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
THINK Dataflow! Der Draht ist der Speicher bzw. Wert.
Wenn das "Memory Latch" SubVI 1x ausgeführt wurde und der Ausgang (Boolean) dann an eine FOR-Schleife per Draht weitergebenen wird, dann ändert sich der Wert in der For-Schleife natürlich NICHT.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.01.2014, 15:40
Beitrag #5

anne Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jan 2014

10.0.1
2013
DE


Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
Aber während das Sub-VI einmal durchläuft, sprich die Schleife den ganzen Datensatz abklappert, ist first call die GANZE Zeit true? Wirklich erst dann, wenn das VI erneut, mit einem neuen Datensatz angesprochen wird, schaltet es auf false? Das ist das kleine Detail, das mir noch nicht ganz klar ist. Mich verwirrt da nämlich die Kontexthilfe "Zeigt an, wenn ein Sub-VI oder Blockdiagrammabschnitt das erste Mal abläuft." An der Stelle frage ich mich eben, ob das wirklich nur EINMAL der Fall ist, wenn ein neuer Datensatz durch die Schleife läuft. Dann würde ja auch Memory Latch noch einmal ausgeführt werden. Ich denke mir schon selbst, dass das Kappes ist. Dann würde es ja eine Schleife ausführen, ohne in einer zu liegen. Ich will mich da nur vergewissern. Sorry, dass das vllt auf den ein oder anderen ziemlich stumpf wirkt, aber mir muss eben 100% klar sein, wann der Schleifenausgang false ist zwecks Schreiberlaubnis...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.01.2014, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2014 16:04 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
Hallo Anne,

Zitat:Aber während das Sub-VI einmal durchläuft, sprich die Schleife den ganzen Datensatz abklappert, ist first call die GANZE Zeit true?
Im oben angehängten VI wird "First Call" einmal aufgerufen und gibt seinen Wert an ein (nicht beigefügtes) subVI. Wie sollte sich dieser Wert jetzt im subVI ändern? THINK DATAFLOW!

Zitat:An der Stelle frage ich mich eben, ob das wirklich nur EINMAL der Fall ist, wenn ein neuer Datensatz durch die Schleife läuft.
Wieso?
Die Hilfe sagt klar (sinngemäß): "wenn ein Codeabschnitt das erste mal aufgerufen wird" und nicht "wenn neue Daten ankommen"...

Zitat:ber mir muss eben 100% klar sein, wann der Schleifenausgang false ist zwecks Schreiberlaubnis...
Genau dafür gibt es Debugging-Tools wie Sonden, Highlighting, Breakpoints und step-by-step...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.01.2014, 16:12 (Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2014 16:13 von anne.)
Beitrag #7

anne Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jan 2014

10.0.1
2013
DE


Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
Hallo Gerd,

das Sub-VI Memory Latch ist im Originalpost als Screenshot angehängt und ja wirklich so simpel, dass ich das nicht noch einmal als VI angehängt habe.

Debugging kann ich momentan eben nur Offline machen, was das ganze etwas verkompliziert. Das Hauptprogramm wird am Fahrstand genutzt, weshalb ich da momentan nicht drin rumfummeln kann bzw es nicht ausführen kann. Ansonsten würde ich da schon lange mit alles Debugging-Hilfen sitzen, die LabView anbietet Wink

Aber ich verstehe euch jetzt einfach mal so: Ich starte das Programm, der first call wird ein einziges Mal das erste Mal ausgeführt - was die Schleife macht ist dann vollkommen egal bis diese abgeschlossen ist. Wenn diese abgeschlossen ist, wird first call erst jetzt wieder aufgerufen und schaltet dann auf false um.

Sorry für's in den Wahnsinn treiben - das VI verknotet mir mein Hirn.

VG
Anne


Angehängte Datei(en)
10.0 .vi  MemoryLATCH.vi (Größe: 13,51 KB / Downloads: 187)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.01.2014, 16:14
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
Hallo Anne,

jetzt hast du es (hoffentlich) verstanden! Smile

Zitat:das VI verknotet mir mein Hirn.
Wieso? "TRUE on first call"…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.01.2014, 19:31
Beitrag #9

anne Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Jan 2014

10.0.1
2013
DE


Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
Hallo Gerd,

ja, hab's verstanden und zu allem Überfluss war das Problem viel simpler als ich dachte. Eine VI-Einstellung geändert (die ich vorher noch nicht kannte) und alles lief wie am Schnürchen!

Mit dem Verknoten meinte ich auch nicht das Memory Latch, sondern das MonitSwitch-VI.
Aber jetzt passt alles.

Danke für eure Hilfe Jens und Gerd!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.01.2014, 19:36
Beitrag #10

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: First Call? Funktion vs wann gibt mein Case false aus?
(23.01.2014 19:31 )anne schrieb:  ja, hab's verstanden und zu allem Überfluss war das Problem viel simpler als ich dachte. Eine VI-Einstellung geändert (die ich vorher noch nicht kannte) und alles lief wie am Schnürchen!
Ein Forum lebt von Nehmen und Geben. Also, was hast du geändert? Und wieso? Vielleicht ist es wichtig!

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
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
  Case-Struktur: Angegebener Case nicht vorhanden braendy 10 6.833 02.02.2021 15:05
Letzter Beitrag: Lucki
  Case Struktur 2 Schleifendurchläufe verzögert True setzen aber sofort auf False bachatero18 4 5.700 07.11.2020 14:08
Letzter Beitrag: Martin.Henz
  Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array? TpunktN 9 9.915 28.01.2020 14:14
Letzter Beitrag: TpunktN
  Event Case Ignoriert Tastendruck wenn in Gegenwart eines anderen "Leeren" Event Case Ksanto 8 8.258 23.10.2017 09:08
Letzter Beitrag: Ksanto
  Case-Struktur führt True und False aus (Ereignisschleife) HIMI 11 9.088 24.08.2017 13:04
Letzter Beitrag: HIMI
  Wann setze ich Reference, Local Variable und Property Node ein galilio 6 9.610 18.03.2016 01:08
Letzter Beitrag: Trinitatis

Gehe zu: