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 

DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format



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!

26.11.2015, 09:49 (Dieser Beitrag wurde zuletzt bearbeitet: 27.11.2015 13:20 von m.werle.)
Beitrag #17

m.werle Offline
LVF-Grünschnabel
*


Beiträge: 40
Registriert seit: Sep 2015

2010
2015
EN


Deutschland
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format
(24.11.2015 20:24 )IchSelbst schrieb:  
(24.11.2015 16:37 )m.werle schrieb:  Was für ein zusätzlicher Case? Diese grundsätzlichen Funktionen "Auslesen" und "Reinschreiben" kann ich ja nicht umgehen.
Anstatt Daten aus der FGV zu lesen, im Cluster IDC_AVG zu ändern und den geänderten Cluster wieder zurückzuschreiben, machst du folgendes: Die FGV bekommt einen neuen Enumerator-Wert "Set_IDCAVG" und einen Variant-Eingang, an dem der double-Wert IDC_AVG angeschlossen wird. Im FGV bekommt die Case-Struktur einen neuen Case "Set_IDCAVG". In diesem Case wird der Variantwert in einen Double gecastet und im Datensatz, der im Schieberegister liegt, gespeichert. Selbstverständlich kann man anstelle nur eines double-Wertes auch einen Cluster machen aus den drei AVG-Werten.
Ok, jetzt hab ich die Umsetzung ganz kapiert.


Zitat:
Zitat:Bei dem Bild "GanzBöseRaceCondition" ist es ja beispielsweise auch egal, ob zwischen diesen Aufrufen irgendein anderes VI auf das FGV zugegriffen hat.
Wenn zwischen diesen beiden Zugriffen auf die FGV jemand anders genau das selbe macht (Auslesen, Ändern, Reinschreiben irgendwelcher Daten aus dem selben Datensatz), dann ist die Arbeit des anderen umsonst: Dessen Daten werden vom ersten Prozess beim Zurückschreiben überschrieben.

Bei dem Bild "GanzBöseRaceCondition" wird nur die Clusterstruktur ausgelesen, also nur die Struktur in welcher die Daten im FGV gespeichert werden! Diese Struktur bleibt während der gesamten Programmlaufzeit konstant! Die Werte, die in der Struktur gespeichert sind, sind vollkommen egal. Ob ich meine einzulesenden Werte außerhalb des FGV in ein Cluster bundle und es ins FGV reinschreibe oder als Variant einlese und erst in der FGV per Caseauswahl in den entsprechenden Datentyp umwandle und ins richtige Schieberegister packe, ist doch im Prinzip egal.

Laufzeitfehler treten nur auf, wenn ich Werte(! nicht konstante Strukturen) aus dem FGV auslese, diese im Programm ändere und während dieses Prozesses, bevor ich die veränderten Werte wieder ins FGV geschrieben habe, ein anderes Programm die selben Werte (allerdings noch unverändert) aus dem FGV ausliest, verändert um sie anschließend ebenfalls wieder ins FGV schreiben möchte.


Edit: Die Werte werden doch entnommen, nicht nur die Struktur.

Der Rest dieses Beitrags ist zwar nicht direkt falsch, aber unwichtig...


Programm A liest Wert X aus FGV, inkrementiert ihn.
Programm B liest Wert X aus FGV, dekrementiert ihn.
Programm A speichert inkrementierten X-Wert ins FGV zurück.
Programm B speichert dekrementierten X-Wert ins FGV zurück. -> Laufzeitfehler.

Das Inkrementieren von Programm A wurde einfach übergangen und war nutzlos. X ist am Ende eins kleiner wie am Anfang. Wenn beide Programme hintereinander gearbeitet hätten, wäre X gleich geblieben.

Keine der Variablen, welche ich im FGV speichere, nutze ich auf diese Art und Weise. Ich habe lediglich Grenzwerte und Parameter gespeichert. Die werden vom User eingestellt und später während der Laufzeit ausgelesen. (Teilweise auch nur einmalig, deshalb müsste ich das Sample-VI auch schließen und neustarten, um eine Änderung gewisser Parameter auch wirksam werden zu lassen. Inline-Umsetzung könnte da komplizierter sein und ist auch gar nicht nötig.)

Ein paar andere Variablen, wie das Steuersignal zum Beispiel oder ein paar Messwerte, werden zwar auch gespeichert. Hier kann es aber meiner Meinung nach auch nicht zu Laufzeitfehlern kommen. Wenn ausgelesen wird, dann für andere Funktionen. Wenn reingeschrieben wird, dann unabhängig davon, was vorher drin stand.

Wenn deine vorgeschlagene Änderung die Performance verbessert, würde ich sie trotzdem gern umsetzen. Sonst spar ich mir die Arbeit.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
RE: DAQ-Anzeige in seperatem VI und Speicherung in TDMS Format - m.werle - 26.11.2015 09:49

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Signal-Speicherung mit definierter Messdauer gifo 27 13.745 25.11.2015 14:03
Letzter Beitrag: gifo
  Echtzeit graphische Darstellung der Daten und Speicherung auf Kommando nusser 44 24.964 25.02.2014 11:31
Letzter Beitrag: nusser
  Simultane Datenerfassung +Speicherung mit Trigger NI PXI 5102 Sg. Neuling 2 3.978 19.04.2013 14:13
Letzter Beitrag: Sg. Neuling
  Speicherung eines Triggersignales mit TDMS-Dateimonitor pwgt90 0 2.929 29.03.2012 08:56
Letzter Beitrag: pwgt90
  Messwerterfassung und Speicherung bronko 13 10.782 24.03.2011 12:38
Letzter Beitrag: GerdW
  Genaue Zeiterfassung und -speicherung zählergestützter Messungen homunculus87 2 8.353 14.02.2011 22:26
Letzter Beitrag: homunculus87

Gehe zu: