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!
ich habe das gleiche Thema dümmlicherweise ins falsche Forum (Bugs etc., weiss der Geier wie ich da rein kam) gestellt, jetzt nochmal das gleiche Problem:
1. Anfänger
2. Typisches Problem für Anfänger: VI wird zu groß, da viele Funktionen unbekannt
3. (Meine) Lösung: SUB VI
Um der Dimension meines VI Herr zu werden, arbeite (teste) ich momentan den Einsatz von Sub VIs und globalen Variablen. Haupsächlich muss ich 12 Ventile in einem gewissen zeitlichen Rhytmus (1 min) für eine gewisse Zeit (1 h) schalten. Da die Ventile in 3 Gruppen unterteilt werden können, habe ich eine Zeitschleife mit dem Rhytmus (1 min) erstellt, je nach Schleifendurchlauf (0,1,oder 2) wird dann die entspechende Ventilgruppe geschaltet. Nach Ablauf der Laufzeit (ganz hässlich berechnet mit der Anzahl der Durchläufe einer übergeordneten Schleife) hört die Taktung auf und einer anderer Prozess wird für ca. 2 min ausgelöst. Danach soll die Taktung der Ventile wieder starten...
Diese Taktung d.h. die Generation der Zahlen 0 -2 in einem gewissen Rhytmus habe ich jetzt als SUB-VI "programmiert", die die Werte True and False in ein Cluster schreibt und dieses in eine globale Variable ballert. ....es funktioniert sogar!! (Stolz)! Im Haupt VI läuft das soweit....
Leider habe ich wegen der Schleife im SUB keinen Einfluss mehr aud das SUB . Kann ich es irgendwie stoppen und starten? Starten habe ich mit ner Case Bedingung hingekriegt, aber wenn das Ding mal läuft...
Außerdem wäre es natürlich elegant, könnte ich Einfluss auf die Taktzeit und die Gesamtlaufzeit aus dem Haupt Vi auf das SUB-VI nehmen.
Da ich letzte Zeit mehr im Forum lese als programmiere könnte ich mir denken, dass es evtl. mit Queues oder was anderes abgefahrenem funktionieren könnte. Leider checke ich die Funktionsweise der Dinger auch Anhand der Beispiele nicht wirklich (???!!!??). Anbei ein screen-shot des SUB-VI
Wäre nett, wenn mir jemand en bißchen konkreter helfen würde. Ich danke schon mal...
07.08.2006, 11:19 (Dieser Beitrag wurde zuletzt bearbeitet: 07.08.2006 11:22 von pinguin.)
wenn du dein Sub-VI z.B. schliessen moechtest, dann kannst du das mit einem Methoden-Knoten machen. Gebe in der Hilfe-Suche einfach mal "methods, VI class" ein. Auf der Hilfeseite findest du alle Moeglichkeiten, wie du ein VI mit einem Methodenknoten beeinflussen kannst. So kannst du z.B. mit "Abort VI" ein VI beenden, uabhaengig davon ob es gerade beendet wird oder noch laeuft. Auch Schleifen werde damit gestoppt bzw. abgebrochen
Vielleicht hilft dir das schon weiter ...
Viele Gruesse,
Mirko
07.08.2006, 12:35 (Dieser Beitrag wurde zuletzt bearbeitet: 07.08.2006 12:41 von Lucki.)
Ich mache es gern so: Die Werte werden an das SUB-Vi über Melder und nicht über globale Variable übergeben. Wenn Du im Haupt-Vi den Melder dann freigibst (Eliminieren=true nicht vergessen anzuschließen), dann kommt es im SUB-Vi beim nächsten Leseversuch zu einer Fehlermeldung, die man als Abbruchbedingung benutzen kann. Beigefügt ein einfachstes Beispiel.
Danke Jungs, das sind doch mal nützliche Vorschläge.
Ich habe am Freitag alles so dermaßen mit globalen Variablen gepflastert, dass es nur so kracht. Gibt wiedermal 0 Stil-Punkte, aber funktioniert überraschenderweise!
Trotzdem werde ich eure Vorschläge dankbar einbauen, ich will ja nicht ewig nur rumpfuschen...