Hui, daß der Thread solche Resonanz auf sich zieht hätt' ich nicht gedacht.
Aber diskutiert ruhig weiter, da ich für jeden Erfahrungsratschlag dankbar bin. Mehr als ein Netzteil steuern und eine DAC-Karte (Keithley KPCI 3116) auslesen kann ich ja eh noch nicht. Und da das Projekt noch in den Kinderschuhen steckt ist es eh sinnvoll auf eure Tipps zu hören. Letztlich programmiert es sich so sogar schneller, das Programm läuft stabiler und wenn mein Nachfolger es mal anschaut bekommt er auch keinen Schreck...
@abrissbirne: Das mit der state machine klingt sehr gut. Hast Du da evtl. mal ein Beispiel zu? Laufen die sub-VIs dann quasi die ganze Zeit und werden nur "an und ausgeschaltet"? Wäre ja im Prinzip das, was Lucki auch beschreibt (Initialisieren/Schließen) - dann hätte ich das sogar mal verstanden
@TSchAC: Auch von Dir würd ich ja zu gern mal ein Bild sehen - klingt nach echt sauberem Programmieren
. Ja, da bin ich leider noch weit von entfernt. Wie meinst Du das mit "Datenfluss über Errorline steuern"? Soll ich jedem sub-VI ein IF und ne Adresse verpassen und für die Auswahl es mit an die Errorline legen?
@Lucki: Tut mir leid aber mit den perversen Sequenzen triffst Du sogar voll ins Schwarze. Soll ich verraten, wer mich verdorben hat? Der Onkel Testpoint war's
. Und es ist tatsächlich so, daß man die größeren Programme dort recht schnell selbst nicht mehr durchblickt. Die Möglichkeit, in LabVIEW da alles in sub-VIs zu zerlegen ist daher IMHO ein Segen. Die Frage ist nur, wo man die Grenze zieht. Das Netzteil-VI ist nun schon ziemlich groß und ich gebe zu, auch sequentiell aber wenn man es "ein und ausschalten" könnte bräuchte ich eh keine Angst vor Kollisionen auf dem RS232 haben. "Netzteil an" und "Netzteil aus" habe ich eh schon als suv-VIs liegen. Auch der Stellwert wird extern berechnet. Die ursprüngliche Frage war dann ja bloß, wie weit ich die Kommunikation zerlegen sollte und wie die einzelnen Schritte aufgerufen werden. Dazu hatte ich sowas wie "push" im Testpoint vermisst, was halt ein sub einmalig aufruft. Deinem Statement entnehme ich aber, daß es genau diese Funktion aus gutem Grund nicht gibt, weil man damit serielle Programmierung provoziert.
Den eigentlichen Programmablauf später mit einer state machine zu realisieren ist IMHO eh die einzig sinnvolle Lösung. Einfach nen Zähler laufen lassen, der am Ende jedes Programmteils um eins erhöht wird. Die werden z.B. per Ring-Objekt im Mainscreen ausgewählt. Die Schleife guckt dann nur noch, was im X'ten Ring ausgewählt wurde und startet das entprechende sub, bis irgendwann in einem davon "Ende" ausgewählt wurde. Müßte so klappen, oder?!
Gruß,
Dennis