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 

Programmablauf



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!

24.05.2013, 09:58
Beitrag #1

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 101
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
Programmablauf
Hallo,

ich hätte noch eine allgemeine Frage zu meinem Programmablauf..

Ich habe einen Schalter, um den eigentlichen Mess-Case zu starten. Darin sind verschiedene Einzelmessungen
(im Beispiel 2), die auch nochmal über einen Schieberegler aktiviert bzw. deaktiviert werden können, um nur die
benötigten Messungen durchzuführen. Die Messwerte speichere ich dann in Arrays, mit denen ich dann in einem
späteren Auswerte-Teil des Programms irgendwelche Operationen ausführe.

Momentan gehe ich über lokale Variablen vom Mess- in den Auswerte-Teil. Da dort auch While-Schleifen zum Einsatz
kommen, aktiviere ich den Auswerte-Teil über einen zusätzlichen Case, der ein True erhält, wenn der Mess-Case beendet ist.
So habe ich trotz lokalen Variablen einen definierten Ablauf meines Programms und meine While-Schleife läuft nicht unnötig.


Meine Frage ist jetzt, ob es da bessere oder elegantere Lösungen gibt. Ich habe noch nicht so viel Erfahrung mit Labview, um
das selbst beurteilen zu können und wäre deshalb für ein paar Meinungen oder Ratschläge dankbar.


Angehängte Datei(en)
11.0 .vi  ablauf.vi (Größe: 10,17 KB / Downloads: 222)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.05.2013, 10:17 (Dieser Beitrag wurde zuletzt bearbeitet: 24.05.2013 13:36 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Programmablauf
Hallo creo,

dein Beispiel-VI könnte man so vereinfachen, dass man ohne Sequenz und lokale Variablen auskommt:
   
Anmerkungen:
- Deine Berechnungs-While-Loop testete auf i == Anzahl Arrayelement: Wenn TRUE, bist du schon "aus dem Array heraus"! Nimm bei bekannter Elementeanzahl immer eine FOR-Loop! Dies gilt auch für die Messschleifen...
- Für den Fall "Messung"=False hast du keine Wartezeit und das VI verbrät unnötig CPU-Zeit...

Tipps:
- Denke über den Einsatz einer Statemachine nach (Idle, Messung, Rechnung).
- Controls haben Labels und Captions (Namen und Untertitel). Der Name sollte eineindeutig und selbsterklärend sein, das Caption ist für den User da. Deine "Namen" "ja ... nein" gehören eindeutig ins Caption!
Edit:
"ja" und "nein" kann man bei den Schaltern natürlich auch in den boolschen Text packen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.05.2013, 13:32
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Programmablauf
Die ideale Struktur für solche variablen Abläufe ist die Queued State Machine Architecture. Kannst Dich da ja mal zumindest etwas einlesen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.05.2013, 10:33 (Dieser Beitrag wurde zuletzt bearbeitet: 27.05.2013 10:38 von creo_123.)
Beitrag #4

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 101
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
RE: Programmablauf
Danke für die Tipps..

@Gerd: wenn ich das richtig sehe, sind bei deinem VI die Ausgänge der Case-Strukturen noch weiß und das heißt doch dann,
dass die im anderen Case nicht belegt sind. Ich habe da immer eine Konstante angeschlossen, um das Programm
ausführen zu können. Das Problem ist nur, dass meine Messergebnisse dann dadurch überschrieben werden, sobald der
Case wieder wechselt. Deshalb bin ich irgendwann zu den lokalen Variablen gekommen..
Was wäre denn eine sinnvolle Wartezeit für den False-Case?

@Lucki: ok, werde mich da mal einlesen. Was aber bei meinem Beispiel-Vi jetzt nicht deutlich geworden ist, ist dass die Messungen
nicht parallel laufen, sie müssen sogar nacheinander geschehen.. ist das dann immer noch der richtige Ansatz?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.05.2013, 11:43
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Programmablauf
Hallo creo,

Zitat:Was wäre denn eine sinnvolle Wartezeit für den False-Case?
Das hängt davon ab, wie schnell du mit der Maus klicken kannst. Üblicherweise sind 100ms-Wartezeiten schnell genug...

Zitat:wenn ich das richtig sehe, sind bei deinem VI die Ausgänge der Case-Strukturen noch weiß
Das siehst du NICHT richtig: die sind jetzt "Default if unwired"...
Wenn deine Messung nicht aufgerufen wird, wird auch die Berechnung nicht aufgerufen. Also ist es dann auch egal, was in den Messdaten-Drähten für Werte ankommen...

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
  Zugversuch - Oberfläche: Programmablauf? _Markus_ 1 2.572 19.11.2019 13:47
Letzter Beitrag: GerdW
  Längere Wartezeit im Programmablauf quattro888 5 4.323 21.05.2019 14:26
Letzter Beitrag: quattro888
  ProgrammAblauf Andy4u 2 5.627 23.05.2011 09:28
Letzter Beitrag: Andy4u
  Werte während Programmablauf abfragen/nachtragen Nele08 2 5.045 04.04.2011 12:21
Letzter Beitrag: Nele08
  Enum aus Programmablauf generieren andimtb 3 7.122 07.03.2010 22:45
Letzter Beitrag: schrotti
  Sub-VI's für stabileren Programmablauf?! Striggi 20 12.898 23.11.2009 15:48
Letzter Beitrag: M Nussbaumer

Gehe zu: