18.02.2015, 18:53
Beitrag #1
|
Nordvestlys
LVF-Gelegenheitsschreiber
Beiträge: 108
Registriert seit: Sep 2014
2015 (und testweise 2016)
2005
EN
07743
Deutschland
|
globale Konstanten?
Moin,
gibt es eigentlich eine "elegante" Möglichkeit Cluster zu erstellen, die projektweit nur an genau einer Stelle verändert werden können?
Aktuell fällt mir dazu nur ein, eine Typdefinition in einem extra VI zu verpacken. Je nachdem wie der Inhalt später benutzt werden soll, ist das aber nicht mehr elegant.
Schöner fände ich es wenn man z.B. die Typdefinition "normal" für ein Bedienelement verwendet, aber ein zwingendes Autoupdate der Standardwerte (aus der Typdef) einstellen könnte.
(Die strikten Typdefinitionen beziehen sich doch nur auf's Design, oder?)
Irgendwelche Vorschläge / Ideen oder sogar Standardlösungen?
|
|
|
18.02.2015, 19:23
Beitrag #2
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: globale Konstanten?
Könntest Du mal ein konkretes Beipiel bringen, welches das Problem illustriert? Ich verstehe es deshalb nicht, weil doch ein Programmierer es jederzeit einrichten kann, dass irgendeine Variable, die an mehreren Stellen gelesen werden muss, nur an einer Stelle im Programm beschrieben wird. Wieso wird daraus ein Problem?
|
|
|
18.02.2015, 20:58
(Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2015 21:00 von GerdW.)
Beitrag #3
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: globale Konstanten?
Hallo,
im NI-Forum läuft das unter WORM (write once, read many)…
Andere Option: ein Notifier, der beim Erstellen gleich beschrieben wird und danach nur noch gelesen (wie Lucki sagte: der Programmierer ist verantwortlich!)
|
|
|
18.02.2015, 22:49
Beitrag #4
|
teegee
LVF-Grünschnabel
Beiträge: 49
Registriert seit: Jan 2015
2014
2003
EN
Sonstige
|
RE: globale Konstanten?
Erstell eine Singelton Klasse mit dem Cluster als Attribut und mach den setter private und uebergeb den Cluster im Init()
|
|
|
19.02.2015, 09:39
Beitrag #5
|
Nordvestlys
LVF-Gelegenheitsschreiber
Beiträge: 108
Registriert seit: Sep 2014
2015 (und testweise 2016)
2005
EN
07743
Deutschland
|
RE: globale Konstanten?
Moin,
zunächst einmal zur "Schwere" des Problems: Es geht nicht darum, dass ich so eine Funktionalität unbedingt brauche - sondern mehr um die Überlegung, dass es doch bestimmt schon einen einfachen Weg für solche globalen Konstanten gibt, den ich bisher noch nicht kannte.
Insofern, kein echtes Problem. Eher ein "Luxusproblem".
Dann mal ein konkretes Beispiel:
Aktuell bin ich dabei eine umfangreiche Messanlagensteuerung zu programmieren. (Im wesentlichen sind das mehrere Statemachines.) Die meisten Einstellungen werden aus irgendwelchen Textdateien zur Laufzeit zugeordnet.
Ein paar Vorgaben brauche ich später jedoch nie wieder anzufassen. Beispielsweise habe ich eine Zuordnung welcher Zustand (z.B. Standby, Prüfling geladen, Messbereit) welche Ventilstellungen auslöst und welche Positionsschalterstellungen erwartet werden.
Es war ganz praktisch das alles in einem Cluster zu "verpacken" weil man dadurch relativ übersichtlich und schnell Variationen einstellen, anzeigen und testen kann.
(Dabei entspricht jeder State einem von ca. 20 gleich aufgebauten Bedienelementen. Jedes Bedienelement ist ein Array mit den aktuell relevanten Komponenten-Zuständen. Also ein Cluster mit Arrays aus identischen Clustern.)
Dieser Cluster wird "nur" an zwei oder drei Stellen benötigt und später eigentlich nicht mehr angefasst. Natürlich kann man das auch anders lösen (s.o.) aber ich wollte es ja einfach....
Ich habe kein Problem damit, die Änderungen während der Entwicklungszeit an besagten 2 oder 3 Stellen vorzunehmen. Aber wenn man die Standardwerte z.B. fest an die Typdefinition koppeln könnte, wäre das schon nett...
Ich möchte bei *diesem* Einsatzzweck auch ungern von den Clustern weg, weil sie von Übersichtlichkeit und Flexibilität perfekt passen.
Umwege über zwischengeschaltete VIs, Klassen, Zuordnungen aus Textdateien oder Notifiern wären alle denkbar, sind mir an *dieser* Stelle aber nicht "einfach" genug.
...ich vermute also, dass ich keine einfache Einstellmöglichkeit oder LV-Funktion übersehen habe, und nehme das mal so hin.
(Uiih - schon viel zu viel Text. In dieser Zeit hätte ich meine Cluster locker dreimal kontrollieren können...)
|
|
|
19.02.2015, 22:26
Beitrag #6
|
teegee
LVF-Grünschnabel
Beiträge: 49
Registriert seit: Jan 2015
2014
2003
EN
Sonstige
|
RE: globale Konstanten?
(19.02.2015 09:39 )Nordvestlys schrieb: Ich möchte bei *diesem* Einsatzzweck auch ungern von den Clustern weg, weil sie von Übersichtlichkeit und Flexibilität perfekt passen.
Umwege über zwischengeschaltete VIs, Klassen, Zuordnungen aus Textdateien oder Notifiern wären alle denkbar, sind mir an *dieser* Stelle aber nicht "einfach" genug.
Wirklich? Nicht einfach genug?
Eine Klasse ist nur ein container fuer einen Cluster.
Und auf eine Singleton Klasse hast du ueberall Zugriff ohne deinen Cluster durch 4 connector panes durch zu zwaengen.
Das angehaengte Projekt hab ich in 5 Minuten zusammengehackt. Ich weiss nicht, ob es noch viel einfacher geht...
Singleton settings.zip (Größe: 112,83 KB / Downloads: 247)
|
|
|
20.02.2015, 09:35
Beitrag #7
|
Nordvestlys
LVF-Gelegenheitsschreiber
Beiträge: 108
Registriert seit: Sep 2014
2015 (und testweise 2016)
2005
EN
07743
Deutschland
|
RE: globale Konstanten?
(19.02.2015 22:26 )teegee schrieb: Wirklich? Nicht einfach genug?
Yepp :-)
(Zumindest in diesem speziellen Fall)
teegee schrieb: [...]Das angehaengte Projekt hab ich in 5 Minuten zusammengehackt. Ich weiss nicht, ob es noch viel einfacher geht...
Trotzdem danke. Ich werde bei komplexeren Anforderungen darauf zurück kommen.
Der aktuelle Anlaß für meine Frage war ja auch kein echtes "Problem" sondern einfach die Überlegung ob es eine kleine vermisste Funktionalität nicht vielleicht schon gibt. Kommt ja öfters vor, dass es nette Arbeitserleichterungen gibt, die man selber noch nicht kennt.
|
|
|
| |