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 

Lokale Variablen/Programmkritik



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!

09.06.2016, 18:41
Beitrag #1

Titus Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: May 2016

15.0.1f1
2014
kA



Lokale Variablen/Programmkritik
Hallo Leute,

ich habe mir hier einen Teststand aufgebaut. Alles funktioniert mittlerweile so wie ich es mir gedacht habe....

Jetzt gehts daran ein paar Sicherheitsabschaltungen und ähnliche Features einzuprogrammieren... da werden böse Erinnerungen an den letzten Prüfstand wach, auch damals hat alles wunderbar funktioniert, allerdings war Blockdiagramm eine einzige Katastrophe. Dieses strotze nur so von lokalen Variablen .... und irgendwie hab ich noch von damals im Kopf, dass das Programmieren mit lokalen Variablen unprofessionell ist... gut ich bin kein professioneller Programmierer hätte es aber gerne optimal programmiert. Daher hab ich ein paar allgemeine Fragen an die Profis hier;

1. Wie ihr in der unteren Schleife seht, ist dort ein "Case" mit einer Sequenz und lokalen Variablen, das macht exakt das was es tun soll, nur kann ich es nachher nicht schön in ein Sub-VI verpacken... das Ergebnis ist Chaos im Blockdiagramm. Die einzige Alternative die mir dazu einfallen würde wäre ein Formelknoten... aber ich würde gerne wissen wie es ein Profi gestalten würde.

2. Gibts außer dem Chaos im Blockdiagramm sonst noch Gründe warum es Leute gibt die sagen man solle auf lokale Variablen verzichten?

3. Ist es gut mehrere Schleifen zu nutzen, so wie Ihr es auf dem Bild seht, oder ist das wieder mal ein "nogo? Es gab immer wieder Probleme wenn ich alles in eine Scheife gepackt habe.



Ok das wärs erstmal .... sollte Euch sonst noch etwas auffallen was ich verbessern könnte.... ich bin für jede Kritik dankbar.

Liebe Grüße


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.06.2016, 20:34 (Dieser Beitrag wurde zuletzt bearbeitet: 09.06.2016 20:44 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.399
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Wieso "Lokale Variablen" und viel "Programmkritik" :-)
Hallo Titus,

Zitat:sollte Euch sonst noch etwas auffallen was ich verbessern könnte.... ich bin für jede Kritik dankbar.
- Wieso um Himmels willen muss man ein Array aus 3 Waveforms mittels SplitSignal in drei einzelne DDT-Drähte vereinzelen? Warum nicht einfach IndexArray verwenden und mit den Waveforms arbeiten!?
- Wieso gibt es einen Button "Boolesch"? Warum hat der keinen passenden Namen? Warum ist das ein Switch und kein Latch? Mit einem Latch könntest du dir die lokale Variable zum Zurücksetzen des Buttons sparen!
- Wieso laufen alle Schleifen endlos? Wird der Teststand NIE ausgeschaltet?
- Wieso ist das VI so unaufgeräumt? Styleguide…
- Warum haben alle subVIs so nichtssagende Icons? Styleguide…
- Warum steckt der PID in einer Case-Struktur? Den kann man doch zwischen "manuell" und "Automatik" umschalten!?

Zitat:2. Gibts außer dem Chaos im Blockdiagramm sonst noch Gründe warum es Leute gibt die sagen man solle auf lokale Variablen verzichten?
Man sollte auf lokale Variablen verzichten, weil sie RaceConditions-anfällig sind. Wie z.B. in deiner Schleife unten links: wer setzt den letzten Wert in "Steuerung pneumatischer Druck", der PID oder dein Case darunter?
Wenn man Daten von einer Schleife in eine andere schicken will, kann man prima Queues oder Notifier verwenden.

Zitat:1. Die einzige Alternative die mir dazu einfallen würde wäre ein Formelknoten...
Wie soll ein Formelknoten helfen, wenn du nach Erzeugen eines subVIs Control-Referenzen im BD hast? Hmm
Bei Queues/Notifier brauchst du auch keine Referenzen ans subVI geben, die kann man per Namen referenzieren!

Zitat:3. Ist es gut mehrere Schleifen zu nutzen, so wie Ihr es auf dem Bild seht,
Prinzipiell ist dagegen nichts einzuwenden, ABER:
Warum hast du eine PID-Regelschleife und eine Schleife, die die Werte dann per DAQmx ausgibt? Warum nicht beides in eine Schleife? Die laufen doch beide im 100ms-Takt!?
Warum wartet eine Schleife 100ms und die andere auf das nächste Vielfache von 100ms?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.06.2016, 17:01
Beitrag #3

Titus Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: May 2016

15.0.1f1
2014
kA



Smile RE: Lokale Variablen/Programmkritik
Zitat:- Wieso um Himmels willen muss man ein Array aus 3 Waveforms mittels SplitSignal in drei einzelne DDT-Drähte vereinzelen?

Denn sie wissen nicht was sie tun....Blush... ich habs geändert. Magst Du mir den Unterschied zwischen DDT und Waveforms erklären...




Also zunächst mal vielen herzlichen Dank für Deine Kritik, ich habe fast alles umgesetzt. Schaut auf jeden Fall schon deutlich besser aus als vorher. Vor allem der Tipp mit dem anderen Regler war gut. Ich hab jetzt den PID-Fortgeschritten genommen, bei dem kann man wunderbar zwischen Steuerung und Regelung hin und her schalten... da gabs bei meiner Version auch Ärger ohne Ende ... :-)


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.06.2016, 18:00
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Lokale Variablen/Programmkritik
Jetzt noch eine saubere Möglichkeit programmieren, die While-Loop sauber zu beenden (so ist dein Close-VI ziemlich zwecklos - wird nie aufgerufen), und auf die lokale Variable könntest du auch noch verzichten.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.06.2016, 17:46 (Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2016 17:47 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.399
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Lokale Variablen/Programmkritik
Hallo Titus,

Zitat:Magst Du mir den Unterschied zwischen DDT und Waveforms erklären...
Eigentlich "mag" ich das nicht, da es hier um ExpressVIs geht… Wink

Ein Waveform (deutsch: Signalverlauf) ist ein üblicher Datentyp in LabVIEW, der eben einen Signalverlauf (Startzeit, Sampleabstand=dt, Y-Werte) beschreibt.
Ein DDT (DynamicDataType) ist eine Chimäre, die mit den ExpressVIs eingeführt wurde: Ein DDT-Draht kann so ziemlich alles (außer Strings) enthalten, egal ob Einzelwert, Array, Waveform, etc. Dummerweise sieht man "von außen" nicht, was im DDT enthalten ist - und der LabVIEW-Einsteiger denkt, weil er den DDT so ziemlich überall anschließen kann, dass dann auch immer was sinnvolles herauskommen müsste…

Beides sollte in der LabVIEW-Hilfe erläutert sein: einfach mal nachlesen!

Noch etwas: Bilder sind immer nett. Dummerweise kann man die mit LabVIEW so schlecht editieren, da wäre ein Snippet oder ein VI-Attachment sehr viel sinnvoller!

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  lokale Bilddateien auf .esp Seiten anzeigen Kanaille 7 5.503 14.11.2019 11:06
Letzter Beitrag: Kanaille
  Lokale Variablen über Schleife durchlaufen smozart 6 6.808 10.02.2012 08:50
Letzter Beitrag: smozart

Gehe zu: