LabVIEWForum.de - Übergeordnete Funktion

LabVIEWForum.de

Normale Version: Übergeordnete Funktion
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,
erstmal der Hintergrund:
Ich habe eine Hauptprogramm geschrieben, welches viele SubVIs beinhaltet. In diesem Programm geht es um Temperaturen bei bestimmten Verhältnissen auszulesen.

Nun meine Frage:
Gibt es eine Möglichkeit so eine Art übergeordnetes SubVI zu schreiben, um eine Temperaturgrenze als Absicherung zu setzen?

Bsp:
Die kritische Temperaturabfrage findet immer alle 5min statt (egal wo ich mich gerade im Hauptprogramm befinde!!!). Wenn Temperatur ok ist, soll das Programm fortfahren. Wenn nicht sofort abbrechen, oder Gegenmaßnahmen einleiten.


Ich hoffe man kann aus meinen Erklärungen entnehmen, um was es sich handelt.

MfG Joe
Nicht alles ganz klar. Wie ist dein Hauptprogramm aufgebaut? Kannst du es überhaupt an jeder Stelle abbrechen? Hast du eine State Machine? Müssen diese 5 Minuten genau eingehalten sein? Hast du mehrere parallele Schleifen im Programm oder nur eine Hauptschleife?
Mein erster Vorschlag wäre ein VI zur kritischen Messung zu erstellen und dieses in eine Case-Struktur in einer parallele While-Schleife setzen. Diese While-Schleife wird z.B. jede Sekunde ausgeführt, aber nicht das VI in der Schleife. Erst, wenn 5 Min. vorbei sind, wird das VI ausgeführt und abhängig vom Resultat der Messung wird ein Event ausgelöst, der die Hauptschleife z.B. abbricht.
Um genaueres zu raten musst du mehr über deine Vorgehensweise sagen und evtl. noch Screenshot deines HauptVIs hier posten.
' schrieb:Nicht alles ganz klar. Wie ist dein Hauptprogramm aufgebaut? Kannst du es überhaupt an jeder Stelle abbrechen? Hast du eine State Machine? Müssen diese 5 Minuten genau eingehalten sein? Hast du mehrere parallele Schleifen im Programm oder nur eine Hauptschleife?
Mein erster Vorschlag wäre ein VI zur kritischen Messung zu erstellen und dieses in eine Case-Struktur in einer parallele While-Schleife setzen. Diese While-Schleife wird z.B. jede Sekunde ausgeführt, aber nicht das VI in der Schleife. Erst, wenn 5 Min. vorbei sind, wird das VI ausgeführt und abhängig vom Resultat der Messung wird ein Event ausgelöst, der die Hauptschleife z.B. abbricht.
Um genaueres zu raten musst du mehr über deine Vorgehensweise sagen und evtl. noch Screenshot deines HauptVIs hier posten.

So habe nun ein Screenshot eingefügt. Wie man sieht habe ich nur eine Schleife. Die kritische Funktion sollte auch erst eingreifen, wenn das SubVI "Datei.Speichern" (das ist die große Case-Struktur ausgeführt wird.). Das SubVI "Datei.Speichern" besteht eigentlich nur aus mehreren ineinanderverschachtelten for-Schleifen, die nach und nach abgearbeitet werden. Hier befindet sich keine While-Schleife im Innern.

Zu deinen Fragen:
1.Hauptprogramm ist unten als Scrennshot.
2.Das weiß ich nicht. Aber ich würde gerne an jeder beliebigen Stelle abbrechen wollen.
3.State-Maschine kenn ich nicht. Ich denke, ich habe auch bis jetzt keine eingebaut.
4.Die 5 Minuten sind nur ein Beispielwert. Müssen auch nicht genau eingehalten werden, denn die Temperaturentwicklung ist sehr langsam.
5.Insgesamt habe ich mehrer While-Schleifen im Programm. Doch wie gesagt, bei SubVI "Datei.Speichern" habe ich keine While-Schleife mehr. Parallele While-Schleifen habe ich gar keine.


Wie meinst das mit der Parallel-Schleife? Kannst du kurz ein Beispiel erstellen?
Wenn ich dich recht verstehe, müsste ich ja meine kritische While-Schleife in die große Case-Struktur (siehe Scrennshot) einbauen. Ist das richtig so?

Mfg Joe

LV8.5
Also:

1. mache nur eine While-Schleife, das sollte für dein Prog reichen
2. vermeide mehrere Event Strukturen in einem VI, sehr gefährlich
3. deine grosse Case-Struktur kannst du eigentlich direkt in das "Datei erstellen" case setzen, wenn es nur dort ausgeführt werden soll.

Du kannst leicht in eine Event Struktur mehrere Events einfügen, dazu Rechtsklicke und Add Event.. auswählen.
Unten ein Beispiel. Wenn du soweit bist, schauen wir weiter.
Hi,
etwas Offtopic
' schrieb:2. vermeide mehrere Event Strukturen in einem VI, sehr gefährlich
warum? und können dann 2 cases gleichzeitig eintreten?

mfg jeffrey
' schrieb:Hi,
etwas Offtopic

warum? und können dann 2 cases gleichzeitig eintreten?

mfg jeffrey


Hmm, wann brauchst du denn sowas? Ich habe es noch nie gebraucht.
' schrieb:Hmm, wann brauchst du denn sowas? Ich habe es noch nie gebraucht.

hi,
vermutlich kann man das auch immer umgehen. aber was mich eigentlich interessiert, warum man nicht mehrere eventsstrukturen verwenden soll. wo ist da das problem, oder welche fehler können auftreten?
mfg jeffrey

edit: was passiert, z.b. wenn mehrere ereignisse mit wertänderung abgefragt werde. diese änderungen aber gleichzeitig auftreten können, weil sie gleichzeitig aus der messung eingelesen werden. werden dann trotzdem alle abgearbeitet'?
' schrieb:edit: was passiert, z.b. wenn mehrere ereignisse mit wertänderung abgefragt werde. diese änderungen aber gleichzeitig auftreten können, weil sie gleichzeitig aus der messung eingelesen werden. werden dann trotzdem alle abgearbeitet'?

Irgendwann hängt sich in so einem Fall dein Programm auf, weil es einfach nicht weiß, wie es weitergehen soll...oder weil "gegensätzliche" Befehle abgearbeitet werden...oder weil eine Struktur auf das Ergebnis der anderen wartet...oder...

Prinzipiell kann man so viele Eventstrukturen in einem VI verwenden wie man will...man darf sich dann bloß nicht über unerwartetes Verhalten wundern!

Man kann IMMER ALLE Events in einem VI mit einer einzigen Eventstruktur abhandeln...eine zweite (dritte, vierte..) ist einfach unnötig, fehlerträchtig und zeugt von wenig Übersicht des Programmierers über seine SW...'nuff said!

A.
Steht irgendwo in der LV-Hilfe bei den Guidelines zur Event-Structure:

Sinngemäß: Don't use more than one Event-Structure in one loop.

Erfahrung zeigt: Man handelt sich in der Regel irgendwo ein Lockup des FP oder Ähnliches ein, da 2 Event-Strukturen gleichzeitig irgendwo auf ein Event warten. Und wie Eugen auch schon sagt, brauchen tut man es eigentlich nicht!

Es gibt auch immer mal wieder Ärger, wenn man 2 Event-Structures in einem VI (aber in 2 Loops) verwenden will.

Deshalb die generelle Empfehlung, um sich unnötigen Ärger zur ersparen: 1 Event-Structure pro VI (und man hat Ruhe).

MfG, Jens

EDIT: @Achim: Na, da sind wir ja mal wieder einer MeinungHehe
Hallo Jungs,
so ich habe nun einiges am Programm geändert und es sieht nun folgendermaßen aus:

LV8.5
[attachment=10990]

Wie soll ich nun weiter vorgehen???

Gruß Joe
Seiten: 1 2
Referenz-URLs