LabVIEWForum.de - Problem mit meinem Programm und Sub-VI

LabVIEWForum.de

Normale Version: Problem mit meinem Programm und Sub-VI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo!

Ich habe ein Problem mit der Funktion meines Sub-VIs in meinem Haupt-VI.
In meinem Projekt geht es um die Steuerung von Netzteilen und Funktionsgeneratoren. Ich sende einfach Strings, welcher ein Mikrocontroller verarbeitet und damit den Funktionsgenerator steuert.
Nun hab ich schon die Steuerung der Netzteile realisiert und diese funktioniert auch. Nun bin ich gerade beim Programmieren meines Funktionsgenerator Sub-VIs, welches im Sub-VI selbst ausgeführt funktioniert. Nun will ich dieses Sub-VI (sub1_fg.vi) in meinem Hauptpanel (Remote Function Generator.vi) einbinden. Nur funktioniert das bei mir leider nicht. Das Programm hängt sich leider dauernd auf und das Problem dafür sind zu 90% die OK-Buttons für die Umschaltung zwischen den Signalformen des FGs (Sinus, Rechteck, Dreieck und TTL-Pegel).
Wie könnte ich das lösen, dass das funktioniert? Vielleicht das Schaltverhalten ändern? Oder das ganze Sub-VI komplett verändern?
Bisher hab ich auch nur beim ersten Arbeitsplatz am FG gearbeitet, also wenn ihr Arbeitsplatz 2 bis 8 anklickt, dann wird nichts im Programm passieren.

Schaut euch das ganze mal an, damit ihr mein Problem seht!

mfg Fux

Lv85_img
Offtopic
Wo ist die LV-Version deiner VI-Uploads in deinem Beitrag vermerkt? Du wurdest schon oft genug auf unsere Forenregeln hingewiesen.

Außerdem, was soll das, 11 Dateien hochladen, wie wäre es gewesen, das alles mal in einen Zip-File zu packen?

Jens
Ich habe die LV Version 8.5.
Zu deinem Problem:
Du rufst irgendwann dein VI sub1_fg.vi auf, allerdings ohne das FP dieses SubVI anzuzeigen.

Dieses VI enthält eine Event-Struktur. (Wieso überhaupt?). Jetzt wartet das VI auf ein Benutzer-Event, aber da kann ja nichts kommen. FP ist geschlossen, wie soll das VI ein Event erhalten. Also steht an dieser Stelle alles.

Über die restlichen Anfänger-Fehler, die ich so sehe, will ich mich jetzt nicht auslassen.

Gruß, Jens
Ich brauch ja gar nicht das FP dieses Sub-VIs. Die Sub-VIs sind nur dafür, dass Programmteile in Unterprogramme zusammengefasst werden. Sonst ist mein Programm so groß und unüberschaubar. Außerdem müsste ich oft das Gleiche programmieren.

Die Event-Struktur im Sub-VI habe ich deswegen, weil ich bei TTL-Pegel fixe Spannung, Offset habe. Also darf der Wert von den Drehreglern nicht angenommen werden.
Nochmal: Auf was für ein Event soll dein Sub-VI regieren? Das FP ist nicht offen. Damit bedienst du nichts. Die Event-Struktur kann also auf kein Event reagieren und wartet und wartet und wartet und wartet und wartet...

Gruß, Jens
Ich wollte das eigentlich gleich lösen wie mit den Netzteilen. Da habe ich in der Eventstruktur im Hauptprogramm bei jedem Event einen Button, durch welchen das jeweilige Event mit dem Sub-VI gestartet wird. Ebenso bei diesem Funktionsgenerator (Event #24 "Send FG1 Wertänderung") wollte ich das so lösen.
Bei der Bedienung hab ich mir das so vorgestellt:
Zuerst stelle ich mit Hilfe der Schieberegler bestimmte Werte für Amplitude, Frequenz und Offset ein und drücke auf einen der 4 Signalformbuttons. Ist die Konfiguration fertig, dann drücke ich auf den OK-Button Send FG1 und die Daten sollen auf VISA gesendet werden. Das Sub-VI (soll) reagiert auf den Druck des Buttons "Send FG1"!
@FuxDancer, vorab mal folgendes:

Ich hab mal dein MainVI angekuckt - und mir genau das gedacht: Was soll denn das mit dem String-Verknüpfen außerhalb der Event-Struktur? Dieses Element, respektive das ganze Vorgehen, ist komplett sinnfrei! Lass StringVerknüpfen einfach weg. Aus der Event-Struktur kommt ein einziger String-Tunnel heraus und geht sofort auf WISA-Wr. Alle Cases, die einen String liefern, führen diesen String über genau diesen einen Tunnel heraus.

Und das mit dem Wait im Case [22] wird so auch nichts.
Aha, verstehe.
Das mit dem Wait, das ist sowieso Müll, das hab ich e gewusst. Ich hab ja schon heute einen Thread darüber hineingeschrieben in Mikrocontroller. Ich würde einfach gerne den zweiten String in diesem Event zeitversetzt ausgeben, zuerst soll der erste gesendet werden, bis der PIC18F4550 die Daten verarbeiten kann und dann der zweite mit z.B. 1s Verspätung. Kannst du mir vielleicht da helfen, das wäre mehr wie eine große Hilfe für mich? Bitte!
Genau, dass mit dem String verknüpfen ist ja wirklich komplett umsonst. Da hast du vollkommen recht! Ich werd das auch ausbessern. Nur könntest du mir vielleicht mit dem Sub-VI von FG1 helfen, da hab ich noch viel größeren Schrott produziert, ich schäm mich e dafür!
Ich hab dir mal was reingebastelt.

Beachte anstelle der vier Buttons "Sinus", "Rechteck" etc. den Enumerator "Kurvenform".

Beachte außerdem:
Im SubVI kann man nicht auf Buttons im übergeordneten VI reagieren - zumindest nicht so, wie du das dir gedacht hast. Solche Sachen sind schon etwas komplizierter. Für deinen Anwendungsfall ist es aber ausreichend, wie ich es gemacht habe: guckst du Case [24].
Ein Event reagiert nur auf eine Änderung. In deinem Falle (also im SubVI) tritt aber nie eine Änderung auf, weil sich der Wert "Sinus" (etc.) nie ändern kann. Den hast du nämlich als Eingangsparameter gedacht - und der ist fest. Der ändert sich nämlich nicht, wenn du im übergeordneten VI "seinen" Wert änderst. In einem solchen Falle muss man die Referenz auf das Eingabeelement an das SubVI übergeben, nicht den Wert. Dann kann das SubVI den Wert über die Referenz abfragen.

Außerdem:
Da sich den den SubVIS subX_ps.vi lediglich ein einziger Wert ändert, kann man den als Parameter übergeben. Dadurch entfallen alle gleichartigen SubVIs. Der hauptsächliche Vorteil ist aber der: Wenn kein SubVI vorhanden ist, kann man auch keinen Fehler reinprogrammieren.
Seiten: 1 2
Referenz-URLs