Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Wait Until Next / Bis zum nächsten vielfachen warten / Metronom (/Thread-Wait-Until-Next-Bis-zum-naechsten-vielfachen-warten-Metronom) Seiten: 1 2 |
Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - Dommas - 22.07.2010 09:44 Hallo, kann es sein, dass das "Metronom" eine Mindestzeit am Eingang braucht? Also auf jeden Fall größer als 25ms oder sowas? Meine Schleife läuft zwar periodisch, wenn ich mit 28ms fahren will passt auch die Zeit, aber wenn ich auf 25 runter gehe, läuft die Schleife schneller! EDIT: mit 26ms läufts auch noch wie es soll! Ist das normal? Gibt es Abhilfe? Gruß Dommas Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - BerndDasBrot - 22.07.2010 09:59 Hallo Dommas Nein, das kann nicht sein. Poste doch mal das VI. Gruss, BDB Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - dimitri84 - 22.07.2010 10:01 Gibt'n Fehler von 1ms. Ansonsten funktioniert das Ding tadellos: [attachment=28076] [attachment=28078] Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - GerdW - 22.07.2010 10:50 Hallo Dommas, dein Metronom wird nur korrekt funktionieren, solange deine Schleife weniger als 25ms zur Abarbeitung braucht. Sonst kommt das Timing ganz schnell durcheinander... Schon mal mit der TimedWhileLoop gespielt? Die sagt dir auch, wie lange der letzte Schleifendurchlauf dauerte und ob das Timing eingehalten wurde! Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - Dommas - 22.07.2010 10:50 LV 2009 SP1 so, hier mal das VI. nicht wundern, das gibt es in erster Linie zum Verstehen und Testen. Wichtig ist nur Tab2. Die Zeit passt jetzt im Schnitt relativ gut, aber ich komme immernoch auf Zeiten zwischen 23 und 27ms. Wenn das besser ginge, wärs mir sehr Recht. Oder sonst irgendwelche Tips, wie ich auf eine sichere Schleifenzeit von 25 ms +-1ms komme. Das VI soll übrigens alle 25ms CAN-Nachrichten schicken. In diesem Fall an 8 IDs je 3 Nachrichten. Mit dem SubVI "Wait until next Fehler" fange ich nur den Fehler ab, den ich beim Start der Metronom-Funktion immer habe. Gruß Dommas Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - Dommas - 22.07.2010 10:53 @GerdW: Ja, die Schleife braucht weniger als die 25ms. Das ist sichergestellt. Die "TimedWhileLoop kenne ich bisher gar nicht. Aber werde ich jetzt mal testen. Danke Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - GerdW - 22.07.2010 11:16 Hallo Dommas, noch was zu deinem FOR-Loop-Gehuddel, um die CAN-Messages zu basteln... So geht's auch (einfacher), vor allem, wenn man die Shiftregister mit einer leeren (!) Array-Konstante initialisiert! Siehe Anhang, das Snippet zeigt leider keine Cluster-Konstanten an... Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - Achim - 22.07.2010 11:41 ' schrieb:Das VI soll übrigens alle 25ms CAN-Nachrichten schicken. Das macht das CAN-VI bzw. die CAN-HW doch selbständig?! Man gibt eine Zykluszeit an, konfiguriert das genau 1x mit dem VI und dann sendet die CAN-Karte das fortwährend...und zwar zeitlich sehr genau, weil's über HW geht...und die ist viel genauer als deine LV-Software je sein wird! Gruß Achim EDIT: Guck dir mal im ExampleFinder das VI CAN Transmit - periodic.vi an. Nachdem du bei diesem einmal das ncWriteObj.vi ausgeführt hast (im Schleifendurchlauf 0), brauchst du nichts weiter tun! Die HW sendet in der eingestellten Periodendauer im Endlosmodus. Erst wenn du die zu sendenden Daten ändern willst, führst du das VI in der While-Schleife nochmal aus. In dem Beispiel ist das VI nur ständig am laufen, um einen eventuellen Fehler abzufragen! Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - Dommas - 22.07.2010 12:14 @Achim Über CAN-Objekte kann ich doch nur EINE Nachricht an EINEN Empfänger schicken, oder? Wenn ich jetzt so wie in meinem Beispiel 3 Nachrichten an 8 Empfänger schicken will, brauche ich dann 24 Objekte? Oder kann ich das über eines realisieren, solange die Nachrichten und Empfänger sich nicht ändern? EDIT: Zu dem Beispiel: da steht in dem Initialisierungsteil vor der Case-Struct ein Vergleich, ob die ID >= hex 20000000 ist. Müsste das nicht >= hex 800 sein?! Wait Until Next / Bis zum nächsten vielfachen warten / Metronom - Achim - 22.07.2010 14:24 Hi, genau, dann erzeugst du für jede Botschaft ein Objekt! Vielleicht geht's auch anders, aber ich hab das so gelöst... Wieso 8 Empfänger? CAN ist Nachrichten-basiert, da können "beliebig viele" Teilnehmer auf dem Bus horchen...und nur die Empfänger, die auf eine bestimmte Botschaft warten nehmen diese an...alle anderen ignorieren sie einfach! Der Vergleich bezieht sich - glaube ich - nur auf den Anwendungsfall "Extended Identifiers" Gruß Achim |