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 

Datenerfassung unterbricht vorübergehend in unregelmäßigen Abständen



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!

01.07.2015, 11:03 (Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2015 11:58 von royal_k.)
Beitrag #1

royal_k Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2015

8.5
2014
DE



Datenerfassung unterbricht vorübergehend in unregelmäßigen Abständen
Hallo,

ich bin neu in diesem Forum und möchte mich erstmal kurz vorstellen: Mein Name ist Kai und ich bin Student des Maschinenbaus.
Im letzten Jahr habe ich als Belegarbeit eine Prüfstandssteuerung / -regelung für einen Bremsenprüfstand in LabVIEW 8.5 aufgebaut. Jetzt bin ich studentische Hilfskraft und habe in diesem Zusammenhang die Software noch etwas erweitert, um den Prüfstand universeller nutzen zu können.

Kurz zu der geschriebenen Software: Sie wurde als Echtzeitanwendung implementiert. Auf dem Bedienrechner wurde das Programm als .exe kompiliert, um die Bedienung auch LabVIEW - Unerfahrenen zu ermöglichen. Auf dem Echtzeitrechner wurde die Software ebenfalls kompiliert und im Autostart hinterlegt. Das Ganze läuft in dem größeren Rahmen eines Zustandsautomaten mit folgenden Zuständen:

Initialize - Startwerte einstellen, Kontakt zwischen den Rechnern herstellen
Idle - Parameter eingeben und übertragen, auf Start warten
Measure - Durchführung der eigentlichen Messung
Stop - Prüfstand in sicheren Zustand überführen, auf Benutzereingabe warten (neue Messung oder schließen)
Shutdown - beide Programme schließen.

Ich hatte bereits letztes Jahr festgestellt, dass im Zustand Idle manchmal keine Messwerte an den Bedienrechner übergeben werden, habe das aber damals nicht weiter verfolgt, weil das nur in diesem einen Zustand auftrat und ich davon ausging, dass das nicht weiter kritisch wäre.
Jetzt hat sich aber gezeigt, dass dem nicht so ist. Die Messwertübertragung wird auch während des Betriebs unterbrochen. Genauer gesagt funktioniert die gesamte Regelung, Messwerterfassung und Wertausgabe nicht mehr. Das ist äußerst kritisch und kann so nicht bleiben! Ich konnte den Fehler bereits genauer einschränken:

Er liegt im Echtzeit - Hauptprogramm RT-Main.vi. Dort habe ich 3 zeitgesteuerte Schleifen. Eine Schleife übernimmt die gesamte Datenerfassung, -ausgabe und die Regelung. In ihr laufen die einzelnen Messmodi.
Dann gibt es eine Verarbeitungsschleife für die Messdaten. Sie läuft mit einer höheren Frequenz als die Erzeugerschleife. Die Daten werden über einen FIFO übergeben. Wenn eine Einzelmessung des Messprogramms abgearbeitet wurde, werden die Daten über einen weiteren FIFO an eine dritte Schleife übergeben, die die Daten in die TDMS Datei schreibt. So kann ich die Datei kompakt halten.
Der Fehler liegt in der Erzeugerschleife. Das kann ich sehen, weil während eines solchen Aussetzers die CPU Auslastung massiv absinkt. Durch die manuelle Verteilung der Schleifen auf die beiden Prozessorkerne konnte ich sehen, dass nur die CPU Auslastung auf dem Kern absank, der ausschließlich diese Schleife abarbeitet (von ca. 35% auf 6-10 % auf diesem Core, der andere Core bleibt unverändert bei 67 - 69%). Dort finde ich aber kein Problem! Der Schleifenzähler läuft weiter, nur sonst scheint die Schleife nichts mehr zu machen. Die Netzwerkverbindung steht zuverlässig (Sondenwerte werden sauber übertragen). Edit: Das merkwürdige daran ist nur, dass das in unregelmäßigen Abständen passiert. Manchmal vergehen mehrere Minuten zwischen diesen Aussetzern, manchmal nur wenige Sekunden. Die Aussetzer sind unterschiedlich lang, ich schätze mal maximal 10 Sekunden aber das Programm macht immer irgendwann wieder weiter. Wenn es dann wieder weiter geht, ist interessant, dass die CPU Auslastung 2 - 3 Sekunden auf über 50% auf diesem Kern geht und danach wieder auf das Normalniveau absinkt. Ich komme einfach nicht weiter.
Sämtliche DAQ-Tasks sind im MAX definiert und das soll auch so bleiben, da je nach Messung zusätzliche Sensoren integriert werden müssen, für die individuelle Skalierungen nötig sind und dafür keine Programmcodeänderung vorgenommen werden soll.

Vielleicht hat ja einer von euch eine Idee, woran es liegen könnte.

Das Programm lade ich hoch. Ich habe hier zu Hause allerdings kein LabVIEW und komme ziemlich sicher in dieser Woche nicht nochmal an den Prüfstand. Deshalb hoffe ich, dass es kein Problem ist, wenn ich das gesamte Projekt als .zip hochlade.
Weiterhin bitte ich zu entschuldigen, dass es dem gesamten Programm an Übersichtlichkeit mangelt. Es war mein erstes LabVIEW - Projekt und ich konnte nicht einschätzen, wie sich das ausdehnt. Bisher fehlte mir auch die Zeit, alles übersichtlich zu verpacken.

Edit: Vielleicht ist das noch interessant: Alle Werte werden als einzelne Samples gelesen. Die Abtastfrequenz beträgt bedingt durch den Schleifendurchlauf 500 Hz. Es werden analog mittels der PXI-6229 16 Kanäle gemessen und 3 Kanäle geschrieben. Digital werden 4 Kanäle geschrieben, gelesen werden 7 Kanäle. Digital I/O passiert über die PXI-6528.


Angehängte Datei(en)
0.0 .zip  Prüfstandsteuerung.zip (Größe: 3,12 MB / Downloads: 200)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.07.2015, 12:20
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Datenerfassung unterbricht vorübergehend in unregelmäßigen Abständen
Alles, was nicht deterministisch ablaufen kann oder muss (also gerade File I/O oder Netzwerk-Kommunikation) hat nichts in einer Timed-Loop zu suchen! An deiner Stelle würde ich mir die beiden unteren Timed-Loops schenken und durch normale Schleifen ersetzen. Die Taktung hast du automatisch durch die FIFOs.

Dann zu den RT-FIFOs: Zwecks Einstellung "Polling" jagst du die CPU-Last unnötig in die Höhe. Probier mal lieber den Modus "Blocking".

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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2015, 13:52
Beitrag #3

royal_k Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2015

8.5
2014
DE



RE: Datenerfassung unterbricht vorübergehend in unregelmäßigen Abständen
Danke dir Jens für die Hinweise. Ich werde das mal so versuchen.
Was würdest du empfehlen? Blocking für lesen und schreiben oder nur für eines der beiden?

Was mich daran nur wundert, ist, dass die CPU Last ja sinkt, als ob er nichts mehr zu tun hätte. Aber selbst, wenn er keine Messwerte lesen würde, würden die Berechnungen und die Weitergabe ja funktionieren, weshalb die CPU Last nicht groß anders sein dürfte.

Viele Grüße
Kai
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.07.2015, 12:57
Beitrag #4

royal_k Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2015

8.5
2014
DE



RE: Datenerfassung unterbricht vorübergehend in unregelmäßigen Abständen
Leider hat es das noch nicht gebracht. Ich habe jetzt zwar eine deutlich geringer Auslastung der CPU aber das Problem ist nicht verschwunden.

In unregelmäßigen Abständen bleiben die Messwerte für unregelmäßig lange Zeiten aus. Die Schleife läuft dabei definitiv weiter durch aber es werden keine neuen Messwerte erfasst. Es scheint so, als würde der Messtask abstürzen bzw. einfach keine neuen Werte lesen / schreiben.
Ich habe jetzt DAQmx auf die Version 9.3 aktualisiert (mWn. die letzte mit LabVIEW 8.5 kompatible Version). Keine Änderung. Die zeitgesteuerte Schleife bringt keinen Fehler. Die Messwerterfassung und -ausgabe bringen keine Fehler. Es ist geradezu zum verrückt werden.

Hat jemand noch einen anderen Ansatz?

Viele Grüße
Kai
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.07.2015, 13:24 (Dieser Beitrag wurde zuletzt bearbeitet: 02.07.2015 13:24 von jg.)
Beitrag #5

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Datenerfassung unterbricht vorübergehend in unregelmäßigen Abständen
Rückfrage:
Woran erkennst du, dass die Datenerfassung (angeblich) aussetzt? Am RT oder am Host? Hast du schon mal debuggt, ob die Schleifen wirklich verspätet laufen (Stichwort Left Data Node, Auswahl Finished late?). Oder sieht es einfach nur so aus in deiner Host-Applikation, die irgendwann nicht mehr nachkommt bei der Netzwerkkommunikation per Netzwerkvariablen?

Ganz übel in deiner Host-Applikation: Dein permanentes Setzen von PropertyNodes! Jedes Setzen erzwingt ein Frontpanel-Update, das ist echt übel! Bitte ändern.

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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.07.2015, 15:13
Beitrag #6

royal_k Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2015

8.5
2014
DE



RE: Datenerfassung unterbricht vorübergehend in unregelmäßigen Abständen

Akzeptierte Lösung

Ich nehme alles zurück und behaupte das Gegenteil! Das Problem ist gelöst! Es war die Umwandlung von Double in Single. Meine FIFOs waren beide als Single - Arrays definiert. Nachdem ich das in Double - Arrays geändert habe und den Rest des Programms entsprechend angepasst habe, war der Fehler weg.

Dabei hatte ich teilweise explizite Konvertierungsfunktionen und die automatische Konvertierung im Programm. Scheinbar war es primär die automatische Konvertierung, die den Fehler auslöste. Aber auch die Konvertierungs-VIs scheinen in seltenen Fällen zu Problemen geführt zu haben.

Noch als Antwort auf deine Frage @Jens: Eine Sonde am Schleifenzähler brachte ein kontinuierliches Hochzählen. Eine Sonde an Finished late zeigte, dass die Schleife nicht verzögert lief. Eine Sonde an den Messdaten (direkt nach dem Ausgang des DAQ-read-VIs) zeigte aber, dass die gelesenen Daten sich während des Problems tatsächlich nicht mehr veränderten. Das mit den Property Nodes habe ich geändert. Vielen Dank für den Tipp und allgemein die Hilfe!

Viele Grüße
Kai
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.07.2015, 09:35
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Datenerfassung unterbricht vorübergehend in unregelmäßigen Abständen
Offtopic2
Auf Sonden am RT-System (gerade im interaktiven Modus und per Netzwerk) würde ich mich nicht verlassen.

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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Ausführung unterbricht bei Anwahl der Titelleiste stoa 12 9.088 28.04.2020 20:18
Letzter Beitrag: BNT
  Datenerfassung cDAQ + NI9203 keine synchrone Datenerfassung dieseldunst 5 6.539 24.06.2016 14:49
Letzter Beitrag: jg
  Datenerfassung in unterschiedlichen Abständen Titus85 7 5.419 16.07.2014 10:09
Letzter Beitrag: Titus85
  Unregelmäßigen Takt erzeugen LV-User00 5 4.573 25.10.2013 09:16
Letzter Beitrag: GerdW
  Beliebigen (unregelmäßigen) Analogsignal-Verlauf ausgeben dejay 9 7.414 10.12.2012 15:29
Letzter Beitrag: Lucki
  Dateidialog unterbricht Datenerfassung cfreitag 10 9.305 20.09.2007 17:24
Letzter Beitrag: Y-P

Gehe zu: