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 

While-Schleife sofort beenden ?



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!

04.10.2019, 15:04 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2019 15:20 von GerdW.)
Beitrag #16

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: While-Schleife sofort beenden ?
Hallo Robert,

Zitat:zur Zeit hab ich mid den alten Sub-vi's noch probleme,
Ich habe mal exemplarisch Referenzfahrt2 geöffnet und leicht bearbeitet:
   
Durchgeführte und noch nötige Änderungen:
- unsinnige zweite While-Loop entfernt: nutze den Error-Wire für den DATAFLOW!
- wieso war "Numerisch" ein float-Wert, wenn du hier nur einen I32 bekommst? Warum hat dieses Control keinen aussagekräftigen Namen, wie z.B. "Current position"?
- wieso hieß der "error in" bei dir noch "error out"?
- wieso gibt es keinen "error out"?
- was passiert, wenn es bei "BrickletIO16V2/GetValue" einen Fehler gibt? Antwort: dann wird die Schleife NIEMALS enden! Ergo: Es fehlt Errorhandling!
- Muss der Stepper wirklich mehrfach gestartet werden, bis du den richtigen Wert vom IO bekommst? Würde es nicht ausreichen, den Stepper einmal vor der Schleife zu starten?
- Muss die Schleife so schnell wie möglich arbeiten?
- Das VI hat noch kein aussagekräftiges Icon. (LabVIEW-Hilfe -> StyleGuide)
- Es fehlen Kommentare im Blockdiagramm, ebenso in der VI-Beschreibung. (LabVIEW-Hilfe -> StyleGuide)
- Für die Anschlüsse im ConnectorPane gibt es einen Standard: Referenzen links/rechts oben, ErrorIO links/rechts unten. Schau dir mal die LabVIEW-eigenen Funktionen an… (LabVIEW-Hilfe -> StyleGuide)

Problem im HauptVI:
Du öffnest eine IPConnection und nutzt diese dann, um diese ganzen Bricks anzusprechen. Dann startest du deine Statemachine. Bis hier ist noch alles ok.
Aber: Parallel zur Statemachine schließt du die Referenz auf ein Relay und auf die IPConnection: ist das gewollt? Ist das ok?
(Auch hier: THINK DATAFLOW!)
Einfache Lösung des Problems: erstelle einen State, in dem alle Referenzen initialisiert werden. Und einen State, wo alles ordentlich geschlossen wird.
Der eine State wird als erstes aufgerufen, der andere als letzer…

Zum subVI "Referenzfahrt1":
   
- Ich habe mal die Rechnung mittendrin angepasst. Was du vorher hattest, nennt man Rube-Goldberg…
- Auch hier wird der Stepper ständig neu gestartet: soll das so sein?
- Reagiert der Stepper sinnvoll, wenn er so schnell auch wieder disabled wird?
- Auch diese Schleife läuft noch so schnell es nur geht…
Edit:
   
Habe meinen eigenen Rube-Goldberg noch entfernt…

Zum BrickletIO:
Du scheinst sehr oft und in vielen Schleifen und evtl. öfter nur auf einzelne Bits dieses BrickIOs zuzugreifen. Ich halte es deshalb für sinnvoll, diesen IO in einer parallelen Schleife zu lesen und den aktuellen Status der IO-Bits in einer globalen Variablen/Notifier/FGV (aka AE) abzulegen. Jede andere Schleife kann dann den jeweils aktuellen Status dort abfragen, ohne dass ständig die Hardware mit Abfragen bombardiert wird.
(Ich bin ein großer Freund von parallel laufenden VIs, die sich um jeweils eine Hardware kümmern: ein VI für digitale IO, eines für Analog-In, eines für Analog-out, usw. Alle legen ihren Status in global erreichbaren Datenstrukturen ab und bekommen ihre Befehle (falls nötig) per Queue. Eine Statemachine kümmert sich dann nur noch um Verwaltungskram und "Abläufe", aber nicht direkt um Hardware-Zugriffe…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RE: While-Schleife sofort beenden ? - GerdW - 04.10.2019 15:04

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Asynchrone VIs mit Event Struktur sofort beenden Kiesch 4 1.524 26.04.2024 10:29
Letzter Beitrag: Kiesch
  Case Struktur 2 Schleifendurchläufe verzögert True setzen aber sofort auf False bachatero18 4 4.735 07.11.2020 14:08
Letzter Beitrag: Martin.Henz
  Schleife sofort beenden mprocket 9 5.966 19.01.2018 23:26
Letzter Beitrag: mprocket
  While Schleife durchläuft ein zweites mal nach beenden p4tti 5 4.428 15.09.2016 10:34
Letzter Beitrag: jg
  Schleife nach Pop-Up beenden TDO 6 5.220 16.02.2016 09:59
Letzter Beitrag: TDO
  While Schleife mit Mausklick beenden eincremerle 3 3.522 10.11.2015 07:53
Letzter Beitrag: eincremerle

Gehe zu: