Hallo,
ist es möglich, ein VI so auszuführen dass es nicht durch Interrupts, andere Prozesse o.ä. kurzzeitig unterbrochen wird?
Das komplette Problem:
Mit LabVIEW werden Messwerte von einem EtherCAT-Slave aufgezeichnet. Es wird eine cifX-Karte verwendet, die Buszykluszeit beträgt 10ms. Es sollen alle Messwerte erfasst werden.
Die Daten werden in einer Schleife (siehe Screenshot, VI "Get N readings") aus einer DLL (welches vier SubVIs tiefer sitzt, Rückgabetyp ist ein U8-Array) ausgelesen, und bei einer Änderung (ein Counter im Slave, welcher bei jedem Buszyklus inkrementiert) wird das zurückgegebene Array in die entsprechenden Messwerte zerlegt und diese in ein Array geschrieben. Nach der Schleife werden die Messwerte in einem Textfile gespeichert.
Jedoch passiert es alle 1-5 Minuten nachdem die Schleife gestartet wurde, dass innerhalb von 350ms Messwerte nicht erfasst werden, also der Schleifenzyklus in dieser Zeit über 10ms dauert. Im "normalen" Betrieb liegt die Schleifenzykluszeit weit unter einer Millisekunde.
Der Ausschnitt aus dem Log zeigt links die in der Schleife erkannten Änderungen und rechts den empfangenen Wert des Counters. Das SubVI besitzt bereits höchste Priorität.
Es wurden 60000 Messwerte aufgenommen, dabei wurden 8 Werte nicht aufgezeichnet.
Vermutlich werden irgendwelche Prozesse oder Interrupts bevorzugt bearbeitet, scrollen mit der Maus oder aus- und einschalten des Monitors erhöhen dabei den Schleifenzyklus auf 2 - 700ms. Dies ist auch der Grund, warum die Buszykluszeit 10ms beträgt, da hier noch am wenigsten Messwerte verloren gehen.
Labview läuft dabei auf einem PXI-System mit Win7 und einem PXIe-8135 Controller. Der i7 hat eine Auslastung von ~60% auf zwei logischen Prozessoren während die Schleife läuft. Vier weitere logische Prozessoren sind dabei im Idle. Deshalb würde mich interessieren, ob ich mein SubVI auf einem ungenutzen Prozessor mit maximaler Priorität ausführen kann, damit die Schleifenzykluszeit 10ms nicht überschreitet.
Mir ist bewusst, dass Windows kein Echtzeitbetriebssystem ist, aber vielleicht hat jemand einen Tipp wie man den Schleifenzyklus unter 10ms halten kann.
Grüße
Hähnchen