Block Diagram übersichtlicher - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Block Diagram übersichtlicher (/Thread-Block-Diagram-uebersichtlicher) Seiten: 1 2 |
RE: Block Diagram übersichtlicher - Der_Elch - 05.09.2011 09:40 (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" RE: Block Diagram übersichtlicher - NWOmason - 05.09.2011 10:02 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 RE: Block Diagram übersichtlicher - Tomtom79 - 05.09.2011 12:42 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. RE: Block Diagram übersichtlicher - M Nussbaumer - 05.09.2011 13:57 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 RE: Block Diagram übersichtlicher - illuminus - 05.09.2011 14:02 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ß RE: Block Diagram übersichtlicher - Tomtom79 - 05.09.2011 19:47 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 RE: Block Diagram übersichtlicher - Der_Elch - 06.09.2011 07:44 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. RE: Block Diagram übersichtlicher - NWOmason - 06.09.2011 11:29 (05.09.2011 09:26 )Tomtom79 schrieb: Hallo Leute, Theoretisch können die Schleifen (die auf der linken Seite hauptsächlich) auch komplett in einem Sub-VI laufen, da du über Globale Variablen kommunizierts und diese natürlich auch in einem SubVI laufen. (05.09.2011 19:47 )Tomtom79 schrieb: @Elch: Wenn 1 Programm-"Durchgang" bereits 500ms dauert. Bringt es dann überhaupt noch was wenn ich die Schleifen mit z.B. 200ms Takte? Ja, auch schon eine Einstellung zwischen 10 und 50 würde dazu beitragen, dass die CPU Zeit hat, sich um die anderen Schleifen zu kümmern. So ganz verstehe ich den Durchgang mit 500ms nicht. Du hast doch Schleifen mit 1000ms Waittime drin?!? (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. Dann ist aber hoffentlich auch kein Bug in der Software |