05.09.2011, 09:40
|
Der_Elch
LVF-Gelegenheitsschreiber
Beiträge: 93
Registriert seit: Jan 2010
2014
2009
DE
4xxx
Oesterreich
|
RE: Block Diagram übersichtlicher
(05.09.2011 09:26 )Tomtom79 schrieb: Mir wäre schon mal geholfen, wenn mir jemand zeigen könnte, wie ich z.B. eine dieser DO-Schleifen mit den Lok-Variablen in ein einziges SUB-VI kriege.
Wie schnell müssen die DO beschrieben werden? Jede Schleife hat keine wait Funktion und dadurch treibst du die CPU Auslastung künstlich in die Höhe.
Was mir jetzt schnell einfallen würde:
Eine While Schleife:
Die jeweils 8 DO in ein Array zusammenfassen --> dann wieder ein Array aus alle 3*8 erstellen und das in eine for-Schleife abarbeiten lassen.
Abbruch der While mit der lok. Var "Ein"
|
|
|
05.09.2011, 10:02
|
NWOmason
Simultator
Beiträge: 1.078
Registriert seit: Dec 2010
2012.SP1
2008
EN
93047
Deutschland
|
RE: Block Diagram übersichtlicher
Hallo Tomtom,
Dein Code liese sich bestimmt noch vereinfachen und auch in Punkto Performance (mindestens eine Schleife läuft mit voller CPU-Last) und RaceConditions (die sich bei dem hier excessiven Einsatz der Globalen Variablen nicht vermeiden lassen) überarbeiten. Auch an der Lesbarkeit gibt es noch Verbesserungsbedarf. Das ist soweit noch (Fleiß-)arbeit, da deine Steuerung anscheinend gut funktioniert.
Aber: Du sprichst in der Funktion des Programmes folgendes an:
(05.09.2011 09:26 )Tomtom79 schrieb: ...Zeitschleifen die bei jedem Prozess die Sicherheitszeit messen, falls der jeweilige Prozess nach einer bestimmten Zeit nicht abgelaufen ist...
und rufst ernshaft an unterschiedlichen Stellen das Stop-VI auf? Sorry, wenn das hart klingt. Aber weißt du, was da VI macht? Hast du dir schonmal die Kontexthilfe dazu durchgelesen???
Beste Grüße,
NWO
|
|
|
05.09.2011, 12:42
|
Tomtom79
LVF-Grünschnabel
Beiträge: 41
Registriert seit: Apr 2009
8.0
2005
de
80132
Deutschland
|
RE: Block Diagram übersichtlicher
Hallo Leute,
Ziel war es die Anlage möglichst schnell zum Laufen zu bringen, und zwar so, dass die Produktions-Prozesse optimal abgearbeitet werden und das habe ich erreicht. Für einen 2-wöchigen LabViewkurs (indem wir was ganz anderes gemacht haben) ist es doch gar nicht so schlecht. Ich gewinne zwar keinen Schönheitswettbewerb, aber die Logik der Anlage ist sehr gut, besser als manch kommerzielle, und das sag nicht nur ich.
Das mit den Scheifen ohne Wait usw. weiss ich auch. Hab beim Programmieren auch dazugelernt und das eine oder andere Nebensächliche vergessen. Der Hauptgrund warum ich mich nicht um die Erstellung von SUB-VIs gekümmert habe, ist der, dass ich geplant habe, (wenn ich dann Zeit finde) die ganzen Schleifen in SUB-VI's zu legen und nicht nur deren Inhalt. Wie man den Schleifen-Inhalt in SUB-VI's zerlegt weiss ich auch, nur wenn die Schleifen bleiben brauch ich ja immer noch einiges an Platz.
Einzelne Prozesse in Stacked-Sequences einzubauen ist doch auch nicht so schlecht. Dann habe ich wenigstens 100%ige Garantie dass die Prozesse im vorgegebener Reihefolge durchlaufen werden und bei einem Programmierfehler nicht plötzlich woanders fortgefahren wird.
Was bei "Stop" passiert ist mir wurst. Ich gebe ein 0.5Hz Watchdog auf die USB-Karte, die steuert einen NE555 der auf die Flanken reagiert und sofort die ganze Stromversorgung ausschaltet falls die Flanken ausbleiben. Zudem gibts mir per Handy einen Anruf. Das funktioniert sogar wenn der PC abstürzt und von dort nichts mehr läuft oder das Kabel ausgezogen wird. Manchmal ist es auch nicht so schlecht unkonventionelle Methoden zu verwenden.
|
|
|
05.09.2011, 13:57
(Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2011 14:00 von M Nussbaumer.)
|
M Nussbaumer
Zarathustra
Beiträge: 654
Registriert seit: Sep 2009
2009 SP1
2009
EN
6300
Schweiz
|
RE: Block Diagram übersichtlicher
Hallo Tom,
(05.09.2011 12:42 )Tomtom79 schrieb: Einzelne Prozesse in Stacked-Sequences einzubauen ist doch auch nicht so schlecht. Dann habe ich wenigstens 100%ige Garantie dass die Prozesse im vorgegebener Reihefolge durchlaufen werden und bei einem Programmierfehler nicht plötzlich woanders fortgefahren wird.
Stacked-Sequences mit Lokalen Variablen untergraben einen der Grundgedanken von LabVIEW, den Datenfluss. Mit diesem kannst du nämlich auch zu 100% festlegen, in welcher Reihenfolge die Prozesse ablaufen sollen und erhöhst sogar noch die Lesbarkeit.
(05.09.2011 12:42 )Tomtom79 schrieb: Was bei "Stop" passiert ist mir wurst. Ich gebe ein 0.5Hz Watchdog auf die USB-Karte, die steuert einen NE555 der auf die Flanken reagiert und sofort die ganze Stromversorgung ausschaltet falls die Flanken ausbleiben. Zudem gibts mir per Handy einen Anruf. Das funktioniert sogar wenn der PC abstürzt und von dort nichts mehr läuft oder das Kabel ausgezogen wird. Manchmal ist es auch nicht so schlecht unkonventionelle Methoden zu verwenden.
Dir ist es vielleicht Wurst, dem Datenzugriff welcher gerade schreibt jedoch nicht. Mit einem sauberen Datenfluss löst man das über einen Deinitialisierungs/Beenden - Case. Es kommt doch auch keinem Piloten in den Sinn eine Bruchlandung als Erfolg zu verbuchen, nur weil der Flieger wie gewünscht am Boden ist oder?
Allgemein würde ich mir Producer/Consumer, State-Machine und Events ansehen. Ist halt einfach sauberer/wartbarer, dein Nachfolger oder Zukunfts-Ich wird sich bedanken Auch könnte ein Boolean-Array als Anzeige-Element interessant sein, wenn du soviele Boolean-Werte pro Erfassung hast oder einen Cluster(Vorteil:Label für jedes Element) oder gleich ein Array of Cluster. Bei Arrays kann man den Dimensions-Index unsichtbar machen und den Clusterrahmen sogar ganz. Dadurch vermindert sich die Anzahl der Variablen auf dem Blockdiagramm dann doch merklich.
Gruss Marc
|
|
|
05.09.2011, 14:02
|
illuminus
LVF-Gelegenheitsschreiber
Beiträge: 67
Registriert seit: Jul 2005
LabVIEW Professional 2011, Embedded for ARM MCU, Embedded for ADI BF
1996
EN
55129
Deutschland
|
RE: Block Diagram übersichtlicher
2-wöchigen LabViewkurs ... LabVIEW Erfahrung seit 2005?
Aber wie auch immer, du hast gefragt wie und ob man das Blockdiagramm vereinfachen kann. Man kann aber noch einmal, da sind soviel Designfehler drin, dass es schwierig ist, die hier im einzelnen in Textform niederzuschreiben, abgesehen nennt sich das ganze grafisches Programmieren.
Jetzt kannst du entscheiden möchtest du was dazulernen, dann poste das VI oder möchtest du deine Programmierkünste weiter verteidigen, dann lass es liebe.
Ich empfehle dir das VI zu posten! keiner möchte dir was böses, alle hier wollen nur helfen.
Gruß
Das Schönste, was wir entdecken können, ist das Geheimnisvolle.
|
|
|
05.09.2011, 19:47
|
Tomtom79
LVF-Grünschnabel
Beiträge: 41
Registriert seit: Apr 2009
8.0
2005
de
80132
Deutschland
|
RE: Block Diagram übersichtlicher
Hallo Leute,
Ihr habt mir schon ein gutes Stück geholfen, v.a. wie ich mit den vielen Variablen besser zurechtkomme (arrays...). Das bringt jetzt nicht viel, wenn Ihr euch mit meinem VI beschäftigt. Auch ich könnte da noch einiges mit SubVIs zusammenfassen und Ihr wisst ja nicht was das wäre. Ich hab halt das Programm einfach mal ohne SUB-VI's geschrieben. Überlegt hab ich mir schon einiges, wenn auch nur von der Logik her und nicht vom labViewtechnischen Aspekt. Ziel ist es jetzt auch nicht das Programm zu ändern, sondern mehr für die Zukunft ein paar wesentliche Punkte mitzunehmen.
Ich hab 2005 mal einen 2 wöchigen Kurs an der Uni gemacht, darum steht "Erfahrung seit 2005". Oder was soll ich denn dann angeben?
@Elch: Wenn 1 Programm-"Durchgang" bereits 500ms dauert. Bringt es dann überhaupt noch was wenn ich die Schleifen mit z.B. 200ms Takte?
Viele Grüsse
Tom
|
|
|
06.09.2011, 07:44
|
Der_Elch
LVF-Gelegenheitsschreiber
Beiträge: 93
Registriert seit: Jan 2010
2014
2009
DE
4xxx
Oesterreich
|
RE: Block Diagram übersichtlicher
Es würden auch 50ms reichen, das Problem ist das LV Schleifen so oft wie möglich macht und dadurch sehr viel Rechenleistung braucht. Das gilt auch für for-Schleifen, nur dort weiß ich meist wielange es dauert/ wie oft die Schleife durchlaufen wird und will das sie so schnell wie möglich fertig ist.
Da ich annehme das "EIN" nur ein Button durch eine Benutzereingabe kommt, hätte ich das ganze mit einer Event-Struktur aufgezogen (Vorrausgesetzt du hast die passenden LV Version).
Noch ein Tipp:
Wolfgang Georgi - Einführung in LabVIEW ist ein sehr gutes Buch, ich habe mir damit und vielem Testen / Lesen die Grundkenntnisse für LV geholt.
Wie "M@rry" vor kurzem sagte: Nur vom selber fressen wird man dick.
|
|
|
06.09.2011, 11:29
|
|
|
| |