LabVIEWForum.de
Zeitdifferenz bestimmen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Zeitdifferenz bestimmen (/Thread-Zeitdifferenz-bestimmen)

Seiten: 1 2


RE: Zeitdifferenz bestimmen - vk187 - 25.11.2015 12:42

HalloLeute, hab auch ein ähnliches Problem.
Hab mal mit Luckis VI bissal rumgespielt, funktioniert irgendwie bei mir nicht. Wahrscheinlich verbinde ich es nur falsch...

Ich will die Zeit messen die vergeht, bis ein Impuls ausgegeben wird. Diese Zeit benötige ich für die Umrechnung und m³/h.
1 Impuls = 1m³

Bsp.: 1 Impuls = 21s entspricht 1m³; in 60 Sekunden wären es 2,857m³; in der Stunde also 171,43m³/h

Also in LabView multipliziere ich die Impulse mal 3600 und dividiert soll dann durch die verstrichene Zeit.
Die Zeit soll erst dann beginnen, wenn ich den Start-Button drücke und stoppen wenn ich den Stop-Button drücke.

Danke für eure Hilfe

Gruß
Valon


RE: Zeitdifferenz bestimmen - GerdW - 25.11.2015 12:50

Hallo Valon,

RACE-CONDITION-ALARM!

Bitte alle lokalen Variablen durch Drähte ersetzen!

Weitere Fehler:
- TimedWhileLoops sind Overkill, wenn VISA-Kommunikation durchgeführt wird.
- WhileLoop innerhalb TWL ist schlichtweg Blödsinn - vor allem, so wie du es ausgeführt hast!
- Wozu zwei TWLs? Warum die zweite, wenn dort nur auf lokale Variablen zurückgegriffen wird?
- Shiftregister für "Tabelle" nutzen!
- Unbenutzte Terminals liegen im BD rum…
- Charts haben auch eine Zahlenanzeige, da braucht man keinen zweiten Indicator benutzen…
- Wieso muss man Properties von FP-Elementen in JEDER Iteration einer Schleife setzen? Warum Zahlenkonstanten statt korrekter Enums?

Einige dieser Probleme hatten wir doch schon vor zwei Wochen besprochen! Immer noch nichts davon umgesetzt…


RE: Zeitdifferenz bestimmen - vk187 - 25.11.2015 14:16

Hallo GerdW
danke für die schnelle Antwort.

Bitte alle lokalen Variablen durch Drähte ersetzen!
Was genau meinst du mit "durch Drähte ersetzen"?

Weitere Fehler:
- TimedWhileLoops sind Overkill, wenn VISA-Kommunikation durchgeführt wird.
also am besten durch eine normale While Schleife ersetzen oder?

- WhileLoop innerhalb TWL ist schlichtweg Blödsinn - vor allem, so wie du es ausgeführt hast!
Hab ich gelöscht.

- Wozu zwei TWLs? Warum die zweite, wenn dort nur auf lokale Variablen zurückgegriffen wird?
habe die zweite durch eine normale While Schleife ersetzt.

- Shiftregister für "Tabelle" nutzen!
hab ich jetzt gemacht. denke ich...

- Unbenutzte Terminals liegen im BD rum…
?

- Charts haben auch eine Zahlenanzeige, da braucht man keinen zweiten Indicator benutzen...
eine Anzeige brauch ich nicht unbedingt. war für mich als veranschaulichung gedacht ob da überhaupt eine Zeit angezeigt wird...

- Wieso muss man Properties von FP-Elementen in JEDER Iteration einer Schleife setzen? Warum Zahlenkonstanten statt korrekter Enums?
weil ich das einfach finde, wenn man sich nicht so gut auskennt...

Gruß
Valon


RE: Zeitdifferenz bestimmen - GerdW - 25.11.2015 15:18

Hallo Valon,

Zitat:Was genau meinst du mit "durch Drähte ersetzen"?
THINK DATAFLOW! In LabVIEW ist der Draht die Variable!

"Durch Drähte ersetzen" bedeutet: lokale Variablen löschen und stattdessen Drähte verwenden!

Zitat:also am besten durch eine normale While Schleife ersetzen oder?
Wenn du nicht-deterministische Aufgaben in einer Schleife ausführen willst, ist eine deterministische TWL einfach ungeeignet: ja, eine normale While-Loop, notfalls mit Wartezeit.
(Je nachdem wie schnell dein Messgerät arbeitet, brauchst du nicht einmal eine Wartezeit: dann bremst einfach die Antwortzeit des Messgerätes die Schleife aus…)

Zitat:habe die zweite durch eine normale While Schleife ersetzt.
Noch schöner wäre entweder eine saubere Producer-Consumer-Struktur oder die Integration des Schleifeninhalts in die obere Schleife…

Zitat:Unbenutzte Terminals liegen im BD rum… ?
Terminal = Anschluss eines Controls/Indicators im Blockdiagramm. (Grundwissen LabVIEW, Einsteigerkurs!)
Du nutzt massig lokale Variablen, aber der eigentliche Anschluss der Controls/Indicators liegt ungenutzt im BD herum… Wall

Zitat:weil ich das einfach finde, wenn man sich nicht so gut auskennt...
Das hat nichts mit "LabVEIW kennen" zu tun, sondern mit einfacher Programmierlogik/-abfolge: du musst die Eigenschaften nur einmalig setzen, wenn du in den State in deiner Statemachine eintrittst. Aber trotzdem packst du die Properties in die Schleife hinein, um sie sekündlich neu zu setzen…