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 

Übersichtlichkeit des Blockdiagramms



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!

03.01.2012, 03:12
Beitrag #1

BioLauri Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Jan 2012

9.0.1
2011
DE


Deutschland
Übersichtlichkeit des Blockdiagramms
Hallo liebes Forum! Smile

Erst einmal: vielen Dank für die bisherige Hilfe (deswegen hab ich mich glatt angemeldet).

So, nun zu meinem Problem:
Ich suche nach einer Möglichkeit, das Blockdiagramm übersichtlich zu gliedern. Z.B. mit Rahmen o.Ä.
Leider habe ich keine Möglichkeit (außer evtl. die Rechtecke des Frontpanels zu missbrauchen) gefunden. Das hat aber leider den Nachteil, dass beim automatischen Aufräumen um den Bereich herum aufgeräumt wird.
Bisher hatte ich es mit einer flachen Sequenzstruktur gelöst, da ich nur für den NXT (Roboter von LEGO; Programmierbar mit dem LabVIEW NXT Module) programmiere und der sowieso keine parallelen Ausführungsstränge kann. Allerdings unterstützt der NXT keine flachen Sequenzstrukturen mit mehreren Rahmen (zumindest nicht, wenn man es auf den NXT laden will und nicht vom PC aus), wodurch diese Methode leider wegfällt.

Die flache Sequenzstruktur war eigtl optimal dafür, da ich sehr viele Werte durchschleifen muss und durch Anfügen eines neuen Rahmens automatisch alle Anschlüsse weitergeführt werden. Außerdem kann man jeden Rahmen einzeln beschriften (mittels Kommentaren) und so ist das ganze sehr übersichtlich, da die Kommentare nur innerhalb des Rahmens verschoben werden, so kann man aber immer noch jedem Rahmen einen Kommentar zuordnen.

Ich hoffe, mein Problem halbwegs verständlich beschrieben zu haben.
Falls es noch nachfragen gibt, helfe ich gerne - muss allerdings erst einmal ein wenig den PC verlassen.

Ich wünsche eine erholsame Nacht (oder was davon übrig bleibt) und nachträglich noch ein gesundes neues Jahr!

Viele Grüße,

BioLauri
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.01.2012, 08:12
Beitrag #2

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Übersichtlichkeit des Blockdiagramms
(03.01.2012 03:12 )BioLauri schrieb:  Hallo liebes Forum! Smile

Erst einmal: vielen Dank für die bisherige Hilfe (deswegen hab ich mich glatt angemeldet).

So, nun zu meinem Problem:
Ich suche nach einer Möglichkeit, das Blockdiagramm übersichtlich zu gliedern. Z.B. mit Rahmen o.Ä.
Leider habe ich keine Möglichkeit (außer evtl. die Rechtecke des Frontpanels zu missbrauchen) gefunden. Das hat aber leider den Nachteil, dass beim automatischen Aufräumen um den Bereich herum aufgeräumt wird.
Bisher hatte ich es mit einer flachen Sequenzstruktur gelöst, da ich nur für den NXT (Roboter von LEGO; Programmierbar mit dem LabVIEW NXT Module) programmiere und der sowieso keine parallelen Ausführungsstränge kann. Allerdings unterstützt der NXT keine flachen Sequenzstrukturen mit mehreren Rahmen (zumindest nicht, wenn man es auf den NXT laden will und nicht vom PC aus), wodurch diese Methode leider wegfällt.

Die flache Sequenzstruktur war eigtl optimal dafür, da ich sehr viele Werte durchschleifen muss und durch Anfügen eines neuen Rahmens automatisch alle Anschlüsse weitergeführt werden. Außerdem kann man jeden Rahmen einzeln beschriften (mittels Kommentaren) und so ist das ganze sehr übersichtlich, da die Kommentare nur innerhalb des Rahmens verschoben werden, so kann man aber immer noch jedem Rahmen einen Kommentar zuordnen.

Ich hoffe, mein Problem halbwegs verständlich beschrieben zu haben.
Falls es noch nachfragen gibt, helfe ich gerne - muss allerdings erst einmal ein wenig den PC verlassen.

Ich wünsche eine erholsame Nacht (oder was davon übrig bleibt) und nachträglich noch ein gesundes neues Jahr!

Herzlich Willkommen BioLauriSmile

Ich weiss nicht, welche Funktionen bei diesem Modul möglich sind. Grundsätzlich würde ich dir aber zu einer state machine raten.

Vorteil gegenüber deiner Lösung mit der flachen Sequenz ist, dass zusätzlich der Case bzw der Rahmen noch sinnvoll benennt werden kann. Auch ist die Erweiterbarkeit wesentlich erhöht, da du einfach nur den Ablauf der Enums ändern musst und nicht die ganze Sequenz umstellen musst.

Der Rest ist so wie du es dir wünscht, genug Platz um die einzelnen Funktionen zu beschreiben. Zudem kann ein gut gewählter state-name schon vieles selbst erklären.

Hoffe das hilft dir weiter!

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.01.2012, 08:15 (Dieser Beitrag wurde zuletzt bearbeitet: 03.01.2012 08:16 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Übersichtlichkeit des Blockdiagramms
Hallo Lauri,

Zitat:Ich suche nach einer Möglichkeit, das Blockdiagramm übersichtlich zu gliedern.
Die allererste Möglichkeit einer Gliederung stellen subVIs dar. Sollte eigentlich im unten verlinkten Tutorial erläutert sein...

P.S.:
@Marc: Man erkennt doch recht deutlich den Beginn der "üblichen" Arbeitszeit Smile

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.01.2012, 08:28
Beitrag #4

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Übersichtlichkeit des Blockdiagramms
(03.01.2012 08:15 )GerdW schrieb:  @Marc: Man erkennt doch recht deutlich den Beginn der "üblichen" Arbeitszeit Smile

Blush Voll ins SchwarzeWink

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.01.2012, 09:28
Beitrag #5

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: Übersichtlichkeit des Blockdiagramms
Unterstützt denn die Programmierung für den NXT SubVIs?

Ansonsten denke ich, dass der NXT schon parallele Tasks verarbeiten kann: Der laufende Roboter zeigt auf dem Display ein schlagendes Herz während parallel dazu die Füße bewegt werden.

Ansonsten hilft noch ein strukturierteres Vorgehen bei der Programmentwicklung und manuelles Blockdiagramm Aufräumen, so dass das automatische Aufräumen nicht angewendet werden muss.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.01.2012, 10:24 (Dieser Beitrag wurde zuletzt bearbeitet: 03.01.2012 10:30 von Lucki.)
Beitrag #6

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Übersichtlichkeit des Blockdiagramms
Für Labview-Anfänger, wenn sie hier im Forum ihr VI posten, sind drei Sachen typisch:
  1. Exzessive Verwendung von Sequenzstrukturen
  2. Riesenhafte BDs in vielfacher Bildschirmgröße, oft mit ganz wenig Code drin, aber den im wüsten Durcheinander.
  3. Flächenfressende Strickmuster mit immer dem gleichen Code

zu 1.
Man begreift das Datenflußprinzip und die parallele Verarbeitung nicht als Vorteil und Chance, sondern man versucht damit Labview in das Korsett einer normalen, am Programm-Textfluß orientierten Sprache zu zwingen.
zu 2.
Das liegt u.a, daran, daß man sich mit den Werkzeugen "Objekte anordnen", "Objekte ausrichten", "Verdrahtung bereinigen" noch nicht vertraut gemacht hat oder diese Werkzeuge überhaupt nicht kennt. Ich arbeite z.B ständig damit, nicht erst bei der finalen Verschönerung.
zu 3.
Das läßt sich mit Scheifenstrukturen, Cluster- oder Arraybidung oder speziellen Funktionen fast immer vermeiden. Es ist auch Anfängern zu wenig bekannt, daß die meisten Funktionen polymorph sind. Um mathematische Operationen an einem Array auszuführen, braucht man z.B. keine Schleifenstruktur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.01.2012, 17:53
Beitrag #7

BioLauri Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Jan 2012

9.0.1
2011
DE


Deutschland
RE: Übersichtlichkeit des Blockdiagramms
Vielen lieben Dank allen Antwortern für ihre Antworten.
Ich bin sehr erfreut überrascht, wie schnell das geht.

Den Artikel über die State Machine lese ich mir noch durch - hab aber gerade nur Zeit für eine kurze Antwort.

Sub-VIs setze ich schon sehr eifrig ein. Sind äußerst praktisch und vereinfachen den Code enorm.
Das NXT Modul unterstützt Sub-VIs vollkommen, sofern sich innerhalb auch nur NXT-kompatibler Code befindet.

Bzgl. der Parallelität: Der NXT kann Quasi-Parallelität. Er hat nur einen Prozessor und schaltet bei Parallelen Programmen zwischen den einzelnen Threads hin & her. Da das Hin & Herschalten allerdings mehr Zeit kostet, als wenn alles nacheinander ausgeführt wird, verwende ich eben keine Parallelität.
Wirkliche Parallelität funktioniert mit den Motoren, da an diese nur einmalig der Befehl gesendet werden muss, alles weitere führen die Motorcontroller durch. Dadurch kann man auch wirklich parallel eine Display-Anzeige und bewegende Füße verwenden.

Selber aufräumen und anordnen finde ich sehr nervig, da ich es wichtiger finde, dass das Programm funktioniert, als dass es schön aussieht. Ich dachte mir, dass es eine relativ einfache Lösung gäbe.

Bezogen auf den letzten Post:
Zu 1.: Das Problem ist, dass es beim NXT keinen Vorteil gibt, wenn er quasiparallel rechnet. Zudem ist es bei meinen Programmen nicht notwendig. Daher "zwinge" ich ihn dazu. Ist übrigens vom NXT Modul von vornherein vorgesehen, dass man sequenziell arbeitet, da alle (brauchbaren) NXT-VIs einen Sequence-Flow Ein- & Ausgang haben, durch den automatisch die Parallelität unterbunden wird.
Dieser hilft mir aber leider nicht bei der Übersichtlichkeit...

Zu 2.: Diese Funktionen habe ich mir tatsächlich noch nicht näher angeschaut. Ich werde es aber heute abend gleich einmal tun!

Zu 3.: Ja, ich habe sehr viele Datenleitung (16 Stück an der Zahl), aber es bringt mir nichts, wenn ich da welche zu einem Array zusammenfasse, weil der NXT dann für die Array-Operationen länger braucht und das kostet mich Zeit.

Es sind übrigens alles konstante Werte.


So: Vielen lieben Dank für die bisherige Hilfe. Ich hoffe, es gibt noch ein paar weitere Tips! Smile

Viele Grüße,

BioLauri
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.01.2012, 21:53 (Dieser Beitrag wurde zuletzt bearbeitet: 03.01.2012 22:03 von unicorn.)
Beitrag #8

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: Übersichtlichkeit des Blockdiagramms
(03.01.2012 17:53 )BioLauri schrieb:  ...
Selber aufräumen und anordnen finde ich sehr nervig, da ich es wichtiger finde, dass das Programm funktioniert, als dass es schön aussieht. Ich dachte mir, dass es eine relativ einfache Lösung gäbe.
..

Nun, um den Code später noch einmal nachzuvollziehen oder wenn jemand anderes ihn verstehen soll, ist Ordnung und eine gewisse Ästhetik notwendig. Das solltest nicht vernachlässigen.

Mir ist im Gegenteil schon aufgefallen, dass Code, der sich nicht ästhetisch anordnen lässt auch schlechter Code war. Also die Ästhetik des Blockdiagramms ein Maß für die Qualität des Codes ist.

(03.01.2012 17:53 )BioLauri schrieb:  ..
Es sind übrigens alles konstante Werte.
..

Dann braucht es aber auch keine flache Sequenz!
(03.01.2012 10:24 )Lucki schrieb:  Für Labview-Anfänger, wenn sie hier im Forum ihr VI posten, sind drei Sachen typisch:
  1. Exzessive Verwendung von Sequenzstrukturen
  2. Riesenhafte BDs in vielfacher Bildschirmgröße, oft mit ganz wenig Code drin, aber den im wüsten Durcheinander.
  3. Flächenfressende Strickmuster mit immer dem gleichen Code

zu 1.
Man begreift das Datenflußprinzip und die parallele Verarbeitung nicht als Vorteil und Chance, sondern man versucht damit Labview in das Korsett einer normalen, am Programm-Textfluß orientierten Sprache zu zwingen.
..

Oftmals sind die Sequenzen völlig überflüssig, weil die Werte über Drähte ohnehin weitergereicht werden oder werden könnten.

zu 2.
Oder durch das automatische Wachsen der Strukturen riesengroß werden. Das sollten Anfänger besser abschalten und sich lieber über das manuelle Platzmachen ärgern, bis sie merken, das Code nicht kopiert sondern in SubVIs gepackt wiederverwendet werden sollte.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.01.2012, 23:25 (Dieser Beitrag wurde zuletzt bearbeitet: 03.01.2012 23:29 von BioLauri.)
Beitrag #9

BioLauri Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Jan 2012

9.0.1
2011
DE


Deutschland
RE: Übersichtlichkeit des Blockdiagramms
(03.01.2012 21:53 )unicorn schrieb:  
(03.01.2012 17:53 )BioLauri schrieb:  ...
Selber aufräumen und anordnen finde ich sehr nervig, da ich es wichtiger finde, dass das Programm funktioniert, als dass es schön aussieht. Ich dachte mir, dass es eine relativ einfache Lösung gäbe.
..

Nun, um den Code später noch einmal nachzuvollziehen oder wenn jemand anderes ihn verstehen soll, ist Ordnung und eine gewisse Ästhetik notwendig. Das solltest nicht vernachlässigen.
Ja, natürlich. Ich finde übersichtlichen Code auch sehr wichtig. Ich meinte das nur als relative Angabe. Und zwar, dass mir der Aufwand für das manuelle Anordnen viel zu groß ist.
Ich habe bis jetzt immer mit der automatischen Bereinigungsfunktion gearbeite und fand die bis jetzt super.
Nur sie verschiebt leider meine Kommentare in vollkommen falsche Ecken und das nervt dann, wenn ich dann immer durch das komplette Diagramm durchgehen darf um zu schauen, wo welcher Kommentar hingehört.
Und ja, ich kommentiere mal 'ausnahmsweise' meine Programme Big Grin

(03.01.2012 21:53 )unicorn schrieb:  Dann braucht es aber auch keine flache Sequenz!
Wieso nicht? Was hat das beides miteinander zu tun?

(03.01.2012 21:53 )unicorn schrieb:  
(03.01.2012 10:24 )Lucki schrieb:  Für Labview-Anfänger, wenn sie hier im Forum ihr VI posten, sind drei Sachen typisch:
  1. Exzessive Verwendung von Sequenzstrukturen
  2. Riesenhafte BDs in vielfacher Bildschirmgröße, oft mit ganz wenig Code drin, aber den im wüsten Durcheinander.
  3. Flächenfressende Strickmuster mit immer dem gleichen Code

zu 1.
Man begreift das Datenflußprinzip und die parallele Verarbeitung nicht als Vorteil und Chance, sondern man versucht damit Labview in das Korsett einer normalen, am Programm-Textfluß orientierten Sprache zu zwingen.
..

Oftmals sind die Sequenzen völlig überflüssig, weil die Werte über Drähte ohnehin weitergereicht werden oder werden könnten.

zu 2.
Oder durch das automatische Wachsen der Strukturen riesengroß werden. Das sollten Anfänger besser abschalten und sich lieber über das manuelle Platzmachen ärgern, bis sie merken, das Code nicht kopiert sondern in SubVIs gepackt wiederverwendet werden sollte.
Tut mir Leid, wenn das im vorigen Post untergegangen ist, aber ich habe meinen Code in Sub-VIs gepackt. Es ist nur nicht möglich, noch mehr Code in Sub-VIs auszulagern, da sich immer kleine Dinge ändern.

Achja, mit den manuellen Aufräum-Funktionen komme ich i-wie nicht zurecht. Gibt es da vllt Hilfestellungen?


Danke für den Link über die State Machine. Das hilft mir aber nichts, da ich mit der State Machine einfach nur einen State nach dem anderen abarbeiten würde. Das bringt m.E. nichts, da das mehr Aufwand ist, als ohne.


Ich habe jetzt mal das/die VI(s) als *.llb angefügt. Version 9.0.1.
main.vi ist das Hauptprogramm. Die anderen drei sind Sub-VIs. Ausführen kann das hier wohl leider keiner, daran haperts aber auch nicht. Ich hoffe, man kann es trotz nicht vorhandenem NXT Modul öffnen. Wenn nicht, dann kann ich mal dranmachen, das Problem in ein Test-VI zu exzerpieren.
Ein paar Erklärungen:
  • Drehen.vi lässt den NXT um eine Gradzahl drehen
  • Distanz.vi lässt den NXT um cm vorwärts fahren (evtl mit Lenkung)
  • Liniefolgen_Graustufen.vi lässt den NXT einer Linie folgen. Das besondere hierbei ist, dass es mit einem Sensor funktioniert
  • Die Knicke in den Leitungen sind noch aus der Zeit, als noch die flache Sequenzstruktur hatte: An jedem Einschnitt begann ein neuer Rahmen. Die meisten Kommentare beziehen sich immer auf einen solchen (unsichtbaren) Rahmen
  • Die Anzeigeelemente sind nur zur Orientierung, damit ich weiß, welche Leitung was überträgt. [Offtopic: gibt es eine Möglichkeit, Datenleitungen zu beschriften, dass beim Hover ein Tooltip erscheint?]
  • Die am Ende langgezogenen Leitungen sind dort, weil ich da noch weiterprogrammieren will
  • Der Grund für die vielen Datenleitung ist der, dass ich ganz einfach die Ports für Sensoren & Motoren, sowie Geschwindigkeit, Raddurchmesser und Fahrtrichtung (für etwaiges Umdrehen der Motoren) für das gesamte Programm ändern kann. Ansonsten müsste ich an jedem VI die Konstanten ändern. Bräuchte außerdem mehr Ressourcen, da noch mehr Konstanten definiert werden müssten und der NXT ist kein Hochleistungsrechner Big Grin
    Außerdem wird das so schon vom NXT Modul mit den Motor- und Sensorreferenzen gehandhabt (dup-Ausgänge)
  • "Stapler" und "Ratte" haben etwas mit dem aktuellen Roboter, sowie dessen Aufgaben zu tun

Ich sehe grad, ich habe sehr viel geschrieben. Aber ich dachte mir, besser zu viel und ausführlich, als zu wenig. Wen was nicht interessiert, der kann es ja 'überlesen' ;D
Falls trotzdem noch etwas unklar sein sollte, einfach bitte melden, ich schau, wie ich helfen kann! Smile

Und jetzt einen schönen Abend noch und viel Spaß!


EDIT: Liste von nummeriert in ungeordnet verändert.


Angehängte Datei(en)
9.0 .llb  NXT - Uebersicht.llb (Größe: 143,22 KB / Downloads: 255)

Viele Grüße,

BioLauri
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.01.2012, 07:58
Beitrag #10

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

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
RE: Übersichtlichkeit des Blockdiagramms
Mir tun die Augen weh. Blink Hast Du schon mal an Arrays oder Cluster gedacht?
Außerdem ist Dein Blockdiagramm viel zu breit.
Dass man Blockdiagrammelemente wie Frontpanelelemente ausrichten kann geht, soweit ich weiß, erst seit LabVIEW 2011.
   
Die Drähte aufräumen geht so: Rechtsklick auf den entsprechenden Draht und dann "Clean up wire" auswählen.

Gruß Markus

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  systematisches ordnen des Blockdiagramms NafeZ 4 3.602 08.07.2009 18:55
Letzter Beitrag: Achim

Gehe zu: