13.11.2006, 16:04
Beitrag #1
|
a-sl
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Nov 2006
8.2
2005
kA
71034
Deutschland
|
Problem bei Zeit ablaufen lassen
Hallo, folgender Sachverhalt:
Wenn ich einen Start-Button drücke, soll eine Zeit t ablaufen. Ist die Zeit t abgelaufen, so soll das z.B. mit einer LED angezeigt werden und von vorne begonnen werden.
Beispiel: Zeit t= 10s
Drücke ich jetzt auf den Start-Button, so soll in 10s eine LED kurz aufleuchten, weitere 10s später nochmal LED aufleuchten, usw.
Dafür habe ich verschiedene Varianten ausprobiert, das funktioniert ohne Probleme (funktioniert mit Get-time und shiftregistern, aber auch mit express vi).
Mein Problem ist:
Wenn die Zeit t=10s ist, aber nach 5s der Zeitablauf gestoppt wird, so sollen beim nächsten Start wieder 10s vergehen, bis die LED aufleuchtet. Bei mir leuchtet die LED sofort nachdem ich den Startbutton wieder betätige, und dann läuft die Zeit 10s.
Hat jemand nen Vorschlag??
Danke
|
|
|
13.11.2006, 16:43
Beitrag #2
|
A.Berndsen
LVF-Team
Beiträge: 2.437
Registriert seit: Feb 2005
8.2.1 - 2011
2004
DE
724xx
Deutschland
|
Problem bei Zeit ablaufen lassen
Poste doch mal Dein VI!
Das erleichtert die Sache ungemein!
Gruß
Andreas
|
|
|
14.11.2006, 08:22
Beitrag #3
|
a-sl
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Nov 2006
8.2
2005
kA
71034
Deutschland
|
Problem bei Zeit ablaufen lassen
Hallo, habe mal ein VI und ein Jpeg gepostet.
führt man das VI aus und setzt den Control Konstanter-Button auf true, so sollte erst die zeit t vergehen, bis die spannung inkrementiert wird und die LED kurz aufleuchtet. Das tut es aber nicht. Sobald der Control Button gedrückt wird, wird sofort inkrementiert und dann die Zeit t gewartet. Dieses erste Inkrement ist unerwünscht.
Danke im Vorraus.
André
zeitverz_gerung.vi (Größe: 15,33 KB / Downloads: 233)
|
|
|
14.11.2006, 13:18
Beitrag #4
|
|
|
14.11.2006, 14:56
Beitrag #5
|
|
|
14.11.2006, 15:28
Beitrag #6
|
a-sl
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Nov 2006
8.2
2005
kA
71034
Deutschland
|
Problem bei Zeit ablaufen lassen
' schrieb:Ich verwende dieses "Feature" nicht, lieber las ich die Linien überdeckt laufen. Also mach da mal in die False-Zweige ein Datum rein.
Du meinst statt die linien durchlaufen zu lassen soll ich sie mit einem get date/time vi verbinden?
habe folgendes ausprobiert:
linien im false-case verbunden und getrennt (use default if unwired).
--> macht keinen unterschied
das problem liegt darin, dass 2 zeiten miteinander verglichen werden und dann geprüft wird, ob das gewünschte "delta t" schon erreicht ist. wird der control-button gedrückt wird das "delta t" ist dann tastsächlich überschritten, so gibts sofort ein true am ausgang. aber das darf nicht sein.
ich also irgendwie muss ein reset stattfinden, wenn der control-button auf false gesetzt wird und das "delta t"noch nicht abgelaufen ist.
habe bereits das ganze forum durchsucht und auch einige counter-vi´s aus anderen beiträgen runtergeladen. modifiziere an den vi´s schon den ganzen tag, bislang leider ohne passendes Ergebnis.
Hat sonst jemand ne lösung?
Vielen dank für deine mühe, und danke, dass du mir helfen möchtest.
André
|
|
|
14.11.2006, 15:44
Beitrag #7
|
|
|
14.11.2006, 15:54
Beitrag #8
|
sgersing
LVF-Grünschnabel
Beiträge: 27
Registriert seit: Feb 2005
6.0 - 8.2
2000
kA
Deutschland
|
Problem bei Zeit ablaufen lassen
Mach dir doch einfach ein hilfs Schieberegister (BOOL) welches in im False Case auf einen Wert
z.B. False gesetzt wird. Läuft er beim erstem mal in den True Case so wird die Systemzeit erneit gelesen und ins Schieberegister geschrieben und die Hilfvariable auf True gesetzt beim nächsten durchlauf wird die Zeit aus
dem Schieberegister verwendet.
Gruss Sascha
|
|
|
14.11.2006, 15:54
(Dieser Beitrag wurde zuletzt bearbeitet: 14.11.2006 15:57 von IchSelbst.)
Beitrag #9
|
IchSelbst
LVF-Guru
Beiträge: 3.692
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Problem bei Zeit ablaufen lassen
' schrieb:ich habe deinen Vorschlag ausprobiert und es funktioniert !
Sach' blos?
Zitat:Kann mir ejmand erklären warum das so ist, verstanden habe ich das nämlich noch nicht ganz.
Wenn du "Standard, wenn nicht verbunden" nimmst, wird beim Abarbeiten des (false-)Case-Zweiges der Datumswert NULL quasi in das Schieberegister eingeschrieben. Das aber ergibt in deinem Algorithmus verglichen mir der aktuellen Zeit (die u.U. im MIO bereich liegt) einen so großer Unterschied => sofortiges Increment.
Wenn du den Ausgang des Case-Zweiges mit dem Eingang verbindest (also eine Linie von links nach rechts), dann befindet sich die Uhrzeit von außerhalb der While-Schleife im Schieberegister - und zwar ewig bzw. solange, bis du den Button drückst. Wartest du jetzt also mit dem Drücken 30 Sekunden, dann ist der Vergleicher mit der aktuellen Uhrzeit - richtig: 30 Sekunden. => Incrementieren.
Nur wenn du im Schieberegister die Uhrzeit ständig aktuell hälst - also in allen false-Zweigen ein Datum-VI rein - dann erst geht mit Start durch den Button alles richtig.
Im übrigen: Auch die drei Variablen "Spannung [V]" kannst du durch ein Schieberegister ersetzen. Außerhalb der Cases geht dann der Wire zusätzlich auf das Anzeigeelement "Spannung [v]".
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
15.11.2006, 07:59
|
a-sl
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Nov 2006
8.2
2005
kA
71034
Deutschland
|
Problem bei Zeit ablaufen lassen
Hallo IchSelbst,
danke für die Info, jetzt hab ichs auch verstanden.
Vielen Dank für Deine Hilfe
André
|
|
|
| |