Hallo K2000,
Zitat:Ich füge mal mein Daten lesen, Daten berechnen, und Daten speichern SubVi an. Die beiden SubVi zur Speicherung der Daten sind prinzipiell identisch aufgebaut, nur mit anderen Namen. Ich füge auch mal das HauptVi ein, was zwar noch nicht funktioniert aber damit ihr vielleicht etwas besser sehen könnt was ich meine.
Ick gloob ick spinne…
Wenn du mehrere VIs in einem Projekt verwalten willst, dann solltest du auch ein LabVIEW-Projekt anlegen/verwenden. Wo ist deine lvproj-Datei?
VIs mit Datum und "subVI" im Namen zu benennen finde ich sehr lästig. Warum nicht einfach ein Schema wie "Projektkürzel_Berechnung Daten.vi"?
Wenn du schon VIs anhängst, dann sollten sie auch so benannt sein, wie sie im MainVI erwartet werden!
Wenn du mehrere VIs/Dateien anhängst, dann machst du dir und uns die Arbeit leichter, wenn du alles in einem ZIP verpackst!
Und dann bitte auch gleich das komplette Projekt (bzw. dessen Ordner) in das ZIP packen!
Anstatt im Blockdiagramm die sehr langen VI-Namen anzeigen zu lassen, solltest du eher mal vernünftige VI-Icons erstellen - dann brauchst du diese langen Namen nicht anzeigen zu lassen! (Styleguide/Software-Dokumentation!)
Und:
Wenn du über die Datumsangabe eine Versionierung deiner Softwareentwicklung vornehmen willst, solltest du gleich mal über ein SCC-Tool (Source Code Control) nachdenken!
Zu den VIs selbst:
Viele unserer Vorschläge hast du noch nicht umgesetzt.
Manches wird nicht besser:
Cluster immer typdefinieren. In Cluster, die zur Datenweitergabe zwischen subVIs genutzt werden, gehört mMn keine Grafik…
Wozu überhaupt diese Cluster? Im DatenEinlesen-subVI wird ein Array eingelesen und in einen Cluster umgewandelt. Im Speichern-VI wird dieser Cluster dann wieder in ein Array umgewandelt, um die Textkonvertierung zu vereinfachen…
Wozu muss man ein leeres Array initialisieren, um dann mittels InsertIntoArray Elemente einzufügen? Wenn du ein Array bauen willst, dann verwende einfach BuildArray!
Wozu muss man ein Array aus Stringkonstanten zusammenbauen, wenn man auch einfach eine "Array of String"-Konstante ins Blockdiagramm packen könnte?
Viel zu viele Sequenzstrukturen! Die sind (fast) immer unnötig, wenn man THINK DATAFLOW! beachtet!
Öfter mal Autocleanup benutzen!
Der Standard-Connectorpane ist das 4-2-2-4-Muster, wenn du mehr brauchst, solltest du gut darüber nachdenken.
Wozu benötigst du für eine simple Multiplikation (P_el) ein ExpressVI? Echt jetzt?
Dein DatenSpeichern-subVI könnte auch so aussehen:
[
attachment=61106]
Aus deinem MainVI:
Zitat:Daten berechnen Vi funktioiert an sich, auch wenn es etwas umständlich ist. Aber noch kommen die Daten nicht so an wie gedacht und werden auch nicht verarbeitet
Wie sollen die Daten auch im MainVI verarbeitet werden, wenn das DatenLesen-subVI nie Daten liefert? (Das hättest du mit simplem Debugging auch selbst feststellen können!)
Ist halt blöd, wenn ein subVI auf einen Stopp-Button wartet, aber sein Frontpanel nicht angezeigt wird!
Wozu überhaupt die Schleifen mitsamt Stopp-Button im subVI, wenn doch dein MainVI die Kontrolle übernehmen sollte???
Zitat aus dem NI-Forum:
Zitat:Yes, it help to have peers, especially to gain a good "programmer conscience".
Make everything with someone else in mind, even if that person is "future you". Not an easy task...
If it feels stupid to make, it probably is.
Ich stimme dem voll und ganz zu…