INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Kurzzeitige Unterbrechungen eines VI verhindern



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!

25.07.2013, 10:33
Beitrag #1

Hähnchen Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Jul 2013

2012 DS1
2013
DE



Kurzzeitige Unterbrechungen eines VI verhindern
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
Kurzzeitige Unterbrechungen eines VI verhindern - Hähnchen - 25.07.2013 10:33

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Windowszugriff verhindern seuk 1 2.744 28.03.2019 11:59
Letzter Beitrag: th13
  Verhindern von Befehlen mit falscher Bitlänge Praktikantin 1 2.389 25.09.2015 15:35
Letzter Beitrag: GerdW
  Energiesparmodus verhindern jan91 7 6.837 25.06.2014 13:43
Letzter Beitrag: jan91
  Springen des Cursors verhindern Lucki 6 4.854 15.08.2013 10:59
Letzter Beitrag: Y-P
  Automatischen Start der EXE verhindern HerTesla 8 5.506 06.03.2013 17:39
Letzter Beitrag: Lucki
  Ereignisstruktur auslösen verhindern Moeseph 7 6.364 18.02.2012 08:00
Letzter Beitrag: Y-P

Gehe zu: