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!
ich habe hier eine ziemlich große VI, welches unter anderem 7 Netzgeräte steuert und abfragt. Dabei laufen Abfrage und Befehle in seperaten Loops.
Nun zum eigentlichen Problem. Ich habe eine feste Vorgabe, in welchem Tackt die Loops laufen sollen (10 Hz). Leider hängt die Iterationszeit davon ab, wie schnell die Hardware antwortet. Wenn diese mehrere Befehle verarbeiten muss, wird sie signifikant langsamer (95ms für 2 Befehlen - ist RS232).
1. Aktuell laufen alle Schleifen als While-Schleifen mit Timern (Warten [ms]), welche Vorteile/Nachteile hätten zeitgesteuerte Schleifen? Damit habe ich selber noch garnicht gearbeitet.
2. Ein absolut unnötiger Fehler ist, dass die Befehlsschleife teilweise Cases hat, welche 6 unterschiedliche Hardware-Sub-VIs in Reihe geschalten hat (hab ich nicht verbrochen). Nun wartet die Software natürlich immer schön auf das Ok jedes einzelnen Sub-VIs bevor es zum nächsten Springt (verbunden über Fehlerkette). Ich könnte es unelegant lösen und jedes einzelne Sub-Vi in einen Case schieben, damit die Loop ihre 100ms schafft. Alternativ könnte man doch statt einer Reihenschaltung auch eine Parallelschaltung der Fehlerkette nehmen. Es ist mir unverständlich warum dies nicht von Anfang an so umgesetzt wurde, immerhin wurde es von einem externen Experten geschrieben. Seh ich das Problem nicht? Oder kann ich ohne zögern zur Tat schreiten?
Ohne genau zu wissen, um welche VI es sich handelt, kann man nichts sagen. Aber normaler weise sollten die Hardware VI nicht parallel aufgerufen werden.
Hallo Stefan,
VI's in "Reihe" zu schalten ist dann sinnvoll, wenn die Ergebnisse der VI's abhängig von einander sind.
Ansonsten kann man die Fehler auch am Ende zusammen fassen.
Aber wie genau Deine VI's funktionieren kann man nur über Bilder und mehr Infos erkennen.
Wenn man Dir helfen soll, wären ein paar Bilder ok.
Zitat:Warum nicht? Natürlich werden Befehlsreihenfolgen beachtet. Aber wenn sie befehlstechnisch nichts miteinander zu tun haben, warum dann nicht parallel?
Parallel auf eine Serielle Schnittstelle losgehen geht schief.
Ob die Ansteuerung sinnvoll parallelisierbar, das hängt davon ab, wie viele RS-232 Schnittstellen du zur Verfügung hast. Wenn alles nur über 1 Schnittstelle läuft, dann nichts parallelisieren. Und innerhalb 1 Geräts darfst du die Kommunikation ebenfalls nicht parallelisieren! Für genauere Aussagen müsste man mehr wissen über dein Projekt.
Timed Loops bringen die wahrscheinlich keinen wesentlichen Vorteil. Eigentlich kommt das aus dem RealTime-Bereich. Ein nettes Feature könnte aber sein, dass du eine Timed Loop so konfigurieren kannst, dass - sollte einmal ein Durchlauf länger dauern -versucht wird, diesen Verlust im nächsten Durchlauf wieder aufzuholen. Oder anders: Auf lange Sicht bleibt der Originaltakt erhalten.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!