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 

Signal LED als globale Variable



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!

24.07.2012, 09:52
Beitrag #11

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Signal LED als globale Variable
Was spricht eigentlich gegen Sequenzen? Ja sicher, man kann den Ablauf sehr viel eleganter steuern indem man den über das Datenflussprinzip sicherstellt. Und ja man sieht bei der gestapelten Sequenz nicht alles. Andererseits ist es denke ich gerade für Anfänger hilfreich erstmal mit Sequenzen zu arbeiten bis sie das Konzept auch verstanden haben. Und natürlich gibt man seinem Code so auch noch eine gewisse Gliederung.

Tatsächlich wäre ich selbst sogar fast ein Fan von gestapelten Sequenzen, wenn die übergabe von Werten von einem Rahmen zum nächsten nicht so umständlich wäre. Ich meine mal ernsthaft: Ob ich meine Funktionalität eines Teils des Programs in einem Rahmen einer gestapelten Sequenz oder einem SubVI kapsele ist doch relativ egal, am Ende ist mir der Code ähnlich "umständlich" zugänglich und ich sehe ihn nicht direkt....

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2012, 09:57 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2012 09:59 von GerdW.)
Beitrag #12

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Signal LED als globale Variable
Hallo Kiesch,

Zitat:Ob ich meine Funktionalität eines Teils des Programs in einem Rahmen einer gestapelten Sequenz oder einem SubVI kapsele ist doch relativ egal, am Ende ist mir der Code ähnlich "umständlich" zugänglich und ich sehe ihn nicht direkt...
Ein subVI hat/ist:
- ein aussagekräftiges Icon
- eine aussagekräftige Dokumentation, die in der Kontexthilfe angezeigt wird
- durch ihre Benennung aussagekräftige Ein- und Ausgänge
- wiederverwendbar, bei richtiger Programmierung sogar parallel
- eigenständig testbar

Eine (gestapelte) Sequenz dagegen hat nichts dieser genannten Punkte und verhindert nebenbei auch die parallele Nutzung von Resourcen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2012, 09:30
Beitrag #13

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Signal LED als globale Variable
Es kostet mich zwei Klicks aus einem Rahmen einer Sequenz ein SubVI zu machen... Und nicht alle Dinge die ich in einen solchen Rahmen packe sind komplex genug das sich ein SubVI wirklich lohnt. Noch dazu kann es sogar beliebig umständlich werden. Man nehme allein Initialisierungsroutinen.
Da wir hier in der Regel nicht mit compilierten VIs arbeiten, muss ich programmatisch sicherstellen, dass das Program in einem konsistenten Displayzustand startet (ergo: Bestimmte Dinge explizit per lokaler Variable auf einen Startwert setzen). Mir ist bis heute keine andere Variante als die Sequenz bekannt, die ähnlich leicht garantiert, dass das zuerst passiert (leider haben die Lokalen Variablen ja keinen Fehlerausgang oder ähnliches den man nutzen könnte. (ach ja, natürlich kann mans über Referenzen und da wert setzen machen, dann kann mans über den Fehler steuern, aber na ja.... ist auch nicht grade handlich).

Noch dazu sind die Sachen in der Regel so spezifisch, dass man dafür schlecht eine Subroutine schreiben kann die Wiederverwendbar ist (zumindest muss man dafür die Methode so auslegen, dass sie potentiell vielseitig genutzt werden kann - zum Beispiel nen Array von Refs auf Controls vorgeben und startwerte für die als Array übergeben, potentiell als Array von Variants etc. pp; beliebig kompliziert).

Will damit sagen: Die Sequenzstruktur führt tatsächlich teilweise schneller und besser zu einem guten Ergebnis UND liefert im Program eine klare (kommentierbare [sic!]) Gliederung des Programs. Ich meine, machen wir uns nichts vor: Wer SubVIs mit Hilfetexten und Aussagekräftigen Bezeichnungen der ein / Ausgänge versieht UND mit nem ICON (ich bin kein Grafiker, deswegen tu ich das selten, auch wenn es sicher hilfreich wäre... Nur Aussagekräftige Icos zu machen finde ich persönlich garnicht so einfach und besonders bei sehr vielen VIs schwierig (sollten sich ja alle hinreichend gut unterscheiden)), der schreibt auch entsprechende aussagekräftige Kommentare in seine Sequenzen.
Ich meine, mal ernsthaft: Sequenzen mögen für manche Sachen nicht die beste Lösung sein und den Datenfluss zu nutzen ist nunmal deutlich eleganter (ergo: Geschmackssache !) und wenn man das tut ist meist die Sequenz die man vielleicht noch drüberpackt völlig unnötige, ABER: Muss man deswegen mit missionarischem Eifer das benutzen von Sequenzen jedes mal als Fehler beim Programmieren anprangern?

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2012, 09:49 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2012 09:49 von M Nussbaumer.)
Beitrag #14

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Signal LED als globale Variable
(25.07.2012 09:30 )Kiesch schrieb:  Will damit sagen: Die Sequenzstruktur führt tatsächlich teilweise schneller und besser zu einem guten Ergebnis UND liefert im Program eine klare (kommentierbare [sic!]) Gliederung des Programs. Ich meine, machen wir uns nichts vor: Wer SubVIs mit Hilfetexten und Aussagekräftigen Bezeichnungen der ein / Ausgänge versieht UND mit nem ICON (ich bin kein Grafiker, deswegen tu ich das selten, auch wenn es sicher hilfreich wäre... Nur Aussagekräftige Icos zu machen finde ich persönlich garnicht so einfach und besonders bei sehr vielen VIs schwierig (sollten sich ja alle hinreichend gut unterscheiden)), der schreibt auch entsprechende aussagekräftige Kommentare in seine Sequenzen.
Ich meine, mal ernsthaft: Sequenzen mögen für manche Sachen nicht die beste Lösung sein und den Datenfluss zu nutzen ist nunmal deutlich eleganter (ergo: Geschmackssache !) und wenn man das tut ist meist die Sequenz die man vielleicht noch drüberpackt völlig unnötige, ABER: Muss man deswegen mit missionarischem Eifer das benutzen von Sequenzen jedes mal als Fehler beim Programmieren anprangern?

Das Problem an Sequenzen ist, dass sie meiner Meinung nach schlechten Programmierstiel fördern. Eine Statemachine löst die von dir beschriebenen Probleme mit etwas mehr Aufwand gleichwertig jedoch wird die Wartbarkeit dadurch wesentlich erhöht. Hast du schon mal die Unterschiede zwischen einer historisch gewachsenen Statemachine und einer historisch gewachsenen Sequenz gesehen? Da liegen Welten in der Lesbarkeit/Wartbarkeit dazwischen. Zudem ist die Datenübergabe in einer Sequenz absolut nicht Datenfluss freundlich geschweige leicht zu lesen bei grösseren Mengen.

Zudem haben die SubVI's den Vorteil einer klar definierten Schnittstellte (Eingänge&Ausgänge am besten noch mit Typdef bei Enums oder Clusters) wordurch bei Anpassung ebenjener alle betroffenen VI's geändert werden.

Aber das ist natürlich nur meine Meinung aufgrund meiner Erfahrungen.

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2012, 11:54 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2012 11:59 von GerdW.)
Beitrag #15

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Signal LED als globale Variable
Danke Marc,

für die weiteren guten Argumente Wink

@Kiesch:
Zitat:Was spricht eigentlich gegen Sequenzen? Ja sicher, man kann den Ablauf sehr viel eleganter steuern indem man den über das Datenflussprinzip sicherstellt.
Du gibst doch selbst die besten Argumente...

Zitat:Da wir hier in der Regel nicht mit compilierten VIs arbeiten, muss ich programmatisch sicherstellen, dass das Program in einem konsistenten Displayzustand startet (ergo: Bestimmte Dinge explizit per lokaler Variable auf einen Startwert setzen).
Sowas löse ich i.A. durch Nachladen einer Config-Datei und setzen von Ctrl-Werten über ihre Referenzen - mit 3 subVIs (Datei laden, Referenzen zusammensuchen, Werte anhand von Name und Referenz setzen). Egal ob in der Entwicklungsumgebung oder im Executable...
Edit: Wozu gibt es die Möglichkeit, Standardwerte für Bedien- und Anzeigelemente zu setzen? Ich sehe hier keinen Grund für lokale Variablen...

Zitat:Noch dazu sind die Sachen in der Regel so spezifisch, dass man dafür schlecht eine Subroutine schreiben kann die Wiederverwendbar ist
Ich versorge nach diesem Schema diverse Prüfstände mit jeweils eigenen Bedienoberflächen. Es hilft unglaublich, wenn man ein striktes Namensschema für Bedienelemente einhält Wink

Zitat:ich bin kein Grafiker, deswegen tu ich das selten
Ich bin auch keiner, bei mir bekommen Icons meist 3-4 Zeilen Text und eine farbliche Kodierung der Titelzeile...

Zitat:ABER: Muss man deswegen mit missionarischem Eifer das benutzen von Sequenzen jedes mal als Fehler beim Programmieren anprangern?
Wenn es mit dem übermäßigen Gebrauch lokaler Variablen einhergeht: Ja! (Meine Meinung...)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2012, 12:54 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2012 12:56 von Kiesch.)
Beitrag #16

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Signal LED als globale Variable
(25.07.2012 11:54 )GerdW schrieb:  Danke Marc,

für die weiteren guten Argumente Wink

@Kiesch:
Zitat:Was spricht eigentlich gegen Sequenzen? Ja sicher, man kann den Ablauf sehr viel eleganter steuern indem man den über das Datenflussprinzip sicherstellt.
Du gibst doch selbst die besten Argumente...
Ich hab doch gesagt - ist ein Vorteil, wenn du mich aber vollständig zitiert hättest steht da nunmal auch das das letztlich geschmackssache ist und keine Auswirkungen auf die Funktionalität hat ;-)
Einigen wir uns einfach darauf das wir uns einig sind.

Zitat:
Zitat:Da wir hier in der Regel nicht mit compilierten VIs arbeiten, muss ich programmatisch sicherstellen, dass das Program in einem konsistenten Displayzustand startet (ergo: Bestimmte Dinge explizit per lokaler Variable auf einen Startwert setzen).
Sowas löse ich i.A. durch Nachladen einer Config-Datei und setzen von Ctrl-Werten über ihre Referenzen - mit 3 subVIs (Datei laden, Referenzen zusammensuchen, Werte anhand von Name und Referenz setzen). Egal ob in der Entwicklungsumgebung oder im Executable...
Edit: Wozu gibt es die Möglichkeit, Standardwerte für Bedien- und Anzeigelemente zu setzen? Ich sehe hier keinen Grund für lokale Variablen...
Was wie oben ausgeführt eben mehr Planungsaufwand bedeutet und zu einer deutlich veränderten Methodik führt als es über ne Sequenz zu regeln.
Im übrigen denke ich muss ich mir da tatsächlich auch endlich mal ne wiederverwendbare Routine für Programmieren. Das liegt allerdings im wesentlichen daran, dass ich genug programmiere, so dass sich der Aufwand dafür lohnt.

Zitat:
Zitat:ich bin kein Grafiker, deswegen tu ich das selten
Ich bin auch keiner, bei mir bekommen Icons meist 3-4 Zeilen Text und eine farbliche Kodierung der Titelzeile...

Gibts da eigentlich irgendwelche Hilfsmittel für? Mal ab von Labview? Ich finde den eingebauten Icon editor eher schlecht als recht und die Lesbarkeit von Text ist zu oft auch eher schlecht als recht (so dass ichs wie gesagt praktisch selten nutze; und ja, mir ist bewusst das das ziemlich schlampig ist eigentlich; aber meist reicht mir fürs nachvollziehen was wo passiert die Kontexthilfe völlig aus. Macht mir auch nicht so besonders deutlich mehr Aufwand.

Zitat:
Zitat:ABER: Muss man deswegen mit missionarischem Eifer das benutzen von Sequenzen jedes mal als Fehler beim Programmieren anprangern?
Wenn es mit dem übermäßigen Gebrauch lokaler Variablen einhergeht: Ja! (Meine Meinung...)

Nun ja, das ist auch wieder ne ganz andere Baustelle. Für gestapelte Sequenzen dürfte das tatsächlich nen Problem sein. Wie schon vorher gesagt hat NI da noch keine wirklich zufriedenstellende Variante der Datenübergabe zwischen Rahmen.
Aber bei ner flachen Sequenz ist das nen völlig separates Problem. Ich mein, wer exzessiv Lokale Variablen nutzt, nutzt die auch ohne Sequenz. Mit Sequenz vermeidet er immerhin im besten Fall erstmal die Racing Conditions...


Bottom Line: Ich finde Sequenzen sollten nicht so verteufelt werden, da sie gerade für Anfänger und Leute die eben nicht hauptberuflich mit Labview Programmieren teils einfachere (weil schneller zu programmierende) Lösungen für ihre Probleme bieten. So lange man noch damit kämpft was funktionierendes zu programmieren sind Eleganz und Wartbarkeit und Wiederverwendbarkeit nunmal sekundäre Probleme...

P.S: Ich selbst vermeide auch in der Regel Sequenzstrukturen. Allerdings programmiere ich halt mittlerweile auch schon lange genug um zu wissen was ich tue (und was Labview tut)

p.P.S: Sorry fürs auseinanderklauben deines Posts, ich wollte nur das jeweils der Bezug klar wird.

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2012, 14:07
Beitrag #17

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Signal LED als globale Variable
Hallo Kiesch,

Zitat:die Lesbarkeit von Text ist zu oft auch eher schlecht als recht
Doppelklick auf das "T"-Symbol öffnet den Font-Einstelldialog. Ich nehme meist nur Großbuchstaben...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2012, 22:09 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2012 22:16 von rolfk.)
Beitrag #18

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Signal LED als globale Variable
Ich bin auch ein Verfechter von dem Prinzip:
- Gestapelte Sequenzen mit mehr als einem Frame sind strikt zu unterlassen
- Verwendung von Locals für etwas anderes als intialisieren von den Controls und eventuel gekoppelte Updates, aber nur im Fall eines Events, ist schlampig
- Verwendung von Globals ist beinahe immer ein Zeichen von fehlender Softwarearchitektur

Natürlich darfst Du diese Regeln alle missachten, ich bin ja nicht Dein Chef Big Grin.

Aber für etwas anderes als eine Schnellschussapplikation, erkaufst Du Dir damit einen wesentlich grösseren Aufwand bei späteren Anpassungen, Erweiterungen und Unterhalt der Applikation. Zudem ist Debugging von solchen Applikationen sehr schnell ein Alptraum.

Auch die Wiederverwendbarkeit von Code ist damit praktisch nicht gegeben und nein das Selektieren von einer Sequenz mit anschliessendem Create SubVI ist keine Lösung, denn erstens ist das kein wirkliches VI sondern allenfalls ein Wrack und zweitens handelst Du Dir noch immer das Problem ein dass Du eine Verbesserung an einem Algortithmus in diesem VI nicht einfach so in die ursprüngliche Applikation übernehmen kannst.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2012, 20:15
Beitrag #19

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Signal LED als globale Variable
@GerdW

Oh. Das ist praktisch. Danke für den Tipp.

@rolfk

Äh. Gestapelte Sequenzen machen doch überhaupt nur Sinn mit mehr als einem Rahmen xD Oder entgeht mir da was? (ohne mehrere Rahmen kann man doch auch gleich die normale Sequenz nehmen)

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2012, 20:48
Beitrag #20

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Signal LED als globale Variable
Offtopic2
(26.07.2012 20:15 )Kiesch schrieb:  Äh. Gestapelte Sequenzen machen doch überhaupt nur Sinn mit mehr als einem Rahmen xD Oder entgeht mir da was? (ohne mehrere Rahmen kann man doch auch gleich die normale Sequenz nehmen)
Historisch gesehen ist eine gestapelte Sequenz die normale Sequenz, da es diese schon viel länger gibt als die flache Sequenzstruktur.

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Globale Variablen Edi70 7 4.486 08.10.2021 17:01
Letzter Beitrag: GerdW
  Boolean als globale Variable ares2013 12 11.362 06.09.2019 13:57
Letzter Beitrag: GerdW
  Übergabe Anzeigeelement zwischen VIs (Referenz/globale Variable?) lipster 1 4.299 03.02.2017 14:27
Letzter Beitrag: GerdW
  globale Konstanten? Nordvestlys 6 5.917 20.02.2015 09:35
Letzter Beitrag: Nordvestlys
  Globale Variable, maximale Größe, Daten anhängen. dieseldunst 10 10.723 18.04.2014 09:00
Letzter Beitrag: Lucki
  Globale Variable mit Excel Banick 5 6.467 29.01.2014 11:44
Letzter Beitrag: Banick

Gehe zu: