• Problem—Die I/O-Operation muss hardwaregetaktet sein. Alle Werte müssen gleichzeitig an der Sample-Takt-Flanke ausgegeben werden. In der Anwendung wird eine zeitgesteuerte Schleife verwendet.
  • Lösung—Erstellen Sie mit Hilfe der Funktion/des VIs "DAQmx - Timing-Quelle erstellen" eine Timing-Quelle zur Steuerung einer zeitgesteuerten Schleife, in der die I/O-Operationen und der Steueralgorithmus enthalten sind.

    Vorteile

    • Bei Verwendung einer Timing-Quelle können Sie ein I/O-Signal (z. B. das Sample-Taktsignal) festlegen, mit dessen Hilfe sich die Ausführung der Iterationen der zeitgesteuerten Schleife triggern lässt.
    • Timing-Quellen (z. B. ein Task bei "Steuerschleife von Task") ermöglichen eine genaue Überwachung verpasster Schleifeniterationen und ermöglichen die Ausführung anderer Threads, während an mehreren analogen Kanälen eine Multiplexabtastung durchgeführt wird.
    • Die zeitgesteuerte Schleife liefert eine Rückmeldung darüber, ob die Iterationen rechtzeitig beendet werden.
    • Bei mehreren zeitgesteuerten Schleifen sind auch Anwendungen mit verschiedenen Raten für verschiedene I/O-Geräte möglich.

    Nachteile

    • Geringfügiger Anstieg des Overheads im Vergleich zu einer regulären While-Schleife in LabVIEW.
    • Für Warmlaufiterationen ist zusätzlicher Programmcode erforderlich.
  • Beispiel-Anwendung zur hardwaregetakteten simultanen I/O mit Hilfe von zeitgesteuerten Schleifen (nur LabVIEW)

    Ein Anwendungsbeispiel hierfür ist ein analoger Regelkreis, bei dem Samples von einer bestimmten Anzahl analoger Eingangskanäle abgefragt, mit Hilfe eines Regelalgorithmus (z. B. PID) ausgewertet und die neuen Werte an die analogen Ausgangskanäle übergeben werden.

    Sie können eine solche Anwendung mit Hilfe der Timing-Quelle "Steuerschleife von Task" erstellen. Bei "Steuerschleife von Task" wird der Sample-Takt des Tasks zur Erfassung von Analogsignalen verwendet. Dadurch ist bei allen Tasks, die mit diesem Sample-Takt arbeiten, eine strikte Überprüfung von Iterationsverspätungen möglich.

    Bei Auswahl von "Steuerschleife von Task" können Sie auch eine Verzögerung zwischen der Auswertung des Sample-Takts und der Ausführung der zeitgesteuerten Schleife einfügen. Diese Verzögerung verhindert, dass die Funktion/das "DAQmx - Lesen" in der zeitgesteuerten Schleife die gesamte CPU-Zeit beansprucht, während die analogen Samples noch zu multiplexen und in Digitalsignale umzuwandeln sind.

    Diagramm zur Zeitsteuerung



    LabVIEW-Beispiel zur hardwaregetakteten simultanen I/O mit Hilfe von zeitgesteuerten Schleifen

    • Erstellen Sie für die zeitgesteuerte Schleife eine Timing-Quelle des Typs "Steuerschleife von Task". Dieses Signal dient als Taktquelle für die Schleifenausführung.
    • Die zeitgesteuerte Schleife liefert eine Rückmeldung an die Anwendung darüber, ob die vorhergehende Iteration rechtzeitig beendet wurde. Das geschieht mit Hilfe des Knotens "Verspätete Beendigung [i-1]".
    • Die Schleife sollte einige Warmlauf-Iterationen durchführen, damit keine Verzögerungen durch Übertragen von Daten in den Cache oder andere Arbeitsschritte entstehen, die während der ersten Iterationen notwendig sind.

    Beispiel-Blockdiagramm



    Hinweis
    • Das VI "DAQmx - Lesen" ist bei Verwendung der Timing-Quelle "Steuerschleife von Task" automatisch auf den Poll-Modus eingestellt. Durch den Poll-Modus wird der zusätzliche Aufwand vermieden, der mit Interrupts in der zeitgesteuerten Schleife verknüpft ist.
    • Sie können die Umwandlungsrate für die Erfassung analoger Signale mit Hilfe der DAQmx-Timing-Eigenschaften erhöhen. Dadurch wird die zum Umwandeln der Samples benötigte Zeit verringert. Zur Vermeidung von Störungen und Qualitätsverlust bei den Signalen muss jedoch die Einschwingzeit für das gesamte Datenerfassungssystem berücksichtigt werden.
    • Das VI "DAQmx - Auf nächsten Sample-Takt warten" ist für keinen dieser Tasks geeignet.
    • Prozesse mit niedrigerer Priorität (einschließlich zeitgesteuerter Schleifen mit niedrigeren Prioritäten) können ausgeführt werden, während die Schleife auf die nächste Ausführung wartet.
    • Zur Optimierung von Steueranwendungen mit mehreren Kanälen, in denen Threads mit geringerer Priorität möglicherweise zusätzliche Verarbeitungszeit benötigen, sollten Sie den Parameter "Wartezeit (us)" des VIs "DAQmx - Timing-Quelle erstellen" auf einen Wert ungleich Null setzen. So können andere Threads während der Umwandlung der analogen Samples andere Tasks ausführen (z. B. Kommunikation oder Speichern von Daten).
    • Der Höchstwert, der ohne Beeinträchtigung der Gesamtrate der Anwendung für "Pause (us)" ausgewählt werden kann, hängt von verschiedenen Faktoren ab, einschließlich der Anzahl der erfassten analogen Kanäle, Umwandlungsrate der Samples und Systemspezifikationen.

    Im folgenden Diagramm sehen Sie anhand der Konfiguration von mehreren Kanälen die Auswirkung eines Wertes für "Pause (us)", der höher als die maximal erreichbare I/O-Rate ist und die Menge an Arbeit, die von Threads mit geringerer Priorität bei diesen Raten ausgeführt werden kann.



    *Siehe Konfiguration zum Vergleich unten.

    Der Graph zeigt, dass sich die maximal erreichbare Rate beim Erfassen von 8 Kanälen mit Hilfe von spezifischer Hardware- und Softwarekonfiguration verringert, sobald der Wert für "Pause (us)" von 0 auf 5 µs erhöht wird. Dies ist bei Konfigurationen mit 12 und 16 Kanälen nicht der Fall. Hier hat die Erhöhung des Werts für "Pause (us)" auf 10 und 15 µs keinen sichtbaren Effekt auf die maximal erreichbaren I/O-Raten. Bei den Konfigurationen mit 12 und 16 Kanälen ermöglicht die zusätzliche Pause, dass andere Threads mehr Arbeit (siehe Definition unten) ausführen können, ohne dass sich die Gesamtrate der I/O in der Anwendung ändert.

    Konfiguration zum Vergleich

    • Hardware-Konfiguration:
      • NI PXI-8196 (RT-Controller)
      • NI PXI-6070 (MIO-Karte der E-Serie)
      • NI PXI-6723 (Analogausgabekarte)
    • Softwarekonfiguration:
      • LabVIEW Real-Time 8.0
      • NI-DAQmx 8.0
      • Ethernet-Treiber im Poll-Modus
    • Einzelheiten zum Vergleich:
      • Eine Arbeitseinheit gibt an, wie oft eine Schleife mit normaler Priorität eine vorzeichenlose 64-Bit-Zahl um eins erhöhen kann, während die zeitgesteuerte Schleife im Blockdiagramm oben parallel dazu ausgeführt wird.
      • Die Umwandlung bei der Erfassung analoger Signale ist nicht ausdrücklich festgelegt. Das bedeutet, dass der DAQmx-Treiber diese basierend auf der Kanalanzahl und der gewünschten Sample-Frequenz selbst berechnet.