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 

Wie programiert man richtig?



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!

23.11.2006, 16:50 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2006 16:52 von Gang.)
Beitrag #1

Gang Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 69
Registriert seit: Sep 2006

7
2005
kA

44932
Deutschland
Wie programiert man richtig?
Hallo

Da ich nun ein größeres Programm in angriff nehme, frage ich mich wie ich wohl richtig Anfange.

Ist es üblich eine große While-Schleife über alles zu machen?

Was ist besser eine case oder eine Ereignisstruktur.
Soll am so viel wie möglich in eine Ereignistruktur packen?
Soll man versuchen mit Sequenz-strukturen zu arbeiten oder dich lieber linear?
.
.
.


mfg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.11.2006, 17:32
Beitrag #2

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Wie programiert man richtig?
Hallo,

da gibt es so viele Dinge, auf die man achten muss / soll. Wenn Du ein großes Projekt vor Dir hast, dann würde ich mal die Lehrgänge bei NI besuchen, zumindest mal Basic 1/2 und Intermediate 1/2. Da lernst Du so zu programmieren, wie man es eigentlich soll.
Ansonsten hängt es auch von der Aufgabe des Programms ab, z.B. ist mal eher eine Event Structure besser, wann anders aber eher ein Case. So pauschal kann man das gar nicht beantworten.

Gruß Markus

' schrieb:Hallo

Da ich nun ein größeres Programm in angriff nehme, frage ich mich wie ich wohl richtig Anfange.

Ist es üblich eine große While-Schleife über alles zu machen?

Was ist besser eine case oder eine Ereignisstruktur.
Soll am so viel wie möglich in eine Ereignistruktur packen?
Soll man versuchen mit Sequenz-strukturen zu arbeiten oder dich lieber linear?
.
.
.
mfg

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2006, 17:55 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2006 18:02 von Lucki.)
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Wie programiert man richtig?
<div align="left">
' schrieb:Ist es üblich eine große While-Schleife über alles zu machen?

Was ist besser eine case oder eine Ereignisstruktur.
Soll am so viel wie möglich in eine Ereignistruktur packen?
Also ich fang mal an mit ein paar Hinweisen.
Ein universelle Struktur, mit der sich gut leben läßt, ist diese:
Ganz außen eine große Sequenz mit drei (übereinanderliegenden) Rahmen.
Sequenz 0: Initialisierungen
Sequenz 1: Hauptprogramm
Sequenz 2: Beendigungen, wie Files schließen, DAQ rücksetzen usw.
Die Sequenz 1, Hauptprogramm, wird ausgefüllt durch die While-Hauptschleife, dort drin ist auch die Ereignignisbehandlung.
Für die Platzierung der Ereignisstruktur gibt es zwei Möglichkeiten:
Entweder: Die Ereignisstruktur füllt die gesamte While-Schleife aus, und der Haupteil des Programms findet im Ereignisrahmen "timeout" statt.
Oder: Die Ereignisstruktur ist so klein wie möglich, und der Hauptteil des Programms findet außerhalb der Ereignisstruktur in der While-Schleife statt.
(Der timeout darf natürlich nicht auf -1 gesetzt sein)
Der Unterschied ist bei zwei gleichzeitigen Ereignissen;
Im Falle a) werden erst beide Ereignsise behandelt, bis des Hauptprogramm wieder ausgeführt wird.
Im Falle b) wird zwischen jedem Ereignis, auch wenn es gleichzeitige Ereignisse sind, das Hauptprogramm ab gearbeitet.
Da a) vom Platzbedarf und auch so günstiger ist, bevorzuge ich a)


Vorsicht bei Verwendung von Lokalen Variablen und Ereignsiknoten im zeitkritischen Tel des Programms. Das Gleiche gilt für Sequenzstrukturen. Dagegen kann zwischen den drei Hauptrahmen in schamloser Weise von lokalen Variablen usw. Gebrauch gemacht werden, so daß man u.U ohne eine einzige Verbindungsleitung zwischen diese Rahmen auskommt.



</div>
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2006, 18:09
Beitrag #4

Gang Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 69
Registriert seit: Sep 2006

7
2005
kA

44932
Deutschland
Wie programiert man richtig?
Zitat:Vorsicht bei Verwendung von Lokalen Variablen und Ereignsiknoten im zeitkritischen Tel des Programms. Das Gleiche gilt für Sequenzstrukturen. Dagegen kann zwischen den drei Hauptrahmen in schamloser Weise von lokalen Variablen usw. Gebrauch gemacht werden, so daß man u.U ohne eine einzige Verbindungsleitung zwischen diese Rahmen auskommt.

Soll das jetzt heißen das sequenzstrukturen nicht so der Bringer sind?
oder sollte man sie nur nicht verwenden wenn man Eigenschaftsknoten verwendet?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2006, 18:40
Beitrag #5

A.Berndsen Offline
LVF-Team
LVF-Team

Beiträge: 2.437
Registriert seit: Feb 2005

8.2.1 - 2011
2004
DE

724xx
Deutschland
Wie programiert man richtig?
Hallo gang,

meine Vorredner haben alle recht.
Die Wahl der Ausführungsstruktur für Dein Programm würde ich von der Aufgabe abhängig machen.
Du hast jetzt schon ausführlich lesen können, welche Möglichkeiten es gibt. Die ganzen Nuancen dazwischen kann man nicht vollständig aufzählen.
Ich denke es ist erstmal wichtig zu wissen, ob Du ein Programm hast, das hauptsächlich ohne Anwenderinteraktion abläuft oder ob genau das Gegenteil der Fall ist. Daran würde ich die Programmstruktur
ausrichten.

Grüße
Andreas

Geht nicht, gibts nicht!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2006, 19:02
Beitrag #6

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Wie programiert man richtig?
Ich will auch was sagen.

1) Das Programm muss gut aufgeteilt sein, d.h. mehrere SubVIs mit nicht mehr als 800x600 Blockdiagramm.
2) Das kann man erreichen wenn deine VIs aus einer State Machine bestehen.
3) Eine State Machine (FSM genannt) ist eine While Schleife mit Case-Struktur drin.
4) Keine Nodes, Variablen und Sequenzen in VIs benutzen.
5) Für bessere Übersicht Tasks dynamisch starten und beenden (wenn du mehrere Tasks hast)
6) Tasks haben bei mir nur einen Eingang (Cluster), wo alle Referenzen auf Queues drin stehen.

Gruss, Eugen

P.S. und ganz nützliche Sache ist Type Definition, funktioniert super.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.11.2006, 19:09
Beitrag #7

Gang Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 69
Registriert seit: Sep 2006

7
2005
kA

44932
Deutschland
Wie programiert man richtig?
Zitat:4) Keine Nodes, Variablen und Sequenzen in VIs benutzen.




Hab schon oft gehört das Eigenschaftsknoten sehr viel Leistung verschlingen, des wegen nehme ich an, dass das auch bei einer Sequenz der Fall ist oder?

Aber warum keine Variablen...?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2006, 19:29
Beitrag #8

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Wie programiert man richtig?
' schrieb:Hab schon oft gehört das Eigenschaftsknoten sehr viel Leistung verschlingen, des wegen nehme ich an, dass das auch bei einer Sequenz der Fall ist oder?

Aber warum keine Variablen...?


Du hast ja gefragt wie man richtig programmiert.

Variable kommt aus textbasierten Programmiersprachen und ist fremd für LabVIEW. Die Controls, Indicators und Verbindungsdrähte ersetzen in LabVIEW lokale Variablen und Queues, Notifiers, Semaphoren und User Events ersetzen globale Variablen.
Die Zeitsequenzen nehmen nicht viel Speicher, sind aber nicht so übersichtlich und variabel wie eine State Machine.

Gruss, Eugen

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2006, 19:37
Beitrag #9

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Wie programiert man richtig?
Ja Sequenzen sind einfach irrsinnig unübersichtlich, wenn man sie zu viel verwendet (als Regel statt für wenige Probleme).

Ich könnte dir Beispiele von Programmen aus unserem Institut zeigen, da schachteln sich die Sequenzen und Schleifen ineinander bis 3-5 Tiefen.
Diese Programme zu verstehen versuchen ist kaum schaffbar.
Das versteht nur mehr der Erschaffer und der auch nur, wenn er dauernd am Programm arbeitet. 2 Monate später sieht auch der nicht mehr durch.

Deswegen empfiehlt sich auch was Eugen sagt. Möglichst viele SubVi's und kein Blockdiagramm, das mehr als einen Bildschirm füllt.

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.11.2006, 19:40 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2006 19:45 von Lucki.)
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Wie programiert man richtig?
<div align="left">
' schrieb:Soll das jetzt heißen das sequenzen...
oder sollte man sie nur nicht verwenden wenn man Eigenschaftsknoten verwendet?
Es gibt eine paar Vorsichtshinweise, aber der die Warnungen sind sehr milde formuliert. Und welche Anwendung ist schon so zeitkritisch, daß es auf jede µsec ankommt?
Lies selbst, was mein schlaues Buch dazu sagt und vergiß mein Geschwätz von gestern.
</div>


Angehängte Datei(en)
Sonstige .doc  Sequences.doc (Größe: 22 KB / Downloads: 560)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: