INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Struktur verbesserungswürdig?



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!

19.03.2024, 14:38 (Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2024 14:42 von Minako.)
Beitrag #1

Minako Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Feb 2024

2023 Q3
-
EN


Deutschland
Struktur verbesserungswürdig?
Hallo Community,
seit mehreren Wochen sitze ich an der Programmierung eines Messplatzes.
Dieser existiert bereits und muss erweitert werden.
Ich versuche das neue Gerät in den bestehenden Messplatz zu integrieren und möchte im zweiten Schritt die Programmierung übersichtlicher, sicherer und sauberer gestalten.
Ich habe aktuell jedoch keine Ahnung wie das aussehen kann.
Kurs Core 1 von Ni habe ich besucht und der zweite soll dieses Jahr folgen.

Wenn ihr euch mein Programm anschaut, bzw. die SubVIs dazu, werdet ihr euch evtl. fragen wie das funktionieren kann. bzw. warum ich mir go....verdam........nochal so viel Mühe gemacht habe, wenn es doch sooooooo viel einfacher geht.
Und genau das ist mein Problem. Wie?
Wie lasse ich die Lokalen Variablen weg? Ich kann doch nicht alle durch Propertynodes ersetzen?!?!
Ich denke da natürlich auch weiterhin selbst drüber nach. Bin aber über jeden einzelnen Tip/Vorschlag dankbar. Nehmt es mir bitte nicht übel, wenn ich etwas nicht sofort verstehe oder umsetzen kann.
Ich bringe mir das großteils selbst bei und lerne nur durch "try and error" Verfahren.

Das Einzige was ich mir sofort gemerkt habe ist es übersichtlich zu halten:
- von links nach rechts
- möglichst nur ein Bildschirm und wenns nicht anders geht nur eine Richtung zum scrollen. Nach rechts oder nach unten und nicht beides.
- keine coercion dots

Ausserdem:
- Keine localen Variablen (da hab ich aber noch keine gute Alternative gefunden)
- laut meinem Chef soll ich die Filmsequenzen eliminieren. Aber auch da bin ich teils massiv ratlos...

Labview 2023Q3 englische Variante
DAQ970 ist mit USB verbunden
Der Konstanter mittels GPIB-USB Adapter

Ich habe nur die SubVIs einfügen können, welche ich selbst gemacht habe.
Der Rest wurde nur geändert oder kommt von den Geräteherstellern.
Meine Art zu denken und zu programmieren ist bestimmt ausreichend erschreckend zu erkennen.

Ich hoffe ich verschrecke niemanden. Sollten offene Fragen bestehen, beantworte ich diese sehr gerne.

Vielen Dank fürs lesen bis hierher.

Und noch eine kleine Warnung:
Antworten haben noch mehr Dank zur FolgeBig Grin


Angehängte Datei(en)
23.0 .vi  Test Konstanter.vi (Größe: 35,61 KB / Downloads: 139)

23.0 .vi  Buttons auslesen2.vi (Größe: 183,45 KB / Downloads: 142)

23.0 .vi  DAQ970_auslesen_2.vi (Größe: 16,39 KB / Downloads: 131)

23.0 .vi  config channels.vi (Größe: 20,36 KB / Downloads: 135)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.03.2024, 15:05 (Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2024 15:10 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Struktur verbesserungswürdig?
Hallo Minako,

herzlich willkommen im LabVIEW-Forum!

Kannst du deine VIs bitte für LV2019 konvertieren (File->Save for previous) und dann nochmal anhängen?

Zitat:Wie lasse ich die Lokalen Variablen weg?
Durch Draht ersetzen...

Zitat:laut meinem Chef soll ich die Filmsequenzen eliminieren.
Da hat dein Chef recht: einfach durch "THINK DATAFLOW!" ersetzen!

Merke: In LabVIEW wird durch DATAFLOW definiert, was zuerst und was später ausgeführt wird. Wenn du das umsetzt, brauchst du keine (bzw. nur noch extrem selten) einen SequenceFrame...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2024, 08:31
Beitrag #3

Minako Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Feb 2024

2023 Q3
-
EN


Deutschland
RE: Struktur verbesserungswürdig?
Hallo,
vielen Dank.

Ich würde die Lokalen Variablen gerne durch Draht ersetzen, aber das is so verschachtelt alles, dass ich das erst komplett neu programmieren muss, um da ne Chance zu haben.

Thinkflow heißt doch von links nach rechts einfach alles hintereinander setzen?!
Das Programm ist gefühlt sehr unübersichtlich und riesen groß, wenn ich das so mache.

Desshalb hoffe ich auf Tips, die mir da weiter helfen. Smile

Ich bin noch so neu, das ich viele Bausteine und Möglichkeiten nicht kenne.

Ganz besonders bei der Buttongeschichte gibt es bestimmt eine sehr einfache Variante.
Ich habe alles mit boolschen Variablen gelöst, weil ich nur das bisher besser kenne.
Der Code war aber auch schwieriger am Anfang als er dann am Ende war.
(@101,102,103,104;201,202,203,204;301,302,303,304) dacht ich müsste ich kreiren.
Am Ende kam raus, das Kommas überall dazwischen reichen.
Jetzt versuche ich etwas zu erstellen ohne dieses Chaos...

Danke.^^


Angehängte Datei(en)
19.0 .vi  config channels.vi (Größe: 21,32 KB / Downloads: 87)

19.0 .vi  Test Konstanter.vi (Größe: 36,75 KB / Downloads: 100)

19.0 .vi  DAQ970_auslesen_2.vi (Größe: 17,22 KB / Downloads: 82)

19.0 .vi  Buttons auslesen2.vi (Größe: 257,73 KB / Downloads: 87)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2024, 08:56 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2024 09:05 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Struktur verbesserungswürdig?
Hallo Minako,

Zitat:Thinkflow heißt doch von links nach rechts einfach alles hintereinander setzen?!
Falsch.
"THINK DATAFLOW!" wird in der LabVIEW-Hilfe erläutert - und ist das Grundprinzip von LabVIEW:
   

Zitat:Das Programm ist gefühlt sehr unübersichtlich…
Ja.

Zitat:und riesen groß, wenn ich das so mache.
Nein.
Man erstellt subVIs, um Unterfunktionen zu kapseln…
Oder man nutzt eine Schleife, um Funktionen mehrfach aufzurufen - dein "ButtonAuslesen" ist hier ein prima Kandidat! (Wozu eine Sequenz mit 13 Frames, wenn in jedem Frame abgesehen von einem einzigen Parameter immer der exakt gleiche Code steht? Und das Auswerten eines String sollte auch einfacher lösbar sein…)

Zitat:Ich würde die Lokalen Variablen gerne durch Draht ersetzen, aber das is so verschachtelt alles, dass ich das erst komplett neu programmieren muss, um da ne Chance zu haben.
Du solltest es "sauber" neu programmieren, damit du eine Chance auf ein wartbares Programm bekommst…

Tipp:
- Ungebremste Schleifen sind auf jedem Target (abgesehen von FPGA) selten hilfreich
- Ein VI mit einer "STOP"-Funktion mittendrin ist nie ein "sauber programmiertes" VI…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2024, 11:11 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2024 11:12 von TpunktN.)
Beitrag #5

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 219
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: Struktur verbesserungswürdig?
Guten Morgen,

da habe ich schon schlimmeres gesehen, bzw selbst programmiert..
Ein paar pauschale Tipps, die einem einiges einfacher machen:
1.    
2. Schieberegister. Hier Wichtig: ALLE cases müssen verbunden werden, am besten alle "use default if unwired" abwählen, die an das Schieberegister angeschlossen werden.
3. Cluster in/als Schieberegister.

Dein "Buttons auslesen 2" ist ein super Kandidat für das gleiche prinzip wie "config channels", mit delete from array und anschließendem autoindexing an ner For Schleife. Das noch in nem SubVI und es ist sauber programmiert.

Grüße Timo

Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2024, 12:08
Beitrag #6

Minako Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Feb 2024

2023 Q3
-
EN


Deutschland
RE: Struktur verbesserungswürdig?
Guten Morgen,
vielleicht nehmen wir erstmal die Button Geschichte.
Ich weiß, dass meine Programmierung sich so nicht schimpfen darf.
Es ist mehr ein Zusammengewusel aus Bausteinen, welche zufälligerweise ihren Dienst erledigen. Dabei habe ich mir an dem Punkt echt schon richtig Mühe gegeben.

Das ist aber auch der Grund, warum ich frage. Ich habe keine Ahnung und kriege manche Dinge einfach nicht schöner hin bzw. weiß auch gar nicht was eine saubere Programmierung ist.

Die Labview Hilfe öffnet bei mir direkt den Browser und wechselt auf Deutsch.
Den Beitrag kann ich nicht finden. Selbst wenn ich mit deutschen Begriffen suche.
Zumal mein Englisch nicht das Gelbe vom Ei ist und ich das am lernen bin. Die ganzen Fachbegriffe sind noch ein Problem.
Aber dafür gibt es Übersetzungssoftware.

Mein Buttonprogramm konnte ich in keine Schleife setzen, weil ich keine Möglichkeit gefunden habe die ganzen Schalter abzufragen.
Ich habe es mit einer Case-Strucktur versucht und einem Enum. Das Enum war mit allen Kanälen beschriftet und ich habe die einzelnen Cases gefüllt mit den entsprechenden Informationen.
Das Drücken der Buttons hat aber keine Änderung des Cases hervorgerufen.

Die Funktion der Buttons sollte folgende sein:
Ich habe 12 Kanäle die ausgewählt werden können. Es soll möglich sein Kanäle mit Lücken auswählen zu können, also zwischendrinnen welche nicht zu nutzen.
Da ich meinen Kollegen ersparen möchte 12 Buttons drücken zu müssen, wenn sie alle Kanäle nutzen wollen, gibt es auch einen "Alle Kanäle" Button.

Die Form des enstehenden Strings hatte ich schon geschrieben.
Mir ist gerade aufgefallen, dass die Kanal-Auswahl.vi noch fehlte. Immerhin habe ich mich teils darauf bezogen.... Und beziehe mich jetzt sehr stark darauf.

Ich sehe nur den Ersatz der Case-Strukturen durch "Selector".
Ich habe schon was von hochzählen gehört, aber das geht doch nur, wenn ich keine Lücken drinnen habe?!
Ausserdem geht es bei den Kanälen von 101-104 und dann direkt zu 201-204 usw.

Für mich erschließt sich das nicht...

Habe ich tatsächlich eine While Schleife ohne ein Stop? Das wäre ein versehen.
Mittendrinnen keinen Stop zu haben ist doch ungünstig? Immerhin benötige ich die Möglichkeit die Messung abzubrechen?!
Es kann ja was falsch sein oder es ist etwas mechanisches kaputtgegangen und es muss ein Abbruch vorgenommen werden.
Da wird das Ganze noch mit einem Klimaschrank verbinden, benötige ich eine Abbruchfunktion.

Wie kann die aussehen für eine saubere Programmierung?

Das mit dem Zitieren hier im Forum habe ich noch nicht gecheckt...Confused
Muss ich mal ausprobieren mit den Buttons bevor ich auf Antworten klicke...

Die Schieberegister machen in meinem Fall doch nur für die Ein- und Ausgänge des Gerätenamens und des Fehlerclusters Sinn?


Danke für eure Hilfe.
Und sorry für den Roman jetzt...
Ich hab jetzt einfach beschlossen hier mit weiteren Ausführungen etc erstmal zu Enden....

Die Kanal-Auswahl zu verbessern und sauber zu programmieren ist jetzt mein Ziel. Alles andere führt nur zu weiteren Romanen und tausenden Fragen.
Also eins nach dem Anderen. Big Grin


Angehängte Datei(en)
19.0 .llb  DAQ970 Modul 909.llb (Größe: 36,14 KB / Downloads: 103)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.03.2024, 14:12 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2024 14:20 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Struktur verbesserungswürdig?
Hallo Minako,

Zitat:Die Labview Hilfe öffnet bei mir direkt den Browser und wechselt auf Deutsch.
Den Beitrag kann ich nicht finden. Selbst wenn ich mit deutschen Begriffen suche.
Ja, ein Nachteil der neuen LabVIEW-Versionen...
Deswegen habe ich dir im Bild aber auch das "Inhaltsverzeichnis" der Hilfe eingeblendet, das ist bei der Online-Hilfe immer noch genauso strukturiert!

Zitat:Die Funktion der Buttons sollte folgende sein:
Ich habe 12 Kanäle die ausgewählt werden können. Es soll möglich sein Kanäle mit Lücken auswählen zu können, also zwischendrinnen welche nicht zu nutzen.
Da ich meinen Kollegen ersparen möchte 12 Buttons drücken zu müssen, wenn sie alle Kanäle nutzen wollen, gibt es auch einen "Alle Kanäle" Button.
Was für ein VI... Big Grin

Guck doch mal hier:
   

Zitat:Ich sehe nur den Ersatz der Case-Strukturen durch "Selector".
Ich sehe den Ersatz von gleichartigen Codeschnipseln durch Codeschnipsel in einer Loop.
Ich sehe den Ersatz vieler einzelner String-Konstanten durch ein Array of Strings.

Zitat:Mittendrinnen keinen Stop zu haben ist doch ungünstig? Immerhin benötige ich die Möglichkeit die Messung abzubrechen?!
Ich habe mich auf die STOP-Funktion mitten im Test-VI bezogen, nicht auf eine While-Loop ohne Stop-Condition...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2024, 14:22
Beitrag #8

Minako Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Feb 2024

2023 Q3
-
EN


Deutschland
RE: Struktur verbesserungswürdig?
Hi GerdW,
ich habe derweil mal ein eigenes probiert, nachdem mal die Bezeichnung Statemachine gefallen war.
Das läuft bis auf eine einzige Sache.....
Der setzt die Werte hintendran, wenn ich den Startbutton mehrfach hintereinander drücke.
Da habe ich Sorge, dass der String bei weiterer Programmierung nicht mehr stimmt.
Was kann ich da tun?
Ist das überhaupt so passend? Also sauberer programmiert? Vielleicht sogar eine gute Variante?
Also schöner finde ich es definitiv.
Deins muss ich mir morgen mal anschauen, wenn ich wieder Zeit dafür habe.

Vielen Dank. Big Grin


Angehängte Datei(en)
19.0 .vi  Button_test.vi (Größe: 17,82 KB / Downloads: 104)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2024, 15:11 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2024 15:14 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Struktur verbesserungswürdig?
Hallo Minako,

Zitat:Ist das überhaupt so passend? Also sauberer programmiert? Vielleicht sogar eine gute Variante?
Also schöner finde ich es definitiv.
Du hast jetzt eine Statemachine gebaut, die in jedem State nahezu identischen Code ausführt: nimm eine Loop...
"Sauberer" ja, "Sauber" nein. Big Grin

Eine "gute" Variante ist das nicht, da sie Fehler enthält, wie z.B. ein nicht initialisiertes Shiftregister.
Außerdem ein nicht typdefiniertes Enum, die innere While-Loop ist unnötig (worauf auch der Vergleich "i=0" hindeutet), unnötige Stringoperationen wie Ersetzen von Tab durch Komma (warum überhaupt erst ein Tab???), Rube-Goldberg wie z.B. das letzte String-Ablängen usw.
Schau dir einfach (nochmal) meinen vorigen Beitrag an.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.03.2024, 11:51
Beitrag #10

Minako Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Feb 2024

2023 Q3
-
EN


Deutschland
RE: Struktur verbesserungswürdig?
Mahlzeit GerdW,

die LabVIEW Hilfe sieht bei mir ganz anders aus. Auf die Idee mir das Inhaltsverzeichnis anzuschauen, war ich bereit gekommen aber es half nicht.
Mal ein Bild zu meiner Ansicht:    

Mein noch unsauberes Programm funktioniert nach deinem Tip und dem Nachlesen in Labview für Dummies Buch.    

Deins finde ich aber immernoch am Besten.
Auch hier habe ich im Buch einige gute Erklärungen gefunden und kann nachvollziehen welchen Sinn das alles hat.
Ich habe das Programm noch etwas erweitert und so gefällt mir die Funktionsweise doch am besten.
Darf ich das so benutzen? Immerhin war es deine Arbeit, welche ich da großteils kopiert habe.    

Ich geh in der Zwischenzeit schon mal her und versuche das nächste SubVI mit dem neuen Wissen zu verbessern.

Vielen Dank.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: