25.10.2011, 21:06
(Dieser Beitrag wurde zuletzt bearbeitet: 26.10.2011 09:16 von jg.)
Beitrag #1
|
Hummingbird
LVF-Gelegenheitsschreiber
Beiträge: 52
Registriert seit: Sep 2011
LV 2011
2009
EN
Deutschland
|
Serielle Ereignisstruktur-Variablen in Ereignisstruktur übergeben
Hallo Freunde,
ich brauche mal wieder Rat. Ich habe jetzt ein Programm, das funktioniert.. Möchte das aber noch bisschen aufmotzen (anschaulicher gestalten). Hierzu möchte ich das Frontpanel tunen. Im Moment habe ich.. Input->Output.. Will jetzt aber die einzelnen Schritte mit Aufforderungen am Frontpanel verbinden. Was macht da mehr Sinn? Ereignisstruktur, oder auf Frontpaneleingabe warten? Ich denke mir, dass das letztere wohl weniger Speicher frisst. Ich habe nun aber auf jeden Fall eine Ereignisstruktur im System, da ich gerne die Timeout-Funktion nutzen möchte. Wenn ich jetzt in meinen ersten case der Ereignisstruktur (o-ter ist time out) eine Flat-Sequence Struktur packe und das mit einer "true-false" Abfrage eines Schalters verbinde, dann rennt Labview auf Knopfdruck los, stoppt aber selbst dann bei dem erreichen des zweiten Fensters der Flat-Sequence nicht, wenn ich hier einen "auf Frontpanel-Eingabe warten" Baustein einfüge. Hier verknüpfe ich die "auf Frontpanel-Eingabe warten" funktion mit einer True-False Wertänderung, die ich in das zugehörige Fenster der Flat-Sequence packe, doch das wird einfach übergangen..
Ist die Alternative eine Ereignisstruktur in einer While-Schleife mit Schieberegistern (übergeben von Werten)? Ich hätte gerne eine serielle Ereignisstruktur. Aktion eins liest ein File ein.. Ruhe.. Knopf zwei löst einen Verarbeitungsschritt aus.. Ruhe.. Eingabe Feld nimmt Werte von Benutzer auf.. Ruhe.. Knopf verwertet die Eingabe mit den bestehenden Daten.. Ausgabe in Datei, oder Grafik.. So wie ich mir das mit der While Schleife vorstelle, läuft das dann immer im Hintergrund und frisst Leistung.. Hab schon gefunden, dass mehrere Ereignisstrukturen ein NoGo sind..
Würde gerne ein Beispiel posten, doch hab auf meinem Notebook kein Labview installiert..
Vielen Dank für eure Zeit..
|
|
|
26.10.2011, 07:06
Beitrag #2
|
M Nussbaumer
Zarathustra
Beiträge: 654
Registriert seit: Sep 2009
2009 SP1
2009
EN
6300
Schweiz
|
RE: Serielle Ereignisstruktir-Variablen in Ereignisstruktur übergeben
(25.10.2011 21:06 )Hummingbird schrieb: Hallo Freunde,
ich brauche mal wieder Rat. Ich habe jetzt ein Programm, das funktioniert.. Möchte das aber noch bisschen aufmotzen (anschaulicher gestalten). Hierzu möchte ich das Frontpanel tunen. Im Moment habe ich.. Input->Output.. Will jetzt aber die einzelnen Schritte mit Aufforderungen am Frontpanel verbinden. Was macht da mehr Sinn? Ereignisstruktur, oder auf Frontpaneleingabe warten? Ich denke mir, dass das letztere wohl weniger Speicher frisst. Ich habe nun aber auf jeden Fall eine Ereignisstruktur im System, da ich gerne die Timeout-Funktion nutzen möchte. Wenn ich jetzt in meinen ersten case der Ereignisstruktur (o-ter ist time out) eine Flat-Sequence Struktur packe und das mit einer "true-false" Abfrage eines Schalters verbinde, dann rennt Labview auf Knopfdruck los, stoppt aber selbst dann bei dem erreichen des zweiten Fensters der Flat-Sequence nicht, wenn ich hier einen "auf Frontpanel-Eingabe warten" Baustein einfüge. Hier verknüpfe ich die "auf Frontpanel-Eingabe warten" funktion mit einer True-False Wertänderung, die ich in das zugehörige Fenster der Flat-Sequence packe, doch das wird einfach übergangen..
Ist die Alternative eine Ereignisstruktur in einer While-Schleife mit Schieberegistern (übergeben von Werten)? Ich hätte gerne eine serielle Ereignisstruktur. Aktion eins liest ein File ein.. Ruhe.. Knopf zwei löst einen Verarbeitungsschritt aus.. Ruhe.. Eingabe Feld nimmt Werte von Benutzer auf.. Ruhe.. Knopf verwertet die Eingabe mit den bestehenden Daten.. Ausgabe in Datei, oder Grafik.. So wie ich mir das mit der While Schleife vorstelle, läuft das dann immer im Hintergrund und frisst Leistung.. Hab schon gefunden, dass mehrere Ereignisstrukturen ein NoGo sind..
Würde gerne ein Beispiel posten, doch hab auf meinem Notebook kein Labview installiert..
Vielen Dank für eure Zeit..
Dein Programm hält nicht an, weil es in den Timeout-Case läuft worin sich jedoch mit ziemlich grosser Sicherheit kein "Warten auf Frontpanel-Veränderung" befindet.
Wenn du schon eine Eventstruktur hast würde ich garantiert zu 90% keine "Warten auf Frontpanel-Veränderung" (du meinst schon das VI oder?) verwenden, einfach weil die Eventstruktur das zuverlässig löst.
Die einfachste Lösung wäre, deinen Timeout-Case in eine separate Schleife auszulagern. Ob dies möglich ist kann ich leider ohne Code schlecht beurteilen... Was läuft denn im Timeout-Case genau ab?
Ohne Timeout-Case wartet die Eventstruktur nämlich ab bis ein Event ausgelöst wird. Genau das was du willst. Zumindest hab ich das beim Lesen deiner Anforderung rausgelesen
Für deine Anforderung würde sich eine State-Machine mit Ablauf
Aktion 1 -> Auf Event Warten -> Aktion 2 -> Auf Event warten -> ect.
anbieten, dafür wäre es interessant zu wissen ob die verschiedenen Aktionen auch alle eine Aktion des Users vorraussetzten oder auch programmatisch gelöst werden ohne "Fremdeinwirkung"
Hoffe das hilft dir weiter!
Gruss Marc
|
|
|
26.10.2011, 08:44
Beitrag #3
|
|
|
26.10.2011, 09:12
Beitrag #4
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Serielle Ereignisstruktir-Variablen in Ereignisstruktur übergeben
Hallo Humming,
bitte nach LV2009 konvertieren...
|
|
|
26.10.2011, 12:09
Beitrag #5
|
|
|
26.10.2011, 13:50
Beitrag #8
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Serielle Ereignisstruktur-Variablen in Ereignisstruktur übergeben
Hallo Humming,
du fragst nach einer "Event-driven Statemachine".
Deine Events erzeugen Kommandos für eine Statemachine, die dies dann abarbeitet.
Also z.B.:
- ArrayMax bestimmen
- Pfad abfragen
- Datei speichern
- TimeOut/Idle/Warten
|
|
|
26.10.2011, 15:09
Beitrag #9
|
Hummingbird
LVF-Gelegenheitsschreiber
Beiträge: 52
Registriert seit: Sep 2011
LV 2011
2009
EN
Deutschland
|
RE: Serielle Ereignisstruktur-Variablen in Ereignisstruktur übergeben
Hallo GerdW,
läuft das in der State Machine dann so, dass ich sobald ich in den ersten Case springe ich hier Daten erzeuge, die dann über das Schieberegister jedem weiteren Case zur Verfügung stehen und somit das Programm dann mit den Daten auf die nächste Usereingabe wartet?
Liebe Grüße
|
|
|
26.10.2011, 15:16
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Serielle Ereignisstruktur-Variablen in Ereignisstruktur übergeben
Hallo Kolibri,
genau so würde ich deine Anfrage umsetzen
|
|
|
| |