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 

Verbessern



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!

01.12.2011, 13:59 (Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2011 14:08 von seitzo.)
Beitrag #1

seitzo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Sep 2011

11.0
-
DE



Verbessern
Hallo, hab ein Programm geschrieben, leider sind viele Variablen vorhanden.
Ich hab gelesen, dass Variablen in Labview schlecht sind, man sollte Drähte ziehen.

Leider hab ich mehrere Schleifen und muss an unterscheidlichen Stellen in mehrere Dateien schreiben um die Daten später wieder übers Netzlaufwerk von einem anderen PC mit einem Labview-Programm abzuholen und zu beschreiben.

Grund: die Berechnungen sollen auf einem PC laufen und die Eingaben und Ausgaben sollen auf einem anderen PC laufen.

Außerdem sollten die Änderungen in Echtzeit angezeigt werden, also nicht erst wenn eine Schleife Beendet ist.

Das geht doch nur mit Variabeln oder?
Wie macht mans richtig?

Außerdem wie liest man Daten aus einem Anzeigeelement ohne Variablen?


Wie mach ich das bei meinem Programm ?

Das angehängte Programm ist für die Berechnung zuständig.


Angehängte Datei(en)
11.0 .vi  Backend_neu.vi (Größe: 1,23 MB / Downloads: 155)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.12.2011, 14:45 (Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2011 14:48 von Achim.)
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: Verbessern
Hi,

"Richtig" wäre erst mal, ein bisschen Platz zu sparen...und z.B. für die Wochentage nicht alles getrennt zu coden, sondern SubVI's zu erstellen...du machst ja jeden Tag das gleiche, oder?

Und "hart" vorgegebene Pfad erweisen sich früher oder später als sehr unschön für die Wartung...

Und die ganzen Eingabemasken sind auch identisch...brauchst du die wirklich so oft? Wäre es nicht einfacher, anstelle der Auswahl über das Tab-Control einfach einen Textring zu nehmen und anhand dieser Information die Eingabedaten der korrekten Verarbeitung (siehe oben, SubVI's) zuzuweisen?! Die Eingabemasken könntest du als StrictTypeDef speichern, dann wären eventuelle Änderungen gleich in allen Instanzen vorhanden.

A.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.12.2011, 14:47
Beitrag #3

eb Offline
LVF-Lernwilliger
***


Beiträge: 292
Registriert seit: Mar 2008

2014
2008
EN

12xxx
Deutschland
RE: Verbessern
Hallo seitzo,

Dein Programm ist momentan zwar sehr "gegliedert", dennoch solltest du noch ein wenig mehr Arbeit in die Programmstruktur stecken. Am stärksten aufgefallen sind mir:
- Redundanter Code in den Cases für FS, SS, NS, sowie in den Cases für die Wochentage -> am besten nur den sich verandernden Code in Case-Strukturen packen
- deine Wochentags-Schleife ist suboptimal -> schau die evtll. mal das Prinzip einer State-Machine an.
- nicht alle "Phasen" deines Programms müssen zwingend nacheinander ausgeführt werden -> Sequenzen vereinen/weniger Sequenzen, vielleicht sogar durch eine State-Machine mit "init"- und "exit"-State überhaupt keine Sequenzen mehr
- wenn die Struktur "aufgeräumt ist, werden schon viel weniger LokaleVariablen existieren, diese können dann eventuell noch reduziert werden.

Mit hilfe sog. "Eigenschaftsknoten" kannst du auf sehr viele Eigenschaften eines Controls zugreifen, wie z.B. den Text eines String-Controls. Klicke einfach mal mit rechter Maustaste auf ein Control und wähle Erstellen->Eigenschaftsknoten und schaue dir mit aktivierter Kontexthilfe (Strg+H) die einzenen möglichen Eigenschaften an.

Bei Fragen zur State-Machine die Beispiele anschauen und Gedankenknoten posten.


Viel Glück
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.12.2011, 14:51
Beitrag #4

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: Verbessern
(01.12.2011 14:47 )erik.brenncke schrieb:  Mit hilfe sog. "Eigenschaftsknoten" kannst du auf sehr viele Eigenschaften eines Controls zugreifen, wie z.B. den Text eines String-Controls.

Das ist aber auch nicht per se zu empfehlen! PropertyNodes und InvokeNodes bremsen die Performance...nur um den "Value" eines Controls zu kriegen, ist das m. E. auch nicht "klüger" als eine lokale Variable...

A.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.12.2011, 14:53
Beitrag #5

seitzo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Sep 2011

11.0
-
DE



RE: Verbessern
Hier nochmal das ganze in einer älteren LABviewversion mit allen Sub-Vi's


Angehängte Datei(en)
0.0 .zip  Backend.zip (Größe: 856,69 KB / Downloads: 146)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.12.2011, 15:05
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Verbessern
Hallo seitzo,

dein ZIP enthält immer noch nur lv11_img-VIs...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.12.2011, 15:07 (Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2011 15:16 von seitzo.)
Beitrag #7

seitzo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Sep 2011

11.0
-
DE



RE: Verbessern
@erik

Zitat:- Redundanter Code in den Cases für FS, SS, NS, sowie in den Cases für die Wochentage
Zitat:am besten nur den sich verandernden Code in Case-Strukturen packen

Sorry, aber wie mach ich das?, meines erachtens ändert sich alles.
Sorry, hab wohl nochmal auf speichern geklickt.


Angehängte Datei(en)
0.0 .zip  Backend_neu.zip (Größe: 556,44 KB / Downloads: 134)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.12.2011, 08:07
Beitrag #8

seitzo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Sep 2011

11.0
-
DE



RE: Verbessern
Wie kann ich eine State-Machine in meinem Programm einsetzen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.12.2011, 09:16
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Verbessern
Hallo seitzo,

Tipps:
- RubeGoldbergs entfernen:
   
- du liest wiederholt Dateien/Settings ein (wie z.B. SA_lesen.vi): Ändern sich diese Dateien wirklich so oft? Oder würde es nicht ausreichen, diese einmal einzulesen? Dann bräuchte man auch nicht dauernd in lokale Variablen zu schreiben...
- deine subVIs haben nur ein generisches Icon. Erstelle ein eigenes aussagekräftiges Icon und du kannst die ganzen VI-Namen wieder ausblenden -> Platz im (riesigen) BD gespart...
- Verwende ErrorCluster zum Sequenzieren von VIs -> Sequenzstruktur wird unnötig -> Platz im (riesigen) BD gespart...
- Verwende Schieberegister statt lokaler Variablen...
- Verwende (strikte!?) Typdefinitionen für deine Datentypen...
- Würde sich nicht ein Array of Cluster für deine Wochentage anbieten (statt Cluster of Cluster)?
- strikte von-links-nach-rechts-Verdrahtung macht BDs besser lesbar...
- was ich auch liebe: ungenutzte Terminals von Controls, aber lokale Variablen...

Bitte drüber nachdenken, evtl. umsetzen und dann neu hochladen...

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

seitzo Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Sep 2011

11.0
-
DE



RE: Verbessern
Was sind ErrorCluster?

und noch ne Frage,
wieso kann ich wenn ich eine Registerkarte als Anzeigeelemt nehme keine Register anklicken, bleibt z.B immer auf Auftrag1 oder MO-FR?
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
  Abtastrate verbessern creo_123 1 2.642 29.07.2013 13:48
Letzter Beitrag: Achim
  Lauflicht verbessern FIE 23 19.051 03.01.2013 18:35
Letzter Beitrag: GerdW
  Hohe CPU und Speicherauslastung, wie kann man das verbessern? bierber 15 16.969 20.07.2006 16:58
Letzter Beitrag: eg

Gehe zu: